我有一台运行Debian Squeeze的服务器,还有一个我没有自己设置的3个500 GB的RAID5系统。 启动时,RAIDarrays中一个分区的状态似乎不好。
md: bind<sda2> md: bind<sdc2> md: bind<sdb2> md: kicking non-fresh sda2 from array! md: unbind<sda2> md: export_rdev(sda2) raid5: device sdb2 operational as raid disk 1 raid5: device sdc2 operational as raid disk 2 raid5: allocated 3179kB for md1 1: w=1 pa=0 pr=3 m=1 a=2 r=3 op1=0 op2=0 2: w=2 pa=0 pr=3 m=1 a=2 r=3 op1=0 op2=0 raid5: raid level 5 set md1 active with 2 out of 3 devices, algorithm 2 RAID5 conf printout: --- rd:3 wd:2 disk 1, o:1, dev:sdb2 disk 2, o:1, dev:sdc2 md1: detected capacity change from 0 to 980206485504 md1: unknown partition table
mdstat也告诉我分区丢失了:
Personalities : [raid1] [raid6] [raid5] [raid4] md1 : active raid5 sdb2[1] sdc2[2] 957232896 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU] md0 : active raid1 sda1[0] sdc1[2](S) sdb1[1] 9767424 blocks [2/2] [UU]
运行sudo mdadm -D ,分区显示为已删除,而数组已降级。
/dev/md1: Version : 0.90 Creation Time : Mon Jun 30 00:09:01 2008 Raid Level : raid5 Array Size : 957232896 (912.89 GiB 980.21 GB) Used Dev Size : 478616448 (456.44 GiB 490.10 GB) Raid Devices : 3 Total Devices : 2 Preferred Minor : 1 Persistence : Superblock is persistent Update Time : Thu Aug 11 16:58:50 2011 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : 03205c1c:cef34d5c:5f1c2cc0:8830ac2b Events : 0.275646 Number Major Minor RaidDevice State 0 0 0 0 removed 1 8 18 1 active sync /dev/sdb2 2 8 34 2 active sync /dev/sdc2 /dev/md0: Version : 0.90 Creation Time : Mon Jun 30 00:08:50 2008 Raid Level : raid1 Array Size : 9767424 (9.31 GiB 10.00 GB) Used Dev Size : 9767424 (9.31 GiB 10.00 GB) Raid Devices : 2 Total Devices : 3 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Thu Aug 11 17:21:20 2011 State : active Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 UUID : f824746f:143df641:374de2f8:2f9d2e62 Events : 0.93 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 - spare /dev/sdc1
但是, md0似乎没问题。 那么,这一切告诉我什么? 即使md0正在工作,磁盘可能是错误的吗? 如果没有,我可以重新添加/dev/sda2到md1数组来解决问题吗?
RAID中的R表示宿主。
RAID 5是N+1 redundant :如果你丢失了一个磁盘,那么你的系统将保持正常运行,只要你不丢失另一个。 如果你失去了第二个磁盘,你现在处于N-1 ,你的宇宙崩溃了(或者至less你失去了大量的数据)。
就像SvenW所说的那样,把磁盘换成可能的 (根据你的发行版的指令来replacemd RAIDarrays中的磁盘,为了上帝的缘故,确保你更换了正确的磁盘!拔出其中一个活动磁盘真的会让你的日子变得糟糕。 )
另外请注意,当您更换RAID 5中的磁盘时,由于新驱动器被重build(旧磁盘上的大量读取,新磁盘上的大量写入),会产生大量磁盘活动。 这有两个主要的含义:
在重build过程中,您的系统会很慢。
速度有多慢取决于您的磁盘和磁盘I / O子系统。
在重build期间/不久之后,您可能会丢失另一张磁盘。
(所有的磁盘I / O有时会触发控制器声明为“坏”的另一个驱动器的足够的错误)。
#2的机会增加,因为你的arrays中有更多的磁盘,并遵循硬盘驱动器死亡率的标准“浴盆曲线”。 这就是为什么你需要备份的原因之一,也是你听到在ServerFault上经常重复的“RAID 不是备份”的口号的原因之一。
保持arrays与损坏的磁盘一起工作是RAID5的确切目的。 它保留冗余信息,以便您可以丢失一个磁盘,并且不会丢失数据。
我build议尽快更换磁盘,因为如果你丢失了另一个磁盘,所有的数据将会消失。
即使/dev/sda1 现在在md0工作正常,同一个磁盘( sda2 )上的其他分区出现故障的事实也会影响驱动器的运行状况。 我必须同意这里已经expression的其他意见: 立即更换sda驱动器。
当然,这意味着你需要mdadm --fail和mdadm --remove从arraysmd0 mdadm --fail分区sda1 ,尽pipe现在看起来很好。 当你安装replace驱动器时,你需要确保它的分区至less和旧驱动器上的分区一样大,这样它的分区就可以正确的添加到md0和md1arrays中。