文章目录

  • 1.虚拟机管理命令
  • 2.从其他同网主机copy虚拟机
  • 3.半自动脚本建立虚拟机(未安装)
  • 4.自动安装虚拟机的脚本(同一网络下 批量安装虚拟机 无图形)
  • 5.全自动安装虚拟机脚本
  • 6.快照


1.虚拟机管理命令

命令

作用

virsh --help

查看virsh命令的帮助

virsh create xxx.xml

一次性恢复虚拟机xxx

virsh define xxx.xml

永久恢复虚拟机xxx

virsh undefine xxx

删除xxx虚拟机的硬件信息

virsh list

查看正在运行的虚拟机

virsh list --all

查看所有虚拟机

virsh start xxx

启动xxx虚拟机

virsh shutdown xxx

关闭虚拟机 ,可能会被阻塞

virsh destroy xxx

强行关闭虚拟机xxx(相当于poweroff 不会被阻塞)

virt-viewer xxx

显示虚拟机xxx(会占用终端)

virt-manager

虚拟机管理器

2.从其他同网主机copy虚拟机

(1)copy虚拟机硬盘
硬盘存储路径:/var/lib/libvirt/images/

  • eg:假设将要从2号主机copy虚拟机 将虚拟机文家全部存放到本机的/mnt目录
    scp root@172.25.254.2:/var/lib/libvirt/images/westos.qcow2 /mnt

(2)copy硬件信息 (管理虚拟机在系统中的文件 )
虚拟机硬件信息存储路径:/etc/libvirt/qemu
(xml可扩展标记语言–>数据的封装)

  • eg:scp root@172.25.254.2:/etc/libvirt/qemu/westos.xml /mnt
  • qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机

  • (3)此时执行 virsh create westos.xml会出现报错,因为文件没有存储在相应路径,系统无法恢复虚拟机
    vim /mnt/westos.xml 根据文本内容 将/mnt/westos.qcow2 移动到相应位置
    mv /mnt/westos.qcow2 /var/lib/libvirt/images/
  • qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_02

  • (4)virsh create westos.xml 一次性恢复虚拟机westos
    virsh define westos.xml 在真机上永久恢复虚拟机westos
  • qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_03


  • qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_04

3.半自动脚本建立虚拟机(未安装)

(1)准备工作:下载好虚拟机iso镜像安装包 建议单独存放在根目录下

(2)建立virt-install虚拟机安装脚本文件 vim vm_create.sh

借助man 1 virt-install编写脚本:

test -z "$1" &&{
echo "Error:Please input VNAME following scritps!!!"
exit } ##判断$1是否为空 若为空数输出错误提示(echo 相当于 printf)且直接结束脚本不再执行
virt-install \
--name $1 \ ##虚拟机的名字
--cdom /iso/rhel-server-7.3-x86_64-dvd.iso \ ##表示使用镜像安装 iso镜像的绝对路径
--memory 1024 \ ##硬件大小
--vcpus 1 \ ##cpu的个数
--disk /var/lib/libvirt/images/$1.qcow2,size=6,bus=virtio \
##硬盘的选择:硬盘的绝对路径,硬盘的大小=6,硬盘总线选择virtio
--network source=br0,model=virtio &> /dev/null &
##网络的选择:网络来源=br0,模型=virtio "&> /dev/null"表示输出内容重定向到垃圾箱 "&"表示安装过程在后台进行

*注:
\ 换行符 连接下一行
$1 占位符 脚本后面所跟的的第一个字符
eg: sh vm_cteate.sh test 此时qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_05a"="$b" && echo yes || echo no 结果为yes
(相当于if语句,等式成立执行 && 与之后的命令;否则,执行 ||非之后的语句)

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_06


(3) chmod +x vm_create.sh

sh vm_create.sh

可以看到只是选择建立了虚拟机但并未安装

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_07


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_08

4.自动安装虚拟机的脚本(同一网络下 批量安装虚拟机 无图形)

