首頁 > 軟體

RHEL7.2 下安裝KVM虛擬機器及簡單管理

2020-06-16 16:48:00

1 案例1:安裝一個KVM伺服器
1.1 問題

本例要求準備一台 RHEL7.2 伺服器,將其搭建為KVM平台,主要完成下列操作:

關閉本機的SELinux保護、防火牆服務
掛載RHEL7光碟到 /mnt/dvd,將其設定為本機YUM源(baseurl = file:///mnt/dvd)
安裝KVM相關包組,確保已啟用 libvirtd 服務

1.2 方案

RHEL7中的虛擬化服務軟體組:

虛擬化平台 —— "Virtualization Platform"
虛擬化主機 —— "Virtualization Host"
虛擬化用戶端 —— "Virtualization Client"

另外需要注意,yum命令的軟體組管理操作與RHEL6有些小變化:

yum groups list [hidden] [組名]...
yum groups info [組名]...
yum groups install [組名]...
yum groups remove [組名]...

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:設定本地yum倉庫

在光碟機中插入RHEL7.2的系統光碟(若是虛擬機器則連線相應ISO檔案),然後在系統中將光碟掛載到/mnt目錄。

[root@kvmsvr ~]# mkdir  /mnt/dvd                      //建立掛載點
[root@kvmsvr ~]# vim  /etc/fstab                      //新增開機掛載設定
.. ..
/dev/cdrom    /mnt/dvd      iso9660        ro        0  0
[root@kvmsvr ~]# mount  -a                            //根據fstab設定掛載光碟
mount: /dev/sr0 is write-protected, mounting read-only

2)確認/mnt/dvd存取點

[root@kvmsvr ~]# ls  /mnt/dvd/Packages/*.rpm          //確認軟體包位置
.. ..
/mnt/Packages/zsh-5.0.2-14.el7.x86_64.rpm
/mnt/Packages/zziplib-0.13.62-5.el7.i686.rpm
/mnt/Packages/zziplib-0.13.62-5.el7.x86_64.rpm

3)將本地目錄/mnt/dvd設定為本機的yum源

[root@kvmsvr ~]# yum-config-manager  --add-repo  file:///mnt/dvd      //新增源
.. ..
[root@kvmsvr ~]# vim  /etc/yum.repos.d/mnt_dvd.repo
[mnt_dvd]
name=added from: file:///mnt/dvd
baseurl=file:///mnt/dvd
enabled=1
gpgcheck=0                                                      //禁止GPG檢查
[root@kvmsvr ~]# yum  repolist                                  //列出可用倉庫
mnt_dvd                                | 4.1 kB    00:00   
(1/2): mnt_dvd/group_gz                  | 136 kB  00:00   
(2/2): mnt_dvd/primary_db                | 3.6 MB  00:00   
repo id          repo name                              status
mnt_dvd          added from: file:///mnt/dvd            4620
repolist: 4620

步驟二:確認RHEL7中的虛擬化軟體組

1)安裝相容組資訊

[root@kvmsvr ~]# yum  groups  mark  convert
.. ..
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Converted old style groups to objects.

2)檢視全部軟體組,過濾出與虛擬化相關的軟體組

[root@kvmsvr ~]# yum  groups  list  hidden| grep  -i  virt
  Virtualization Host
  Virtualization Client
  Virtualization Hypervisor
  Virtualization Tools
  Virtualization Platform

其中主要的KVM軟體組包括Virtualization Host、Virtualization Client、Virtualization Platform,其他兩個組會由於依賴關係自動被關聯。

步驟三:安裝KVM虛擬化

1)安裝主要KVM軟體組

[root@pc207 ~]# yum  -y  groups  install  "Virtualization Host"  "Virtualization Client"  "Virtualization Platform"
.. ..

2)確保libvirtd服務可用

[root@kvmsvr ~]# systemctl  restart  libvirtd
[root@kvmsvr ~]# systemctl  enable  libvirtd

