如何挂载数字海洋的dd图像?

我使用以下命令创build了/ dev/vdadd映像:

ssh [email protected]“dd if = / dev / vda”| dd = / home / backup / vda.img

我无法将其安装在我调用它的本地Ubuntu服务器上。

我在dmesg | tail得到这个 dmesg | tail

 [763158.222159] EXT4-fs error (device loop0): ext4_map_blocks:504: inode #8:block 10541546: comm mount: lblock 23018 mapped to illegal pblock (length 1) [763158.222299] jbd2_journal_bmap: journal block not found at offset 23018 on loop0-8 [763158.222367] JBD2: bad block at offset 23018 [763158.222581] JBD2: recovery failed [763158.222588] EXT4-fs (loop0): error loading journal 

如果我试图检查出来的file我得到:

vda.img:数据

任何想法可能是什么?

作为斯文build议使用kpartx我得到:

kpartx -l /home/backup/vda.img
循环删除:/ dev / loop0

我已经重新启动系统,并再次尝试命令:

kpartx -lv /home/backup/vda.img
ioctl:LOOP_CLR_FD:设备或资源繁忙
不能删除循环:/ dev / loop0

并在dmesg | 尾巴我得到

[73.445903] device-mapper:uevent:version 1.0.3
[73.446574] device-mapper:ioctl:4.22.0-ioctl(2011-10-19)initialised:[email protected]

您可能需要在映像文件中加载分区。 这可以用kpartx来完成。

 kpartx -l /path/to/image 

将列出文件中的分区和

 kpartx -a /path/to/image 

将它们添加到/dev/mapper/loopXpY (其中XY变化),从那里你可以挂载他们。

看到man kpartx更多的信息。

我已经设法通过以下方式解决问题:

我检查了我希望复制的分区的大小,然后在备份服务器上创build了一个具有该大小的本地文件,并使用以下命令在其中创build了分区:

fallocate -l 85899345920 vda.img
fdisk -H 16 vda.img
kpartx -a vda.img
mount / dev / mapper / loop1p1 / mnt / test / -t ext4

然后我用dd将数据从服务器复制到备份分区。

检查了一切,似乎都很好。