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_poolcephfs.meta_pool で指定される名前で)データとメタデータ OSD プールを自動的に作成するcephfs.create_missing オプションを指定します。

他のストレージドライバーとは異なり、このドライバーはストレージシステムをセットアップはせず、既に Ceph クラスタをインストール済みであると想定します。

使用したい CephFS ファイルシステムは事前に作成する必要があり source オプションで指定する必要があります。

このドライバーはリモートのストレージを提供するという意味でも他のドライバーとは異なる振る舞いをします。 結果として、内部ネットワークに依存し、ストレージへのアクセスはローカルのストレージより少し遅くなるかもしれません。 一方で、リモートのストレージを使うことはクラスタ構成では大きな利点があります。これはストレージプールを同期する必要なしに、すべてのクラスタメンバーが同じ内容を持つ同じストレージプールにアクセスできるからです。

Incus は OSD ストレージプールに対して完全制御できることを想定します。 このため、 Incus OSD ストレージプール内に Incus が所有しないファイルシステムエンティティは Incus が消してしまうかもしれないので決して置くべきではありません。

Incus の cephfs ドライバーはサーバー側でスナップショットが有効な場合はスナップショットをサポートします。

設定オプション

cephfs ドライバーを使うストレージプールとこれらのプール内のストレージボリュームには以下の設定オプションが利用できます。

ストレージプール設定

キー

デフォルト値

説明

cephfs.cluster_name

string

ceph

CephFS ファイルシステムを含む Ceph クラスタの名前

cephfs.create_missing

bool

false

データとメタデータ OSD プールが存在しない場合は作成しつつファイルシステムを作成

cephfs.data_pool

string

-

ファイルシステム用に作成するデータ OSD プール名

cephfs.fscache

bool

false

カーネルの fscachecachefilesd を使用するか

cephfs.meta_pool

string

-

ファイルシステム用に作成するメタデータ OSD プール名

cephfs.osd_pg_num

string

-

存在しない OSD プールを作成する際に使用する OSD プールの pg_num

cephfs.path

string

/

CephFS をマウントするベースのパス

cephfs.user.name

string

admin

使用する Ceph のユーザー

source

string

-

使用する既存の CephFS ファイルシステムかファイルシステムパス

volatile.pool.pristine

string

true

作成時に CephFS ファイルシステムが空だったか

Tip

これらの設定に加えて、ストレージボリューム設定のデフォルト値を設定できます。 ストレージボリュームのデフォルト値を変更する を参照してください。

キー

条件

デフォルト値

説明

security.shared

bool

カスタムブロックボリューム

volume.security.shared と同じか false

複数のインスタンスでのボリュームの共有を有効にする

security.shifted

bool

カスタムボリューム

volume.security.shifted と同じか false

ID シフトオーバーレイを有効にする (複数の分離されたインスタンスによるアタッチを許可する)

security.unmapped

bool

カスタムボリューム

volume.security.unmapped と同じか false

ボリュームの ID マッピングを無効にする

size

string

適切なドライバー

volume.size と同じ

ストレージボリュームのサイズ/クォータ

snapshots.expiry

string

カスタムボリューム

volume.snapshots.expiry と同じ

スナップショットをいつ削除するかを制御 (1M 2H 3d 4w 5m 6y のような式を期待)

snapshots.pattern

string

カスタムボリューム

volume.snapshots.pattern と同じか snap%d

スナップショットの名前を表す Pongo2 テンプレート文字列 (スケジュールされたスナップショットと名前無しのスナップショットで使用) [1]

snapshots.schedule

string

カスタムボリューム

volume.snapshots.schedule と同じ

Cron 表記 (<minute> <hour> <dom> <month> <dow>)、またはスケジュールエイリアスのカンマ区切りリスト(@hourly, @daily, @midnight, @weekly, @monthly, @annually, @yearly)、または自動スナップショットを無効にする場合は空文字(デフォルト)