KVM虛擬化平臺瞭解與搭建

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 testvirsh undefine test

通過備份的配置文件重新定義虛擬機:virsh define /etc/libvirt/qemu/test.xml

修改虛擬機配置信息:virsh edit test

KVM文件管理

虛擬機磁盤文件的兩種格式:rawqcow2

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 startservice ktune start

查看當前優化方案:tuned-adm active

查看預先設定好的優化方案:tuned-adm list

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章