はじめに
3台のUbuntu22.04で、Cephのクラスタを構築して、NFSでクライアントのUbuntu22.04からマウントしてRead/Writeのパフォーマンスを計測してみたいな。。。
基本的なCephクラスタの構築と、NFSでのマウントをしてみたメモ
前提
- Ubuntu22.04 x 3 でクラスタを構築
- 192.168.120.141 ct1
- 192.168.120.142 ct2
- 192.168.120.143 ct3
- Ubuntu22.04 のクライアントで、NFS経由でマウント
- 192.168.120.144 ct4
- NFSマウントしたディスクのパフォーマンスを計測
手順
Cephのクラスタ構築
以下の手順はすべてのクラスタノードで行います
hostsファイルの設定
クラスタのメンバーをhostsファイルに登録します
192.168.120.141 ct1
192.168.120.142 ct2
192.168.120.143 ct3
192.168.120.144 ct4
Cephのインストール
sudo apt update
sudo apt install -y cephadm
sshdの設定
Ubuntuではデフォルトの設定ではrootによるログインはできないようになっているので許可します。
PermitRootLogin yes
の記述を、/etc/ssh/sshd_config
に追記します。
その後、sudo systemctl restart sshd
で設定を読み込ませます。
#PermitRootLogin prohibit-password
PermitRootLogin yes
クラスタのブートストラップ
以下の手順は、adminノードとなる、ct1 で行います。
$ sudo cephadm bootstrap --mon-ip 192.168.120.141
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit systemd-timesyncd.service is enabled and running
Repeating the final host check...
docker (/usr/bin/docker) is present
systemctl is present
lvcreate is present
Unit systemd-timesyncd.service is enabled and running
Host looks OK
:
:
Ceph Dashboard is now available at:
URL: https://ct1:8443/
User: admin
:
:
Bootstrap complete.
ブートストラップが完了したので、Cephのステータスを確認します。設定が完了していないので、HEALTH_WARNが表示されますが、続けます。
$ sudo cephadm shell -- ceph status
Inferring fsid 27cba866-476b-11ef-8d08-757740329b50
Inferring config /var/lib/ceph/27cba866-476b-11ef-8d08-757740329b50/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
cluster:
id: 27cba866-476b-11ef-8d08-757740329b50
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ct1 (age 3m)
mgr: ct1.kkgdsb(active, since 28s)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
ブートストラップで表示されていたURLへUser/Passwordでログインできることも確認します。
OSDで利用できるデバイスの確認を行います
$ sudo cephadm shell -- ceph orch device ls
Inferring fsid 27cba866-476b-11ef-8d08-757740329b50
Inferring config /var/lib/ceph/27cba866-476b-11ef-8d08-757740329b50/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
ct1 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 10.0G Yes 64s ago
/dev/sdb
が利用可能なので追加します。
$ sudo cephadm shell -- ceph orch daemon add osd ct1:/dev/sdb
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
Created osd(s) 0 on host 'ct1'
追加された内容を確認します。
$ sudo cephadm shell -- ceph osd tree
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.00980 root default
-3 0.00980 host ct1
0 hdd 0.00980 osd.0 up 1.00000 1.00000
クラスタへのホストの追加
/etc/ceph/ceph.pub
の内容を、各ホストのrootユーザ の .ssh/authorized_keys
に追加します。
ct1
でブートストラップを行ったので、すでにrootユーザの .ssh/authorized_keys
には追加されています。ct2
, ct3
で追加を行います。
その後、以下の手順をct1
で行います。
ct2
をクラスタへ追加します。
$ sudo cephadm shell -- ceph orch host add ct2 192.168.120.142
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
Added host 'ct2' with addr '192.168.120.142'
ct3
をクラスタへ追加します。
$ sudo cephadm shell -- ceph orch host add ct3 192.168.120.143
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
Added host 'ct3' with addr '192.168.120.143'
追加されたホストを確認します。
$ sudo cephadm shell -- ceph orch host ls
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
HOST ADDR LABELS STATUS
ct1 192.168.120.141 _admin
ct2 192.168.120.142
ct3 192.168.120.143
3 hosts in cluster
ct1
と同様に、ct2
とct3
で、OSDの追加を行います。クラスタの設定が完了しているので、ct2
とct3
のOSDはct1
から追加可能です。
$ sudo cephadm shell -- ceph orch device ls
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
ct1 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 10.0G No 2m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ct3 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 10.0G Yes 22s ago
$ sudo cephadm shell -- ceph orch daemon add osd ct3:/dev/sdb
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
Created osd(s) 1 on host 'ct3'
:
:
$ sudo cephadm shell -- ceph orch daemon add osd ct3:/dev/sdb
:
:
$ sudo cephadm shell -- ceph orch device ls
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
ct1 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 10.0G No 9m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ct2 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 10.0G No 13s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ct3 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 10.0G No 6m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
$ sudo cephadm shell -- ceph osd tree
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.02939 root default
-3 0.00980 host ct1
0 hdd 0.00980 osd.0 up 1.00000 1.00000
-7 0.00980 host ct2
2 hdd 0.00980 osd.2 up 1.00000 1.00000
-5 0.00980 host ct3
1 hdd 0.00980 osd.1 up 1.00000 1.00000
ステータスで、問題がないことを確認します。
$ sudo cephadm shell -- ceph status
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
cluster:
id: dea53f62-4774-11ef-9306-31f86fedd53e
health: HEALTH_OK
services:
mon: 3 daemons, quorum ct1,ct2,ct3 (age 2m)
mgr: ct1.xnsnuz(active, since 59m), standbys: ct2.edmzbz
osd: 3 osds: 3 up (since 94s), 3 in (since 116s)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 873 MiB used, 29 GiB / 30 GiB avail
pgs: 1 active+clean
CephFSの作成
CephFSを作成して、ステータスを確認します。
$ sudo cephadm shell -- ceph fs volume create ctcephfs
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
$ sudo cephadm shell -- ceph fs status
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
ctcephfs - 0 clients
========
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active ctcephfs.ct3.imtgwz Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs.ctcephfs.meta metadata 96.0k 9432M
cephfs.ctcephfs.data data 0 9432M
STANDBY MDS
ctcephfs.ct2.jxafvw
MDS version: ceph version 17.2.7 (b12291d110049b2f35e32e0de30d70e9a4c060d2) quincy (stable)
NFS-Ganeshaの設定
CephにNFS経由でアクセスする場合、nfs-ganesha
を利用します。以下の手順は ct1
で行います。
NFS-Ganeshaのインストール
$ sudo apt install nfs-ganesha nfs-ganesha-ceph
シークレットキーの取得
$ sudo cephadm shell -- ceph auth get-key client.admin
Inferring fsid dea53f62-4774-11ef-9306-31f86fedd53e
Inferring config /var/lib/ceph/dea53f62-4774-11ef-9306-31f86fedd53e/mon.ct1/config
Using ceph image with id 'ff4519c9e0a2' and tag 'v17' created on 2024-05-21 16:09:44 +0000 UTC
quay.io/ceph/ceph@sha256:d26c11e20773704382946e34f0d3d2c0b8bb0b7b37d9017faa9dc11a0196c7d9
*************** secret ****************
NFS-Ganeshaの設定ファイルを編集
EXPORT
{
Export_ID=1; # 識別子。必要に応じて変更
Path = "/"; # エクスポートするCephFSのパス。通常は"/"
Pseudo = "/cephfs"; # NFSクライアントがマウントするパス。この例では"/cephfs"
Access_Type = RW; # 読み書き可能な設定
Squash = No_Root_Squash; # Root権限のSquash設定。必要に応じて変更
Attr_Expiration_Time = 0; # 属性のキャッシュ時間。0はキャッシュしない設定
FSAL {
Name = CEPH; # CephFSを使用するためのFSALモジュール
User_Id = "admin"; # CephクラスターにアクセスするユーザーID。管理者のユーザー名に変更
Secret_Access_Key = "*************** secret ****************"; # Cephユーザーのシークレットキー。対応するシークレットキーに変更。ceph auth get-keyで取得。
Ceph_Cluster = "ceph"; # Cephクラスター名。通常は"ceph"
}
CLIENT {
Clients = *; # クライアントのIPアドレスまたはネットワーク。例: "192.168.1.0/24"。すべてのクライアントにアクセスを許可する場合は"*"
Access_Type = RW; # クライアントのアクセス権。読み書き可能な設定
}
}
NFS-Ganeshaの再起動
設定を反映させるため、サービスを再起動します。
sudo systemctl restart nfs-ganesha
マウントリストの確認
NFSが公開されているか確認します。
$ showmount -e localhost
Export list for localhost:
/ *
クライアントからのNFSマウント
以下の手順は クライアントである、ct4
上で行います。
NFSクライアントのインストール
$ sudo apt update
$ sudo apt install nfs-common
NFS共有のマウント
NFS-Ganeshaが動作しているサーバーのIPアドレスを使用して、NFS共有をマウントします。
マウントディレクトリの作成
sudo mkdir -p /mnt/cephfs
マウント
$ sudo mount -t nfs 192.168.120.141:/cephfs /mnt/cephfs
確認
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 96M 1.1M 95M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 38G 4.9G 32G 14% /
:
:
192.168.120.141:/cephfs 9.3G 0 9.3G 0% /mnt
CephFSをNFSマウントしたパフォーマンス
作業ディレクトリを作成
$ sudo mkdir -p /mnt/cephfs/ptest
$ cd /mnt/cephfs/ptest
パフォーマンスの計測
dd
で、1GBを書き込みしてみます。この環境では45.8MB/sぐらいでているようです。
$ sudo dd if=/dev/zero of=/mnt/cephfs/ptest/test.dat bs=10M count=100 status=progress
1048576000 bytes (1.0 GB, 1000 MiB) copied, 22 s, 48.5 MB/s
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 22.8911 s, 45.8 MB/s
f3
で、3GBを書き込みして、読込してみます。この環境では、Write 36.14MB/s、Read 104.51MB/s ぐらいでているようです。
$ sudo f3write . --end-at=3
F3 write 8.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Free space: 9.20 GB
Creating file 1.h2w ... OK!
Creating file 2.h2w ... OK!
Creating file 3.h2w ... OK!
Free space: 6.37 GB
Average writing speed: 36.14 MB/s
dev@ubuntu04:/mnt/cephfs/ptest$ sudo f3read .
F3 read 8.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
SECTORS ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/ 0/ 0/ 0
Validating file 2.h2w ... 2097152/ 0/ 0/ 0
Validating file 3.h2w ... 2097152/ 0/ 0/ 0
Data OK: 3.00 GB (6291456 sectors)
Data LOST: 0.00 Byte (0 sectors)
Corrupted: 0.00 Byte (0 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 104.51 MB/s
さいごに
かんたんでしたね