我在 Xubuntu 20.04 上有一个使用 mdadm 创建的 RAID5。我错误地使三个驱动器中的一个发生故障。阵列仍在工作,但我在尝试恢复完整操作时收到我无法理解的错误或响应。
所以:我想知道我是否设法解决了这个问题,如果没有,我现在能做什么......
我怀疑驱动器仍然出现故障,因为 /proc/mdstat 的内容中出现了“(F)”:
root@camelot-b:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md3 : active raid5 sdf1[0](F) sdg1[3] sde1[4]
7813771264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
bitmap: 0/30 pages [0KB], 65536KB chunk
unused devices: <none>
root@camelot-b:~#
但是,--examine 的输出并未表明存在问题,实际上最后一行显示阵列状态为所有三个驱动器都处于活动状态:
root@camelot-b:~# mdadm --examine /dev/sdf1
/dev/sdf1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 07c3d55f:2c9b1534:6b0d5b78:dd9856ed
Name : camelot-x:3
Creation Time : Sun Apr 2 19:07:19 2017
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 7813771264 (3725.90 GiB 4000.65 GB)
Array Size : 7813771264 (7451.79 GiB 8001.30 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : clean
Device UUID : 24275237:b493169e:9e88df0d:ebaae551
Internal Bitmap : 8 sectors from superblock
Update Time : Fri Feb 18 17:15:50 2022
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : c9840d0f - correct
Events : 26597
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)
答案1
如果自从磁盘发生故障以来阵列上的数据几乎没有变化或者没有变化,您可能能够使用--re-add您可以检查每个驱动器上的事件数:
mdadm --examine /dev/sd[e-g]1 | egrep 'Event|/dev/sd'
如果事件数量没有落后太多(并且您已启用位图)您可以重新添加:
mdadm /dev/md3 --re-add /dev/sdf1
如果这不起作用,您将需要再次添加磁盘(这可能会触发完全重建)
mdadm /dev/md3 -a /dev/sdf1
根据文档,mdadm 在发出 add (-a, --add) 命令时会先尝试重新添加。如果您想尝试添加驱动器而不进行重新同步,并且如果重新添加不起作用,又不想立即返回到重新同步,则运行重新添加很有用。
答案2
这不是技术上的反应,但它确实有效......因为我实际上发现自己处于同样的境地。仅当机器是本地的并且您有另一台本地计算机时,此方法才有效。
**请记住,RAID5 可以恢复 1 个驱动器故障。也就是说,它会从剩余的驱动器重建阵列...只要在恢复过程中另一个驱动器没有问题。
- 从故障系统中物理移除驱动器
- 使用不同的机器格式化故障驱动器
- 将新格式化的驱动器重新插入原始机器
- RAID 阵列应开始恢复过程并重建故障驱动器
- 恢复完成后,您应该可以恢复正常运行
我不建议你进行不熟悉的配置更改。如果你的数据无法恢复,就没有必要浪费时间重建阵列,修复健康状态。