Linux突袭与片状USB驱动器(巴士?)

我有一个镜像设置中的两个USB驱动器突袭。 它工作的很好,但USB总线是非常片状的,大约每周一次,由于我不知道的原因(显然没有什么相关的日志)驱动器将消失,并回到不同的/ devpath。 现在,mdadm通过序列号识别驱动器的function非常出色,所以我不会为驱动器字母烦恼。

对我来说,真正令人恼火的是,当驱动器回来时,它不会进入RAID

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 

这一切都很好,但每周重build一次raid可能对磁盘不是很好。

我在这里寻找的是要么解决这个问题的方法(我不认为这很可能,不能从USB总线上解决)或者某种方式来在驱动器消失时将RAID变为只读。 然后,我可以添加它,而不必重build。 它仍然是片状,但至less它不会重build。

我正在考虑使用–scan(monitor?)和一个事件程序,但是我认为,即使我没有犯错也需要相当长的一段时间。

任何想法都欢迎。

想必你有这些需要外部磁盘? 如果是这样的话,我build议把这些磁盘从USB机箱中拿出来,放进一个eSATA机箱或两个 – USB只是不是为这种devise而devise的。 如果你不需要它们是外部的,那么把它们放在一个内部的SATA / SAS总线上。 两条路线都应该使它们更加稳定,不需要软件解决方法。

为何不使用/ 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)。