タイプ: disk

注釈

disk デバイスタイプはコンテナと VM の両方でサポートされます。 コンテナと VM の両方でホットプラグをサポートします。

ディスクデバイスはインスタンスに追加のストレージを提供します。

コンテナにとっては、それらはインスタンス内の実質的なマウントポイントです(ホスト上の既存のファイルまたはディレクトリーのバインドマウントとしてか、あるいは、ソースがブロックデバイスの場合は通常のマウントのマウントポイント)。 仮想マシンは 9p または virtiofs(使用可能な場合)を通してホスト側のマウントまたはディレクトリーを共有するか、あるいはブロックベースのディスクに対する VirtIO ディスクとして共有します。

警告

デバイス名はデバイス用に生成されるシリアル値に影響します。デバイス名がnvmevirtio-blkでは14文字、virtio-scsiでは30文字を超えると、Incusは生成されたシリアル値がサポートされる長さ制限に収まるようにデバイスの値をハッシュ値に変換します。デバイスの名前自体は変更されずそのままです。

ディスクデバイスの種類

さまざまなソースからディスクデバイスを作成できます。
source オプションに指定する値によって、追加されるディスクデバイスのタイプが決まります:

ストレージボリューム

最も一般的なタイプのディスクデバイスはストレージボリュームです。
ストレージボリュームを追加するには、デバイスのsourceとしてその名前を指定します:

incus config device add <instance_name> <device_name> disk pool=<pool_name> source=<volume_name> [path=<path_in_instance>]

path はファイルシステムボリュームには必要ですが、ブロックボリュームには必要ありません。

また、incus storage volume attach コマンドを使用してインスタンスにカスタムストレージボリュームをアタッチするすることもできます。
どちらのコマンドも、ストレージボリュームをディスクデバイスとして追加するための同じメカニズムを使用します。

source=<volume_name>/<sub_path>というシンタクスを使ってカスタムボリュームのサブパスをインスタンスにアタッチできます。 サブパスがカスタムボリューム内に存在しない場合、デバイスの起動時に自動的に作成されます。その際サブパスのオーナーとパーミッションはinitial.XYZの設定キーが使われます。

ホスト上のパス

ホストのパス(ファイルシステムまたはブロックデバイスのいずれか)をインスタンスと共有するには、ディスクデバイスとして追加し、sourceとしてホストパスを指定します:

incus config device add <instance_name> <device_name> disk source=<path_on_host> [path=<path_in_instance>]

path はファイルシステムボリュームには必要ですが、ブロックデバイスには必要ありません。

Ceph RBD

Incus は、インスタンスの内部ファイルシステムを管理するために Ceph を使用できますが、既存の外部管理 Ceph RBD をインスタンスに使用したい場合は、次のコマンドで追加できます:

incus config device add <instance_name> <device_name> disk source=ceph:<pool_name>/<volume_name> ceph.user_name=<user_name> ceph.cluster_name=<cluster_name> [path=<path_in_instance>]

path はファイルシステムボリュームには必要ですが、ブロックデバイスには必要ありません。

CephFS

Incus はインスタンスで内部のファイルシステムの管理に Ceph を使えますが、既存の外部で管理されている Ceph ファイルシステムをインスタンスで使用したい場合は、以下のコマンドで追加できます:

incus config device add <instance_name> <device_name> disk source=cephfs:<fs_name>/<path> ceph.user_name=<user_name> ceph.cluster_name=<cluster_name> path=<path_in_instance>
ISO file

仮想マシンには ISO ファイルをディスクデバイスとして追加できます。 ISO ファイルは VM 内部の ROM デバイスとして追加されます。

このソースタイプは VM でのみ利用可能です。

ISO ファイルを追加するには、そのファイルパスをsourceとして指定します:

incus config device add <instance_name> <device_name> disk source=<file_path_on_host>
VM cloud-init

cloud-init.vendor-datacloud-init.user-dataからcloud-init設定の ISO イメージを生成し、仮想マシンにアタッチできます。

このソースタイプは VM でのみ利用可能です。

そのようなデバイスを追加するには、以下のコマンドを使用します:

incus config device add <instance_name> <device_name> disk source=cloud-init:config
VM agent

エージェントの実行ファイル、設定ファイル、インストールスクリプトを含む agent 設定の ISO を生成できます。 これは 9p が非サポートでエージェントをロードする別の方法が必要な環境で必要です。

このソースタイプは VM でのみ利用可能です。

そのようなデバイスを追加するには、以下のコマンドを使用します:

