我应该整理虚拟机上运行的硬盘驱动器吗?


18

我知道在SSD上运行Defrag毫无意义(实际上是一个坏主意)。在SSD上运行的虚拟机该如何处理,因为它基本上以相同的方式访问硬盘,所以我应该对它的硬盘进行碎片整理吗?


:不知道为什么这是这样,但可能是相关stackoverflow.com/questions/281527/...
明镜Hochstapler

如果不使用支持VSS的碎片整理程序,VSS可能会导致存储增加。

仅当碎片整理选项是虚拟化软件的一部分时。
qasdfdsaq 2015年

Answers:


14

我对VHD进行了碎片整理,但是出于空间原因而不是时间原因:

我为VHD使用了动态分配的选项,因此它们从小开始并根据需要扩展。但是随着VHD(不一定是文件)变得碎片化,它会扩展为包括所有分配的块。对VHD进行碎片整理是再次压缩它的第一步。


空间因素可能是相关的,因为VM位于SSD上,尽管一般而言,出于性能方面的考虑,并不需要对SSD上的任何内容进行碎片整理,因此不建议这样做。
Bigbio2002 '02


2

这仅是我的看法,我没有测试结果可以支持。这大概是事情发生的大概方式:

真实操作系统:

  1. 应用程序要求输入数据X(快速)
  2. 操作系统要求磁盘驱动器提供数据X(快速)
  3. 物理磁盘获取数据X并将其返回给OS(如果是碎片,则速度很慢

这将是VM中的等效命令链:

  1. VM应用程序请求数据X(快速)
  2. VM OS询问数据X(快速)
  3. VM主机要求实时操作系统获取存储在虚拟磁盘文件中的数据X(快速)
  4. Real OS要求磁盘驱动程序获取数据X(快速)
  5. 物理磁盘获取数据X并将其返回给OS(如果为碎片,则速度很慢)。

如您所见,在这两种情况下,只有在物理硬盘驱动器尝试读取数据的操作阶段碎片化才真正成为问题,并且这发生在VM上下文之外的实际OS中。在此之前,所有可能都发生在内存中。

总之,由于我们知道固态硬盘在实际操作系统中不会遭受碎片破坏,并且虚拟机中的碎片问题可能仅在操作的最后物理步骤中发生,因此我想对虚拟操作系统或操作系统进行碎片整理主操作系统中的虚拟磁盘文件不会提高SSD的性能,而与实际操作系统的碎片整理一样有害/无用。

编辑:如果这是正确的,那是将VM放在SSD上的一个很好的理由!在HDD上,任何阶段(来宾操作系统,虚拟磁盘文件,真实操作系统)的碎片化都会破坏线性,并在物理磁盘步骤中造成碎片化。


2

无论您的虚拟机是访问存储在传统磁性HDD还是电子SSD上的数据,Windows NTFS文件和可用空间碎片都会减慢请求数据的应用程序的访问速度。NTFS文件和可用空间碎片的发生频率远远超出您的猜测。一旦安装操作系统,它就有可能发生。当您安装应用程序或系统更新,访问互联网,下载和保存照片,创建电子邮件,办公文档等时,可能会发生这种情况。这是计算机系统的正常现象,但会对计算机系统产生负面影响。所有应用程序和系统性能。随着碎片的发生,计算机系统和底层存储执行的工作量超出了必要。每个I / O请求都花费可测量的时间。即使在SSD环境中,也没有“即时” I / O请求之类的东西。每当应用程序请求读取或写入数据并且该请求被拆分为其他I / O请求时,它都会导致完成更多工作。这项额外的工作会在该时刻造成延迟。

这些年来,磁盘驱动器变得越来越快,但是CPU也越来越快。实际上,硬盘和CPU之间的速度差异之间的差距实际上已经扩大了。这意味着应用程序可以获得大量的CPU周期,但是它们仍然渴望从存储中获取数据。而且,正在存储的数据量已大大增加。想一想在假期中拍摄和分享的所有数码照片。每张照片的大小约为1MB,现在每张照片超过15MB,有些超出了。视频编辑,渲染以及数字电影的存储也已变得非常流行,结果应用程序正在处理数百GB的数据。在典型的磁盘群集大小为4k的情况下,一个15MB大小的文件可能会分成近4,000个扩展区。这意味着额外的4,读取或写入文件需要000个磁盘I / O请求。无论哪种类型的存储,只需花费更长的时间即可完成操作。

数据在固态硬盘上的物理放置并不像在常规磁性硬盘上那样重要。使用SSD时,没有旋转等待时间或竞争时间。许多专家认为碎片不再是问题,但是应用程序数据访问速度并不仅仅是这些术语中的定义。执行的每个I / O请求都需要花费可测量的时间。SSD的速度很快,但不是瞬时的。Windows NTFS文件系统的行为没有任何不同,因为基础存储是SSD与HDD,因此仍然会发生碎片。通过防止和消除碎片减少不必要的I / O,从而减少了I / O请求的数量,从而加快了应用程序数据响应时间并提高了SSD的整体使用寿命。在本质上,

另外,SSD要求在写入新数据之前先擦除旧数据,而不是像HDD一样仅写入旧信息。这会使磨损加倍,并可能导致SSD的速度性能和使用寿命出现重大问题。大多数SSD制造商都拥有非常先进的磨损均衡技术来帮助实现这一目标。原则问题是由于自由空间碎片而导致写入速度下降。散布在SSD上的较小可用空间会导致NTFS文件系统将文件零散地写入那些较小的可用空间。这具有导致比顺序操作慢的更多随机I / O流量的效果。

我有基准测试结果来支持这一点。如果您愿意,请发表评论,索取这些结果,我们很乐意与您分享。


霍华德·巴特勒(Howard Butler),欢迎您来到本网站。通常,建议在互联网上发布个人信息确实不正确。
wizlog '02

@wizlog如果信息是您自己的,则在Internet上发布个人信息没有任何问题。但是,出于在StackExchange上的目的,在答案中张贴您的联系信息或“签名”是多余的。用户可以根据需要单击进入您的个人资料以获取更多信息。
iglvzx 2012年

@iglvzx我只是在撰写一条基本上暗示同一件事的评论……如答案所建议。
wizlog '02

2

关于SSD的传统碎片整理的原始问题,我同意这是一个坏主意,但是有一些特定的解决方案可以解决文件移动和SSD寿命的问题。

运行Windows作为其操作系统的虚拟机仍然会发生碎片,额外I / O流量的综合影响不仅会降低来宾系统的速度和效率,还会降低主机的速度和效率。Microsoft和VMware均建议需要解决来宾级别的碎片。

这就是为什么...

  1. 应用程序要求数据X

  2. 请求由NTFS.sys处理

  3. 检查文件属性($ MFT),如果数据未包含在单个扩展数据块(片段)中,则将为每个扩展数据块/片段创建其他I / O请求,以满足原始数据请求。

  4. 这些请求中的每一个然后都发送到磁盘存储驱动程序。

  5. 检索到数据后,会将其向上传递回堆栈到用户/应用程序。

每个Windows虚拟机都将这种类型的I / O通信发送到主机系统。如果文件系统结构在来宾/虚拟机级别上是零散的,则这将转化为主机必须处理并从后端存储中提取的额外和不必要的I / O通信。随着您添加越来越多的虚拟机,这种情况变得更加复杂。实际上,您可以在主机文件系统级别的碎片中包含碎片。

无论数据是存储在SSD上还是传统的HDD上,如果您正在运行Windows,NTFS文件系统都将变得碎片化,结果由于NTFS文件和可用空间碎片化,您将永远无法达到制造商的额定速度和吞吐量。通过查看平均磁盘读取队列长度,平均写入队列长度,最重要的是分割IO /秒,可以通过PerfMon来测量效果。


1

从Windows Server 2008和Windows Vista开始,请谨慎使用Windows默认计划的碎片整理任务。

可以通过以下方式禁用它: schtasks /change / tn “microsoft\windows\defrag\ScheduledDefrag” /disable

或使用PowerShell:

Get-ScheduledTask ScheduledDefrag | Disable-ScheduledTask

摘自:http : //www.sysadmit.com/2015/10/vmware-y-gpo-defrag-windows.html


0

我刚刚使用在240Gb INTEL SSDSC2CW240A3上托管的Windows碎片整理了VMLite XPMode VM的碎片。

主机上的碎片整理前VM大小-7.83Gb(C上的已用空间:VM上,5.81Gb的121Gb)

碎片整理后-9.86Gb(C上的已用空间:VM上,5.80Gb的121Gb)

不是我期望的结果,并且我已经恢复了碎片整理前的版本。


-1

不,不是。有诸如Diskeeper的“ Hyperfast”之类的东西,但我不知道这些技术的效率如何。(这可能只是一个小偷,所以在SSD成为主流之后,它们不会从市场上掉下来。)


超快,听起来像魔术酱。
贾芬,2015年
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.