虚拟机和 TRIM

虚拟机和 TRIM

尽管引入 TRIM 支持是为了让 SSD 更好地工作,但它也应该有助于虚拟机优化虚拟磁盘(例如,了解虚拟磁盘的哪些部分不需要物理分区上的存储)。是否有任何虚拟机以这种方式使用 TRIM?

答案1

Virtualbox 支持 TRIM,因为版本 4.2

  • 存储:实现了在使用 VDI 映像时通过 SATA 和 IDE 的 TRIM 以及 SCSI 的 UNMAP 丢弃未使用的图像块的支持

您需要使用--nonrotational on--discard on选项

  • --discard

    启用虚拟硬盘的自动丢弃功能。这指定 VDI 映像将响应来自客户操作系统的 trim 命令而缩小。必须满足以下要求:

    • 磁盘格式必须是VDI。
    • 清除区域的大小必须至少为 1 MB。
    • Oracle VM VirtualBox 只会修剪整个 1 MB 块。VDI 本身被组织成 1 MB 块,因此只有当修剪的空间至少是 1 MB 边界处的 1 MB 连续块时,这才会起作用。在 Windows 上,偶尔使用 进行碎片整理defrag.exe /D,或在 Linux 上btrfs filesystem defrag作为后台 cron 作业运行可能会有所帮助。

更多信息可以在这里找到


Hyper-V 还可以缩小 VHD 和 VHDX 映像

用例

  • ...
  • 安装在精简配置的 SAN 上的消费者 VHD:

    VHD 最初安装在精简配置环境的一个最小板上。随着文件存储在 VHD 中,VHD 的存储空间会以多个板为单位增长。当从 VHD 中删除文件时,Hyper-V 会向底层精简配置 SAN 调用 File_TRIM。如果 TRIM 大于 SLAB 粒度,SAN 现在可以删除 SLAB,从而减少 VHD 在该 SAN 上的占用空间。

如果 VHD 驻留在基于 Windows 8 的服务器上,则存储优化器还将发送 TRIM 以减少已安装 VHD 中的 VHD 的平板占用空间。

新的 API 允许应用程序向存储介质发送“TRIM 和 Unmap”提示

也可以看看


VMware Workstation 10声称支持 SSD 直通

  • SSD 直通 Windows 8 能够检测何时从固态硬盘 (SSD) 运行,并针对此硬件进行优化。在 Workstation 10 中,客户操作系统将能够检测何时将虚拟机磁盘文件存储在 SSD 驱动器上,并且操作系统在虚拟机中运行时可以进行相同的优化

VMware Workstation 10.0 发行说明

VMWare Workstation Pro 文档中心也提到了这一点主机系统的磁盘驱动器要求 - 固态硬盘

如果您的主机具有物理固态硬盘 (SSD),则主机会通知客户操作系统它们正在 SSD 上运行。

这允许客户操作系统优化行为。虚拟机如何识别 SSD 并使用此信息取决于客户操作系统和虚拟磁盘的磁盘类型(SCSI、SATA 或 IDE)。

但从文本来看,TRIM命令似乎只传递给了底层物理SSD,而不是缩小了VMDK映像

其他 VMware 产品(例如 vSphere 和ESXi也支持 TRIM,但目前还不清楚他们是否利用它来缩小图像

问:VMware 是否直接从 vSphere 6.0 中的客户操作系统支持 UNMAP。

是的。vSphere 6.0 支持直接从客户操作系统发出 UNMAP 来回收空间。

问:运行 UNMAP 需要哪些先决条件?

必须满足一些先决条件。这些是:

  • VMDK 必须采用精简配置
  • 虚拟机硬件版本必须为 11 (ESXi 6.0)
  • 高级设置 EnableBlockDelete 必须设置为 1
  • 客户操作系统必须能够将磁盘识别为薄磁盘(Windows 2012 [2015 年 10 月 30 日更新] 使用 B2 模式页面来实现这一点)

问:回收仅适用于 UNMAP 吗?TRIM 呢?

这是一个“视情况而定”的答案。TRIM 仅在底层设备是 SSD(固态磁盘)时使用。据我所知,TRIM 在 I/O 堆栈中转换为 UNMAP。但是,TRIM 转换为 UNMAP 存在一些问题。UNMAP 在 VMFS 上的某些块边界处工作,而 TRIM 没有这样的限制。因此,某些转换为 UNMAP 的 TRIM 可能会因块对齐问题而失败。

vSphere 6.0 存储功能第 8 部分:VAAI UNMAP 更改

也可以看看


QEMU 和 KVM 还支持discard=unmap回收磁盘映像空间的选项

为了缩小 *.qcow2 文件,您有两个选择,启用 TRIM 支持或将客户机中包含的分区的所有可用空间清零,然后使用 qemu-img 重新转换图像。

缩小 Qcow2 磁盘文件

答案2

TRIM 支持需要对底层硬件有深入的了解。由于虚拟机(虚拟机来宾) 根据定义在虚拟硬件上运行,它们不知道所在硬盘或 SSD 的详细信息。

因此,如果虚拟机主机操作系统理解 TRIM,这对于在其上运行的所有 VM 客户机来说应该足够了。

某些 VM 主机可以“穿过”物理驱动器并将其直接安装到 VM Guest 上的操作系统。根据具体实施情况,理论上 Guest 可以支持 SSD 的 TRIM 功能。与大多数情况一样,您的情况可能会有所不同,如果它对您的环境至关重要,您应该在提交之前进行彻底测试。

答案3

发明 TRIM 的原因是,对 SSD 的写入必须以 512K 块为单位进行,而 SSD 驱动器本身无法确定文件实际使用了多少块,必须通过操作系统和文件系统进行通信。

http://en.wikipedia.org/wiki/TRIM

编辑:

维基链接比我说的更好:

TRIM 命令不适用于存储在磁盘映像文件中的磁盘。这是因为计算机文件只能完全删除或在最后截断。此问题会影响虚拟磁盘服务、虚拟机等应用程序。

相关内容