incus config device add <instance_name> <device_name> disk source=agent:config
Tmpfs

tmpfs:のソースを使うことでディスクデバイスをメモリ内のファイルシステムでバックアップできます。

incus config device add <instance_name> <device_name> disk source=tmpfs: path=<path_in_instance> [size=<size>] [initial.uid=<uid>] [initial.gid=<gid>] [initial.mode=<mode>]

sourcepathの両方が必須です。 これによりインスタンス内にtmpfsのマウントを作成します。オプションでサイズ、所有者、パーミッションのプロパティをサポートします。

overlayfsの挙動を使ったTmpfs

上記と同じtmpfsの挙動をoverlayfsのセマンティクスと組み合わせて使うには、ソースにtmpfs-overlay:を使います。

incus config device add <instance_name> <device_name> disk source=tmpfs-overlay: path=<path_in_instance> [size=<size>] [initial.uid=<uid>] [initial.gid=<gid>] [initial.mode=<mode>]

sourcepathの両方が必須です。 さらに、ターゲットのpathはコンテナ内部にし事前に存在する必要があります。 これによりoverlayfsの処理を備えたメモリ内の一時的なファイルシステムを提供します。

インスタンスルートディスクデバイスの初期ボリューム設定

初期ボリューム設定は新しいインスタンスのルートディスクデバイスに個別の設定をできるようにします。 これらの設定は initial. という接頭辞がつき、インスタンスが作成されたときのみ適用されます。 この方法はデフォルトのストレージプールの設定とは独立に、個別の設定を持つインスタンスを作れるようにします。

たとえば、既存のプロファイルに zfs.block_mode の初期ボリューム設定を追加し、このプロファイルを使ってインスタンスを作成する都度適用できます:

incus profile device set <profile_name> <device_name> initial.zfs.block_mode=true

インスタンス作成時に初期設定を直接指定もできます。たとえば:

incus init <image> <instance_name> --device <device_name>,initial.zfs.block_mode=true

カスタムボリュームオプションに初期ボリューム設定を使ったりボリュームのサイズを設定はできないことに注意してください。

initial.uidinitial.gidinitial.mode

initial.uidinitial.gidinitial.modeは3つの異なるシナリオで使われます:

  • rootディスクデバイスでは、これらはストレージドライバーに渡され、インスタンスのrootボリュームの作成時にオーナーとパーミッションを設定するのに使われます(ドライバーがサポートする場合)。

  • tmpfs:tmpfs-overlay:ディスクデバイスでは、tmpfsマウント時のuid=gid=mode=マウントオプションに変換されます。

  • sourceがサブパスを含む(例:source=myvol/sub/path)カスタムボリュームディスクでは、デバイスの起動時に自動的に作成されるサブディレクトリーのオーナーとパーミションとして使われます。

すべての場合で、initial.uidinitial.gidのデフォルトは0で、initial.modeのデフォルトは0711(8進数)です。

デバイスオプション

disk デバイスには以下のデバイスオプションがあります:

attached

VMのみ: ディスクが取り付けられているか取り出されているか

Key: attached
Type:

bool

Default:

true

Required:

no

boot.priority

VM のブート優先度(高いほうが先にブート)

Key: boot.priority
Type:

integer

Required:

no

ceph.cluster_name

Ceph クラスタのクラスタ名(Ceph か CephFS のソースには必須)

Key: ceph.cluster_name
Type:

string

Default:

ceph

Required:

no

ceph.user_name

Ceph クラスタのユーザー名(Ceph か CephFS のソースには必須)

Key: ceph.user_name
Type:

string

Default:

admin

Required:

no

dependent

ディスクがインスタンスに依存しているかを指定する

Key: dependent
Type:

bool

Default:

false

Required:

no

initial.*

デフォルトストレージプール設定と独立して個別の設定を許可する

Key: initial.*
Type:

string

Required:

no

rootディスクデバイスでは、インスタンスのrootボリュームを作成する際にストレージプールのデフォルトのボリューム設定を上書きするのに使われます。

カスタムボリュームでは、initial.uidinitial.gidinitial.modeのみが指定でき、カスタムボリューム内部でサブディレクトリーを自動で作成する際に使われます(sourceが存在しないサブパスを含む場合)。

また、initial.uidinitial.gidinitial.modesourcetmpfs:tmpfs-overlay:の場合にファイルシステムのオーナーとパーミッションを設定するのにも使われます。

io.bus

VMのみ: デバイスのバスを上書きする

