[ kvm ] 學習筆記 6:virsh 命令及功能詳解


1. 虛擬機管理操作

attach-device                從XML文件附加設備
attach-disk                  附加磁盤設備
attach-interface             連接網絡接口
autostart                    自動啟動一個域
blkdeviotune                 設置或查詢塊設備I/O調整參數。
blkiotune                    獲取或設置blkio參數
blockcommit                  開始塊提交操作。
blockcopy                    開始一個塊復制操作。
blockjob                     管理活動的塊操作
blockpull                    從其背景圖像填充磁盤。
blockresize                  調整域的塊設備。
change-media                 更換CD或軟驅的媒體
console                      連接到訪客控制台
cpu-baseline                 計算基准CPU
cpu-compare                  比較主機CPU和由XML文件描述的CPU
cpu-stats                    顯示域的CPU統計信息
create                       從XML文件創建一個域
define                       從XML文件中定義(但不要啟動)域
desc                         顯示或設置域的描述或標題
destroy                      摧毀(停止)一個域名
detach-device                從XML文件中分離設備
detach-disk                  分離磁盤設備
detach-interface             分離網絡接口
domdisplay                   域顯示連接URI
domfsfreeze                  凍結域的掛載文件系統。
domfsthaw                    解凍域的安裝文件系統。
domfsinfo                    獲取域安裝的文件系統的信息。
domfstrim                    在域的掛載文件系統上調用fstrim。
domhostname                  打印域的主機名
domid                        將域名或UUID轉換為域ID
domif-setlink                設置虛擬接口的鏈路狀態
domiftune                    獲取/設置虛擬接口的參數
domjobabort                  中止活動的域名工作
domjobinfo                   域名工作信息
domname                      將域ID或UUID轉換為域名
domrename                    重命名一個域
dompmsuspend                 使用電源管理功能優雅地暫停域
dompmwakeup                  從pmsuspended狀態喚醒一個域
domuuid                      將域名或ID轉換為域UUID
domxml-from-native           將本地配置轉換為域XML
domxml-to-native             將域XML轉換為本地配置
dump                         將域的核心轉儲到文件進行分析
dumpxml                      XML中的域信息
edit                         編輯域的XML配置
event                        域名事件
inject-nmi                   向客人注入NMI
iothreadinfo                 查看域名IOThreads
iothreadpin                  控制域IOThread親和力
iothreadadd                  將IOThread添加到來賓域
iothreaddel                  從來賓域中刪除一個IOThread
send-key                     將密鑰發送給客人
send-process-signal          發送信號給進程
lxc-enter-namespace          LXC訪客輸入名稱空間
managedsave                  管理域名狀態保存
managedsave-remove           刪除管理的域名保存
memtune                      獲取或設置內存參數
perf                         獲取或設置perf事件
metadata                     顯示或設置域的自定義XML元數據
migrate                      將域遷移到其他主機
migrate-setmaxdowntime       設置最大可容忍的停機時間
migrate-compcache            獲取/設置壓縮緩存大小
migrate-setspeed             設置最大遷移帶寬
migrate-getspeed             獲得最大的遷移帶寬
migrate-postcopy             切換運行從預復制到后復制的遷移
numatune                     獲取或設置numa參數
qemu-attach                  QEMU附件
qemu-monitor-command         QEMU監視器命令
qemu-monitor-event           QEMU監控事件
qemu-agent-command           QEMU訪客代理命令
reboot                       重新啟動一個域
reset                        重置一個域
restore                      從文件中保存的狀態恢復域
resume                       恢復一個域名
save                         將域狀態保存到文件
save-image-define            重新定義一個域的保存狀態文件的XML
save-image-dumpxml           保存XML中的狀態域信息
save-image-edit              編輯域的已保存狀態文件的XML
schedinfo                    顯示/設置調度程序參數
screenshot                   截取當前的域控制台並將其存儲到文件中
set-user-password            在域內設置用戶密碼
setmaxmem                    改變最大內存限制
setmem                       改變內存分配
setvcpus                     更改虛擬CPU的數量
shutdown                     正常關閉域
start                        啟動一個(以前定義的)非活動域
suspend                      暫停域名
ttyconsole                   tty控制台
undefine                     取消定義一個域
update-device                從XML文件更新設備
vcpucount                    域的vcpu數量
vcpuinfo                     詳細的域名vcpu信息
vcpupin                      控制或查詢域vcpu親和力
emulatorpin                  控制或查詢域模擬器親和力
vncdisplay                   vnc顯示
guestvcpus                   查詢或修改guest虛擬機中的vcpu狀態(通過代理)
setvcpu                      附加/分離vcpu或線程組
domblkthreshold              為給定塊設備或其支持鏈元素設置塊閾值事件的閾值
Domain Management(幫助關鍵字'Domain')

 

 

1.1 虛擬機狀態

 

通過 virsh 管理虛擬機,虛擬機的狀態顯示為以下幾種:

