• Ceph文件系统


    目录

    一、环境准备

    二、什么是文件系统

    三、ceph块存储与文件系统区别

    四、创建ceph文件系统

    1、启动MDS服务

    2、创建存储池

    3、创建Ceph文件系统

    4、客户端挂载


    一、环境准备

    Ceph集群搭建参照:Ceph集群部署_桂安俊@kylinOS的博客-CSDN博客

    以下Ceph存储实验环境均基于上述Ceph集群环境搭建。

    二、什么是文件系统

    一个文件系统是由inode和block两部分in

    • inode存储文件的描述信息(metadata元数据)
    • block存储真正的数据

     根据这个原理,所以在做ceph文件系统的时候,需要划分2个存储池,一个用来存储inode,另一个用来存储block。

    三、ceph块存储与文件系统区别

    前面已经介绍了ceph块存储,那么ceph块存储和ceph文件系统有什么区别呢,分别适合在什么场合使用呢?

    答:Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,目前主要用在OpenStack上作为虚拟磁盘。而Ceph的文件系统接口读写性能较块设备接口差,但具有优异的共享性

    四、创建ceph文件系统

    1、启动MDS服务

    ceph文件系统是通过ceph-mds服务管理的。

    在node1主机通过ceph-deploy脚本启动MDS服务,可以启动任何一个节点的mds服务,这里我们启动node3的mds服务:

    1. # 在node1远程启动node3的mds服务
    2. cd /root/ceph-cluster #该目录,是最早部署ceph集群时,创建的目录,具体跟看前文:ceph集群部署
    3. #远程node3,拷贝配置文件,启动mds服务,执行过程见下图
    4. ceph-deploy mds create node3

     到node3检查下mds服务启动情况:

    systemctl status ceph-mds@node3   #服务名称后跟@+节点名

    2、创建存储池

    在集群中的任何一台主机都可以操作(任何node节点都可以操作)

    1. # 创建存储池,对应64个PG(先创建64个以满足后续osd扩容需求),cephfs_data为自定义存储池名称
    2. ceph osd pool create cephfs_data 64
    3. #创建存储池,对应64个PG(先创建64个以满足后续osd扩容需求),cephfs_metadata为自定义存储池名称
    4. ceph osd pool create cephfs_metadata 64

    如上操作,其中:

    (1)cephfs_data存储池是用来存放block数据,cephfs_metadata是用来存储inode数据;

    (2)关于PG的说明:

    PG是逻辑概念,对应如下图中间一层的2个PG(Placement Group),第1排obj为需要读写的数据,第3排是数据真正存放的位置是OSD对应的盘上,PG对应OSD,一个PG可以对应一个或多个OSD,数据是先写到PG,再写到OSD,数据读取也是先读PG,可以1个PG对应所有OSD,也可以使用2个或多个对应所有OSD,考虑到效率,同一个PG下面不要有太多的OSD,这里先创建64个PG是考虑后面OSD会扩容增加,满足后续使用需求。

    查看当前存储池:

    ceph osd lspools

     如上,前面是存储池编号,后面是存储池名称。

    3、创建Ceph文件系统

    创建文件系统即将上面创建的inode和block存储池合并到一起,可以理解成普通块设备的格式化。

    在任何一个node节点执行:

    1. #new为新建,myfs1文自定义文件系统名称,cephfs_metadata和cephfs_data为之前创建的存放inode和block的存储池
    2. #注意:cephfs_metadata和cephfs_data有先后顺序,放在前面的是存放inode,后面的是存放block,不要顺序搞错
    3. ceph fs new myfs1 cephfs_metadata cephfs_data

    查看ceph文件系统:

    ceph fs ls

     如上可以看到ceph文件系统名为myfs1,后面分别对应用户存储inode和block的存储池,前者存放inode元数据,后者存放block数据。

    4、客户端挂载

    (1)临时挂载

    1. #如下,其中:
    2. #mount -t 后面跟文件系统类型,这里是ceph类型
    3. #192.168.2.20:6789:/ 为MON节点的IP(不是MDS节点),如果是单IP的话,可以写任意一个MON节点的IP,后面的根不是服务器文件系统的根,而是对应ceph文件系统的根,这里是挂载整个ceph文件系统,所以写根
    4. #/mnt是本地挂载点
    5. #-o指定挂载选项,其中admin是用户名,secret是密钥,可以在/etc/ceph/ceph.client.admin.keyring文件里找到
    6. mount -t ceph 192.168.2.20:6789:/ /mnt -o name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg==

    如上有一个问题,如果提供挂载的服务器挂掉了,那么文件系统就无法使用了,所以可以使用下面的高可用方案。

    高可用方案(多个IP):

    mount -t ceph 192.168.2.20:6789,192.168.2.30:6789,192.168.2.40:6789:/  /mnt  -o name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg==

    (2)永久挂载

    使用fstab实现永久挂载ceph文件系统需要单独安装一个包:libcephfs1

    yum install libcephfs1 -y
    vim /etc/fstab   #挂载内容如下
    1. #单IP方案
    2. #192.168.2.20:6789:/ /mnt ceph defaults,_netdev,name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg== 0 0
    3. #多IP高可用方案
    4. 192.168.2.20:6789,192.168.2.30:6789,192.168.2.40:6789:/ /mnt ceph defaults,_netdev,name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg== 0 0
    mount -a

  • 相关阅读:
    androidX org.eclipse.paho.android.service:报错Program type already present
    为什么 async/await 不仅仅是语法糖
    基于docker进行Grafana + prometheus实现服务监听
    基于Spring Boot的体育馆管理系统的设计与实现
    多进程间通信学习之有名管道
    Spring源码系列-第7章-AOP的执行流程原理和监听器原理
    networkx学习记录
    探究kubernetes 探针参数periodSeconds和timeoutSeconds
    SpringBoot集成Kafka低版本和高版本
    11 redis中分布式锁的实现
  • 原文地址:https://blog.csdn.net/qq_28903377/article/details/128053382