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





