runing 是運行狀態 
idel 是空閑狀態 
pause 暫停狀態 
shutdown 關閉狀態 
crash 虛擬機崩壞狀態 
daying 垂死狀態 
shut off 不運行完全關閉 
pmsuspended客戶機被關掉電源中中斷

 

1.2 虛擬機的創建、開機、重啟、關機

首先看下 create 和 define 創建虛擬機異同:

create 創建虛擬機
[root@192.168.118.14 ~]#virsh list --all
Id    Name                           State
----------------------------------------------------
76    centos                         running

[root@192.168.118.14 ~]#virsh create cirros.xml 
Domain cirros created from cirros.xml

[root@192.168.118.14 ~]#virsh list --all
Id    Name                           State
----------------------------------------------------
76    centos                         running
79    cirros                         running


define 創建虛擬機
[root@192.168.118.14 ~]#virsh list --all
Id    Name                           State
----------------------------------------------------
76    centos                         running

[root@192.168.118.14 ~]#virsh define cirros.xml 
Domain cirros defined from cirros.xml

[root@192.168.118.14 ~]#virsh list --all
Id    Name                           State
----------------------------------------------------
76    centos                         running
-     cirros                         shut off

 

create  是通過 xml 格式文件創建虛擬機,創建完畢啟動。當關閉虛擬機時,create創建的虛擬機消失。

define  是通過 xml 格式文件創建虛擬機,創建完畢不啟動。當關閉虛擬機時,define 在 list 中依然能查看到。

 

開啟、重啟、關閉虛擬機

開啟:
virsh start domain

重啟:
virsh reboot domain

關閉:
virsh shutdown domain  - 正常關閉虛擬機
virsh destroy domain - 直接斷電關閉虛擬機

 

1.3 虛擬機 CPU 的操作

 

cpu-stats 宿主機和虛擬機cpu 運行時間狀態

[root@192.168.118.14 ~]#virsh cpu-stats centos
CPU0:
    cpu_time           131.344620748 seconds
    vcpu_time           78.559064700 seconds
CPU1:
    cpu_time           145.769793063 seconds
    vcpu_time           81.011781142 seconds
CPU2:
    cpu_time           132.633396527 seconds
    vcpu_time           12.782286092 seconds
CPU3:
    cpu_time            49.708745382 seconds
    vcpu_time           11.473885669 seconds
Total:
    cpu_time           459.456555720 seconds
    user_time            8.220000000 seconds
    system_time         17.180000000 seconds

 

vcpucount 查看虛擬機 vcpu 的配置數量

[root@192.168.118.14 ~]#virsh vcpucount centos
maximum      config         2
maximum      live           2
current      config         2
current      live           2

 

vcpuinfo 查看 vcpu 詳細信息,vcpu0 運行在宿主機的 cpu0 上。

[root@192.168.118.14 ~]#virsh vcpuinfo cirros
VCPU:           0
CPU:            3
State:          running
CPU time:       8.1s
CPU Affinity:   yyyy

 

1.3.1 vcpu 親和性綁定

使用 virsh vcpuinfo 命令查看實例 vcpu 和 物理 cpu 的對應關系

[root@192.168.118.11 ~]#virsh vcpuinfo cirros
VCPU:           0
CPU:            2
State:          running
CPU time:       3.5s
CPU Affinity:   yyyy

VCPU:           1
CPU:            3
State:          running
CPU time:       1.0s
CPU Affinity:   yyyy

可以發現, vcpu0 綁定到物理 cpu2 上, vcpu1 綁定到物理 cpu3 上。

使用 emulatorpin 命令可以查看虛擬機可以使用哪些物理邏輯 cpu

[root@192.168.118.11 ~]#virsh emulatorpin cirros
emulator: CPU Affinity
----------------------------------
       *: 0-3

宿主機本身有 4個 cpu。 意味着 cirros 虛擬機可以隨意在這 4個cpu上切換。

 

在線綁定虛擬機 cpu

可以強制將虛擬機綁定到一個 cpu 區間。例如,將虛擬機 cirros 的 vcpu 綁定在 1-3 區間調度。

[root@192.168.118.11 ~]#virsh emulatorpin cirros 1-3
[root@192.168.118.11 ~]#virsh emulatorpin cirros
emulator: CPU Affinity
----------------------------------
       *: 1-3

這樣,就綁定了虛擬機在 1-3 cpu 區間之類切換。

上面是為虛擬機設置一個物理 cpu 區間,如果要一對一綁定就需要使用 vcpupin

[root@192.168.118.11 ~]#virsh vcpuinfo cirros
VCPU:           0
CPU:            3
State:          running
CPU time:       3.6s
CPU Affinity:   yyyy

VCPU:           1
CPU:            2
State:          running
CPU time:       1.0s
CPU Affinity:   yyyy

