You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux软件RAID10阵列GPT分区表丢失后的恢复方法咨询

Linux软件RAID10阵列GPT分区表丢失后的恢复方法咨询

先别慌,这种因突发电力故障导致的GPT分区表丢失是有很大概率恢复的,我给你梳理几个可行的操作步骤,一定要记住:所有操作先在磁盘镜像上测试,绝对不能直接在原盘上瞎试,避免造成不可逆的损坏!

第一步:先给所有磁盘做完整镜像

这是最关键的前置步骤,万一后续操作出错,我们还能从镜像回滚。用dd命令给每块盘做镜像(把/path/to/backup/换成你有足够空间的存储路径):

dd if=/dev/sda of=/path/to/backup/sda.img bs=4M status=progress
dd if=/dev/sdb of=/path/to/backup/sdb.img bs=4M status=progress
dd if=/dev/sdc of=/path/to/backup/sdc.img bs=4M status=progress
dd if=/dev/sdd of=/path/to/backup/sdd.img bs=4M status=progress

如果觉得dd速度慢,也可以用ddrescue,它能跳过坏块,更适合故障盘。

方法一:利用GPT备份分区表恢复

GPT分区表默认会在磁盘末尾保留一份备份,我们可以尝试用gdisk工具加载这份备份:

  1. 先在镜像上测试,比如挂载sda的镜像:losetup /dev/loop0 /path/to/backup/sda.img
  2. 运行gdisk /dev/loop0,进入交互界面
  3. 按r进入恢复与转换菜单
  4. 按l尝试从磁盘末尾加载备份分区表,如果工具提示找到有效备份,就说明有戏
  5. 确认分区结构和你之前的一致后,按w写入分区表(先在镜像上操作,没问题再换到原盘/dev/sda)
  6. 用同样的方法处理其他三块磁盘的镜像/原盘

方法二:通过RAID元数据反推分区位置

如果GPT备份也损坏了,我们可以从RAID的元数据入手,反推原来的分区范围:

  1. 运行mdadm --examine /dev/sda(或者镜像对应的loop设备),查看输出里的Data Offset和Data Size字段,这能帮我们确定RAID成员的起始和结束扇区
  2. 因为你之前是给每块盘建了第一个分区/dev/sd[abcd]1,所以分区的起始扇区通常是GPT默认的2048,结束扇区是磁盘总扇数减去33(GPT备份占用的扇区数)。你可以用fdisk -l /dev/sda查看磁盘总扇数
  3. 运行gdisk /dev/sda,按n新建分区:
    • 分区类型选primary
    • 起始扇区填2048
    • 结束扇区填[总扇数]-33
    • 分区类型GUID选fd00(Linux RAID专用类型)
  4. 按w写入分区表,同样操作其他三块盘

最后:重新组装RAID并验证

当四块盘的分区表都恢复后,尝试重新组装RAID:

mdadm --assemble --verbose /dev/md10 /dev/sd[abcd]1

如果组装成功,先别急着挂载,先检查文件系统的完整性(假设你用的是ext4):

fsck.ext4 /dev/md10

确认没问题后,就可以挂载RAID阵列查看数据了。

如果以上方法都不行,还可以试试testdisk工具,它能扫描磁盘上的分区签名,自动识别GPT分区结构,操作更可视化,适合不太熟悉命令行的用户。

备注:内容来源于stack exchange,提问作者Max Cuttins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:59:39