如何使用 chkdsk 在不脱机的情况下保持文件服务器的完整性?

Dav*_*key 3 windows-server-2008 filesystems windows-server-2008-r2

我只是想知道在使用 Windows Server 作为文件服务器而不使系统脱机执行 chkdsk /f 或 chkdsk /r 时,人们如何处理持续的文件系统稳定性?显然,人们并不真的希望文件服务器不可用……而文件服务器现在拥有如此多的存储空间,以至于运行 chkdsk 可能需要数天时间……那么您如何保护数据免受损坏?

joe*_*rty 5

在我看来,chkdsk 不是执行预防性维护的工具。如果您必须定期运行 chkdsk 来纠正问题,那么您就有一个需要解决的潜在问题。


sys*_*138 5

我维护了大约 7TB 的一般用户数据的文件服务器。那个 7TB 主要是由办公类型的文件构成的,所以我们说的是数百万。我没有确切的数字,因为它需要很长时间才能获得,但是在我们的 Server 2008 故障转移群集的各种文件系统中,大约有 7 到 12 百万个文件。

除了解决问题,我们从不运行 chkdsk,我们从不进行碎片整理。

NTFS 现在具有足够的自我修复能力,我们很少会遇到问题。当我们确实遇到问题时,通常是由于存储系统基础设施的某种故障;自发的光纤通道阵列控制器重启,FC 交换机紧急重启,诸如此类。从服务器背面拔出电源是非常可行的。

事实上,我们最近在灾难性的 UPS 故障中幸存下来。整个房间同时重重地倒下。NTFS 毫不费力地恢复,无需运行 chkdsk。

关于碎片整理...我们的 FC 磁盘阵列中有 48 个驱动器,因为它是 HP EVA,所以条带随机分布在主轴上。这意味着就驱动器而言,即使大部分顺序访问实际上也是随机的,这进一步意味着一个显着顺序的文件系统比一个显着碎片化的文件系统性能好一点。因此,例行碎片整理对大量 I/O 开销几乎没有帮助。

至于预防性维护,NTFS 现在已经足够自动化,几乎可以自己完成所有这些工作。偶尔我会以只读模式运行 chkdsk以查看以完整模式运行它是否值得。到目前为止,我们的集群还需要它。即使在我们的 2TB、400 万个文件 LUN 上,它也能在不到一天的时间内运行。


也就是说,您可以做出一些架构决策,以帮助减少对离线 chkdsk 的最终需求,并在您需要时使其运行得更快:

  • 将 RAID/SAN 控制器上的缓存策略设置为不缓存写入。然而,这就是电池备份缓存存在的原因,因此不需要考虑这将导致的性能损失。但这是防止脱机 chkdsk 最重要的事情。
  • 保持您的 LUN 更小。文件计数比大小更重要。一个装满 Ghost 映像的 6TB LUN 比装满 6KB 文件的 512GB LUN 的检查速度要快得多。
  • 保持足够的可用空间。一个基于完全主观标准的良好经验法则是任何时候都不少于 15% 的免费。
  • 如果您的数据允许,请使用大于 NTFS 的默认 4KB 块大小的块大小。在对我的文件做了一些统计之后,我发现我的大多数文件系统可以使用 16KB 块。更大的块意味着要检查的块更少,并且还允许存储子系统更好地利用预读。是的,很小的文件会占用更多空间,但在我们的卷上,它只增加了总大小的 4% 左右。