Cephが使えるようになるまで(CephFS編)


cephadmを使ったCeph構築

#環境(事前準備するもの)
・ubuntu20.04(Hyper-Vで用意)×3
・docker
・chrony

ubuntuの構成について

Hyper-Vデフォルトから、の変更点
CPU:1→2
メモリ:512MB→4096MB(動的メモリ切)
HDDの追加:デフォルトの127GB

#インストール
apt install -y cephadm

ceph1で実行

192.168.1.240は、自分のIP
sudo cephadm bootstrap --mon-ip 192.168.1.240

しばらく待つと、下のようなメッセージが出るので、URLにアクセスしましょう。

Ceph Dashboard is now available at:

             URL: https://ceph1:8443/
            User: admin
        Password: vyy4auyzrr

You can access the Ceph CLI with:

        sudo /usr/sbin/cephadm shell --fsid 73a78d66-4978-11ec-a72c-39d22931f602 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For more information see:

        https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

上のURLの部分のceph1は、host名になります。
Passwordは毎回違うものが生成されるのでログを必ず見てください。

名前解決できていない場合は、URLを下のように自分で書き換えてください。
https://192.168.1.240:8443/

ブラウザでURLを見ると

こんな感じで見えます。
先ほどのUserとPasswordを入れます。(今回の場合は、User: admin、Password: vyy4auyzrrです)

もう一度パスワードを入れて、自分の好きなパスワードに書き換えましょう。

ログインできますが、このままでは何も使えません。

まずは、ほかの2台も参加させます。

root@ceph1:~# sshpass -p "password" ssh-copy-id -f -i /etc/ceph/ceph.pub [email protected] -o StrictHostKeyChecking=no
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/etc/ceph/ceph.pub"

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -o 'StrictHostKeyChecking=no' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

root@ceph1:~# ./cephadm shell -- ceph orch host add ceph2 192.168.1.241
Inferring fsid 173f9dc8-b02c-11ec-9dae-cd5183c0b4c4
Inferring config /var/lib/ceph/173f9dc8-b02c-11ec-9dae-cd5183c0b4c4/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f
Error EINVAL: New host ceph2 (192.168.1.241) failed check: ['podman|docker (/usr/bin/docker) is present', 'systemctl is present', 'lvcreate is present', 'Unit chrony.service is enabled and running', 'Hostname "ceph2" matches what is expected.', 'ERROR: hostname "ceph02" does not match expected hostname "ceph2"']
root@ceph1:~# ./cephadm shell -- ceph orch host add ceph02 192.168.1.241
Inferring fsid 173f9dc8-b02c-11ec-9dae-cd5183c0b4c4
Inferring config /var/lib/ceph/173f9dc8-b02c-11ec-9dae-cd5183c0b4c4/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f
Added host 'ceph02'

root@ceph1:~# sshpass -p "password" ssh-copy-id -f -i /etc/ceph/ceph.pub [email protected] -o StrictHostKeyChecking=no
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/etc/ceph/ceph.pub"

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -o 'StrictHostKeyChecking=no' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

root@ceph1:~# ./cephadm shell -- ceph orch host add ceph03 192.168.1.242
Inferring fsid 173f9dc8-b02c-11ec-9dae-cd5183c0b4c4
Inferring config /var/lib/ceph/173f9dc8-b02c-11ec-9dae-cd5183c0b4c4/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f
Added host 'ceph03'

OSDの追加をします。
デバイスの確認(必須ではない)

root@ceph1:~# ./cephadm shell -- ceph orch device ls
Inferring fsid 173f9dc8-b02c-11ec-9dae-cd5183c0b4c4
Inferring config /var/lib/ceph/173f9dc8-b02c-11ec-9dae-cd5183c0b4c4/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f
Hostname  Path      Type  Serial                            Size   Health   Ident  Fault  Available  
ceph02    /dev/sda  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    Yes        
ceph02    /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No         
ceph03    /dev/sdb  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    Yes        
ceph03    /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No         
ceph1     /dev/sdb  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    Yes        
ceph1     /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No
root@ceph1:~# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...

