Cephクラスター構築ガイド
Ceph クラスタ構築や分散ストレージを自分の環境で確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Ceph RBD は、Ceph クラスター上にブロックデバイス形式の image を作るための機能です。仮想マシンのディスク、コンテナ基盤の永続ボリューム、専用アプリケーションのブロックストレージなど、ファイル共有ではなくブロックデバイスとして扱いたい場面で使います。
この記事では、Ubuntu 26.04 で Ceph RBD を使う前提として、RBD 用 pool、pool application、rbd pool init、クライアント keyring、image 作成、確認コマンドを順に扱います。Ceph クライアント共通設定や CephFS とは役割を分けて考えます。
前提条件
- Ceph monitor / manager / OSD が稼働していること。
- Ceph 管理コマンドと
rbdコマンドを実行できる管理ノードで作業すること。 ceph -sでクラスター状態を確認できること。- RBD 用 pool 名、クライアント名、作成する image 名と容量を事前に決めておくこと。
ceph -s
rbd --version
ceph osd treeこの記事で使う名前
以下の例では、RBD 用 pool を rbd_data、クライアント名を client.rbd01、image 名を vm-disk01、容量を 10 GiB とします。実環境では、用途やテナントごとに pool と権限を分けます。
RBD_POOL=rbd_data
CLIENT_NAME=client.rbd01
IMAGE_NAME=vm-disk01
IMAGE_SIZE_MIB=10240
KEYRING_DIR=/srv/ceph/work/keyringsRBD 用 pool を作成する
RBD image は pool の中に作成します。まず既存 pool を確認し、名前が重複していないことを確認してから RBD 用 pool を作成します。
ceph osd pool ls --format jsonceph osd pool create rbd_data 32 32pool のレプリカ数は、クラスターの台数と障害許容方針に合わせます。RBD は仮想マシンやアプリケーションのディスクとして使われることが多いため、性能だけでなく復旧時の影響範囲も考えて設定します。
ceph osd pool set rbd_data size 3RBD application を有効化する
作成した pool が RBD 用であることを Ceph に明示します。その後、rbd pool init で RBD pool として初期化します。
ceph osd pool application enable rbd_data rbd --yes-i-really-mean-it
rbd pool init rbd_dataRBD クライアント keyring を作成する
RBD を利用するクライアントには、対象 pool に対する権限を持つ keyring が必要です。以下は rbd_data pool に限定したクライアント keyring の例です。キー値は実環境で発行した値に置き換えます。
sudo mkdir -p /srv/ceph/work/keyrings
sudo tee /srv/ceph/work/keyrings/ceph.client.rbd01.keyring >/dev/null <<'EOF'
[client.rbd01]
key = AQBexampleGeneratedKey==
caps mon = "allow r"
caps mgr = "allow r"
caps osd = "allow rw pool=rbd_data"
EOF
sudo chmod 0600 /srv/ceph/work/keyrings/ceph.client.rbd01.keyringceph auth import -i /srv/ceph/work/keyrings/ceph.client.rbd01.keyring
ceph auth get client.rbd01RBD image を作成する
RBD pool の初期化とクライアント認証を確認したら、image を作成します。--size は MiB 単位で指定します。
rbd ls --pool rbd_data --format json
rbd create vm-disk01 --size 10240 --pool rbd_data作成した image を確認する
image の一覧、詳細、使用量を確認します。仮想マシンや Kubernetes などの上位レイヤーに渡す前に、pool 名、image 名、容量、feature の状態を確認しておきます。
rbd ls --pool rbd_data
rbd info rbd_data/vm-disk01
rbd du --pool rbd_dataクライアントから利用する時の考え方
RBD image はブロックデバイスとして扱うため、利用側では map、ファイルシステム作成、マウント、アンマウント、unmap の順序を明確にします。複数ノードから同時に通常のファイルシステムとして書き込む用途には向きません。その場合は CephFS を検討します。
sudo rbd map rbd_data/vm-disk01 --id rbd01 --keyring /etc/ceph/main/ceph.client.rbd01.keyring
lsblk
sudo rbd unmap /dev/rbd/rbd_data/vm-disk01RBD と CephFS の使い分け
- RBD は、仮想マシンのディスクや単一ホストから使うブロックデバイスに向いています。
- CephFS は、複数ホストから同じファイルツリーを共有したい場合に向いています。
- RBD をファイル共有のように扱う場合は、上位のファイルシステムや排他制御の設計が必要です。
- CephFS をディスク image の置き場にする場合は、性能と障害時の切り分けが RBD と異なります。
運用時に確認する項目
- RBD pool の用途が他の pool と混ざっていないこと。
rbd pool initが実行済みであること。- クライアント keyring の権限が対象 pool に限定されていること。
- image の容量と名前が利用側の設計と一致していること。
- map / unmap の手順と、上位サービスの停止順序が決まっていること。
まとめ
Ceph RBD は、Ceph 上にブロックデバイスを提供するための基本機能です。Ubuntu 26.04 で扱う場合は、pool、application、pool init、client auth、image 作成の順に確認すると、仮想マシンやコンテナ基盤へ渡す前の状態を切り分けやすくなります。ファイル共有が目的の場合は、RBD ではなく CephFS 側の設計を先に検討します。

