CephFS Client
MDS(metadata server)を組み込んでファイルシステム(cephFS)を構築するとファイルシステム共有ができます.
最近のRHEL8/9ならCephのカーネルモジュールを内包していてcephfs向けクライアントツールもdnf/yumで入れられるので簡単に共有できます.
カーネルレベルでできるのである意味 ネイティブ接続 って言えるかも.
それ以外にもFUSEベースだったり、Ceph側でnfsモジュールを入れてのnfs共有も可能です.
cephfsではなくブロックデバイスを提供するRBD(rados block device)を使えばiSCSIのような接続も可能となります.
他windows,mac向けに CephFS クライアントの接続ツールも提供されている.
またnfs同様モジュールを組み込めば、ceph側でsmbサーバにもなれます。
cephとは関係のない中継ノードにcephfsをマウントして、そこからnfs/smbを行うのもできるみたい
(nfsとsmbを同時に扱うのは微妙ですが..)
参照先https://ceph.readthedocs.io/en/latest/cephfs/mount-prerequisites/
RHEL9系のRockylinux9ならOS提供のパッケージからリポジトリが登録できますが、
それ以外は手動でリポジトリを組み込みます
cat << _EOF_ > /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for \$basearch
baseurl=https://download.ceph.com/rpm-squid/el9/\$basearch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-squid/el9/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
_EOF_
リポジトリからcephパッケージをインストールします
[root@rockylinux9 ~]# dnf install epel-release -y && dnf install ceph-common -y
ceph managerノードから最小限のceph.confを取得して /etc/ceph/ceph.conf に置きます
[root@rockylinux9 ~]# ssh root@ceph01 "ceph config generate-minimal-conf" | tee /etc/ceph/ceph.conf
root@ceph01's password:
# minimal ceph.conf for c2d06c20-9197-40b4-a8c4-1a0604936ce8
[global]
fsid = c2d06c20-9197-40b4-a8c4-1a0604936ce8
mon_host = [v2:192.168.0.49:3300/0,v1:192.168.0.49:6789/0] [v2:192.168.0.47:3300/0,v1:192.168.0.47:6789/0] [v2:192.168.0.48:3300/0,v1:192.168.0.48:6789/0]
[root@rockylinux9 ~]#
その後、同じくceph managerからキーリングを貰います
[root@rockylinux9 ~]# ssh root@ceph01 "ceph fs authorize emfs client.rockylinux9 / rwp" | tee /etc/ceph/ceph.client.rockylinux9.keyring
root@ceph01's password:
[client.rockylinux9]
key = AQB7uAto1UjiBhAAr/IoQ/HWUJ0mHJ6rjw6zrQ==
caps mds = "allow rwp fsname=emfs"
caps mon = "allow r fsname=emfs"
caps osd = "allow rw tag cephfs data=emfs"
[root@rockylinux9 ~]#
これで準備は完了
cephで作ったemfsファイルシステムをmountします
CephFSのマウントポイントを作って、mountコマンドでマウントします
https://docs.ceph.com/en/latest/cephfs/mount-using-kernel-driver/
[root@rockylinux9 ~]# mkdir /emfs
[root@rockylinux9 ~]# mount -t ceph rockylinux9@.emfs=/ /emfs
[root@rockylinux9 ~]# df -hTt ceph
Filesystem Type Size Used Avail Use% Mounted on
rockylinux9@c2d06c20-9197-40b4-a8c4-1a0604936ce8.emfs=/ ceph 177G 0 177G 0% /emfs
[root@rockylinux9 ~]#
/etc/fstabへの記載は下記のように記載します
[root@ceph-client ~]# cat /etc/fstab
:
rockylinux9@.emfs=/ /emfs ceph rw 0 0
:
[root@ceph-client ~]#
autofsの場合は
[root@rockylinux9 ~]# cat /etc/auto.master
/- /etc/auto.home --timeout=60
[root@ceph-client ~]# cat /etc/auto.home
/emfs -fstype=ceph rockylinux9@.emfs=/
[root@ceph-client ~]#
でいける.
なんか規定でno_root_squashが適用されているみたい.
いわゆるユーザランドでのmountになります
既に/etc/ceph/ceph.confと「/etc/ceph/ceph.client.rockylinux9.keyring」があるのなら
[root@rockylinux9 ~]# dnf install ceph-fuse
[root@rockylinux9 ~]# ceph-fuse --id rockylinux9 /emfs
[root@rockylinux9 ~]# df -lTht fuse.ceph-fuse
Filesystem Type Size Used Avail Use% Mounted on
ceph-fuse fuse.ceph-fuse 177G 0 177G 0% /emfs
[root@rockylinux9 ~]#
となります。/etc/fstabに記載するなら下記のようにします
[root@rockylinux9 ~]# cat /etc/fstab
:
none /emfs fuse.ceph ceph.id=rockylinux9,_netdev,defaults 0 0
[root@rockylinux9 ~]#