詳解Linux物理主機Host訪問虛擬機
微軟的Windows也許已不再是主流,在當今社會Linux越來越成為主流,你是Linux系統的應用者么?本文為你詳細介紹Linux物理主機Host訪問虛擬機(KVM)的硬盤鏡像,為你在學習Linux物理主機Host訪問虛擬機(KVM)的硬盤鏡像時起一定的作用。
當使用虛擬機的時候,經常會遇到需要在不開虛擬機的情況下訪問某個硬盤鏡像的內容。對于KVM來說,基本上,最簡單的方法是用mount -o loop命令裝載鏡像內容。但這個方法有其限制,如果鏡像文件帶有分區,就不行了。
當然,可以用mount -o loop,offset=的方式,指定一個偏移量,來解決這個問題。但是你必須事先知道分區開始的位置。
經過探索,終于發現使用losetup和kpartx可以解決這個難題。
下面先講解一下losetup命令。如果你執行如下命令
代碼:ls /dev/loop?
可 以看到/dev目錄下有許多loop0、loop1等等的東西。這些是Linux的"loop設備"。當設定好之后,loop設備可以模仿磁盤設備,比如 sda, hda那些,但實際上對該設備的訪問被重定向到一個文件。要設定一個loop設備,要使用losetup命令。該命令需要用root權限運行
代碼:#關聯loop文件到設備
losetup [loop設備] 文件名
#去除loop設備和文件的關聯
losetup [loop設備] -d
#找下一個沒有關聯上文件的loop設備
losetup -f
當寫腳本的時候,losetup -f特別有用,因為它會返回一個沒有使用的loop設備,然后你就可以把該設備名保存在一個變量里面,供后續命令使用。
到現在為止,情況和mount -o loop并沒有什么不同,盡管你立馬可以mount上那個剛剛關聯上文件的loop設備,但這等價于mount -o loop。但是,我們有kpartx。
如果你的系統還沒有安裝kpartx(默認是不裝),先裝上。
代碼:sudo apt-get install kpartx
kpartx命令的作用,是讓Linux內核讀取一個設備上的分區表,然后生成代表相應分區的設備。當然,它也需要root權限來運行。具體用法:
代碼:#列出設備上的分區和刷新后的設備名
kpartx [設備]
#刷新分區表和生成設備
kpartx [設備] -a
#刪除指定設備上的所有分區設備
kpartx [設備] -d
對于loop設備,kpartx命令可以生成/dev/mapper/loop0p1這樣格式的分區設備。
這樣,有了kpartx命令,就可以用mount命令加載映像文件里面的各個分區了。
這樣就完成了Linux物理主機Host訪問虛擬機(KVM)的硬盤鏡像。
【編輯推薦】