返回

磁盘控制器和缓存设置

Proxmox磁盘控制器和缓存

本页提供配置虚拟机时与磁盘相关的设置信息,包括关键注意事项和预防措施。

关于SCSI控制器

创建新虚拟机并选择SCSI控制器时,默认选项是“VirtIO Single”。这意味着如果创建多个虚拟磁盘(如下节所述),它们都将显示为连接到此单一控制器。此设置优化了虚拟机内的内存和设备使用。

选择“VirtIO SCSI”允许将每个虚拟磁盘分配到单独的SCSI总线,这需要额外的驱动空间和内存。然而,在某些工作负载下,分散I/O操作可以提升性能。

通常不推荐使用其他物理SCSI卡模拟。

关于磁盘控制器

IDE(也称为ATA)成立于1988年,确保与几乎所有操作系统兼容。对于2003年之前发布的操作系统版本,使用IDE可能是最佳选择。虽然物理IDE的最大速度为133MB/秒,但在虚拟化IDE中没有此限制,除非操作系统强制执行。然而,IDE不支持热插拔,即在虚拟机运行时无法移除设备。

SATA适用于2003年后发布的操作系统版本,是现代操作系统中最兼容的选项。从物理上看,它是IDE的进化版,采用串行传输,速度高达6Gbps(约600MB/秒)。然而,在虚拟化环境中,除非客户操作系统强制执行,否则没有固有的速度限制。

VirtIO SCSI和VirtIO SCSI Single提供最快的磁盘访问速度。然而,它们要求客户操作系统安装准虚拟化驱动。如果系统中没有任何IDE/SATA磁盘,除非安装VirtIO SCSI驱动,否则操作系统安装过程将失败。Linux发行版自2012年起包含此驱动,FreeBSD自2014年起支持,而对于Windows操作系统,安装时必须提供包含VirtIO驱动的额外ISO文件。

关于磁盘缓存

磁盘缓存设置涉及数据完整性与性能之间的权衡。

特性 writethrough directsync none writeback unsafe
缓存使用 使用页面缓存(对读取操作有益) 不使用缓存 不使用缓存 使用页面缓存 使用页面缓存
fsync发出 每次写入时发出 每次写入时发出 不发出 延迟发出 不发出
写入过程 写入缓存,然后立即刷新到磁盘 直接写入磁盘并立即刷新 直接写入磁盘,不刷新 写入缓存,延迟刷新 写入缓存,不刷新
读取性能 高(利用缓存) 低(依赖磁盘) 低(依赖磁盘) 高(利用缓存) 高(利用缓存)
写入性能 中等(缓存辅助) 低(无缓存) 中等(无缓存) 高(延迟缓存刷新) 非常高(延迟缓存刷新)
数据完整性 非常高 中等(依赖磁盘) 低(延迟写入) 非常低(数据丢失风险高)
使用场景 优先考虑读取性能和完整性的系统 需要最大数据完整性的系统 性能驱动且完整性需求中等的系统 写入密集型系统,平衡性能和完整性 性能优先、可接受数据丢失的系统

TRIM(Discard)

Discard命令通知存储系统某些块不再需要。

最初为SSD磨损均衡引入,某些操作系统可能需要SSD模拟来支持TRIM。除了SSD外,TRIM还可以通过移除加密密钥而非覆盖数据来协助安全删除。

在私有云环境中,TRIM允许精简配置的存储回收空间。通常情况下,一旦虚拟机使用了存储,即使删除数据,存储级别仍会保持分配状态。

fstrim -v /mountpoint

对于实时TRIM操作,使用discard选项挂载:

mount -o discard,remount /

IO线程

在VirtIO SCSI中启用IO线程会将磁盘写入操作卸载到与主操作系统线程分开的线程中。

此设置需要额外的CPU资源,但可减少延迟,特别是在具有多个虚拟磁盘且同时处理读/写操作的虚拟机中。