######################################
######## unit15.系統虛擬機管理 #######
######################################
########1.安裝#########
安裝方式:
(1)圖形界面安裝
(2)命令行安裝
[root@foundation19 ~]# virt-install \ ##安裝虛擬機
> --name westos \ ##虛擬機名稱指定爲westos
> --ram 1000 \ ##內存
> --file /var/lib/libvirt/images/westos.img \ ##硬盤文件
> --file-size 8 \ ##硬盤文件大小
(當用已有的磁盤文件創建虛擬機時不用寫這一行)
> --cdrom /home/kiosk/Downloads/rhel-server-7.1-x86_64-dvd.iso
##指定安裝源(表示通過鏡像文件來安裝虛擬機的方式)
(3)shell腳本安裝
vim /bin/vmcreate ##創建名爲vmcreate的文件在/bin/下(當shell腳本編譯完之後,vmcreate將成爲命令)
#!/bin/bash ##命令運行環境的指定
--name $1 \ ##虛擬機名稱指定,$1表示腳本命令後的第一串字符
--ram 1000 \ ##內存
--file /var/lib/libvirt/images/$1.img \ ##硬盤大小
--file-size 8 \ ##硬盤文件大小
--cdrom /home/kiosk/Downloads/rhel-server-7.1-x86_64-dvd.iso &
##指定安裝源,&表示將命令打入後臺運行
測試:
sh vmcreate test ##創建名爲test的虛擬機(sh表示執行腳本)
或
chmod +x vmcreate ##先賦予執行權限(因爲系統默認創建的文件的權限爲644)
vmcreate test ##創建名爲test的虛擬機
########2.管理#########
virt-manager ##開啓圖形管理工具
virt-viewer vmname ##顯示虛擬機(vmname爲虛擬機名稱)
virsh list ##列出正在運行的vm
virsh list --all ##列出所有vm
virsh start vmname ##運行指定vm
virsh shutdown vmname ##正常關閉指定vm
virsh destroy vmname ##強行關閉指定vm
virsh create vmname.xml ##臨時恢復指定vm,vmname表示前端管理文件(當.xml文件不在默認目錄下,可以使用該方法啓動虛擬機)(此種方法啓動之後不會在默認目錄再生成.xml文件了)
virsh define vmname.xml ##永久恢復指定vm(當.xml文件不在默認目錄下,可以使用該方法啓動虛擬機)(此種方法啓動之後會在默認目錄再生成.xml文件)
virsh undefine vmname ##刪除vm的前端管理文件,不會刪除存儲
(只會刪除默認路徑/etc/libvirt/qume/下的.img文件,非默認路徑的不會刪除)
#######3.創建虛擬機的快照######
注意:創建快照最好先將被創建的虛擬機關閉,並將.xml文件刪除。(以防止誤操作母盤,導致快照無法使用)
(1)命令行創建
qemu-img create -f qcow2 -b test.qcow2 node1.qcow2 ##此處的.qcow2爲相對路徑,需要在/var/liblibvirt/images/下執行,或者寫爲絕對路徑也可以
du -sh node1.qcow2 ##顯示快照的文件大小(快照的大小會隨着用戶的使用而增加)
(2)shell腳本創建
vim /bin/nodecreate ##如果自己寫的vmctl腳本存在/var/lib/libvirt/images/下,只能在該目錄下才能執行。
所以建議將腳本放在/bin/下。
通過echo $PATH可以查看該目錄下的環境變量。
#!/bin/bash
echo poweroff $1 ...
virsh destroyc $1 &>/dev/null
echo delete $1.xml ...
virsh undefine $1 &>/dev/null
qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.qcow2/var/lib/libvirt/images/$2.qcow2 &>/dev/null
======以上部分只是創建了快照的磁盤管理文件,還要把前端管理文件創建纔算完成快照的創建======
echo create $1 vm ...
virt-install \
--name $2 \
--ram 1000 \
--disk /var/lib/libvirt/images/$2.qcow2 \
--import &>/dev/null & ##表示用已有的磁盤文件來創建虛擬機,注意:此行最後的&表示打入後臺運行
測試:
sh nodecreate test node1 ##以test爲基礎創建快照(sh表示執行腳本)
或
chmod +x nodecreate ##先賦予執行權限(因爲系統默認創建的文件的權限爲644)
nodecreate test node1 ##以test爲基礎創建快照
##注意:不能給快照創建快照
補充:
1..img或者.qcow2文件爲磁盤管理文件,.xml爲前端管理文件。兩個文件都在纔可以恢復虛擬機。
2..img與.qcow2文件格式不同,但區別是?
3.磁盤管理文件必須在系統默認的/var/lib/libvirt/images/下,否則虛擬機則無法正常啓動。而前端管理文件則不要求,但默認會在/etc/libvirt/qemu/下。
4.在圖形化界面刪除虛擬機時,如果不勾選刪除磁盤文件則可以恢復,恢復方法如下:
當前端管理文件被刪除時,可以在安裝虛擬機時選擇用已有的硬盤管理文件(improt exiting disk image)來安裝,系統會自動生成前端管理文件
shell腳本:(經典案例)
創建腳本westos.sh。命令後跟apple,輸出banana;命令後跟banana,輸出apple;命令後跟其他,輸出"ERRO:please input apple|banana after westos.sh"。
腳本創建如下:
vim /bin/westos.sh
#!/bin/bash
case "$1" in
apple)
echo banana
;;
banana)
echo apple
;;
*)
echo "ERROR:please input apple|banana after westos.sh"
esac