######################################
######## unit15.系统虚拟机管理 #######
######################################
########1.安装#########
安装方式:
(1)图形界面安装
(2)命令行安装
[root@foundation19 ~]# virt-install \ ##安装虚拟机
> --name westos \ ##虚拟机名称指定为westos
> --ram 1000 \ ##内存
> --file /var/lib/libvirt/p_w_picpaths/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/p_w_picpaths/$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/p_w_picpaths/下执行,或者写为绝对路径也可以
du -sh node1.qcow2 ##显示快照的文件大小(快照的大小会随着用户的使用而增加)
(2)shell脚本创建
vim /bin/nodecreate ##如果自己写的vmctl脚本存在/var/lib/libvirt/p_w_picpaths/下,只能在该目录下才能执行。
所以建议将脚本放在/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/p_w_picpaths/$1.qcow2/var/lib/libvirt/p_w_picpaths/$2.qcow2 &>/dev/null
======以上部分只是创建了快照的磁盘管理文件,还要把前端管理文件创建才算完成快照的创建======
echo create $1 vm ...
virt-install \
--name $2 \
--ram 1000 \
--disk /var/lib/libvirt/p_w_picpaths/$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/p_w_picpaths/下,否则虚拟机则无法正常启动。而前端管理文件则不要求,但默认会在/etc/libvirt/qemu/下。
4.在图形化界面删除虚拟机时,如果不勾选删除磁盘文件则可以恢复,恢复方法如下:
当前端管理文件被删除时,可以在安装虚拟机时选择用已有的硬盘管理文件(improt exiting disk p_w_picpath)来安装,系统会自动生成前端管理文件
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