PVE下挂载一个img磁盘镜像是分为两步的:
使用 fdisk 命令得知这个img磁盘镜像中各个分区的起始位置,就是偏移量;
使用 mount 把磁盘镜像以回环设备的形式挂载到文件系统的某个目录上,需要指定分区的偏移量。
假设 DS918_7.21.img 已经存在于 /var/lib/vz/template/iso/ 目录下,可以查看这个回环设备的分区信息:
1 2 3 4 5 6 7 8 9 10 11 12 ➜ / fdisk -lu /var/lib/vz/template/iso/DS918_7.21.img Disk /var/lib/vz/template/iso/DS918_7.21.img: 1 GiB, 1073741824 bytes, 2097152 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: 0x16af7bb3 Device Boot Start End Sectors Size Id Type /var/lib/vz/template/iso/DS918_7.21.img1 * 2048 104447 102400 50M 83 Linux /var/lib/vz/template/iso/DS918_7.21.img2 104448 206847 102400 50M 83 Linux /var/lib/vz/template/iso/DS918_7.21.img3 206848 2097151 1890304 923M 83 Linux
运行结果如下:
可以得知第一个分区的起始位置是在整个磁盘的第 2048 扇区(从0计数),而每一个扇区大小是512字节,所以第一个分区的偏移量是 2048 * 512 = 1048576。其实,如果你预先已经知道了各个分区的偏移量,那么之前的这些操作都可以跳过,直接进行下面的操作。上面的这些操作,就是为了获知分区的偏移量的。
为了挂载第一个分区,使用如下命令:
1 2 mkdir /mnt/img mount -o loop,offset=1048576 /var/lib/vz/template/iso/DS918_7.21.img /mnt/img
执行之后,img文件中的第一个分区就已经挂载在了 img 目录上了,挂载其它分区也是类似的。
1 2 ➜ img ls ARPL-VERSION boot EFI grub_cksum.syno GRUB_VER logs user-config.yml
取消挂载操作