CephFS - cephfs#

Ceph はオープンソースのストレージプラットフォームで、データを RADOS に基づいたストレージクラスタ内に保管します。 非常にスケーラブルで、単一障害点がない分散システムであり非常に信頼性が高いです。

Ceph はブロックストレージ用とファイルシステム用に異なるコンポーネントを提供します。

CephFS は堅牢でフル機能の POSIX 互換の分散ファイルシステムを提供する Ceph のファイルシステムコンポーネントです。 内部的には ファイルを Ceph オブジェクトにマップし、ファイルのメタデータ (例えば、ファイルの所有権、ディレクトリパス、アクセス権限) を別のデータプールに保管します。

用語#

Ceph は保管するデータに オブジェクト という用語を使用します。 データを保存と管理する責任を持つデーモンは Ceph OSD です。 Ceph のストレージは プール に分割されます。これはオブジェクトを保管する論理的なパーティションです。 これらは データプール, ストレージプール, OSD プール とも呼ばれます。

CephFS ファイルシステム は 2 つの OSD ストレージプールから構成され、ひとつは実際のデータ、もうひとつはファイルメタデータに使用されます。

LXD の cephfs ドライバ#

注釈

cephfs ドライバはコンテントタイプ filesystem のカスタムストレージボリュームにのみ使用できます。

他のストレージボリュームには Ceph RBD - ceph ドライバを使用してください。 そのドライバはコンテントタイプ filesystem のカスタムストレージボリュームにも使用できますが、 Ceph RBD イメージを使って実装しています。

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

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

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

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

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

設定オプション#

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

ストレージプール設定#

キー

デフォルト値

説明

cephfs.cluster_name

string

ceph

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

cephfs.fscache

bool

false

カーネルの fscache と cachefilesd を使用するか

cephfs.path

string

/

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

cephfs.user.name

string

admin

使用する Ceph のユーザー

source

string

-

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

volatile.pool.pristine

string

true

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

Tip

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

ストレージボリューム設定#

キー

条件

デフォルト値

説明

security.shifted

bool

custom volume

volume.security.shifted と同じか false

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

security.unmapped

bool

custom volume

volume.security.unmapped と同じか false

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

size

string

appropriate driver

volume.size と同じ

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

snapshots.expiry

string

custom volume

volume.snapshots.expiry と同じ

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

snapshots.pattern

string

custom volume

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

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

snapshots.schedule

string

custom volume

volume.snapshots.schedule と同じ

Cron 表記 (<minute> <hour> <dom> <month> <dow>) かスケジュールエイリアスのカンマ区切りリスト (@hourly, @daily, @midnight, @weekly, @monthly, @annually, @yearly)