cmoullec
30 April 2020
UbuntuにおけるCephストレージ:概要
Cephは、従来型のベンダーが提供している私有ソフトウェア定義ストレージの替わりとなる、魅力あるオープンソースのソリューションで、その技術の発展のために共働する活発なコミュニティがあります。UbuntuはCephとそのコミュニティを初期から支援してきました。またCanonicalは現在もCeph Foundationの主要メンバーであり、同団体の理事を務めています。
多くのグローバル企業や通信事業者がUbuntu上でCephを実行しています。企業はオープンソースの経済性およびアップストリームの利点を活用しながらブロックストレージとオブジェクトストレージを大規模に組み合わせることができます。
Cephを使う理由
Cephは、データを複数の方法で利用可能という点にその独自性があります。CephFSを介することでPOSIX準拠のファイルシステムとして、RBDドライバを介することでブロックストレージボリュームとして、またはRADOSゲートウェイを使用することでS3とSwiftプロトコルとの互換性を持ったオブジェクトストアとして使用することができます。
Cephのユースケースとして多いのは、Cinder経由でOpenStackクラウドにブロックおよびオブジェクトストアを提供する場合や、Swiftの代替としての使用があります。同様にKubernetesも、物理ボリューム(PV)向けの一般的な方法として、CephをContainer Storage Interface(CSI)プラグインとして採用しています。
スタンドアロンとしてもCephは、クローズドソースの私有ソリューションに代わる魅力的なオープンソースのストレージであり、ライセンス、アップグレード、そしてベンダーロックインによる費用など、企業のストレージ利用に際して発生する一般的な運用コストを削減することができます。
Cephの動作

Cephはデータをプールに格納します。ユーザーや他のサービスはこのプールにアクセスし、ブロック、ファイル、またはオブジェクトのストレージを提供できます。Cephプールはこれらの各機構を下支えしています。複製、アクセス権、その他の内部特性(データの配置、所有権、アクセスなど)は、プール単位で示されます。
クラスター状態の維持はCeph Monitors(MON)が行います。MONは、CRUSHマップを使用してデータの場所を管理します。これらはクォーラムベースの高可用性 (HA)を備えたクラスター内で動作し、データはオブジェクトストレージデバイス(OSD)を介して保存および取得されます。
ストレージデバイスと、実行中のOSDデーモンプロセスとの間には1:1のマッピングが存在します。OSDは、関係するクラスターメンバーホストのCPUとRAMを大きく消費します。このため、Cephクラスターを構成するときには、OSDの数とCPUコアやメモリの数を注意深くバランスさせる必要があります。これは特に、超集約型アーキテクチャ(OpenStackやKubernetesなど)を作成する場合に重要です。
LXDをコンテナハイパーバイザとして使用することで、特定ノードで実行中のプロセスのほとんどに対して、リソース制限を的確に適用できます。LXDは、Ceph MONを分離することにより、CanonicalのCharmed OpenStackディストリビューションで高い経済性を提供すたるために幅広く使われています。Ceph OSDのコンテナ化は現在のところ推奨されていません。
Cephストレージの仕組み
個々のデータプールにアクセスするということは、そのための機構を選択することと同等です。たとえば、1つのプールをブロックボリュームの保存に、別のプールはオブジェクトストアやファイルシステムのストレージバックエンドとして使用することができます。ボリュームに関しては、ボリュームをマウントしようとするホストは、まずRBDカーネルモジュールをロードしたうえで、ローカルボリュームと同様にCephボリュームをマウントする必要があります。
オブジェクトバケットは一般的にはマウントされません。クライアント側のアプリケーションはオーバーレイファイルシステムを使用して「ドライブ」をシミュレートできますが、実際のボリュームがマウントされるわけではありません。その代わりに、RADOSゲートウェイによってオブジェクトバケットへのアクセスが可能になります。RADOSGWは、S3またはSwiftプロトコルを使ってオブジェクトにアクセスするためのREST APIを提供します。ファイルシステムはCephFSを使用して作成およびフォーマットされた後、NFSマウントと同様の方法でエクスポートされ、ローカルネットワークで使用できるようになります。
ボリュームおよびオブジェクトストアのユースケースは、すでに長期間にわたり大規模に運用されています。Cephを使ってボリュームとオブジェクトストアを組み合わせることで、オペレータに多くのメリットがもたらされます。複数のストレージユースケースに対するサポートに加えて、適切なアーキテクチャとスケーリングを行うことで最大の密度を実現できます。
CanonicalによるCephストレージサポート
CanonicalはUbuntu Advantage for Infrastructureの一部としてCephをサポートしており、StandardとAdvancedのSLAでそれぞれ営業時間内と24時間年中無休のサポートを提供しています。サポートでカバーされる各ノードには、最大48TBのCephクラスターのRAWストレージに対するサポートが含まれています。
このカバレッジは、超集約型アーキテクチャのOpenStackおよびKubernetes向けに当社が推奨するリファレンスハードウェアに基づくもので、TB単位の価格が最適化さていると同時に、オンプレミスクラウド内のコンピュートとネットワーク間で最高の性能が維持されます。また、ノード数とTBの比率が当社の推奨と一致せずに制限を超過した場合でも、TB単位での超過分の価格を用意してスケールアウト型ストレージをご利用のお客様に対応しています。
CephはUbuntuのメインリポジトリで入手可能なため、ユーザーはLTSバージョンでは最長5年間の無償セキュリティアップデートを受けられます。標準のサポートサイクル終了後は、Ubuntu Advantage for Infrastructureを通して5年間の追加商用サポートを有償で受けられます。
さまざまな組織がどのようにCanonicalのCephサポートを活用しているか、以下のケーススタディでご覧いただけます。
CanonicalのCephストレージソリューションやCephサポートサービスについての詳細は、ウェブサイトをご覧ください。