参考文档:html
以《CEPH LIO iSCSI Gateway》中的环境为基础,即: node
Hostnamelinux |
IPvim |
Servicecentos |
Remark缓存 |
ceph01服务器 |
publice:172.30.200.57 网络 cluster:192.30.200.57性能 |
1. centos7.5 with kernel v4.18.7-1; centos7 2. ceph-13.2.1 mimic (stable),已部署 3. ntp已部署; 4. 禁用selinux,firewalld或iptables。 |
|
ceph02 |
publice:172.30.200.58 cluster:192.30.200.58 |
||
ceph03 |
publice:172.30.200.59 cluster:192.30.200.59 |
||
ceph-client |
172.30.200.50 |
ceph-fuse-12.2.8-0(ceph yum) |
Ceph元数据服务器(MetaDataServer,MDS)主要用于管理文件系统的命名空间。Ceph集群中的元数据与数据均存储在对象存储集群中,MDS相似于元数据的代理缓存服务器(不负责存储元数据),但为了实现扩展性,二者是分开独立管理。
Ceph MDS不是一个必需角色,只在使用CephFS的时须要,CephFS至少须要1台MDS,最佳实践中也建议部署1台,但能够部署多台,默认是主备关系。
# 经过部署服务器部署,格式:ceph-deploy mds create HOST1[:OSD-DAEMON-NAME]; # 后期增长MDS也可经过此方式 [root@ceph01 ~]# su - cephde [cephde@ceph01 ~]$ cd cephcluster/ [cephde@ceph01 cephcluster]$ ceph-deploy mds create ceph01 ceph02
# 查看mds守护服务,ceph02节点同理; # 删除mds步骤:首先中止mds守护服务;再经过”ceph mds fail X”删除 [cephde@ceph01 cephcluster]$ sudo systemctl status ceph-mds@ceph01
# 1个Cephfs至少须要两个pool,MDS与数据独立管理; # 粗略的 <pg_num> 的设定规则: # 若少于 5 个 OSD, 设置 pg_num 为 128; # 5~10 个 OSD,设置 pg_num 为 512; # 10~50 个 OSD,设置 pg_num 为 4096; # 除了<pg_num> ,还有一个可选参数 <pgp_num> ,可不设置,pgp是为了管理placement而存在的专门的pg,其pg的数量应该保持一致; # pg数只能增长,没法减小;增长pg_num后必须同时增减pgp_num [root@ceph01 ~]# ceph osd pool create metadata 64 [root@ceph01 ~]# ceph osd pool create data 64
# 格式:ceph fs new CEPHFS-NAME METADATA-POOL DATA-POOL; # 删除cephfs须要提早删除mds:ceph fs rm CEPHFS-NAME --yes-i-really-mean-it; # 查看:ceph fs ls [root@ceph01 ~]# ceph fs new cephfs metadata data
# 同步观察ceph集群名为cephfs的文件系统状态变化; # 部署在ceph02节点的MDS被确认为主MDS,被分配”rank 0”,处于active状态 [root@ceph02 ~]# ceph -w
# 或:ceph mds stat; # 可用的文件系统必定有1个mds处于”up:active”状态;在建立cephfs前,经过”ceph mds stat”可见mds状态处于”up:standby” [root@ceph01 ~]# ceph -s
在ceph-client节点挂载cephfs,CephFS有两种挂载方式:
经过内核挂载cephfs,对内核版本有必定要求,最佳实践中并未给出最低版本的要求,只是建议若是从Ceph 10.x (Jewel) 算起,最好用 4.x 以上的内核,但v3.x基本支持。
# 建立挂载点 [root@ceph-client ~]# mkdir -p /cephfs # 注意MDS的状态:up:active; # 挂载格式:mount -t ceph Mon-IP:6789:/ /MOUNTPOINT [-o name=amdin,secret=Keyring\secretfile=/Path/to/Secretfile]; # 默认采用ceph-deploy部署ceph集群是开启了cephx认证,须要挂载secret-keyring,即集群mon节点/etc/ceph/ceph.client.admin.keyring文件中的”key”值,采用secretfile可不用暴露keyring,但有1个bug(https://bugzilla.redhat.com/show_bug.cgi?id=1030402),始终报错:libceph: bad option at 'secretfile=/etc/ceph/admin.secret'; # 若是ceph集群含多个文件系统(默认只能建立1个文件系统,多文件系统属于实验性质,需打开开关),挂载时须要指定,参数:-o mds_namespace=CEPHFS-Name, [root@ceph-client ~]# mount -t ceph 172.30.200.57:6789:/ /cephfs -o name=admin,secret=AQBzx5hbtt2iJxAAE4dsque5hpNzWOEYzGNzBw==
# 3副本环境,ceph集群450GB的总容量合并为140GB左右 [root@ceph-client ~]# df -Th
# 也可经过”dmesg | tail”观察挂载状况 [root@ceph-client ~]# dmesg | tail
# filesystem列设置为”ceph”,filesystem parameters列设置挂载user/key,时间等; # noatime:禁止更新文件与目录的inode访问时间,以得到更快的访问速度; # _netdev:标识文件系统位于网络上,防止网络启动前挂载 [root@ceph-client ~]# vim /etc/fstab # cephfs 172.30.200.57:6789:/ /cephfs ceph name=admin,secret=AQBzx5hbtt2iJxAAE4dsque5hpNzWOEYzGNzBw==,noatime,_netdev 0 0
# 安装ceph-fuse客户端,须要提早设置ceph yum源 [root@ceph-client ~]# yum install ceph-fuse -y # 客户端挂载cephfs时,默认在/etc/ceph目录下读取须要的文件,即ceph集群mon节点的ceph.conf文件与ceph.client.admin.keyring文件 [root@ceph-client ~]# mkdir -p /etc/ceph [root@ceph-client ~]# scp root@172.30.200.57:/etc/ceph/ceph.c* /etc/ceph/ # 卸载经过内核挂载的cephfs [root@ceph-client ~]# umount /cephfs/
# 格式1:ceph-fuse /MOUNTPOINT,ceph-fuse读取ceph.conf文件,选择可用的mon节点挂载,此方式具有冗余性(依赖mon节点的冗余); # 格式2:ceph-fuse [-k <keyring_path>/ceph.client.admin.keyring]-m Mon-IP:6789 /MOUNTPOINT,挂载效果同格式1; # 格式3:首先启动ceph-fuse.target服务:systemctl start ceph-fuse.target;再(依赖前者)启动挂载:systemctl start ceph-fuse@/MOUNTPOINT.service,unit文件为/usr/lib/systemd/system/ceph-fuse@.service,须要根据挂载点启动服务,挂载效果与前两种方式相同 [root@ceph-client ~]# ceph-fuse /cephfs
# 命令”dmesg | tail”也可查看; # 经过格式1挂载,filesystem源是ceph-fuse,并未绑定特定mon节点,文件系统是fuse.ceph-fuse [root@ceph-client ~]# df -Th
# device列设置“ceph-fuse”或“id=admin”均可以; # filesystem列设置为”fuse.ceph”,注意不是” fuse.ceph-fuse”; # filesystem parameters列设置挂载时间 [root@ceph-client ~]# vim /etc/fstab # cephfs ceph-fuse /cephfs fuse.ceph noatime,_netdev 0 0