一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

掛載KVM Guest操作系統(tǒng)磁盤

 碼農(nóng)書館 2017-12-22

使用虛擬機(jī)時(shí), 發(fā)現(xiàn)想要修改虛擬機(jī)中的文件非常麻煩, 需要啟動(dòng)虛擬機(jī), 然后再登錄進(jìn)去修改.

對(duì)于已經(jīng)關(guān)閉的虛擬機(jī), 為了修改一個(gè)文件而啟動(dòng), 非常耽誤時(shí)間.

對(duì)于一個(gè)無法啟動(dòng)的虛擬機(jī)(比如啟動(dòng)文件損壞), 則束手無策.

 

因此, 掌握在主機(jī)中掛載 Guest 的操作系統(tǒng)磁盤, 并修改其中的內(nèi)容的方法在某些時(shí)候會(huì)非常有用.

 

1. 掛載 Guest 操作系統(tǒng)磁盤的方法

掛載 Guest 操作系統(tǒng)磁盤的方法主要有以下3種:

  1. guestfish : 支持lvm, 速度較慢
  2. lomount   : 不支持lvm, 速度快
  3. kpartx    : 支持lvm, 速度快

 

使用上述3種工具之前, 我先安裝了2個(gè) kvm 虛擬機(jī), 都是debian7.6 x86_64, 一個(gè)是普通分區(qū), 一個(gè)是LVM分區(qū).

2個(gè)系統(tǒng)的磁盤在默認(rèn)路徑中

root@debian-113:~# ll /var/lib/libvirt/images
total 16777320
-rw------- 1 root root 8589934592 Sep 18 12:48 debian7.6.img
-rw------- 1 root root 8589934592 Sep 18 13:08 debian7.6-lvm.img

 

2. 方法1 - guestfish

2.1 使用 guestfish 對(duì) 普通Guest的磁盤進(jìn)行一些基本的操作

root@debian-113:~# apt-get install guestfish            <-- 安裝 guestfish 工具包, 中途跳出一個(gè)選擇畫面, 選擇no
root@debian-113:~# guestfish                            <-- 進(jìn)入 guestfish

Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

><fs> add /var/lib/libvirt/images/debian7.6.img         <-- 掛載 debian7.6的系統(tǒng)磁盤(非LVM分區(qū))
><fs> launch                                            <-- 啟動(dòng)Guest, 這里會(huì)慢一些, 如果有錯(cuò)誤, 參見下面的 *注1*
 100% ?------------------? 00:00
><fs> list-devices                                      <-- 查看 Guest 中的磁盤
/dev/vda

><fs> sfdisk-l /dev/vda                                 <-- 查看 Guest 中的磁盤分區(qū)

Disk /dev/vda: 16644 cylinders, 16 heads, 63 sectors/track
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/vda1   *      2+   5115-   5114-   2577408   83  Linux           <-- 這個(gè)應(yīng)該是根分區(qū) /
/dev/vda2       5117+  16642-  11525-   5808129    5  Extended
/dev/vda3          0       -       0          0    0  Empty
/dev/vda4          0       -       0          0    0  Empty
/dev/vda5       5117+   5741-    624-    314368   82  Linux swap / Solaris
/dev/vda6       5743+  16642-  10899-   5492736   83  Linux           <-- 這個(gè)應(yīng)該是home分區(qū)  /home

><fs> mount /dev/vda6 /                                               <-- 掛載 Guest 操作系統(tǒng)磁盤
><fs> ls /                                                            <-- 顯示掛載的內(nèi)容, 就是Guest的 /home
lost+found
wangyubin

# Guest磁盤上新建文件
><fs> touch /wangyubin/guestfish                                      <-- Guest的磁盤上新建一個(gè)文件
><fs> vi /wangyubin/guestfish                                         <-- 編輯這個(gè)文件, 輸入 test guestfish

# 將Host上的hostname文件上傳到Guest的 /home/wangyubin/from-host
><fs> upload /etc/hostname /wangyubin/from-host

# 卸載 Guest 的/home分區(qū), 重新掛載Guest的 / 分區(qū)
><fs> mounts
/dev/vda6
><fs> umount /dev/vda6
><fs> mount /dev/vda1 /
><fs> ls /
bin
boot
dev
etc
home
initrd.img
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
selinux
srv
sys
tmp
usr
var
vmlinuz

# 將 Guest上的 hostname 文件下載到 Host的 /home/from-guest
><fs> download /etc/hostname /home/from-guest

# 卸載Guest磁盤, 退出 guestfish
><fs> mounts 
/dev/vda1
><fs> umount /dev/vda1 
><fs> quit

 

*注1* guestfish中, launch時(shí)出現(xiàn)錯(cuò)誤的解決方法:

