尽管引入 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 的平板占用空间。
也可以看看
- 精简配置 - 使用 UNMAP 命令回收存储空间
- Windows 8 和 Server 2012 支持新 VHDX 映像格式的 TRIM
- 探索 Windows Server 2012 VHDX 精简配置优势
- Windows Server 2012 和 Hyper-V/VHDX 中的 TRIM/UNMAP 支持
- 监控精简配置 SAN 上的 UNMAP/TRIM 效果
VMware Workstation 10声称支持 SSD 直通
- SSD 直通 Windows 8 能够检测何时从固态硬盘 (SSD) 运行,并针对此硬件进行优化。在 Workstation 10 中,客户操作系统将能够检测何时将虚拟机磁盘文件存储在 SSD 驱动器上,并且操作系统在虚拟机中运行时可以进行相同的优化
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 可能会因块对齐问题而失败。
也可以看看
QEMU 和 KVM 还支持discard=unmap
回收磁盘映像空间的选项
为了缩小 *.qcow2 文件,您有两个选择,启用 TRIM 支持或将客户机中包含的分区的所有可用空间清零,然后使用 qemu-img 重新转换图像。
答案2
TRIM 支持需要对底层硬件有深入的了解。由于虚拟机(虚拟机来宾) 根据定义在虚拟硬件上运行,它们不知道所在硬盘或 SSD 的详细信息。
因此,如果虚拟机主机操作系统理解 TRIM,这对于在其上运行的所有 VM 客户机来说应该足够了。
某些 VM 主机可以“穿过”物理驱动器并将其直接安装到 VM Guest 上的操作系统。根据具体实施情况,理论上 Guest 可以支持 SSD 的 TRIM 功能。与大多数情况一样,您的情况可能会有所不同,如果它对您的环境至关重要,您应该在提交之前进行彻底测试。
答案3
发明 TRIM 的原因是,对 SSD 的写入必须以 512K 块为单位进行,而 SSD 驱动器本身无法确定文件实际使用了多少块,必须通过操作系统和文件系统进行通信。
看
http://en.wikipedia.org/wiki/TRIM
编辑:
维基链接比我说的更好:
TRIM 命令不适用于存储在磁盘映像文件中的磁盘。这是因为计算机文件只能完全删除或在最后截断。此问题会影响虚拟磁盘服务、虚拟机等应用程序。