我的 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 不同。