ceph-fuse 是挂载 CephFS 的另外一种方法,虽然是挂载到了用户空间。 因此, FUSE 的性能会相对低一些,但 FUSE 客户端更容易管理, 特别是在升级 CephFS 时。
先走通二者都需要的先决条件,内核、 FUSE 挂载的,位于 挂载 CephFS :先决条件 。
Note
通过 FUSE 挂载 CephFS 需要超级用户权限,这样才能发出重挂载自身的命令, 以修剪 dentry 。
一般来说,通过 FUSE 挂载 CephFS 的命令是这样的:
ceph-fuse {mountpoint} {options}
要以 FUSE 方式挂载 Ceph 文件系统,用 ceph-fuse
命令:
mkdir /mnt/mycephfs ceph-fuse --id foo /mnt/mycephfs
--id
选项传入的是 CephX 用户的名字,我们挂载 CephFS 时要用他的密钥环,
在这个命令里,他是 foo
。你也可以用 -n
代替,但 --id
显然更简单:
ceph-fuse -n client.foo /mnt/mycephfs
如果密钥环不在标准位置下,你可以手动传入:
ceph-fuse --id foo -k /path/to/keyring /mnt/mycephfs
你也可以传入监视器地址,虽然这不是强制的:
ceph-fuse --id foo -m 192.168.0.1:6789 /mnt/mycephfs
你也可以只挂载 CephFS 里的某个特定目录,而不是挂载 CephFS 的根目录:
ceph-fuse --id foo -r /path/to/dir /mnt/mycephfs
如果你的 Ceph 集群有多个 FS ,可以用 --client_fs
选项挂载非默认的文件系统:
ceph-fuse --id foo --client_fs mycephfs2 /mnt/mycephfs2
你也可以在 ceph.conf
里加上 client_fs
配置。
像其它文件系统一样,用 umount
卸载 CephFS:
umount /mnt/mycephfs
Tip
执行此命令时需要确保你不在这个文件系统的目录里。
要把 CephFS 挂载成用户空间文件系统,在 /etc/fstab
里加上如下内容:
#DEVICE PATH TYPE OPTIONS none /mnt/mycephfs fuse.ceph ceph.id={user-ID}[,ceph.conf={path/to/conf.conf}],_netdev,defaults 0 0
例如:
none /mnt/mycephfs fuse.ceph ceph.id=myuser,_netdev,defaults 0 0 none /mnt/mycephfs fuse.ceph ceph.id=myuser,ceph.conf=/etc/ceph/foo.conf,_netdev,defaults 0 0
这里用的是 ID (如 myuser
,不是 client.myuser
)。
你可以这样给命令行加上任意的合法 ceph-fuse
选项。
要挂载 CephFS 的一个子目录,把下面的加进 /etc/fstab
:
none /mnt/mycephfs fuse.ceph ceph.id=myuser,ceph.client_mountpoint=/path/to/dir,_netdev,defaults 0 0
[email protected]
和 ceph-fuse.target
systemd unit 默认可用。
和往常一样,这些 unit 文件声明了默认的依赖关系和建议的 ceph-fuse
执行上下文。
写好上面的 fstab 条目后,运行下列命令:
systemctl start ceph-fuse@/mnt/mycephfs.service systemctl enable ceph-fuse.target systemctl enable [email protected]
关于 CephX 用户管理的细节见 :ref:`用户管理 <user-management>` , ceph-fuse 手册里有它支持的更多选项。 故障排除请参考 :ref:`ceph_fuse_debugging` 。