在kvm中部署嵌套esxi6.7

最近測試esxi6.7的vmotion功能,爲了熟悉kvm決定在kvm上實現, 系統是ubuntu16.04, 啓動一個kvm,發現esxi在遷移時會崩潰,無法進行遷移,查找相關次料,解決方案如下:

KVM的安裝和使用

  1. 首先安裝kvm
    # apt install qemu-system-x86 qemu-kvm qemu libvirt-bin virt-manager virtinst bridge-utils cpu-checker virt-viewer
  2. 校驗kvm是否安裝,並檢測cpu的VT-x虛擬化有沒有開,出現以下信息說明正常
    # kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
  3. 運行virt-host-validate查看你的環境對kvm的技持,如果全部爲pass,說明可以
    # virt-host-validate 
    QEMU: Checking for hardware virtualization                                 : PASS
    QEMU: Checking if device /dev/kvm exists                                   : PASS
  4. 如果你想使普通用戶能夠使用kvm,可以添加當前用戶到libvirt組中
cat /etc/group | grep libvirt | awk -F':' {'print $1'} | xargs -n1 sudo adduser $USER  

# add user to kvm group also
sudo adduser $USER kvm

# relogin, then show group membership
exec su -l $USER
id | grep libvirt
  1. 缺省的,kvm會建立一個虛擬的交換機名字爲virbr0, 使用192.168.122.0/24
    # ip addr show virbr0
    17: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:d2:52:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
  2. virbr0實際上是一個nat模式,我們可以通過iptables看到實際的情況
    # iptable -t nat -vnL
    Chain POSTROUTING (policy ACCEPT 146 packets, 11359 bytes)
    pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  *      *       192.168.122.0/24     224.0.0.0/24        
    0     0 RETURN     all  --  *      *       192.168.122.0/24     255.255.255.255     
    0     0 MASQUERADE  tcp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    0     0 MASQUERADE  udp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    0     0 MASQUERADE  all  --  *      *       192.168.122.0/24    !192.168.122.0/24    
  3. 定義存儲池,缺省的存儲池是/var/lib/libvirt/images, 但你可以另外mount你想要的os磁盤
# virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes 

$ virsh pool-define-as kvmpool --type dir --target /data/kvm/pool
Pool kvmpool defined
$ virsh pool-list --all
$ virsh pool-start kvmpool
$ virsh pool-autostart kvmpool

$ virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 kvmpool              active     yes
  1. 佈署一個vm在你的kvm上,建立一個1vcpu/1G RAM使用缺省的virbr0 NAT網絡和缺省的pool storage
virt-install --virt-type=kvm --name=ukvm1404 --ram 1024 --vcpus=1 --virt-type=kvm --hvm --cdrom ~/Downloads/mini.iso --network network=default --graphics vnc --disk pool=default,size=20,bus=virtio,format=qcow2 --noautoconsole

# open console to VM
virt-viewer ukvm1404
  1. 如果你想刪除這個vm,可以使用如下命令:
    virsh destroy ukvm1404
    virsh undefine ukvm1404
  2. 如你想要一個全部圖形化的軟件管理kvm,可以使用virt-manager,當你沒安裝圖形介面時你可以使用x協議的ssh客戶端,如xshell, 或xming+ssh客戶端軟件

佈署esxi在KVM中

  1. 配置VT-x,你同樣需要在ubuntu中配置VT
# vi /etc/modprobe.d/qemu-system-x86.conf 

options kvm_intel nested=1 enable_apicv=n
options kvm ignore_msrs=1
  1. 重啓系統,執行下列命令,必須返回如下值
# want Y to be returned
$ cat /sys/module/kvm/parameters/ignore_msrs

# want N to be returned
$ cat /sys/module/kvm_intel/parameters/enable_apicv

# want Y to be returned
$ cat /sys/module/kvm_intel/parameters/nested
  1. 建立kvm虛擬機
    # virt-install --virt-type=kvm --name=esxi4 \
    --ram 4096 --vcpus=4 \
    --virt-type=kvm --hvm \
    --cdrom /data/iso/VMware-VMvisor-Installer-6.7.0.update03-14320388.x86_64.iso \
    --network network:default,model=e1000 \
    --graphics vnc --video qxl \
    --disk pool=default,size=80,sparse=true,bus=ide,format=qcow2 \
    --boot cdrom,hd --noautoconsole --force \
    --cpu host-model-only
    當然你也可以使用virt-manager來建立虛擬機。

    在kvm中部署嵌套esxi6.7

  2. 重複建立兩個虛擬機,建立兩個esxi實現動態vmotion遷移,測試和建立步驟省略,經測試vmotion可以正常工作,不會出現崩潰現象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章