Cent os 7之KVM虛擬化基礎管理

博文大綱:web

  • 1、安裝kvm虛擬化;
  • 2、手動更改配置文件的方式,克隆web01,生成新的虛擬機web02;
  • 3、將web01加入開機自啓,與web02對比有何異同;
  • 4、遠程鏈接虛擬機的兩種方法;
  • 5、使用默認的NAT網絡類型使web02能夠ping通外網。

1、安裝kvm虛擬化

[root@localhost media]# yum -y groupinstall "GNOME Desktop"          #安裝GNOME桌面環境
[root@localhost media]# yum -y install qemu-kvm               #KVM模塊
[root@localhost media]# yum -y install qemu-kvm-tools             #KVM調試工具,可不安裝
[root@localhost media]# yum -y install virt-install                     #構建虛擬機的命令行工具
[root@localhost media]# yum -y install qemu-img          #qemu組件,建立磁盤、啓動虛擬機等
[root@localhost media]# yum -y install bridge-utils               #網絡支持工具
[root@localhost media]# yum -y install libvirt                #虛擬機管理工具
[root@localhost media]# yum -y install virt-manager             #圖形界面管理虛擬機
[root@localhost media]# yum -y install libguestfs-tools             #用來管理虛擬機磁盤格式
[root@localhost ~]# ls -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
#將系統默認運行的target更改成graphical.target,若不執行該命令,重啓時可能會報錯。

二、安裝完畢後,需重啓系統,執行下面命令對系統進行檢查:vim

[root@localhost ~]# cat /proc/cpuinfo | grep vmx                
#查看Intel的CPU是否支持虛擬化,如果AMD的CPU,需 「cat /proc/cpuinfo | grep  smv」
[root@localhost ~]# lsmod | grep kvm                   #檢查KVM模塊是否安裝
kvm_intel             170181  0 
kvm                   554609  1 kvm_intel
irqbypass              13503  1 kvm
[root@localhost ~]# systemctl start libvirtd           #啓動libvirtd服務
[root@localhost ~]# systemctl enable libvirtd       #設置該服務爲開機自啓

