首頁(yè)新聞動(dòng)態(tài)正文

云計(jì)算大數(shù)據(jù):KVM虛擬化技術(shù)實(shí)戰(zhàn)

更新時(shí)間:2017-12-22 來(lái)源:黑馬程序員 瀏覽量:

1、虛擬化是什么

虛擬化是指計(jì)算元件在虛擬的基礎(chǔ)上而不是真實(shí)的基礎(chǔ)上運(yùn)行,是一個(gè)為了簡(jiǎn)化管理,優(yōu)化資源的解決方案,通過(guò)模擬不同的元件做到資源的隔離和資源的充分利用。例如CPU的虛擬化技術(shù)可以單CPU模擬多CPU并行,允許一個(gè)平臺(tái)同時(shí)運(yùn)行多個(gè)操作系統(tǒng),并且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率。

2、虛擬化發(fā)展的階段

到目前為止,虛擬化經(jīng)歷了五個(gè)比較明顯的階段,分別是全模擬、分層模擬、半虛擬化、全虛擬化、容器虛擬化。全模擬是指CPU、網(wǎng)卡、芯片、磁盤都是通過(guò)軟件模擬的,特點(diǎn)是慢;分層模擬采用的是捕獲和翻譯技術(shù),對(duì)全虛擬化進(jìn)行組合或虛擬化的不同層次;半虛擬化通過(guò)改造虛擬機(jī)器,讓虛擬機(jī)明白自己就是一個(gè)虛擬機(jī)從而執(zhí)行一些指令;全虛擬化是指2005英特爾支持硬件層面(主要是CPU)的虛擬化之后的時(shí)間段,容器虛擬化是現(xiàn)在比較火的虛擬化技術(shù),以docker為代表,主要是進(jìn)程間的隔離,資源消耗低且具備資源隔離的特性。

3、主流虛擬化軟件

目前主流的虛擬化技術(shù)主要有: KVM 、 Xen 、 VMware(VirtualBox)、Hyper-v。

Xen 和KVM ,是開(kāi)源免費(fèi)的虛擬化軟件。

VMware是付費(fèi)的虛擬化軟件。

Hyper-v是微軟windows 2008 R2附帶的虛擬化組件,需要花錢買授權(quán)。

虛擬Linux用哪些軟件?

如果是虛擬Linux,建議首先使用Xen ,支持Linux的半虛擬化,可以直接使用主系統(tǒng)的CPU和磁盤及網(wǎng)絡(luò)資源,達(dá)到較少的虛擬化調(diào)度操作,可以達(dá)到非常高的性能,但Xen 操作復(fù)雜,維護(hù)成本較高。其次我們推薦KVM 來(lái)虛擬Linux,Linux本身支持KVM 的virtio技術(shù),可以達(dá)到少量的虛擬化調(diào)度操作,得到較高的系統(tǒng)性能。

虛擬windows用那些軟件?

在有授權(quán)的情況下,虛擬windows,建議使用hyper-v。

沒(méi)有授權(quán)的情況下,實(shí)驗(yàn)環(huán)境使用VMware,企業(yè)生產(chǎn)環(huán)境建議使用KVM,可以從redhat那里免費(fèi)拿到針對(duì)windows優(yōu)化過(guò)的磁盤和網(wǎng)絡(luò)的驅(qū)動(dòng)程序,可以達(dá)到較高的性能(幾乎與hyper-v性能持平)

不打算買廠商支持,其中vmware和hyper-v,是不建議使用的,主要是授權(quán)問(wèn)題。

4、KVM虛擬化

KVM是指基于Linux內(nèi)核的虛擬機(jī)(Kernel-base Virtual Machine),2010年4月發(fā)布的RHEL6.0,將KVM增加到Linux內(nèi)核是Linux發(fā)展的一個(gè)重要里程碑,這也是第一個(gè)整合到Linux主線內(nèi)核的虛擬化技術(shù)。

一個(gè)普通的Linux進(jìn)程有兩種運(yùn)行模式:內(nèi)核模式和用戶模式( 用戶模式是指進(jìn)程在用戶代碼中運(yùn)行。內(nèi)核模式是指進(jìn)程進(jìn)入內(nèi)核代碼,執(zhí)行內(nèi)核的代碼),KVM增加了第三種模式:客戶模式(有自己的內(nèi)核和用戶模式)。這里的客戶模式,就相當(dāng)于你在VMware中安裝了自己的某個(gè)windows操作系統(tǒng)一樣。在KVM模型中,每一個(gè)虛擬機(jī)都是一個(gè)由Linux調(diào)度程序管理的標(biāo)準(zhǔn)進(jìn)程,你可以在用戶空間啟動(dòng)客戶機(jī)操作系統(tǒng)。

簡(jiǎn)單的類比關(guān)系就是,KVM相當(dāng)于是windows版本的VMware,我們可以在KVM中創(chuàng)建很多其他版本的操作系統(tǒng)實(shí)例,只不過(guò)KVM在創(chuàng)建實(shí)例的時(shí)候,需要一些輔助的工具,比如QEMU-KVM和Virt-manager。

5、KVM 的管理工具

KVM僅僅是Linux內(nèi)核的一個(gè)模塊

在 Linux 系統(tǒng)中,首先我們可以用modprobe(modprobe是linux的一個(gè)命令,可載入指定的個(gè)別模塊,或是載入一組相依的模塊)系統(tǒng)工具去加載 KVM 模塊,如果用 RPM 安裝 KVM 軟件包,系統(tǒng)會(huì)在啟動(dòng)時(shí)自動(dòng)加載模塊。加載了模塊后,才能進(jìn)一步通過(guò)其他工具創(chuàng)建虛擬機(jī)。

但KVM僅僅是Linux內(nèi)核的一個(gè)模塊,僅有 KVM 模塊是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)橛脩魺o(wú)法直接控制內(nèi)核模塊去做事情,還必須有一個(gè)用戶空間的工具。

用戶工具QEMU-KVM

QEMU是一套模擬CPU的開(kāi)源軟件。KVM作為內(nèi)核的一個(gè)模塊,可以通過(guò)QEMU提供的模擬方式,來(lái)使用處理器。這樣,KVM就提供了一個(gè)模擬的(虛擬的)硬件層,虛擬機(jī)就運(yùn)行在這個(gè)模擬的硬件層之上。

虛擬化技術(shù)實(shí)戰(zhàn)

上圖,是KVM虛擬機(jī)的整體架構(gòu)。KVM內(nèi)核模塊在運(yùn)行時(shí)按需加載進(jìn)入內(nèi)核空間運(yùn)行。KVM本身不執(zhí)行任何硬件設(shè)備模擬,需要用戶空間程序QEMU通過(guò)/dev/kvm接口設(shè)置一個(gè)虛擬客戶機(jī)的地址空間,向它提供模擬的I/O等硬件設(shè)備。

Libvirt/Virsh/Virt-manager:

盡管 QEMU-KVM 工具可以創(chuàng)建和管理 KVM 虛擬機(jī),RedHat為 KVM 開(kāi)發(fā)了更通用的輔助工具libvirt。Libvirt是一套提供了多種語(yǔ)言接口的 API,為各種虛擬化工具提供一套方便、可靠的編程接口,不僅支持 KVM,而且支持Xen等其他虛擬機(jī)。

使用libvirt,你只需要通過(guò)libvirt提供的函數(shù)連接到 KVM 或Xen宿主機(jī),便可以用同樣的命令控制不同的虛擬機(jī)了。

Libvirt不僅提供了API,還自帶一套基于文本的管理虛擬機(jī)的命令virsh,你可以通過(guò)使用virsh命令來(lái)使用libvirt的全部功能。

同時(shí)還能使用圖形界面進(jìn)行管理操作,其工具是Virt-manager。他是一套用 python 編寫(xiě)的虛擬機(jī)管理圖形界面,用戶可以通過(guò)它直觀地操作不同的虛擬機(jī)。Virt-manager 就是利用libvirt的 API 實(shí)現(xiàn)的。

6、KVM安裝說(shuō)明

KVM的安裝步驟大致如下:

1、準(zhǔn)備一臺(tái)物理機(jī),并安裝CentOS 6.x以上的Linux的發(fā)行版

這臺(tái)可以運(yùn)行最新linux內(nèi)核的Intel處理器(含VT虛擬化技術(shù))或AMD處理器(含SVM安全虛擬機(jī)技術(shù)的AMD處理器,也叫AMD-V)

2、安裝KVM對(duì)應(yīng)的軟件包

3、在KVM中創(chuàng)建虛擬機(jī)

通過(guò)QEMU-IMG命令創(chuàng)建一個(gè)硬盤,第一次接觸請(qǐng)選擇raw格式

通過(guò)virt-install命令安裝并啟動(dòng)虛擬機(jī)

指定虛擬機(jī)的內(nèi)存、CPU、網(wǎng)絡(luò)信息

指定虛擬機(jī)的網(wǎng)絡(luò)模式,生產(chǎn)環(huán)境使用橋接模式

指定VNC的端口及密碼信息

4、下載VNC軟件server--client

5、配置VNC軟件信息

主要是解決VNC閃退的問(wèn)題

6、通過(guò)VNC連接新創(chuàng)建的虛擬機(jī)

根據(jù)端口號(hào)進(jìn)行配置

7、在虛擬機(jī)中安裝系統(tǒng)

8、配置虛擬機(jī)的IP地址

7、KVM部署實(shí)踐

7.1、安裝Cent OS 6.X系統(tǒng)

[root@localhost ~]# cat /etc/redhat-release

CentOS release 6.5 (Final)

7.2、檢查系統(tǒng)是否支持虛擬化

cat /proc/cpuinfo |grep 'vmx'

cat /proc/cpuinfo |grep 'svm'

依次執(zhí)行以上兩條命令,看看是否有返回值。返回值參考如下:

如果輸出的結(jié)果包含VMX,它是Intel處理器虛擬機(jī)技術(shù)標(biāo)志;

如果包含SVM,它是AMD處理器虛擬機(jī)技術(shù)的標(biāo)志,

如果你什么都沒(méi)有得到,那應(yīng)你的系統(tǒng)并沒(méi)有支持虛擬化的處理,不能使用KVM,

另處linux發(fā)行版本必須在64bit環(huán)境中才能使用KVM。

7.3、更新Linux操作系統(tǒng)軟件

yum update

yum upgrade

這兩個(gè)命令會(huì)下載大量的安裝包,根據(jù)網(wǎng)速不同,需要等待的時(shí)長(zhǎng)不一。

如果對(duì)網(wǎng)速有要求,建議換成國(guó)內(nèi)的yum源地址。

網(wǎng)易Yum源配置

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

首先備份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下載對(duì)應(yīng)版本repo文件, 放入/etc/yum.repos.d/(操作前請(qǐng)做好相應(yīng)備份)

CentOS7 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

CentOS6 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

CentOS5 wget http://mirrors.163.com/.help/CentOS5-Base-163.repo

運(yùn)行以下命令生成緩存

yum clean all

yum makecache

7.4、關(guān)閉防火墻

(1) 重啟后永久性生效:

開(kāi)啟:chkconfig iptables on

關(guān)閉:chkconfig iptables off

(2) 即時(shí)生效,重啟后失效:

開(kāi)啟:service iptables start

關(guān)閉:service iptables stop

內(nèi)部環(huán)境建議永久關(guān)閉,永久關(guān)閉之后,需要重啟

7.5、關(guān)閉selinux

(1) 重啟后永久性生效:

vi /etc/sysconfig/selinux

SELINUX=disabled

編輯/etc/sysconfig/selinux文件,將文件中的SELINUX配置項(xiàng)改成disabled。

(2) 即時(shí)生效,重啟后失效:

setenforce 0

SELINUX作為軍用級(jí)別的防火墻,一般在生產(chǎn)環(huán)境中都會(huì)關(guān)閉掉,不關(guān)掉會(huì)有很多異常。

建議永久關(guān)閉,永久關(guān)閉之后,需要重啟

7.6、安裝KVM相關(guān)軟件包

yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v

7.7、確認(rèn)libvirtd是否正常啟動(dòng)

[root@node-3 ~]# /etc/init.d/libvirtd status

libvirtd (pid 3793) is running...

如果沒(méi)有啟動(dòng),可以嘗試手動(dòng)啟動(dòng)

/etc/init.d/libvirtd restart

回顧:

RedHat為 KVM 開(kāi)發(fā)了更通用的輔助工具libvirt。Libvirt是一套提供了多種語(yǔ)言接口的 API,為各種虛擬化工具提供一套方便、可靠的編程接口,不僅支持 KVM,而且支持Xen等其他虛擬機(jī)。詳見(jiàn)章節(jié)5。

7.8、檢查KVM是否加載成功

顯示結(jié)果如下表示kvm模塊已經(jīng)加載,如果沒(méi)有輸出信息,則表示沒(méi)有加載成功

[root@node-3 ~]# lsmod | grep kvm

kvm_intel 55464 30

kvm 345070 1 kvm_intel

7.9、檢查KVM是否成功安裝

[root@node-3 ~]# virsh list --all

Id Name State

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

7.10、查看工具版本信息

各版本查詢

[root@node-3 ~]# virt-install --version

0.600.0

[root@node-3 ~]# virsh --version

0.10.2

7.11、下載安裝VNC-Server服務(wù)

目的:通過(guò)Windows/Linux上的VNC客戶端來(lái)遠(yuǎn)程訪問(wèn)服務(wù)器,并且可使服務(wù)器的圖形化交互界面可見(jiàn)。前提需要在服務(wù)器端安裝并配置vncserver,在客戶端安裝vncview。

(1)、VNC-Server的安裝

yum -y install vnc *vnc-server*

(2)、修改配置文件

vim /etc/sysconfig/vncservers

VNCSERVERS="1:root 2:lisi"

VNCSERVERARGS[1]="-geometry 1024x768"

上面第一行是設(shè)定可以使用VNC服務(wù)器的帳號(hào),可以設(shè)定多個(gè),但中間要用空格隔開(kāi)。注意前面的數(shù)字“1”或是“2”,當(dāng)你要從其它電腦來(lái)訪問(wèn)VNC服務(wù)器時(shí),就需要用IP:1這種方法,而不能直接用IP。

(3)、配置會(huì)話密碼:

執(zhí)行命令:vncpasswd

123456

123456

(4)、啟動(dòng)VNC服務(wù):

/etc/init.d/vncserver start

7.12、修改VNC連接權(quán)限

通過(guò)KVM可以創(chuàng)建虛擬機(jī),在給虛擬機(jī)安裝操作系統(tǒng)時(shí),有些操作系統(tǒng)的安裝需要人為干預(yù)進(jìn)行界面操作,所以我們需要通過(guò)遠(yuǎn)程桌面的方式連接到這些虛擬機(jī)。

由于這些虛擬機(jī)是使用QEMU-KVM進(jìn)行管理的,所以我們需要在QEMU的配置文件中進(jìn)行VNC IP地址的修改。

修改qemu.conf配置

vi /etc/libvirt/qemu.conf

vnc_listen = "0.0.0.0"

打開(kāi)vnc_listen = "0.0.0.0"選項(xiàng),否則默認(rèn)綁定的IP地址是127.0.0.1,遠(yuǎn)程無(wú)法訪問(wèn)。

重要說(shuō)明

通過(guò)以上的步驟,我們就能準(zhǔn)備好KVM的環(huán)境,接下來(lái),我們需要通過(guò)工具創(chuàng)建一個(gè)基于KVM的虛擬機(jī)。

