ext4 在故障磁盘上。如何避免重新挂载只读?

kei*_*u4U 0 linux ext4 bad-blocks hadoop

问题:

我负责 44 个节点的 Hadoop 集群。我们有 1.5TB WD Green Drives(非常未知)负载循环计数问题。

这些磁盘工作正常,但随着它们变老,它们显示出越来越多的坏块。重写这些坏块有一段时间了,但它们会重新出现在不同的地方。

由于这些磁盘中的大多数仅用于 Hadoop 数据节点,我们没有预算来替换它们,因此我正在寻找一种策略

  1. 不要疯狂维护集群,磁盘错误和相关的文件系统问题几乎每天都会出现。我目前的流程是:

    • 停止 Hadoop 服务、卸载磁盘、使用dmesg输出定位坏块并smartctl使用hdparm --write-sector.
    • fsck -f -y在磁盘上运行并重新安装它。
  2. 保持系统稳定。

    • Hadoop 负责处理磁盘错误(3 倍冗余),但我不想冒险损坏文件系统。

我做了什么?

目前我已将mount选项更改为:

  • erros=continue,noatime 但由于日记错误,我得到了 occosial 只读重新安装。

然后我尝试禁用日志:

  • tune2fs -O ^has_journal 这避免了只读重新挂载但似乎损坏了文件系统(这是有道理的,没有日志)

现在我正在考虑切换到

  • tune2fs -o journal_data_writebackmountdata=writeback,nobh,barrier=0

但我不确定这是否会重新引入只读重新安装。

所以,我想避免只读重新挂载,想要维护稳定的文件系统元数据但不关心数据中的错误(Hadoop 会处理这个问题)。速度也不应该受到影响。

我有哪些选择?我知道这对任何系统管理员来说都是一个噩梦。操作系统分区安装了完整的日志,我不打算在生产数据上进行测试。这严格适用于 Hadoop 数据节点/任务跟踪器硬盘。

Luc*_*man 6

您能做的最好的事情是更换磁盘。磁盘的成本不会与集群停机的成本以及您为修复坏块而投入的工作时间相提并论。因此,即使没有预算,我也会认真尝试说服您的管理层。