在 Linux 软件 raid 中,定期检查文件系统的最佳做法是什么?对于单个驱动器或硬件 raid,tune2fs -c 5 -i 1w /dev/sda1
意味着每 5 次挂载检查一次文件系统,或者距离上次挂载已过去一周或更长时间。
但在 mdadm 领域,至少有三个设备可以可以通过四种方式进行检查:
- 回显检查> /sys/block/md0/md/sync_action
- tune2fs -c 5 -i 1w /dev/md0
- tune2fs -c 5 -l 1w /dev/sdal
- tune2fs -c 5 -l 1w /dev/sdb1
我想我只想自动执行 #1 和 #2。永远不要直接检查物理驱动器。 man md
说物理驱动器有不同的数据并不总是不正常的,因为有时这并不重要。
一个好的做法是在前 90 天内对硬盘的裸机部分进行几次压力测试。目标不一定是文件系统测试,而是硬件压力测试,因此e2fsck -v -f -c -c -D -C 0 /dev/md1
。此手动运行的强制 fs 检查会读取和写入整个 fs 并按字母顺序排列,同时将详细输出打印到 stdout。md 足够智能,可以在不同的硬盘上设置 RAID,但它是否足够智能,可以分别管理每个驱动器成员的坏块列表?在软件 raid /dev/md0 上执行上述 e2fsck 是否会在两个驱动器上标记坏块,即使只有一个驱动器上存在坏块?
成员驱动器 ( /dev/sdX ) 的 UUID 应该与 RAID 驱动器 ( /dev/mdY ) 相同还是不同?如果相同,则很容易找到 raid 集的所有成员。但如果相同,则基于 tune2fs 的 e2fsck 会同时注册物理成员驱动器和软件 raid。
答案1
您正在谈论的是存储不同级别的两种完全不同的检查类型。
引发的一致性检查
echo check > /sys/block/md0/md/sync_action
只是比较镜像的两侧(我假设您指的是一对镜像驱动器)。它对所比较的位的结构一无所知,因此它不会告诉您有关文件系统健康状况的任何信息。控制 fsck 的设置是文件系统的一个属性,因此只有一个选项
tunefs
有意义 -tunefs -i 1w /dev/md0
。除非自从我上次查看以来情况发生了重大变化,否则fsck
只会在挂载文件系统之前发生。fsck
通常不建议在挂载的文件系统上运行(当然e2fsck
手册页仍然这么说)。实际上,检查文件系统的频率取决于系统重新启动的频率(除非您有特殊的程序来定期umount
检查文件系统)。mount