Slide 1

Slide 1 text

Cephの話 おのかちお

Slide 2

Slide 2 text

ぼく ● おのかちお ● 今日のSELinux問題を作った人です ○ 前半ドタバタしてごめん… :pray: ● インフラチームでストレージ周りやってました

Slide 3

Slide 3 text

注意 このCephは、監視基盤のCeph(Rook)とは別のクラスタです

Slide 4

Slide 4 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 5

Slide 5 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 6

Slide 6 text

以前のストレージ構成

Slide 7

Slide 7 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 8

Slide 8 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 9

Slide 9 text

Cephとは ● 分散ストレージ ● レプリカの話 ● SPOFが居ない ● OSDの自動認識 ● リバランス ● S3/NFS/CephFS/RBDのインターフェイス

Slide 10

Slide 10 text

Cephとは - 分散ストレージ ● データが分散される ○ (機材があれば)いくらでもスケールできる ● データが複製される ○ どこかで壊れるor無くなってもデータが消えくい ● 単一障害点をなくしやすい ○ コントロールプレーンもデータプレーンも

Slide 11

Slide 11 text

Cephとは - レプリカの話 ● レプリカ = 重複度 ● レプリカサイズ3ならデータが3重に保存される ○ ただし使用ストレージ容量も3倍 ○ 書き込み実質速度は3倍 ○ (今回はWritebackなので実質1倍)

Slide 12

Slide 12 text

Cephとは - SPOFが居ない ● Cephは、Single Point Of Failure(単一障害点)ができにくい仕組 みになっています。 ○ データプレーン: レプリカ ○ コントロールプレーン: CRUSHアルゴリズム

Slide 13

Slide 13 text

Cephとは - 物理ディスクの自動認識 ● Cephを構成するサーバーに新しいディスクが挿入される ↓ ● 全自動で初期化・Cephへ追加

Slide 14

Slide 14 text

Cephとは - リバランス ● データが増える or 物理ディスクが増える ↓ ● 再配置・細分化

Slide 15

Slide 15 text

Cephとは - インターフェイス ● NFS ● S3 ● CephFS ● RBD (Rados Block Device)

Slide 16

Slide 16 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 17

Slide 17 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 18

Slide 18 text

今回のCephの構成と容量の話 ● コントロールプレーン: 6ノード ● データプレーン: 6ノード ○ SSD x6 ○ HDD x3 × 4 × 2 × 2

Slide 19

Slide 19 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 20

Slide 20 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 21

Slide 21 text

ブロックストレージをCephに置く話 ● Cephの速度計測会 ● humstackがブロックストレージをCephRBDに置く ● ところで トラコンのVMの数について

Slide 22

Slide 22 text

Cephの速度計測会

Slide 23

Slide 23 text

Cephの速度計測会

Slide 24

Slide 24 text

Cephの速度計測会

Slide 25

Slide 25 text

Cephの速度計測会

Slide 26

Slide 26 text

Cephの速度計測会 (BS展開時)

Slide 27

Slide 27 text

Cephの速度計測会 (VM起動時)

Slide 28

Slide 28 text

Cephの速度計測会 (Ceph pool)

Slide 29

Slide 29 text

humstackがBSをCeph RBDに置く ● humstack(仮想化基盤) がCephにブロックストレージを置ける ように改良 by t-inagaki ↓ ● 結果的に一つのVM作成・起動が数分程度に! ○ コンピュートノード間のコピーが要らなくなった ○ ただしレプリカ=1なので、分散されているだけで耐障害性 の旨みはない

Slide 30

Slide 30 text

ところで トラコンのVMの数について ● 総VM数: 20~30台程度 ● チーム数: 22 ● 1VM 5GBぐらい 20 〜 30 * 22 *5 = 2 〜 3TB → レプリカサイズを3にすると、9TB超になる → SSD 6TBを超えてしまう

Slide 31

Slide 31 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 32

Slide 32 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 33

Slide 33 text

Cephのsnapshotの話 ● Ceph RBDには、既存のオブジェクトをベースに別のオブジェ クトを展開する機能がある ● レイヤーとして、ベースと差分を分けられる ● VMの差分のみ保存され、各ストレージの共通部分は一つのブ ロックストレージに! ● 展開は爆速・実際に書き込むまで使用容量ゼロ ● イメージとしてはDockerのoverlayfs

Slide 34

Slide 34 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 35

Slide 35 text

話すこと ● 以前のストレージ構成 ● Cephとは ● 今回のCephの構成と容量の話 ● ブロックストレージをCephに置く話 ● Cephのsnapshotの話 ● 起こったトラブルの話

Slide 36

Slide 36 text

起こったトラブルの話 ● ioDriveが認識されない ● 時刻の精度を高めないといけない話 ● OSDがメモリを食ってwireguardサーバーが落ちた話 ● Dockerとpodmanが何故か混在した話 ● 本番の日の朝にPGの数がオートスケールされることがわかった ので先にPGの数を増やした話

Slide 37

Slide 37 text

起こったトラブルの話 ● ioDriveが認識されない ● SSDのドライバがカスタムモジュール ○ LV metadより先に読み込まれると、CephがLVMを認識 できない ○ LV metadを無効化し、イベント的にdevice mapperを 認識するようにした

Slide 38

Slide 38 text

起こったトラブルの話 ● 時刻の精度を高めないといけない話 ● Cephは時刻の精度が0.05s以下でないとWARNを出す ○ 最初はNTPdを立てて運用 ■ spofになるので止めたい ○ NICTのNTPを使ったら精度があがった ■ ありがとうNICT!

Slide 39

Slide 39 text

起こったトラブルの話 ● Dockerとpodmanが何故か混在した話 ○ おそらくインストールミスでDockerとpodmanがノード で混在 ○ podman消す && Dockerインストール ○ → OSDとmonが自動で再展開されない ○ →手動でreapplyして解決

Slide 40

Slide 40 text

起こったトラブルの話 ● 本番の日の朝にPGの数がオートスケールされることがわかった ので先にPGの数を増やした話 ○ Cephのper OSD PGが2^nを超えるとPGサイズを細分化し てリバランス ○ →本番中に起こったらSlow OPsになりそう ○ →今朝気づいた運営委員が事前に細分化

Slide 41

Slide 41 text

起こったトラブルの話 ● ioDriveが認識されない ● 時刻の精度を高めないといけない話 ● OSDがメモリを食ってwireguardサーバーが落ちた話 ● Dockerとpodmanが何故か混在した話 ● 本番の日の朝にPGの数がオートスケールされることがわかった ので先にPGの数を増やした話

Slide 42

Slide 42 text

ご静聴ありがとうございました 質問などあればZoomで話しかけてください! もしくはTwitter (@onokatio_) まで