Cepn文件系统挂载使用详解
1. 把文件系统挂载为用户空间文件系统
Debian/Ubuntu安装软件:
# apt-get -y install ceph-fuse ceph-common
准备集群配置文件和密钥文件:
/etc/ceph/ceph.client.admin.keyring
/etc/ceph/ceph.conf
挂载文件系统:
# mkdir /home/cephfs
# ceph-fuse /home/cephfs
手动卸载文件系统:
# fusermount -u /home/cephfs
ceph-fuse常用选项说明:
--client_mds_namespace # 指定要挂载的文件系统,或者将 client_mds_namespace 设置添加到您的ceph.conf。
--client_mountpoint/-r root_directory # 使用 root_directory 作为挂载的根目录,而不是完整的 Ceph 树。
-n client.username # 指定挂载文件系统的客户端用户
2. 把文件系统挂载为内核驱动
在密钥环文件中找到与某用户对应的密钥,找到用于挂载Ceph文件系统的用户(这里为admin),复制其密钥部分:
$ cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = <密钥>
存储集群默认需要认证,所以挂载时需要指定用户名和密钥:
# mkdir /home/kernel_cephfs
# mount -t ceph <mon_ip>:6789:/ /home/kernel_cephfs -o name=admin,secret=<密钥>
编辑/etc/fstab文件,添加以下行实现开机挂载:
<mon_ip>:6789:/ /home/kernel_cephfs ceph name=admin,secret=<密钥>,noatime,_netdev 0 2
3. CephFS文件系统只读解决办法
3.1 临时规避方案
增大 osd_max_write_size 配置阈值,重启cephfs元数据服务进程。
3.2 故障预防
排查出异常客户端并重新挂载:
rados -p fs_metadata_pool listomapvals mds0_sessionmap
找到异常客户端(正常客户端value只有几百字节,异常客户端可能有几十兆以上),然后通过以下命令找到异常客户端对应的宿主机客户端:
ceph daemon mds.active-mds-host session ls
4. ceph-fuse 使用 systemd 挂载 cephfs
4.1 安装ceph-fuse
# apt-get install ceph-fuse ceph-common
4.2 准备访问cephfs的凭证文件
/etc/ceph/ceph.client.admin.keyring
/etc/ceph/ceph.conf
4.3 手动挂载cephfs
# mkdir /cephfs
# ceph-fuse /cephfs/
4.4 将挂载配置为系统服务
4.4.1 准备服务脚本
# cat /etc/systemd/system/ceph-fuse.target
[Unit]
Description=ceph target allowing to start/stop all ceph-fuse@.service instances at once
PartOf=ceph.target
Before=ceph.target
[Install]
WantedBy=remote-fs.target ceph.target
# cat /etc/systemd/system/ceph-fuse@.service
[Unit]
Description=Ceph FUSE client
After=network-online.target local-fs.target time-sync.target
Wants=network-online.target local-fs.target time-sync.target
Conflicts=umount.target
PartOf=ceph-fuse.target
[Service]
EnvironmentFile=-/etc/default/ceph
Environment=CLUSTER=ceph
ExecStart=/usr/bin/ceph-fuse -f --cluster ${CLUSTER} %I
TasksMax=infinity
Restart=on-failure
[Install]
WantedBy=ceph-fuse.target
4.4.2 启动服务
# systemctl daemon-reload
# systemctl start ceph-fuse@/cephfs.service
以后的服务管理命令:
# systemctl start ceph-fuse@-cephfs.service
# systemctl stop ceph-fuse@-cephfs.service
# systemctl restart ceph-fuse@-cephfs.service
4.4.3 开机启动
# systemctl enable ceph-fuse@-cephfs.service
# systemctl enable ceph-fuse.target