fsck卷需要多长时间?


9

我们正在运行一个网站,目前该网站的浏览量为3-5百万。我们的站点是一个文件共享站点,因此它包含250,000个文件和数千个符号链接。

硬盘是1500GB SATA磁盘。

使用hdparm我们,我们知道硬盘速度已降至15-20 MB / s,即80 MB / s。

因此,现在我们要运行fsck以解决磁盘问题。

  1. fsck可以解决这个问题?
  2. fsck完成将花费多少时间(只是我们要计算将要发生的停机时间)?

您正在使用什么文件系统?这是RAID阵列还是简单的SATA磁盘?
凯尔·史密斯

简单的SATA磁盘和文件系统是ext3
khizar ansari 2012年

11
为什么要在单个磁盘上运行生产Web服务器?带有单个磁盘的服务器不是服务器,它们是定时炸弹。
埃文·安德森

3
听起来好像磁盘快要死了。立即将数据迁移到带有硬件电池支持的控制器的真实RAID阵列中。
乔尔·萨拉斯

Answers:


8

随着同时访问的文件数量增加,速度会下降。硬盘驱动器不喜欢被并行访问:每次读/写磁头需要切换柱面时,您都会损失几毫秒。即使两个文件在同一圆柱上,甚至在同一轨道上,您可能仍然必须等待旋转才能从一个文件移到另一个文件。如果以每秒兆位为单位测量驱动器性能,则可以预期随着并行访问的增加,驱动器的性能将成倍下降。

fsck 对此无济于事:它只修复损坏的目录结构,不执行任何优化。

理想的解决方案是切换到固态存储,因为它没有旋转盘片的任何物理限制。但这可能是成本过高的。

下一个最佳选择是使用针对并行访问优化的RAID。请记住,可以为许多不同的性能配置文件配置RAID,因此您将需要一些时间来学习任何给定RAID硬件和驱动程序的设置。

使用积极的文件系统缓存,您可以减轻问题。如果您的系统有足够的RAM,Linux应该已经做得很好。运行一个程序,像top看有多少可用RAM。但是,如果最常用的文件不能放入RAM(或您可能会获得的任何RAM)中,这将无济于事。

穷人的解决方法是将文件拆分到几个不同的物理硬盘驱动器上(而不只是同一驱动器上的不同分区)。这并不是一个长期的可扩展解决方案,最终会花费比体面的RAID多的费用。但是,如果周围有驱动器,这可能是一个快速解决方案。

对于任何涉及硬盘驱动器的解决方案,请确保它们具有较高的旋转速度和较低的查找延迟。

我在这里写了一篇有关硬盘性能的一般背景文章:

UNIX技巧-文件系统


我认为他的hdparm基准测试与“并行访问” 没有太大关系。在我看来,听起来好像他的磁盘有故障。过去速度更快,现在却不是。可能是因为它正在搬迁部门。
埃文·安德森

尽管我认为以这种规模进行重定位会产生一些I / O错误,但这肯定是可能的。基于每秒80兆比特的非常慢的基准,我假设测试是在活动系统上运行的。那么...系统日志中是否存在I / O错误,如何hdparm执行测试以及结果每秒是“兆位”还是“兆字节”?
Seth Noble

3

我希望fsck能够完成5个小时。

相反,我会考虑(这意味着:测试,测试和测试)向reiserfs的迁移。


2
  1. 否(fsck可以修复损坏的文件系统元数据,而不是损坏的磁盘,也不是碎片整理工具)。
  2. 取决于文件系统。使用ext3,时间太长了,我要保留几个小时。诸如ext4或xfs之类的更现代的文件系统可以轻松地快一个数量级。

1

hdparm进行顺序读取。正如其他人所说,您的文件服务器磁盘应该做很多工作。

如果您收到HD错误,则这些错误应该出现在您的/ var / log /中。

为什么不先尝试“ smartctl -t short / dev / sda”,然后再尝试“ smartctl -t long / dev / sda” ??对于大多数新硬盘,即使使用高清硬盘,也可以发出此命令。聪明会给你一些结果。您可以使用“ smartctl --all / dev / sda”阅读硬盘的健康状况。

如果要向通过并发访问装载的HDD发送hdparm,这可能就是为什么您的结果比以前少很多的答案。

我应该将您的数据尽快移至RAID设置。

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.