有了virt-install是安裝虛擬機的命令,固然也須要一個管理虛擬機的命令了,那就是virsh。 node
virsh命令使用 shell
virsh <command> <domain-id> [OPTIONS] session
virsh既有命令行模式,也有交互模式,在命令行直接輸入virsh就進入交互模式,virsh 後面跟命令參數,則是命令行模式。下面主要介紹交互式用法。 dom
virsh 回車 ssh
help <command> 單獨help命令會顯示全部的可用命令,若是後面有command,則會簡單的解釋該命令的用法 tcp
quit/exit 退出交互窗口 ide
version 顯示相關版本號 ui
cd directory 從當前目錄跳轉到directory,此命令只能用在交互模式 spa
pwd 顯示當前目錄 命令行
connect URI optional 鏈接到超級管理程序,
uri 顯示超級管理程序的標準URI,能夠用在shell mode
hostname 顯示超級管理程序的主機名
nodeinfo 顯示一個node的基本信息
list optional 顯示正在running的domin,虛擬機共有7中狀態
running 虛擬機正在運行在cpu上
idel 虛擬機是閒置的,沒有在運行,在等待IO或者休眠時虛擬機會進入這種狀態
paused 虛擬機處於暫停狀態,通常狀況下是被admin運行了virsh suspend纔會處於這種狀態,可是仍然消耗資源,只不過不被超級管理程序調度而已。
shutdown 虛擬機在關閉過程當中
shut off 虛擬機沒有運行,已經徹底關閉
crashed 虛擬機崩潰
dying 虛擬機處於垂死的狀態,可是又沒徹底關閉或崩潰
virsh shutdown <domin> 關閉虛擬機domin,若是不設置domin則關閉全部的虛擬機
virsh destory <domin> 強制關閉虛擬機
virsh start <domin> 啓動虛擬機
如下的命令能夠直接操做domain
autostart [--disable] domain-id 配置一個domain後自動該domain disable是禁止啓動
console domain-id 經過串行線路鏈接至虛擬機
create FILE optional --console --paused 經過XML文件才建立一個虛擬機,也能夠先用dumpxml導出已有的虛擬機的配置文件,而後修改使用,默認的虛擬機建立後都是直接running,加上paused參數後,新建立的虛擬機不會直接running
define FILE 從XML配置文件定義一個domian,至關於註冊一個domain可是不啓動。
destroy domain-id 直接關閉一個虛擬機,不給機器反映時間,相似於直接拔電源
dommemstat domain 獲取domain的內存狀態
edit domain-id 編輯XML配置文件,等效於:
virsh dumpxml domain > domain.xml
edit domain.xml
virsh define domain.xml
managedsave domain-id 保存當前運行的虛擬機的狀態,當虛擬機再次啓動的時候會恢復到以前保存的狀態
migrate optional --live --suspend domain-id desturi migrateuri 遷移虛擬機到其餘機器 --live表示動態遷移,--suspend表示遷移到目的地時虛擬機處於paused狀態,desturi是遷移到目的地主機的URI,migrateuri是遷移機器的URI。
save domain-id state-file 保存一個正在運行的虛擬機的狀態到一個文件中,以便之後恢復到此狀態,一旦保存後虛擬機將不會再運行,佔有的資源也會釋放,virsh restore能夠恢復到此前的狀態。eg:save 12 /tmp/test
restore state-file 恢復到以前保存的一個狀態.eg:restore /tmp/test
setmem domain-id kilobytes 改變當前虛擬機分配的內存,當即生效,單位KB
setmaxmem domain-id kilobytes 設置一個虛擬機可分配的最大內存,它不改變當前使用的內存
setvcpus domain-id count 改變當前虛擬機的vcpu個數
shutdown domain-id 正常的關閉一個虛擬機
start domain-name 啓動一個虛擬機
suspend domain-id 掛起一個正在運行的虛擬機,該虛擬機仍舊佔用資源。
resume domain-id 從掛起狀態恢復一個虛擬機
vcpuinfo domain-id 顯示一些虛擬機的vcpu信息,包括幾個vcpu,運行時間,和那個物理cpu親和
vcpupin domain-id vcpu cpulist 把vcpu綁定到物理cpu,vcpu的數量必須提供,cpulist是一個以逗號分割的物理cpu列表
vncdisplay domain-id 顯示vnc監聽的地址和端口
快照命令
snapshots能夠保存一個domain的disk memory device在某個時間點的狀態以便未來會使用到,保存的文件名稱必須是惟一的
snapshot-create domain xmlfile 給domain建立一個snapshot,詳細內容保存在xmlfile中
snapshot-current domain 顯示一個domain的當前的snapshot
snapshot-list domain 顯示一個domain的全部的snapshot
snapshot-revert domain snapshot 恢復一個domian到之前的snapshot
snapshot-delete domain snapshot --children 刪除一個domain的snapshot
如何用libvirt遠程管理虛擬機?
要用libvirt鏈接到超級管理程序,咱們須要一個URI,這個URI配合virsh和virt-viewer命令使用,後面能夠跟一些可選項,virt-viewer能夠調用一些連接參數,例如:virsh -c qemu:///system 當連接到遠程機器時,能夠定義幾種使用的協議:ssh,tcp,tls。當連接到遠程機器時,須要使用遠程主機的用戶和主機名進行連接,若是沒有定義連接用戶,則會使用本機環境的$USER的用戶進行連接,當鏈接到qemu hypervisor時,接受兩種連接類型:system能夠有全部的訪問權限,session有限制的訪問。例如:
使用full access連接至本機的qemu hypervisor,前面的-c 是爲了執行後面的list命令(--connect)
virsh -c qemu:///system list
使用full access連接至遠程主機的qemu hypervisor,每次都要輸入ssh密碼,改爲ssh無密碼登錄就不須要輸入密碼了,直接顯示結果。
virsh -c qemu+ssh://tux@mercury.example.com/system 直接進入交互virsh模式
virsh -c qemu+ssh://10.1.1.8/system list 直接顯示list後的結果
其他鏈接格式以下:
qemu:///session (local access to per-user instance) qemu+unix:///session (local access to per-user instance) qemu:///system (local access to system instance) qemu+unix:///system (local access to system instance) qemu://example.com/system (remote access, TLS/x509) qemu+tcp://example.com/system (remote access, SASl/Kerberos) qemu+ssh://root@example.com/system (remote access, SSH tunnelled)