![ext4 FS 映像在第一次挂载时损坏](https://linux22.com/image/944647/ext4%20FS%20%E6%98%A0%E5%83%8F%E5%9C%A8%E7%AC%AC%E4%B8%80%E6%AC%A1%E6%8C%82%E8%BD%BD%E6%97%B6%E6%8D%9F%E5%9D%8F.png)
我正在用一个新的更大的 M.2 SSD 替换它。我想在取出旧 SSD 之前保存现有分区的映像,以便在设置新安装时可以参考它并确保不会丢失任何东西。我的机器上只有一个 SSD 插槽,所以我不能使用 SSD 本身,所以这就是映像文件的用途。
我以为这会相当简单,但我遇到了一个奇怪的问题。图像创建似乎没有问题,我可以循环挂载图像,没有问题。但在挂载的文件系统上探索了一会儿之后,我得到了各种错误,例如
"ls: reading directory <directory> : Bad message"
我使用一个简单的 dd 命令创建了图像:
dd if=/dev/nvme0n1p5 of=backup.img bs=64kb status=progress
当它们创建完成后,我在没有安装它们的情况下检查了图像:
fsck.ext4 backup.img
然后报告说图像是干净的。
然后我挂载该图像:
mount backup.img <mnt_pnt>
然后我执行“ls -R”命令,并收到上面提到的“错误消息”错误。
如果我卸载文件系统并再次运行 fsck,它会报告各种 inode 错误。
如果我直接挂载实际分区,则不会出现任何错误,并且列出“错误消息”错误的文件也没有错误。
基础系统是 Kubuntu 20.04。我确保在开始备份之前对所有分区强制执行 fsck。备份被放置在通过 CIFS 安装的 NAS 驱动器上。
上述过程在 Kubuntu 21.20 Live USB 系统上执行。
我究竟做错了什么?
编辑:我查看了 CloneZilla 和 fsarchiver。它们似乎承诺了很多,但我的问题是我不想在映像化这些文件系统后恢复它们。我只想能够在新的、全新的 ubuntu 安装上安装它们并提取我需要的文件。我尝试了 CloneZilla 的说明(他们自己说这是一种变通方法),但在我解压映像后它无法安装它。我还不确定 fsarchiver。
答案1
以防其他人遇到这种情况:我最终使用 e2image 来对分区进行映像处理,而不是直接使用 dd。它似乎可以生成没有我在问题中列出的任何问题的映像,并且我可以将映像挂载为环回设备。