CephFS OSDs
https://ceph.readthedocs.io/en/latest/start/intro/によれば
Ceph OSDs: An Object Storage Daemon (Ceph OSD, ceph-osd) stores data, handles data replication, recovery, rebalancing,
and provides some monitoring information to Ceph Monitors and Managers by checking other Ceph OSD Daemons for a heartbeat.
At least three Ceph OSDs are normally required for redundancy and high availability.
(deepL先生訳)
Ceph OSD: オブジェクトストレージデーモン(Ceph OSD、ceph-osd)は、データを格納し、データのレプリケーション、リカバリ、リバランシングを処理します、
他のCeph OSDデーモンのハートビートをチェックすることで、Cephモニタとマネージャに監視情報を提供します。
通常、冗長性と高可用性のために少なくとも3つのCeph OSDが必要です。
他のOSDホストと連携してデータの保存、レプリケーション、リカバリ、リバランスを行う.
こちらも「At least 3 Ceph OSDs are normally required for redundancy and high availability.」とあり運用時は3台以上必要.
このOSDですが、下記の2つの意味合いがあるようで、ドキュメントを読む際は軽く注意かなと
OSD:Object Storage Daemo
OSD:Object Storage Device
参照先 https://docs.ceph.com/en/latest/start/hardware-recommendations/#minimum-hardware-recommendations,
https://documentation.suse.com/ja-jp/ses/7.1/single-html/ses-deployment/#storage-bp-hwreq,
https://access.redhat.com/documentation/ja-jp/red_hat_ceph_storage/7/html-single/installation_guide/index
OSDホストとしては
lvmなblockdbなら拡張できる https://heiterbiswolkig.blogs.nde.ag/2018/04/08/migrating-bluestores-block-db/
cephFSでblockdbは70GBでいいという意見 https://forum.proxmox.com/threads/ceph-osd-block-db-on-nvme-sizing-recommendations-and-usage.133475/
とある既設cephサイトで実際の状態を調べた.「ceph daemon osd.X perf dump」で値は得られて、22TBで192GBのblockdbで50GBほどの消費であった
溢れると本体のdeviceを使用しますが、「spillover」とかのメッセージが表示される. 溢れた際はhttps://cloud.garr.it/support/kb/ceph/ceph-extend-rocksdb-partition/参照
12slotなマシンでRAIDカードですべてを繋ぎOSの2つはRAID1構成であとは個別デバイスとして認識させる(RAIDカードではなくHBAの方が推奨みたい. その際のsystem diskはsoftware-raid1かな)
SSDは2つ. 一つは左側4つのHDD、もう一つは右側4つのHDDを担当.
BlueStoreなOSDは1TB:10GB比率でDBデバイス(block.db)を用意するので、18TBなら1つのHDDで180GBのSSD容量が必要. 4つのHDDなので4*180=720GB.
SSDは容量いっぱい使わない方がいいので 1TBか1.2TBがあれば十分かと.
ここでは検証目的なのでOSD3ノードで、1ノードに1OSDです.
以前はxfsでフォーマットされたファイルシステムにOSDを展開していましたが、
今はHDD/ssdをそのままrawデバイスとして扱う方法Bluesotreが既定になりました.
Bluesotreだからではないけど、OSDにデータを収めるHDDとメタデータ、キャッシュとして使用するSSD/NVMeを指定することができる.
この時のSSD/NVMeはパーティションを切るか、LVMで切り出してもいいみたい
まずmonitor の 「/etc/ceph/ceph.conf」と「/var/lib/ceph/bootstrap-osd/ceph.keyring」 を ceph-osd2 へ運びます
ceph-osd1はmonitor機能を共有しているので下記ではceph-osd2を例として挙げます
[root@ceph-mgr ~]# scp /etc/ceph/ceph.conf root@ceph-osd2:/etc/ceph/ceph.conf
[root@ceph-mgr ~]# scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@ceph-osd2:/var/lib/ceph/bootstrap-osd/ceph.keyring
まずはOSDとして供出するデバイスの確認します. ここでは /dev/sdb を供出します.
[root@ceph-osd2 ~]# cat /proc/partitions
major minor #blocks name
8 0 16777216 sda
8 1 51200 sda1
8 2 1048576 sda2
8 3 15675392 sda3
8 16 16777216 sdb
11 0 9234624 sr0
[root@ceph-osd2 ~]#
なので
[root@ceph-osd2 ~]# ceph-volume lvm create --bluestor --data /dev/sdb
:
[root@ceph-osd2 ~]#
(確認)
[root@ceph-osd2 ~]# ceph-volume lvm list
====== osd.0 =======
[block] /dev/ceph-4875323d-5d53-4c87-ab97-6849d842492e/osd-block-e62973cb-4915-47ef-8873-c28b7a57a023
block device /dev/ceph-4875323d-5d53-4c87-ab97-6849d842492e/osd-block-e62973cb-4915-47ef-8873-c28b7a57a023
block uuid QNrA03-lmEn-SC1L-X8Ro-mdcp-fu2G-0YHfvS
cephx lockbox secret
cluster fsid c2d06c20-9197-40b4-a8c4-1a0604936ce8
cluster name ceph
crush device class
encrypted 0
osd fsid e62973cb-4915-47ef-8873-c28b7a57a023
osd id 0
osdspec affinity
type block
vdo 0
devices /dev/sdb
[root@ceph-osd2 ~]#
同様の操作を osd2, osd3 にも行う.
もし「ceph-volume lvm create: error: GPT headers found, they must be removed on: /dev/sdb」とでたら
sgdisk --zap-all /dev/sdb
とする
https://documentation.suse.com/ja-jp/ses/7.1/single-html/ses-deployment/#rec-waldb-sizeから
WALデバイスのサイズは 4GB
DBデバイスはRBD向けには最小で64GB(メインディスクの1-2%)、Object Gateway/CephFS向けならメインデバイス容量の2%-4%ほど(196GB以上)
CephFS向けで18TB HDDなら DBデバイスに 360GB - 720GB ほど必要
WALデバイスはDBデバイスよりも高速なデバイスとしているようで、WALデバイスを nvme SSD 、DBデバイスを sata SSDにするのがいいのかも.
WALデバイスとDBデバイスを1つのsata SSDで賄うなら上限6パーティションほどに. もしnvme SSDなら 上限12パーティションが望ましいみたい.
system diskとしてnvmeが500GBあって、2つの960GB SSD、そしてメインデバイスのHDDが 18TBで10個あるなら
nvmeの400GBをsystem diskとして、残りをWAL向け(nvme0n1p6)
(wal)
vgcreate ceph-wal-0 /dev/nvme0n1p6
lvcreate -L 10GB -n wal-0 ceph-wal-0
lvcreate -L 10GB -n wal-1 ceph-wal-0
:
lvcreate -L 10GB -n wal-8 ceph-wal-0
lvcreate -L 10GB -n wal-9 ceph-wal-0
(db)
vgcreate ceph-db-0 /dev/sda
lvcreate -l 20%VG -n db-0 ceph-db-0
:
lvcreate -l 20%VG -n db-4 ceph-db-0
vgcreate ceph-db-1 /dev/sdb
lvcreate -l 20%VG -n db-0 ceph-db-1
:
lvcreate -l 20%VG -n db-4 ceph-db-1
(hdd)
vgcreate ceph-block-0 /dev/sdc (1個目のHDD)
vgcreate ceph-block-1 /dev/sdd (2個目のHDD)
:
vgcreate ceph-block-8 /dev/sdk (9個目のHDD)
vgcreate ceph-block-9 /dev/sdl (10個目のHDD)
lvcreate -l 100%FREE -n block-0 ceph-block-0
lvcreate -l 100%FREE -n block-1 ceph-block-1
:
lvcreate -l 100%FREE -n block-9 ceph-block-9
ceph-volume lvm create --bluestore --data ceph-block-0/block-0 --block.db ceph-db-0/db-0 --block.wal ceph-wal-0/wal-0
ceph-volume lvm create --bluestore --data ceph-block-1/block-1 --block.db ceph-db-0/db-1 --block.wal ceph-wal-0/wal-1
ceph-volume lvm create --bluestore --data ceph-block-2/block-2 --block.db ceph-db-0/db-2 --block.wal ceph-wal-0/wal-2
:
っと手の込んだBluestoreも作れるみたい.
sataSSDのみならsataSSDにwalの分を含めることができるようで、その際は「--block.wal」を指定しない
ceph-osd1、ceph-osd2、ceph-osd3をOSDとして組み込んで「ceph -s」で確認すると下記のようになる.
[root@ceph-mgr ~]# ceph -s
cluster:
id: c2d06c20-9197-40b4-a8c4-1a0604936ce8
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-mgr,ceph-mds,ceph-osd1 (age 5h)
mgr: ceph-mgr(active, since 14h)
osd: 3 osds: 3 up (since 3h), 3 in (since 3h)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 93 MiB used, 48 GiB / 48 GiB avail
pgs: 1 active+clean
[root@ceph-mgr ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.04678 root default
-5 0.01559 host ceph-osd1
1 ssd 0.01559 osd.1 up 1.00000 1.00000
-3 0.01559 host ceph-osd2
0 ssd 0.01559 osd.0 up 1.00000 1.00000
-7 0.01559 host ceph-osd3
2 ssd 0.01559 osd.2 up 1.00000 1.00000
[root@ceph-mgr ~]#
https://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-osds/
https://docs.ceph.com/en/latest/rados/operations/add-or-rm-osds/#replacing-an-osd
とか
https://access.redhat.com/documentation/ja-jp/red_hat_ceph_storage/4/html/operations_guide/replacing-an-osd-drive-while-retaining-the-osd-id_ops