文件系统在填满时会失去性能吗?

Dar*_*gur 2 performance filesystems ntfs

问题的上下文是一台 Windows 计算机(因此所讨论的文件系统是 NTFS),其中填充了可能会被删除的数据。但我不知道是否值得花时间清理它,或者我们是否应该整理碎片并继续前进。

基本上,文件系统的“完整度”是否会导致性能下降,或者仅仅是碎片化会减慢速度?如果是这样,它会产生有意义的差异吗?

sys*_*138 6

许多事情都会影响服务器的文件服务性能。文件系统的完整性只是可以做出贡献的众多事情之一。

  • 原始磁盘吞吐量。如果在您的磁盘上抛出的 I/O 数量超过其跟上的能力,它就会变慢。
  • 磁盘 I/O 模式。一些磁盘在处理大量随机 I/O 时表现得比其他磁盘更好。例如,SATA 在处理大量随机 I/O 时的性能不如 SAS 或 SCSI 驱动器。
  • 磁盘控制器资源耗尽。无论您使用什么 RAID(假设您是,而且这不仅仅是一个磁盘)都有自己的资源。如果您使用的是奇偶校验 RAID,则控制器 CPU 会限制您将数据提交到磁盘的速度。此外,大多数硬件控制器都有自己的板载缓存。这用于许多事情,但包括重新排序写入以提高效率。如果 I/O 过于随机,您的 RAID 卡也可能无法优化。
  • 文件缓存内存资源。当文件服务器可以在内存中完全缓存 100% 的打开文件时,它们的性能最佳。这允许他们接受来自客户端的写入并重新排序提交到磁盘的方式,以提高他们的效率。如果您无法将整个打开的文件集放入内存中,则必须直接将这些 I/O 写入磁盘,并且您将失去这种性能增强。
  • 客户端本地内存资源。通过使用 OpLocks,客户端可以在本地缓存打开的文件。一旦多个客户端打开同一个文件,服务器就会通知客户端刷新其缓存,这种情况就会消失。但是,对于某些工作负载,它可以真正节省成本。如果客户端没有足够的文件缓存空间来缓存打开的文件,则在以独占方式打开文件时性能会明显下降。
  • 文件系统碎片。大量碎片化的文件系统本质上会在磁盘子系统上引发大量随机 I/O 模式。如果该子系统不能容忍这种 I/O 模式,事情就会变得非常缓慢。
  • 用户生成的 I/O 模式。如果您的用户正在处理数百万个办公文档(通常小于 2MB),您的访问模式将非常随机。如果您的用户正在处理大文件,例如视频文件、地理空间数据或 AutoCAD 文件,您的用户将生成大量顺序操作。

其中一些相互关联,而且很多时候会是多个问题导致性能问题。通常,NTFS 文件系统碎片确实会产生影响。从此类文件系统进行大量顺序读取时,影响最严重,例如在备份期间发生的情况。对于典型的办公服务器负载,对一般文件服务性能的影响并不那么显着,因为无论如何这些负载主要是随机 I/O;在某些情况下,您甚至可以看到碎片系统比完全碎片整理的系统有一些性能改进。

对于存储大量 AutoCAD 文件的文件服务器,最终用户会察觉到 NTFS 碎片。用户生成的 I/O 模式是显着顺序的,因此容易因碎片而降级。它真正受到的影响有多大取决于服务器用于缓存的 RAM 量,以及底层存储在随机 I/O 模式方面的速度。很可能底层存储足够快,最终用户不会注意到具有 60% 碎片的卷。或者它可能会导致 I/O 饱和,只有 15% 的碎片。

对于存储大量普通旧办公文件的文件服务器,最终用户不会察觉到 NTFS 碎片。该用户 I/O 模式实际上是非常随机的,并且受碎片影响最小。问题会出现在备份过程中,因为随着碎片的增加,备份每个 GB 的时间也会增加。

这让我想到了最后一点。受碎片影响最大的一种 I/O 操作是顺序 I/O。作为备份过程的一部分,大多数服务器都会经历大规模的顺序 I/O 模式。如果您在将备份放入备份窗口时遇到问题,碎片整理可以帮助加快速度。您的底层存储系统将确定碎片可以产生多大的影响,而您的碎片数量将确定它实际产生的影响有多大。了解您的存储空间。