前一陣使用在最新的Ubuntu 18.04上安裝了KVM來虛擬一個小的VM集群,將主要過程和其中遇到的一些問題記錄下來喇勋。
準備工作
首先需要檢查一下CPU是否支持虛擬化,執(zhí)行一下命令來檢查/proc/cpuinfo文件中是否又虛擬化相關(guān)的字眼偎行,如果有的話表明CPU支持虛擬化技術(shù)川背。
egrep -c '(svm|vmx)' /proc/cpuinfo
上面命令執(zhí)行結(jié)果如果返回0,表示CPU不支持虛擬化技術(shù)蛤袒。當然主板BIOS中的虛擬化技術(shù)也可能不是默認開啟的熄云,如果沒有開啟需要手動開啟一下。
安裝KVM
執(zhí)行以下命令安裝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
網(wǎng)絡(luò)模式
KVM安裝完成后妙真,首先需要進行網(wǎng)絡(luò)設(shè)定缴允,KVM支持四種網(wǎng)絡(luò)模式:
- 橋接模式
- NAT模式
- 用戶網(wǎng)絡(luò)模式
- 直接分配設(shè)備模式
主要講一下前兩種
橋接(Bridge)模式
在橋接模式下,宿主機和虛擬機共享同一個物理網(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 br0
iface br0 inet dhcp # 網(wǎng)橋使用DHCP模式,從DHCP服務(wù)器獲取IP
bridge_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(Network Address Translation)模式
NAT模式是KVM默認的網(wǎng)絡(luò)模式碍拆,KVM會創(chuàng)建一個名為virbr0的虛擬網(wǎng)橋若治,但是宿主機和虛擬機對于網(wǎng)橋來說不是平等的了,網(wǎng)橋會把虛擬機藏在背后感混,虛擬機會被分配一個內(nèi)網(wǎng)IP端幼,而從外網(wǎng)訪問不到虛擬機。
安裝Linux虛擬機
使用如下命令安裝安裝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虛擬機
安裝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
使用VNC客戶端連接虛擬機
執(zhí)行以下命令查看虛擬機的列表
sudo virsh list
通過上一步查處的虛擬機列表扶关,查看單臺機器的VNC端口
sudo virsh vncdisplay ubuntu_3 # ubuntu_3是虛擬機名稱
知道了VNC端口號,就可以使用VNC客戶端連接到虛擬機完成安裝了近哟。