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 爲給定塊設備或其支持鏈元素設置塊閾值事件的閾值
經過 virsh 管理虛擬機,虛擬機的狀態顯示爲如下幾種:node
runing 是運行狀態 idel 是空閒狀態 pause 暫停狀態 shutdown 關閉狀態 crash 虛擬機崩壞狀態 daying 垂死狀態 shut off 不運行徹底關閉 pmsuspended客戶機被關掉電源中中斷
首先看下 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 - 直接斷電關閉虛擬機
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 虛擬機內存限制
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 磁盤的新增和刪除
磁盤的新增和刪除有兩種實現方式:
(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
主要操做命令:
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 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
domblkerror 在塊設備上顯示錯誤 domblkinfo 域塊設備大小信息 domblklist 列出全部的域塊 domblkstat 獲取域的設備塊統計信息 domcontrol 域控制接口狀態 domif-getlink 獲取虛擬接口的連接狀態 domifaddr 獲取正在運行的域的網絡接口地址 domiflist 列出全部的域虛擬接口 domifstat 獲取域的網絡接口統計信息 dominfo 域信息 dommemstat 獲取域的內存統計信息 domstate 域狀態 domstats 獲取有關一個或多個域的統計信息 domtime 域時間 list 列出域名
命令使用詳解:
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 …
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 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
主要經常使用的幾個選項:
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
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 取消定義物理主機接口(將其從配置中移除)
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 刪除成功。
[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
[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>
# 查看 [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
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
[root@localhost ~]# virsh iface-mac lo 00:00:00:00:00:00 [root@localhost ~]# virsh iface-mac br0 00:0c:29:53:fa:87
[root@localhost ~]# virsh iface-name 00:0c:29:53:fa:87 br0 [root@localhost ~]# virsh iface-name 00:00:00:00:00:00 lo
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
注意: 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 宿主機開啓自動啓動
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-list 查看某domain的快照 snapshot-info 查看快照詳細信息 snapshot-dumpxml 查看快照xml文件 snapshot-edit 編輯快照信息 snapshot-create 建立一個 xml 格式的快照 snapshot-create-as 建立一個 xml 格式的快照,可是能夠命名快照名 snapshot-revert 將虛擬機還原到快照信息
這兩個命令建立快照其內部運行機制是一致的,只不過 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 建立的快照則能夠自行命名。
[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
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 存儲池事件
kvm 平臺以存儲池的形式對存儲進行統一管理,所謂存儲池能夠理解爲本地目錄,經過遠端磁盤陣列(ISCSI、NFS)分配過來磁盤或目錄,固然也支持各種分佈式文件系統。
爲虛擬機建立存儲池的兩種方式:
經過 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
[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
[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