3)確保虛擬系統管理器(virt-manager)可用

在KVM伺服器的桌面環境中,可以通過“應用程式”選單組找到“系統工具”-->“虛擬系統管理器”快捷方式(如圖-1所示)。

圖-1

單擊可以成功開啟KVM管理工具(如圖-2所示),可以看到還沒有任何虛擬機器。
快建新虛擬機器 KVM平台構建及簡單管理
圖-2
2 案例2:KVM平台構建及簡單管理
2.1 問題

本例要求在真實KVM伺服器上完成以下任務:

新建一個名為 rhel7.2 的虛擬機器,並為其安裝好作業系統(注意禁用SELinux機制、禁用防火牆)
將虛擬機器 rhel7.2 克隆為 rhel7-c1
開啟虛擬機器 rhel7-c1 ,以 root 使用者登入到系統
徹底刪除虛擬機器 rhel7-c1

2.2 方案

使用KVM提供的virt-manager圖形化管理程式來操作。
2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:新建名為rhel7.2的虛擬機器

1)在“虛擬系統管理器”中單擊左上方“建立新虛擬機器”按鈕(如圖-3所示)。

圖-3

2)彈出“新建虛擬機器”嚮導,選擇“本地安裝媒介”(如圖-4所示),單擊“前進”。

圖-4

3)接下來“定位安裝媒介”,請正確指定RHEL7系統的ISO光碟映象檔案位置(如圖-5所示),確認自動識別到作業系統型別,單擊“前進”。

圖-5

4)選擇記憶體和CPU設定,建議為虛擬機器分配記憶體不小於1024MB(如圖-6所示),單擊“前進”。

圖-6

5)為虛擬機器啟用儲存,例如分配一個40GiB的磁碟(如圖-7所示),單擊“前進”。

圖-7

6)為虛擬機器命名,設為rhel7.2(如圖-8所示),單擊“完成”。

圖-8

步驟二:為虛擬機器rhel7.2安裝作業系統

1)確認新虛擬機器從光碟引導

上述設定全部完成後,將會自動開啟新虛擬機器,並進入安裝過程(如圖-9所示)。

圖-9

2)完成後續手動安裝過程

具體過程與普通安裝相同,注意禁用防火牆、禁用SELinux機制。

3)確認安裝結果

新裝的虛擬機器rhel7.2可以正常啟動、登入。

在“虛擬系統管理器”中也能夠看到此虛擬機器(如圖-10所示)。

圖-10

步驟三:克隆虛擬機器並驗證

1)將被克隆的虛擬機器rhel7.2關機

右擊選中的虛擬機器rhel7.2,選擇“關機”-->“強制關機”(如圖-11所示),根據提示確認即可。

圖-11

2)執行克隆操作

右擊已關閉的虛擬機器rhel7.2,選擇“克隆”,在彈出對話方塊中指定名稱,確認預設設定(如圖-12所示),然後單擊右下角的“克隆”按鈕完成操作。

圖-12

3)確認克隆結果

新克隆的虛擬機器rhel7.2-c1可以正常啟動、登入,可以獨立執行。

在“虛擬系統管理器”中也能夠看到此虛擬機器(圖-13所示)。

圖-13

步驟四:刪除指定的虛擬機器

1)刪除虛擬機器rhel7.2-c1

將虛擬機器rhel7.2-c1關機,右擊選擇“刪除”,在彈出視窗中根據需要確認是否刪除虛擬機器的磁碟,單擊右下角的“刪除”按鈕即可(如圖-14所示)。

圖-14

2)確認刪除結果

在“虛擬系統管理器”介面中,虛擬機器rhel7.2-c1已經沒有了(如圖-15所示)。

圖-15
3 案例3:virsh基本管理操作
3.1 問題

本例要求學會使用virsh命令管理KVM虛擬機器,主要完成下列任務:

