[ 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 管理虛擬機,虛擬機的狀態顯示爲如下幾種:node

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

 

1.2 虛擬機的建立、開機、重啓、關機

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

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建立的虛擬機消失。ios

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

 

開啓、重啓、關閉虛擬機centos

開啓:
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 的配置數量bash

[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 親和性綁定dom

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

[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
相關文章
相關標籤/搜索