><fs> launch 
febootstrap-supermin-helper: ext2: parent directory not found: /lib: File not found by ext2_lookup
libguestfs: error: external command failed, see earlier error messages
><fs> quit

root@debian:~# update-guestfs-appliance

 

2.2 驗(yàn)證 guestfish 對(duì)普通磁盤的修改結(jié)果

1. HOST - 驗(yàn)證是否有 Guest的hostname文件, 并且內(nèi)容正確?

root@debian-113:~# cat /home/from-guest      <-- 內(nèi)容正確, 參見下面cat出的Guest上的hostname
debian
root@debian-113:~# cat /etc/hostname         <-- Host的hostname內(nèi)容, 用于驗(yàn)證 from-host的內(nèi)容
debian-113

 

2. GUEST - 驗(yàn)證是否有新建的文件? 是否有 Host的hostname文件, 并且內(nèi)容正確?

# virt-manager 啟動(dòng) guest之后, 登錄進(jìn)去執(zhí)行以下命令
root@debian:~# ls /home/wangyubin/               <-- 新建的文件和upload的文件都在
from-host  guestfish
root@debian:~# cat /home/wangyubin/from-host     <-- 內(nèi)容正確, 參見上面cat出的Host上的hostname
debian-113
root@debian:~# cat /home/wangyubin/guestfish     <-- 新建的文件內(nèi)容正確
test guestfish
root@debian:~# cat /etc/hostname                 <-- Guest的hostname內(nèi)容, 用于驗(yàn)證 from-guest的內(nèi)容
debian

 

2.3 使用 guestfish 對(duì) LVM分區(qū)的Guest磁盤進(jìn)行一些基本的操作

root@debian-113:~# guestfish 

Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

><fs> add /var/lib/libvirt/images/debian7.6-lvm.img
><fs> launch 
><fs> list-devices 
/dev/vda
><fs> sfdisk-l /dev/vda

Disk /dev/vda: 16644 cylinders, 16 heads, 63 sectors/track
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/vda1   *      2+    495-    494-    248832   83  Linux
/dev/vda2        497+  16642-  16145-   8136705    5  Extended
/dev/vda3          0       -       0          0    0  Empty
/dev/vda4          0       -       0          0    0  Empty
/dev/vda5        497+  16642-  16145-   8136704   8e  Linux LVM         <-- 這里看出是LVM

><fs> lvs                 <-- 查看LVM的邏輯卷
/dev/debian/home
/dev/debian/root
/dev/debian/swap_1

><fs> mount /dev/debian/home /   <-- 掛載 /home 對(duì)應(yīng)的LVM邏輯卷
><fs> ls /
lost+found
wangyubin

# Guest磁盤上新建文件 - 步驟同上面普通磁盤
><fs> touch /wangyubin/guestfish-lvm                           <-- Guest的磁盤上新建一個(gè)文件
><fs> vi /wangyubin/guestfish-lvm                              <-- 編輯這個(gè)文件, 輸入 test guestfish lvm

# 將Host上的hostname文件上傳到Guest的 /home/wangyubin/from-host-lvm
><fs> upload /etc/hostname /wangyubin/from-host-lvm

# 卸載 Guest 的/home分區(qū), 重新掛載Guest的 / 分區(qū) 都是LVM格式
><fs> mounts
/dev/debian/home
><fs> umount /dev/debian/home 
><fs> lvs
/dev/debian/home
/dev/debian/root
/dev/debian/swap_1
><fs> mount /dev/debian/root /
><fs> ls /
bin
boot
dev
etc
home
initrd.img
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
selinux
srv
sys
tmp
usr
var
vmlinuz

# 將 Guest上的 hostname 文件下載到 Host的 /home/from-guest-lvm
><fs> download /etc/hostname /home/from-guest-lvm

# 卸載Guest磁盤, 退出 guestfish
><fs> mounts 
/dev/debian/root
><fs> umount /dev/debian/root 
><fs> quit

 

2.4 驗(yàn)證 guestfish 對(duì)LVM磁盤的修改結(jié)果

1. HOST - 驗(yàn)證是否有 Guest的hostname文件, 并且內(nèi)容正確?

root@debian-113:~# cat /home/from-guest-lvm      <-- 內(nèi)容正確, 參見下面cat出的Guest上的hostname
debian
root@debian-113:~# cat /etc/hostname             <-- Host的hostname內(nèi)容, 用于驗(yàn)證 from-host的內(nèi)容
debian-113

 

2. GUEST - 驗(yàn)證是否有新建的文件? 是否有 Host的hostname文件, 并且內(nèi)容正確?