檢視當前KVM伺服器的記憶體/CPU
列出有哪些虛擬機器、檢視各虛擬機器的狀態
啟動/重新啟動/關機/強制關機操作
設定虛擬機器開機自動執行

3.2 方案

virsh命令提供了用來管理各虛擬機器的命令介面,支援互動模式,可以實現對虛擬機器的檢視/建立/停止/關閉等各種操作。

用法參考:

virsh  控制指令  [虛擬機器名稱]  [引數]

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:檢視KVM伺服器及虛擬機器資訊

1)檢視KVM伺服器節點

[root@kvmsvr ~]# virsh  nodeinfo
CPU 型號:        x86_64
CPU:              4
CPU 頻率:        2600 MHz
CPU socket:        1
每個 socket 的核心數: 4
每個核心的執行緒數: 1
NUMA 單元:      1
記憶體大小:      16230564 KiB

2)列出有哪些虛擬機器(包括未開啟的)及各自的狀態

[root@kvmsvr ~]# virsh  list  --all
 Id    Name                          State
----------------------------------------------------
 -    rhel7.2                        shut off

3)檢視指定虛擬機器rhel7.2的設定摘要資訊

[root@kvmsvr ~]# virsh  dominfo  rhel7.2
Id:            -
Name:          rhel7.2
UUID:          207a2b25-fd0f-436e-81ae-ad0fa8861315
OS Type:        hvm
State:          shut off
CPU(s):        1
Max memory:    1000448 KiB
Used memory:    0 KiB
Persistent:    yes
Autostart:      disable
Managed save:  no
Security model: selinux
Security DOI:  0

步驟二:虛擬機器開關機操作

1)將虛擬機器rhel7.2開啟

[root@kvmsvr ~]# virsh  start  rhel7.2                              //開機
Domain rhel7.2 started
[root@kvmsvr ~]# virsh  list                                      //檢查結果
 Id    Name                          State
----------------------------------------------------
 5    rhel7.2                        running

2)將虛擬機器rhel7.2關機

[root@kvmsvr ~]# virsh  shutdown  rhel7.2                          //關機
Domain rhel7.2 is being shutdown
.. .. //稍等片刻
[root@kvmsvr ~]# virsh  list  --all                                //檢查結果
 Id    Name                          State
----------------------------------------------------
 -    rhel7.2                        shut off

3)將虛擬機器rhel7.2強制關機(shutdown無效時適用)

[root@kvmsvr ~]# virsh  destroy  rhel7.2                            //強制關機
Domain rhel7.2 destroyed
[root@kvmsvr ~]# virsh  list  --all                                //檢查結果
 Id    Name                          State
----------------------------------------------------
 -    rhel7.2                        shut off

步驟三:虛擬機器自啟設定

1)將虛擬機器rel7.2設為自動啟動

[root@kvmsvr ~]# virsh  autostart  rhel7.2                        //設定自啟動
Domain rhel7.2 marked as autostarted
[root@kvmsvr ~]# virsh  dominfo  rhel7.2                          //確認結果
Id:            -
Name:          rhel7.2
.. ..
Autostart:      enable
.. ..

2)將虛擬機器rel7.2取消自動啟動

[root@kvmsvr ~]# virsh  autostart  --disable  rhel7.2              //取消自啟動
Domain rhel7.2 unmarked as autostarted
[root@kvmsvr ~]# virsh  dominfo  rhel7.2                          //確認結果
Id:            -
Name:          rhel7.2
.. ..
Autostart:      disable
.. ..

4 案例4:xml組態檔的應用
4.1 問題

本例要求在KVM伺服器上通過使用xml檔案完成下列任務:

將虛擬機器 rhel7.2 改名為 rhel-207
將虛擬機器 rhel-207 複製為 rhel-7
上述虛擬機器的CPU/記憶體/網路型別保持不變
但這2個虛擬機器有可能會同時執行,不應出現衝突

