Docker容器與虛擬化技術——部署KVM虛擬化平臺

                                                        部署KVM虛擬化平臺

一、搭建KVM虛擬化平臺
1、前置知識點
(1)什麼是虛擬化
        把硬件資源從物理方式轉變爲邏輯方式,打破原有物理結構,使用戶可以靈活管理這些資源,並且允許1臺物理機上同時運行多個操作系統,以實現資源利用率最大化和靈活管理的技術
(2)虛擬化層
①X86平臺指令集劃分爲4個特權模式:ring0-3
②操作系統工作在ring0
③應用程序使用ring3
④驅動程序使用ring1-2
(3)虛擬化的優勢
①減少服務器數量,降低硬件採購成本
資源利用率最大化
③降低機房空間、散熱、電耗成本
④硬件資源可動態調整,提高企業IT業務靈活性
高可用性
在不中斷服務的情況下進行物理硬件調整
⑦降低管理成本
具備更高效的災備能力
(4)VMware虛擬化
①vSphere是VMware公司2001年基於雲計算推出的一套企業級虛擬化解決方案,核心組件爲ESX,現已被ESXi取代。經歷了5個版本改進,實現了虛擬化基礎架構、高可用性、集中管理、性能監控等一體化解決方案。號稱世界第一套雲計算的操作系統
②ESXi本身也是一個操作系統,採用Linux內核(VMKernel),安裝方式爲裸金屬方式,直接安裝在物理服務器上,不需要安裝任何其他操作系統。
(5)KVM虛擬化
①KVM自Linux2.6.20版本後就直接整合到Linux內核中,它依託CPU虛擬化指令集(如Interl-VT、AMD-V)實現高性能的虛擬化支持。由於Linux內核高度整合,因此在性能、安全性、兼容性、穩定性上都有很好的表現

2、案例實施
(1)安裝方式
方式一:安裝Linux系統時,選擇桌面安裝,然後選擇虛擬化選項
方式二:在已有系統上安裝KVM所需軟件
1)yum -y groupinstall “Desktop”:安裝桌面環境
2)yum -y install qemu-kvm:KVM模塊
3)yum -y install qemu-kvm-tools:KVM調試工具,可不安裝
4)yum -y install python-virtinst:python組件,記錄創建VM時的xml文件
5)yum -y install qemu-img:qemu組件,創建磁盤、啓動虛擬機等
6)yum -y install bridge-utils:網絡支持工具
7)yum -y install libvirt:虛擬機管理工具
8)yum -y install virt-manager:圖形界面管理虛擬機
③驗證
1)查看CPU是否支持虛擬化:cat /proc/cpuinfo | grep vmx
2)查看KVM模塊是否安裝:lsmod | grep kvm
(2)設置KVM網絡
①用戶模式(NAT):默認模式,數據包通過主機接口傳送,可訪問外網,但外網不能訪問虛擬機網絡
②橋接模式:允許虛擬機像一臺獨立主機那樣擁有獨立網絡
1)eth0中添加BRIDGE=”br0”
2)vim /etc/sysconfig/network-scripts/ifcfg-br0
(3)KVM管理(DEVICE=ager)
①創建存儲池
1)雙擊localhost(QEMU)

2)選擇“存儲”選項框,單擊“+”建立名稱爲bdqn的鏡像存儲池,並單擊前進,之後設置存儲目錄點擊完成即可

3)以同樣方式創建名爲dbqn_iso的鏡像存儲池,目錄爲/data_kvm/iso,並將系統安裝鏡像上傳到該目錄
4)在dbqn存儲池中建立存儲卷

5)返回管理器,右擊localhost(QUMU),選擇新建,並按步驟配置新建虛擬機



6)在Overview中定位到機器設置,把時鐘偏移改爲localtime,在Boot Options中勾選主機引導時啓動虛擬機。如果要遠程管理,在顯示VNC選項中,將Keymap設置爲Copy Local Keymap

7)完成設置後進入裝機界面


