将分区表和 fsarchiver 备份从坏盘恢复到新盘

将分区表和 fsarchiver 备份从坏盘恢复到新盘

我的 openmediavault 服务器的 ssd 磁盘坏了,我换了一个新的(不同品牌,相同容量)。现在我想通过 omv 备份插件恢复我上次用 fsarchiver 做的备份,我正在关注本指南。完成前 13 个步骤后,我只剩下最后 2 个步骤了,这是完成关键事情的地方。

这些是我的新 ssd nvme 磁盘上在尝试恢复之前的分区(我已在其上安装了 OMV):

Device         Boot     Start       End   Sectors   Size Id Type
/dev/nvme0n1p1           2048 486395903 486393856 231.9G 83 Linux
/dev/nvme0n1p2      486397950 488396799   1998850   976M  5 Extended
/dev/nvme0n1p5      486397952 488396799   1998848   976M 82 Linux swap / Solaris

在我运行“恢复 grub 和分区表”步骤后:

dd if=/mnt/array/Backup/omvbackup/backup-omv-30-ago-2021_03-00-01.grubparts of=/dev/nvme0n1

现在看起来像这样:

Device         Boot Start       End   Sectors   Size Id Type
/dev/nvme0n1p1          1 488397167 488397167 232.9G ee GPT

当我尝试恢复主分区时:

fsarchiver restfs backup-omv-30-ago-2021_03-00-01.fsa id=0,dest=/dev/nvme0n1p1

我收到以下错误:

oper_restore.c#152,convert_argv_to_strdicos(): "/dev/nvme0n1p1" is not a valid block device

所以我认为我弄乱了分区表。也许 grubparts 没有写入 /dev/nvme0n1,而是写入了其他地方?在尝试恢复分区表之前,我可以看到 GRUB 安装如下:

dd bs=512 count=1 if=/dev/nvme0n1 2>/dev/null | strings

但我再也看不到它了。

编辑:不同备份文件的大小:

-rw-r--r-- 1 root users        818 *.blkid
-rw-r--r-- 1 root users        590 *.fdisk
-rw-r--r-- 1 root users 5226895118 *.fsa
-rw-r--r-- 1 root users        446 *.grub
-rw-r--r-- 1 root users       1408 *.grubparts
-rw-r--r-- 1 root users       1035 *.packages

答案1

.grubparts 文件似乎来自错误的磁盘。您的“旧”分区列表显示正常的 MBR 格式分区表,但您恢复的内容看起来像通常在 GPT 分区磁盘上找到的“保护性 MBR”——它具有类型为 0xEE 的特殊分区,通常表示“您不应该查看此处,而应该查看扇区 1 中的 GPT”。

(MBR 位于扇区 0,而“主” GPT 占用扇区 1-33,“备份” GPT 位于磁盘末尾。)

此外,GPT 磁盘通常与 UEFI 固件一起使用,而 EFI 引导过程不使用“引导扇区”——保护性 MBR 伴随着完全空白的引导代码区域是正常的。(EFI 系统的引导加载程序作为常规文件存储在常规分区中。)

有两个选项:

  • 寻找可能具有正确分区表的另一个文件。

    (此外,使用 恢复分区表后dd,您可能需要明确告诉内核重新扫描它 - 否则 /dev 节点将不会自行出现。这可以使用partx -u、 或 来完成partprobe,或者通过运行fdisk并要求它“写入”它找到的分区。)

  • 手动通过使用旧的“fdisk”输出中方便获得的“起始”和“结束”扇区号创建分区,从头开始重建分区表。

    (您不需要手动创建“扩展”分区,只需将 p1 作为“主”分区,将 p5 作为“逻辑”分区即可。)

答案2

我又在 UEFI 模式下重新安装了 OMV 来恢复分区表,由于新的 ssd 具有与旧的 ssd 相同的容量,因此我跳过了 grub 恢复部分并直接使用 fsarchive 恢复文件系统备份。

答案3

在 Raspberry OS 上使用 fsarchiver 恢复 OMV6 后,我也遇到了同样的问题。恢复的系统始终以只读模式启动。不过,以 r/w 模式重新挂载是可行的。这个问题(就我而言)实际上非常简单:/etc/fstab 通过 partuuid 而不是 /dev/mmcblk0p**** 引用文件系统。

我做了什么:

  • 重新挂载 root 权限为 r/w
  • 在 /etc/fstab 中将 PARTUUID=xyz 替换为 /dev/mmcblk0p***
  • 重启

我认为这意味着恢复后的 partuuid 与备份文件 /etc/fstab 中的 partuuid 不同。

相关内容