4.2 方案

KVM虛擬機器的xml組態檔也就是通常所說的虛擬機器的描述檔案,主要用來定義一個虛擬機器的名稱、UUID、CPU、記憶體、虛擬磁碟、網絡卡等各種引數設定。

KVM虛擬機器的xml組態檔預設位於: /etc/libvirt/qemu/虛擬機器名.xml 。

修改虛擬機器設定的基本思路:

編輯虛擬機器設定:virsh edit 虛擬機器名
根據需要修改,儲存設定結果

4.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:將虛擬機器rhel7.2改名為rhel-207

1)生成新的UUID字串,並複製備用

[root@kvmsvr ~]# uuidgen
76d5dc2c-5eef-4e30-8b6c-e58851814f84

2)編輯虛擬機器rhel7.2的設定

調整name、uuid值,儲存修改:

[root@kvmsvr ~]# virsh  edit  rhel7.2
<domain type='kvm'>
  <name>rhel-207</name>                                      //新名稱
  <uuid>76d5dc2c-5eef-4e30-8b6c-e58851814f84</uuid>        //新UUID值
.. ..

3)確認已自動匯入的新設定

[root@kvmsvr ~]# virsh  list  --all             
 Id    Name                          State
----------------------------------------------------
 -    rhel-207                      shut off                  //新名稱的虛擬機器
 -    rhel7.2                        shut off

4)刪除舊名稱的虛擬機器設定

[root@kvmsvr ~]# virsh  undefine  rhel7.2                      //取消定義虛擬機器
Domain rhel7.2 has been undefined
[root@kvmsvr ~]# virsh  list  --all                        //確認結果
 Id    Name                          State
----------------------------------------------------
 -    rhel-207                      shut off

步驟二:將虛擬機器rhel-207複製為rhel-7

1)生成新UUID,並複製備用

[root@kvmsvr ~]# uuidgen
90908905-bde4-4c4a-90b0-8a8f5bba1e25

2)修改匯出後的設定(調整名稱、UUID、磁碟路徑、網絡卡MAC)

修改匯出的xml組態檔,調整name、uuid、disk路徑、mac地址值:

[root@kvmsvr ~]# virsh  edit  rhel-207
<domain type='kvm'>
  <name>rhel-7</name>                                            //新名稱
  <uuid>90908905-bde4-4c4a-90b0-8a8f5bba1e25</uuid>            //新UUID值
.. ..
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/rhel-7.qcow2'/>        //新磁碟路徑
      .. ..
    </disk>
.. ..
    <interface type='network'>
      <mac address='52:54:00:91:50:07'/>                        //新MAC地址
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03
' function='0x0'/>
    </interface>
.. ..

3)確認已自動匯入的新設定

[root@kvmsvr ~]# virsh  list  --all                        //確認結果
 Id    Name                          State
----------------------------------------------------
 -    rhel-207                      shut off
 -    rhel-7                        shut off                  //新虛擬機器

4)複製虛擬機器磁碟檔案

為新虛擬機器提供一份獨立的磁碟檔案:

[root@kvmsvr ~]# cd  /var/lib/libvirt/images/
[root@kvmsvr images]# cp  rhel7.2.qcow2  rhel-7.qcow2
[root@kvmsvr images]# ls                                    //確認結果
rhel-7.qcow2  rhel7.2.qcow2

5 案例5:為虛擬機器製作快照備份
5.1 問題

本例要求使用 qemu-img 及必要的工具,完成下列任務:

將虛擬機器 rhel-7 關機
為虛擬機器 rhel-7 的磁碟製作名為 snap1 的快照
開啟並登入虛擬機器 rhel-7,在桌面上新建檔案 1.txt
再次關閉虛擬機器 rhel-7,還原到快照 snap1
重新開啟並登入虛擬機器 rhel-7,檢查 1.txt 檔案

5.2 方案

