1.虚拟机管理命令
virt-manager 开启虚拟机管理器
virsh list 显示正在运行的虚拟机
virsh list --all 查看所有虚拟机
virsh start desktop 打开虚拟机
virsh shutdown desktop 正常关闭虚拟机(可被阻塞)
virsh destory desktop 强行关闭虚拟机
virt-viewer desktop 显示虚拟机(但是会占用终端,可以用ctrlz,bg jobsnum打入后台)
例:
virt-manager 开启虚拟机管理器。
virsh list 显示正在运行的虚拟机
virsh list --all 查看所有虚拟机
模拟虚拟机的恢复
准备一个已经安装好的虚拟机
scp root@ip:/etc/libvirt/qemu/westos.xml /mnt/
scp root@ip:/var/lib/libvirt/images/westos.qcow2 /mnt/
在虚拟机管理器中删除这个装好的虚拟机(连文件一起删除)
(westos.xml 是虚拟机westos的硬件信息文件 westos.qcow2是虚拟机westos的文件信息)
模拟恢复过程
cd /mnt
virsh create westos.xml 用硬件信息文件启动虚拟机
在操作过程中会有以下报错
error:Cannot access storage file ‘/var/lib/libvirt/images/westos.qcow2’(as uid:107.gid:107): No such file or directory
原因是:用硬件信息启动虚拟机,默认在 /var/lib/libvirt/images/中寻找westos.qcow2系统的文件信息。而我们scp过来的westos.qcow2系统文件信息在/mnt,所以会产生报错。
解决方法:
mv /mnt/westos.qcow2 /var/lib/libvirt/images/
virsh define westos.xml 永久恢复虚拟机
virsh undefine westos 删除虚拟机(正在运行时删除不了,关闭运行即可)文件信息还在
rm -fr /var/lib/libvirt/images/westos.qcow2 删除虚拟机的文件信息
虚拟机的安装脚本
编辑一个sh文件($1是占位符,运行脚本时后面跟什么就是什么)
vim /mnt/vm_create.sh
1 test -z "$1" && {
2 echo "Error: Please input VMNAME following scritps!!"
3 exit
4 } (1-4行:定义当$1占位符所在的位置是空的时候退出脚本不再执行,在此意义为当运行脚本安装虚拟机没有指定虚拟机名称时,退出安装脚本)
5 virt-install \ (第5行 开启虚拟机图形化管理的命令,‘\’换行符,与前面命令空格隔开,后面不接空格,意为下一行命令是上一行命令的衔接)
6 --name $1 \ (虚拟机的名字)
7 --cdrom /home/kiosk/Desktop/rhel-server-7.3-x86_64-dvd.iso \ (镜像虚拟机的安装文件,--cdrom后面接的是自己的镜像虚拟机存放路径)
8 --memory 1024 \ (内存选1024)
9 --vcpus 1 \ (cpu选1)
10 --disk /var/lib/libvirt/images/$1.qcow2,size=6,bus=virtio \ (硬件信息是存放在 /var/lib/libvirt/images/$1.qcow2,路径不能错,size硬盘大小为6,)
11 --network source=br0,model=virtio &> /dev/null & (设置网关,屏蔽错误输出到null,且打入后台执行)
chmod +x vm_create.sh 对编辑的脚本进行授执行权
/mnt/vm_create.sh 运行脚本即可
快照(reset虚拟机的原理)
快照就相当于在虚拟机的硬件信息前放了一块’玻璃’,透过’玻璃’进行操作,所有的操作痕迹作用在‘玻璃’上,但是呈现出来的效果就是‘玻璃’上的痕迹加‘玻璃’后的内容,操作失误还原只需拿走‘玻璃’更换新的即可(因为母盘没有任何改变)。
cd /var/lib/libvirt/images/ 进入虚拟机硬件信息存放的位置
ls 找出自己所需要的母盘信息(这里用westos虚拟机的信息做母盘,westos.qcow2)
qemu-img create -f qcow2 -b westos.qcow2 node1.qcow2
以westos.qcow2为母盘进行快照,生成node1.qcow2即成功
测试: 在硬件信息node1.qcow2安装的虚拟机node1中,rm -fr /* 使其系统崩溃不能重启,关闭虚拟机node1。然后删除/var/lib/libvirt/images/里面快照出来的文件node1.qcow2。然后重复以westos.qcow2为母盘进行快照一个新的node1.qcow2。再次打开虚拟机node1即可正常运行。
快照的脚本编辑(以快照出来的硬件信息进行虚拟机的后台安装)
vim /mnt/vm_create_snopshot.sh
1 qemu-img create \
2 -f qcow2 \
3 -b /var/lib/libvirt/images/$1.qcow2 /var/lib/libvirt/images/$2.qcow2 &> /dev/null
(1-3行以$1.qcow2为母盘生成快照$2.qcow2)
4
5 virt-install \ (安装命令)
6 --name $2 \ (新虚拟机的名称)
7 --memory 1024 \ (内存选用1024)
8 --vcpus 1 \ (cpu选用规格1)
9 --disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \ (硬件信息存放的路径,路径不能错)
10 --network source=br0,model=virtio \ (网络的相关设置)
11 --import &> /dev/null & (屏蔽错误输出到null中,并打入后台运行。)
chmod +x vm_create_snopshot.sh 对编辑的脚本授权
/mnt/vm_create_snopshot.sh westos node1 运行脚本