脚本对虚拟机的安装管理

摘要:本次博文主要涉及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  &




举例演示:

首先转到超级用户

 

重置centos虚拟机网络 linux重置虚拟机_linux

通过ps可以查看当前进程,使用which bash看出系统命令是储存在/usr/bin/下,最后也可以将写好的脚本,和系统命令放在一起,方便调用。

重置centos虚拟机网络 linux重置虚拟机_虚拟机_02

使用vim命令开始编程脚本,名称形如Creat_vm.sh其中.sh表示脚本的意思

重置centos虚拟机网络 linux重置虚拟机_linux_03

如下,是我已经写好的安装虚拟机的脚本,其中反斜杠及其前的空格表示换行。

 

重置centos虚拟机网络 linux重置虚拟机_重置centos虚拟机网络_04

然后赋予该脚本可执行能力,即chmod +x Creat_vm.sh 

重置centos虚拟机网络 linux重置虚拟机_linux_05

最后把Creat_vm.sh移动到/usr/bin/目录下,如此调用起来和原系统命令一样快捷

重置centos虚拟机网络 linux重置虚拟机_脚本语言_06

 

效果如下:

重置centos虚拟机网络 linux重置虚拟机_虚拟机快照_07

大功告成,表示虚拟机安装启动

 

重置centos虚拟机网络 linux重置虚拟机_重置centos虚拟机网络_08

(二)具有硬盘文件与前端文件的超速安装虚拟机

原材料:

        (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/  

重置centos虚拟机网络 linux重置虚拟机_重置centos虚拟机网络_09

可以看到,redhat.qcow2添加成功

重置centos虚拟机网络 linux重置虚拟机_虚拟机_10

移动redhat.xml到指定路径,即mv redhat.xml /etc/libvirt/qemu

重置centos虚拟机网络 linux重置虚拟机_虚拟机_11

可以看到,redhat.xml添加成功

重置centos虚拟机网络 linux重置虚拟机_脚本语言_12

 

进行永久生效显示 

重置centos虚拟机网络 linux重置虚拟机_虚拟机_13

如此,成功。

重置centos虚拟机网络 linux重置虚拟机_脚本语言_14

二、虚拟机的管理

虚拟机管理命令如下,建议读者尝试,截图,不再赘述。

##########################################################################################

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

 

重置centos虚拟机网络 linux重置虚拟机_虚拟机_15

       (2)在指定同一路径下 mv redhat.qcow2 vm_storage.qcow2  等价于修改其名称

重置centos虚拟机网络 linux重置虚拟机_linux_16

 

方法二:在virt-manager下慎重删除虚拟机但注意去掉硬盘选项,然后修改名字和上述(2)一样,不再赘述

  

重置centos虚拟机网络 linux重置虚拟机_脚本语言_17


脚本快速实现虚拟机的快照

代码如下:



#!/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表示脚本的意思

重置centos虚拟机网络 linux重置虚拟机_重置centos虚拟机网络_18

如下,是我已经写好的安装虚拟机的脚本,其中反斜杠及其前的空格表示换行。

重置centos虚拟机网络 linux重置虚拟机_虚拟机_19

然后赋予该脚本可执行能力,即chmod +x Creat_snap.sh 

重置centos虚拟机网络 linux重置虚拟机_虚拟机快照_20

最后把Creat_snap.sh移动到/usr/bin/目录下,如此调用起来和原系统命令一样快捷

重置centos虚拟机网络 linux重置虚拟机_虚拟机_21

重置centos虚拟机网络 linux重置虚拟机_脚本语言_22

四、重置虚拟机快照

当一个虚拟机快照损坏时,我们可以直接调用一个脚本命令去重置它,省略不必要的麻烦。

程序如下:


#!/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

重置centos虚拟机网络 linux重置虚拟机_重置centos虚拟机网络_23

如下,是我已经写好的安装虚拟机的脚本,其中反斜杠及其前的空格表示换行。

重置centos虚拟机网络 linux重置虚拟机_虚拟机快照_24

然后赋予该脚本可执行能力,即chmod +x Reset_vm.sh 

重置centos虚拟机网络 linux重置虚拟机_虚拟机_25

最后把Reset_vm.sh移动到/usr/bin/目录下,如此调用起来和原系统命令一样快捷


重置centos虚拟机网络 linux重置虚拟机_脚本语言_26


(二)功能演示:

在终端试图调用快照node1

重置centos虚拟机网络 linux重置虚拟机_虚拟机快照_27

快照node1已经损坏,无法开机了!

重置centos虚拟机网络 linux重置虚拟机_脚本语言_28

利用写好的Resetvm.sh重置虚拟机快照,而后可以恢复其正常

重置centos虚拟机网络 linux重置虚拟机_虚拟机快照_29

如图,快照node1 可以正常开机使用,方便,简单。

重置centos虚拟机网络 linux重置虚拟机_重置centos虚拟机网络_30