三、在命令行模式中建立虛擬機(圖形化建立虛擬機可參考博文:圖形化桌面新建虛擬機centos

[root@kvm kk]# mkdir -p /kvm/{iso,disk} #建立相應的目錄,一邊存放鏡像及虛擬機磁盤
#建立的/kvm目錄最好掛載在LVS捲上,以即可以動態擴展卷空間
[root@kvm iso]# cp /media/CentOS-7.iso /kvm/iso/    #準備要安裝的虛擬機操做系統文件
[root@kvm ~]# qemu-img create -f raw  /kvm/disk/web01.raw 10G  #建立虛擬機磁盤
[root@kvm ~]# virt-install --os-type=linxu --os-variant centos7.0 --name web01 --ram 1024 --vcpus 1 --disk /kvm/disk/web01.raw,format=raw,size=10 --location /kvm/iso/CentOS-7.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole        #建立虛擬機web01
開始安裝......
搜索文件 .treeinfo......                         |  354 B  00:00     
搜索文件 vmlinuz......                           | 5.9 MB  00:00     
搜索文件 initrd.img......                        |  50 MB  00:00     
域安裝仍在進行。您能夠從新鏈接
到控制檯以便完成安裝進程。
#根據上面的提示打開圖形化控制檯
[root@kvm ~]# virt-manager      #打開控制檯

輸入打開控制檯的命令後,便會彈出如下窗口:
Cent os 7之KVM虛擬化基礎管理安全

單擊「打開」後,會出現如下界面,和咱們本身安裝系統同樣了(自行操做便可):網絡

Cent os 7之KVM虛擬化基礎管理

至此,命令行建立虛擬機就完成了,接下來使用手動更改配置文件的方式,克隆web01,生成新的虛擬機web02(在我博文前面的那個博文連接中有專用於克隆的命令工具的使用方法,這裏只是爲了來了解虛擬機的配置文件)dom

2、手動更改配置文件的方式,克隆web01,生成新的虛擬機web02

[root@kvm iso]# virsh list --all     #確保要克隆的虛擬機在關閉狀態下
 Id    名稱                         狀態
----------------------------------------------------
 -     test01                         關閉
 -     test02                         關閉
 -     web01                          關閉      #就是要克隆這臺
[root@kvm ~]# cd /kvm/disk/      #切換至虛擬機的虛擬磁盤存放目錄
[root@kvm disk]# cp web01.raw web02.raw     #將要克隆的虛擬機磁盤複製一份,並更更名稱
[root@kvm disk]# cd /etc/libvirt/qemu/     #切換至KVM虛擬機配置文件的目錄
[root@kvm qemu]# ls     #查看當前目錄下的文件
networks  test01.xml  test02.xml  web01.xml
[root@kvm qemu]# virsh dumpxml web01 > ./web02.xml  
#將web01的配置文件使用dumpxml工具進行備份爲當前目錄下的web02.xml
[root@kvm qemu]# ls         #確認備份成功
networks  test01.xml  test02.xml  web01.xml  web02.xml
[root@kvm qemu]# vim web02.xml      #編輯備份出的文件

<domain type='kvm'>
  <name>web02</name>     #將這裏的名字改成web02
  <uuid>2d6f2a7c-9937-4afb-b8d6-8ef01ca61434</uuid>    #刪除UUID這行配置,防止衝突
  <memory unit='KiB'>1048576</memory>
            .............#省略部份內容
  <devices>          #定位到該行標籤
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/kvm/disk/web02.raw'/>        #將這裏的路徑更改成剛纔使用cp命令複製的web02.raw文件
#更改完成後,保存退出
[root@kvm qemu]# virsh define web02.xml     #定義此配置文
#(能夠理解爲載入該虛擬機,此時,須要注意當前的工做路徑)
定義域 web02(從 web02.xml)

[root@kvm qemu]# virsh list --all     #查看是否克隆成功
 Id    名稱                         狀態
----------------------------------------------------
 -     test01                         關閉
 -     test02                         關閉
 -     web01                          關閉
 -     web02                          關閉
#OK!查看到了,能夠自行運行web02,測試是否運行正常。
[root@kvm qemu]# virsh start web02     #啓動web02
域 web02 已開始

[root@kvm qemu]# virsh list --all     #OK,正在運行!
 Id    名稱                         狀態
----------------------------------------------------
 3     web02                          running
          .............#省略部份內容

3、將web01加入開機自啓,與web02對比有何異同

[root@kvm qemu]# virsh dominfo web01    #此命令能夠查看指定虛擬機的信息
Id:             -
名稱:       web01
UUID:           2d6f2a7c-9937-4afb-b8d6-8ef01ca61434
OS 類型:    hvm
狀態:       關閉
CPU:          1
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久:       是
自動啓動: 禁用      #默認此處爲禁用狀態
管理的保存: 否
安全性模式: none
安全性 DOI: 0

[root@kvm qemu]# virsh autostart web01      #設置web01爲開機自啓
域 web01標記爲自動開始
[root@kvm qemu]# virsh dominfo web01    #查看是否設置爲開機自啓
Id:             -
名稱:       web01
UUID:           2d6f2a7c-9937-4afb-b8d6-8ef01ca61434
OS 類型:    hvm
狀態:       關閉
CPU:          1
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久:       是
自動啓動: 啓用             #OK!
管理的保存: 否
安全性模式: none
安全性 DOI: 0
[root@kvm qemu]# virsh dominfo web02     #查看web02是否爲開機自啓
Id:             3
名稱:       web02
UUID:           f554ad15-1b67-4f01-b203-a9d0c3abe192
OS 類型:    hvm
狀態:       running
CPU:          1
CPU 時間:   21.4s
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久:       是
自動啓動: 禁用           #是禁用狀態
管理的保存: 否
安全性模式: none
安全性 DOI: 0
#此時能夠重啓宿主機,而後查看虛擬機的狀態(須要確保libvirtd服務的狀態爲開機自啓,不然會出現問題)

[root@kvm qemu]# init 6          #重啓宿主機
[root@kvm ~]# virsh list           #,待重啓完成後,查看正在運行的虛擬機
 Id    名稱                         狀態
----------------------------------------------------
 1     web01                          running
#此時,只有web01處於運行狀態,由於它設置了開機自啓,在libvirtd服務開機自啓的前提下,
#它會隨着宿主機的啓動而啓動

4、遠程鏈接虛擬機的兩種方法

(1)使用VNC軟件

VNC的安裝比較簡單,這裏就很少寫了。ide

[root@kvm ~]# virsh vncdisplay web02      <!--查看web02的監聽端口-->
:0
    <!--
查看出的結果是「:0」,解釋以下:
「:0」表示監聽5900端口;
「:1」表示監聽5901端口;
以此類推......
                        -->

打開vnc進行鏈接(注意防火牆相關配置):工具

Cent os 7之KVM虛擬化基礎管理

Cent os 7之KVM虛擬化基礎管理

爲了方便接下來使用console進行鏈接,此時須要調整虛擬機(web02)的內核參數,以下:性能

[root@localhost ~]# grubby --update-kernel=ALL --args=」console=ttyS0」    #在虛擬機中執行此命令
[root@localhost ~]# init 6     #重啓此虛擬機,以便更改生效

(2)使用console登錄web02

在KVM宿主機上執行如下命令便可登錄成功(前提是在使用vnc登錄時已經更改了web02的內核參數)測試

[root@kvm ~]# virsh console web02     #執行該命令
鏈接到域 web02
換碼符爲 ^]
#敲一下回車鍵

