KVM自Linux 2.6.20版本後就直接整合到Linux內核,它依託CPU虛擬化指令集實現高性能的虛擬化支持。它與Linux內核高度整合,所以在性能、安全性、兼容性、穩定性上都有很好的表現。
在KVM環境中運行的每一個虛擬化操做系統都將表現爲單個獨立的系統進程。所以它能夠很方便地與Linux系統中的安全模塊進行整合(SELinux),能夠靈活的實現硬件資源的管理和分配,KVM虛擬化的架構圖以下:vim
話很少說,開始搭建KVM虛擬化平臺:centos
一、安裝:安全
[root@localhost media]# yum -y groupinstall "GNOME Desktop" #安裝GNOME桌面環境 [root@localhost media]# yum -y install qemu-kvm #KVM模塊 [root@localhost media]# yum -y install qemu-kvm-tools #KVM調試工具,可不安裝 [root@localhost media]# yum -y install virt-install #構建虛擬機的命令行工具 [root@localhost media]# yum -y install qemu-img #qemu組件,建立磁盤、啓動虛擬機等 [root@localhost media]# yum -y install bridge-utils #網絡支持工具 [root@localhost media]# yum -y install libvirt #虛擬機管理工具 [root@localhost media]# yum -y install virt-manager #圖形界面管理虛擬機 [root@localhost media]# yum -y install libguestfs-tools #用來管理虛擬機磁盤格式 [root@localhost ~]# ls -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target #將系統默認運行的target更改成graphical.target,若不執行該命令,重啓時可能會報錯。
二、安裝完畢後,需重啓系統,執行下面命令對系統進行檢查:網絡
[root@localhost ~]# cat /proc/cpuinfo | grep vmx #查看Intel的CPU是否支持虛擬化,如果AMD的CPU,需 「cat /proc/cpuinfo | grep smv」 [root@localhost ~]# lsmod | grep kvm #檢查KVM模塊是否安裝 kvm_intel 170181 0 kvm 554609 1 kvm_intel irqbypass 13503 1 kvm [root@localhost ~]# systemctl start libvirtd #啓動libvirtd服務 [root@localhost ~]# systemctl enable libvirtd
三、設置KVM網絡:架構
在libvirt中運行KVM網絡有兩種方法:NAT和Bridge,默認是NAT。
關於兩種模式的說明以下:
(1)NAT模式:也是用戶模式,數據包由NAT方式經過主機的接口進行傳送,能夠訪問外網,可是沒法從外部訪問虛擬機網絡,因此通常不會用到。
(2)Bridge:也就是橋接模式,這種模式容許虛擬機像一臺獨立的主機同樣擁有網絡,外部的機器能夠直接訪問到虛擬機內部,但須要網卡支持,通常有線網卡都支持。ide
我這裏以Bridge(橋接模式)爲例:工具
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=none #將這項改成none DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 DEVICE=ens33 ONBOOT=yes BRIDGE=br0 #添加該行,如有UUID的配置項,建議刪除。 #將網卡ens33的文件複製一份更名爲br0 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge #將type改成Bridge BOOTPROTO=static #這裏根據實際狀況改成static或dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=br0 #更名字 DEVICE=br0 #更名字 ONBOOT=yes IPADDR=192.168.1.1 #該ip將爲宿主機的IP地址 GATEWAY=192.168.1.254 [root@localhost ~]# systemctl restart network #重啓網絡服務 [root@localhost ~]# ifconfig #確認IP地址信息 br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::db0f:ab79:54a1:241b prefixlen 64 scopeid 0x20<link> ether 00:0c:29:1a:e0:46 txqueuelen 1000 (Ethernet) RX packets 50 bytes 4155 (4.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 58 bytes 7046 (6.8 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:1a:e0:46 txqueuelen 1000 (Ethernet) RX packets 1062 bytes 95264 (93.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 688 bytes 81579 (79.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
四、管理KVM:性能
[root@localhost /]# virt-manager #打開圖形管理軟件,執行該命令後出現如下界面
建立存儲池:ui
再以一樣的操做建立一個iso鏡像存儲池,完成後以下:centos7
建立存儲卷:
完成後,以下點擊來建立虛擬機:[root@localhost ~]# cp /dev/cdrom /kvm/iso/centos7.iso #先複製光盤鏡像到指定目錄下
根據需求給硬件資源:
建立自定義存儲:
定義虛擬機名稱,並單擊「完成」:
單擊「完成」後,會自動彈出該虛擬機的窗口,安裝系統吧,這裏和平時安裝系統同樣,就省略了:
KVM虛擬化平臺至此已部署完成,下面附加一些經常使用的管理命令:
[root@localhost ~]# virsh -h #查看命令幫助 [root@localhost ~]# ls /etc/libvirt/qemu #查看KVM的配置文件存放目錄 (test01.xml是虛擬機系統實例的配置文件) networks test01.xml [root@localhost ~]# virsh list --all #查看虛擬機狀態 Id 名稱 狀態 ---------------------------------------------------- 2 test01 running [root@localhost ~]# virsh shutdown test01 #關閉虛擬機 [root@localhost ~]# virsh start test01 #開啓虛擬機 [root@localhost ~]# virsh destroy test01 #強制關機 [root@localhost ~]# virsh create /etc/libvirt/qemu/test01.xml #經過配置文件啓動虛擬機 [root@localhost ~]# virsh suspend test01 #掛起虛擬機 [root@localhost ~]# virsh resume test01 #從掛起狀態恢復運行虛擬機 [root@localhost ~]# virsh autostart test01 #設置虛擬機伴隨宿主機自動啓動 #虛擬機的刪除與添加: [root@localhost ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml #導出虛擬機配置 #刪除虛擬機: [root@localhost ~]# virsh shutdown test01 [root@localhost ~]# virsh undefine test01 [root@localhost ~]# virsh list --all #查看虛擬機是否被刪除 Id 名稱 狀態 ---------------------------------------------------- #經過備份的配置文件從新定義虛擬機: [root@localhost ~]# cd /etc/libvirt/qemu/ [root@localhost qemu]# mv test02.xml test01.xml [root@localhost qemu]# virsh define test01.xml #修改虛擬機配置(內存大小等)信息: [root@localhost qemu]# vim /etc/libvirt/qemu/test01.xml [root@localhost qemu]# virt-df -h test01 #在宿主機上查看虛擬機磁盤信息
克隆虛擬機:
[root@localhost qemu]# virt-clone -o test01 -n test02 -f /kvm/store/test02.qcow2 #將test01克隆爲test02 [root@localhost qemu]# virsh list --all #查看現有虛擬機 Id 名稱 狀態 ---------------------------------------------------- - test01 關閉 - test02 關閉
虛擬機建立快照:
KVM虛擬機要使用快照功能,磁盤格式必須爲qcow2
[root@localhost qemu]# virsh snapshot-create test01 #對虛擬機test01建立快照 [root@localhost qemu]# virsh snapshot-list test01 #查看快照信息 名稱 生成時間 狀態 ------------------------------------------------------------ 1560191837 2019-06-11 02:37:17 +0800 shutoff [root@localhost qemu]# virsh snapshot-revert test01 1560191837 #恢復虛擬機狀態至1560191837 [root@localhost qemu]# virsh snapshot-delete test01 1560191837 #刪除快照