前一陣使用在最新的Ubuntu 18.04上安裝了KVM來虛擬一個小的VM集羣,將主要過程和其中遇到的一些問題記錄下來。linux
首先須要檢查一下CPU是否支持虛擬化,執行一下命令來檢查/proc/cpuinfo文件中是否又虛擬化相關的字眼,若是有的話代表CPU支持虛擬化技術。ubuntu
egrep -c '(svm|vmx)' /proc/cpuinfo
上面命令執行結果若是返回0,表示CPU不支持虛擬化技術。固然主板BIOS中的虛擬化技術也可能不是默認開啓的,若是沒有開啓須要手動開啓一下。windows
執行如下命令安裝KVM服務器
sudo apt update sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager
將libvirtd添加自啓動網絡
sudo systemctl start libvirtd.service sudo systemctl enable libvirtd.service
KVM安裝完成後,首先須要進行網絡設定,KVM支持四種網絡模式:佈局
主要講一下前兩種ui
在橋接模式下,宿主機和虛擬機共享同一個物理網絡設備,虛擬機中的網卡和物理機中的網卡是平行關係,因此虛擬機能夠直接接入外部網絡,虛擬機和宿主機有平級的IP。spa
本來宿主機是經過網卡eth0鏈接外部網絡的,網橋模式會新建立一個網橋br0,接管eth0來鏈接外部網絡,而後將宿主機和虛擬機的網卡eth0都綁定到網橋上。rest
使用橋接模式須要進行如下操做:code
編輯/etc/network/interfaces
,增長以下內容
auto br0 iface br0 inet dhcp # 網橋使用DHCP模式,從DHCP服務器獲取IP bridge_ports enp3s0 # 網卡名稱,網橋建立前鏈接外部的網卡,可經過ifconfig命令查看,有IP地址的就是 bridge_stp on # 避免數據鏈路出現死循環 bridge_fd 0 # 將轉發延遲設置爲0
接下來須要重啓networking服務(若是是經過SSH鏈接到宿主機上的,這一步會致使網絡中斷,若是出現問題可能致使連不上宿主機,最好在宿主機上直接操做)
systemctl restart networking.service
使用ifconfig命令查看IP是否從enp3s0(網橋建立前的網卡)變到了br0上,若是沒有變化則須要重啓。若是宿主機ip已經成功變到網橋上,而且宿主機能正常上網而虛擬機獲取不到ip,多是ufw沒有容許ip轉發致使的,編輯/etc/default/ufw
容許ip轉發。
DEFAULT_FORWARD_POLICY="ACCEPT"
重啓ufw服務讓設置生效
systemctl restart ufw.service
NAT模式是KVM默認的網絡模式,KVM會建立一個名爲virbr0的虛擬網橋,可是宿主機和虛擬機對於網橋來講不是平等的了,網橋會把虛擬機藏在背後,虛擬機會被分配一個內網IP,而從外網訪問不到虛擬機。
使用以下命令安裝安裝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 # 這裏網絡選擇了橋接模式 --accelerate --graphics vnc,listen=0.0.0.0,keymap=en-us # VNC監聽端口,注意要選擇en-us做爲key-map,不然鍵位佈局可能會亂 --cdrom /home/zzy/Downloads/ubuntu-18.04-live-server-amd64.iso # 安裝ISO路徑
安裝Windows 10虛擬機會出現沒有virtio驅動的問題,致使安裝程序找不到硬盤,須要先下載virtio驅動。
https://fedoraproject.org/wiki/Windows_Virtio_Drivers
建立虛擬機時,將其加入到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
執行如下命令查看虛擬機的列表
sudo virsh list
經過上一步查處的虛擬機列表,查看單臺機器的VNC端口
sudo virsh vncdisplay ubuntu_3 # ubuntu_3是虛擬機名稱
知道了VNC端口號,就可使用VNC客戶端鏈接到虛擬機完成安裝了。