このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンス システムのマルチノード ストレージについて説明します。
GDC エアギャップ アプライアンスは、3 台のサーバーと、それぞれに接続された 6 個の不揮発性メモリ エクスプレス(NVme)ディスクで構成されています。
- 2X 1TB NVMe ブートメディア
- 4X 3.84TB NVMe
各ノードの 2 つの 1 TB NVMe ディスクはブートとシステム ワークロード専用ですが、他の 4 つの 3.84 TB NVMe ディスクは信頼性の高いデータ ストレージの一部として使用されます。
GDC は、システム データとユーザーデータを確実に保存するために、ソフトウェア定義ストレージとして Ceph を使用します。Ceph クラスタは、3 台のサーバーすべてでベアメタル レベルでデプロイされ、これらのサーバーに接続された合計 12 個(サーバーあたり 4 個)の 3.84 TB NVMe ドライブを基盤となるストレージとして使用します。

Ceph ストレージ コンポーネント
Ceph モニター
Ceph モニターは、モニターマップ、マネージャー マップ、オブジェクト ストレージ デーモン(OSD)マップなどのクラスタ状態マップを保持します。これらのマップは、Ceph サービスが相互に連携するために必要な重要なクラスタ状態を表します。また、モニターはサービスとクライアント間の認証の管理も担当します。冗長性と高可用性を確保するには、少なくとも 3 つのモニターが必要です。
Ceph マネージャー
Ceph マネージャーは、ランタイム指標と Ceph クラスタの現在の状態(ストレージ使用率、現在のパフォーマンス指標、システム負荷など)を追跡します。通常、高可用性を実現するには 2 つ以上のマネージャーが必要です。GDC 環境はモニターと同じ数の Ceph マネージャーを実行するため、クラスタには 3 つの Ceph マネージャーがデプロイされます。
Ceph オブジェクト ストレージ デーモン(OSD)
オブジェクト ストレージ デーモン(https://docs.ceph.com/en/quincy/glossary/#term-Ceph-OSD)は、データを保存し、データの複製、復元、再調整を処理します。OSD は、他の Ceph OSD のハートビートをチェックすることで、モニタリング情報を Ceph モニターとマネージャーに提供します。通常、冗長性と高可用性を実現するには、少なくとも 3 つの Ceph OSD が必要です。GDC 環境では、物理ドライブごとに 1 つの OSD が割り当てられます。
Ceph Rados ブロック デバイス(RBD)
Ceph ブロック デバイスはシン プロビジョニングされ、サイズ変更可能です。複数の OSD にストライプ化されたデータを保存します。Ceph ブロック デバイスは、スナップショットの作成、レプリケーション、強力な整合性など、Ceph のコア機能を活用します。GDC 環境では、Ceph RBD は直接公開されません。ただし、ユーザー向けの Kubernetes ストレージ(https://kubernetes.io/docs/concepts/storage/)のサポートを担当するブロック ストレージ Ceph CSI ドライバで使用されます。
Ceph RGW
Ceph Rados Gateway は、アプリケーションに Ceph ストレージ クラスタへの RESTful ゲートウェイを提供するオブジェクト ストレージ インターフェースです(https://docs.ceph.com/en/quincy/glossary/#term-Ceph-Object-Storage)。
- S3 互換: Amazon S3 RESTful API の大部分と互換性のあるインターフェースでオブジェクト ストレージ機能を提供します。
- Swift 互換: OpenStack Swift API の大部分と互換性のあるインターフェースでオブジェクト ストレージ機能を提供します。
GDC 環境では、Kubernetes Service Mesh サービスを使用して S3 エンドポイントのみが公開されます。
GDC ストレージの復元性
Ceph ブロック ストレージ コンポーネントとオブジェクト ストレージ コンポーネントは、データ複製係数 3 を使用するように構成されています。入出力(I/O)の処理を続行するには、少なくとも 2 つのレプリカが使用可能である必要があります。ノードレベルの障害発生ドメインが使用されます。つまり、Ceph は 3 つの異なるサーバーでデータを 3 回(3x)複製しようとします。
障害の処理方法の例をいくつか示します。
- 単一ノードの障害では、データ損失は発生せず、ワークロードのストレージ オペレーションにも影響しません。
- 異なるノードで 2 つのディスク障害が発生しても、データ損失は発生しません。ただし、これらのディスクに 3 つのデータ レプリカのうち 2 つがあるワークロードでは、ストレージの可用性に影響する可能性があります。
- 複数のノードの障害、または異なるノードで 2 つ以上のディスク障害が発生すると、データが失われ、ワークロードのストレージの可用性に影響する可能性があります。
GDC ストレージ容量
使用可能な未加工ディスク容量は次のとおりです。
raw_capacity = 3.84TB * 4 (disks_per_node) * 3 (nodes) = 46.08TB
ただし、Ceph クラスタに保存されたデータは 3 回複製されるため、すべてのワークロードで使用可能なストレージ容量は次のようになります。
available_capacity = raw_capacity / 3 (replicas) = 15.36TB
15.36 TB は、ブロック ストレージとオブジェクト ストレージの両方で、システム ワークロードとユーザー ワークロードの間で共有されます。