上のコマンドでAvailableがYesのhdd(ssd)がOSDに入ります。
少し時間がかかる(5分ぐらい?)ので、待ちましょう

すべてのOSDが追加されました。
OSDを追加後
ディスクの状態を見ると、AvailableがNoになってます。

root@ceph1:~# ./cephadm shell -- ceph orch device ls
Inferring fsid 4e517a28-afb6-11ec-a140-6b57f3dd59e4
Inferring config /var/lib/ceph/4e517a28-afb6-11ec-a140-6b57f3dd59e4/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f
Hostname  Path      Type  Serial                            Size   Health   Ident  Fault  Available
ceph02    /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No
ceph02    /dev/sda  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    No
ceph03    /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No
ceph03    /dev/sdb  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    No
ceph1     /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No
ceph1     /dev/sdb  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    No

ここからは、CephFSの構築です。
cephfsVolという名前のCephFSを作ります。

root@ceph1:~# cephadm shell -- ceph fs volume create cephfsVol
Inferring fsid 4e517a28-afb6-11ec-a140-6b57f3dd59e4
Inferring config /var/lib/ceph/4e517a28-afb6-11ec-a140-6b57f3dd59e4/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f

一度Cluster StatusがERRORになります。(MDS_ALL_DOWNになりますが、10分ぐらい待ちましょう。待ち時間はそれぞれのディスクの速さによるのかもしれません)
Cluster StatusがHEALTH_OKになったら、下の手順に移りましょう。

adminという名前でキーを取得します。

echo $(sed -n 's/.*key *= *\([^ ]*.*\)/\1/p' < /etc/ceph/ceph.client.admin.keyring) > /etc/ceph/admin.secret
cat /etc/ceph/admin.secret
chmod 600 /etc/ceph/admin.secret

次にマウントするためのディレクトリを作り、マウントします。

mkdir -p /mnt/mycephfs
mount -t ceph ceph1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret

エラーが起きずに何も返ってこなければ接続成功です。

#失敗例
ubuntuの構成を1PCでHDD3台でやったら、マウント時にエラーになりました。

OSDの構成

root@ceph1:~# ./cephadm shell -- ceph orch device ls
Inferring fsid 0c17298c-ac87-11ec-b1ee-31bc59826852
Inferring config /var/lib/ceph/0c17298c-ac87-11ec-b1ee-31bc59826852/mon.ceph1/config
Using recent ceph image quay.io/ceph/ceph@sha256:1b0ceef23cbd6a1af6ba0cbde344ebe6bde4ae183f545c1ded9c7c684239947f
Hostname  Path      Type  Serial                            Size   Health   Ident  Fault  Available
ceph1     /dev/sda  hdd   6002248081e48dce650d598ad6425c43   136G  Unknown  N/A    N/A    Yes
ceph1     /dev/sdb  hdd   600224805e15af604d8afc01f5cbaf8d   136G  Unknown  N/A    N/A    Yes
ceph1     /dev/sdc  hdd   6002248038598ea95ae6f4d90b62641c   136G  Unknown  N/A    N/A    Yes
ceph1     /dev/fd0  hdd                                     4096   Unknown  N/A    N/A    No
mkdir -p /mnt/mycephfs
mount -t ceph ceph1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
mount error: no mds server is up or the cluster is laggy

おそらく、1台のHDD
HDDで構成してしまったため、それぞれが遅すぎた。(SSDとかでやったらできるかもしれません)
マウント前から、Cluster StatusがHEALTH_WARNから30分ぐらい待ってもOKになっていませんでした。

#追記
何度か作り直しもあり、ログのfsidが合っていませんがご容赦ください。

コマンド「ceph orch device ls」を実行しても、ディスクが表示されないことがありました。
cephadmを入れる前に、HDDを追加しとくのが個人的にはポイントです。

動的メモリをOFFにしたのは、私のPCのメモリが少ないためなので、参考程度にお願いいたします。