qemu-nbd

NBD指的是Network Block Device,正如其名字的意思,NBD让用户可以通过网络访问到某个块设备,或者设备镜像。 NFS的方式只能管到文件系统层,而NBD的方式则不仅可以管到文件系统层,还可以管到更下面的块设备层。

加载 nbd 驱动

sudo modprobe nbd
lsmod | grep nbd
ls /dev/nbd*

connect qemu-nbd

$ sudo qemu-nbd -c /dev/nbd0 ./eip-cluster-ubuntu16.04-x64-20230420.qcow2
$ sudo fdisk -l /dev/nbd0
Disk /dev/nbd0: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7bda01c6

Device      Boot Start      End  Sectors Size Id Type
/dev/nbd0p1 *     2048 83886046 83883999  40G 83 Linux
$

mount to a dir

sudo mount /dev/nbd0p1 /mnt/

如果找不到nbd0p1,可能是分区丢失,可以用以下命令试试

partx -a /dev/ndb0

或者

kpartx -a /dev/ndb0

sudo chroot mnt sudo su - eipadmin

退出

root@ecs--20210331:~# umount /mnt/
root@ecs--20210331:~# ls /dev/nbd3
/dev/nbd3p1  /dev/nbd3
root@ecs--20210331:~# qemu-nbd --disconnect /dev/nbd3
/dev/nbd3 disconnected
root@ecs--20210331:~# sudo rmmod nbd
root@ecs--20210331:~#