1. 程式人生 > >巢狀虛擬化---VMware+KVM

巢狀虛擬化---VMware+KVM

巢狀虛擬化—VMware+KVM

最近突然對巢狀虛擬化產生興趣,並且想了解KVM和Qemu之間的關係,於是在本機的VMware中的Ubuntu嘗試使用KVM和Qemu分別在Ubuntu虛擬機器中再裝Ubuntu。實現巢狀虛擬化的同時,在安裝過程中瞭解KVM和Qemu的關係。

本文主要記錄在VMware中使用KVM實現巢狀虛擬化的過程。

實驗環境:win10主機系統 + VmwareWorkstation14 + Ubuntu18.04 + Ubuntu16.04

參考文章:

目錄結構:

  1. 配置KVM虛擬化環境(Ubuntu18.04)
  2. 使用KVM建立虛擬機器(Ubuntu16.04)
  3. 配置橋接網路
  4. 問題與收穫

一、配置KVM虛擬化環境(Ubuntu18.04)

1.1虛擬機器配置

在Vmware Workstation的虛擬機器Ubuntu18.04中,先將U不同怒18.04關機,然後再虛擬機器的處理器選擇裡邊將**”Intel VT-x/EPT或AMD-V/RVI**”選中;網路介面卡修改為橋接模式

驗證Ubuntu18.04是否支援虛擬化:grep vmx /proc/cpuinfo

結果出現vmx等關鍵詞,說明系統可以支援虛擬化

1.2 KVM安裝

一般在Ubuntu中都有kvm的支援,也就是說可以通過預設的安裝軟體進行安裝,在Ubuntu中的預設的安裝軟體是apt-get,一般新安裝的系統的apt-get的知識庫還沒有更新

,建議先更新然後再檢視是否有現成的安裝包。

apt-get update						#更新apt-get
apt-cache search kvm | grep kvm		#檢視是否具有現成的安裝包
apt-get install qemu-kvm			#安裝KVM以及QEMU的安裝 
lsmod | grep kvm
#KVM是核心中的一個模組,所以安裝完成之後需要檢視核心是否載入了KVM模組
dpkg -l | grep qemu					#檢視QEMU相關的包是否安裝完成

1.3安裝虛擬機器管理軟體

KVM和QEMU是用於虛擬化的軟體,虛擬機器管理軟體用於高效的對相應的虛擬化的軟體進行使用以及相應虛擬機器的管理。

libvirt和virsh的安裝。

apt-cache search libvirt | grep libvirt
apt-get install libvirt-bin
apt-cache search virtin | grep virtin
apt-get install virtinst	#我看另一個教程上用的是virt-manager

virt-manager - desktop application for managing virtual machines

virtinst - Programs to create and clone virtual machines

二、使用KVM建立虛擬機器(Ubuntu16.04)

2.1建立虛擬磁碟

qemu-img create -f qcow2 ubuntu16.qcow2 10G

使用qcow給系統安裝分配虛擬磁碟;如果沒有這項的話,在Ubuntu16.04安裝的時候會提示安裝空間大小為0B。

2.2編輯虛擬機器配置檔案

新建一個ubuntu16.xml檔案(目錄無關),編輯內容如下:

<domain type='kvm'> 
<name>ubuntu14</name> 
<uuid>f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa</uuid> 
<memory>1048576</memory> 
<currentMemory>1048576</currentMemory> 
<vcpu>1</vcpu> 
<os> 
<type>hvm</type> // 配置虛擬機器的啟動方式 
<boot dev='cdrom'/> // 如果為虛擬機器安裝系統,那麼配置此選項 
<boot dev='hd'/> // 虛擬機器的系統已經安裝完成,啟動系統配置此選項 
<bootmenu enable='yes'/> 
</os> 
<features> 
<acpi/> 
<apic/> 
<pae/> 
</features> 
<clock offset='utc'/> 
<on_poweroff>destroy</on_poweroff> 
<on_reboot>restart</on_reboot> 
<on_crash>destroy</on_crash> 
<devices> 
<emulator>/usr/bin/kvm</emulator> 
<disk type="file" device="disk"> // 用於安裝系統的虛擬磁碟 
<driver name="qemu" type="qcow2"/> 
<source file="/home/muhong/vm/img/ubuntu.qcow2"/> //修改為ubuntu16.qcow2的地址
<target dev="vda" bus="virtio"/> 
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/> 
</disk> 
<disk type="file" device="cdrom"> // 配置系統的iso檔案的路徑(絕對路徑) 
<driver name="qemu" type="raw"/> 
<source file="/home/muhong/ubuntuimage/ubuntu-14.04.5-server-amd64.iso"/> //修改為ubuntu16的映象地址
<target dev="hdc" bus="ide"/> 
<readonly/> 
<address type="drive" controller="0" bus="1" target="0" unit="0"/> 
</disk> 
<interface type='bridge'> 
<source bridge='br0'/> // 宿主機的橋接網路的名稱 
<mac address="00:0c:29:b6:24:9c"/> // 這個地址是虛擬機器的實體地址
<target dev='vnet0'/> 
<model type='virtio'/> 
<alias name='net0'/> 
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> 
</interface> 
<controller type="ide" index="0"> 
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/> 
</controller> 
<input type='mouse' bus='ps2'/> // vnc遠端連線的控制 
<graphics type='vnc' port='-1' autoport="yes" listen='0.0.0.0'/> 
<console type='pty'> 
<target port='0'/> 
</console> 
</devices> 
</domain>