# 將vcpu0 綁定到 cpu0
[root@192.168.118.11 ~]#virsh vcpupin cirros 0 0
# 將 vcpu1 綁定到 cpu1
[root@192.168.118.11 ~]#virsh vcpupin cirros 1 1
[root@192.168.118.11 ~]#virsh vcpuinfo cirros
VCPU:           0
CPU:            0
State:          running
CPU time:       3.6s
CPU Affinity:   y---

VCPU:           1
CPU:            1
State:          running
CPU time:       1.0s
CPU Affinity:   -y--

 cpu 綁定技術原理:cpu綁定實際上是 Libvirt 通過 cgroup 來實現的,通過cgroup直接去綁定KVM 虛擬機進程。cgroup 不僅可以做 cpu 綁定,還可以限制虛擬機磁盤、網絡資源控制。

cpu 綁定技術適用的應用場景:

  系統的 CPU 壓力較大

  多核 cpu 壓力不平衡,可以通過 cpu vcpupin 技術人工進行調配。

 

1.3.2 動態調配 vcpu 個數(可增大不可減少)

在 kvm 中可動態的調整 vcpu 的個數,簡單理解就是,設置一個 vcpu 最大值,這個最大值肯定是要大於當前 vcpu 數量的,然后就可以在 當前 vcpu 數量和 設置的最大vcpu數量之間 動態的調整 vcpu 的個數,如下示例演示:

 

(1)在虛擬機關閉的情況下,調整 vcpu 最大支持的數目

[root@192.168.118.14 ~]#virsh list --all
Id    Name                           State
----------------------------------------------------
76    centos                         running
-     cirros                         shut off


# 查看未虛擬機 cirros 目前主機信息
[root@192.168.118.14 ~]#virsh dominfo cirros
Id:             -
Name:           cirros
UUID:           b7acba73-f70c-4c59-b144-cc20a7665ad4
OS Type:        hvm
State:          shut off
CPU(s):         1
Max memory:     1048576 KiB
Used memory:    0 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0

# 關機狀態下修改虛擬機 cirros 最大支持的 vcpu 個數
[root@192.168.118.14 ~]#virsh setvcpus cirros --maximum 4 --config

 

(2)開機狀態下動態的調整 vcpu 的數目

# 開啟虛擬機
[root@192.168.118.14 ~]#virsh start cirros
Domain cirros started


# 查看開機 虛擬機 cirros 主機信息
[root@192.168.118.14 ~]#virsh dominfo cirros
Id:             89
Name:           cirros
UUID:           b7acba73-f70c-4c59-b144-cc20a7665ad4
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       8.0s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c123,c791 (permissive)


# 動態調整 vcpu 為 2
[root@192.168.118.14 ~]#virsh setvcpus cirros 2

# 查看調整 vcpu 是否成功
[root@192.168.118.14 ~]#virsh dominfo cirros
Id:             89
Name:           cirros
UUID:           b7acba73-f70c-4c59-b144-cc20a7665ad4
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       20.7s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c123,c791 (permissive)

 

1.4 虛擬機 內存 操作

 

1.4.1 虛擬機內存限制

memtune 查看或設置內存參數

作用:限制虛擬機在物理機host上申請內存的大小。

[root@192.168.118.14 ~]#virsh memtune centos
hard_limit     : unlimited
soft_limit     : unlimited
swap_hard_limit: unlimited

hard_limit :設置虛擬機可用物理內存最大值 (單位KB)
soft_limit:設置虛擬機軟限制最大上限(單位KB)
swap_hard_limit:設置虛擬機 swap 分區硬上限(單位KB)

設置:

[root@192.168.118.14 ~]#virsh memtune centos --hard-limit 4G --config --live
[root@192.168.118.14 ~]#virsh memtune centos --swap-hard-limit 4G --config --live
[root@192.168.118.14 ~]#virsh memtune centos --soft-limit 2G --config --live
[root@192.168.118.14 ~]#virsh memtune centos
hard_limit     : 4194304
soft_limit     : 2097152
swap_hard_limit: 4194304


說明:
--config  設置永久配置
--live  設置當前啟動狀態配置

 

1.4.2 動態修改內存大小(可增大可減小)

動態修改內存和動態調配 vcpu 配置差不多,都是通過設置一個最大值,然后就可以設置的內存 大於等於當前內存了。

 

(1)關機狀態下,修改虛擬機的最大內存數

[root@192.168.118.14 ~]#virsh list --all
Id    Name                           State
----------------------------------------------------
90    cirros                         running
-     centos                         shut off

[root@192.168.118.14 ~]#virsh dominfo centos
Id:             -
Name:           centos
UUID:           b149f8c5-f4b4-4d2d-a10d-81b8b13c68eb
OS Type:        hvm
State:          shut off
CPU(s):         1
Max memory:     1048576 KiB
Used memory:    0 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0

[root@192.168.118.14 ~]#virsh setmaxmem centos 10G --config
[root@192.168.118.14 ~]#virsh dominfo centos
Id:             -
Name:           centos
UUID:           b149f8c5-f4b4-4d2d-a10d-81b8b13c68eb
OS Type:        hvm
State:          shut off
CPU(s):         1
Max memory:     10485760 KiB
Used memory:    0 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0

 

(2)開啟虛擬機,進行內存大小的調整

 

調整前,虛擬機內存大小:

[root@192.168.118.14 ~]#virsh setmem centos 2G --config --live
[root@192.168.118.14 ~]#virsh dominfo centos
Id:             93
Name:           centos
UUID:           b149f8c5-f4b4-4d2d-a10d-81b8b13c68eb
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       92.1s
Max memory:     10485760 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c645,c949 (permissive)

 

調整后,虛擬機內存大小:

 

內存動態調整完成。

 

1.5 虛擬機 磁盤 的操作

 

1.5.1 磁盤的新增和刪除

磁盤的新增和刪除有兩種實現方式:

  (1)attach-device 和 detach-device

  (2)attach-disk 和 detach-disk

 

在新增或刪除磁盤之前,通過 qemu-img 創建一個虛擬磁盤文件:

[root@192.168.118.14 ~]#qemu-img create -f qcow2 /images/share-device.qcow2 -o size=5G,preallocation=metadata

 

第一種方式:

通過 attach-device 新增磁盤時,需要通過 xml 來添加。

編寫 xml 文件,這里有個技巧:通過 virsh edit cirros 編輯 xml 文件,復制關於 disk 的部分進行修改,這樣不容易出現報錯。

[root@192.168.118.14 /images]#cat share-device.xml 
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='writeback' io='threads'/>
  <source file='/images/share-device.qcow2'/>
  <target dev='vdb' bus='virtio'/>
</disk>

通過 attach-device 將磁盤附加到虛擬機上

[root@192.168.118.14 /images]#virsh attach-device cirros /images/share-device.xml --config --live 
Device attached successfully
# 通過 domblklist 可查看虛擬機目前掛載的磁盤信息
[root@192.168.118.14 /images]#virsh domblklist cirros
Target     Source
------------------------------------------------
vda        /images/cirros-0.3.5-i386-disk.img
vdb        /images/share-device.qcow2

 

查看虛擬機磁盤:

 

刪除添加過的磁盤:

[root@192.168.118.14 /images]#virsh detach-device cirros /images/share-device.xml --config --live 
Device detached successfully
# 通過 domblklist 可查看虛擬機目前掛載的磁盤信息
[root@192.168.118.14 /images]#virsh domblklist cirros
Target     Source
------------------------------------------------
vda        /images/cirros-0.3.5-i386-disk.img

 

查看虛擬機磁盤:

刪除成功。

 

注意:使用 attach-device 和 detach-device 時,文件的指向是 xml 文件,而不是虛擬磁盤文件。

 

第二種方式:

  通過 attach-disk 新增磁盤時,需要通過 虛擬磁盤文件 來添加。

 

添加虛擬磁盤:

[root@192.168.118.14 /images]#virsh attach-disk cirros /images/share-device.qcow2 vdb --live --config 
Disk attached successfully

 

刪除虛擬磁盤:

[root@192.168.118.14 /images]#virsh detach-disk cirros /images/share-device.qcow2  --live --config
Disk detached successfully

 

1.6 虛擬機 網卡 的操作

 

主要操作命令:

domiflist : 查看虛擬機中所有的網卡設備
attach-interface: 為虛擬機添加網卡設備
detach-interface:刪除虛擬機網卡設備

 

示例演示:

 

(1)查看虛擬機所有網絡設備:

[root@192.168.118.14 /images]#virsh domiflist cirros
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      network    default    rtl8139     52:54:00:c6:aa:b7

 

(2)為虛擬機再添加一張網卡:

[root@192.168.118.14 /images]#virsh attach-interface cirros --type bridge --source virbr0 --live --config
Interface attached successfully

[root@192.168.118.14 /images]#virsh domiflist cirros
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      network    default    rtl8139     52:54:00:c6:aa:b7
vnet1      bridge     virbr0     rtl8139     52:54:00:de:6d:04

網卡添加成功。

 

(3)刪除網絡設備:

[root@192.168.118.14 ~]#virsh detach-interface cirros --type bridge --mac 52:54:00:e0:2c:44 --live --config
Interface detached successfully

[root@192.168.118.14 ~]#virsh domiflist cirros
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      network    default    rtl8139     52:54:00:c6:aa:b7

 

 

1.7 虛擬機 其他 的一些操作

 

1.7.1 autostart

autostart :設置物理機開機啟動虛擬機

查看方式:

[root@192.168.118.14 ~]#virsh dominfo cirros
Id:             96
Name:           cirros
UUID:           3748ef4e-1c84-4f28-9a4b-53ad22310bfd
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       25.1s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c184,c860 (permissive)

其中 autostart 選項就是是否開機啟動。disable 否,enable 是

設置:

[root@192.168.118.14 ~]#virsh autostart cirros # 設置開機啟動
[root@192.168.118.14 ~]#virsh autostart cirros --disable # 關閉開機啟動

 

1.7.2 domdisplay

顯示虛擬機連接的 URI

[root@192.168.118.14 ~]#virsh domdisplay centos
vnc://127.0.0.1:0

 

1.7.3 dumpxml

導出虛擬機的 xml 文件

[root@192.168.118.14 ~]#virsh dumpxml centos > centos.xml

 

 

2. 虛擬機 監控 操作

domblkerror                  在塊設備上顯示錯誤
domblkinfo                   域塊設備大小信息
domblklist                   列出所有的域塊
domblkstat                   獲取域的設備塊統計信息
domcontrol                   域控制接口狀態
domif-getlink                獲取虛擬接口的鏈接狀態
domifaddr                    獲取正在運行的域的網絡接口地址
domiflist                    列出所有的域虛擬接口
domifstat                    獲取域的網絡接口統計信息
dominfo                      域信息
dommemstat                   獲取域的內存統計信息
domstate                     域狀態
domstats                     獲取有關一個或多個域的統計信息
domtime                      域時間
list                         列出域名
Domain Monitoring(幫助關鍵字'monitor')

 

 

命令使用詳解:

domblkerror:查看虛擬機磁盤塊錯誤信息

[root@192.168.118.14 ~]#virsh domblkerror centos
No errors found

 

domblklist:查看虛擬機磁盤信息及位置

[root@192.168.118.14 ~]#virsh domblklist centos
Target     Source
------------------------------------------------
vda        /images/CentOS-7-x86_64-GenericCloud-1511.qcow2

 

domblkstat:查看磁盤 I/O 等信息

[root@192.168.118.14 ~]#virsh domblkstat centos
 rd_req 5476
 rd_bytes 119216128
 wr_req 2271
 wr_bytes 3498496
 flush_operations 50
 rd_total_times 1649970675
 wr_total_times 2319258979
 flush_total_times 627588120

 

domcontrol:查看虛擬機接口信息

[root@192.168.118.14 ~]#virsh domcontrol centos
ok

 

domif-getlink:查看虛擬機某一個虛擬接口的狀態

[root@192.168.118.14 ~]#virsh domif-getlink centos vnet0
vnet0 up

 

domifaddr:查看虛擬機網卡信息

[root@192.168.118.14 ~]#virsh domifaddr centos
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:cb:f1:75    ipv4         192.168.122.40/24

 

domiflist:查看網卡詳細信息

[root@192.168.118.14 ~]#virsh domiflist centos
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      network    default    rtl8139     52:54:00:cb:f1:75

 

domifstat:查看虛擬機網卡流量詳細信息

[root@192.168.118.14 ~]#virsh domifstat centos vnet0
vnet0 rx_bytes 49615
vnet0 rx_packets 789
vnet0 rx_errs 0
vnet0 rx_drop 0
vnet0 tx_bytes 19422
vnet0 tx_packets 239
vnet0 tx_errs 0
vnet0 tx_drop 0

 

dominfo:查看虛擬機的詳細信息

[root@192.168.118.14 ~]#virsh dominfo centos
Id:             98
Name:           centos
UUID:           35abdeb1-ef6d-41b4-9c4c-61e3a660c666
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       114.0s
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c555,c926 (permissive)

 

dommemstat:查看內存狀態

[root@192.168.118.14 ~]#virsh dommemstat centos
actual 1048576
swap_in 3733319892074496
rss 404032

 

domstate:查看虛擬機狀態

[root@192.168.118.14 ~]#virsh domstate centos
running

 

domstats:查看虛擬機狀態參數

[root@192.168.118.14 ~]#virsh domstats centos
Domain: 'centos'
  state.state=1
  state.reason=1
  cpu.time=118798719298
  cpu.user=7620000000
  cpu.system=11920000000
  balloon.current=1048576
  …

 

 

3. 宿主機及 Hypervisor 信息

allocpages                   操縱頁面池大小
capabilities                 功能
cpu-models                   CPU型號
domcapabilities              域功能
freecell                     NUMA可用內存
freepages                    NUMA免費網頁
hostname                     打印管理程序主機名
maxvcpus                     連接vcpu最大
node-memory-tune             獲取或設置節點內存參數
nodecpumap                   節點cpu映射
nodecpustats                 打印節點的cpu統計信息。
nodeinfo                     節點信息
nodememstats                 打印節點的內存統計信息。
nodesuspend                  暫停主機節點一段給定的時間
sysinfo                      打印管理程序sysinfo
uri                          打印管理程序規范的URI
version                      顯示版本

作者:王鳴南曲
鏈接:https://www.jianshu.com/p/905b7db05100
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。
Host and Hypervisor(幫助關鍵字'host')

 

 

主要常用的幾個選項:

 

hostname:查看宿主機名

[root@192.168.118.14 ~]#virsh hostname
kvm-test

 

maxvcpus:查看宿主機 vcpu 使用的最大值

[root@192.168.118.14 ~]#virsh maxvcpus
16

 

nodeinfo:查看宿主機信息

[root@192.168.118.14 ~]#virsh nodeinfo
CPU model:           x86_64
CPU(s):              4
CPU frequency:       2397 MHz
CPU socket(s):       4
Core(s) per socket:  1
Thread(s) per core:  1
NUMA cell(s):        1
Memory size:         8010940 KiB

 

sysinfo:查看宿主機系統參數信息

[root@192.168.118.14 ~]#virsh sysinfo
<sysinfo type='smbios'>
  <bios>
    <entry name='vendor'>Seabios</entry>
    <entry name='version'>0.5.1</entry>
    <entry name='date'>01/01/2011</entry>
    <entry name='release'>1.0</entry>
  </bios>
... ...

 

uri:查看連接宿主機的 uri

[root@192.168.118.14 ~]#virsh uri 
qemu:///system

 

version:查看宿主機安裝libvirt QEMU 的版本信息

[root@192.168.118.14 ~]#virsh version
Compiled against library: libvirt 1.2.17
Using library: libvirt 1.2.17
Using API: QEMU 1.2.17
Running hypervisor: QEMU 1.5.3

 

 

4. interface 相關的選項

iface-begin                  創建當前接口設置的快照,可以稍后提交(iface-commit)或恢復(iface-rollback)
iface-bridge                 創建一個橋接設備並將一個現有的網絡設備連接到它
iface-commit                 提交自iface-開始和自由恢復點以來所做的更改
iface-define                 定義不活動的持久物理主機接口或從XML文件修改現有的持久物理主機接口
iface-destroy                銷毀一個物理主機接口(禁用它/“if-down”)
iface-dumpxml                接口信息在XML中
iface-edit                   編輯物理主機接口的XML配置
iface-list                   列出物理主機接口
iface-mac                    將接口名稱轉換為接口MAC地址
iface-name                   將接口MAC地址轉換為接口名稱
iface-rollback               回滾到通過iface-begin創建的先前保存的配置
iface-start                  啟動一個物理主機接口(啟用/“if-up”)
iface-unbridge               取消其從屬設備后取消定義橋接設備
iface-undefine               取消定義物理主機接口(將其從配置中移除)
Interface(幫助關鍵字'interface')

 

4.1 iface-bridge 和 iface-unbridge

 

iface-bridge 創建網橋

iface-unbridge 刪除網橋

注意:在使用 iface-bridge 創建網橋之前,請將 NetworkManager 服務關閉,否則會造成創建完網橋之后,網絡斷開的情況。

# 查看網橋設備
[root@localhost ~]# brctl show
bridge name	bridge id		STP enabled	interfaces

# 關閉 NetworkManager 服務
[root@localhost ~]# systemctl stop NetworkManager ; systemctl disable NetworkManager 
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
# 創建網橋
[root@localhost ~]# virsh iface-bridge eno16777736 br0
Created bridge br0 with attached device eno16777736
Bridge interface br0 started

