VMware 虛擬機嵌套部署 KVM 虛擬機小結(jié)

Posted by WeYo. 轉(zhuǎn)載請注明出處:http://weyo.me/pages/techs/vmware-vm-for-kvm/

嵌套虛擬化(nested virtualization)是一種在虛擬機內(nèi)部繼續(xù)虛擬化的一種技術(shù)享潜,Linux Kernel 文檔 Nested VMX 對于嵌套虛擬化特性有詳細(xì)說明困鸥。曾經(jīng)一度認(rèn)為嵌套虛擬化只支持同類虛擬化技術(shù)(例如VMware虛擬機內(nèi)嵌套部署VMware虛擬機,知乎上也有人討論過只要硬件給力理論上是能夠無限嵌套的:虛擬機中運行虛擬機中運行虛擬機……如此循環(huán)能運行多少個剑按?)疾就,最近在研究KVM虛擬機鏡像制作的時候才發(fā)現(xiàn) VMware 實際上也是支持虛擬化 KVM 的(當(dāng)然,前提還是硬件支持)艺蝴,不過實際操作才發(fā)現(xiàn)有些過程并不像網(wǎng)上的文章那么簡單(主要的坑在于 GDK 的 bug)猬腰,這里匯總整理下完整的操作步驟。(本文部分內(nèi)容引用自其他文章吴趴,詳情列于文末以示感謝漆诽。)

NOTE:

  1. 本文基于 vSphere 6.0 版本操作,其他版本可類比操作锣枝;
  2. 應(yīng)用嵌套虛擬化之后性能必然有所下降厢拭,也會帶來一定的不穩(wěn)定性,比較適用于需要在 VMware 環(huán)境模擬 KVM 的場景撇叁,不建議使用在生產(chǎn)環(huán)境供鸠。

1. 開啟VMware虛擬機的CPU虛擬化選項

本節(jié)內(nèi)容源自參考文獻[1]:對ESXi主機內(nèi)的虛擬機開啟CPU硬件虛擬化支持

首先,在VMware中創(chuàng)建一臺虛擬機(建議版本 10 以上)陨闹,并安裝 Linux 操作系統(tǒng)(本文安裝的是CentOS 7.2系統(tǒng))楞捂,在虛擬機關(guān)機的情況下做如下配置:

1)登錄VMware桌面客戶端 vsphere client,編輯虛擬機趋厉,設(shè)置“CPU/MMU虛擬化”選項寨闹,配置“使用Intel VT-x/AMD-v進行指令集虛擬化并使用Intel EPT/AMD RVI進行MMU虛擬化”;

fig1

2)登錄 VMware 網(wǎng)頁客戶端 vsphere web client 對虛擬機做其他配置(VMware 還是太分裂君账,強行將設(shè)置放在 web 端繁堡,所以這里建議 vSphere 版本在 6.0 以上,web 的支持相對好那么一點點,雖然也還是一樣難用)椭蹄;

3)如果前面創(chuàng)建的虛擬機版本較低(版本9闻牡、10),這里還需要升級虛擬機的兼容性:在虛機上右鍵選擇“兼容性”->“升級虛擬機兼容性”绳矩;

fig2

4)再次進入虛擬機的編輯設(shè)置界面罩润,打開 CPU 選項卡,有一行“硬件虛擬化:向客戶機操作系統(tǒng)公開硬件輔助的虛擬化”翼馆,將其打鉤即可打開虛擬機的 CPU 虛擬化功能割以;

fig3

VMware 的配置操作到此結(jié)束,接下來是虛擬機內(nèi)部操作应媚。

2. 配置虛擬機 KVM 模塊

本節(jié)內(nèi)容源自文獻[3]:Centos7.4安裝kvm虛擬機(使用virt-manager管理)

1)打開虛擬機電源拳球,登錄虛擬機執(zhí)行以下命令檢查虛擬機是否支持虛擬化:

# grep vmx /proc/cpuinfo

如果該命令有信息輸出,就說明 CPU 支持虛擬化珍特,可以繼續(xù)往下進行;否則 CPU 不支持的情況下無法進行嵌套虛擬化部署魔吐。

注意扎筒,由于大多數(shù)服務(wù)器基于 Intel CPU,本命令只針對 Intel CPU酬姆,對于 AMD CPU 將命令中的 vmx 改成 svm 即可嗜桌。

2)執(zhí)行以下命令查看是否加載KVM模塊:

# lsmod | grep kvm