# virt-manager 啟動(dòng) guest之后, 登錄進(jìn)去執(zhí)行以下命令
root@debian:~# ls /home/wangyubin/                   <-- 新建的文件和upload的文件都在
from-host-lvm  guestfish-lvm
root@debian:~# cat /home/wangyubin/from-host-lvm     <-- 內(nèi)容正確, 參見上面cat出的Host上的hostname
debian-113
root@debian:~# cat /home/wangyubin/guestfish-lvm     <-- 新建的文件內(nèi)容正確
test guestfish lvm
root@debian:~# cat /etc/hostname                     <-- Guest的hostname內(nèi)容, 用于驗(yàn)證 from-guest的內(nèi)容
debian

 

3. 方法2 - lomount

lomount是Xen環(huán)境下的工具, 掛載Guest的操作系統(tǒng)磁盤時(shí)比guestfish要快很多, 但是不支持lvm.

由于沒有Xen的環(huán)境, 這里就不嘗試了.

 

4. 方法3 - kpartx

首先, 安裝 kaprtx

root@debian-113:~# apt-get install kpartx

 

4.1 使用 kpartx 對(duì) 普通分區(qū)的Guest磁盤進(jìn)行一些基本的操作

root@debian-113:~# kpartx -av /var/lib/libvirt/images/debian7.6.img 
add map loop0p1 (254:0): 0 5154816 linear /dev/loop0 2048      <-- 這個(gè)是根分區(qū) /
add map loop0p2 (254:1): 0 11616258 linear /dev/loop0 5158910
add map loop0p5 : 0 628736 linear 254:1 2
add map loop0p6 : 0 10985472 linear 254:1 630786               <-- 這個(gè)是分區(qū) /home

# 掛載磁盤
root@debian-113:~# mount /dev/mapper/loop0p1 /mnt/             <-- *注2*
root@debian-113:~# ll /mnt/
total 96
drwxr-xr-x  2 root root  4096 Sep 18 12:38 bin
drwxr-xr-x  3 root root  4096 Sep 18 12:40 boot
drwxr-xr-x  3 root root  4096 Sep 18 11:26 dev
drwxr-xr-x 72 root root  4096 Sep 18 19:50 etc
drwxr-xr-x  2 root root  4096 Sep 18 11:23 home
lrwxrwxrwx  1 root root    30 Sep 18 11:27 initrd.img -> /boot/initrd.img-3.2.0-4-amd64
drwxr-xr-x 13 root root  4096 Sep 18 12:31 lib
drwxr-xr-x  2 root root  4096 Sep 18 12:30 lib64
drwx------  2 root root 16384 Sep 18 11:23 lost+found
drwxr-xr-x  3 root root  4096 Sep 18 11:23 media
drwxr-xr-x  2 root root  4096 Jun 12 05:07 mnt
drwxr-xr-x  2 root root  4096 Sep 18 11:23 opt
drwxr-xr-x  2 root root  4096 Jun 12 05:07 proc
drwx------  3 root root  4096 Sep 18 12:46 root
drwxr-xr-x  2 root root  4096 Sep 18 12:45 run
drwxr-xr-x  2 root root  4096 Sep 18 12:45 sbin
drwxr-xr-x  2 root root  4096 Jun 10  2012 selinux
drwxr-xr-x  2 root root  4096 Sep 18 11:23 srv
drwxr-xr-x  2 root root  4096 Jul 15  2013 sys
drwxrwxrwt  2 root root  4096 Sep 18 19:52 tmp
drwxr-xr-x 10 root root  4096 Sep 18 11:23 usr
drwxr-xr-x 11 root root  4096 Sep 18 11:23 var
lrwxrwxrwx  1 root root    26 Sep 18 11:27 vmlinuz -> boot/vmlinuz-3.2.0-4-amd64

# 卸載磁盤
root@debian-113:~# umount /mnt

 

*注2* kpartx 可以將Guest的磁盤掛載到主機(jī)的某個(gè)目錄下 (比如上述例子就是 /mnt),

不像 guestfish 只能將Guest的磁盤掛載到 /

因此, 對(duì)于 kpartx 來說, 不需要 download 和 upload 命令, 操作 Guest 磁盤中的文件就和掛載了U盤一樣.

 

4.2 使用 kpartx 對(duì) LVM分區(qū)的Guest磁盤進(jìn)行一些基本的操作

root@debian-113:~# kpartx -av /var/lib/libvirt/images/debian7.6-lvm.img 
add map loop1p1 (254:4): 0 497664 linear /dev/loop1 2048
add map loop1p2 (254:5): 0 16273410 linear /dev/loop1 501758
add map loop1p5 : 0 16273408 linear 254:5 2   <-- 這是 lvm 分區(qū)

root@debian-113:~# vgscan                     <-- 通過 lvm 相關(guān)命令查看 lvm分區(qū)信息
  Reading all physical volumes.  This may take a while...
  Found volume group "debian" using metadata type lvm2
