存储驱动程序¶
Incus 支持以下存储驱动程序来存储镜像、实例和自定义卷
有关特定于驱动程序的信息和配置选项,请参阅相应的页面。
功能比较¶
在可能的情况下,Incus 使用每个存储系统的先进功能来优化操作。
功能 |
目录 |
Btrfs |
LVM |
ZFS |
Ceph RBD |
CephFS |
Ceph 对象 |
---|---|---|---|---|---|---|---|
否 |
是 |
是 |
是 |
是 |
不适用 |
不适用 |
|
优化的实例创建 |
否 |
是 |
是 |
是 |
是 |
不适用 |
不适用 |
优化的快照创建 |
否 |
是 |
是 |
是 |
是 |
是 |
不适用 |
优化的镜像传输 |
否 |
是 |
否 |
是 |
是 |
不适用 |
不适用 |
否 |
是 |
否 |
是 |
是 |
不适用 |
不适用 |
|
写时复制 |
否 |
是 |
是 |
是 |
是 |
是 |
不适用 |
基于块的 |
否 |
否 |
是 |
否 |
是 |
否 |
不适用 |
即时克隆 |
否 |
是 |
是 |
是 |
是 |
是 |
不适用 |
可在容器内使用的存储驱动程序 |
是 |
是 |
否 |
是[1] |
否 |
不适用 |
不适用 |
从较旧的快照(不是最新的)恢复 |
是 |
是 |
是 |
否 |
是 |
是 |
不适用 |
存储配额 |
是[2] |
是 |
是 |
是 |
是 |
是 |
是 |
在 |
是 |
是 |
是 |
是 |
是 |
否 |
否 |
对象存储 |
是 |
是 |
是 |
是 |
否 |
否 |
是 |
优化的镜像存储¶
除了目录驱动程序之外,所有存储驱动程序都具有一些优化的镜像存储格式。为了使实例创建几乎瞬时完成,Incus 在创建实例时克隆预制镜像卷,而不是从头开始解压缩镜像 tarball。
为了防止在可能永远不会使用该镜像的存储池上准备此类卷,该卷是在需要时生成的。因此,第一个实例的创建时间比后续实例长。
优化的卷传输¶
Btrfs、ZFS 和 Ceph RBD 具有允许优化卷传输的内部发送/接收机制。
当在使用相同存储驱动程序的存储池之间传输实例和快照时,如果存储驱动程序支持优化传输并且优化传输确实更快,则 Incus 使用此优化传输。否则,Incus 使用 rsync
传输容器和文件系统卷,或使用原始块传输传输虚拟机和自定义块卷。
优化传输使用底层存储驱动程序的本机功能来传输数据,这通常比使用 rsync
快。但是,优化传输的全部潜力在刷新使用定期快照的实例或自定义卷的副本时变得显而易见。使用优化传输,Incus 基于最新的快照进行刷新,这意味着
当您拍摄第一个快照并刷新副本时,传输将花费与完整复制大致相同的时间。Incus 传输新的快照以及快照和主卷之间的差异。
对于后续快照,传输速度要快得多。Incus 不会传输完整的新的快照,而只会传输新的快照与目标上已存在的最新快照之间的差异。
在没有新的快照的情况下刷新时,Incus 只会传输主卷与目标上最新快照之间的差异。此传输通常比使用
rsync
快(只要最新快照不是太旧)。
另一方面,刷新没有快照的实例的副本(无论是由于实例没有任何快照还是由于刷新使用 --instance-only
标志)实际上会比使用 rsync
慢。在这种情况下,优化传输将传输(不存在的)最新快照和主卷之间的差异,因此是整个卷。因此,Incus 使用 rsync
而不是优化传输来刷新没有快照的副本。
推荐设置¶
与 Incus 一起使用的两个最佳选项是 ZFS 和 Btrfs。它们具有类似的功能,但 ZFS 更可靠。
在可能的情况下,您应该将完整的磁盘或分区专用于 Incus 存储池。Incus 允许创建基于循环的存储,但不建议在生产环境中使用。有关更多信息,请参阅 数据存储位置。
目录后端应被视为最后的选择。它支持所有主要的 Incus 功能,但速度缓慢且效率低下,因为它无法执行即时复制或快照。因此,它会不断复制实例的完整存储。
安全注意事项¶
当前,Linux 内核可能会静默忽略挂载选项,并且在已使用不同的挂载选项挂载基于块的文件系统(例如 ext4
)时不会应用这些选项。这意味着当专用磁盘设备在具有不同挂载选项集的不同存储池之间共享时,第二个挂载可能没有预期的挂载选项。例如,当一个存储池应该提供 acl
支持而第二个存储池应该不提供 acl
支持时,这与安全相关。
因此,目前建议为每个存储池使用专用磁盘设备,或者确保共享相同专用磁盘设备的所有存储池都使用相同的挂载选项。