掛載虛擬機器映象檔案裡的 LVM 邏輯分割槽

2021-08-30 22:38:12 字數 3081 閱讀 1347

如果按照 「在 centos 上安裝和配置 kvm 」 這篇文章介紹的方法安裝 guest 作業系統到乙個 raw 檔案裡(virt-install … –disk path=/home/vpsee/centos.img …),那麼在以後的維護過程中就可能會遇到麻煩。比如,前段時間 vpsee 碰到一位使用者忘了 root 密碼需要掛載這個虛擬機器的檔案系統並恢復 shadow,這時候就需要能夠掛載虛擬機器的檔案系統。虛擬機器的檔案系統在乙個 raw 檔案上,這個映象檔案完全模擬了乙個硬碟,包含硬碟分割槽表和 lvm 邏輯卷,所以不能通過 mout 簡單掛載,需要一些額外的工作,那麼如何才能掛載這個映象檔案裡的 lvm 邏輯分割槽呢?

# losetup -f

/dev/loop0

# losetup /dev/loop0 /home/vpsee/centos.img

然後通過 fdisk /dev/loop0 來檢視 centos.img 裡的分割槽表,-u 引數指明使用 sector 為單位記錄偏移量(offset)而不是 cylinder 為單位:

# fdisk -u -l /dev/loop0

disk /dev/loop0: 10.7 gb, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors

units = sectors of 1 * 512 = 512 bytes

device boot start end blocks id system

/dev/loop0p1 * 63 208844 104391 83 linux

/dev/loop0p2 208845 20964824 10377990 8e linux lvm

因為每個 sector 是 512 位元組(bytes),所以 offset 等於 208845 x 512 = 106928640,這個 offset 很重要,在下面的操作中會用到。

先解除掉 /dev/loop0 和 centos.img 的對映,然後重新用 offset = 106928640 對映起來:

# losetup -d /dev/loop0

# losetup /dev/loop0 /home/vpsee/centos.img -o 106928640

現在可以看到系統上有2個 pv(物理捲組),乙個是系統本身,乙個是 centos.img 裡面的 pv,這兩個 pv 的名字都是一樣的,是因為當初安裝系統的時候都使用了預設的名字,這帶來了麻煩,後面的操作會改變乙個 pv 的名字以方便後續操作:

# lvm pvscan

pv /dev/sda2 vg volgroup00 lvm2 [465.66 gb / 0 free]

pv /dev/loop0 vg volgroup00 lvm2 [9.88 gb / 0 free]

total: 2 [475.53 gb] / in use: 2 [475.53 gb] / in no vg: 0 [0 ]

# lvm vgchange -ay

2 logical volume(s) in volume group "volgroup00" now active

2 logical volume(s) in volume group "volgroup00" now active

因為要給兩個相同名字的 volgroup00 改名,所以要先找到他們不同的 uuid:

# vgs -v

finding all volume groups

finding volume group "volgroup00"

finding volume group "volgroup00"

vg attr ext #pv #lv #sn vsize vfree vg uuid

volgroup00 wz--n- 32.00m 1 2 0 465.66g 0 dqfs1x-qby1-knrr-l0x0-rnow-ggir-zfjkcs

volgroup00 wz--n- 32.00m 1 2 0 9.88g 0 xrqnej-aikn-qjxy-q7lf-mbdk-gsfs-blegt6

上面第2個是 centos.img 裡面的 volgroup00(9.88gb 那個),改名為 vps01:

# vgrename xrqnej-aikn-qjxy-q7lf-mbdk-gsfs-blegt6 vps01

volume group "volgroup00" successfully renamed to "vps01"

根據捲組名字和空間大小我們可以判斷我們需要掛載 logvol00 vps01(logvol01 vps01 是 swap):

# lvm lvs

lv vg attr lsize origin snap% move log copy% convert

logvol00 volgroup00 -wi-ao 460.03g

logvol01 volgroup00 -wi-ao 5.62g

logvol00 vps01 -wi--- 8.88g

logvol01 vps01 -wi--- 1.00g

現在終於可以掛載 centos.img 裡的 lvm 邏輯分割槽了:

# ls /mnt

bin dev home lib64 media opt root selinux sys usr

boot etc lib lost+found mnt proc sbin srv tmp var

使用完後,需要按順序乾淨解除安裝:

# umount /mnt

# vgchange -an vps01

0 logical volume(s) in volume group "vps01" now active

# losetup -d /dev/loop0

linux直接掛載虛擬機器磁碟映象檔案

一 通過mount加上偏移 首先需要確認下映象分割槽開始的偏移 cce lang bash fdisk l vm xp qa new.img cce 這個檔案的輸出為 disk vm xp qa new.img 21.5 gb,21474836480 bytes,41943040 sectors u...

虛擬機器如何安裝ISO映象檔案

ios映象檔案就是光碟映象檔案 image 也叫光碟映像檔案,形式上只有乙個檔案,儲存格式和光碟檔案相同,所以可以真實反映光碟的內容,它可由燒錄軟體或者映象檔案製作工具建立。虛擬機器安裝iso映象檔案與主機有些不同,詳細過程如下文所述。首先,開啟虛擬機器。選擇編輯虛擬機器設定,如圖所示。在虛擬機器設...

修改kvm虛擬機器映象檔案大小

1 檢視kvm映象的格式資訊 1 2 3 4 5 6 root base 12 199 bakup qemu img info 10.1.12.201 base 12 201 image 10.1.12.201 base 12 201 fileformat qcow2 virtual size 20...