losetup块设备映射工具¶
loop
设备是一种将自身数据映射到常规文件的块或者其他块设备的特殊块设备。 loop
设备可以像一个文件系统一样被挂载。
上述概念可能不容易理解。但是实际上在虚拟机镜像上我们经常会用到这个 loop
设备:
一个虚拟机的
raw
虚拟磁盘,如何挂载到物理主机上处理,就是通过loop
设备来实现使用
dd
命令生成的磁盘文件,可以通过loop
设备实现映射块文件,这样就能在虚拟磁盘文件中模拟多磁盘实验环境 – ZFS虚拟磁盘
挂载raw格式虚拟机磁盘¶
在 virt-builder快速构建VM工具 构建虚拟机镜像,也尝试从Fedora官方现在ARM版本的虚拟机镜像import到 Libvirt虚拟机管理器 中运行,以验证自己部署的 arch linux ARM KVM虚拟化 是否工作正常。
这时候,遇到一个问题,就是启动了 Fedora 37 Server ARM虚拟机后,不知道密码(实际上初次启动时有一个设置交互,但是当时不熟悉错过了)。这时就需要使用 losetup
来挂载 .raw
虚拟机镜像进行密码修改:
设置
loop
映射:losetup -f -P Fedora-Server-37-1.7.aarch64.raw
检查
loop
losetup -l
显示:
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0 0 0 0 0 /data/docs/Downloads/Fedora-Server-37-1.7.aarch64.raw 0 512
检查分区:
fdisk -l /dev/loop0
可以看到虚拟机磁盘的分区:
Disk /dev/loop0: 7 GiB, 7516192768 bytes, 14680064 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: 0x5c5e303a
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 * 2048 1230847 1228800 600M 6 FAT16
/dev/loop0p2 1230848 3327999 2097152 1G 83 Linux
/dev/loop0p3 3328000 14680063 11352064 5.4G 8e Linux LVM
扫描LVM卷组PV:
lvm pvscan
此时可以看到2个卷组,一个是已经属于本地操作系统的 vg-libvirt
,另一个就是虚拟磁盘上的卷组 fedora
PV /dev/loop0p3 VG fedora lvm2 [5.41 GiB / 0 free]
PV /dev/nvme0n1p9 VG vg-libvirt lvm2 [<201.08 GiB / 80.00 MiB free]
Total: 2 [<206.49 GiB] / in use: 2 [<206.49 GiB] / in no VG: 0 [0 ]
扫描LVM卷组VG:
lvm vgscan
显示:
Found volume group "fedora" using metadata type lvm2
Found volume group "vg-libvirt" using metadata type lvm2
导入卷组
fedora
lvm vgimport fedora
此时报错:
Volume group "fedora" is not exported
添加 --force
命令强制导入:
vgimport --force fedora --devices /dev/loop0p3
此时还是会提示:
WARNING: Volume groups with missing PVs will be imported with --force.
Volume group "fedora" is not exported
不过卷组已经导入,用 lvs
命令可以看到:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root fedora -wi------- 5.41g
使用 lvdisplay
可以看到 /dev/fedora/root
的LV路径
重要:卷组需要激活才能使用 (
-a
表示 active,后面跟y
表示激活,跟n
表示关闭激活 ):vgchange -ay fedora
此时提示:
1 logical volume(s) in volume group "fedora" now active
此时在 /dev/mapper/
目录下欧 fedora-root
设备:
ls -lh /dev/mapper/
可以看到:
lrwxrwxrwx 1 root root 7 Dec 7 00:14 fedora-root -> ../dm-6
可以挂载文件系统了:
mount /dev/mapper/fedora-root /mnt
此时使用 df -h
就可以看到挂载好的文件系统:
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/fedora-root 5.4G 2.5G 3.0G 46% /mnt
修改挂载的 /mnt/etc/shadow
将:
root:!locked::0:99999:7:::
修改成:
root:::0:99999:7:::
再从系统中取消掉
fedora
激活,并export:vgchange -an fedora # 不要执行vgexport,这使得虚拟机不能自动导入这个lvm #lvm vgexport fedora
完成操作后,可以取消
loop
设备映射:losetup --detach /dev/loop0