二、使用KVM命令集管理虛擬機
1、KVM基本功能管理
(1)查看幫助:virsh -h
(2)查看KVM配置文件存放目錄(CentOS6.5.xml是虛擬機系統實例的配置文件)
ls /etc/libvirt/qemu/
(3)查看虛擬機狀態:virsh list --all
(4)虛擬機關機與開機
virsh shutdown CentOS6.5
關機命令需要在虛擬機上安裝acpid軟件並運行acpid服務
virsh start CentOS6.5
(5)強制實例系統關閉電源:virsh destroy CentOS6.5
(6)通過配置文件啓動虛擬機實例
virsh create /etc/libvirt/qemu/CentOS6.5.xml
(7)掛起虛擬機
virsh suspend CentOS6.5
(8)恢復虛擬機
virsh resume CentOS6.5
(9)配置虛擬機實例伴隨宿主機自動啓動
virsh autostart CentOS6.5
(10)導出虛擬機配置
virsh dumpxml CentOS6.5>/etc/libvirt/qemu/test02.xml
(11)虛擬機的刪除與添加
①刪除
virsh shutdown CentOS6.5
virsh undefine CentOS6.5
②通過備份配置文件重新定義虛擬機
mv test02.xml CentOS6.5.xml
virsh define CentOS6.5.xml
(12)修改虛擬機配置信息(內存大小、磁盤等信息)
①通過vim /etc/libvirt/qemu/CentOS6.5.xml
②通過virsh edit CentOS6.5
2、KVM文件管理
通過文件管理可以直接查看、修改、複製虛擬機的內部文件。例如在虛擬機因配置問題無法啓動時,可直接修改虛擬機的文件。虛擬機磁盤文件有raw和qcow2兩種,默認使用raw格式。raw性能最好、速度最快,但不支持一些新功能,如鏡像、Zlib磁盤壓縮、AES加密等。這裏介紹本地yum安裝libguestfs-tools後產生的命令行工具(針對qcow2格式,因此需要將raw格式文件轉換成qcow2格式
(1)轉換raw格式磁盤文件至qcow2格式
①查看當前磁盤格式:qemu-img info /data_kvm/store/test01.img
②關閉虛擬機:virsh shutdown test01
③轉換格式:qemu-img convert -f raw -O qcow2 /data_kvm/store/test01.img
(2)修改test01的xml配置文件
<source file='/data_kvm/store/test01.qcow2'/>
(3)virt-cat命令,類似cat命令(libguestfs-tools包中)
virt-cat -a /data_kvm/store/test01.qcow2 /etc/resolv.conf
(4)virt-edit命令:用法基本與vim相同
(5)virt-df命令:查看虛擬機磁盤信息
3、虛擬機克隆
(1)virt-clone -o test1 -n test2 -f /data/store/test2.qcow2
4、虛擬機快照
KVM虛擬機要使用鏡像功能,磁盤格式必須爲qcow2
(1)創建快照
virsh snapshot-create test1
(2)查看快照版本信息
virsh snapshot-current test1
(3)查看快照信息
virsh snapshot-list test1
(4)恢復快照
virsh snapshot-revert test1 1584261453
(5)刪除快照
virsh snapshot-delete test1 1584261453
5、virt-install工具(需單獨安裝)
(1)virt-install是一個命令行工具,它能夠爲KVM、Xen或其它支持libvrit API的hypervisor創建虛擬機並完成GuestOS安裝;此外,它能夠基於串行控制檯、VNC或SDL支持文本或圖形安裝界面。安裝過程可以使用本地的安裝介質如CDROM,也可以通過網絡方式如NFS、HTTP或FTP服務實現。對於通過網絡安裝的方式,virt-install可以自動加載必要的文件以啓動安裝過程而無須額外提供引導工具。當然,virt-install也支持PXE方式的安裝過程,也能夠直接使用現有的磁盤映像直接啓動安裝過程。
(2)安裝示例
virt-install --name=centos6.5-2 --ram=51 --vcpus=1 --os-type=Linux --cdrom=/home/kvmiso/CentOS6.iso --file=/home/kvmimg/centos65-2.img --file-size=10 --network bridge=br0 --vnc --vncport=5904 --vnclisten=0.0.0.0
(3)一般選項:
①-n NAME, --name=NAME:虛擬機名稱,需全局惟一;  
②-r MEMORY, --ram=MEMORY:虛擬機內在大小,單位爲MB;  
③--vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU個數及相關配置;
④--cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?來獲取支持的CPU模式;
(4)安裝選項:
①-c CDROM, --cdrom=CDROM:光盤安裝介質;  
②-l LOCATION, --location=LOCATION:安裝源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub;  
③--pxe:基於PXE完成安裝;  
④--livecd: 把光盤當作LiveCD;  
⑤--os-type=DISTRO_TYPE:操作系統類型,如linux、unix或windows等;  
⑥--os-variant=DISTRO_VARIANT:某類型操作系統的變體,如rhel5、fedora8等;  
⑦-x EXTRA, --extra-args=EXTRA:根據--location指定的方式安裝GuestOS時,用於傳遞給內核的額外選項,例如指定kickstart文件的位置,--extra-args "ks=http://172.16.0.1/class.cfg"  
⑧--boot=BOOTOPTS:指定安裝過程完成後的配置選項,如指定引導設備次序、使用指定的而非安裝的kernel/initrd來引導系統啓動等 ;例如:
1)--boot  cdrom,hd,network:指定引導次序;
2)--boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”:指定啓動系統的內核及initrd文件
(5)存儲配置
①--disk=DISKOPTS:指定存儲設備及其屬性;格式爲--disk /some/storage/path,opt1=val1,opt2=val2等;常用的選項有:  
1)device:設備類型,如cdrom、disk或floppy等,默認爲disk;  
2)bus:磁盤總結類型,其值可以爲ide、scsi、usb、virtio或xen;
3)perms:訪問權限,如rw、ro或sh(共享的可讀寫),默認爲rw;  
4)size:新建磁盤映像的大小,單位爲GB;  
5)cache:緩存模型,其值有none、writethrouth(緩存讀)及writeback(緩存讀寫);  
6)format:磁盤映像格式,如raw、qcow2、vmdk等;  
7)sparse:磁盤映像使用稀疏格式,即不立即分配指定大小的空間;
②--nodisks:不使用本地磁盤,在LiveCD模式中常用;
(6)網絡配置
①-w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:將虛擬機連入宿主機的網絡中,其中NETWORK可以爲:
1)bridge=BRIDGE:連接至名爲“BRIDEG”的橋設備;  
2)network=NAME:連接至名爲“NAME”的網絡;

