Linux软件RAID恢复

我看到mdadm –detail和mdadm –examine之间的差异,我不明白为什么。

这个输出

mdadm --detail /dev/md2 /dev/md2: Version : 0.90 Creation Time : Wed Mar 14 18:20:52 2012 Raid Level : raid10 Array Size : 3662760640 (3493.08 GiB 3750.67 GB) Used Dev Size : 1465104256 (1397.23 GiB 1500.27 GB) Raid Devices : 5 Total Devices : 5 Preferred Minor : 2 Persistence : Superblock is persistent 

似乎与此相矛盾。 (对于arrays中的每个磁盘都是一样的)

 mdadm --examine /dev/sdc2 /dev/sdc2: Magic : a92b4efc Version : 0.90.00 UUID : 1f54d708:60227dd6:163c2a05:89fa2e07 (local to host) Creation Time : Wed Mar 14 18:20:52 2012 Raid Level : raid10 Used Dev Size : 1465104320 (1397.23 GiB 1500.27 GB) Array Size : 2930208640 (2794.46 GiB 3000.53 GB) Raid Devices : 5 Total Devices : 5 Preferred Minor : 2 

数组是这样创build的。

 mdadm -v --create /dev/md2 \ --level=raid10 --layout=o2 --raid-devices=5 \ --chunk=64 --metadata=0.90 \ /dev/sdg2 /dev/sdf2 /dev/sde2 /dev/sdd2 /dev/sdc2 

5个独立驱动器中的每一个都有这样的分区。

 Disk /dev/sdc: 1500.3 GB, 1500301910016 bytes 255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00057754 Device Boot Start End Blocks Id System /dev/sdc1 2048 34815 16384 83 Linux /dev/sdc2 34816 2930243583 1465104384 fd Linux raid autodetect 

背景故事

所以SATA控制器在我提供一些支持的一个盒子里失败了。 失败是一个丑陋的,所以个人的驱动器一点一点落在arrays之外。 虽然有备份,但我们并没有像我们真正需要的那样频繁地完成。 如果可以的话,我正在尝试恢复一些数据。

我有额外的硬件,我可以再次访问驱动器。 驱动器似乎很好,我可以使数组和文件系统处于活动状态并装入(使用只读模式)。 我能够访问文件系统上的一些数据,并且已经复制了这些数据,但是当我尝试复制最新的数据时,我看到了很多错误。

当我试图访问最新的数据时,我得到如下的错误,这使我认为数组大小的差异可能是问题。

 Mar 14 18:26:04 server kernel: [351588.196299] dm-7: rw=0, want=6619839616, limit=6442450944 Mar 14 18:26:04 server kernel: [351588.196309] attempt to access beyond end of device Mar 14 18:26:04 server kernel: [351588.196313] dm-7: rw=0, want=6619839616, limit=6442450944 Mar 14 18:26:04 server kernel: [351588.199260] attempt to access beyond end of device Mar 14 18:26:04 server kernel: [351588.199264] dm-7: rw=0, want=20647626304, limit=6442450944 Mar 14 18:26:04 server kernel: [351588.202446] attempt to access beyond end of device Mar 14 18:26:04 server kernel: [351588.202450] dm-7: rw=0, want=19973212288, limit=6442450944 Mar 14 18:26:04 server kernel: [351588.205516] attempt to access beyond end of device Mar 14 18:26:04 server kernel: [351588.205520] dm-7: rw=0, want=8009695096, limit=6442450944 

你确定你的命令行来创build数组吗? 我的猜测是,这是一个“标准”4驱动raid10arrays与热备用驱动器,这将解释/ dev / sdc2的结果

你能告诉我们结果:

 cat /proc/mdstat cat /etc/mdadm.conf mdadm --examine /dev/sdx2 ( each drive ) 

有了这个,您可以猜测哪个驱动器是热备份,因此您将能够正确重buildarrays。 当然,正如3dinfluence所述,在重新configuration数组之前,您应该复制数据。

编辑:也可能不是浪费时间来运行:每个驱动器上的smartctl -a /dev/sdx (如果报告错误,请检查输出的结尾),然后是smartcl -t long /dev/sdx和3或4小时后smartctl -a再次检查5个磁盘是否真的很好。 如果一个磁盘报告错误,也许它被mdadm检测为错误,所以mdadm打开备用驱动器(总是猜测)

编辑2:如果vgs报告:vgdisplay显示Alloc PE /大小3.00 TiB,自由PE /大小421.08这意味着你的PV已经神秘地增长了421G ..我坚信我的情况:“神秘”增长是一个错误的arraysconfiguration。 数组的实际大小是3T。 你没有正确地重新组装,所以它是腐败的。 为了正确地重新组装,您需要检索原始configuration,以及哪个驱动器是备用驱动器。 祝你好运。

如果你可以用dd复制驱动器,那么我会这样做。 尽可能保持原有的驱动器不变。

那么这是一个从髋关节的事情总拍摄,但是我想尝试,如果我在这种情况下。 随着系统中的克隆驱动器,我会使用擦除所有的RAID元数据。
mdadm --zero-superblock /dev/sdx#
在每个涉及的驱动器上。

然后使用该命令重新创build数组。
mdadm -v --create /dev/md2 \
--level=raid10 --layout=o2 --raid-devices=5 \
--chunk=64 --metadata=0.90 --assume-clean \
/dev/sdg2 /dev/sdf2 /dev/sde2 /dev/sdd2 /dev/sdc2

这应该摆脱所有的RAID级别问题。 从那里你可以尝试重新安装文件系统,看看还剩下什么。 如果这不起作用,然后重新克隆你的驱动器,并尝试其他的东西:)