📘

CephのOSDの種類

2020/12/26に公開

本記事はRookと仲間たち、クラウドネイティブなストレージの Advent Calendar 2020 7日目の記事を後からこっそり埋めたものです。

本記事では山ほどあるCephのOSDの種類のうちの主だったものを紹介します。

Cephとはなんぞや、OSDとはなんぞや

CephやOSDについて既に概要を知ってる人はこの節を飛ばしてください。

Cephはオープンソースの分散ストレージソフトウェアです。CephはユーザのデータをCephが管理するノードのディスク上に保存します。より正確にいうとディスク上にOSDというデータ構造を作って、その上に保存します。その上でCephはすべてのOSDを束ねて一つのストレージプールを作る、というしくみになっています。

OSDの種類

ひとくちに「ブロックデバイス上にOSDを作成する」といっても、OSDにはたくさんの種類があります。本節ではどういう種類があるのかについて述べます。

データストア

OSDはデータを配置するためのインタフェースを提供しています。このインタフェースを実装するデータ構造をデータストアと呼びます。データストアには様々な種類がありますが、主なものは2つあります。一つはファイルシステム上に作るFileStoreで、もう一つはブロックデバイス上に作るBlueStoreです。

昔はFileStoreだけがあったのですが、OSDの実装をするためにファイルシステムが足かせになって十分な速度が出なかったという問題がありました。この問題を解決するために生まれたのがBlueStoreです。今ではBlueStoreがデフォルトになっていますし、今からあえてFileStoreを使う理由はないでしょう。

BlueStoreのモード

BlueStoreにはモードという概念があります。ほとんどの場合はlvm modeかraw modeという2つのモードを使います。lvm modeはブロックデバイス上にCephがLVMのLogical Volumeを作り、その上にOSDを作ります。昔からある方法なのですが、LVMを使っていることに起因する様々な制約があります。

たとえばLVM modeは物理的なディスクに対応するブロックデバイス上、その上に作られたパーティション上、およびmpathデバイス上にしか作れません。しかも最近になってパーティション上にOSDを作成できなくなるような修正がされました。これについては既にパーティション上にOSDを作っているユーザからクレームが入って、現在議論中です。

lvm modeの欠点を克服するために生まれたのがraw modeです。raw modeはブロックデバイス上に直接OSDを作ります。これによってOSD管理が単純になりました。raw modeの場合、事実上すべてのブロックデバイス上にOSDを作れます。ただOSDを管理するコマンドのほうが追い付いていないために実際にはOSDを作れるデバイスはいくつかのものに制限されています。例えばramdisk上にOSDは作れません。

raw mode OSDはlvm mode OSDよりも筋がいいので、今後はraw mode OSDが種類になっていくと考えられます。

おわりに

本記事で述べたもの以外にも、OSDにはさまざまなバリエーションがあります。たとえばCephによるデータの暗号化の有無、データとメタデータ、WALを同じディスク上の置くか、あるいは別のディスクに置くか…などなどです。

本記事で紹介したもの本記事で書いたことをベースにみなさまが適切な種類のOSDを選択できることを願います。

Discussion