原理:将安装虚拟机的步骤选项根据命令生成脚本,对脚本进行修改之后,利用httpd将脚本分享到网上,需要安装虚拟机的客户机可以利用网上共享资源自动安装虚拟机,需要注意的是客户机的dhcpd服务必须开启为将要安装的虚拟机分配ip网络。

(1)yum install system-config-kickstart -y 如果系统中没有这个软件可能需要安装

system-config-kickstart 打开虚拟机安装选择配置文件窗口

选择各项配置之后 选择脚本保存位置 保存脚本ks.cfg (这里保存到/下)

脚本生成步骤:

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_09


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_10

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_11

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_12


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_13


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_14


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_15


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_16


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_17


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_18


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_虚拟机管理命令_19

(2)在保存脚本的位置打开脚本进行修改
最后添加 :

%packages
@base  ##虚拟机基础工具组建的安装
xxx                    ## 表示你想安装的软件在虚拟机安装后系统会自动安装
%endxu

(3)ksvalidator ks.cfg 检测脚本语法是否正确

(4)在确保脚本正确性的前提下 将脚本分享到网络上

systemctl start httpd 打开httpd阿帕奇服务 将资源共享

systemctl stop firewalld 关闭防火墙

cp /ks.cfg /var/www/html/ 注:这里只能使用cp

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_20


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_21


在浏览器中搜索 看是否存在分享的资源;若分享成功如下图

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_22


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_23


(4) 客户机测试:

1)systemctl startd dhcpd 这里需要dhcpd服务 给待安装的虚拟机分配ip (在安装虚拟机时需要访问网络共享资源 而访问网络就需要ip 只能通过dhcp服务给虚拟机自动分配)

virt-manger 打开虚拟机管理器 选择如下安装的信息进行安装,安装后虚拟机是不用选择其他设置的

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_24


如果未开启dhcpd服务安装过程中会出现如下错误:

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_25

2)按照如下步骤开始安装虚拟机

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_26


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_27

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_28


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_29


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_30


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_31

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_32


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_虚拟机管理命令_33

5.全自动安装虚拟机脚本

(1)准备:搭建好yum源 httpd(apache)资源共享成功

vim vm_create.sh



virt-install \
--name $1 \
--location http://172.25.254.1/rhel7.3 ##表示选择网络http资源安装
--memory 1024 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$2.qcow2,size=6,bus=virtio \
--network source=br0,model=virtio \
--extra-args "ks=http://172.25.254.70/ks.cfg" \

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_34


(2)sh vm_create.sh 执行脚本 一步安装虚拟机

出现如下界面表示安装配置正常

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_35

6.快照

(1)概念:虚拟机数据的可用拷贝,虚拟机数据的复制品

(2)cd /var/lib/libvirt/images 到虚拟机硬件管理目录下

qemu-img create -f qcow2 -b westos.qcow2 node1.qcow2 快照生成虚拟机的硬件信息

/var/lib/libvirt/images 目录下查看是否新建了快照文件node1.qcow2

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_36


(3)若新建则按照如下步骤安装快照:

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_37


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_38


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_xml_39


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_40

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_快照_41


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_自动安装虚拟机_42


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_43

qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_虚拟机管理命令_44


qemu 虚拟机 挂载 windows主机U盘 qemu虚拟机文件拷贝_脚本安装虚拟机_45

脚本执行

(1) vim vm_create_shot.sh

(2)脚本内容:

qemu-img create \
-f qcow2 \
-b /var/lib/libvirt/images/$1.qcow2 /var/lib/libvirt/images/$2.qcow2 &> /dev/null \

virt-install \
--name $2 \
--memory 1024 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
--network source=br0,model=virtio \
--import &> /dev/null &

如若将虚拟机文件删除导致虚拟机不能正常启动 rm -fr /var/lib/libvirt/node1.qcow2 再重新建立快照即可