前一陣使用在最新的Ubuntu 18.04上安裝了KVM來虛擬一個小的VM集群,將主要過程和其中遇到的一些問題記錄下來。
首先需要檢查一下CPU是否支持虛擬化,執(zhí)行一下命令來檢查/proc/cpuinfo文件中是否又虛擬化相關(guān)的字眼,如果有的話表明CPU支持虛擬化技術(shù)。
egrep -c '(svm|vmx)' /proc/cpuinfo
上面命令執(zhí)行結(jié)果如果返回0,表示CPU不支持虛擬化技術(shù)。當(dāng)然主板BIOS中的虛擬化技術(shù)也可能不是默認開啟的,如果沒有開啟需要手動開啟一下。
執(zhí)行以下命令安裝KVM
sudo apt updatesudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
將libvirtd添加自啟動
sudo systemctl start libvirtd.servicesudo systemctl enable libvirtd.service
KVM安裝完成后,首先需要進行網(wǎng)絡(luò)設(shè)定,KVM支持四種網(wǎng)絡(luò)模式:
主要講一下前兩種
在橋接模式下,宿主機和虛擬機共享同一個物理網(wǎng)絡(luò)設(shè)備,虛擬機中的網(wǎng)卡和物理機中的網(wǎng)卡是平行關(guān)系,所以虛擬機可以直接接入外部網(wǎng)絡(luò),虛擬機和宿主機有平級的IP。
原本宿主機是通過網(wǎng)卡eth0連接外部網(wǎng)絡(luò)的,網(wǎng)橋模式會新創(chuàng)建一個網(wǎng)橋br0,接管eth0來連接外部網(wǎng)絡(luò),然后將宿主機和虛擬機的網(wǎng)卡eth0都綁定到網(wǎng)橋上。
使用橋接模式需要進行以下操作:
編輯/etc/network/interfaces
,增加如下內(nèi)容
auto br0iface br0 inet dhcp # 網(wǎng)橋使用DHCP模式,從DHCP服務(wù)器獲取IPbridge_ports enp3s0 # 網(wǎng)卡名稱,網(wǎng)橋創(chuàng)建前連接外部的網(wǎng)卡,可通過ifconfig命令查看,有IP地址的就是bridge_stp on # 避免數(shù)據(jù)鏈路出現(xiàn)死循環(huán)bridge_fd 0 # 將轉(zhuǎn)發(fā)延遲設(shè)置為0
接下來需要重啟networking服務(wù)(如果是通過SSH連接到宿主機上的,這一步會導(dǎo)致網(wǎng)絡(luò)中斷,如果出現(xiàn)問題可能導(dǎo)致連不上宿主機,最好在宿主機上直接操作)
systemctl restart networking.service
使用ifconfig命令查看IP是否從enp3s0(網(wǎng)橋創(chuàng)建前的網(wǎng)卡)變到了br0上,如果沒有變化則需要重啟。如果宿主機ip已經(jīng)成功變到網(wǎng)橋上,并且宿主機能正常上網(wǎng)而虛擬機獲取不到ip,可能是ufw沒有允許ip轉(zhuǎn)發(fā)導(dǎo)致的,編輯/etc/default/ufw
允許ip轉(zhuǎn)發(fā)。
DEFAULT_FORWARD_POLICY="ACCEPT"
重啟ufw服務(wù)讓設(shè)置生效
systemctl restart ufw.service
NAT模式是KVM默認的網(wǎng)絡(luò)模式,KVM會創(chuàng)建一個名為virbr0的虛擬網(wǎng)橋,但是宿主機和虛擬機對于網(wǎng)橋來說不是平等的了,網(wǎng)橋會把虛擬機藏在背后,虛擬機會被分配一個內(nèi)網(wǎng)IP,而從外網(wǎng)訪問不到虛擬機。
使用如下命令安裝安裝Linux虛擬機
sudo virt-install -n ubuntu_3 --description "ubuntu_3" --os-type=linux --os-variant=ubuntu17.10 --ram=1024 --vcpus=1 --disk path=/var/lib/libvirt/images/ubuntu_3.img,bus=virtio,size=50 # 磁盤位置,大小50G --network bridge:br0 # 這里網(wǎng)絡(luò)選擇了橋接模式 --accelerate --graphics vnc,listen=0.0.0.0,keymap=en-us # VNC監(jiān)聽端口,注意要選擇en-us作為key-map,否則鍵位布局可能會亂 --cdrom /home/zzy/Downloads/ubuntu-18.04-live-server-amd64.iso # 安裝ISO路徑
安裝Windows 10虛擬機會出現(xiàn)沒有virtio驅(qū)動的問題,導(dǎo)致安裝程序找不到硬盤,需要先下載virtio驅(qū)動。
https://fedoraproject.org/wiki/Windows_Virtio_Drivers
創(chuàng)建虛擬機時,將其加入到CD-ROM中
sudo virt-install -n win10 --description "win10" --os-type=win --os-variant=win10 --ram=4096 --vcpus=2 --disk path=/var/lib/libvirt/images/win_10.img,bus=virtio,size=100 --network bridge:br0 --accelerate --graphics vnc,listen=0.0.0.0,keymap=en-us --cdrom=/home/zzy/Downloads/virtio-win.iso --cdrom=/home/zzy/Downloads/cn_windows_10_consumer_editions_version_1803_updated_march_2018_x64_dvd_12063766.iso
執(zhí)行以下命令查看虛擬機的列表
sudo virsh list
通過上一步查處的虛擬機列表,查看單臺機器的VNC端口
sudo virsh vncdisplay ubuntu_3 # ubuntu_3是虛擬機名稱
知道了VNC端口號,就可以使用VNC客戶端連接到虛擬機完成安裝了。