KVM自Linux 2.6.20版本後就直接整合到Linux內核,它依託CPU虛擬化指令集實現高性能的虛擬化支持。它與Linux內核高度整合,所以在性能、安全性、兼容性、穩定性上都有很好的表現。
在KVM環境中運行的每一個虛擬化操做系統都將表現爲單個獨立的系統進程。所以它能夠很方便地與Linux系統中的安全模塊進行整合(SELinux),能夠靈活的實現硬件資源的管理和分配,KVM虛擬化的架構圖以下:
下面開始安裝,在 Centos 的光盤中,已經提供了安裝 KVM 所需軟件,只須要部署基於光盤鏡像的本地 yum 源,直接使用 yum 安裝軟件便可:
yum groupinstall -y 「GNOME DeskTop」 // 安裝 GNOME 桌面環境,若是是的話,則能夠省略vim
yum -y install qemu-kvm // kvm 模塊 yum -y install qemu-kvm-tools // kvm 調試工具,可不安裝 yum -y install virt-install // 構建虛擬機的命令行工具 yum -y install qemu-img // qemu 組件,建立磁盤、啓動虛擬機等 yum -y install bridge-utils // 網絡支持工具 yum -y install libvirt // 虛擬機管理工具 yum -y install virt-manager // 圖形界面管理虛擬機
注意:在使用 yum 安裝完畢桌面後執行「ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target」 命令,將系統默認運行的 target 更改成 graphical.targe。重啓後將進入圖形界面,若不執行,則重啓可能會報錯。
安裝完畢後,重啓系統,查看 CPU 是否支持虛擬化:api
[root@localhost /]# cat /proc/cpuinfo | grep vmx # 對於 Intel 的服務器可使用此命令查看,只要有輸出就說明 CPU 支持虛擬化 flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 .........省略部分 對於 AMD 服務器可使用以下命令查看: [root@localhost /]# cat /proc/cpuinfo | grep smv
檢查 KVM 模塊是否安裝:安全
[root@localhost /]# lsmod | grep kvm kvm_intel 170181 0 kvm 554609 1 kvm_intel irqbypass 13503 1 kvm
開啓服務:服務器
[root@localhost /]# systemctl start libvirtd [root@localhost /]# systemctl enable libvirtd
配置網絡:
在libvirt中運行KVM網絡有兩種方法:NAT和Bridge,默認是NAT。
關於兩種模式的說明以下:
(1)NAT模式:也是用戶模式,數據包由NAT方式經過主機的接口進行傳送,能夠訪問外網,可是沒法從外部訪問虛擬機網絡,因此通常不會用到。
(2)Bridge:也就是橋接模式,這種模式容許虛擬機像一個獨立的主機同樣擁有網絡,外部的機器能夠直接訪問到虛擬機內部,但須要網卡支持,通常有線網卡都支持。
這裏以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 UUID=b9f932a2-0dad-4119-a05e-e03322ff94d1 DEVICE=ens33 ONBOOT=yes BRIDGE=br0 // 在末尾添加此行
[root@localhost /]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0 [root@localhost /]# vim /etc/sysconfig/network-scripts/ifcfg-br0 # 複製一個網卡配置,並修改 TYPE=Bridge // 將類型改成橋接 BOOTPROTO=static // 靜態 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.10 // 配置 IP 及網關 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
重啓 network 服務:架構
[root@localhost /]# /etc/init.d/network restart Restarting network (via systemctl): [ OK ] // 輸出爲 OK 表示成功,反之則爲 no 失敗。
KVM 管理:ide
[root@localhost /]# virt-manager # 打開 圖形化虛擬機管理軟件
建立存儲池:
以一樣的操做建立一個鏡像存儲池,命名爲 iso,目錄爲/data_kvm/iso/,而後將系統光盤上傳到此目錄:
在 test 上建立存儲卷
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 #刪除快照