<dd id="yzu3f"><tr id="yzu3f"><kbd id="yzu3f"></kbd></tr></dd>

              安基網 首頁 系統 網絡學院 查看內容

              運維工程師必備技能:部署KVM虛擬化平臺

              2019-2-24 11:33| 投稿: xiaotiger |來自: 互聯網


              免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

              摘要: 技能目標:· 了解KVM原理· 學會部署虛擬化架構· 學會創建虛擬機實例1.1 案例分析1.1.1 案例概述 公司部分Linux服務器利用率不高,為充分利用這些Linux服務器,可以部署KVM,在物理機上運行多個業務系統。例如,在 ...

              技能目標:

              · 了解KVM原理

              · 學會部署虛擬化架構

              · 學會創建虛擬機實例

              1.1 案例分析

              1.1.1 案例概述

              公司部分Linux服務器利用率不高,為充分利用這些Linux服務器,可以部署KVM,在物理機上運行多個業務系統。例如,在運行Nginx的服務器上部署KVM,然后在虛擬機上運行Tomcat。

              1.1.2 案例前置知識點

              KVM自Linux 2.6.20版本后就直接整合到Linux內核,它依托CPU虛擬化指令集(如Intel-VT、AMD-V)實現高性能的虛擬化支持。由于與Linux內核高度整合,因此在性能、安全性、兼容性、穩定性上都有很好的表現。

              圖1.1簡單描繪了KVM虛擬化架構,在KVM環境中運行的每一個虛擬化操作系統都將表現為單個獨立的系統進程。因此它可以很方便地與Linux系統中的安全模塊進行整合(SELinux),可以靈活地實現資源的管理及分配。

              圖1.1 KVM虛擬化架構

              1. KVM原理簡介

              廣義的KVM實際上包含兩部分,一部分是基于LINUX內核支持的KVM內核模塊,另一部分就是經過簡化和修改的Qemu。

              KVM內核模塊模擬處理器和內存以支持虛擬機的運行,Qemu主要處理I/O以及為用戶提供一個用戶空間工具來進行虛擬機的管理。兩者相互結合,相輔相成,構成了一個完整的虛擬化平臺。

              請注意:Qemu本身并不是KVM的一部分,Qemu是一套完整的虛擬化解決方案,是純軟件實現虛擬化,包括處理器虛擬化、內存虛擬化以及各種虛擬設備的模擬,但因為是純軟件模擬出來的,所以Qemu的性能比較低。

              2. KVM運行時的三種模式

              客戶模式:可以簡單理解成客戶機在操作系統運行中的模式,客戶模式又分為內核模式和用戶模式。

              · 用戶模式:為用戶提供虛擬機管理的用戶空間工具以及代表用戶執行I/O,Qemu運行在這個模式之下。

              · 內核模式:模擬CPU以及內存,實現客戶模式的切換,處理從客戶模式的退出。KVM內核模塊運行在這個模式下。

              三種模式層次關系圖如圖1.2所示。

              圖1.2 三種模式層次關系圖

              3. KVM工作原理

              用戶模式的Qemu利用接口libkvm通過ioctl系統調用進入內核模式。KVMDriver為虛擬機創建虛擬CPU和虛擬內存,然后執行VMLAUNCH指令進入客戶模式,裝載Guest OS并運行。Guest OS運行過程中如果發生中斷或者影子缺頁等異常,將暫停Guest OS的運行并保存當前上下文退出到內核模式來處理這些異常。內核模式處理這些異常時如果不需要I/O則處理完成后重新進入客戶模式,如果需要I/O則進入到用戶模式,由Qemu來處理I/O,處理完成后進入內核模式,再進入客戶模式。工作原理如圖1.3所示

              圖1.3 工作原理圖

              1.1.3 案例環境

              1.本案例實驗環境

              采用centos7.3操作系統,并開啟虛擬化支持,案例環境如表1-1所示。

              表1-1 KVM虛擬化

              2. 案例需求

              1)安裝KVM。

              2)完成基本的KVM操作管理(創建、啟動、停止等)。

              3)完成KVM命令行操作虛擬機。

              3. 案例實現思路

              1)準備kvm安裝環境。

              2)安裝kvm。

              3)設置kvm網絡。

              4)創建kvm存儲池并安裝虛擬機。

              5)命令行操作虛擬機。

              1.2 搭建KVM虛擬化平臺

              1.2.1 準備kvm虛擬化環境

              1.安裝方式

              1)在CentOS的系統光盤鏡像中,已經提供了安裝KVM所需軟件。通過部署基于光盤鏡像的本地yum源,直接使用yum安裝所需軟件即可,安裝KVM所需軟件具體包含以下幾個。

              yum groupinstall -y "GNOME Desktop" //安裝GNOME桌面環境

              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 //圖形界面管理虛擬機

              2)驗證。重啟系統后,查看CPU是否支持虛擬化,對于Intel的服務器可以通過以下命令查看,只要有輸出就說明CPU支持虛擬化;AMD服務器可用cat/proc/cpuinfo | grep smv命令查看。

              [[email protected] ~]# cat /proc/cpuinfo | grep vmx

              flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx hypervisor lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid tsc_adjust

              檢查KVM模塊是否安裝:

              [[email protected] ~]# lsmod | grep kvm

              kvm_intel 170181 0

              kvm 554609 1 kvm_intel

              irqbypass 13503 1 kvm

              注意:在使用yum安裝完桌面后執行ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 命令,將系統的默認運行target更改為graphical.targe。重啟后系統將進入圖形化界面。若不執行上述命令更改系統的默認運行target,重啟時可能報錯。

              2)開啟服務

              安裝完成后還需要開啟libvirtd服務,以開啟相關支持。

              [[email protected] ~]# systemctl start libvirtd

              [[email protected] ~]# systemctl enable libvirtd

              2.設置KVM網絡

              宿主服務器安裝完成KVM,首先要設定網絡,在libvirt中運行KVM網絡有兩種方法:NAT和Bridge,默認是NAT。

              關于兩種模式的說明:

              1)用戶模式,即NAT方式,這種方式是默認網絡,數據包由NAT方式通過主機的接口進行傳送,可以訪問外網,但是無法從外部訪問虛擬機網絡。

              2)橋接模式,這種模式允許虛擬機像一臺獨立的主機一樣擁有網絡,外部的機器可以直接訪問到虛擬機內部,但需要網卡支持,一般有線網卡都支持。

              這里以Bridge(橋接)為例。

              注:宿主機IP地址為192.168.10.1

              [[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

              TYPE=Ethernet

              BOOTPROTO=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=58b0765c-572c-4f63-89a7-1bf720b1fab0

              DEVICE=ens33

              ONBOOT=yes

              BRIDGE=br0

              [[email protected] ~]#

              [[email protected] ~]# 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.10.1

              NETMASK=255.255.255.0

              GATEWAY=192.168.10.254

              重啟network服務:

              [[email protected] ~]# /etc/init.d/network restart

              Restarting network (via systemctl): [ OK ]

              確認IP地址信息:

              [[email protected] ~]# ifconfig

              br0: flags=4163 mtu 1500

              inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255

              inet6 fe80::3362:2f44:ebd1:62e prefixlen 64 scopeid 0x20

              ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)

              RX packets 3 bytes 234 (234.0 B)

              RX errors 0 dropped 0 overruns 0 frame 0

              TX packets 19 bytes 2613 (2.5 KiB)

              TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

              ens33: flags=4163 mtu 1500

              ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)

              RX packets 200 bytes 17407 (16.9 KiB)

              RX errors 0 dropped 0 overruns 0 frame 0

              TX packets 184 bytes 24024 (23.4 KiB)

              TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

              lo: flags=73 mtu 65536

              inet 127.0.0.1 netmask 255.0.0.0

              inet6 ::1 prefixlen 128 scopeid 0x10

              loop txqueuelen 1 (Local Loopback)

              RX packets 550 bytes 47778 (46.6 KiB)

              RX errors 0 dropped 0 overruns 0 frame 0

              TX packets 550 bytes 47778 (46.6 KiB)

              TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

              virbr0: flags=4099 mtu 1500

              inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255

              ether 52:54:00:64:3e:58 txqueuelen 1000 (Ethernet)

              RX packets 0 bytes 0 (0.0 B)

              RX errors 0 dropped 0 overruns 0 frame 0

              TX packets 0 bytes 0 (0.0 B)

              TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

              出現以上信息,說明網卡橋接成功了。

              3.KVM管理

              [[email protected] ~]# virt-manager

              virt-manager是基于libvirt的圖像化虛擬機管理軟件。請注意,不同的發行版上 virt-manager 的版本可能不同,圖形界面和操作方法也可能不同。本文使用了CentOS 7.3。創建KVM虛擬機最簡單的方法是通過virt-manager接口。從控制臺窗口啟動這個工具,以root身份輸入virt-manager命令,出現如圖1.4所示窗口。

              圖1.4 虛擬機管理界面

              虛擬化管理步驟如下。

              1)創建存儲池,雙擊QEMU/KVM,選擇"存儲"選項卡,然后單擊"+"按鈕新建存儲池。如圖1.5所示,單擊"前進"按鈕,根據提示輸入或瀏覽用以設置存儲目錄,如/data_kvm/store,最后單擊"完成"按鈕即可。

              圖1.5 創建存儲池

              2)以同樣的操作創建一個鏡像存儲池,命名為bdqn_iso,目錄為/data_kvm/iso即可。在安裝操作系統時,我們把鏡像上傳到服務器目錄/data_kvm/iso,如圖1.6所示。

              圖1.6 創建鏡像存儲池

              3)創建存儲卷,單擊剛創建好的"bdqn",單擊對話框中"卷"右邊的 "+"按鈕建立一個存儲卷,并設置最大容量,如圖1.7所示。

              圖1.7 創建存儲卷

              4)單擊"完成"按鈕后,回到虛擬系統管理器。右擊"QEMU/KVM",然后選擇"新建"選項,在彈出的對話框中按圖1.8所示選擇"本地安裝介質",然后單擊"前進"按鈕。

              單擊"瀏覽"按鈕選擇鏡像文件,再選擇操作系統型及版本,如圖1.9所示。

              單擊"前進"按鈕,在圖1.10所示的對話框中適當分配內存和CPU資源,如1核CPU、1GB內存。

              單擊"前進"按鈕,在如圖1.11所示的對話框中點選"選擇或創建自定義存儲"單選按鈕,單擊"管理"按鈕選擇文件,然后單擊"前進"按鈕。

              在如圖1.12所示將虛擬機名稱命名為"CentOS 7.3",并勾選話框中 的"在安裝前自定義配置"復選框,單擊"完成"按鈕,彈出如圖1.13所示的對話框。

              圖1.12 新建虛擬機(5)

              圖1.13 新建虛擬機(6)

              在"引導選項"視圖中勾選"主機引導時啟動虛擬機"復選框,這樣在物理宿主機啟動后,這個VM也會啟動,最后單擊"應用"按鈕,如圖1.14所示。

              圖1.14 新建虛擬機(7)

              最后單擊"開始安裝"按鈕即可,整個虛擬化配置過程完成。下面就是安裝操作系統的工作,和平時安裝Linux系統一樣,如圖1.15所示。

              圖1.15 CentOS安裝界面

              1.2.2 使用KVM命令集管理虛擬機

              1. 安裝Linux虛擬機

              安裝過程同上一案例,使用Xshell遠程控制bdqn主機。

              2. KVM基本功能管理

              1)查看命令幫助

              [[email protected] ~]# virsh -h

              …… //省略輸出內容

              2)查看KVM的配置文件存放目錄(test01.xml是虛擬機系統實例的配置文件)

              [[email protected] ~]# ls /etc/libvirt/qemu/

              autostart networks test01.xml

              3)查看虛擬機狀態

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------------------------

              4 test01 running

              4)虛擬機關機與開機

              [[email protected] ~]# virsh shutdown test01

              [[email protected] ~]# virsh start test01

              5)強制實例系統關閉電源

              [[email protected] ~]# virsh destroy test01

              6)通過配置文件啟動虛擬機系統實例

              [[email protected] ~]# virsh create /etc/libvirt/qemu/test01.xml

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------------------------

              7 test01 running

              7)掛起虛擬機

              [[email protected] ~]# virsh suspend test01

              查看虛擬機狀態:

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------------------------

              7 test01 暫停

              8)恢復虛擬機

              [[email protected] ~]# virsh resume test01

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------------------------

              7 test01 running

              9)配置虛擬機實例伴隨宿主機自動啟動

              [[email protected] ~]# virsh autostart test01

              上述命令將創建/etc/libvirt/qemu/autostart/目錄,目錄內容為開機自動啟動的系統。

              10)導出虛擬機配置

              [[email protected] ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml

              11)虛擬機的刪除與添加

              刪除虛擬機:

              [[email protected] ~]# virsh shutdown test01

              [[email protected] ~]# virsh undefine test01

              查看刪除結果,test01的配置文件被刪除,但是磁盤文件不會被刪除。

              [[email protected] ~]# ls /etc/libvirt/qemu/

              autostart networks test02.xml

              通過virsh list --all查看不到test01的信息,說明此虛擬機被刪除。

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------

              通過備份的配置文件重新定義虛擬機:

              [[email protected] ~]# cd /etc/libvirt/qemu

              [[email protected] qemu]# mv test02.xml test01.xml

              重新定義虛擬機:

              [[email protected] qemu]# virsh define test01.xml

              查看虛擬機信息:

              [[email protected] qemu]# virsh list --all

              Id 名稱 狀態

              ----------------------------------------------------

              - test01 關閉

              12)修改虛擬機配置信息(用來修改系統內存大小、磁盤文件等信息)

              直接通過vim命令修改:

              [[email protected] ~]# vim /etc/libvirt/qemu/test01.xml

              通過virsh命令修改:

              [[email protected] ~]# virsh edit test01

              3. KVM文件管理

              通過文件管理可以直接查看、修改、復制虛擬機的內部文件。例如,當系統因為配置問題無法啟動時,可以直接修改虛擬機的文件。虛擬機磁盤文件有raw、 qcow2與qed格式, KVM虛擬機默認使用qcow2格式。這里介紹本地YUM安裝libguestfs-tools后產生的命令行工具,這個工具可以直接讀取qcow2格式的磁盤文件。

              1)查看當前磁盤格式:

              [[email protected] ~]# qemu-img info /data_kvm/store/test01.qcow2

              image: /data_kvm/store/test01.qcow2

              file format: qcow2

              virtual size: 10G (10737418240 bytes)

              disk size: 1.3G

              cluster_size: 65536

              Format specific information:

              compat: 1.1

              lazy refcounts: true

              如果虛擬機磁盤文件不是qcow2格式,可以通過qemu-img命令轉換磁盤文件格式,如執行以下操作可以將test01虛擬機raw格式磁盤轉換至qcow2格式。

              [[email protected] ~]# virsh shutdown test01

              [[email protected] ~]# qemu-img convert -f raw -O qcow2 /data_kvm/store/test01.img /data_kvm/store/test01.qcow2

              執行轉換磁盤格式的命令后還需要修改test01的xml配置文件中磁盤的類型與磁盤文件名。

              [[email protected] ~]# virsh edit test01

              …… //省略部分內容

              qcow2 cache=none/>

              qcow2/>

              …… //省略部分內容

              2)virt-cat命令,類似于cat命令。使用這個命令需要安裝libguestfs-tools-c工具包

              [[email protected] ~]# yum -y install libguestfs-tools-c

              [[email protected] ~]# virt-cat -a /data_kvm/store/test01.qcow2 /etc/sysconfig/grub

              GRUB_TIMEOUT=5

              GRUB_DISTRIBUTOR="$(sed s, release .*$,,g /etc/system-release)"

              GRUB_DEFAULT=saved

              GRUB_DISABLE_SUBMENU=true

              GRUB_TERMINAL_OUTPUT="console"

              GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"

              GRUB_DISABLE_RECOVERY="true"

              3)virt-edit命令,用于編輯文件,用法與vim基本一致。

              [[email protected] ~]# virt-edit -a /data_kvm/store/test01.qcow2 /etc/resolv.conf

              nameserver 8.8.8.8

              4)virt-df命令用于查看虛擬機磁盤信息。

              [[email protected] ~]# virt-df -h test01

              文件系統 大小 已用空間 可用空間 使用百分比%

              test01:/dev/sda1 1014M 106M 908M 11%

              test01:/dev/cl/root 8.0G 917M 7.1G 12%

              4. 虛擬機克隆

              1)查看虛擬機狀態

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------

              - test01 關閉

              2)從test01克隆test02

              [[email protected] ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2

              3)查看虛擬機狀態

              [[email protected] ~]# virsh list --all

              Id 名稱 狀態

              ----------------------------------

              - test01 關閉

              - test02 關閉

              4)啟動虛擬機

              [[email protected] ~]# virsh start test02

              5. 虛擬機快照

              KVM虛擬機要使用鏡像功能,磁盤格式必須為qcow2。

              下面介紹KVM虛擬機快照備份的過程。

              1)對test01創建快照

              [[email protected] ~]# virsh snapshot-create test01

              已生成域快照 1503494464

              2)查看虛擬機快照版本信息

              [[email protected] ~]# virsh snapshot-current test01

              1503494464 //快照版本號

              shutoff

              …… //省略部分輸出

              3)查看快照信息

              [[email protected] ~]# virsh snapshot-list test01

              名稱 生成時間 狀態

              ------------------------------------------------------------

              1503494464 2017-08-23 09:21:04 -0400 shutoff

              4)創建新快照

              [[email protected] ~]# virsh snapshot-create test01

              已生成域快照 1503494564

              5)查看快照信息

              [[email protected] ~]# virsh snapshot-list test01

              名稱 生成時間 狀態

              ------------------------------------------------------------

              1503494464 2017-08-23 09:21:04 -0400 shutoff

              1503494564 2017-08-23 09:22:44 -0400 shutoff

              6)恢復虛擬機狀態至1503494464

              [[email protected] ~]# virsh snapshot-revert test01 1503494464

              7)查看虛擬機快照版本信息

              [[email protected] ~]# virsh snapshot-current test01

              1503494464 //快照版本號

              shutoff

              …… //省略部分輸出

              8)刪除快照

              [[email protected] ~]# virsh snapshot-delete test01 1503494464

              已刪除域快照 1503494464


              小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

              本文出自:https://www.toutiao.com/a6660711815099449868/

              免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


              鮮花

              握手

              雷人

              路過

              雞蛋

              相關閱讀

              最新評論

               最新
              返回頂部
              十一选五奖金对照表