KVM — 使用 libvirt 工具棧創建管理虛擬機實例
應用準備
啓用硬件虛擬化支持功能,對於不同宿主機,啓用方式略有不同
如果虛擬機的宿主機爲Windows,假如使用VMware中的虛擬機作爲宿主機,需要在VMware選項中的”處理器”選項中啓用”虛擬化 Intel VT-x/EPT 或 AMD-V/RVI(V) ” 選項。
如果虛擬機的宿主機爲Linux,需要在BIOS處啓動 Intel VT-x/EPT 或 AMD-V/RVI(V) 虛擬化技術
驗證系統已經支持KVM並加載該模塊,使宿主機成爲hyperViso
- 搜索cpu信息中是否有以下字段
grep -E -i "(svm|vmx|lm)" /proc/cpuinfo
- 查看kvm模塊信息
modinfo kvm
- 加載kvm模塊並查看結果
modprobe kvm
lsmod | grep kvm
kvm_intel 170181 0
kvm 554609 1 kvm_intel
irqbypass 13503 1 kvm
- 查看kvm字符設備是否存在
ls -l /dev/kvm
crw-------. 1 root root 10, 232 Jul 27 03:58 /dev/kvm
KVM 的三個組件
kvm.ko :模塊
qemu-kvm :用於實現虛擬化的輔助管理用戶空間的工具程序,能夠模擬 I/O 設備
libvirt :虛擬化工具包
使用 libvirt 工具棧
- 安裝程序包,啓動服務並查看UDP端口
yum install -y libvirt libvirt-daemon-kvm virt-manager
rpm -ql libvirt-daemon
systemctl start libvirtd.service
ss -unlp
UNCONN 0 0 *%virbr0:67 *:* users:(("dnsmasq",pid=1808,fd=3))
- 查看自動創建的網橋設備
ifconfig -a
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:8f:27:65 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:8f:27:65 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 查看自動生成的 nat 表的POSTROUTING 鏈上的 MASQUERADE 規則
iptables -t nat -vnL
Chain POSTROUTING (policy ACCEPT 6 packets, 426 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
- 查看虛擬機管理命令 virsh
[root@localhost ~]# which virsh
/usr/bin/virsh
[root@localhost ~]# rpm -qf /usr/bin/virsh
libvirt-client-2.0.0-10.el7_3.9.x86_64
創建網橋
- 使用 virsh 的 iface-bridge 子命令創建一個名爲 “br0” 的網卡接口,物理網卡 ens33 從此會成爲虛擬交換機
virsh iface-bridge ens33 br0
Created bridge br0 with attached device ens33
注意:ens33 物理接口會成爲虛擬交換機,br0 虛擬接口會代替 ens33 成爲新的宿主機的網卡接口
上面一條命令執行完成後,兩個接口發生角色轉換,需要重啓network服務,重啓服務會報錯,再一次重啓network服務即可
ifconfig
#結果
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.50.18 netmask 255.255.0.0 broadcast 172.16.255.255
inet6 fe80::20c:29ff:fe99:ea72 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:99:ea:72 txqueuelen 1000 (Ethernet)
RX packets 6866 bytes 936170 (914.2 KiB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 68 bytes 9383 (9.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:99:ea:72 txqueuelen 1000 (Ethernet)
RX packets 173822 bytes 158449094 (151.1 MiB)
RX errors 0 dropped 169 overruns 0 frame 0
TX packets 57053 bytes 4357222 (4.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
啓動virt-manager圖形界面並安裝配置虛擬機
- 啓動virt-manager圖形界面,在圖形界面中操作安裝配置虛擬機
virt-manager &
- 如果使用CentOS的minimal(最小化)系統,需要安裝以下程序包,也可以安裝圖形界面的幾個包組
yum install -y xorg-x11-font-utils.x86_64 xorg-x11-server-utils.x86_64 xorg-x11-utils.x86_64 xorg-x11-xauth.x86_64 xorg-x11-xinit.x86_64 xorg-x11-font-utils.x86_64 xorg-x11-drv-ati.x86_64 dejavu-lgc-sans-fonts
在虛擬機硬件配置選項中,將 “Display VNC” 一項中的 “VNC Server” 中的 “Type” 修改爲 “VNC Server” 。