說明

  • 安裝系統前後修改項;每次只保留其中一行。安裝之前;安裝之後
  • 需要設定用於安裝系統的虛擬磁碟路徑;設定ISO檔案路徑。
  • 設定虛擬機器的實體地址使用ifconfig檢視

2.3啟動虛擬機器

virsh create ubuntuxx.xml

2.4檢視Ubuntu16

使用virt-viewer監視ubuntu16

apt-get install virt-viewer
命令列直接使用  virt-viewer

三、配置橋接網路

為了能使得後面虛擬機器的安裝能被宿主機(ubuntu18.04)所在區域網的其他機器訪問,所以需要在宿主機(ubuntu18.04)配置橋接網路,這樣虛擬機器通過橋接網路就可以分配到宿主機(ubuntu18.04)所在區域網的IP地址了,那麼虛擬機器也就可以被訪問了。

配置kvm的網路有2種方法。

其一,預設方式為使用者模式網路(Usermode Networking),資料包由NAT方式通過主機的介面進行傳送。

其二,使用橋接方式(Bridged Networking),外部的機器可以直接聯通到虛擬機器,就像聯通到你的主機一樣。

  • 第一:使用者模式
    虛擬機器可以使用網路服務,但區域網中其他機器包括宿主機無法連線它。比如,它可以瀏覽網頁,但外部機器不能訪問架設在它裡面的web伺服器。
  • 第二:橋接模式
    這種模式允許虛擬機器就像一臺獨立的主機一樣擁有網路。這種模式需要網絡卡支援,一般的有線網絡卡都支援,絕大部分的無線網絡卡都不支援

所以,其實我認為不是一定要配置橋接網路的。但是為了瞭解大致內容,學習一下。

在本文中,此部分應該在Ubuntu18.04中進行,不要誤以為在Ubuntu16.04。

3.1宿主機網路配置

首先:要停止網路服務
sudo /etc/init.d/networking stop
其次:修改網路配置檔案
sudo gedit /etc/network/interfaces
最後:重新啟動網路服務便可
sudo /etc/init.d/networking restart

3.2本人最後使用的網路配置檔案

auto lo 
iface lo inet loopback 

auto br0 
iface br0 inet dhcp 
bridge_ports ens33 				#不知道為什麼突然出現了ens33這個東西
bridge_stp off 
bridge_fd 0
dns-nameserver 202.98.98.68		#為什麼是這個...

3.3檢視是否配置成功

ifconfig	#檢視是否配置成功,所以怎樣算是成功了?

四、問題與收穫

1.明明已經安裝了qemu-kvm但是找不到模組:

Could not access KVM kernel module

沒有開啟CPU虛擬化:Intel VT-x/EPT或AMD-V/RVI

2.一些命令:

apt-cache search...
sudo lsb_release -a		#檢視ubuntu的發行版本。

3.橋接網路

4.掛載

在windows作業系統中,

掛載通常是指給磁碟分割槽(包括被虛擬出來的磁碟分割槽)分配一個碟符

這個操作可以通過“計算機管理”中的“磁碟管理”來進行。

第三方軟體,如磁碟分割槽管理軟體、虛擬磁碟軟體等,通常也附帶掛載功能。

在linux作業系統中,

掛載是一個非常重要的功能,使用非常頻繁。

它指將一個裝置(通常是儲存裝置)掛接到一個已存在的目錄上。