ストレージプール、ボリューム、バケットについて¶
Incus はデータを(イメージやインスタンスのように)コンテントタイプに応じて別のストレージボリュームに分けてストレージプールに保管します。 ストレージプールはデータを保管するためのディスクであり、ストレージボリュームは特定の目的に使用されるディスク上の別々のパーティションであると考えることも出来るでしょう。
ストレージボリュームに加えて、ストレージバケットというものもあります。これは Amazon S3 プロトコルを使用します。 ストレージボリュームと同様に、ストレージバケットはストレージプールの一部です。
ストレージプール¶
初期化時に、 Incus は最初のストレージプールを作成するためのプロンプトを表示します。 必要であれば、後からストレージプールを追加できます(ストレージプールを作成する 参照)。
それぞれのストレージプールはストレージドライバーを使用します。 次のストレージドライバーが利用できます。
さらなる情報については以下の how-to ガイドを参照してください:
データストレージのロケーション¶
Incus のデータをどこに保管するかは設定と選択したストレージドライバーによって異なります。 使用されるストレージドライバーによって、 Incus はファイルシステムをホストと共有することもできますし、データを別にしておくこともできます。
ストレージロケーション |
Directory |
Btrfs |
LVM (すべて) |
ZFS |
Ceph (すべて) |
---|---|---|---|---|---|
ホストと共有 |
✓ |
✓ |
- |
✓ |
- |
専用のディスク/パーティション |
- |
✓ |
✓ |
✓ |
- |
ループディスク |
- |
✓ |
✓ |
✓ |
- |
リモートストレージ |
- |
- |
✓ |
- |
✓ |
ホストと共有¶
ファイルシステムをホストと共有するのは Incus を実行する上で通常もっとも空間効率が良い方法です。 ほとんどの場合、もっとも管理が楽な方法でもあります。
この選択肢は dir
ドライバー、 btrfs
ドライバー(ホストが Btrfs で Incus に専用のサブボリュームを使用する場合)、 zfs
ドライバー(ホストが ZFS で zpool 上で Incus に専用のデータセットを使用する場合)でサポートされます。
専用のディスクかパーティションか¶
メインのディスク上で Incus に空のパーティションを使用するか、ホストから完全に独立したストレージを保管する完全な専用のディスクを使用します。
この選択肢は btrfs
ドライバー、 lvm
ドライバー、 zfs
ドライバーでサポートされます。
ループディスク¶
Incus ではメインドライブ上にループファイルを作成して選択したストレージドライバーでそれを使用できます。 この方法はディスクやパーティションを使用する方法と機能的には似ていますが、大きな 1 つのファイルをメインドライブとして使用する点が異なります。 これはそれぞれの書き込みがストレージドライバーとメインドライブのファイルシステムを通過することを意味し、パフォーマンスは低くなります。
ループファイルは /var/lib/incus/disks/
に作られます。
ループファイルは通常縮小できません。 最大で指定した限界まで拡大しますが、インスタンスやイメージを削除してもファイルが縮小することはありません。 しかしサイズを増やすことはできます。 ストレージプールをリサイズする を参照してください。
リモートストレージ¶
ceph
、cephfs
、cephobject
ドライバーはデータを完全に独立な Ceph ストレージクラスタに保管します。これは別途セットアップが必要です。
lvmcluster
ドライバーは共有のブロックデバイスが全てのクラスターメンバーに共有されていてlvmlockd
を事前にセットアップしておく必要があります。
デフォルトストレージプール¶
Incus にはデフォルトストレージプールという概念はありません。
ストレージボリュームを作成する時は、使用するストレージプールを指定する必要があります。
インスタンスの作成時に Incus が自動的にストレージボリュームを作成する際は、インスタンスに設定されたストレージプールを使用します。 この設定は以下のいずれかの方法でできます。
直接インスタンスに指定:
incus launch <image> <instance_name> --storage <storage_pool>
プロファイル経由:
incus profile device add <profile_name> root disk path=/ pool=<storage_pool>
とincus launch <image> <instance_name> --profile <profile_name>
デフォルトプロファイル経由
プロファイルでは使用するストレージプールはルートディスクデバイスのプールで定義されます:
root:
type: disk
path: /
pool: default
デフォルトプロファイルではこのプールは (訳注: Incus の) 初期化時に作られたストレージプールに設定されています。
ストレージボリューム¶
インスタンスを作成する際、 Incus は必要なストレージボリュームを自動的に作成します。 追加のストレージボリュームを作成することもできます。
さらなる情報については以下の how-to ガイドを参照してください:
ストレージボリュームタイプ¶
ストレージボリュームは以下の種別があります:
container
/virtual-machine
Incus はインスタンスを起動する際にこのどちらかのストレージボリュームを自動的に作成します。 それはインスタンスのルートディスクとして使用され、インスタンスが削除される際に破棄されます。
このストレージボリュームはインスタンス起動時に使用されたプロファイル(あるいはプロファイルが指定されない場合はデフォルトプロファイル)に指定されたストレージプール内に作成されます。 起動のコマンドに
--storage
フラグを渡してストレージプールを明示的に指定することもできます。image
Incus はイメージから 1 つあるいは複数のインスタンスを起動するためにイメージを解凍する際にこれらのストレージボリュームを自動的に作成します。 インスタンスが作成された後は削除できます。 手動で削除しない場合、インスタンス起動の 10 日後に自動的に削除されます。
イメージのストレージボリュームはインスタンスのストレージボリュームと同じストレージプール内に作成されます。それは最適化されたイメージのストレージをサポートする ストレージドライバー を使用するストレージプールだけです。
custom
インスタンスから分離して保管したいデータを保持する 1 つあるいは複数のカスタムストレージボリュームを追加できます。 カスタムストレージボリュームはインスタンス間で共有でき、インスタンスが削除されても残ります。
バックアップやイメージを保管するためにカスタムストレージボリュームを使用することもできます。
カスタムボリュームの作成時は使用するストレージプールを指定する必要があります。
コンテントタイプ¶
それぞれのストレージボリュームは以下のコンテントタイプのどれかを使用します:
filesystem
このコンテントタイプはコンテナとコンテナイメージに使用されます。 これはカスタムストレージボリュームのデフォルトのコンテントタイプです。
コンテントタイプが
filesystem
のカスタムストレージボリュームはコンテナと仮想マシンの両方にアタッチでき、インスタンス間で共有できます。block
このコンテントタイプは仮想マシンと仮想マシンイメージで使用されます。 コンテントタイプ
block
のカスタムストレージボリュームは--type=block
フラグを使って作成できます。コンテントタイプが
block
のカスタムストレージボリュームは仮想マシンのみにアタッチできます。 これらはインスタンス間では共有すべきではありません。同時アクセスはデータ破壊を引き起こすからです。iso
このコンテントタイプはカスタム ISO ボリュームで使用されます。 コンテントタイプ
iso
のカスタムストレージボリュームはincus storage volume import
コマンドを使って ISO ファイルをインポートすることでのみ作成できます。コンテントタイプ
iso
のカスタムストレージボリュームは仮想マシンにのみアタッチできます。 これらは読み取り専用なので同時に複数の仮想マシンにアタッチできます。
ストレージバケット¶
ストレージバケットは S3 プロトコルを使用してオブジェクトストレージの機能を提供します。
これはカスタムストレージボリュームと同様の方法で使用されます。 しかし、ストレージボリュームとは異なり、ストレージバケットはインスタンスに紐付けされません。 代わりに、アプリケーションはストレージバケットにその URL を使って直接アクセスできます。
それぞれのストレージバケットには 1 つまたは複数のアクセスキーが割り当てられ、アプリケーションはアクセスの際にこれを使う必要があります。
ストレージバケットはローカルのストレージ(dir
, btrfs
, lvm
あるいは zfs
プールの場合)あるいはリモートストレージ(cephobject
プールの場合)上に配置できます。
ローカルストレージドライバーでストレージバケットを有効にし、 S3 プロトコル経由でアプリケーションがバケットにアクセスできるようにするには、core.storage_buckets_address
サーバー設定を調整する必要があります。
さらなる情報については以下の how-to ガイドを参照してください: