KVM [ 4 ] --- KVM虛擬機器管理:儲存池,虛擬機器快照,網路網橋

Nekoosu發表於2020-12-12


KVM虛擬機器管理

一、虛擬機器的儲存池

1 預設位置

kvm預設儲存池的位置

/var/lib/libvirt/images/ 

2 定義儲存池

使用 virsh pool-define-as 命令建立永續性儲存池。

[root@localhost centos7]# mkdir -p /vm-pool/centos7/vm1

[root@localhost centos7]# virsh pool-define-as --name centos7-poo1 --type dir --target "/vm-pool/centos7/vm1"

使用 virsh pool-list --all 命令列出所有現有的儲存池。

[root@localhost centos7]# virsh pool-list

 名稱               狀態     自動開始
-------------------------------------------

 centos7-poo1         非活動     否       
 iso                  活動     是       
 virtual-img          活動     是 

啟動儲存池

[root@localhost ~]# virsh pool-autostart centos7-poo1
池 centos7-poo1 已啟動
[root@localhost centos7]# virsh pool-list --all

 名稱               狀態     自動開始
-------------------------------------------

 centos7-pool         活動     否       
 iso                  活動     是       
 virtual-img          活動     是       

開啟自動啟動(可選)

預設情況下,virsh 使用自定義的儲存池未設定為每次 libvirtd 啟動時自動啟動。
可以使用 virsh pool-autostart 命令將儲存池配置為自動啟動。

[root@localhost ~]# virsh pool-autostart centos7-poo1
池 centos7-pool-1 標記為自動啟動
[root@localhost centos7]# virsh pool-list --all

 名稱               狀態     自動開始
-------------------------------------------

 centos7-pool         活動     是       
 iso                  活動     是       
 virtual-img          活動     是   

使用 virsh pool-create-as 命令建立臨時性儲存池。

臨時性的不可以開啟自動啟動

[root@localhost centos7]# mkdir -p /vm-pool/centos7/vm2

[root@localhost centos7]# virsh pool-create-as --name centos7-poo2 --type dir --target "/vm-pool-1/centos7/vm2"
建立池 centos7-pool-1
[root@localhost centos7]# virsh pool-list

 名稱               狀態     自動開始
-------------------------------------------

 centos7-poo1-1        非活動    否       
 iso                  活動     是       
 virtual-img          活動     是 

3 刪除儲存池

[root@localhost ~]# virsh pool-destroy centos7-poo1
銷燬池 centos7-poo1

4 更多的儲存池操作

[root@localhost ~]# virsh --help | grep 池
    find-storage-pool-sources-as   找到潛在儲存池源
    find-storage-pool-sources      發現潛在儲存池源
    pool-autostart                 自動啟動某個池
    pool-build                     建立池
    pool-create-as                 從一組變數中建立一個池
    pool-create                    從一個 XML 檔案中建立一個池
    pool-define-as                 在一組變數中定義池
    pool-delete                    刪除池
    pool-destroy                   銷燬(刪除)池
    pool-dumpxml                   XML 中的池資訊
    pool-edit                      為儲存池編輯 XML 配置
    pool-info                      儲存池資訊
    pool-list                      列出池
    pool-name                      將池 UUID 轉換為池名稱
    pool-refresh                   重新整理池
    pool-start                     啟動一個(以前定義的)非活躍的池
    pool-undefine                  取消定義一個不活躍的池
    pool-uuid                      把一個池名稱轉換為池 UUID
    vol-pool                       為給定金鑰或者路徑返回儲存池

二、虛擬機器快照

1 查詢

[root@localhost ~]# qemu-img info /home/kvm/virtual-img/vm1.qcow2
image: /home/kvm/virtual-img/vm1.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.7G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

2 給指定虛擬機器建立快照

[root@localhost ~]# virsh snapshot-create-as vm1 --name vm1.snap1
已生成域快照 vm1.snap1

3 檢視快照

[root@localhost ~]# virsh snapshot-list  vm1

 名稱               生成時間              狀態
------------------------------------------------------------

 virsh                2020-12-10 22:10:24 -0500 running
 vm1.snap1            2020-12-10 22:21:05 -0500 running

4 恢復快照

[root@localhost ~]# virsh snapshot-revert vm1 --snapshotname vm1.snap1

5 刪除快照

[root@localhost ~]# virsh snapshot-delete vm1 --snapshotname virsh
已刪除域快照 virsh

三、虛擬機器網路

1 查詢虛擬網橋

[root@localhost network-scripts]# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400316d51       yes             virbr0-nic
                                                        vnet0

libvirt 會依賴 ip_forward 引數, 並新增響應的 iptables(防火牆)規則,允許去往和來自虛擬機器的資料。有些程式可能會關閉 ip_forward 引數,因此最好的選擇是將以下內容新增到 /etc/sysctl.conf。
net.ipv4.ip_forward = 1

2 檢視網路介面資訊

[root@localhost network-scripts]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:53:ba:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.116.150/24 brd 192.168.116.255 scope global noprefixroute dynamic ens33
       valid_lft 1238sec preferred_lft 1238sec
    inet6 fe80::928b:58c2:fb55:e071/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

3 設定橋接網路

配置檔案方式配置橋接:在宿主機上

1.定義虛擬網路卡配置檔案

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-br0   \#建立該橋接網路卡,預設沒有此檔案需要新建
[root@localhost network-scripts]# cat ifcfg-br0
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.116.150   #要和宿主機在一個網路,這裡我用的是宿主機的ip
GATEWAY=192.168.116.2    #宿主的閘道器,nat的是.2,橋接是.1
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

2.然後看清楚宿主機正在使用的網路卡,修改其配置檔案(將物理機網路卡橋到橋接網路卡)

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33.back
[root@localhost network-scripts]# vim ifcfg-ens33
NAME=ens33   #定義網路卡裝置名稱
DEVICE=ens33   #宿主機正在使用的網路卡裝置
ONBOOT=yes
BRIDGE=br0     #和ifcfg-br0檔案裡面的裝置對應,新新增

3.重啟 libvirtd 服務

[root@localhost network-scripts]# systemctl restart libvirtd 

4.重啟 network 服務

[root@localhost network-scripts]# systemctl restart network

4 刪除網橋模式

刪除橋接網路卡步驟:
1.刪除br0的配置檔案
2.修改正常網路卡的配置檔案
3.重啟系統

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# mv ifcfg-br0 ifcfg-br0.bak
[root@localhost network-scripts]# mv ifcfg-ens33.back ifcfg-ens33
[root@localhost network-scripts]# systemctl restart libvirtd
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]#  ping www.baidu.com
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=52 time=13.3 ms

相關文章