KVM虛擬機器的快照:通過在虛擬機器磁碟映象內儲存不同時間點的狀態資料實現備份,在必要時可將虛擬機器恢復到指定的快照狀態。

qemu-img快照管理基本操作:

建立快照:qemu-img snapshot -c 快照名 qcow2磁碟
列出快照:qemu-img snapshot -l qcow2磁碟
恢復快照:qemu-img snapshot -a 快照名 qcow2磁碟
刪除快照:qemu-img snapshot -d 快照名 qcow2磁碟

5.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:為虛擬機器製作快照

1)確保虛擬機器rhel-7已經關機

[root@kvmsvr ~]# virsh  list  --all  |  grep  rhel-7
 -    rhel-7                        shut off

2)為虛擬機器rhel-7的磁碟製作快照

[root@kvmsvr ~]# cd  /var/lib/libvirt/images/
[root@kvmsvr images]# qemu-img  snapshot  -c snap1  rhel-7.qcow2    //製作快照
[root@kvmsvr images]# qemu-img  snapshot  -l  rhel-7.qcow2            //列出快照
Snapshot list:
ID        TAG                VM SIZE                DATE      VM CLOCK
1        snap1                    0 2017-01-05 15:44:25  00:00:00.000

步驟二:正常使用/更新虛擬機器

1)啟動虛擬機器rhel-7

[root@kvmsvr ~]# virsh start rhel-7
Domain rhel-7 started

2)正常登入虛擬機器rhel-7,在桌面建立檔案1.txt

過程略。

步驟三:還原快照並檢查恢復結果

1)關閉虛擬機器rhel-7

[root@kvmsvr ~]# virsh  destroy  rhel-7
Domain rhel-7 destroyed

2)將虛擬機器rhel-7的磁碟還原到快照snap1

[root@kvmsvr images]# qemu-img  snapshot  -a  snap1  rhel-7.qcow2

3)重新開啟虛擬機器rhel-7

[root@kvmsvr ~]# virsh start rhel-7
Domain rhel-7 started

4)正常登入虛擬機器rhel-7,檢查桌面的檔案1.txt

因為此檔案是在建快照之後才建立的,所以還原快照以後就沒有了。
6 案例6:快建新虛擬機器
6.1 問題

本例要求利用qcow2磁碟特性快建2台新的KVM虛擬機器,設定要求如下:

svr7:svr7.tedu.cn,192.168.4.7/24
pc207: pc207.tedu.cn,192.168.4.207/24
為上述虛擬機器配好網路,確認yum源可用
CentOS真機可ssh遠端存取這兩台虛擬機器

6.2 方案

快建新虛擬機器的基本思路:

提前準備好一台模板虛擬機器(映象磁碟+xml組態檔)
基於qcow2磁碟複用技術快建新虛擬機器的磁碟
通過調整模板機的設定快建新虛擬機器的xml組態檔
匯入新虛擬機器

Copy On Write,寫時複製技術原理:

直接對映原始盤的資料內容
當原始盤有修改時,在修改之前將舊資料存入前端盤
對前端盤的修改不會回寫到原始盤

6.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:準備模板虛擬機器

找一台已經裝好RHEL7系統、設定好本地yum源、關閉SELinux的虛擬機器,提取模板虛擬機器磁碟、xml組態檔備用。

1)準備磁碟目錄、模板虛擬機器磁碟檔案

[root@kvmsvr ~]# qemu-img info  /data/images/rhel7_muban.qcow2
image: /data/images/rhel7_muban.qcow2
file format: qcow2
virtual size: 300G (322122547200 bytes)                  //虛擬機器磁碟容量
disk size: 3.2G                                          //在KVM伺服器占用容量

2)準備模板虛擬機器組態檔

[root@kvmsvr ~]# cat  /data/images/rhel7_muban.xml
<domain type='kvm'>
  <name>rhel7.2</name>
  <uuid>a1992150-5cc7-e19d-20df-cd5cea7d8aa2</uuid>
  <memory unit='KiB'>2097152</memory>
