类型:disk
¶
注意
disk
设备类型同时支持容器和虚拟机。它支持容器和虚拟机的热插拔。
磁盘设备为实例提供额外的存储空间。
对于容器,它们本质上是实例内的挂载点(作为主机上现有文件或目录的绑定挂载,或者如果源是块设备,则是常规挂载)。虚拟机通过 9p
或 virtiofs
(如果可用)共享主机端挂载或目录,或者作为块设备的 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-data
和cloud-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
设备具有以下设备选项
键 | io.bus |
类型 | 字符串 |
默认值 | 对于块设备(磁盘),为 |
必需 | 否 |
这控制磁盘设备应连接到的总线。
对于块设备(磁盘),它可以是以下之一:
nvme
virtio-blk
virtio-scsi
(默认)
对于文件系统(共享目录或自定义卷),它可以是以下之一:
9p
auto
(默认)(virtiofs
+9p
,如果缺少virtiofsd
则仅为9p
)virtiofs
键 | io.cache |
类型 | 字符串 |
默认值 |
|
必需 | 否 |
这控制磁盘设备应连接到的总线。
对于块设备(磁盘),它可以是以下之一:
none
(默认)writeback
unsafe
对于文件系统(共享目录或自定义卷),它可以是以下之一:
none
(默认)metadata
unsafe
键 | limits.read |
类型 | 字符串 |
必需 | 否 |
键 | limits.write |
类型 | 字符串 |
必需 | 否 |
propagation
控制绑定挂载如何在实例和主机之间共享(可以是 private
,默认值,或 shared
,slave
,unbindable
,rshared
,rslave
,runbindable
,rprivate
;有关完整说明,请参见 Linux 内核的 共享子树 文档)
键 | propagation |
类型 | 字符串 |
必需 | 否 |
键 | size |
类型 | 字符串 |
必需 | 否 |
键 | source |
类型 | 字符串 |
必需 | 是 |