虚拟机和 TRIM

lio*_*ori 21 trim virtual-machine

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

phu*_*clv 12

Virtualbox 从4.2 版开始支持 TRIM

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

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

  • --discard

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

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

更多信息可以在


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

用例

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

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

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

新 API 允许应用向存储媒体发送“TRIM 和取消映射”提示

也可以看看


VMware Workstation 10声称支持 SSD 直通

  • SSD Pass-through 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 仅在底层设备为 SSD – 固态磁盘时使用。据我了解,TRIM 在 I/O 堆栈中被转换为 UNMAP。但是,将 TRIM 转换为 UNMAP 存在一些问题。UNMAP 在 VMFS 上的某些块边界上工作,而 TRIM 没有这样的限制。因此,某些转换为 UNMAP 的 TRIM 可能会由于块对齐问题而失败。

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

也可以看看


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

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

收缩 Qcow2 磁盘文件