一 Ceph文件系统
1.1 概述
CephFS也称ceph文件系统,是一个POSIX兼容的分布式文件系统。
实现ceph文件系统的要求:
- 需要一个已经正常运行的ceph集群;
- 至少包含一个ceph元数据服务器(MDS)。
1.2 相关名词
Ceph:元数据服务器( MDS ),为 Ceph 文件系统存储元数据。元数据服务器使得POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。
元数据:可以简单的理解为它是描述数据的数据,意思就是描述数据的信息。如,数据的大小、位置、属性等等信息。使用MDS后,在执行数据搜索和查看的时候,首先查找的是元数据,通过元数据中的描述信息准确且快速的找到数据,而不用大费周章的在整个集群的osd上查找。
1.3 客户端I/O机制
客户端向cephfs发起I/O时,过程大致为:
- client端与mds节点通讯,获取metadata信息(metadata也存在osd上)
- client直接写数据到osd
1.4 挂载ceph文件系统的方式
- 使用本地系统内核驱动程序进行挂载
- 使用ceph fuse进行挂载
二 文件系统使用
2.1 查看集群
1 [root@deploy ~]# su - manager 2 [manager@deploy ~]$ cd my-cluster/ 3 [manager@deploy my-cluster]$ ssh node1 sudo ceph -s
2.2 创建MDS
见《003.Ceph扩展集群》步骤2.2。
提示:使用ceph-deploy部署ceph mds比较快捷,但依赖于之前ceph-deploy时候生成的一些配置和keyring文件,所以此文档承接之前文档,并在部署Ceph集群目录。
1 [root@deploy ~]# su - manager 2 [manager@deploy ~]$ cd my-cluster/ 3 [manager@deploy my-cluster]$ ssh node1 sudo ceph mds stat #查看mds信息 4 , 1 up:standby
2.3 创建文件系统
1 [manager@deploy my-cluster]$ ssh node1 sudo ceph osd pool create cephfs_data 16 16 #创建data pool 2 [manager@deploy my-cluster]$ ssh node1 sudo ceph osd pool create cephfs_metadata 16 16 #创建metadata pool 3 [manager@deploy my-cluster]$ ssh node1 sudo ceph fs new cephfs cephfs_metadata cephfs_data #创建cephfs 4 [manager@deploy my-cluster]$ ssh node1 sudo ceph fs ls #查看验证 5 name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ] 6 [manager@deploy my-cluster]$ ssh node1 sudo ceph mds stat 7 cephfs-1/1/1 up {0=node1=up:active} #再次查看mds信息
注意:一个cephfs至少要求两个RADOS存储池,一个为data,一个为metadata。
建议:
metadata pool设置较高级别的副本级别,因为metadata的损坏可能导致整个文件系统不用;
metadata pool使用低延时存储,比如SSD,因为metadata会直接影响客户端的响应速度。
2.4 创建认证密钥
1 [root@node1 ~]# cat /etc/ceph/ceph.client.admin.keyring #查看key 2 [client.admin] 3 key = AQDs9D1cCanyJBAA/rj991xmzENsIgEesfe8KQ== 4 [root@cephclient ~]# vi /root/admin.secret #客户端创建key 5 AQDs9D1cCanyJBAA/rj991xmzENsIgEesfe8KQ==
三 客户端使用文件系统(内核驱动)
3.1 客户端执行挂载
1 [root@cephclient ~]# mkdir /mnt/mycephfs 2 [root@cephclient ~]# mount -t ceph -o name=admin,secretfile=/root/admin.secret \ 3 172.24.8.72:6789:/ /mnt/mycephfs/ #执行挂载并附带key文件
提示:Ceph存储集群默认情况下已启用身份验证的情况下运行,挂载时需要指明相关密钥(非密钥环本身)。
2.6 确认验证
1 [root@cephclient ~]# df -hT 2 Filesystem Type Size Used Avail Use% Mounted on 3 …… 4 172.24.8.72:6789:/ ceph 18G 0 18G 0% /mnt/mycephfs 5 [root@cephclient ~]# echo 'This is my test file!' >>/mnt/mycephfs/test.txt
四 客户端使用文件系统(FUSE)
4.1 安装FUSE相关包
1 [root@cephclient ~]# yum -y install ceph-fuse 2 [manager@deploy my-cluster]$ ceph-deploy --overwrite-conf mon add cephclient
提示:Ceph v0.55及后续版本默认开启了cephx认证。从用户空间( FUSE )挂载Ceph文件系统前,确保客户端有一份Ceph配置副本、和具备Ceph元数据服务器的密钥环,本实验通过以上命令直接从deploy节点推送相关配置。也可通过手动scp方式将mon节点的ceph.conf和ceph.client.admin.keyring复制至客户端节点。
4.2 客户端执行挂载
1 [root@cephclient ~]# mkdir /mnt/mycephfs 2 [root@cephclient ~]# ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 172.24.8.72:6789 /mnt/mycephfs/ #执行挂载并附带key文件
提示:Ceph存储集群默认情况下已启用身份验证的情况下运行,若keyring位于/etc/ceph目录可省略-k参数,ceph-fuse -m 172.24.8.72:6789 /mnt/mycephfs。
4.3 确认验证
1 [root@cephclient ~]# df -hT 2 Filesystem Type Size Used Avail Use% Mounted on 3 …… 4 ceph-fuse fuse.ceph-fuse 18G 0 18G 0% /mnt/mycephfs 5 [root@cephclient ~]# echo 'This is my test file!' >>/mnt/mycephfs/test2.txt
参考:http://docs.ceph.com/docs/master/start/quick-rbd/