三、KVM動態遷移
1、設置主機名、/etc/hosts,保證挽留過連接
2、兩臺主機的KVM連接NFS共享存儲
3、在源主機的KVM中新建虛擬機並安裝系統
4、連接KVM,並進行遷移

四、KVM性能優化
1、KVM爲什麼要調優
KVM採用全虛擬化技術,全虛擬化要由一個軟件來模擬硬件層,故由一定的損耗,特別是I/O,因此需要優化。
KVM性能優化主要在CPU、內存、I/O這幾方面。而不同場景優化方向也不同。
2、KVM優化思路
(1)CPU優化
要考慮CPU數量問題,所有guestcpu總數不能超過物理機CPU總數,建議選擇複製主機CPU配置

(2)內存優化
①KSM(Kernel Samepage Merging,相同頁合併)
內存分配最小單位是page,默認大小4kb。可以將host機內容相同的內存合併,以節省內存使用,特別是在虛擬機操作系統都一樣的情況下。開啓了KSM,則會將這些內存合併爲一個,當然這個過程會有性能損耗,所以開區與否,需要考慮使用場景
通過/sys/kernel/mm/ksm目錄下的文件可查看內存頁共享情況
pages_shared記錄了KSM共享的總頁面數
pages_sharing記錄了當前共享的頁面數
run記錄是否開啓KSM(0爲不開啓,1爲開啓)
臨時開啓:echo 1>/sys/kernel/mm/ksm/run(只能用重定向,不支持VIM)
pages_to_scan記錄數值決定每次掃描相同頁時每次查看多少個頁面,超過2000無效,需要開啓ksmtuned和tuned服務
②對內存設置限制
防止某個虛擬機無節制的使用內存資源,導致其他虛擬機無法正常使用,就需要對內存使用進行限制
查看當前虛擬機內存使用限制:virsh memtune vm
1)--min-guarantee:保證最小內存
2)--config:下次重啓生效
3)--live:在線生效
4)--current:只在當前生效
5)virsh memtune vm --hardlimit 1024000 --live:最大內存100M,在線生效
③大頁後端內存(Huge Page Backed Memory)
在邏輯地址向物理地址轉換時,CPU保持一個翻譯後備緩衝器TLB,用來緩存轉換結果,而TLB容量很小,所以如果page很小,TLB很容易就充滿,這樣就容易導致cache miss,相反page很大,TLB需要保存的緩存項就變少,就會減少cache miss。通過爲客戶端提供大頁後端內存,就能減少客戶機消耗的內存並提高TLB命中率,從而提升KVM性能
Interl的x86CPU通常使用4kb內存頁,通過配置能夠使用大頁:x86_32是4mb,64和32PAE是2mb。
1)echo 25000>/proc/sys/vm/nr_hugepages:指定大頁需要的內存頁面數
2)cat /proc/meminfo | grep HugePage:查看大頁使用情況
3)也可在/etc/sysctl.conf中添加vm.nr_hugepages=2500來持久設定大頁文件需要的內存頁面數
4)需要的頁面數可由客戶機需要的內存廚業頁面大小來大體估算
5)虛擬機大頁使用
a.virsh destroy vm:關閉虛擬機VM
b.virsh edit vm
a)<memoryBacking><hugepages/></memoryBacking>
c.mount -t hugetlbfshugetlbfs /dev/higepages:掛載hugetlfs文件系統
d.service libvirtd restart
e.virsh start vm
f.開機自動掛載:/etc/fstab中hugetlbfs/hugepages hugetlbfs defaults 0 0
(3)I/O優化
實際生產環境中,爲了避免過度消耗磁盤資源而對其他的虛擬機造成影響,我們希望每臺虛擬機對磁盤資源的消耗是可以控制的。比如多個虛擬機往硬盤中寫數據,誰可以優先寫,就可以調整I/O權重weight,權重越高寫入優先級越高
①在整體中的權重,範圍在100-1000
②限制具體的I/O
vish blkiotune vm:查看權重
virsh blkiotune vm --weight 500:設置權重爲500
編輯虛擬機XML文件:<blkiotune><weight>500</weight></blkiotune>
③還可以使用blkdeviotune設置虛擬機讀寫速度
virsh blkdeviotune --
(4)系統調優工具tuned/tuned-adm
①tuned:服務端程序,用於監控和手機系統組件數據
②tuned-adm:客戶端程序,用來和tuned打交道。可使用預先配置的優化方案對系統進行調優
③安裝和啓動
yum -y install tuned
service tuned start
service ktune start
④查看當前優化方案:tuned-adm active
查看預先設定好的優化方案:tuned-adm list
    - server-powersave
- desktop-powersave
- default:默認節電配置,是最基本的節點配置,只啓用磁盤和CPU插件
- virtual-guest:企業級服務器配置中使用,其中包括電池備份控制程序,緩存        保護以及磁盤管理
- latency-performance:延遲性能調優的服務器配置
- throughput-performance:吞吐性能調整的服務器配置,如果系統沒有企業級        存儲,建議使用這個
- enterprise-storage:企業存儲服務器優化方案
- virtual-host:根據enterprise-storage配置,可減少可置換的虛擬內存,並啓        用更多集合髒頁寫回。同時推薦在虛擬化主機中使用這個配置,包括KVM        和紅帽企業版虛擬化主機
- spindown-disk
- laptop-ac-powersave
- laptop-battery-powersave
Current active profile: default:使用的某種配置
⑤使用優化方案:tuned-adm profile virtual-gest(修改當前方案爲virtual-gest)
⑥創建自定義優化方案
1)拷貝/etc/tune-profiles/中的預定義方案後,進行參數修改即可
2)查看方案:tuned-adm list

 

 

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