4.9. Ceph File System スナップショットに関する留意事項
ストレージ管理者として、Ceph File System (CephFS) スナップショットを管理するためのデータ構造、システムコンポーネント、および留意事項を理解できます。
スナップショットは、作成時にファイルシステムのイミュータブルなビューを作成します。スナップショットはディレクトリー内に作成でき、そのディレクトリー下のファイルシステムにあるすべてのデータがカバーされます。
4.9.1. Ceph File System のスナップショットメタデータの保存 リンクのコピーリンクがクリップボードにコピーされました!
スナップショットディレクトリーエントリーとその inode のストレージは、スナップショットの時点でそれらがあったディレクトリーの一部としてインラインで実行されます。すべてのディレクトリーエントリーには、有効な最初と最後の snapid
が含まれています。
4.9.2. Ceph File System スナップショットのライトバック リンクのコピーリンクがクリップボードにコピーされました!
Ceph スナップショットは、どの操作がスナップショットに適用されるかを決定し、スナップショットデータとメタデータを OSD および MDS クラスターにフラッシュバックするために、クライアントに依存します。スナップショットはファイル階層のサブツリーに適用され、スナップショットの作成はいつでも発生する可能性があるため、スナップショットのライトバックの処理は複雑なプロセスです。
同じスナップショットセットに属するファイル階層の一部は、単一の SnapRealm
によって参照されます。各スナップショットは、ディレクトリーの下にネストされたサブディレクトリーに適用され、ファイル階層を複数のレルムに分割します。レルムに含まれるすべてのファイルは、同じスナップショットのセットを共有します。
Ceph Metadata Server (MDS) は、各 inode の機能 (caps) を発行して、inode のメタデータおよびファイルデータへのクライアントアクセスを制御します。スナップショットの作成中に、クライアントは、その時点でのファイルの状態を記述する機能を備えた inode 上のダーティメタデータを取得します。クライアントが ClientSnap
メッセージを受信すると、ローカルの SnapRealm
と特定の inode へのリンクが更新され、inode の CapSnap
が生成されます。機能のライトバックは CapSnap
をフラッシュし、ダーティーデータが存在する場合は、CapSnap
を使用して、スナップショットが OSD にフラッシュされるまで新規データの書き込みをブロックします。
MDS は、それらをフラッシュするためのルーチンプロセスの一部として、スナップショットを表すディレクトリーエントリーを生成します。MDS は、ライトバックプロセスがそれらをフラッシュするまで、メモリーとジャーナルに固定された未処理の CapSnap
データを含むディレクトリーエントリーを保持します。
4.9.3. Ceph File System のスナップショットとハードリンク リンクのコピーリンクがクリップボードにコピーされました!
Ceph は、複数のハードリンクを持つ inode をダミーのグローバル SnapRealm
に移動します。このダミー SnapRealm
は、ファイルシステム内のすべてのスナップショットに対応します。新しいスナップショットは inode のデータを保持します。この保存されたデータは、inode の任意のリンケージのスナップショットをカバーします。
4.9.4. Ceph File System のスナップショットの作成 リンクのコピーリンクがクリップボードにコピーされました!
スナップショットを更新するプロセスは、スナップショットを削除するプロセスと似ています。
親 SnapRealm
から inode を削除すると、SnapRealm
がまだ存在しない場合、Ceph は名前が変更された inode の新しい SnapRealm
を生成します。Ceph は、元の親 SnapRealm
で有効なスナップショットの ID を、新しい SnapRealm
の past_parent_snaps
データ構造に保存してから、スナップショットの作成と同様のプロセスに従います。
4.9.5. Ceph File System のスナップショットと複数のファイルシステム リンクのコピーリンクがクリップボードにコピーされました!
スナップショットは、複数のファイルシステムでは正常に機能しないことが知られています。
名前空間を持つ単一の Ceph プールを共有する複数のファイルシステムがある場合、それらのスナップショットは競合し、1 つのスナップショットを削除すると、同じ Ceph プールを共有する他のスナップショットのファイルデータが失われます。
4.9.6. Ceph File System の\スナップショットのデータ構造 リンクのコピーリンクがクリップボードにコピーされました!
Ceph File System (CephFS) は、以下のスナップショットデータ構造を使用してデータを効率的に保存します。
SnapRealm
-
SnapRealm
は、ファイル階層の新しいポイントでスナップショットを作成するとき、またはスナップショットされた inode を親スナップショットの外に移動するときに作成されます。単一のSnapRealm
は、同じスナップショットのセットに属するファイル階層の一部を表します。SnapRealm
には、スナップショットの一部であるsr_t_srnode
とinodes_with_caps
が含まれます。 sr_t
-
sr_t
はディスク上のスナップショットメタデータです。これには、シーケンスカウンター、タイムスタンプ、および関連するスナップショット ID とpast_parent_snaps
の一覧が含まれます。 SnapServer
-
SnapServer
は、スナップショット ID の割り当て、スナップショットの削除、およびファイルシステムの累積スナップショット一覧の維持を管理します。ファイルシステムには、SnapServer
のインスタンスが 1 つだけ含まれます。 SnapContext
SnapContext
はスナップショットシーケンス ID (snapid) と、オブジェクトに現在定義されているすべてのスナップショット ID で設定されます。書き込み操作が発生すると、Ceph クライアントはSnapContext
を提供し、オブジェクトに存在するスナップショットのセットを指定します。SnapContext
一覧を生成するには、Ceph はSnapRealm
に関連付けられた snapid と、past_parent_snaps
データ構造の有効な snapid を組み合わせます。ファイルデータは RADOS の自己管理のスナップショットを使用して保存されます。自己管理されたスナップショットでは、クライアントは書き込みごとに現在の
SnapContext
を提供する必要があります。クライアントは、Ceph OSD にファイルデータを書き込む際に、正しいSnapContext
を慎重に使用します。SnapClient
がキャッシュした有効なスナップショットは、古い snapid を除外します。SnapClient
-
SnapClient
はSnapServer
と通信し、累積スナップショットをローカルでキャッシュするために使用されます。各メタデータサーバー (MDS) のランクには、SnapClient
インスタンスがあります。