PVE/Debian创建一个img虚拟磁盘文件,并挂载到本地

 cd /root #改成你的存放位置
 #如果需要的虚拟磁盘超大,dd很花费时间,可以尝试看看这个命令
 #fallocate -l 50G /root/t1.img
 dd if=/dev/zero of=/root/t1.img bs=1M count=512
 ​
 fdisk /root/t1.img #按n建立分区,然后一直回车就能建立一个分区了,最后按w保存并退出
 ls /dev/loop* #查看存在的loop设备,LXC虚拟化好像不行的
 losetup -P /dev/loop5 /root/t1.img #loop后面的数字无所谓,没被占用就行
 mkfs.ext4 /dev/loop5p1 #p1就是第一个分区
 losetup -d /dev/loop5 #使用完了要卸载loop设备
 ​
 mkdir /mnt/t1.img #建立挂载点
 fdisk -l /root/t1.img #查看扇区大小和分区起始位置,计算出偏移,偏移=扇区大小*分区起始位置,我的是1048576
 mount -o loop,offset=1048576 /root/t1.img /mnt/t1.img #他会自动寻找可用的loop设备挂载的
 df -h #查看是否挂载成功,大小和设定的不一致是1000和1024的换算问题,老生常谈我才不管
 echo HelloWorld > /mnt/t1.img/1.txt #测试写入
 cat /mnt/t1.img/1.txt #查看是否写入成功
 ​
 umount /mnt/t1.img #取消挂载
 ​

image-20240509021601070

如果要开机自动挂载,可以写到/etc/fstab中,添加nofail参数,防止挂载失败时卡引导

 nano /etc/fstab 
 #添加下面这行到文件中,保存并退出
 /root/t1.img /mnt/t1.img auto loop,offset=1048576,nofail 0 0
 ​
 #修改过/etc/fstab是需要刷新一下的
 systemctl daemon-reload
 ​
 #测试/etc/fstab是否正确且生效
 mount -a
 df -h
 ​
 ​
 #如果没错误,可以取消挂载,尝试重启  看看是否能自动挂载了
 #umount /mnt/t1.img
 #reboot
 #df -h
 #cat /mnt/t1.img/1.txt