root@debian-113:~# vgs                        <-- 通過 lvm 相關(guān)命令查看 lvm分區(qū)信息
  VG     #PV #LV #SN Attr   VSize VFree
  debian   1   3   0 wz--n- 7.76g    0 
root@debian-113:~# lvs                        <-- 通過 lvm 相關(guān)命令查看 lvm分區(qū)信息
  LV     VG     Attr     LSize   Pool Origin Data%  Move Log Copy%  Convert
  home   debian -wi-----   5.06g                                           
  root   debian -wi-----   2.40g                                           
  swap_1 debian -wi----- 300.00m              

root@debian-113:~# vgchange -ay debian        <-- 激活lvm分區(qū)
  3 logical volume(s) in volume group "debian" now active

root@debian-113:~# mount /dev/debian/root /mnt/   <-- 掛載 lvm中的根分區(qū) /
root@debian-113:~# ll /mnt/
total 96
drwxr-xr-x  2 root root  4096 Sep 18 12:53 bin
drwxr-xr-x  2 root root  4096 Sep 18 11:28 boot
drwxr-xr-x  3 root root  4096 Sep 18 11:31 dev
drwxr-xr-x 73 root root  4096 Sep 18 20:54 etc
drwxr-xr-x  2 root root  4096 Sep 18 11:28 home
lrwxrwxrwx  1 root root    30 Sep 18 11:32 initrd.img -> /boot/initrd.img-3.2.0-4-amd64
drwxr-xr-x 13 root root  4096 Sep 18 12:43 lib
drwxr-xr-x  2 root root  4096 Sep 18 12:42 lib64
drwx------  2 root root 16384 Sep 18 11:28 lost+found
drwxr-xr-x  3 root root  4096 Sep 18 11:28 media
drwxr-xr-x  2 root root  4096 Jun 12 05:07 mnt
drwxr-xr-x  2 root root  4096 Sep 18 11:28 opt
drwxr-xr-x  2 root root  4096 Jun 12 05:07 proc
drwx------  3 root root  4096 Sep 18 13:08 root
drwxr-xr-x  2 root root  4096 Sep 18 13:06 run
drwxr-xr-x  2 root root  4096 Sep 18 13:06 sbin
drwxr-xr-x  2 root root  4096 Jun 10  2012 selinux
drwxr-xr-x  2 root root  4096 Sep 18 11:28 srv
drwxr-xr-x  2 root root  4096 Jul 15  2013 sys
drwxrwxrwt  2 root root  4096 Sep 18 20:17 tmp
drwxr-xr-x 10 root root  4096 Sep 18 11:28 usr
drwxr-xr-x 11 root root  4096 Sep 18 11:28 var
lrwxrwxrwx  1 root root    26 Sep 18 11:32 vmlinuz -> boot/vmlinuz-3.2.0-4-amd64

root@debian-113:~# umount /mnt     <-- 卸載分區(qū)

 

5. 總結(jié)

lomount 由于沒有環(huán)境, 沒有實(shí)驗(yàn).

對(duì)于 guestfish 和 kpartx來說, 感覺無論是速度還是易用性上, 都是 kpartx 勝出.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    邻居人妻人公侵犯人妻视频| 欧美黄色成人真人视频| 午夜福利大片亚洲一区| 欧美一区二区日韩一区二区| 91老熟妇嗷嗷叫太91| 国产精品国产亚洲看不卡 | 大香蕉伊人精品在线观看| 国产成人精品一区二三区在线观看 | 婷婷激情四射在线观看视频| 日韩成人中文字幕在线一区| 日韩精品视频一二三区| 亚洲综合精品天堂夜夜| 亚洲香艳网久久五月婷婷| 国产女高清在线看免费观看| 久久精品福利在线观看| 国产亚洲欧美日韩精品一区 | 日韩一区二区三区免费av| 亚洲欧美日韩国产成人| 中文字幕日韩精品人一妻| 国产免费一区二区不卡| 国产精品美女午夜福利| 久久精品亚洲情色欧美| 99久只有精品免费视频播放| 久久精品国产亚洲av麻豆尤物| 后入美臀少妇一区二区| 日本99精品在线观看| 国产精欧美一区二区三区久久| 俄罗斯胖女人性生活视频| 91精品视频免费播放| 九九热这里有精品20| 日本午夜精品视频在线观看| 老司机精品视频在线免费| 九九热精品视频免费观看| 91人妻人澡人人爽人人精品| 自拍偷拍福利视频在线观看| 久久精品亚洲精品一区| 激情亚洲内射一区二区三区| 亚洲国产精品久久综合网| 国产毛片av一区二区三区小说| 搡老熟女老女人一区二区| 日韩欧美一区二区不卡看片|