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

Deb*_*ian 8 image dd

我使用以下命令创建了dd/的图像dev/vda

ssh root@1.2.3.4 "dd if=/dev/vda" | dd of=/home/backup/vda.img

我无法将它安装在我传输它的本地 Ubuntu 服务器上。

我得到了这个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
Run Code Online (Sandbox Code Playgroud)

如果我尝试检查它,file我会得到:

vda.img:数据

知道它可能是什么吗?

按照 Sven 的建议使用 kpartx,我得到:

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

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

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

而在 dmesg | 我得到的尾巴

[73.445903]设备映射器:uevent:1.0.3版
[73.446574]设备映射器:ioctl:4.22.0-ioctl(2011-10-19)初始化:dm-devel@redhat.com

Sve*_*ven 6

您可能需要在映像文件中安装分区。这可以通过kpartx.

kpartx -l /path/to/image
Run Code Online (Sandbox Code Playgroud)

将列出文件内的分区和

kpartx -a /path/to/image
Run Code Online (Sandbox Code Playgroud)

将它们添加到/dev/mapper/loopXpY(在哪里XY变化),从那里你可以用mount.

查看man kpartx更多信息。


Deb*_*ian 1

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

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

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

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

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