首先,有一个 RAID0 阵列,我通过发出命令向其中添加了一个新磁盘
mdadm --add
但是当我这样做时,由于电源问题,驱动器开始出现故障,并且从那时起阵列就没有启动。就在 mdadm 开始将 RAID0 移动到 RAID4 类型阵列之后。
我尝试过重新创建数组但我失败了,因为它现在看到以前未创建的分区。使用两个 1TB 驱动器在 /dev/md/0 阵列上仅创建了一个 2TB 大小的分区。
sdb 8:16 0 931,5G 0 disk
└─md0 9:0 0 931,4G 0 raid4
├─md0p1 259:0 0 27,3G 0 md
└─md0p2 259:1 0 421G 0 md
sdc 8:32 0 931,5G 0 disk
└─md0 9:0 0 931,4G 0 raid4
├─md0p1 259:0 0 27,3G 0 md
└─md0p2 259:1 0 421G 0 md
这也是 --examine 输出(就在阵列失败之后,但在我尝试重新创建阵列之前)
muszy@nas:~$ sudo mdadm --examine /dev/sdb
/dev/sdb:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x44
Array UUID : 05b3504e:d335720b:a0d9c0ee:dd2e7a8f
Name : nas:0 (local to host nas)
Creation Time : Wed Oct 2 12:49:47 2019
Raid Level : raid4
Raid Devices : 4
Avail Dev Size : 1953260544 (931.39 GiB 1000.07 GB)
Array Size : 2929890816 (2794.16 GiB 3000.21 GB)
Data Offset : 264192 sectors
New Offset : 261120 sectors
Super Offset : 8 sectors
State : active
Device UUID : f8ce2e05:671f6377:767d7d05:4a0f7727
Reshape pos'n : 19646976 (18.74 GiB 20.12 GB)
Delta Devices : 1 (3->4)
Update Time : Fri Oct 11 12:28:20 2019
Bad Block Log : 512 entries available at offset 8 sectors
Checksum : 509e6f70 - correct
Events : 43
Chunk Size : 512K
Device Role : Active device 1
Array State : AA.. ('A' == active, '.' == missing, 'R' == replacing)
muszy@nas:~$ sudo mdadm --examine /dev/sdc
/dev/sdc:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x46
Array UUID : 05b3504e:d335720b:a0d9c0ee:dd2e7a8f
Name : nas:0 (local to host nas)
Creation Time : Wed Oct 2 12:49:47 2019
Raid Level : raid4
Raid Devices : 4
Avail Dev Size : 1953260976 (931.39 GiB 1000.07 GB)
Array Size : 2929890816 (2794.16 GiB 3000.21 GB)
Used Dev Size : 1953260544 (931.39 GiB 1000.07 GB)
Data Offset : 264192 sectors
New Offset : 261120 sectors
Super Offset : 8 sectors
Recovery Offset : 13097984 sectors
State : clean
Device UUID : 3fc0cbbf:068b4f7e:7359304e:b26ca865
Reshape pos'n : 19646976 (18.74 GiB 20.12 GB)
Delta Devices : 1 (3->4)
Update Time : Fri Oct 11 12:28:09 2019
Bad Block Log : 512 entries available at offset 264 sectors
Checksum : 99d7e462 - correct
Events : 41
Chunk Size : 512K
Device Role : Active device 2
Array State : AAA. ('A' == active, '.' == missing, 'R' == replacing)
muszy@nas:~$ sudo mdadm --examine /dev/sdd
/dev/sdd:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x44
Array UUID : 05b3504e:d335720b:a0d9c0ee:dd2e7a8f
Name : nas:0 (local to host nas)
Creation Time : Wed Oct 2 12:49:47 2019
Raid Level : raid4
Raid Devices : 4
Avail Dev Size : 1953260544 (931.39 GiB 1000.07 GB)
Array Size : 2929890816 (2794.16 GiB 3000.21 GB)
Data Offset : 264192 sectors
New Offset : 261120 sectors
Super Offset : 8 sectors
State : active
Device UUID : 9e985730:eddba18f:6f636c8a:79ecdfc2
Reshape pos'n : 19646976 (18.74 GiB 20.12 GB)
Delta Devices : 1 (3->4)
Update Time : Fri Oct 11 12:28:20 2019
Bad Block Log : 512 entries available at offset 8 sectors
Checksum : b45db8c4 - correct
Events : 43
Chunk Size : 512K
Device Role : Active device 0
Array State : AA.. ('A' == active, '.' == missing, 'R' == replacing)
我是否有机会使用我提供的信息恢复阵列?
感谢frostschutz的帮助,我创建了覆盖层并成功启动了两个数组:
阵列 1(旧的“RAID0”):
parallel 'test -e /dev/loop{#} || mknod -m 660 /dev/looparray1{#} b 7 {#}' ::: /dev/sda /dev/sdb
parallel truncate -s1000G array1-overlay-{/} ::: /dev/sda /dev/sdb
parallel 'size=$(blockdev --getsize {}); loop=$(losetup -f --show -- array1-overlay-{/}); echo 0 $size snapshot {} $loop P 8 | dmsetup create array1{/}' ::: /dev/sda /dev/sdb
mdadm --create /dev/md/array1 --assume-clean --level=0 --chunk=512K --data-offset=264192s --raid-devices=2 /dev/mapper/array1sda /dev/mapper/array1sdb
Linux 看到“2TB 未知”分区
阵列 2(新阵列“RAID4”):
parallel 'test -e /dev/loop{#} || mknod -m 660 /dev/looparray2{#} b 7 {#}' ::: /dev/sda /dev/sdb /dev/sdd
parallel truncate -s1000G array2-overlay-{/} ::: /dev/sda /dev/sdb /dev/sdd
parallel 'size=$(blockdev --getsize {}); loop=$(losetup -f --show -- array2-overlay-{/}); echo 0 $size snapshot {} $loop P 8 | dmsetup create array2{/}' ::: /dev/sda /dev/sdb /dev/sdd
mdadm --create /dev/md/array2 --assume-clean --level=0 --chunk=512K --data-offset=261120s --raid-devices=3 /dev/mapper/array2sda /dev/mapper/array2sdb /dev/mapper/array2sdd
Linux 看到一个大小为 3TB 的 EXT4 分区,但现在它不可挂载,TestDisk 看到目录结构(标记为红色)。
当我试图将它们结合在一起时:
blockdev --getsize /dev/md/array1
3906521088
blockdev --getsize /dev/md/array2
5859790848
echo -e '0 3906521088 linear /dev/md/array1 0'\\n'3906521088 1953269760 linear /dev/md/array2 3906521088' | dmsetup create rec-array
它创建了一个没有任何用处的 3TB 驱动器。