KVM虛擬化平臺
什麼是KVM?
是Linux系統上的一種虛擬化平臺,相當於Windows上安裝VMware一樣,以一種邏輯方式來打破原有的物理結構,可以允許一臺服務器上運行多個操作系統,可以說KVM就是在Linux上安裝的一款軟件,可以在一臺物理機上同時運行多個虛擬機
KVM有什麼用?
如果Linux服務器利用率不高,則可以充分利用這些Linux服務器,在物理機上運行多個業務系統,合理運用資源
虛擬化的優勢:
1.減少服務器成本,資源利用最大化
2.可以動態調整硬件資源,提高IT業務的靈活性
3.高可用性,具備更高效的故障防護手段
安裝虛擬化平臺
1.最簡單的開啓CUP虛擬化支持就是在安裝系統的時候選擇桌面,然後勾選虛擬化,安裝虛擬化平臺和工具
2.已經安裝系統的話,安裝KVM所需軟件
yum -y groupinstall "Desktop"
yum -y install qemu-kvm qemu-kvm-tools python-virtinst.noarch qemu-img bridge-utils libvirt virt-manager
重啓後檢查CPU是否支持虛擬化
查看CPU是否支持虛擬化:cat /proc/cpuinfo | grep vmx
或者cat /proc/cpuinfo | grep -E 'vmx|svm'
檢查kvm模塊是否安裝:lsmod | grep kvm
下圖說明已經支持虛擬化也已經安裝了kvm模塊
配置KVM網卡
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:64:B2:56
TYPE=Ethernet
UUID=abc7b758-5ef0-40de-9444-cb56f44de31a
ONBOOT=on
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE="br0"
vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=on
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.101
NETMASK=255.255.255.0
GATEWAY=192.168.0.101
DNS1=192.168.0.101
重啓網卡:service network restart
KVM的管理與應用
kvm管理工具:virt-manager
打開virt-manager:virt-manager
補充:出現下列問題爲virt-manager版本問題,virt-manager-0.9.0-34版本對中文字符集的支持有問題
解決方法:卸載virt-manager-0.9.0-34版本,重新安裝virt-manager-0.9.0-31.el6.x86_64
雙擊localhost(QEMU)選擇存儲選項,然後點擊+可以新建存儲池(創建一個虛擬機的存儲池存放虛擬機文件,再創建一個存儲池存放iso鏡像文件)
把安裝需要用的鏡像都可以放在/kvm/iso這個目錄下,方便使用
選擇bdqn點擊新建卷
創建一個test_kvm
然後回到初始管理頁面,點擊新建,創建一個虛擬機名字爲CentOS6.5
然後最後點擊完成就可以了,就會跟安裝系統一樣跳出窗口,開始使用
KVM命令集管理虛擬機
備註:這裏的test爲虛擬機的名稱
KVM的配置文件存放位置:/etc/libvirt/qemu/
查看虛擬機狀態:virsh list --all
虛擬機開機:virsh start test
虛擬機關機:virsh shutdown test
強制關閉虛擬機電源:virsh destroy test
通過配置文件啓動虛擬機:virsh create /etc/libvirt/qemu/test.xml
掛起虛擬機:virsh suspen test
恢復虛擬機:virsh resume test
配置虛擬機伴隨宿主自動啓動(需要創建/etc/libvirt/qemu/autostart目錄,內容爲開機自動啓動的系統):virsh autostart test
導出虛擬機配置:virsh dumpxml test > /etc/libvirt/qemu/test.xml.bak
刪除虛擬機(virsh list --all命令查看刪除結果):virsh shutdown test》virsh undefine test
通過備份的配置文件重新定義虛擬機:virsh define /etc/libvirt/qemu/test.xml
修改虛擬機配置信息:virsh edit test
KVM文件管理
虛擬機磁盤文件的兩種格式:raw和qcow2
raw:默認格式,性能最好,速度最快,缺點是新功能的支持不齊全,
查看磁盤文件信息:qemu-img info /kvm/store/test.img
查看虛擬機磁盤信息:virt-df -h test
轉換raw格式爲qcow2格式
先關閉虛擬機:virsh shutdown test
轉換格式:qemu-img convert -f raw -O qcow2 /kvm/store/test.img
文件文本操作
修改配置文件:virsh edit test(相當於vim命令)
查看配置文件:virt-cat -a /kvm/store/test.qcow2 /etc/sysconfig/network(相當於cat命令)
編輯文件:virt-edit -a /kvm/store/test.qcow2 /etc/php.ini
虛擬機克隆
首先要保證被克隆的虛擬機保持關閉狀態
從test1克隆到test2:virt-clone -o test1 -n test2 -f /kvm/store/test2.qcow2
虛擬機快照
創建快照:virsh snapshot-create test
查看快照版本信息:virsh snapshot-current test
查看快照信息:virsh snapshot-list test
恢復快照:virsh snapshot-revert test 1382572463
刪除快照:virsh snapshot-delete test 1382572463
備註:後面的數字是需要回到的版本號
KVM性能優化
KVM採取全虛擬化,全虛擬化是由一個軟件來模擬硬件層,會有一定的損耗,特別是I/O,所以需要優化性能
CPU優化:所有虛擬機的guestcpu加起來的總數不要超過物理機,超過了會對性能帶來嚴重的影響
內存優化
可以將內容相同的虛擬機內存合併(開啓KSM),特別是操作系統一樣的情況下,但是這個過程也會有性能消耗,需要考慮使用場景決定是否開啓
查看內存頁共享的情況:ll /sys/kernel/mm/ksm
pages_shared:該文件記錄KSM共享的總頁面數
pages_sharing:該文件記錄當前共享的頁面數
備註:每個頁面的大小爲4KB,內存大小(KB)=頁面數X4
查詢是否開啓KSM:cat run(0爲未開啓,1爲已開啓)
臨時開啓KSM:echo 1 > run
開機自動開啓KSM:echo 1 > /sys/kernel/mm/ksm/run
備註:該文件不支持vi編輯,只支持重定向
查看多長時間定期掃描相同頁:cat pages_to_scan
備註:默認爲100,越大越好,超過2000無效,需開啓ksmtuned和tuned
查看當前虛擬機內存限制:virsh memtune vm
Hard_limit:強制最大內存
Soft_limit:可用最大內存
Swap_hard_limit:強制最大swap使用大小
設置強制最大內存100MB:virsh memtune vm --hard-limit 1024000 --live
--hard-limit:設置對象爲強制最大內存
--soft-limit:設置對象爲可用最大內存
--swap-hard-limit:設置對象爲強制最大swap使用大小
--min-guarantee:保證最小內存
--config:下次重啓生效
--live:在線生效
--current:只在當前生效
設置大頁後端內存
查看內存信息:cat /proc/meminfo
1.指定大頁需要的內存頁面數(臨時生效):echo 25000 > /proc/sys/vm/nr_hugepages
也可以vim /etc/sysctl.conf添加vi.nr_hugepages=2500來設置大頁文件系統需要的內存頁面數
2.關閉虛擬機:virsh destroy vm
3.編輯配置文件:virsh edit vm
添加<memoryBacking><hugepages/></memoryBacking>
4.掛載hugetlbfs文件系統,啓動虛擬機
mount -t hugetlbfshugetlbfs /dev/hugepages
service libvirtd restart
virsh start vm
5.查看HugePage內存頁面信息:cat /proc/meminfo | grep HugePage
I/O的優化
調整I/O權重weight(100-1000之間),權重越高決定哪個虛擬機數據優先寫入磁盤
限制具體的I/O:virsh blkiotune vm
設置權重值:virsh blkiotune vm --weight 500
或者修改XML配置文件
<blkiotune><weight>500</weight></blkiotune>
系統調優工具
tuned:服務端程序
tuned-adm:客戶端程序
安裝工具:yum -y install tuned
啓動服務:service tuned start和service ktune start
查看當前優化方案:tuned-adm active
查看預先設定好的優化方案:tuned-adm list