SSD TRIM 是否适用于“从 VHD 启动”场景?

SSD TRIM 是否适用于“从 VHD 启动”场景?

我最近购买了英特尔 X-25 G2 SSD(160GB)作为我的笔记本电脑的额外驱动器。

我创建了一个固定大小的磁盘虚拟磁盘(40GB),并已将 Windows Server 2008 R2 安装在此 VHD 上。我现在“启动到 VHD”。

(我想要多个开发环境,因此单独的 VHD 对我来说是可行的。)

效果很好,速度很快。没什么可抱怨的。

只是一种挥之不去的感觉。TRIM 在这种情况下如何工作?我这样使用它是否会毁掉我的 SSD?

我无法通过 Google 找到任何明确的答案。我运行了“fsutil behavior query disabledeletenotify”,结果返回“0”。然而,这显然不是明确的答案。

我运行了碎片整理程序,看起来 SSD 驱动器可以执行此任务。

有没有:

1) 有什么方法可以确定 TRIM 正在工作? 2) 如果没有,我该如何启用?

答案1

Microsoft 网站上的一份正在编写的文档介绍了 8 平台的新功能。他们没有说明这是否仅适用于服务器或客户端:

http://msdn.microsoft.com/en-us/library/hh848053%28v=vs.85%29.aspx

他们还谈到了新的 VHDX 格式,该格式应该支持 TRIM,

http://technet.microsoft.com/en-us/library/hh831446.aspx

我无法验证这是否有效,因为目前我有一个在标准 vhd 格式上运行的 w8cp,所以我将尝试在新的 vhdx 格式上执行全新重新安装。如果您没有耐心,您可以自己执行此操作并使用 procmon 观察文件删除(您应该会看到一些特定的 api 调用,请参阅下面的详细信息)

“很抱歉,但作为垃圾邮件防范机制,新用户最多只能发布两个超链接”:ocztechnologyforum.com/forum/showthread.php?66696-New-FW-Flashing

答案2

据我所知,目前还没有虚拟化解决方案支持告诉虚拟机中的操作系统它实际上位于 SSD 上(虚拟驱动器和控制器对于客户操作系统来说看起来是一样的,无论它是在旋转金属磁盘、SSD 还是完全基于 RAM 的驱动器上)并将来自客户操作系统的 TRIM 命令转换为相对于主机驱动器的正确 TRIM 命令。

在这方面,使用可变大小的虚拟磁盘会更幸运(因为当它们缩小时,从文件释放的空间将由文件系统代码释放,并且它将请求发出适当的 TRIM 命令),但使用可增长虚拟磁盘本身会对性能造成影响,所以你必须做一些研究,看看这是否会比固定大小虚拟磁盘使用的空间缺乏 TRIM 支持对你的影响更大(我的直觉告诉我固定大小的磁盘是可行的方法,但我会做一些性能测试来验证这一点)。

答案3

虚拟机具有虚拟硬件,对实际硬盘一无所知。它也不需要知道这一点,因为主机操作系统会处理一切。虽然理论上没问题,但对于 SSD 来说,这确实会失败。

在主机看来,VHD 文件始终是完整使用的,没有可用空间。因此,主机永远不会应用修剪到 VHD。没有技术可以让客户机和主机进行通信,因为这将是一个严重的安全漏洞。

所以答案是肯定的:你击败你的 SSD。

考虑:

  1. 将 VHD 放在非 SSD 磁盘上,
  2. 迟早会从 SSD 磁盘中删除 VHD(然后将应用 TRIM),
  3. 使用可变大小的 VHD(我怀疑这是否会推迟问题的发生,因为它和 TRIM 一样浪费),
  4. 将 SSD 分区为两个分区,并使用磁盘映像软件将虚拟机交换到第二个分区中/从第二个分区中交换出来(这可能需要巧妙地使用擦除器产品 - 也许使用操作系统删除并重新创建第二个分区就可以了)。

答案4

Windows 8 在其 VHDX 格式中增加了对 SSD TRIM 命令的支持,使得从 SSD 驱动器上的虚拟驱动器启动变得非常容易。

http://www.jaylee.org/post/2012/07/13/Windows-8-Developers-Hyper-V-and-the-new-VHDX-format.aspx

相关内容