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 つだけ含まれます。 SnapContextSnapContextはスナップショットシーケンス 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インスタンスがあります。