0
点赞
收藏
分享

微信扫一扫

KVM 虚拟机镜像文件挂载


raw磁盘镜像的挂载

一、offset计算法

原理:找出分区开始的位置,使用mount命令的offset参数 偏移到镜像内容真正开始的位置

宿主机:192.168.0.104
客户机:192.168.0.108 # /boot 标准分区,/LVM 分区,
镜像:/home/raw/kvm108.raw
需求:在104机器上面挂载108镜像到 /mnt/raw/目录

1、查看镜像文件,并计算出offset偏移量 

#查看镜像文件信息
fdisk -lu /home/raw/kvm108.raw

#显示内容
Disk /home/raw/kvm108.raw: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0x00067e2a

Device Boot Start End Blocks Id System
/home/raw/kvm108.raw1 * 2048 2099199 1048576 83 Linux
/home/raw/kvm108.raw2 2099200 20971519 9436160 8e Linux LVM


#根据上述信息分析
kvm108.raw有两个分区,我们要挂载的是 LVM分区

#offset如何计算
offset=Start*Sector


#计算值
echo $[2099200*512] #结果1074790400

2、使用mount命令挂载loop设备 

mount -o loop,offset=1074790400 /home/raw/kvm108.raw /mnt/raw/

#如果分区是LVM,将提示下面信息,无法挂载成功
mount: unknown filesystem type 'LVM2_member'

3、LVM分区挂载方法

#查询目录空闲的loop设备
losetup -f #losetup -a 查询所有loop设备的关联情况

#结果
/dev/loop0

#关联loop0设备到 kvm108镜像文件
losetup -o 1074790400 /dev/loop0 /home/raw/kvm108.raw

#格式化显示物理卷的概要信息
pvs

#结果
PV VG Fmt Attr PSize PFree
/dev/loop0 vg108 lvm2 a-- <9.00g 0
/dev/sda2 centos lvm2 a-- <19.00g 0

#注意:这里的VG名称一定不能相同,虚拟机如果是默认安装,VG名称可能出现都是centos,这时要修改一下VG
本例已事先到108虚拟机上面改好vg,

#激活vg108卷组状态
vgchange -ay vg108

#结果
2 logical volume(s) in volume group "vg108" now active

#扫描所有逻辑卷
lvscan

#结果
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.00 GiB] inherit
ACTIVE '/dev/vg108/swap' [1.00 GiB] inherit
ACTIVE '/dev/vg108/root' [<8.00 GiB] inherit

#挂载
mount /dev/vg108/root /mnt/raw/

#显示挂载点
ls /mnt/raw/

#结果
total 12
lrwxrwxrwx. 1 root root 7 Aug 13 23:28 bin -> usr/bin
drwxr-xr-x. 2 root root 6 Aug 13 23:28 boot
drwxr-xr-x. 2 root root 6 Aug 13 23:28 dev
drwxr-xr-x. 74 root root 8192 Aug 17 2019 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 home
lrwxrwxrwx. 1 root root 7 Aug 13 23:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Aug 13 23:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
drwxr-xr-x. 2 root root 6 Aug 13 23:28 proc
dr-xr-x---. 2 root root 200 Aug 15 2019 root
drwxr-xr-x. 2 root root 6 Aug 13 23:28 run
lrwxrwxrwx. 1 root root 8 Aug 13 23:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv


#取消挂载
umount /mnt/raw/

#激活取消
vgchange -an vg108

#结果
0 logical volume(s) in volume group "vg108" now active

#取消关联loop设备
losetup -d /dev/loop0

二、losetup + kpartx 映射分区法

宿主机:192.168.0.104
虚拟机:192.168.0.107 #标准分区格式 /boot, /, /swap 3个分区
镜像:/home/raw/kvm107.raw #在104
需求:在104机器上面挂载107镜像到 /mnt/raw/目录

#查询目录空闲的loop设备
losetup -f #losetup -a 查询所有loop设备的关联情况

#结果
/dev/loop0

#关联loop设备到镜像文件
losetup /dev/loop0 /home/raw/kvm107.raw


#映射分区
kpartx -av /dev/loop0 #-a 添加映射关系,-v 显示映射关系,映射成功的在 /dev/mapper/下

#结果
add map loop0p1 (253:2): 0 409600 linear /dev/loop0 2048 #/boot/分区
add map loop0p2 (253:3): 0 18462720 linear /dev/loop0 411648 #/根分区
add map loop0p3 (253:4): 0 2097152 linear /dev/loop0 18874368 #/swap分区

#查看映射
ll /dev/mapper/

#结果
total 0
lrwxrwxrwx 1 root root 7 Aug 17 10:28 centos-root -> ../dm-0
lrwxrwxrwx 1 root root 7 Aug 17 10:28 centos-swap -> ../dm-1
crw------- 1 root root 10, 236 Aug 17 10:28 control
lrwxrwxrwx 1 root root 7 Aug 18 11:29 loop0p1 -> ../dm-2
lrwxrwxrwx 1 root root 7 Aug 18 11:29 loop0p2 -> ../dm-3
lrwxrwxrwx 1 root root 7 Aug 18 11:29 loop0p3 -> ../dm-4

#挂载根分区
mount /dev/mapper/loop0p2 /mnt/raw/

#查看挂载点
ls /mnt/raw/

#结果
bin boot dev etc home lib lib64 lost+found media mnt
opt proc root run sbin srv sys tmp usr var

#取消挂载
umount /mnt/raw/

#关闭映射
kpartx -dv /loop/loop0p2

举报

相关推荐

0 条评论