CephFS 文件系统
为什么需要使用CephFS
由于RBD不可以多个主机共享同一块磁盘,出现很多客户端需要写入数据的问题,这时就需要CephFS
文件系统
cephfs 安装
安装mds高可用集群
root@ceph01 ceph]# ceph-deploy mds create ceph01 ceph02 ceph03
[root@ceph01 ceph]# ceph -s|grep mds
mds: 3 up:standby # 状态为启动等待
因为没有文件系统,所以3个节点状态是启动,但是后面为等待的状态
创建pool
一个Ceph文件系统至少需要连个RADOS池,一个用于数据,一个用于元数据。
- 对元数据池使用更好的复制级别,因为此池中的任何数据丢失都可能导致整个文件系统无法访问
- 对元数据池使用SSD等低延迟存储,因为这将直接影响观察到的客户端文件系统操作的延迟。
- 用于创建文件的数据池是
默认
数据池,是存储所有inode回溯信息的位置,用于硬链接管理和灾难恢复。因此,在CephFS中创建的所有inode在默认数据池中至少有一个对象。
创建存储池,数据data,元数据metadata
[root@ceph01 ceph]# ceph osd pool create cephfs_data 64 64
pool 'cephfs_data' created
[root@ceph01 ceph]# ceph osd pool create cephfs_metadata 64 64
pool 'cephfs_metadata' created
[root@ceph01 ceph]# ceph osd pool ls
sunday
...
cephfs_data
cephfs_metadata
创建文件系统
[root@ceph01 ceph]# ceph fs new cephfs-sunday cephfs_metadata cephfs_data
new fs with metadata pool 9 and data pool 8
# cephfs-sunday为文件系统名称
# cephfs_metadata 为元数据的pool
# cephfs_data 为数据pool
查看mds状态,已经有一个状态为active,另外2个为standb状态
[root@ceph01 ceph]# ceph fs ls
name: cephfs-sunday, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[root@ceph01 ceph]# ceph -s | grep mds
mds: cephfs-sunday:1 {0=ceph01=up:active} 2 up:standby
cephfs使用
ceph01为mon节点ip,/为挂载/目录 /sunday_cephfs挂载点路径,name=admin,使用admin用户的权限
内核驱动挂载
[root@ceph01 ~]# mkdir /sunday_cephfs
[root@ceph01 ~]# mount -t ceph ceph01:6789:/ /sunday_cephfs -o name=admin
[root@ceph01 ~]# df -h | grep cephfs
192.168.77.41:6789:/ 94G 0 94G 0% /sunday_cephfs
[root@ceph01 ~]# lsmod |grep ceph
ceph 363016 1
libceph 310679 2 rbd,ceph
dns_resolver 13140 1 libceph
libcrc32c 12644 2 xfs,libceph
可以看到,挂载完linux内核会自动加载ceph模块
在内核中挂载性能会比较高一点,但是有一些场景内核可能不太支持,所以可以使用用户FUSE挂载
用户空间FUSE挂载
用户空间挂载主要使用的是ceph-fuse
客户端,我们需要单独安装这个客户端
[root@ceph01 ~]# yum install ceph-fuse -y
[root@ceph01 ~]# mkdir /mnt/sunday_cephfs
[root@ceph01 ~]# ceph-fuse -n client.admin -m 192.168.77.41:6789 /mnt/sunday_cephfs/
2024-04-17 01:46:32.406 7f089f3fef80 -1 init, newargv = 0x559a7dbf2ce0 newargc=9ceph-fuse[12919]: starting ceph client
ceph-fuse[12919]: starting fuse
[root@ceph01 ~]# df -h | grep sunday_cephfs
192.168.77.41:6789:/ 94G 0 94G 0% /sunday_cephfs
ceph-fuse 94G 0 94G 0% /mnt/sunday_cephfs
如果我们不指定mon,默认找的是/etc/ceph/ceph.conf里面的配置文件