Ceph文件系统(CEPH FS)是一个POSIX兼容的文件系统,使用Ceph的存储集群来存储其数据。
使用Ceph的文件系统,在你的Ceph的存储集群里至少需要存在一个Ceph的元数据服务器。
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/51901421
1 元数据服务器MDS
使用CephFS时,您必须至少部署一个元数据服务器。目前正在实验支持运行多个元数据服务器。所以生产的时候不要运行多个元数据服务器。
1.1 添加MDS
在添加MDS,先要部署OSD。
命令:
ceph-deploy mds create {host-name}[:{daemon-name}][{host-name}[:{daemon-name}]...]
示例:创建两个MDS
[ceph@node0 cluster]$ ceph-deploy mds create node2 node3[ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph/.cephdeploy.conf[ceph_deploy.cli][INFO ] Invoked (1.5.34): /usr/bin/ceph-deploy mds create node2 node3[ceph_deploy.cli][INFO ] ceph-deploy options:[ceph_deploy.cli][INFO ] username : None[ceph_deploy.cli][INFO ] verbose : False[ceph_deploy.cli][INFO ] overwrite_conf : False[ceph_deploy.cli][INFO ] subcommand : create[ceph_deploy.cli][INFO ] quiet : False[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f79397860e0>[ceph_deploy.cli][INFO ] cluster : ceph[ceph_deploy.cli][INFO ] func : <function mds at 0x7f793976da28>[ceph_deploy.cli][INFO ] ceph_conf : None[ceph_deploy.cli][INFO ] mds : [('node2', 'node2'), ('node3', 'node3')][ceph_deploy.cli][INFO ] default_release : False[ceph_deploy.mds][DEBUG ] Deploying mds, cluster ceph hosts node2:node2 node3:node3[node2][DEBUG ] connection detected need for sudo[node2][DEBUG ] connected to host: node2[node2][DEBUG ] detect platform information from remote host[node2][DEBUG ] detect machine type[ceph_deploy.mds][INFO ] Distro info: CentOS Linux 7.2.1511 Core[ceph_deploy.mds][DEBUG ] remote host will use systemd[ceph_deploy.mds][DEBUG ] deploying mds bootstrap to node2[node2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf[node2][DEBUG ] create path if it doesn't exist[node2][INFO ] Running command: sudo ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node2 osd allow rwx mds allow mon allow profile mds -o /var/lib/ceph/mds/ceph-node2/keyring[node2][INFO ] Running command: sudo systemctl enable ceph-mds@node2[node2][WARNIN] Created symlink from /etc/systemd/system/ceph-mds.target.wants/ceph-mds@node2.service to /usr/lib/systemd/system/ceph-mds@.service.[node2][INFO ] Running command: sudo systemctl start ceph-mds@node2[node2][INFO ] Running command: sudo systemctl enable ceph.target[node3][DEBUG ] connection detected need for sudo[node3][DEBUG ] connected to host: node3[node3][DEBUG ] detect platform information from remote host[node3][DEBUG ] detect machine type[ceph_deploy.mds][INFO ] Distro info: CentOS Linux 7.2.1511 Core[ceph_deploy.mds][DEBUG ] remote host will use systemd[ceph_deploy.mds][DEBUG ] deploying mds bootstrap to node3[node3][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf[node3][WARNIN] mds keyring does not exist yet, creating one[node3][DEBUG ] create a keyring file[node3][DEBUG ] create path if it doesn't exist[node3][INFO ] Running command: sudo ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node3 osd allow rwx mds allow mon allow profile mds -o /var/lib/ceph/mds/ceph-node3/keyring[node3][INFO ] Running command: sudo systemctl enable ceph-mds@node3[node3][WARNIN] Created symlink from /etc/systemd/system/ceph-mds.target.wants/ceph-mds@node3.service to /usr/lib/systemd/system/ceph-mds@.service.[node3][INFO ] Running command: sudo systemctl start ceph-mds@node3[node3][INFO ] Running command: sudo systemctl enable ceph.target[ceph@node0 cluster]$
MDS的其他参数暂不涉及(水平有限)
2 CEPHFS创建
当有一个至少存在一个Ceph元数据服务器、并且运行正常的Ceph存储集群时,可以挂载Ceph文件系统。当然,也要确保客户端的网络连接和正确的身份验证keyring。
2.1 创建Cephfs
一个cephfs至少要求两个librados存储池,一个为data,一个为metadata。当配置这两个存储池时,注意:
1. 为metadata pool设置较高级别的副本级别,因为metadata的损坏可能导致整个文件系统不用
2. 建议,metadata pool使用低延时存储,比如SSD,因为metadata会直接影响客户端的响应速度。
创建存储池的命令:
ceph osd pool create <pool_name> <pg_num>
示例:
[ceph@node0 ~]$ ceph osd pool create cephfs_data 8pool 'cephfs_data' created[ceph@node0 ~]$ ceph osd pool create cephfs_metadata 10pool 'cephfs_metadata' created[ceph@node0 ~]$
使用fs new命令enable 文件系统
ceph fs new <fs_name> <metadata_pool> <data_pool>
示例:
[ceph@node0 ~]$ ceph fs new YYcephfs cephfs_metadata cephfs_datanew fs with metadata pool 2 and data pool 1[ceph@node0 ~]$
使用mds来观察
[ceph@node0 ~]$ ceph mds state8: 1/1/1 up {0=node3=up:active}, 1 up:standby[ceph@node0 ~]$
3 CEPHFS挂载
Cephfs一般都是作为cephfs client端来挂载,因此,来说明 cephfs client端的配置
3.1 配置Client端
3.1.1 Ceph集群管理节点与Client端的ssh无密码登录
参见ceph集群配置
3.1.2 Client端的sudo权限
参见ceph集群配置
3.1.3 检查系统内核是否支持RBD
方式如下:
[ceph@node3 ~]$ sudo modprobe rbd[ceph@node3 ~]$ sudo lsmod | grep rbdrbd 73158 0libceph 244999 2 rbd,ceph[ceph@node3 ~]$
3.2 Cephfs挂载
Cephfs有两种挂载方式,kernel或fuse
node3是非mon服务器,为了区别mon服务器,使用node3作为client节点。
3.2.1 Kernel驱动
挂载Ceph的文件系统,如果知道监控主机的IP地址(ES),你可以使用的mount命令挂载,或使用mount.ceph实用工具,为解析监控(ES)主机名,将其转换成IP地址。例如:
创建挂载点:
sudo mkdir /mnt/mycephfs
挂载:
sudo mount -t ceph 192.168.192.121:6789:/ /mnt/mycephfs
示例:
[ceph@node3 ~]$ sudo mount -t ceph 192.168.192.121:6789:/ /mnt/mycephfsmount error 22 = Invalid argument[ceph@node0 ~]$ sudo tailf /var/log/messagesJul 5 19:26:13 node0 kernel: Key type dns_resolver registeredJul 5 19:26:13 node0 kernel: Key type ceph registeredJul 5 19:26:13 node0 kernel: libceph: loaded (mon/osd proto 15/24)Jul 5 19:26:13 node0 kernel: ceph: loaded (mds proto 32)Jul 5 19:26:13 node0 kernel: libceph: no secret set (for auth_x protocol)Jul 5 19:26:13 node0 kernel: libceph: error -22 on auth protocol 2 initJul 5 19:26:13 node0 kernel: libceph: client24127 fsid 0c6a1eff-3f04-4324-9657-31c31940a
原因是该文件系统启用了cephx认证,因此需要指定一个用户名和一个密钥。
在监控节点下有如下文件:
[ceph@node0 cluster]$ lsceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph.conf ceph.mon.keyringceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph-deploy-ceph.log文件内容如下:[ceph@node0 cluster]$ cat ceph.client.admin.keyring[client.admin]key = AQBud3tXvqPyNxAAiFOJp3IPCahk1aXOZUx9DQ==[ceph@node0 cluster]$
因此,可知
用户名:admin
密钥 :AQBud3tXvqPyNxAAiFOJp3IPCahk1aXOZUx9DQ==
挂载命令:
[ceph@node3 ~]$ sudo mount -t ceph 192.168.192.121:6789:/ /mnt/mycephfs -o name=admin,secret=AQBud3tXvqPyNxAAiFOJp3IPCahk1aXOZUx9DQ==[ceph@node3 ~]$ df –hFilesystem Size Used Avail Use% Mounted on……/dev/sdb1 15G 35M 15G 1% /var/lib/ceph/osd/ceph-3tmpfs 98M 16K 98M 1% /run/user/42tmpfs 98M 0 98M 0% /run/user/1000192.168.192.121:6789:/ 60G 136M 60G 1% /mnt/mycephfs[ceph@node3 ~]$
当然也可以以指定密钥文件的方式挂载:
将node0上的文件ceph.client.admin.keyring中key单独存储在client节点(node3)的文件admin.keyring中
[ceph@node3 ~]$ cat admin.keyringAQBud3tXvqPyNxAAiFOJp3IPCahk1aXOZUx9DQ==[ceph@node3 ~]$
挂载方式
[ceph@node3 ~]$ sudo mount -t ceph 192.168.192.121:6789:/ /mnt/mycephfs -o name=admin,secretfile=/home/ceph/admin.keyring[ceph@node3 ~]$ df -hFilesystem Size Used Avail Use% Mounted on……tmpfs 98M 16K 98M 1% /run/user/42tmpfs 98M 0 98M 0% /run/user/1000192.168.192.121:6789:/ 60G 136M 60G 1% /mnt/mycephfs[ceph@node3 ~]$
3.2.2 Fuse方式挂载
1. 安装ceph-fuse工具包
[ceph@node3 ~]$ sudo yum -y install ceph-fuse
2. 在Cleint端节点,从监控主机复制Ceph的配置文件到/etc/ceph目录。
sudo mkdir -p /etc/ceph
sudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
示例:
[ceph@node3 ~]$ sudo mkdir -p /etc/ceph[ceph@node3 ~]$ sudo scp root@192.168.192.121:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
3. 在客户端主机,从监控主机复制Ceph的秘钥到/etc/ceph目录。
sudo scp {user}@{server-machine}:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ ceph.client.admin.keyring
示例:
[ceph@node3 ~]$ sudo scp root@192.168.192.121:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring
4. 确保Ceph的配置文件和钥匙有您的客户机(例如,CHMOD 644)上有适当的文件权限。
5. 创建挂载点:
[ceph@node3 ~]$ sudo mkdir /mnt/cephfs
6. ceph-fuse挂载命令:
[ceph@node3 ~]$ sudo ceph-fuse -m 192.168.192.121:6789 /mnt/cephfsceph-fuse[8804]: starting ceph client2016-07-05 20:02:30.072945 7fd8a87c4e80 -1 init, newargv = 0x7fd8b32c1e60 newargc=11ceph-fuse[8804]: starting fuse[ceph@node3 ~]$ df -hFilesystem Size Used Avail Use% Mounted on……ceph-fuse 60G 136M 60G 1% /mnt/cephfs[ceph@node3 ~]$
3.2.3 cephfs卸载
命令:
sudo umount <挂载点>
示例
[ceph@node3 ~]$ sudo umount /mnt/mycephfs/
Ok!
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/51901421