类型:disk

注意

disk 设备类型同时支持容器和虚拟机。它支持容器和虚拟机的热插拔。

磁盘设备为实例提供额外的存储空间。

对于容器,它们本质上是实例内的挂载点(作为主机上现有文件或目录的绑定挂载,或者如果源是块设备,则是常规挂载)。虚拟机通过 9pvirtiofs(如果可用)共享主机端挂载或目录,或者作为块设备的 VirtIO 磁盘。

磁盘设备类型

您可以从不同的来源创建磁盘设备。您为 source 选项指定的值指定了要添加的磁盘设备类型

存储卷

最常见的磁盘设备类型是存储卷。要添加存储卷,请将它的名称指定为设备的 source

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

文件系统卷需要路径,但块卷不需要。

或者,您可以使用 incus storage volume attach 命令 将卷附加到实例。这两个命令使用相同的机制将存储卷添加为磁盘设备。

可以使用 source=<volume_name>/<sub_path> 语法将自定义卷的子路径附加到实例。

主机上的路径

您可以通过将主机上的路径(文件系统或块设备)添加为具有主机路径作为 source 的磁盘设备,来将它共享给您的实例

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

文件系统需要路径,但块设备不需要。

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>]

文件系统需要路径,但块设备不需要。

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 文件

您可以将 ISO 文件添加为虚拟机的磁盘设备。它在虚拟机内部添加为 ROM 设备。

此源类型仅适用于虚拟机。

要添加 ISO 文件,请将它的文件路径指定为 source

incus config device add <instance_name> <device_name> disk source=<file_path_on_host>
虚拟机 cloud-init

您可以从 cloud-init.vendor-datacloud-init.user-data 配置键生成 cloud-init 配置 ISO,并将其附加到虚拟机。然后,运行在虚拟机内部的 cloud-init 会在启动时检测到驱动器,并应用配置。

此源类型仅适用于虚拟机。

要添加此类设备,请使用以下命令

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

您可以生成一个包含代理二进制文件、配置文件和安装脚本的 agent 配置 ISO。在不支持 9p 且需要其他方法来加载代理的环境中,这将是必需的。

此源类型仅适用于虚拟机。

要添加此类设备,请使用以下命令

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

实例根磁盘设备的初始卷配置

初始卷配置允许为新实例的根磁盘设备设置特定配置。这些设置以 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

请注意,您不能将初始卷配置与自定义卷选项一起使用,也不能用于设置卷的大小。

设备选项

disk 设备具有以下设备选项

boot.priority

虚拟机启动优先级(数值越大,越先启动)

boot.priority
类型

整数

必需

ceph.cluster_name

Ceph 集群的集群名称(Ceph 或 CephFS 源必需)

ceph.cluster_name
类型

字符串

默认值

ceph

必需

ceph.user_name

Ceph 集群的用户名(Ceph 或 CephFS 源必需)

ceph.user_name
类型

字符串

默认值

admin

必需

initial.*

实例根磁盘设备的初始卷配置

initial.*
类型

字符串

必需

io.bus

仅限虚拟机:覆盖设备的总线

io.bus
类型

字符串

默认值

对于块设备(磁盘),为 virtio-scsi,对于文件系统,为 auto

必需

这控制磁盘设备应连接到的总线。

对于块设备(磁盘),它可以是以下之一:

  • nvme

  • virtio-blk

  • virtio-scsi(默认)

对于文件系统(共享目录或自定义卷),它可以是以下之一:

  • 9p

  • auto(默认)(virtiofs + 9p,如果缺少 virtiofsd 则仅为 9p)

  • virtiofs

io.cache

仅限虚拟机:覆盖设备的缓存模式

io.cache
类型

字符串

默认值

none

必需

这控制磁盘设备应连接到的总线。

对于块设备(磁盘),它可以是以下之一:

  • none(默认)

  • writeback

  • unsafe

对于文件系统(共享目录或自定义卷),它可以是以下之一:

  • none(默认)

  • metadata

  • unsafe

limits.max

读写 I/O 限制,单位为字节/秒或 IOPS(与分别设置 limits.readlimits.write 相同)

limits.max
类型

字符串

必需

limits.read

I/O 限制,单位为字节/秒(支持各种后缀,参见 存储、内存和网络限制的单位)或 IOPS(必须以 iops 为后缀) - 另请参见 配置 I/O 限制

limits.read
类型

字符串

必需

limits.write

I/O 限制,单位为字节/秒(支持各种后缀,参见 存储、内存和网络限制的单位)或 IOPS(必须以 iops 为后缀) - 另请参见 配置 I/O 限制

limits.write
类型

字符串

必需

path

磁盘在实例中挂载的路径(仅限容器)

path
类型

字符串

必需

pool

磁盘设备所属的存储池(仅适用于 Incus 管理的存储卷)

pool
类型

字符串

必需

propagation

控制绑定挂载如何在实例和主机之间共享(可以是 private,默认值,或 sharedslaveunbindablersharedrslaverunbindablerprivate;有关完整说明,请参见 Linux 内核的 共享子树 文档)

propagation
类型

字符串

必需

raw.mount.options

特定于文件系统的挂载选项

raw.mount.options
类型

字符串

必需

readonly

控制是否将挂载设置为只读

readonly
类型

布尔值

默认值

false

必需

recursive

控制是否递归挂载源路径

recursive
类型

布尔值

默认值

false

必需

required

控制如果源不存在是否会失败

required
类型

布尔值

默认值

true

必需

shift

设置一个偏移叠加层以将源 UID/GID 转换为与实例匹配(仅限容器)

shift
类型

布尔值

默认值

false

必需

size

磁盘大小,单位为字节(支持各种后缀,参见 存储、内存和网络限制的单位) - 仅支持 rootfs (/)

size
类型

字符串

必需

size.state

size 相同,但适用于用于保存虚拟机运行时状态的文件系统卷

size.state
类型

字符串

必需

source

文件系统或块设备的源(有关详细信息,请参见 磁盘设备类型

source
类型

字符串

必需