CephFS - cephfs¶
Ceph はオープンソースのストレージプラットフォームで、データを RADOS に基づいたストレージクラスタ内に保管します。 非常にスケーラブルで、単一障害点がない分散システムであり非常に信頼性が高いです。
Ceph はブロックストレージ用とファイルシステム用に異なるコンポーネントを提供します。
CephFS は堅牢でフル機能の POSIX 互換の分散ファイルシステムを提供する Ceph のファイルシステムコンポーネントです。 内部的には ファイルを Ceph オブジェクトにマップし、ファイルのメタデータ(たとえば、ファイルの所有権、ディレクトリーパス、アクセス権限)を別のデータプールに保管します。
用語¶
Ceph は保管するデータに オブジェクト という用語を使用します。 データを保存と管理する責任を持つデーモンは Ceph OSD です。 Ceph のストレージは プール に分割されます。これはオブジェクトを保管する論理的なパーティションです。 これらは データプール, ストレージプール, OSD プール とも呼ばれます。
CephFS ファイルシステム は 2 つの OSD ストレージプールから構成され、ひとつは実際のデータ、もうひとつはファイルメタデータに使用されます。
Incus の cephfs ドライバー¶
注釈
cephfs ドライバはコンテントタイプ filesystem のカスタムストレージボリュームにのみ使用できます。
他のストレージボリュームには Ceph ドライバを使用してください。
そのドライバはコンテントタイプ filesystem のカスタムストレージボリュームにも使用できますが、 Ceph RBD イメージを使って実装しています。
使用したい CephFS ファイルシステムを事前に作成しておいて source に指定するか、ファイルシステムと(cephfs.data_pool と cephfs.meta_pool で指定される名前で)データとメタデータ OSD プールを自動的に作成するcephfs.create_missing オプションを指定します。
他のストレージドライバーとは異なり、このドライバーはストレージシステムをセットアップはせず、既に Ceph クラスタをインストール済みであると想定します。
使用したい CephFS ファイルシステムは事前に作成する必要があり source オプションで指定する必要があります。
このドライバーはリモートのストレージを提供するという意味でも他のドライバーとは異なる振る舞いをします。 結果として、内部ネットワークに依存し、ストレージへのアクセスはローカルのストレージより少し遅くなるかもしれません。 一方で、リモートのストレージを使うことはクラスタ構成では大きな利点があります。これはストレージプールを同期する必要なしに、すべてのクラスタメンバーが同じ内容を持つ同じストレージプールにアクセスできるからです。
Incus は OSD ストレージプールに対して完全制御できることを想定します。 このため、 Incus OSD ストレージプール内に Incus が所有しないファイルシステムエンティティは Incus が消してしまうかもしれないので決して置くべきではありません。
Incus の cephfs ドライバーはサーバー側でスナップショットが有効な場合はスナップショットをサポートします。
設定オプション¶
cephfs ドライバーを使うストレージプールとこれらのプール内のストレージボリュームには以下の設定オプションが利用できます。
ストレージプール設定¶
| Key: | cephfs.cluster_name |
| Type: | string |
| Default: |
|
| Scope: | global |
| Key: | cephfs.create_missing |
| Type: | bool |
| Default: |
|
| Scope: | global |
| Key: | cephfs.fscache |
| Type: | bool |
| Default: |
|
| Scope: | global |
| Key: | cephfs.meta_pool |
| Type: | string |
| Default: | |
| Scope: | global |
| Key: | cephfs.osd_pg_num |
| Type: | string |
| Default: | |
| Scope: | global |
| Key: | volatile.pool.pristine |
| Type: | string |
| Default: |
|
| Scope: | global |
Tip
これらの設定に加えて、ストレージボリューム設定のデフォルト値を設定できます。 ストレージボリュームのデフォルト値を変更する を参照してください。
| Key: | initial.gid |
| Type: | int |
| Default: |
|
| Condition: | コンテントタイプ |
| Key: | initial.mode |
| Type: | int |
| Default: |
|
| Condition: | コンテントタイプ |
| Key: | initial.uid |
| Type: | int |
| Default: |
|
| Condition: | コンテントタイプ |
| Key: | security.shifted |
| Type: | bool |
| Default: |
|
| Condition: | カスタムボリューム |
| Key: | security.unmapped |
| Type: | bool |
| Default: |
|
| Condition: | カスタムボリューム |
| Key: | snapshots.expiry |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |
この値は新しく作ったスナップショットの有効期限を算出するのに使います。 スナップショットが作られた日時にこの値が加算され、結果のタイムスタンプがスナップショットの個別の有効期限として保管されます。 この値を変更しても、変更後に作られたスナップショットのみに影響します。既存のスナップショットの有効期限は変更されません。
サポートされる単位はS(秒)、M(分)、H(時)、d(日)、w(週)、m(月) and y(年)です。
Mが分を意味し、mが月であることに注意してください。
それぞれの単位は1度だけ指定でき、月と年は固定の日数ではなくカレンダーの月として計算されます。
| Key: | snapshots.expiry.manual |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |
この値は新しく作ったスナップショットの有効期限を算出するのに使います。 スナップショットが作られた日時にこの値が加算され、結果のタイムスタンプがスナップショットの個別の有効期限として保管されます。 この値を変更しても、変更後に作られたスナップショットのみに影響します。既存のスナップショットの有効期限は変更されません。
サポートされる単位はS(秒)、M(分)、H(時)、d(日)、w(週)、m(月) and y(年)です。
Mが分を意味し、mが月であることに注意してください。
それぞれの単位は1度だけ指定でき、月と年は固定の日数ではなくカレンダーの月として計算されます。
| Key: | snapshots.pattern |
| Type: | string |
| Default: |
|
| Condition: | カスタムボリューム |