如果沒有加載,依次執(zhí)行以下命令:

# modprobe kvm

# modprobe kvm-intel(針對Intel CPU)或者 modprobe kvm-amd(針對AMD CPU)

# lsmod | grep kvm

3. 虛擬機環(huán)境安裝

1)將虛擬機 Python 環(huán)境配置為 2.7 版本辞色,并安裝 KVM 與 virt-manager骨宠;

yum install qemu qemu-kvm
yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer -y

2)為防止出現(xiàn) GDK 圖形界面異常:

DEBUG (cli:257) Uncaught exception:
Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/createnet.py", line 830, in finish
    self.set_finish_cursor()
  File "/usr/share/virt-manager/virtManager/baseclass.py", line 272, in set_finish_cursor
    cursor = Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress")
TypeError: constructor returned NULL

需要編輯 /usr/share/virt-manager/virtManager/baseclass.py 將其中涉及Gdk.Cursor.new_from_name行注釋掉(簡單粗暴的操作有時候意外的有效)

        #cursor = Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress")
        #gdk_window.set_cursor(cursor)
        #cursor = Gdk.Cursor.new_from_name(gdk_window.get_display(), "default")
        #gdk_window.set_cursor(cursor)

同樣編輯 /usr/share/virt-manager/virtManager/asyncjob.py 將其中涉及 Gdk.Cursor.new_from_name 行注釋掉:

            #gdk_window.set_cursor(
            #    Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress"))

3)在 Terminal 中運行 virt-manager 命令打開 Virtual Machine Manager:

fig4

4)如果沒有圖中的 connection,可以新建一個connection(QEMU/KVM)相满;

5)對已有的 connection 創(chuàng)建NAT虛擬網(wǎng)絡(luò):

fig5

6)在控制臺界面或者直接使用命令創(chuàng)建新的虛擬機层亿。

創(chuàng)建虛擬機之后,為了防止打開控制臺窗口出現(xiàn)無法連接到圖形界面錯誤:

Error connecting to graphical console: could not get a reference to type class

需要設(shè)置顯示模式為“vnc server”

fig6

隨后立美,就可以按照正常的操作系統(tǒng)安裝步驟配置安裝虛擬機了匿又。

Tips

virt-manager 的日志位于 /root/.cache/virt-manager/virt-manager.log,任何問題均可以查詢?nèi)罩窘ㄌ恪J褂脜?shù)--no-fork打開virt-manager(virt-manager --no-fork)可以不輸出日志碌更。

Reference & 致謝

[1] 對ESXi主機內(nèi)的虛擬機開啟CPU硬件虛擬化支持

[2] vSphere 5 文檔中心: 在 vSphere Client 中更改 CPU/MMU 虛擬化設(shè)置

[3] Centos7.4安裝kvm虛擬機(使用virt-manager管理)

[4] How to debug Virtualization problems

[5] KVM虛擬化之嵌套虛擬化nested

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市洞慎,隨后出現(xiàn)的幾起案子痛单,更是在濱河造成了極大的恐慌,老刑警劉巖劲腿,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旭绒,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機快压,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門圆仔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔫劣,你說我怎么就攤上這事坪郭。” “怎么了脉幢?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵歪沃,是天一觀的道長。 經(jīng)常有香客問我嫌松,道長沪曙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任萎羔,我火速辦了婚禮液走,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贾陷。我一直安慰自己缘眶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布髓废。 她就那樣靜靜地躺著巷懈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慌洪。 梳的紋絲不亂的頭發(fā)上顶燕,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音冈爹,去河邊找鬼涌攻。 笑死,一個胖子當(dāng)著我的面吹牛犯助,可吹牛的內(nèi)容都是我干的癣漆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剂买,長吁一口氣:“原來是場噩夢啊……” “哼惠爽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞬哼,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤婚肆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坐慰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體较性,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡用僧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了赞咙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片责循。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖攀操,靈堂內(nèi)的尸體忽然破棺而出院仿,到底是詐尸還是另有隱情,我是刑警寧澤速和,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布歹垫,位于F島的核電站,受9級特大地震影響颠放,放射性物質(zhì)發(fā)生泄漏排惨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一碰凶、第九天 我趴在偏房一處隱蔽的房頂上張望暮芭。 院中可真熱鬧,春花似錦欲低、人聲如沸谴麦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舷蟀,卻和暖如春恤磷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背野宜。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工扫步, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匈子。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓河胎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虎敦。 傳聞我的和親對象是個殘疾皇子游岳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容