raw磁盤鏡像的挂載
一、offset計算法
原理:找出分區開始的位置,使用mount指令的offset參數 偏移到鏡像内容真正開始的位置
主控端:192.168.0.104
客戶機:192.168.0.108 # /boot 标準分區,/LVM 分區,
鏡像:/home/raw/kvm108.raw
需求:在104機器上面挂載108鏡像到 /mnt/raw/目錄
#檢視鏡像檔案資訊
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
mount -o loop,offset=1074790400 /home/raw/kvm108.raw /mnt/raw/
#如果分區是LVM,将提示下面資訊,無法挂載成功
mount: unknown filesystem type 'LVM2_member'
#查詢目錄空閑的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