我有一个6设备raid 5arrays有1个磁盘坏了,然后由于停电,机器关机,当它开始时,所有的磁盘显示为备用以下mdadm -E输出。
/dev/sda5: Magic : a92b4efc Version : 1.2 Feature Map : 0x0 Array UUID : b480fe0c:c9e29256:0fcf1b0c:1f8c762c Name : GATEWAY:RAID5_500G Creation Time : Wed Apr 28 16:10:43 2010 Raid Level : -unknown- Raid Devices : 0 Avail Dev Size : 976768002 (465.76 GiB 500.11 GB) Used Dev Size : 976765954 (465.76 GiB 500.10 GB) Data Offset : 2048 sectors Super Offset : 8 sectors State : active Device UUID : a8499a91:628ddde8:1cc8f4b9:749136f9 Update Time : Sat May 19 23:04:23 2012 Checksum : 9950883c - correct Events : 1 Device Role : spare Array State : ('A' == active, '.' == missing)`
此md设备是LVM卷组的物理卷的一部分。
我想重新创build数组使用mdadm –create –assume-clean使用1个设备缺失。 我正在通过检查创build的设备的UUID来检查设备是否正确创build,如果设备被正确创build,该UUID将匹配。
我已经尝试了一些我认为正确的磁盘顺序的组合,但是我认为我被这个事实绊倒了,因为我用来创build这个MD设备的mdadm是一些2.x系列,现在我们已经在3了。 x(我可能采取了一些最初的默认设置,我不记得)所有的“默认设置”已经改变了版本,所以我可以试试这些? 像块大小? 我们可以手动configuration超级/数据偏移吗? 当我们做一个mdadm的时候,那些意义重大 – 创build – 高清 – 干净?
谢谢你,安舒
尽pipe在最好的世界中,mdadm在组装或检查时应该能够检测到你的超级块格式版本,但你可以尝试明确地指定一个较旧的超级块格式版本,使用mdadm的-e 0.90参数,看看–examine必须说的那。
超级块偏移量有一个与设备末端相关的硬编码位置 (在你的情况下是分区),如果设备的末端已经移动了(即通过改变分区大小或者将一个raw-copy复制到一个更大的磁盘),mdadm会无法find正确的副本。
它看起来有点像你的超级块被混淆 – 如果是这样的话,你将无法“组装”没有一些手动工作。 你应该检查所有的驱动器是否有一个有效的超级块(superblock) – 在重buildMDarrays时,可能会有一个复制的地方,这将会使你省去很多的试错。
恢复的一般方法是使用mdadm --build ,块大小为64K(旧的mdraid默认值,后来改为512K),设备的数量和假定的RAID级别作为常量参数,然后洗牌设备顺序除非你得到一个工作文件系统。 不用说,你应该使用你的硬盘的数据拷贝 ,这样你不会不可撤销地通过发布不熟练的命令来改变数据。