要件とかとか
https://documentation.suse.com/ja-jp/ses/7/html/ses-all/storage-bp-hwreq.htmlが分かりいいかな
あと
https://access.redhat.com/documentation/ja-jp/red_hat_ceph_storage/5/html/hardware_guide/minimum-hardware-recommendations-for-containerized-ceph_hwとかも
構成品目としては「manager」「dashboard」「metadata」「monitor」「osd(data)」「osd(meta)」「clinet」がある
これら構成要素は1つの筐体に載っても構わないが必要となるリソースを確保していること.
https://documentation.suse.com/ja-jp/ses/7/html/ses-all/storage-bp-hwreq.html#ses-bp-production-clusterから
「7つのオブジェクトストレージノード」
とある. 2PBほどのストレージを作るなら、2000TB/7osd --> 285.7TB/1osd. 1/7 -> 14%. 1OSDノード当たり全体の15%以内にする. もし6台で作ると 1/6 -> 17%となる. 台数を稼ぐメリットは1台停止しても運用継続できる点
そして、HDDの本数は56本以上なので1つのHDD当たりは 2000TB/56 --> 35.7TB となる. っが現実に 35.7TB の容量を持つHDDは存在しないでの
18TB HDDを装着するとして 2000TB/18TB --> 111.1本が必要になる. これを7つのノードに分けるので1ノード当たり 18TB HDD を 111.1/7 --> 15.8slot 必要となる.
もし26TB HDDなら 2000TB/26TB --> 76.9本. 76.9/7 -> 10.99slot/1osd node
纏めると 2PB の容量を持たせるには、16slotを保有するノードを7つ用意して、そのslotには 18TB を埋め尽くす. あるいは 12slot ノードを7つ用意して、26TB HDDで埋める.
っが実際には BlueStore 構成のための block.db 向けのSSDとかmetadata向けのSSDとかの用意も必要なので
12 slotの2Uマシンに 10個ほどのHDD を載せて1ノード当たり 10個x18TB --> 180TB、2000TB/180TB --> 11.1台 --> osdだけで 12台の構成になるのかなと.
block.db 向けのSSDのサイズは
We recommend reserving 4 GB for the WAL device. While the minimal DB size is 64 GB for RBD-only workloads,
the recommended DB size for Object Gateway and CephFS workloads is 2% of the main device capacity (but at least 196 GB).
とあるので 18TB の 2% で 360GB, 10個の18TB HDD向けには 3.6TBが必要で 2TBのSSDを2つでカバーとかとなる. 備えるSSDは電源喪失保護機能付きかつ1DWPDなもの. 所謂エンタープライズ品. 一般のSSDはあまり推奨ではないみたい
1x 2GHz CPU Thread per spinner.
2x 2GHz CPU Thread per SSD.
4x 2GHz CPU Thread per NVMe.
とあるので10個のHDD、2個のSSDなら 1x10 + 2x2 --> 10+4 --> 14 thread なCPUとなる. なら 8core/16threadなcpuでいいのかも.
メモリーについては「Total RAM required = number of OSDs x (1 GB + osd_memory_target) + 16 GB」とある. 既定でosd_memory_targetは4GBらしいので
10x(1+4)+16 -> 66GB となる. osd_memory_targetを 10GB にすると 10x(1+10)+16 --> 126、 16GBなら 10x(1+16)+16 --> 186 となる.
25GbEを2系統. 1つは接続するクライアントへのサービス向け(パブリック ネットワーク)、もう1つはOSD間でのレプリケーション、再バランシング(データを別のOSDsに運ぶ)、リカバリを行う専用通信回線(クラスタ ネットワーク)とする. 10Gbpsでも可
サービス向け、クラスタ向けともにそれぞれボンディングでHUBにつなげる. なのでIEEE802.3ad対応なHUBが必要. 双方1ポートで行うのも、サービス向けのみでも可
https://documentation.suse.com/ja-jp/ses/7/html/ses-all/storage-bp-hwreq.html#network-overview
すっごく軽量でいい. 1台.
4core CPU, OS向け8GBメモリー+管理ノード機能向けの6GBあればいいようで、16GB位で. nicは10Gbpsで可. osdのクラスターネットワークに接続する必要なし.
dashboard機能を入れて、ほぼほぼ日常の管理端末になるので、ストレージはSSDで動作を速めた方がいいのかも. だがこれも128GBあればいい感じかな.
最低3台必要(OSDノードに同居してもいいが、リソースはその分追加で考慮する)
4 GB of RAM.
Processor with four logical cores.
とあるので、OS向けメモリにプラス4GB. 論理コアと書いているので、4threadsあればいいみたい.
system diskとmonitor向けのssd/nvmeがあった方がいいみたい. 全体をssdのrai1dで保全もあり.
osdのクラスターネットワークに接続する必要なしだが、サービス向けにボンディングで接続.
各メタデータサーバドメインに対して4GBのRAM。
ボンディングされた2つのネットワークインタフェース。
2個以上のコアを持つ2.5GHzのCPU。
とある. OS向けメモリ+4GB、で2.5GHz以上のcoreを2つ以上持たせる. これもサービス向けにボンディングで接続. osdのクラスターネットワークに接続する必要なし.
役目 | CPU | MEM | system disk | storage | パブリック向けNIC | クラスター向けNIC | 備考 |
OSD node | 2GHz CPU 1threads/1HDD 2threads/1SSD 4threads/1NVMe | OSDの数 x (1GB + osd_memory_target) + 16GB 既定のosd_memory_target値は4GB | RAID1のHDD/SSD | 1OSD nodeあたり全体の15%未満とする | 25GbE/10GbEでボンディング接続 | 25GbE/10GbEでボンディング接続 | 最低7ノード nis/ldap参加不要 |
manager node | 4core CPU | OS向けメモリ+4GBメモリ | RAID1のHDD/SSD | 25GbE/10GbEでボンディング接続 | 不要 | 2ノード以上でstandby運用可 nis/ldap参加不要 | |
monitor node | 4threads CPU | OS向けメモリ+4GBメモリ | RAID1のHDD/SSD | /var/lib/ceph専用のRAID1 HDD/SSD | 25GbE/10GbEでボンディング接続 | 不要 | 最低3ノード以上の奇数数 nis/ldap参加不要 |
metadata node | 2core 2.5GHz CPU | OS向けメモリ+4GBメモリ | RAID1のHDD/SSD | 25GbE/10GbEでボンディング接続 | 不要 | 2ノード以上でstandby運用可 nis/ldap参加不要 |
OS部分の「RAID1のHDD/SSD」は単に耐性の目的. 別に単一SSDのみでもいいかなと思える. monitorの「/var/lib/ceph」も同じで単一SSDのみでいいかも.
manager/metadataも「/var/lib/ceph」にデータが置かれる. なのでそれぞれで「/var/lib/ceph」向けのSSDを用意した方がいいのかもしれない.
SSDはエンタープライズ仕様で. OSD nodeに当てるSSDは特に.
OSDのmeta. BlueStoreのblock.db, block.wal向けのSSDとして
キングストンなら DC600M シリーズ 2.5 インチ SATA エンタープライズ SSD. 電源喪失保護機能 (PLP) 付で 1.66 DWPD(3年), 1 DWPD (5年)
Seagateなら Nytro 1361/1551/153) SATA SSD Series. 停電時データ保護機能付き. 1 DWPD
サムスンなら PM893 . 電源喪失保護. 1 DWPD (5yrs)
NVMeの場合
キングストンなら DC2000B PCIe 4.0 NVMe M.2 SSD. オンボード電源損失保護 (PLP)付で 0.4 DWPD
SeagateならNytro 4350. 停電時データ保護機能. 1 DWPD
参照先 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/参照
&ref(): File not found: "2021y02m06d_111345202.png" at page "Ceph/memo";
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です.
Bluestore, Filestore
以前のcephバージョンはxfsでフォーマットされたファイルシステムにOSDを展開していましたが、
今はHDD/ssdをそのままrawデバイスとして扱う方法Bluesotreが既定になりました.
Bluesotreだからではないけど、OSDにデータを収めるHDDとメタデータ、キャッシュとして使用するSSD/NVMeを指定することができる.
この時のSSD/NVMeはパーティションを切るか、LVMで切り出してもいいみたい
ASRock Rackのベアボーンキット 2U12L2S-SIENA あるいは 3U16L2S-SIENA
を OSD nodeにして
manager, monitor, metadata の3つは 1U2S-B650 を3つ用意して相乗りすればよろしいのかな. クライアントとの通信はcephネイティブで接続でしょうけど、別途nfs gwや smb gw を用意するなら追加でしょうか.
クラスターネットワーク向けに25Gbps HUBで OSD 7台をボンディング接続なので最低14port必要. fs.comさんの 24port 25Gb なS5850-24B4C か 48port 25Gb なS5850-48B8C
かな. L3なので内部で切ってパブリック向けにも使える.
クライアント計算機が近くにあるならパブリックを25Gbに揃えるのがいいかも.
osd HDDの容量に応じてエンタープライズ仕様の高価なSSDをどこまで用意できるかが大事な点かな.