Ceph FS是一个支持POSIX接口的文件系统,它使用 Ceph 存储集群来存储数据。文件系统对于客户端来说可以方便的挂载到本地使用。Ceph FS构建在RADOS之上,继承RADOS的容错性和扩展性,支持冗余副本和数据高可靠性。
注意:当前, CephFS 还缺乏健壮得像 ‘fsck’ 这样的检查和修复功能。存储重要数据时需小心使用,因为灾难恢复工具还没开发完。
准备MDS元数据服务器
Ceph 文件系统要求 Ceph 存储集群内至少有一个 Ceph 元数据服务器。
新增一个MDS很简单,可参考ceph新增节点。
创建Ceph文件系统
一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。配置这些存储池时需考虑:
1、为元数据存储池设置较高的副本水平,因为此存储池丢失任何数据都会导致整个文件系统失效。
2、为元数据存储池分配低延时存储器(像 SSD ),因为它会直接影响到客户端的操作延时。
关于存储池的管理可参考官网 存储池。
要用默认设置为文件系统创建两个存储池,你可以用下列命令:
比如我们使用120个pg。cephfs_data和cephfs_metadata是两个存储池的名称。
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
创建好存储池后,你就可以用 fs new 命令创建文件系统了:
ceph fs new cephfs cephfs_metadata cephfs_data
cephfs是文件系统的名称。
使用下面的命令可以查看创建的CephFS
ceph fs ls
文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中,使用命令查看
ceph mds stat
成功运行输出如下:
[zzq@ceph4 osd]$ ceph osd pool create cephfs_data 128
pool 'cephfs_data' created
[zzq@ceph4 osd]$ ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created
[zzq@ceph4 osd]$ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
[zzq@ceph4 osd]$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[zzq@ceph4 osd]$
[zzq@ceph4 osd]$ ceph mds stat
e3: 1/1/1 up {0=ceph4=up:active}
[zzq@ceph4 osd]$
挂载CephFS (客户端节点执行)
要挂载 Ceph 文件系统,如果你知道监视器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具来自动解析监视器 IP 地址。
假如我们有4个monitor监视器,ip分别为192.168.199.81,192.168.199.82,192.168.199.83,192.168.199.84。
则使用mount命令挂载到目录/mycephfs,如下:
sudo mkdir /mycephfs
sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs
Ceph v0.55 及后续版本默认开启了 cephx 认证。
如果启用了cephx认证的Ceph文件系统,挂载时我们必须指定用户名、密钥。
secret在/etc/ceph/ceph.client.admin.keyring可以查到。
cat /etc/ceph/ceph.client.admin.keyring
sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs -o name=admin,secret=AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==
上述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码。例如:
sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
正确输出如下:
[zzq@localhost /]$ cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==
caps mds = "allow"
caps mon = "allow *"
caps osd = "allow *"
[zzq@localhost /]$ sudo mount -t ceph 192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/ /mycephfs -o name=admin,secret=AQD/9AZb41OsJRAAhgKm6sw/LItSdb33wFQRpA==
[sudo] password for zzq:
[zzq@localhost /]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_localhost-lv_root
18G 2.2G 15G 14% /
tmpfs 482M 0 482M 0% /dev/shm
/dev/sda1 477M 86M 362M 20% /boot
/dev/rbd0 3.9G 8.0M 3.8G 1% /cephAll
192.168.199.81:6789,192.168.199.82:6789,192.168.199.83:6789,192.168.199.84:6789:/
33G 14G 19G 41% /mycephfs
[zzq@localhost /]$
要卸载 Ceph 文件系统,可以用 unmount 命令,例如:
sudo umount /mycephfs |