.. ..

步驟二:快建虛擬機器svr7

1)為虛擬機器svr7快速建立前端盤(複用模板機的磁碟資料)

[root@kvmsvr ~]# qemu-img  create  -f  qcow2  -b  /data/images/rhel7_muban.qcow2  /data/images/svr7.qcow2
Formatting '/data/images/svr7.qcow2', fmt=qcow2 size=322122547200 backing_file='/data/images/rhel7_muban.qcow2' encryption=off cluster_size=65536

2)為虛擬機器svr7準備xml設定

[root@kvmsvr ~]# cp  /data/images/rhel7_muban.xml  /tmp/svr7.xml    //拷貝設定
[root@kvmsvr ~]# vim  /tmp/svr7.xml                            //修改設定
<domain type='kvm'>
  <name>svr7</name>                                            //新名稱
  <uuid>b20a1a1c-a2de-4b2f-bb03-91a3e36257c7</uuid>            //新UUID值
.. ..
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/t
arget/domain-rhel-7/org.qemu.guest_agent.0'/>                      //改通訊端路徑
      .. ..
    </channel>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/svr7.qcow2'/>        //新磁碟路徑
      .. ..
    </disk>
.. ..
    <interface type='network'>
      <mac address='52:54:00:11:00:07'/>                        //新MAC地址
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03
' function='0x0'/>
    </interface>
.. ..

3)定義新虛擬機器svr7

[root@room9pc00 ~]# virsh  define  /tmp/svr7.xml
定義域 svr7(從 /tmp/svr7.xml)

4)為虛擬機器svr7設定主機名、IP地址

開啟虛擬機器svr7,使用root使用者登入系統。

[root@svr7 ~]# vim  /etc/hostname                      //設定主機名
svr7.tedu.cn
[root@svr7 ~]# nmcli  connection  modify  eth0  ipv4.method  manual  ipv4.addresses  192.168.4.7/24  connection.autoconnect  yes        //設定IP地址
[root@svr7 ~]# nmcli  connection  up  eth0              //啟用連線
成功啟用的連線(D-Bus 啟用路徑:/org/freedesktop/NetworkManager/ActiveConnection/8)
[root@svr7 ~]# ifconfig  eth0                            //確認設定結果
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.7  netmask 255.255.255.0  broadcast 192.168.4.255
        inet6 fe80::20c:29ff:fe5e:f686  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:11:00:07  txqueuelen 1000  (Ethernet)
        RX packets 112143  bytes 9388455 (8.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 507844  bytes 771354289 (735.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

步驟三:快建虛擬機器pc207

操作與步驟二類似,此處略。

步驟四:快建虛擬機器的執行測試

1)啟動兩台虛擬機器svr7、pc207,均可正常執行

2)從svr7可ping通pc207

[root@svr7 ~]# ping  192.168.4.207
PING 192.168.4.207 (192.168.4.207) 56(84) bytes of data.
64 bytes from 192.168.4.207: icmp_seq=1 ttl=64 time=0.392 ms
64 bytes from 192.168.4.207: icmp_seq=2 ttl=64 time=0.369 ms
.. ..

3)從CentOS真機可ssh遠端存取這兩台虛擬機器

[root@room9pc00 ~]# ssh  -X  root@192.168.4.7
root@192.168.4.7's password:                          //驗證svr7的root密碼
Last login: Sun Mar 26 11:30:35 2017 from 192.168.4.254
[root@svr7 ~]# exit
[root@room9pc00 ~]# ssh  -X  root@192.168.4.207
root@192.168.4.207's password:                          //驗證pc207的root密碼
Last login: Sun Mar 26 11:32:35 2017 from 192.168.4.254
[root@pc207 ~]# exit
[root@room9pc00 ~]#

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-08/153678.htm


IT145.com E-mail:sddin#qq.com