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
posted @ 2020-11-02 14:47  Varden  阅读(448)  评论(0编辑  收藏  举报