在創(chuàng)建虛擬機(jī)之前,我們有個(gè)問(wèn)題要解決,就是橋接網(wǎng)絡(luò)的設(shè)置。

一般在生產(chǎn)環(huán)境中,我們通過(guò)KVM虛擬機(jī)出來(lái)的虛擬機(jī),是需要通過(guò)IP地址對(duì)外直接提供服務(wù)的,這就需要我們配置橋接模式。

回顧

網(wǎng)絡(luò)鏈接有幾種方式,我們比較常用的有兩種,一種是通過(guò)NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換),另一種是橋接的方式。兩種鏈接方式的區(qū)別,簡(jiǎn)單說(shuō)就是橋接使用的是虛擬機(jī)獨(dú)立的網(wǎng)卡,具有獨(dú)立的IP地址,該ip地址和虛擬機(jī)所在的物理機(jī)是同等級(jí)的。NAT翻譯過(guò)來(lái)就是網(wǎng)絡(luò)地址轉(zhuǎn)換,相當(dāng)于是把虛擬機(jī)所在的物理機(jī)當(dāng)做路由器在使用。

7.13、上傳鏡像文件到宿主機(jī)

下載winscp或者是使用yum -y install lrzsz* 安裝lrzsz軟件,將鏡像文件上傳到宿主機(jī)上。

目標(biāo)地址:/export/iso/

虛擬化技術(shù)實(shí)戰(zhàn)

7.14、在宿主機(jī)上配置橋接網(wǎng)絡(luò)

cp ifcfg-eth0 ifcfg-br0

修改網(wǎng)橋的網(wǎng)絡(luò)信息,注意看紅色字段

[root@node-3 network-scripts]# vi ifcfg-br0

DEVICE=br0

TYPE=Bridge

BOOTPROTO=static

IPV6INIT=no

ONBOOT=yes

IPADDR=172.16.0.201

NETMASK=255.255.254.0

GATEWAY=192.168.0.1

DNS1=8.8.8.8

DELAY=0

修改當(dāng)前宿主機(jī)的網(wǎng)絡(luò)信息,注意看紅色字段

[root@node-3 network-scripts]# vi ifcfg-eth0

HWADDR=00:25:90:AE:21:C0

DEVICE=eth0

TYPE=Ethernet

BRIDGE=br0

BOOTPROTO=none

IPV6INIT=no

ONBOOT=yes

疑問(wèn):宿主機(jī)怎么沒(méi)有設(shè)置IP地址,我以后想訪問(wèn)宿主機(jī)怎么辦?

訪問(wèn)網(wǎng)橋的IP地址就可以訪問(wèn)宿主機(jī),他們是同一臺(tái)機(jī)器。

疑問(wèn):是否可以給宿主機(jī)單獨(dú)設(shè)置一個(gè)IP地址?

也可以,去掉上文配置文件的BOOTPROTO=none

回顧:

BOOTPROTO網(wǎng)絡(luò)配置參數(shù):

BOOTPROTO=static 靜態(tài)IP

BOOTPROTO=dhcp 動(dòng)態(tài)IP

BOOTPROTO=none 無(wú)(不指定)

通常情況下是dhcp或者static,通過(guò)指定方式的辦法來(lái)獲得地址,如果沒(méi)有指定的話可能會(huì)出現(xiàn)問(wèn)題。

7.15、通過(guò)KVM創(chuàng)建虛擬機(jī)硬盤

先為虛擬機(jī)創(chuàng)建一個(gè)硬盤

qemu-img create -f raw /export/vm/devEnv-01.vm.itcast.img 200G

硬盤格式說(shuō)明:

raw 格式的硬盤,會(huì)在創(chuàng)建的時(shí)候就占200G的空間

qcow2 格式的硬盤,會(huì)隨著系統(tǒng)的數(shù)據(jù)逐漸占用200G的空間

初次使用KVM的時(shí)候,建議使用raw格式創(chuàng)建硬盤,不會(huì)后期安裝操作系統(tǒng)是可能會(huì)出現(xiàn)錯(cuò)誤。錯(cuò)誤如下:

