脚本对虚拟机的安装管理
摘要:本次博文主要涉及Linux系统主机使用脚本进行安装、快照和重置虚拟机,如此,克服了镜像法安装Linux系统虚拟机的步骤繁多的缺点,提高了工作效率。
一、安装虚拟机
在这里主要介绍两种快速安装虚拟机的情况,第一种在孤立无援下,独立安装速度最快的方法。第二种是得到其他主机安装好虚拟机后产生的两个文件时,神速安装。
(一)普通脚本安装虚拟机
原材料:主机、安装源
脚本如下:
#empty#!/bin/bash 命令运行环境的指定
virt-install 安装虚拟机
--name $1 \ 虚拟机名称的指定,$1表示脚本后的第一串字符
--ram 1024 \ 内存
--file /var/lib/libvirt/images/$1.qcow2 \ 硬盘文件
--file-size 8 \ 硬盘大小
--cdrom /home/kiosk/Desktop/work/rhel-server-7.2-x86_64-dvd.iso \ 安装源指定
--vcpus 1 &
举例演示:
首先转到超级用户
通过ps可以查看当前进程,使用which bash看出系统命令是储存在/usr/bin/下,最后也可以将写好的脚本,和系统命令放在一起,方便调用。
使用vim命令开始编程脚本,名称形如Creat_vm.sh其中.sh表示脚本的意思
如下,是我已经写好的安装虚拟机的脚本,其中反斜杠及其前的空格表示换行。
然后赋予该脚本可执行能力,即chmod +x Creat_vm.sh
最后把Creat_vm.sh移动到/usr/bin/目录下,如此调用起来和原系统命令一样快捷
效果如下:
大功告成,表示虚拟机安装启动
(二)具有硬盘文件与前端文件的超速安装虚拟机
原材料:
(1) vm.qcow2 硬盘文件
绝对路径:/var/lib/libvirt/images
(2) vm.xml 前端文件
绝对路径:/etc/libvirt/qemu
(3)主机
注:vm表示虚拟机名称
分别得到两个文件后,开始对主机超速安装:
步骤有三:
(1)将硬盘文件移动到主机 /var/lib/libvirt/images
(2)将硬盘文件移动到主机 /etc/libvirt/qemu
(3)显示虚拟机的存在:
暂时性:virsh create vm.xml
永久性:virsh define vm.xml
举例演示:
注:这里我得到了某台主机虚拟机redhat的两个文件,并且保存在目录/mnt中。
移动redhat.qcow2到指定路径,即mv redhat.qcow2 /var/lib/libvirt/images/
可以看到,redhat.qcow2添加成功
移动redhat.xml到指定路径,即mv redhat.xml /etc/libvirt/qemu
可以看到,redhat.xml添加成功
进行永久生效显示
如此,成功。
二、虚拟机的管理
虚拟机管理命令如下,建议读者尝试,截图,不再赘述。
##########################################################################################
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表示前端管理文件
virsh define vmname.xml 永久恢复vm
virsh undefine vmname 删除vm的前端管理,但不会删除储存
##########################################################################################
三、虚拟机的快照
虽然虚拟机身份卑微,但也是来之不易。因而对虚拟机进行快照操作,有了快照,大可以任意操作,玩坏了一个快照再弄一个就行,毕竟虚拟机母本平安无事。
1、建议现在将母本虚拟机隐藏起来保护,避免被误删。
隐藏的方法:
方法一:直接undefine母本前端文件,并更改母本硬盘文件名称。
(1)virsh undefine redhat
(2)在指定同一路径下 mv redhat.qcow2 vm_storage.qcow2 等价于修改其名称
方法二:在virt-manager下慎重删除虚拟机但注意去掉硬盘选项,然后修改名字和上述(2)一样,不再赘述
脚本快速实现虚拟机的快照
代码如下:
#!/bin/bash
qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_storage.qcow2 \
/var/lib/libvirt/images/$1.qcow2 &>/dev/null
virt-install \
--name $1 \
--ram 1024 \
--file /var/lib/libvirt/images/$1.qcow2 \
--file-size 8 \
--import &>/dev/null &
echo Successfully !!!
注:&>/dev/null表示不显示过程中的繁琐信息,& 表示后台运行,不占用终端,vm_storage.qcow2表示母本虚拟机的硬盘文件。
举例演示:
使用vim命令开始编程脚本,名称形如Creat_snap.sh其中.sh表示脚本的意思
如下,是我已经写好的安装虚拟机的脚本,其中反斜杠及其前的空格表示换行。
然后赋予该脚本可执行能力,即chmod +x Creat_snap.sh
最后把Creat_snap.sh移动到/usr/bin/目录下,如此调用起来和原系统命令一样快捷
四、重置虚拟机快照
当一个虚拟机快照损坏时,我们可以直接调用一个脚本命令去重置它,省略不必要的麻烦。
程序如下:
#!/bin/bash
virsh destroy $1 &>/dev/null
rm -fr /var/lib/libvirt/images/$1.qcow2 \
qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_storage.qcow2 \
/var/lib/libvirt/images/$1.qcow2 &>/dev/null
virsh start $1 &>/dev/null
virt-viewer $1 &>/dev/null &
echo Successfully !!!empty
注:&>/dev/null表示不显示过程中的繁琐信息,& 表示后台运行,不占用终端,vm_storage.qcow2表示母本虚拟机的硬盘文件。
(一)配置演示:
使用vim命令开始编程脚本,名称形如Reset_vm.sh其中.sh表示脚本的意思
命令:vim Rest_vm.sh
如下,是我已经写好的安装虚拟机的脚本,其中反斜杠及其前的空格表示换行。
然后赋予该脚本可执行能力,即chmod +x Reset_vm.sh
最后把Reset_vm.sh移动到/usr/bin/目录下,如此调用起来和原系统命令一样快捷
(二)功能演示:
在终端试图调用快照node1
快照node1已经损坏,无法开机了!
利用写好的Resetvm.sh重置虚拟机快照,而后可以恢复其正常
如图,快照node1 可以正常开机使用,方便,简单。