ストレージドライバ#

LXD はイメージ、インスタンスとカスタムボリュームを保管するのに以下のストレージドライバをサポートします。

ドライバ固有の情報と設定オプションについては対応するページを参照してください。

機能比較#

可能であれば、各システムの高度な機能を使って、LXD は操作を最適化しようとします。

機能

ディレクトリ

Btrfs

LVM

ZFS

Ceph RBD

CephFS

Ceph Object

最適化されたイメージストレージ

no

yes

yes

yes

yes

n/a

n/a

最適化されたインスタンスの作成

no

yes

yes

yes

yes

n/a

n/a

最適化されたスナップショットの作成

no

yes

yes

yes

yes

yes

n/a

最適化されたイメージの転送

no

yes

no

yes

yes

n/a

n/a

最適化されたインスタンスの転送

no

yes

no

yes

yes

n/a

n/a

コピーオンライト

no

yes

yes

yes

yes

yes

n/a

ブロックデバイスベース

no

no

yes

no

yes

no

n/a

インスタントクローン

no

yes

yes

yes

yes

yes

n/a

コンテナ内でストレージドライバの使用

yes

yes

no

no

no

n/a

n/a

古い(最新ではない)スナップショットからのリストア

yes

yes

yes

no

yes

yes

n/a

ストレージクオータ

yes*

yes

yes

yes

yes

yes

yes

lxd init で利用可能

yes

yes

yes

yes

yes

no

no

オブジェクトストレージ

yes

yes

yes

yes

no

no

yes

最適化されたイメージストレージ#

ディレクトリドライバを除く全てのストレージドライバはなんらかの種類の最適化されたイメージ保管フォーマットがあります。 インスタンスの作成をほぼ瞬時に行うため、 LXD はインスタンスの作成時にイメージの tarball を一から解凍するのではなく事前に作成したイメージボリュームを複製します。

全く使われないかもしれないイメージのためにストレージプール上にそのようなボリュームを準備するのを避けるため、ボリュームはオンデマンドで生成されます。 このため、最初のインスタンスの作成は後続のインスタンスより時間がかかります。

最適化されたインスタンスの転送#

Btrfs, ZFS と Ceph RBD は内部で送信/受信の機構を持ち最適化されたボリューム転送を行えます。 LXD はサーバー間でインスタンスとスナップショットを転送するためにこの機構を使用します。

この最適化された転送は同じストレージドライバを使うストレージプール間でボリュームを転送するときのみ利用できます。 異なるドライバや最適化されたインスタンス転送をサポートしないドライバを使うストレージプール間で転送するときは、 LXD は代わりに個々のファイルを rsync を使って転送します。

rsync を使う際は、 ストレージプールプロパティの rsync.bwlimit を 0 でない値に設定することでソケット I/O の量の上限を指定できます。

おすすめのセットアップ#

LXD で使う場合のベストな 2 つのオプションは ZFS と Btrfs です。 このふたつは同様の機能を持ちますが、ZFS のほうがより信頼性が上です。

可能であれば、LXD のストレージプールにディスク全体かパーティションを専用で使用させるべきです。 LXD で loop ベースのストレージを作れますが、プロダクション環境ではおすすめしません。 詳細は データストレージのロケーション を参照してください。

ディレクトリーバックエンドは最後の手段の選択肢と捉えるべきです。 LXD の全てのメインの機能をサポートしますが、インスタントコピーやスナップショットを実行できないため遅く非効率です。 そのため、絶えずインスタンスのストレージ全体をコピーすることになります。

セキュリティの考慮#

現在、 Linux Kernel はブロックベースのファイルシステム(例: ext4)が別のオプションでマウント済みの場合マウントオプションは黙って無視し適用しません。 これは専用ディスクデバイスが異なるストレージプール間で異なるマウントオプションで共有されている時、2つめのマウントは期待しているマウントオプションにならないかもしれないことを意味します。 これは例えば1つめのストレージプールが acl サポートを提供する想定で、2つめのストレージプールが acl サポートを提供しない想定であるようなときにセキュリティ上の問題になります。

この理由により、現状はストレージプールごとに専用のディスクデバイスを持つか、同じ専用ディスクを共有する全てのストレージプールで確実に同じマウントオプションを使うことを推奨します。