虚拟机管理
1.为什么要引入虚拟机
虚拟机:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
作用:实际运行时用户需要的内存空间可能远远大于物理机器的内存大小,利用内存的虚拟化技术,用户可以将一部分硬盘虚拟化为内存,还可以降低占用空间,降低购买软硬件设备的成本,节省能源和更低的维护成本。它比实际存在的终端设备更加具备性价比优势。
2.安装虚拟机
(1)利用virt-manager命令打开虚拟机控制窗口,右键选择NEW
(2)可以选择多种安装方式,如镜像安装,虚拟机配置文件安装
(3)这里选择镜像文件,选中已经下载好的镜像文件,再点Forward
(4)为其分配内存空间和cup盘数
(5)选择安装在哪个硬盘,并分配硬盘空间给其使用
(6)为其设定硬盘名称
(7)进入安装设定页面,选择所需
3.查看命令
virsh list ##查看主机上在运行的虚拟机
virsh list --all ##查看主机上所有的虚拟机
管理命令
virsh start 虚拟机名 ##运行指定虚拟机
virsh shutdown 虚拟机名 ##关闭指定虚拟机(正常关机时间久)
virsh destroy 虚拟机名 ##立即关闭指定虚拟机(时间短)
virt-viewer 虚拟机名 ##显示指定虚拟机
xml 可扩展标记语言(多用于数据封装)
html超文本标记语言
/etc/libvirt/qemu/ ##虚拟机管理文件
systemctl restart libvirtd ##重启虚拟机服务
4.家中模拟虚拟机的恢复
(1)在别人主机中发现1个已经安装好的虚拟机
克隆步骤:
假设10主机中存在已经安装号的虚拟机“UC"
(2)复制虚拟机所需文件
传输虚拟机
[root@foundation26 ~]# scp root@172.25.254.27:/var/lib/libvirt/images/uc.qcow2 /var/lib/libvirt/images/
[root@foundation27 ~]# scp /var/lib/libvirt/images/yyy.qcow2 root@172.25.254.26:/var/lib/libvirt/images/
传输描述配置文件
[root@foundation26 ~]# scp root@172.25.254.27:/etc/libvirt/qemu/uc.xml /mnt/uc.xml
[root@foundation27 ~]# scp /etc/libvirt/qemu/uc.xml root@172.25.254.26:/var/lib/libvirt/images/
(3)对虚拟机进行恢复
virsh create /mnt/yyy.xml ##用虚拟机硬件文件一次性开启虚拟机,关闭时会消失
virsh define /mnt/yyy.xml ##永久恢复虚拟机
5.虚拟机快照
防止一次更改错误,造成不可恢复的问题,所以给它做一个照片(相当于快捷方式)
(1)制作快照
qemu-img create -f qcow2 -b /var/lib/libvirt/images/yyy.qcow2
/var/lib/libvirt/images/heihei.qcow2 (yyy为母盘文件,heihei为快照文件)
(2)把生成的快照倒入到虚拟机图形控制器中 import existing disk image
(3)虚拟机可以正常使用
(4)快照虚拟机损坏,那么删除快照,重新制作快照即可
注意:当使用快照后,请不要对母盘做任何操作
制作快照
虚拟机损坏时删除重装即可
6.命令删除虚拟机
virsh undefine 虚拟机名 ##只在图形界面删除虚拟机
rm -fr /var/lib/libvirt/images/虚拟机硬盘.qcow2##图形和硬盘文件都删除虚拟机
7.脚本安装虚拟机
sh 脚本文件 ##执行脚本
(1)设置以光驱安装虚拟机的脚本
设置脚本,可以自动执行
#!bin/bash ##设置运行环境为shell
virt-install \
--cdrom /光驱所在目录
--memory 1000 \ ##设置内存容量位1000MB
--vcpus 1 \ ##分配cup盘数为1
--disk /var/lib/libvirt/images/$1.qcow2,size=8,bus=virtio \
##设置硬盘文件为$1.qcow2,硬盘大小为8GB,总线为虚拟I/O输入输出,
##此处的"$1" 符号解决的问题:如果脚本文件里设置了虚拟机名字,想要再次用脚本创建新的虚拟
机,会发现创建不了,这时应该引入“占位符”,可在命令行后直接输入名字
--network bridge=br0,model=virtio \
##设置网络桥接为br0,网络模型为虚拟i/o输入输出
--name $1 >/dev/null &
##"&>/dev/null"表示在执行命令后什么都不显示 ,"&"表示执行安装虚拟机的脚本,放入后台
运行不占用前台
每一行后的"\"表示换行符
(2)设置以快照安装虚拟机的脚本
#!/bin/bash
qemu-img create -f qcow2 -b \
/var/lib/libvirt/images/$1.qcow2 \
/var/lib/libvirt/images/$2.qcow2 &> /dev/null ##脚本制作快照
virt-install \
--name $3 \
--memory 1000 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--import &> /dev/null &
$1:母盘名称,$2:快照名称,$3:要创建的虚拟机名称