虛擬化技術(shù)實(shí)戰(zhàn)

7.16、通過(guò)KVM創(chuàng)建虛擬機(jī)

virt-install --name=devEnv-01.vm.itcast --ram=8192 --vcpus=4 --disk path=/export/vm/devEnv-01.vm.itcast.img --accelerate --cdrom /export/iso/CentOS-6.5-x86_64-bin-DVD1.iso --graphics vnc,password=123456,port=5992 --network bridge=br0 --force --autostart

運(yùn)行以上命令,會(huì)創(chuàng)建一個(gè)虛擬機(jī)。創(chuàng)建成功界面如下

虛擬化技術(shù)實(shí)戰(zhàn)

出現(xiàn)以上界面,表示虛擬機(jī)創(chuàng)建成功,緊接著我們需要通過(guò)VNC遠(yuǎn)程連接新創(chuàng)建的虛擬機(jī)進(jìn)行操作系統(tǒng)的安裝。

VNC的IP地址:172.16.0.201

當(dāng)前宿主機(jī)的IP地址,也就是網(wǎng)橋的IP地址

VNC的PORT端口號(hào):5992

見(jiàn)命令腳本vnc,password=123456,port=5992

VNC的Password密碼:123456

有必要一提的是上文的腳本中有bridge=br0的配置,表示我們新創(chuàng)建的虛擬機(jī)使用橋接的網(wǎng)絡(luò)模式。

7.17、下載安裝VNC客戶端

https://www.realvnc.com/download/file/vnc.files/VNC-6.0.1-Windows.exe

7.18、解決VNC軟件的閃退問(wèn)題

用VNC Viewer來(lái)連接一臺(tái)服務(wù)器,輸入密碼連上后直接閃退,可能是ColourLevel的問(wèn)題。

依次點(diǎn)Option-->Advanced-->Expert找到ColourLevel,默認(rèn)值是pal8,修改為rgb222或full。

重新連接,沒(méi)有問(wèn)題了。

虛擬化技術(shù)實(shí)戰(zhàn)

7.19、VNC軟件連接新創(chuàng)建的虛擬機(jī)

虛擬化技術(shù)實(shí)戰(zhàn)

連接成功后,需要輸入密碼。密碼是123456

虛擬化技術(shù)實(shí)戰(zhàn)

點(diǎn)擊OK按鈕之后,就進(jìn)入了我們熟悉的界面

虛擬化技術(shù)實(shí)戰(zhàn)

7.20、再次啟動(dòng)虛擬機(jī)器

安裝完系統(tǒng)之后,需要reboot。一旦執(zhí)行reboot,虛擬機(jī)并不會(huì)啟動(dòng),需要手動(dòng)在KVM管理工具中啟動(dòng)。

[root@node-3 ~]# virsh

Welcome to virsh, the virtualization interactive terminal.

Type: 'help' for help with commands

'quit' to quit

virsh # list --all

Id Name State

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

1 centos64 running

2 centos642 running

3 centos643 running

6 centos648 running

8 centos649 running

- devEnv-01.vm.itcast shut off

virsh # start devEnv-01.vm.itcast

Domain devEnv-01.vm.itcast started

7.21、為虛擬機(jī)配置網(wǎng)絡(luò)

通過(guò)VNC創(chuàng)建繼續(xù)訪問(wèn)

為新創(chuàng)建的虛擬機(jī)安裝完操作系統(tǒng)之后,修改網(wǎng)絡(luò)配置如下:

[root@devEnv-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=52:54:00:1A:CC:96

TYPE=Ethernet

UUID=d00f89f0-49b0-4252-a6a3-61575e49d8d8

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=dhcp

重啟網(wǎng)絡(luò)

Service network restart

8、KVM常用管理命令

8.1創(chuàng)建虛擬機(jī)

[root@localhost ~]# virt-install --name=centos1 \ #生成一個(gè)虛擬機(jī)

--ram 1024 \ #分配內(nèi)存大小(默認(rèn)大小MB)

--vcpus=1 \ #分配CPU核心數(shù)

--disk path=/root/centos1.img \ #指定虛擬機(jī)鏡像(size單位為GB)

--accelerate \ #加速

--cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \ # 指定安裝鏡像iso

--graphics vnc,password=123456,port=5921 \ # 指定vnc的連接密碼和監(jiān)聽(tīng)端口

--network bridge=br0 \ #指定網(wǎng)絡(luò)

--autostart \ ##自動(dòng)開(kāi)啟

8.2 virsh的其他操作

[root@localhost /]# virsh start centos1 #啟動(dòng)虛擬機(jī)

[root@localhost /]# virt-viewer centos1 #如果有圖形界面的話,可以進(jìn)入虛擬機(jī)的界面

[root@localhost ~]# virsh shutdown centos1 #關(guān)閉虛擬機(jī)

注意:shutdown使用發(fā)送acpid指令來(lái)控制虛擬機(jī)的電源,而KVM虛擬機(jī)安裝Linux系統(tǒng)時(shí)默認(rèn)沒(méi)有安裝acpid服務(wù),反以導(dǎo)致不能關(guān)閉虛擬機(jī),需要安裝acpid。

查看acpid服務(wù)是否開(kāi)啟:/etc/init.d/acpid status

啟動(dòng)acpid服務(wù):/etc/init.d/acpid start

[root@localhost /]# virsh reboot centos1 #重啟虛擬機(jī)

[root@localhost /]# virsh suspend centos1 #暫停虛擬機(jī)

[root@localhost /]# virsh resume centos1 #恢復(fù)虛擬機(jī)

[root@localhost /]# virsh autostart centos1 #自動(dòng)加載虛擬機(jī)

[root@localhost /]# virsh undefine centos1 #刪除一個(gè)虛擬機(jī)

virsh參數(shù)說(shuō)明如下:

autostart自動(dòng)加載指定的一個(gè)虛擬機(jī)

connect重新連接到hypervisor

console連接到客戶會(huì)話

create從一個(gè)SML文件創(chuàng)建一個(gè)虛擬機(jī)

start開(kāi)始一個(gè)非活躍的虛擬機(jī)

destroy刪除一個(gè)虛擬機(jī)

define從一個(gè)XML文件定義一個(gè)虛擬機(jī)

domid 把一個(gè)虛擬機(jī)名或UUID轉(zhuǎn)換為ID

domuuid把一個(gè)郁悶或ID轉(zhuǎn)換為UUID

dominfo查看虛擬機(jī)信息

domstate查看虛擬機(jī)狀態(tài)

domblkstat獲取虛擬機(jī)設(shè)備快狀態(tài)

domifstat獲取虛擬機(jī)網(wǎng)絡(luò)接口狀態(tài)

dumpxmlXML中的虛擬機(jī)信息

edit編輯某個(gè)虛擬機(jī)的XML文件

list列出虛擬機(jī)

migrate將虛擬機(jī)遷移到另一臺(tái)主機(jī)

quit退出非交互式終端

reboot重新啟動(dòng)一個(gè)虛擬機(jī)

resume重新恢復(fù)一個(gè)虛擬機(jī)

save把一個(gè)虛擬機(jī)的狀態(tài)保存到一個(gè)文件

dump把一個(gè)虛擬機(jī)的內(nèi)核dump到一個(gè)文件中以方便分析

shutdown關(guān)閉一個(gè)虛擬機(jī)

setmem改變內(nèi)存的分配

setmaxmem改變最大內(nèi)存限制值

suspend掛起一個(gè)虛擬機(jī)

vcpuinfo虛擬機(jī)的cpu信息

version顯示virsh版本

8.3 virt-clone克隆

當(dāng)安裝完一臺(tái)后,如何快速的虛擬出第二臺(tái)呢?

這里就可以采用克隆這種方式

(1)通過(guò)命令:

virt-clone -o devEnv-01.vm.itcast -n devEnv-02.vm.itcast -f /home/kvm/centos02.img

參數(shù)說(shuō)明:

-o :指定源虛擬機(jī)

-n :命名新克隆的虛擬機(jī)

-f :指定新克隆虛擬機(jī)的位置

(2)克隆完成后,在生成硬盤映像文件的同時(shí),也會(huì)克隆虛擬機(jī)的配置文件

虛擬化技術(shù)實(shí)戰(zhàn)

虛擬化技術(shù)實(shí)戰(zhàn)

(3) 修改克隆出來(lái)的心虛擬機(jī)的配置文件

通過(guò)命令:virsh edit devEnv-02.vm.itcast

云計(jì)算大數(shù)據(jù)

修改此處的vnc監(jiān)控的端口號(hào),避免與克隆前的虛擬機(jī)端口一樣,而出現(xiàn)端口地址被占用。

云計(jì)算大數(shù)據(jù)

(4)啟動(dòng)克隆出來(lái)的新的虛擬機(jī)devEnv-02.vm.itcast

通過(guò)命令: virsh start devEnv-02.vm.itcast

(5) 通過(guò)用VNC Viewer來(lái)連接該虛擬機(jī)

由于是克隆出來(lái)的,跟之前我們使用VMware克隆效果是一樣的,需要進(jìn)行相應(yīng)的修改。

a:修改對(duì)應(yīng)的主機(jī)名

進(jìn)入/etc/sysconfig/network進(jìn)行相應(yīng)的修改

b:因?yàn)榭寺「淖冃绿摂M機(jī)的MAC地址,故eth0無(wú)法啟動(dòng),新的虛擬機(jī)后網(wǎng)卡變成了 eth1