# 查看創建的網橋信息
[root@localhost ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c293178be	yes		eno16777736

[root@localhost ~]# ifconfig 
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.118.11  netmask 255.255.255.0  broadcast 192.168.118.255
        inet6 fe80::20c:29ff:fe31:78be  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:31:78:be  txqueuelen 0  (Ethernet)
        RX packets 121  bytes 16478 (16.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 66  bytes 7360 (7.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:31:78:be  txqueuelen 1000  (Ethernet)
        RX packets 2533  bytes 573618 (560.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1673  bytes 643967 (628.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        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

 

通過上面可以看到,物理網卡 eno16777736 的ip地址已經在 br0上生效了,而 物理網卡已經作為一個橋接設備。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls ifcfg-*
ifcfg-br0  ifcfg-eno16777736  ifcfg-lo

查看配置文件,iface-bridge 是直接將配置文件也改寫了,也就是說,通過 iface-bridge 創建的橋接,重啟依然生效。

iface-unbridge 刪除網橋的使用:

[root@localhost ~]# virsh iface-unbridge br0
Device eno16777736 un-attached from bridge br0
Interface eno16777736 started

[root@localhost ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
[root@localhost ~]# virsh iface-list --all
 Name                 State      MAC Address
---------------------------------------------------
 eno16777736          active     00:0c:29:31:78:be
 lo                   active     00:00:00:00:00:00

網橋 br0 刪除成功。

 

4.2 iface-list 查看宿主機所有的 interface接口

[root@localhost ~]# virsh iface-list --all
 Name                 State      MAC Address
---------------------------------------------------
 br0                  active     00:0c:29:31:78:be
 lo                   active     00:00:00:00:00:00

 

4.3 iface-edit 編輯宿主機現有的 interface

[root@localhost ~]# virsh iface-edit br0

<interface type='bridge' name='br0'>
  <start mode='onboot'/>
  <protocol family='ipv4'>
    <ip address='192.168.118.11' prefix='24'/>
    <route gateway='192.168.118.1'/>
  </protocol>
  <bridge stp='on' delay='0'>
    <interface type='ethernet' name='eno16777736'>
    </interface>
  </bridge>
</interface>

 

4.4 iface-dumpxml 導出宿主機現有的 interface 為 xml 文件

# 查看
[root@localhost ~]# virsh iface-dumpxml br0
<interface type='bridge' name='br0'>
  <protocol family='ipv4'>
    <ip address='192.168.118.11' prefix='24'/>
  </protocol>
  <protocol family='ipv6'>
    <ip address='fe80::20c:29ff:fe31:78be' prefix='64'/>
  </protocol>
  <bridge>
    <interface type='ethernet' name='vnet0'>
      <link state='unknown'/>
      <mac address='fe:54:00:9c:b2:32'/>
    </interface>
    <interface type='ethernet' name='eno16777736'>
      <link speed='1000' state='up'/>
      <mac address='00:0c:29:31:78:be'/>
    </interface>
  </bridge>
</interface>

# 導入到 xml 文件
[root@localhost ~]# virsh iface-dumpxml br0 > br0.xml

 

4.5 iface-destroy 和 iface-start

iface-destroy 將 interface 設置為 不活動狀態
iface-start 將 interface 設置為 活動狀態

[root@localhost ~]# virsh iface-list --all
 Name                 State      MAC Address
---------------------------------------------------
 br0                  active     00:0c:29:53:fa:87
 lo                   active     00:00:00:00:00:00

[root@localhost ~]# virsh iface-destroy lo 
Interface lo destroyed

[root@localhost ~]# virsh iface-list --all
 Name                 State      MAC Address
---------------------------------------------------
 br0                  active     00:0c:29:53:fa:87
 lo                   inactive   00:00:00:00:00:00

 

iface-destroy 不可輕易使用,會造成虛擬機或宿主機網絡失聯。

iface-start 的使用:

[root@localhost ~]# virsh iface-start lo
Interface lo started

[root@localhost ~]# virsh iface-list --all
 Name                 State      MAC Address
---------------------------------------------------
 br0                  active     00:0c:29:31:78:be
 lo                   active     00:00:00:00:00:00

 

4.6 iface-mac 獲取 接口的 mac 地址

[root@localhost ~]# virsh iface-mac lo
00:00:00:00:00:00

[root@localhost ~]# virsh iface-mac br0
00:0c:29:53:fa:87

 

4.7 iface-name 通過 mac 地址獲取 接口名稱

[root@localhost ~]# virsh iface-name 00:0c:29:53:fa:87
br0

[root@localhost ~]# virsh iface-name 00:00:00:00:00:00
lo

 

 

5. 網絡相關的選項

net-autostart                自動啟動一個網絡
net-create                   從XML文件創建一個網絡
net-define                   定義不活動的永久虛擬網絡或從XML文件修改現有的永久虛擬網絡
net-destroy                  摧毀(停止)一個網絡
net-dhcp-leases              打印給定網絡的租賃信息
net-dumpxml                  XML中的網絡信息
net-edit                     編輯網絡的XML配置
net-event                    網絡事件
net-info                     網絡信息
net-list                     列表網絡
net-name                     將網絡UUID轉換為網絡名稱
net-start                    啟動一個(以前定義的)不活動的網絡
net-undefine                 取消定義一個持久的網絡
net-update                   更新現有網絡配置的一部分
net-uuid                     將網絡名稱轉換為網絡UUID
Networking(幫助關鍵字'network')

 

 

注意: virsh network 選項內容管理對應的文件是 /etc/libvirt/qemu/network/ 如果這里沒有關於網絡的xml 文件,則通過 virsh net-list -all 是查詢不到網絡的。

對於上面實例通過 virsh iface-bridge eno16777736 br0 這樣創建的網橋,通過 virsh net-list 是查詢不到的。

當使用 yum install libvirt 安裝不做任何修改進行啟動,通過 virsh net-list 查看:

[root@localhost ~]# virsh net-list 
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

這里的 default 對應的文件是 /etc/libvirt/qemu/networks/default.xml

 

network選項中,重點掌握一下:

net-destroy 	停止網絡
net-start 	啟用網絡
net-dumpxml 	查看網絡配置文件 同等於 cat /etc/libvirt/qemu/networks/default.xml
net-edit 	編輯網絡配置文件 同等於 vim /etc/libvirt/qemu/networks/default.xml
net-create 	通過 xml 文件創建網絡,一般很少使用。
net-info 	查看網絡詳細信息
net-autostart 	宿主機開啟自動啟動

 

 

6. 快照相關的選項

snapshot-create              從XML創建一個快照
snapshot-create-as           從一組參數創建一個快照
snapshot-current             獲取或設置當前快照
snapshot-delete              刪除域快照
snapshot-dumpxml             轉儲域快照的XML
snapshot-edit                編輯快照的XML
snapshot-info                快照信息
snapshot-list                列出域的快照
snapshot-parent              獲取快照的父級的名稱
snapshot-revert              將域恢復為快照
Snapshot(幫助關鍵字'snapshot')

 

 

重點掌握如下選項:

snapshot-list 	查看某domain的快照
snapshot-info 	查看快照詳細信息
snapshot-dumpxml  查看快照xml文件
snapshot-edit 	編輯快照信息
snapshot-create 	創建一個 xml 格式的快照
snapshot-create-as 	創建一個 xml 格式的快照,但是可以命名快照名
snapshot-revert 	將虛擬機還原到快照信息

 

6.1 snapshot-create 和 snapshot-create-as

這兩個命令創建快照其內部運行機制是一致的,只不過 snapshot-create-as 可以為快照命名,如下:

[root@localhost ~]# virsh list 
 Id    Name                           State
----------------------------------------------------
 2     cirros                         running

[root@localhost ~]# virsh snapshot-create cirros 
Domain snapshot 1563634518 created
[root@localhost ~]# virsh snapshot-list cirros
 Name                 Creation Time             State
------------------------------------------------------------
 1563634518           2019-07-20 22:55:18 +0800 running

[root@localhost ~]# virsh snapshot-create-as cirros cirros_bak
Domain snapshot cirros_bak created
[root@localhost ~]# virsh snapshot-list  cirros
 Name                 Creation Time             State
------------------------------------------------------------
 1563634518           2019-07-20 22:55:18 +0800 running
 cirros_bak           2019-07-20 22:55:45 +0800 running

可以發現,通過 snapshot-create 創建的快照 Name 為時間戳,而通過 snapshot-create-as 創建的快照則可以自行命名。

 

6.2 snapshot-revert 還原快照

[root@localhost ~]# virsh snapshot-list cirros
 Name                 Creation Time             State
------------------------------------------------------------
 1563634518           2019-07-20 22:55:18 +0800 running
 cirros_bak           2019-07-20 22:55:45 +0800 running

[root@localhost ~]# virsh snapshot-revert cirros cirros_bak

[root@localhost ~]# virsh list 
 Id    Name                           State
----------------------------------------------------
 2     cirros                         running

 

 

7. 虛擬機存儲池操作

find-storage-pool-sources-as 找到潛在的存儲池來源
find-storage-pool-sources    發現潛在的存儲池來源
pool-autostart               自動啟動一個池
pool-build                   建立一個存儲池
pool-create-as               從一組參數創建一個池
pool-create                  從XML文件創建一個池
pool-define-as               從一組參數中定義一個池
pool-define                  定義不活動的持久性存儲池或從XML文件修改現有的持久  性存儲池
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
pool-event                   存儲池事件
Storage Pool(幫助關鍵詞'pool')

 

kvm 平台以存儲池的形式對存儲進行統一管理,所謂存儲池可以理解為本地目錄,通過遠端磁盤陣列(ISCSI、NFS)分配過來磁盤或目錄,當然也支持各類分布式文件系統。

為虛擬機創建存儲池的兩種方式:

 

7.1 通過 xml 文件創建

通過 pool-list --all 查看所有的 存儲池, 默認為有一個 default 存儲池

[root@192.168.118.14 ~]#virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes    

 

通過 pool-dumpxml 將 default 存儲池導入出來進行修改

[root@192.168.118.14 ~]#virsh pool-dumpxml default > images.xml

修改如下:
[root@192.168.118.14 ~]#cat images.xml 
<pool type='dir'>
  <name>images</name>
  <source>
  </source>
  <target>
    <path>/images</path>
    <permissions>
      <mode>0711</mode>
      <owner>0</owner>
      <group>0</group>
    </permissions>
  </target>
</pool>

/images 目錄必須存在。
通過 pool-define 導出存儲池
[root@192.168.118.14 ~]#virsh pool-define images.xml 
Pool images defined from images.xml

[root@192.168.118.14 ~]#virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 images               inactive   no        

啟用 images 存儲池
[root@192.168.118.14 ~]#virsh pool-start images
Pool images started

開機啟用 images 存儲池
[root@192.168.118.14 ~]#virsh pool-autostart images
Pool images marked as autostarted

[root@192.168.118.14 ~]#virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 images               active     yes

 

7.2 通過命令創建存儲池

[root@192.168.118.14 ~]#mkdir /img
[root@192.168.118.14 ~]#virsh pool-define-as img --type dir --target /img/
[root@192.168.118.14 ~]#virsh pool-build img
[root@192.168.118.14 ~]#virsh pool-start img
[root@192.168.118.14 ~]#virsh pool-autostart img

 

7.3 刪除存儲池

[root@192.168.118.14 ~]#virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes       
 images               active     yes       

[root@192.168.118.14 ~]#virsh pool-destroy images
Pool images destroyed
      
[root@192.168.118.14 ~]#virsh pool-undefine images
Pool images has been undefined

[root@192.168.118.14 ~]#virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 default              active     yes


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM