Ceph文件系统(CEPH FS)是一个POSIX兼容的文件系统,使用Ceph的存储集群来存储其数据。
使用Ceph的文件系统,在你的Ceph的存储集群里至少需要存在一个Ceph的元数据服务器。
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/51901421
使用CephFS时,您必须至少部署一个元数据服务器。目前正在实验支持运行多个元数据服务器。所以生产的时候不要运行多个元数据服务器。
在添加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.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] func :
[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/[email protected] to /usr/lib/systemd/system/[email protected].
[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/[email protected] to /usr/lib/systemd/system/[email protected].
[node3][INFO ] Running command: sudo systemctl start ceph-mds@node3
[node3][INFO ] Running command: sudo systemctl enable ceph.target
[ceph@node0 cluster]$
MDS的其他参数暂不涉及(水平有限)
当有一个至少存在一个Ceph元数据服务器、并且运行正常的Ceph存储集群时,可以挂载Ceph文件系统。当然,也要确保客户端的网络连接和正确的身份验证keyring。
一个cephfs至少要求两个librados存储池,一个为data,一个为metadata。当配置这两个存储池时,注意:
1. 为metadata pool设置较高级别的副本级别,因为metadata的损坏可能导致整个文件系统不用
2. 建议,metadata pool使用低延时存储,比如SSD,因为metadata会直接影响客户端的响应速度。
创建存储池的命令:
ceph osd pool create
示例:
[ceph@node0 ~]$ ceph osd pool create cephfs_data 8
pool 'cephfs_data' created
[ceph@node0 ~]$ ceph osd pool create cephfs_metadata 10
pool 'cephfs_metadata' created
[ceph@node0 ~]$
使用fs new命令enable 文件系统
ceph fs new
示例:
[ceph@node0 ~]$ ceph fs new YYcephfs cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
[ceph@node0 ~]$
使用mds来观察
[ceph@node0 ~]$ ceph mds stat
e8: 1/1/1 up {0=node3=up:active}, 1 up:standby
[ceph@node0 ~]$
Cephfs一般都是作为cephfs client端来挂载,因此,来说明 cephfs client端的配置
参见ceph集群配置
参见ceph集群配置
方式如下:
[ceph@node3 ~]$ sudo modprobe rbd
[ceph@node3 ~]$ sudo lsmod | grep rbd
rbd 73158 0
libceph 244999 2 rbd,ceph
[ceph@node3 ~]$
Cephfs有两种挂载方式,kernel或fuse
node3是非mon服务器,为了区别mon服务器,使用node3作为client节点。
挂载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/mycephfs
mount error 22 = Invalid argument
[ceph@node0 ~]$ sudo tailf /var/log/messages
Jul 5 19:26:13 node0 kernel: Key type dns_resolver registered
Jul 5 19:26:13 node0 kernel: Key type ceph registered
Jul 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 init
Jul 5 19:26:13 node0 kernel: libceph: client24127 fsid 0c6a1eff-3f04-4324-9657-31c31940a
原因是该文件系统启用了cephx认证,因此需要指定一个用户名和一个密钥。
在监控节点下有如下文件:
[ceph@node0 cluster]$ ls
ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph.conf ceph.mon.keyring
ceph.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 –h
Filesystem Size Used Avail Use% Mounted on
……
/dev/sdb1 15G 35M 15G 1% /var/lib/ceph/osd/ceph-3
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/1000
192.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.keyring
AQBud3tXvqPyNxAAiFOJp3IPCahk1aXOZUx9DQ==
[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 -h
Filesystem Size Used Avail Use% Mounted on
……
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/1000
192.168.192.121:6789:/ 60G 136M 60G 1% /mnt/mycephfs
[ceph@node3 ~]$
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 [email protected]:/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 [email protected]:/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/cephfs
ceph-fuse[8804]: starting ceph client
2016-07-05 20:02:30.072945 7fd8a87c4e80 -1 init, newargv = 0x7fd8b32c1e60 newargc=11
ceph-fuse[8804]: starting fuse
[ceph@node3 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
……
ceph-fuse 60G 136M 60G 1% /mnt/cephfs
[ceph@node3 ~]$
命令:
sudo umount <挂载点>
示例
[ceph@node3 ~]$ sudo umount /mnt/mycephfs/
Ok!
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/51901421