我有一个包含两个 USB 驱动器的 RAID,它们采用镜像设置。它工作得很好,但 USB 总线非常不稳定,大约每周一次,由于我不知道的原因(日志中似乎没有相关内容),驱动器会消失并返回到不同的 /dev 路径。现在,mdadm 可以很好地通过序列号识别驱动器,因此我不再为驱动器号而烦恼。
对我来说真正令人恼火的是当驱动器恢复时,它却没有进入突袭。
Update Time : Fri Jul 16 12:05:02 2010
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
UUID : eac43993:c6a05923:74746b96:dfc4670c (local to host razor)
Events : 0.468176
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 81 1 active sync /dev/sdf1
2 8 65 - faulty spare
我通常可以使用 mdadm --stop /dev/md_d0 和 mdadm --assemble /dev/md_d0 将驱动器添加回来;有时使用 mdadm --add /dev/md_d0 /dev/sd1。
但是,如果在驱动器“故障”时将内容写入磁盘,之后我就会得到此信息。
Number Major Minor RaidDevice State
2 8 33 0 spare rebuilding /dev/sdc1
1 8 49 1 active sync /dev/sdd1
这一切都很好,但是每周重建一次 raid 可能对磁盘不太好。
我在这里寻找的是解决这个问题的方法(我认为这不太可能,除非将其从 USB 总线上移除),或者在驱动器消失时将 raid 设置为只读。然后我可以将其添加回来而不必重建。它仍然不稳定,但至少它不必重建。
我正在考虑使用--scan(监视?)和事件程序,但我认为即使我没有犯错误,也需要相当长的时间才能完成。
欢迎任何想法。
答案1
假设您需要将它们用作外部磁盘?如果是这样,那么我建议将这些磁盘从 USB 外壳中取出,并将它们放入一个或两个 eSATA 外壳中 - USB 不是为这种东西设计的。如果您不需要将它们用作外部磁盘,那么请将它们放在内部 SATA/SAS 总线上。无论哪种方式都应该使它们更加稳定,并且不需要软件解决方法。
答案2
为什么不使用 /dev/sd[az],而使用磁盘的 Linux UUID(通用唯一标识符)。如果插入/拔出磁盘,它始终保持相同的 UUID。
查看 /dev/disk/by-uuid/ 它包含指向真实 /dev/sd[az] 设备的符号链接。
ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 2010-07-16 09:01 0bef51ef-8a76-4ae5-9e52-7306e57a8c9e -> ../../sda1
lrwxrwxrwx 1 root root 21 2010-07-16 09:01 756eb6b5-865e-419e-b9f6-f061c8473fd4 -> ../../sda2
lrwxrwxrwx 1 root root 21 2010-07-16 09:01 89b89bdb-338b-4a44-86e9-9619d78efac2 -> ../../sdb1
只需将 mdadm 目标设备更改为 /dev/disk/by-uuid/0bef51ef-8a76-4ae5-9e52-7306e57a8c9e(而不是 sda1)。