進(jìn)入/etc/udev/rules.d/70-persistent-net.rules文件刪除之前的eth0這個(gè)網(wǎng)卡記錄,保留eth1。

進(jìn)入到/etc/sysconfig/network-scripts/,執(zhí)行命令mv ifcfg-eth0 ifcfg-eth1 重命名

vi ifcfg-eth1 修改配置

云計(jì)算大數(shù)據(jù)

c: 重啟網(wǎng)卡,通過(guò)命令service network restart

8.4 libguestfs-tools安裝和使用

libguestfs-tools是虛擬機(jī)一個(gè)管理包,很有用的工具。

(1)安裝

yum -y install libguestfs-tools

(2)使用

查看虛擬機(jī)的分區(qū)情況

[root@node-1 home]# virt-filesystems -d devEnv-01.vm.itcast

云計(jì)算大數(shù)據(jù)

[root@node-1 home]# virt-list-partitions /home/kvm/devEnv-01.vm.itcast.img

云計(jì)算大數(shù)據(jù)

[root@node-1 home]# virt-df /home/kvm/devEnv-01.vm.itcast.img

云計(jì)算大數(shù)據(jù)

8.5 kvm虛擬機(jī)參數(shù)修改

(1) 修改kvm虛擬機(jī)的內(nèi)存大小

[root@node-1 home]# virsh edit devEnv-01.vm.itcast

注意不可直接修改devEnv-01.vm.itcast.xml 文件

云計(jì)算大數(shù)據(jù)

查看內(nèi)存:free

(2)修改kvm虛擬機(jī)的cpu核數(shù)大小

[root@node-1 home]# virsh edit devEnv-01.vm.itcast

云計(jì)算大數(shù)據(jù)

查看cpu核數(shù): cat /proc/cpuinfo |grep "processor"|sort -u|wc -l

注意:修改完成之后,都要重啟虛擬機(jī)

先關(guān)閉:virsh shutdown devEnv-01.vm.itcast

再啟動(dòng):virsh start devEnv-01.vm.itcast

其他參數(shù)修改相同。


本文版權(quán)歸黑馬程序員云計(jì)算大數(shù)據(jù)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!


作者:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院


首發(fā):http://cloud.itheima.com/


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!