Key: io.bus
Type:

string

Default:

ブロックデバイスではvirtio-scsi、ファイルシステムではauto

Required:

no

これはディスクデバイスをどのバスにアタッチするかを制御します。

ブロックデバイス(ディスク)では、これは以下のいずれかです:

  • nvme

  • virtio-blk

  • virtio-scsi (デフォルト)

  • usb

ファイルシステム(共有ディレクトリまたはカスタムボリューム)では、これは以下のいずれかです:

  • 9p

  • auto (デフォルト) (利用可能ならvirtiofs、そうでなければ9p

  • virtiofs

9pはホットプラグに非対応で、virtiofsはライブマイグレーションに非対応です。 autoは可能なら(migration.statefultrueに設定され、ホストがvirtiofsdをサポートする場合)virtiofsを使おうとし、それ以外は9pにフォールバックします。

io.cache

VMのみ: デバイスのキャッシュモードを上書きする

Key: io.cache
Type:

string

Default:

none

Required:

no

これはディスクデバイスをどのバスにアタッチするかを制御します。

ブロックデバイス(ディスク)では、これは以下のいずれかです:

  • none (デフォルト)

  • writeback

  • unsafe

ファイルシステム(共有ディレクトリまたはカスタムボリューム)では、これは以下のいずれかです:

  • none (デフォルト)

  • metadata

  • unsafe

limits.max

読み取りと書き込み両方のbyte/sかIOPSによるI/O制限(limits.readlimits.writeの両方を設定するのと同じ)

Key: limits.max
Type:

string

Required:

no

limits.read

byte/s(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)もしくはIOPS(あとにiopsと付けなければなりません)で指定する読み込みのI/O制限値 - I/O 制限値の設定 も参照

Key: limits.read
Type:

string

Required:

no

limits.write

byte/s(さまざまな単位が使用可能、ストレージ、メモリとネットワーク制限の単位参照)もしくはIOPS(あとにiopsと付けなければなりません)で指定する書き込みのI/O制限値 - I/O 制限値の設定 も参照

Key: limits.write
Type:

string

Required:

no

path

ディスクをマウントするインスタンス内のパス(ファイルシステムディスクデバイスのみ)

Key: path
Type:

string

Required:

yes

これはインスタンス内部でディスクがマウントされるパスを制御します。

コンテナでは、このオプションはファイルシステムディスクデバイスとそれらの中の複数のパスと単一ファイルのマウントのみをサポートします。

VMでは、このオプションはファイルシステムディスクデバイスとそれらの中の複数のパスのマウントのみをサポートします。単一ファイルのマウントはサポートされません。

pool

ディスクデバイスが属するストレージプール(Incus が管理するストレージボリュームにのみ適用可能)

Key: pool
Type:

string

Required:

no

propagation

バインドマウントをインスタンスとホストでどのように共有するかを管理する(private (デフォルト)、sharedslaveunbindablersharedrslaverunbindablerprivate のいずれか。完全な説明は Linux Kernel の文書 shared subtree 参照)

Key: propagation
Type:

string

Required:

no

raw.mount.options

ファイルシステム固有のマウントオプション

Key: raw.mount.options
Type:

string

Required:

no

readonly

マウントを読み込み専用とするかどうかを制御

Key: readonly
Type:

bool

Default:

false

Required:

no

recursive

ソースパスを再帰的にマウントするかどうかを制御

Key: recursive
Type:

bool

Default:

false

Required:

no

required

ソースが存在しないときに失敗とするかどうかを制御

Key: required
Type:

bool

Default:

true

Required:

no

shift

ソースの UID/GID をインスタンスにマッチするように変換させるためにオーバーレイの shift を設定するか(コンテナのみ)

Key: shift
Type:

bool

Default:

false

Required:

no

size

byte(さまざまな単位が使用可能、 ストレージ、メモリとネットワーク制限の単位 参照)で指定するディスクサイズ。rootfs/) でのみサポートされます

Key: size
Type:

string

Required:

no

size.state

size と同じですが、仮想マシン内のランタイム状態を保存するために使われるファイルシステムボリュームに適用されます

Key: size.state
Type:

string

Required:

no

source

ファイルシステムまたはブロックデバイスのソース(詳細はディスクデバイスの種類参照)

Key: source
Type:

string

Required:

yes

wwn

VMのみ: ディスクのWorld Wide Nameを設定する(virtio-scsiバスでのみサポート)

Key: wwn
Type:

bool

Default:

``

Required:

no