我有一个 Linux 软件 Raid5 阵列 (md1),包含 4 x 16TB + 2 x 8TB 硬盘。2 x 8TB 硬盘合并在一起 (Raid0 阵列;md0),作为 (第五个) 16TB 设备工作。这仅用于数据存储。由于需要移除 2 x 8TB,我决定将设备数量缩减为 4。因此我执行了以下步骤:
mdadm --grow /dev/md1 --array-size 46883175936
mdadm --grow --raid-devices=4 /dev/md1 --backup-file=/home/backup
细心的读者会注意到,缺少一个步骤,即在处理 mdadm 之前调整文件系统的大小。
最终的重塑过程现在停留在 0%:
md1 : active raid5 md0[5](S) sda1[0] sdb1[3] sde1[4] sdc1[2]
46883175936 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUUU]
[>....................] reshape = 0.0% (1/15627725312) finish=2686015287.7min speed=0K/sec
md0 : active raid0 sdd[0] sdf[1]
15627788288 blocks super 1.2 512k chunks
不过,iostat
确实表明这些硬盘上有一些操作:
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme0n1 155.89 564.43 443.38 108549018 85268978
sda 2851.68 82114.67 2400.81 15791944384 461714155
sdb 2851.88 82115.09 2401.49 15792024433 461844519
sdc 2852.37 82143.80 2401.57 15797546322 461859251
sdd 866.01 13.34 41827.19 2565819 8044026920
sde 2852.42 82143.79 2402.46 15797544281 462031635
sdf 866.50 14.33 41835.12 2755774 8045552820
看起来mdadm --detail /dev/md1
不错:
/dev/md1:
Version : 1.2
Creation Time : Tue Jun 1 17:25:18 2021
Raid Level : raid5
Array Size : 46883175936 (43.66 TiB 48.01 TB)
Used Dev Size : 15627725312 (14.55 TiB 16.00 TB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Fri Oct 15 15:42:47 2021
State : clean, reshaping
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Reshape Status : 0% complete
Delta Devices : -1, (5->4)
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : 5457f23e:faa7ee47:b2c62a37:f4c78526
Events : 1064286
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
2 8 33 1 active sync /dev/sdc1
4 8 65 2 active sync /dev/sde1
3 8 17 3 active sync /dev/sdb1
5 9 0 - spare /dev/md0
尽管如此,dmesg
还是直接提示了错误:
EXT4-fs (md1): bad geometry: block count 15627725312 exceeds size of device (11720793984 blocks)
我尝试取消重塑过程,但无济于事。我被困住了。由于 md1 上已经有重要数据,我非常想恢复 md1。我有一个备份,但这遗漏了一些最近的数据。有没有办法取消重塑进程?由于它仍然处于 (1/15627725312),我不希望丢失数据。或者还有其他建议来恢复 md1(带或不带 md0)?
我非常感谢您的每一条建议。如果您需要更多信息,请告诉我。
编辑:我可以运行以下命令:
mdadm --create /dev/md1 --level=5 --raid-devices=5 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sde1 /dev/md0 --assume-clean --readonly
这会在之前的状态中创建阵列。然而,文件系统似乎仍然损坏。由于没有硬盘故障,我假设数据应该仍然在那里,不会被覆盖。有什么方法可以恢复文件系统吗?我尝试了 testdisk,它可以检测到linux sys. data
,但无法恢复这些文件。还有其他程序可以解决这个问题吗?
再次感谢您提出的任何建议!提前谢谢您!