Ceph Distributed File System¶
On 12月 12, 2021 by adminCeph は、優れたパフォーマンス、信頼性、および拡張性を提供するために設計された分散ネットワークファイルシステムです。
基本的な機能は次のとおりです。
- POSIXセマンティクス
- 1ノードから数千ノードまでシームレスに拡張可能
- 高い可用性と信頼性を実現。 単一障害点がない。
- ストレージノード間でのデータのNウェイレプリケーション
- ノード障害からの迅速な回復
- ノードの追加/削除時のデータの自動リバランス
- 簡単な導入。 ほとんどの FS コンポーネントはユーザースペースのデーモンです
また、
- 柔軟なスナップショット(任意のディレクトリで)
- 再帰的な会計(ファイル、ディレクトリ、入れ子になっているもの)。 バイト)
GFS、OCFS2、GPFSなどのクラスタファイルシステムは、共有ブロックデバイスへのすべてのクライアントによる対称的なアクセスに依存していますが、Cephはデータとメタデータ管理をLustreと同様に独立したサーバクラスタに分離しています。 しかし、Lustreとは異なり、メタデータとストレージのノードは、完全にユーザ空間のデーモンとして実行されます。 ファイルデータは、作業負荷を分散し、高いスループットを実現するために、大きなチャンクでストレージノード間にストライピングされます。
メタデータ サーバーは、ファイル ネームスペースの上に、大規模で一貫性のある分散型インメモリー キャッシュを効果的に形成し、非常にスケーラブルで、ワークロード変更に対応してメタデータを動的に再分配し、任意の (ビザンツ以外の) ノードの障害に対応することが可能です。 メタデータサーバーは、メタデータストレージにやや型破りなアプローチを採用し、一般的なワークロードのパフォーマンスを大幅に向上させます。 特に、リンクが1つしかないinodeは間接記憶として埋め込まれ、1回のI/O操作でdentryとinodeのディレクトリ全体をキャッシュにロードできるようになっています。
このシステムは、数台のノードから数百台のクラスタに拡張する際に、管理者がデータセットを固定ボリュームに切り分けたり、サーバー間でデータを移行する面倒なプロセスを経ずに、データの自動リバランス/マイグレーションを行います。ファイルシステムが一杯になると、新しいノードを簡単に追加でき、「ただ動く」ようになります。
Cephには柔軟なスナップショット機構があり、ユーザーはシステム内の任意のサブディレクトリ(とそのネストしたコンテンツ)にスナップショットを作成することが可能です。 スナップショットの作成と削除は、「mkdir.snap/foo」および「rmdir .snap/foo」のように簡単です。
Cephはまた、入れ子になったファイルおよびバイトに対するディレクトリの再帰的会計もいくつか提供します。 つまり、システム内の任意のディレクトリで’getfattr -d foo’を実行すると、ネストされた通常ファイルとサブディレクトリの合計数、およびすべてのネストされたファイルサイズの合計が表示されます。 最後に、Cephはシステム内の任意のディレクトリにクォータを設定することもできます。クォータは、ディレクトリ階層内のそのポイントに格納されるバイト数またはファイル数を制限することができます。 クォータは、拡張属性 ‘ceph.quota.max_files’ および ‘ceph.quota.max_bytes’ を使用して設定できます(例:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
現在のクォータ実装の限界は、制限に達したときにファイルシステムをマウントするクライアントがライターを停止する協力に依存することです。
マウントオプション¶
ip=A.B.C.D クライアントがローカルにバインドする IP および/またはポートを指定します。 IPが指定されていない場合、クライアントのIPアドレスは、モニタへの接続元アドレスから判断されます。 wsize=X 最大書き込みサイズをバイトで指定します。 デフォルト:64 MB rsize=X 最大読み取りサイズをバイト単位で指定します。 rasize=X 最大リードアヘッドサイズをバイト単位で指定します。 mount_timeout=X Cephファイルシステムが応答しない場合のマウントのタイムアウト値(秒単位)を指定します。 デフォルトは 60 秒です。 caps_max=X 保持する最大 Caps 数を指定します。 キャップ数が制限を超えると、未使用のキャップが解放されます。 デフォルトは0 (制限なし) rbytes ディレクトリでstat()が呼び出されたとき、st_sizeに「rbytes」、そのディレクトリの下にネストされたすべてのファイルの合計のファイルサイズを設定します。 nocrc データ書き込みの CRC32C 計算を無効にします。 設定すると、ストレージ・ノードは、データ・ペイロードのデータ破損を検出するために TCP のエラー補正に依存する必要があります。 dcache クライアントがディレクトリのコンテンツ全体をキャッシュしている場合に、dcache コンテンツを使用して負 のルックアップと readdir を実行します。 (これは、正しさを変更しません。クライアントは、リースまたはケイパビリティが有効であることを保証する場合にのみ、キャッシュされたメタデータを使用します。) nodcache 上記のようにdcacheを使用しません。 noquotadf rootdirectory quota を使用する代わりに、statfs でファイルシステム全体の使用量を報告します。 nocopyfrom RADOS ‘copy-from’ 操作を使用してリモートオブジェクトコピーを実行しないようにします。 現在、このオプションは copy_file_range でのみ使用されており、このオプションを使用すると、デフォルトの VFS 実装に戻ります。 recover_session=<no|clean>クライアントがブロックリストに載っている場合に、自動再接続モードを設定します。 利用可能なモードは “no “および “clean “です。 デフォルトは「no」です。
- no: クライアントがブロックリストに登録されたことを検出した場合、再接続を試みないようにします。
- clean: ブロックリストに登録されたことを検出すると、クライアントは自動的にcephクラスタに再接続します。 再接続中、クライアントはダーティなデータ/メタデータを削除し、ページキャッシュと書き込み可能なファイルハンドルを無効にします。再接続後、データシートがファイルロックを追跡できなくなるため、ファイルロックが古くなります。 inodeに古いファイルロックがある場合、アプリケーションがすべての古いファイルロックを解放するまで、そのinodeでの読み取り/書き込みは許可されません。
コメントを残す