CentOS Linux 7 (Core)
Kernel 3.10.0-862.el7.x86_64 on an x86_64

web02 login: root     #輸入web02的用戶名及密碼登錄便可。
密碼:
Last login: Wed Oct  9 21:20:48 on tty1
[root@web02 ~]#

5、使用默認的NAT網絡類型使web02能夠ping通外網

這裏就進行ping百度的測試,務必保證KVM宿主機能夠ping通百度。
(1)檢查相關配置

[root@kvm ~]# virsh net-list --all     <!--檢查當前的網絡設置-->
 名稱               狀態     自動開始  持久
----------------------------------------------------------
 default              活動     是           是
[root@kvm ~]# ifconfig         <!--檢查當前的網絡接口-->
          .............<!--省略部份內容-->
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
                <!--
virbr0是由宿主機虛擬機支持模塊安裝時產生的虛擬網絡接口,
也是一個switch和bridge,負責把內容分發到各虛擬機。
virbr0是一個橋接器,接收全部到網絡192.168.122.*的內容。
從下面命令能夠驗證:     -->
[root@kvm ~]# brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.525400a8bf19   yes     virbr0-nic
                                                                     vnet0
[root@kvm ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

(2)接下來開始配置nat網絡

[root@kvm ~]# virsh net-define /usr/share/libvirt/networks/default.xml  
#若是沒有上面指定的文件,可使用該命令定義一個虛擬網絡
也能夠修改該文件,建立本身的虛擬網絡
[root@kvm ~]# virsh net-autostart default     #網絡default標記爲自動啓動
[root@kvm ~]# virsh net-start default       #啓動網絡,若已啓動,此處會報錯
[root@kvm ~]# vim /etc/sysctl.conf    #修改此配置文件
               ............#省略部份內容
net.ipv4.ip_forward=1       #在文件末尾加入該行,以便容許IP轉發
[root@kvm ~]# vim /etc/libvirt/qemu/web02.xml 
                ............#省略部份內容
   <interface type='network'>
      <mac address='52:54:00:24:9d:24'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
#定位「interface」關鍵字,肯定有上述內容
                              ............#省略部份內容

(3)鏈接到虛擬機web02,更改網卡的配置:

[root@web02~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0   #編輯網卡配置文件

Cent os 7之KVM虛擬化基礎管理

更改網卡後,保存退出。

[root@web02~]# systemctl restart network         #重啓web02虛擬機的網絡服務

進行ping測試:

Cent os 7之KVM虛擬化基礎管理

若要使用靜態IP,配置文件可更改以下(更改完成後自行重啓網卡,能夠增長DNS配置):
Cent os 7之KVM虛擬化基礎管理

6、KVM虛擬機管理命令彙總

[root@kvm ~]# virsh start 虛擬機名稱   #開啓虛擬機
[root@kvm ~]# virsh list    #僅查看運行的虛擬機列表
[root@kvm ~]# virsh list --all       #查看全部虛擬機列表
[root@kvm ~]# virsh shutdown 虛擬機名稱    #正常的關閉虛擬機
[root@kvm ~]# virsh destroy    虛擬機名稱   #強制關閉虛擬機(相似於拔電源)
[root@kvm ~]# virsh dumpxml 虛擬機名稱 > /root/test01-dum.xml             #虛擬機備份
[root@kvm ~]# virsh undefine 虛擬機名稱  #刪除虛擬機(注意:取消定義以後,磁盤文件須要手動刪除)
[root@kvm ~]# virsh define 備份的.xml虛擬機文件    #還原虛擬機
[root@kvm ~]# virsh edit 虛擬機名稱  #編輯虛擬機的配置文件
[root@kvm ~]# virsh domrename 原名字 要更改的名字 
#  如:([root@kvm ~]# virsh domrename test01 test03)    更改虛擬機名稱
[root@kvm qemu]# virsh dominfo test02           #查看虛擬機的詳細信息
[root@kvm ~]# virsh autostart test02              #設置虛擬機爲開機自啓
[root@kvm ~]# virsh autostart --disable test02    #取消開機自啓
[root@kvm ~]# virsh vncdisplay test02           #查看對應的VNC鏈接端口號;默認第一個端口號爲:5900(用「:0」表示)
[root@kvm ~]# virsh suspend test02         #掛起虛擬機
[root@kvm ~]# virsh resume test02               #取消掛起虛擬機
[root@kvm ~]# virsh console test02           #console登錄虛擬機
[root@kvm ~]# qemu-img info /kvm/disk/test01.raw      #查看虛擬機的磁盤信息
[root@kvm disk]# qemu-img create test.raw 2G        #建立虛擬機使用的磁盤
[root@kvm disk]# qemu-img create -f qcow2 21.qcow2 2G      #建立qcow2格式的虛擬機磁盤
[root@kvm disk]# qemu-img convert -f raw -O qcow2 test.raw test.qcow2   #將test.raw磁盤格式raw轉換爲qcow2
[root@kvm qemu]# virsh snapshot-create test02        #建立虛擬機快照
[root@kvm disk]# virsh snapshot-list test02             #查看虛擬機快照
[root@kvm disk]# virsh snapshot-revert test02 1570692304     #恢復快照
[root@kvm disk]# virt-clone --auto-clone -o test01  -n 指定要克隆的名字(可選)        #自動克隆虛擬機
[root@kvm disk]# virt-clone -o test01 -n test04 -f /kvm/disk/test04.qcow2    #手動克隆
#上述都是屬於完整克隆。
[root@kvm disk]# qemu-img create -f qcow2 -b test01.qcow2 lktest01.qcow2
# -f:指定要克隆爲的磁盤格式;
# -b:指定要轉換的源文件及目標文件
#上述命令是在克隆虛擬機的磁盤文件

RAW:裸格式。佔用空間較大,性能比較好,但不支持快照功能。
qcow:copy on write(寫時複製機制)。
qcow2:佔用空間較小,性能相比較RAW稍差,,但它支持快照功能。

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索