ceph 4、创建cephfs服务 Alex 2020-07-05 2023-10-28 基于第三篇 ,我们搭建好了一个健康的ceph集群:
3个mon节点组成的mon集群
9个osd节点组成的osd集群
3个mgr节点(ceph luminous版本才有的)
3个mds服务(cephfs使用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@ceph-1 ceph]# ceph -s cluster: id: c165f9d0-88df-48a7-8cc5-11da82f99c93 health: HEALTH_OK services: mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3 mgr: ceph-1(active), standbys: admin, ceph-2, ceph-3 osd: 9 osds: 9 up, 9 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0B usage: 965MiB used, 18.0TiB / 18.0TiB avail pgs:
本篇主要讲如何基于ceph集群搭建cephfs服务。
cephFS简介 The Ceph Filesystem (Ceph FS) is a POSIX-compliant filesystem that uses a Ceph Storage Cluster to store its data.
Ceph文件系统(CephFS)提供符合POSIX标准的文件系统作为服务,该服务在基于对象的Ceph存储集群之上。 CephFS文件被映射到Ceph存储在Ceph存储集群中的对象。 Ceph客户端有两种挂载cephfs的方式:基于内核和FUSE.下图为cephfs的结构图:
Ceph文件系统服务包括与Ceph存储集群一起部署的Ceph元数据服务器(MDS)。 MDS存储了文件系统里的所有元数据(目录,文件所有权,访问模式等)。 MDS(ceph-mds的守护进程)将一些简单的文件系统操作(例如列出目录或更改目录(ls,cd)等)与Ceph OSD守护进程隔离,这样可以减少对OSD进程造成不必要的负担。 因此,将元数据与数据分离意味着Ceph文件系统可以提供高性能服务,而不会对Ceph存储集群造成负担。
MDS:存储metadata(元数据)
OSD:存储file data(数据)
ceph-mds可以作为单个进程运行,也可以分发到多个物理机器,以实现高可用性或可伸缩性。
高可用性:集群中处于standby状态的ceph-mds进程随时可以取代失败的active状态的ceph-mds,当active状态的ceph-mds进程失败时,ceph-mon很容易就可以把standby状态的mds转换成active状态,从而维持集群的可用性
可扩展性:集群中可以有多个active状态的ceph-mds进程,它们会将目录树拆分为子树(以及单个繁忙目录的分片),从而有效地平衡所有活动服务器之间的负载。
新建ceph client虚拟机 根据第二篇 的方法,新建一个虚拟机,我们命名为ceph-client.
安装好之后配置相应的网络,具体方法详见这里
修改ifcfg-enp0s3 1 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
将最后一行的ONBOOT=no
改为ONBOOT=yes
,添加IPADDR,NETMASK,这个是网卡1
,用于给虚拟机上网。
修改ifcfg-enp0s8 1 2 3 4 5 vi /etc/sysconfig/network-scripts/ifcfg-enp0s8 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.56.200 NETMASK=255.255.255.0
重启网卡并检查联网状态: 1 systemctl restart network
修改主机名hostname
: 1 echo ceph-client > /etc/hostname
重启,通过本机终端登录
修改yum源 1 2 3 4 5 6 yum clean all curl http://mirrors.aliyun.com/repo/Centos-7.repo >/etc/yum.repos.d/CentOS-Base.repo curl http://mirrors.aliyun.com/repo/epel-7.repo >/etc/yum.repos.d/epel.repo sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo yum makecache
配置ceph源 在/etc/yum.repos.d/
目录下新增一个ceph源文件ceph.repo
,并写入下面内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 vim /etc/yum.repos.d/ceph.repo # 写入以下内容 [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/ gpgcheck=0 [ceph-source] name=ceph-source baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/ gpgcheck=0
安装软件 1 2 3 yum clean all && yum makecache yum -y install yum-plugin-priorities yum -y install openssh-server
创建cephFS 登录mon集群的那三台机器中的一台即可,我这里登录ceph-1
创建cephfs creatring pools
1 2 3 4 [root@ceph-1 ceph]# ceph osd pool create cephfs_data 64 pool 'cephfs_data' created [root@ceph-1 ceph]# ceph osd pool create cephfs_metadata 64 pool 'cephfs_metadata' created
creating a filesystem
1 2 3 4 [root@ceph-1 ceph]# ceph fs new cephfs cephfs_metadata cephfs_data new fs with metadata pool 2 and data pool 1 [root@ceph-1 ceph]# ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
一旦文件系统创建好之后,mds的状态就会发生变化,如下所示:
1 2 [root@ceph-1 ceph]# ceph mds stat cephfs-1/1/1 up {0=ceph-2=up:active}, 2 up:standby
再看看集群状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@ceph-1 ceph]# ceph -s cluster: id: c165f9d0-88df-48a7-8cc5-11da82f99c93 health: HEALTH_OK services: mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3 mgr: ceph-1(active), standbys: admin, ceph-2, ceph-3 mds: cephfs-1/1/1 up {0=ceph-2=up:active}, 2 up:standby osd: 9 osds: 9 up, 9 in data: pools: 2 pools, 128 pgs objects: 21 objects, 3.14KiB usage: 967MiB used, 18.0TiB / 18.0TiB avail pgs: 128 active+clean
mds进入active状态
生成了两个pool,128个pg
挂载cephfs cephfs支持两种方式挂载:
这是官网给出的两种挂载方式的对比:
The FUSE client is the most accessible and the easiest to upgrade to the version of Ceph used by the storage cluster, while the kernel client will often give better performance.
The clients do not always provide equivalent functionality, for example the fuse client supports client-enforced quotas while the kernel client does not.
内核驱动 (with kernel) ceph一个集群只支持创建一个cephfs,所以只要创建一次cephfs之后,就可以在客户端机器上创建目录并挂载到集群:
在客户端机器上进行如下操作
1 2 [root@ceph-client ~]# mkdir -p /mycephfs [root@ceph-client ~]# mount -t ceph 192.168.56.101,192.168.56.102,192.168.56.103:6789:/ /mycephfs
查看挂载情况:
1 2 3 4 5 6 7 8 9 10 11 [root@ceph-client ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1.6G 49G 4% / devtmpfs 485M 0 485M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.8M 490M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/sda1 1014M 129M 886M 13% /boot /dev/mapper/centos-home 347G 35M 347G 1% /home tmpfs 100M 0 100M 0% /run/user/0 192.168.56.101,192.168.56.102,192.168.56.103:6789:/ 5.4T 0 5.4T 0% /mycephfs
最后一行可以看到挂载成功。
使用fuse (with fuse) 使用fuse方式进行挂载,需要安装ceph-fuse工具,
1 2 3 4 5 6 7 8 9 10 [root@ceph-client ~]# yum install ceph-fuse ........ 已安装: ceph-fuse.x86_64 2:12.2.9-0.el7 作为依赖被安装: fuse-libs.x86_64 0:2.9.2-10.el7 gperftools-libs.x86_64 0:2.6.1-1.el7 libibverbs.x86_64 0:15-7.el7_5 pciutils.x86_64 0:3.5.1-3.el7 rdma-core.x86_64 0:15-7.el7_5 完毕!
1 2 [root@ceph-client ~]# ceph-fuse -v ceph version 12.2.9 (9e300932ef8a8916fb3fda78c58691a6ab0f4217) luminous (stable)
ceph-fuse安装完成。
挂载cephfs
1 2 3 4 [root@ceph-client ~]# mkdir /fusefs [root@ceph-client ~]# ceph-fuse -m 192.168.56.101:6789 /fusefs ceph-fuse[10854]: starting ceph client ceph-fuse[10854]: starting fuse
1 2 3 4 5 6 7 8 9 10 11 12 [root@ceph-client ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 1.6G 49G 4% / devtmpfs 485M 0 485M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.8M 490M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/sda1 1014M 129M 886M 13% /boot /dev/mapper/centos-home 347G 35M 347G 1% /home tmpfs 100M 0 100M 0% /run/user/0 192.168.56.101,192.168.56.102,192.168.56.103:6789:/ 5.4T 0 5.4T 0% /mycephfs ceph-fuse 5.4T 0 5.4T 0% /fusefs
查看最后一行,说明挂载成功。
总结 本篇主要介绍了cephfs的架构以及在ceph集群上挂载cephfs的流程。