虚拟机和TRIM


18

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

Answers:


10

版本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的平板足迹。

新的API允许应用向存储媒体发送“ TRIM和Unmap”提示

也可以看看


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中的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可能会失败。

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

也可以看看


1
我相信VMware从将来的版本中删除了这种市场营销主张,因为它不支持TRIM,因此遭到破坏。看到这里这里
汤姆·黑尔

1

TRIM支持需要对底层硬件有深入的了解。由于虚拟机(VM guest虚拟机)按照定义在虚拟硬件上运行,因此它们不知道其所在的硬盘驱动器或SSD的详细信息。

因此,如果VM Host操作系统能够理解TRIM,那么对于在其之上运行的所有VM guest虚拟机来说,这就足够了。

某些VM主机可以“通过”物理驱动器,并将其直接安装到VM Guest上的操作系统。根据确切的实现方式,从理论上讲,Guest虚拟机可以支持SSD的TRIM功能。与大多数情况一样,您的里程可能会有所不同,如果对您的环境至关重要,则应在进行承诺之前对其进行全面测试。


1
我要添加的唯一内容是,如果vm硬盘驱动器文件是动态的,则可以将其缩小,然后主机将在适当的情况下告诉SSD修剪新释放的扇区。这可能会加快vm硬盘驱动器文件的写入速度,因为当文件增长时,如果您不修改现有的主机扇区,则可以将新的/修剪的扇区用于来宾的写入。通常,我会固定VM硬盘驱动器文件的大小,但这是为了防止HD碎片化。使用固态硬盘,我可能会动态地和周期性地收缩。
Scott McClenning

2
-1。您缺少使用TRIM / unmap来缩小动态大小的VM映像文件的事实。结果,主机OS可能会在底层硬件上发出TRIM / unmap。这是精简配置概念的重要组成部分。
rustyx

-1

发明TRIM是因为对SSD的写入必须以512K块完成,并且对于SSD驱动器本身来说,无法确定一个文件或多个文件实际使用了多少块,必须由OS和文件系统进行通信。

看到

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

编辑:

维基链接说得比我更好:

TRIM命令不适用于存储在磁盘映像文件中的磁盘。这是由于以下事实造成的:计算机文件只能完全删除或最后被截断。此问题影响虚拟磁盘服务,虚拟机等应用程序。


6
当用户请求重新打包和收缩虚拟磁盘时,VM可以保留有关修剪哪些块的信息。VMWare当前具有类似的操作,但它首先通过覆盖VM内部的所有可用空间来工作。
liori

6
问题不在于将虚拟磁盘上的TRIM操作转换为主机磁盘上的TRIM操作。正如您指出的那样,它不能直接工作。问题显然是关于将虚拟磁盘上的TRIM调用转换为主机磁盘上的映像文件的缩短(顺便说一句,这又可以触发主机磁盘上的TRIM操作,但是问题是关于第一步的)
Pascal Cuoq'2

1
这里有备用文件,这些文件应该理想用作虚拟机的可修剪磁盘映像。
非用户
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.