Answers:
自版本4.2起,Virtualbox支持TRIM
- 存储:实现了对使用VDI映像时通过TRIM for SATA和IDE以及UNMAP对于SCSI丢弃未使用的映像块的支持
您需要使用--nonrotational on
和--discard on
选项:
--discard
为虚拟硬盘启用自动丢弃功能。这指定响应来自客户机OS的trim命令,将缩小VDI映像。必须满足以下要求:
- 磁盘格式必须为VDI。
- 清除区域的大小必须至少为1 MB。
- Oracle VM VirtualBox将仅修剪整个1 MB的块。VDI本身被组织为1 MB的块,因此只有在被修剪的空间在1 MB边界处至少为1 MB连续块的情况下,这才起作用。在Windows上,偶尔使用进行碎片整理
defrag.exe /D
,或者在btrfs filesystem defrag
作为后台cron作业运行的Linux上可能会有所帮助。
更多信息可以在
Hyper-V还可以缩小VHD和VHDX图像
用例
- ...
消费者VHD安装在精简配置的SAN上:
VHD最初安装在精简配置环境的一个最小平板上。随着文件存储在VHD中,VHD的存储空间将以平板的倍数增长。在VHD中删除文件后,Hyper-V将File_TRIM调用到基础的自动精简配置的SAN。如果TRIM大于SLAB粒度,则SAN现在可以删除SLAB,从而减少该SAN上VHD的占用空间。如果VHD驻留在基于Windows 8的服务器上,则Storage Optimizer还将发送TRIM,以减少已安装的VHD内VHD的平板足迹。
也可以看看
VMware Workstation 10声称支持SSD直通
- SSD Pass-through 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中的Guest OS支持UNMAP。
是。vSphere 6.0支持直接从Guest OS发出UNMAP回收空间。
问:运行UNMAP需要哪些先决条件?
必须满足许多先决条件。这些是:
- VMDK必须精简配置
- 虚拟机硬件版本必须为11(ESXi 6.0)
- 高级设置EnableBlockDelete必须设置为1
- 来宾操作系统必须能够将磁盘识别为精简磁盘(Windows 2012 [2015年10月30日更新]使用B2模式页来实现此目的)
问:回收仅适用于UNMAP吗?那TRIM呢?
这是一个“取决于”答案。仅当基础设备是SSD –固态磁盘时才使用TRIM。据我了解,TRIM在I / O堆栈中转换为UNMAP。但是,TRIM转换为UNMAP存在一些问题。UNMAP在VMFS上的某些块边界上工作,而TRIM没有这种限制。因此,由于块对齐问题,某些转换为UNMAP的TRIM可能会失败。
也可以看看
TRIM支持需要对底层硬件有深入的了解。由于虚拟机(VM guest虚拟机)按照定义在虚拟硬件上运行,因此它们不知道其所在的硬盘驱动器或SSD的详细信息。
因此,如果VM Host操作系统能够理解TRIM,那么对于在其之上运行的所有VM guest虚拟机来说,这就足够了。
某些VM主机可以“通过”物理驱动器,并将其直接安装到VM Guest上的操作系统。根据确切的实现方式,从理论上讲,Guest虚拟机可以支持SSD的TRIM功能。与大多数情况一样,您的里程可能会有所不同,如果对您的环境至关重要,则应在进行承诺之前对其进行全面测试。
发明TRIM是因为对SSD的写入必须以512K块完成,并且对于SSD驱动器本身来说,无法确定一个文件或多个文件实际使用了多少块,必须由OS和文件系统进行通信。
看到
http://en.wikipedia.org/wiki/TRIM
编辑:
维基链接说得比我更好:
TRIM命令不适用于存储在磁盘映像文件中的磁盘。这是由于以下事实造成的:计算机文件只能完全删除或最后被截断。此问题影响虚拟磁盘服务,虚拟机等应用程序。