20個常用virsh命令介紹
由于virsh命令種類過多,因此管理員很難了解究竟哪些命令最適合于當前管理需求,如果是這樣,那么下面的內容會讓管理員擁有一個好的開始。
使用virsh命令行工具能夠大大簡化hypervisor和虛擬機管理工作,virsh工具基于開源libvirt管理API。通過virsh命令,管理員能夠創建、編輯、遷移和關閉虛擬機以及一些其他操作。事實上virsh包含大量命令,因此不得不將其分為多個類別,比如域相關命令、存儲池相關命令和快照相關命令等。面對如此多的virsh命令,管理員應該如何選擇才能保證數據中心高效管理呢?下面列舉了一些使用頻率***的命令:
通用virsh命令
這個類別中的命令并不只適用于虛擬機,而是能夠幫助完成一些通用管理任務。
help:獲取可用virsh命令的完整列表,并且分為不同的種類。管理員可以指定列表中的特定組來縮小查詢范圍,其中包含每個命令組的簡要描述;或者查詢特定命令以獲取更為詳細的信息,包括名稱、簡介、描述以及選項等。
list:管理員可以使用這個命令獲取現有虛擬機的各種信息以及當前狀態。根據需求的不同,管理員可以使用—inactive或者—all選項進行篩選。命令執行結果中將會包含虛擬機ID、名稱以及當前狀態,可能的狀態包括運行、暫停或者崩潰等。
connect:管理員可以使用這條命令連接到本地hypervisor,也可以通過統一資源標識符來獲取遠程訪問權限。其所支持的常見格式包括xen:///(默認)、qemu:///system、qemu:///session以及lxc:///等。如果想要建立只讀連接,需要在命令中添加—readonly選項。
域相關命令
使用這些virsh命令直接操作特定虛擬機。
desc:顯示或者更改虛擬機的描述和標題。相關選項包括—live、--config、--edit和—title。需要注意的是如果同時使用—live 和—config,那么—config擁有更高的優先級。同樣,建議保證虛擬機標題盡量簡潔,雖然這并不是一項強制規定。
Save:這條命令將會關閉虛擬機并且將數據保存到文件中。這樣就能夠釋放之前分配給虛擬機的內存,因為這些虛擬機不再運行在系統上。如果想要查看具體的保存過程,可以使用—verbose選項。如果想要恢復之前保存的虛擬機,可以使用restore命令。
sysmem:管理員可以使用這個命令調整分配給虛擬機的內存,但是注意單位是kilobytes。借助于setmaxmem,管理員可以更改分配給虛擬機的***內存數量。Setmem和setmaxmem可以使用—config、--live和—current flags作為選項。
migrate:將虛擬機遷移到另外一臺主機,選項包括實時遷移或者直接遷移等。需要注意的是單臺hypervisor不能夠支持所有這些遷移類型。如果對虛擬機進行實時遷移,則可以使用migrate –setmaxdowntime來設定***停機時間。
undefine:這條命令可以在不產生任何停機時間的情況下將一臺運行狀態的虛擬機轉變為臨時虛擬機。如果虛擬機沒有處于活動狀態,那么這條命令將會移除其配置。管理員還可以添加多種選項,比如--managed-save、 --snapshots-metadata、 --storage、 --remove-all-storage 和 --wipe-storage等。
dump:為虛擬機創建dump日志文件,以便在排錯時使用。如果想要在產生dump文件的過程中保持虛擬機一直運行,則需要使用- -live選項,否則虛擬機將會被置于掛起狀態。使用- - crash選項,虛擬機將會被停止運行,并且其狀態也會被改為崩潰。使用- - reset選項可以在產生dump日志文件之后重置虛擬機。
shutdown:正常關閉虛擬機。這條命令比destroy命令更加安全,只有在虛擬機沒有任何響應的情況下才推薦使用destroy命令,因為這條命令可能導致文件系統損壞。管理員還可以使用- -more選項更改默認的虛擬機關閉方式。
存儲池相關命令
這個類別中的命令主要用來操作存儲池資源。
pool-list:獲取處于活動狀態的存儲池對象列表。可以使用--persistent、--transient、--autostart 或 --no-autostart等選項進行分類篩選。如果想要獲取非活動狀態的存儲池列表,可以使用--active選項;如果想要獲取完整列表,需要使用--all選項。
pool-build:可以使用這條命令創建存儲池。這條命令的選項包括--overwrite和 --no-overwrite。如果使用—overwrite選項,那么目標設備上的現有數據將會被覆蓋,如果使用--no-overwrite參數,當目標設備上已經創建文件系統時用戶將會收到報錯。
pool-edit:這條命令允許管理員使用默認文本編輯器對存儲池的XML配置文件進行編輯,并且還會進行錯誤檢查。
存儲卷相關命令
管理員可以使用下面這些virsh命令來管理存儲卷。
vol-create::基于XML文件或者命令行參數來創建存儲卷。進一步來說,管理員可以使用vol-create-from命令將其他卷作為輸入來創建新的存儲卷,也可以使用vol-create-as命令加上一系列參數來創建存儲卷,還可以設定卷大小以及文件格式。
vol-resize:這條命令能夠以字節為單位更改指定存儲卷的大小。管理員需要輸入目標卷大小,或者使用--delta選項指定在現有基礎上增加多少空間。需要注意的是在活動虛擬機上使用vol-size命令是非常不安全的,但是管理員可以使用blockresize命令實時更改存儲空間。
vol-wipe:擦除存儲卷中的數據,并且確保之前的所有數據都不能夠再被訪問。如果虛擬機中含有機密信息,那么這條命令非常有用。此外,管理員還可以使用其他數據擦除算法,默認方式是使用0覆蓋整個存儲卷。
快照相關命令
這個類別中的命令能夠操作虛擬機快照。
snapshot-list:管理員可以使用這條命令獲取指定虛擬機的所有可用快照列表。列表包括快照名稱、創建時間以及虛擬機狀態等。同樣可以使用選項來對列表進行篩選,比如--form、--leave、--metadata、--inactive和—internal等。
snapshot-create:管理員需要首先輸入快照名稱、描述,并且在XML文件中指定磁盤,之后使用這條命令創建虛擬機快照。如果不想使用XML文件中的屬性來創建創建快照,那么可以使用snapshot-create-as命令。如果使用—halt選項,那么虛擬機被創建之后將處于非活動狀態。
snapshot-revert:這條命令允許管理員將虛擬機恢復到之前的某個快照狀態。如果想要恢復到當前快照,可以使用—current選項。虛擬機狀態將會保持和制作快照時相同,而之后所做的任何操作都將會被丟棄。
snapshot-delete:管理員可以使用這條命令來刪除指定快照,或者使用--current選項來刪除現有快照。如果想要刪除快照以及子快照或時間點拷貝,則可以使用--children選項。如果使用--children-only選項,那么系統只會刪除子快照,原有快照不會受到影響。
當然,上面的列表無法包含所有相關命令。除了上面列舉的這些命令之外,在每個類別中管理員肯定都能夠找到其他一些非常有幫助的命令。還有一些其他種類的命令,雖然這里沒有列舉,但是值得了解,比如設備相關命令、nodedev相關命令、虛擬網絡相關命令、接口相關命令、加密相關命令、nwfilter相關命令以及qemu-specific相關命令。如果想要順利管理hypervisor和虛擬機,管理員需要掌握所有選項的功能、限制以及可能產生的結果。