在我们运维的相关学习过程中,经常会用到虚拟机来模拟相关的服务器和客户端。
这篇我们主要了解一下虚拟机的不同方式的建立方法(模拟装机过程)以及虚拟机相关的管理方式。例如虚拟机的快照等。
0.虚拟机的组成
[root@foundation14 mnt]# cd /var/lib/libvirt/images ##后端硬盘位置
[root@foundation14 images]# ls
generic.qcow2 rh124-desktop-vdb.ovl rh124-server-vdb.ovl
node3.qcow2 rh124-desktop-vdb.qcow2 rh124-server-vdb.qcow2
node.qcow2 rh124-desktop.xml rh124-server.xml
rh124-desktop-vda.ovl rh124-server-vda.ovl
rh124-desktop-vda.qcow2 rh124-server-vda.qcow2
[root@foundation14 images]# cd /etc/libvirt/qemu/ ##前端管理文件位置
[root@foundation14 qemu]# ls
desktop.xml LULUBAO.xml networks server.xml ##(xml可扩展标记语言 用来封装虚拟机中的硬件信息)
注意:虚拟机的前端文件可以自动生成 只删除前端管理文件并不会彻底的删除虚拟机,虚拟机是可恢复的;但若直接删除硬盘文件保留前端文集 虚拟机无法恢复。
一.虚拟机的创建
(2)制作一个新的虚拟机(点击左上角的小电视 并选择第三个选项)
并进行依次如下选择(虚拟机参数可根据自己需求自由定义)
(3)添加光驱(点击小灯泡 再点击add hardware)
(5)把系统盘放入光驱
(6)调整启动顺序(调整到先在光驱启动)
(8)进行一系列的配置选择
系统语言
时区
安装软件
设置root永久密码 和新用户
等待进度条完成安装
2.命令
利用shell脚本命令,创建虚拟机
(1)[kiosk@foundation14 mnt]$ vim Create_Vm.sh ##建立相关脚本命令
#!/bin/bash ##命令运行环境的指定
virt-install \ ##安装虚拟机
--name $1 \ ##虚拟机名字($1 为命令后跟的第一串字符)
--ram 1024 \ ##内存为1G
--file /var/lib/libvirt/images/$1.qcow2 \ ##硬盘文件位置 (名字为为命令后的第一串字符.qcow2)
--file-size 8 \ ##硬盘为8G
--cdrom /home/kiosk/Desktop/张璐运维/rhel-server-7.2-x86_64-dvd.iso \ ##光盘(镜像)位置
--vcpus 1 & ##cpu数为1 (&表示命令在后台运行)
(2)[root@foundation14 mnt]# chmod +x Create_Vm.sh ##添加x执行权限
(3)[root@foundation14 mnt]# ./Create_Vm.sh node2 ##用绝对路径执行命令
(4)直接执行命令 不需要加位置
[root@foundation14 mnt]# mv /mnt/Create_Vm.sh /usr/sbin/ ##将文件移动到可执行目录下
[root@foundation14 mnt]# Create_Vm.sh node ##文件移动后可用相对路径执行
二.删除,拷贝虚拟机相关配置文件并恢复虚拟机
0.实验前的准备
(1)将前端复制文件备份
[root@foundation14 images]# cd /etc/libvirt/qemu/ ##位置移动到前端配置文件位置
[root@foundation14 qemu]# ls
desktop.xml LULUBAO.xml networks server.xml
[root@foundation14 qemu]# cp LULUBAO.xml /mnt/ ##并复制
(2)将后端存储文件删除或移动并查看确认前后端文件均以保存
[root@foundation14 qemu]# cd /var/lib/libvirt/images ##位置移动到后端存储文件位置(硬盘)
[root@foundation14 images]# ls
generic.qcow2 rh124-desktop-vdb.ovl rh124-server-vdb.ovl
node3.qcow2 rh124-desktop-vdb.qcow2 rh124-server-vdb.qcow2
node.qcow2 rh124-desktop.xml rh124-server.xml
rh124-desktop-vda.ovl rh124-server-vda.ovl
rh124-desktop-vda.qcow2 rh124-server-vda.qcow2
[root@foundation14 images]# mv generic.qcow2 /mnt/ ##移动或删除
rh124-desktop-vda.qcow2 rh124-server-vda.qcow2
[root@foundation14 images]# cd /mnt/ ##查看复制前端和后端文件
[root@foundation14 mnt]# ls
generic.qcow2 LULUBAO.xml
1.删除虚拟机
[root@foundation14 mnt]# virsh undefine LULUBAO ##删除虚拟机 (删除虚拟机前端管理,不会删除存储文件。因为我们在实验准备阶段已经移除了硬盘文件,所以此时虚拟机已经彻底删除。)
Domain LULUBAO has been undefined
2.恢复虚拟机
(0)将硬盘恢复到系统保存虚拟机硬盘文件的位置
[root@foundation14 mnt]# mv /mnt/generic.qcow2 /var/lib/libvirt/images/ ##将硬盘文件移动到硬盘文件位置
(1)用前端管理文件暂时性恢复虚拟机(关闭后会消失),恢复后虚拟机是运行状态
[root@foundation14 mnt]# virsh create LULUBAO.xml ##用前端文件暂时性恢复虚拟机
Domain LULUBAO created from LULUBAO.xml
Force off 虚拟机后 虚拟机就不见了
(2)用前端管理文件永久性恢复虚拟机(关闭后不会消失)
[root@foundation14 mnt]# virsh define LULUBAO.xml ##用前端文件永久性恢复虚拟机
Domain LULUBAO defined from LULUBAO.xml
三.虚拟机的基础管理命令
1.
[root@foundation14 images]# virsh list ##列出正在运行的虚拟机
Id Name State
---------------------------------------------
2.
[root@foundation14 images]# virsh list --all ##列出所有虚拟机
Id Name State
----------------------------------------------------
- desktop shut off
- LULUBAO shut off
- server shut off
3.
[root@foundation14 images]# virt-viewer 虚拟机名字 ##显示虚拟机
4.
[root@foundation14 images]# virsh shutdown 虚拟机名 ##正常关闭指定虚拟机
Domain LULUBAO is being shutdown
5.
[root@foundation14 images]# virsh destroy 虚拟机名 ##强行关闭指定虚拟机
Domain LULUBAO destroyed
四.虚拟机快照
相当于复制虚拟机硬盘但大小很小,不占用空间,对快照进行修改不影响被照的对象。操作成本低,不会对重要服务器造成不可挽回的影响。
在使用快照时,不能使用制作快照原型虚拟机硬盘(且不能对快照使用快照)。
在使用快照时,读取的时母盘信息,所以离开母盘信息的快照是没有意义的。
0.实验前的准备
(1)为防止改变母盘影响快照,可以删除母盘对应的前端管理文件
(2)重命名母盘方便管理
[root@foundation14 images]# mv generic.qcow2 vm_strorage.qcow2 ##将母盘重命名
1.快照并用新建快照新建虚拟机
(1)图形中
1>快照
[root@foundation11 images]# qemu-img create -f qcow2 -b vm_strorage.qcow2 node1_snap.qcow2 ##将一个硬盘快照并命名
Formatting 'node1_snap.qcow2', fmt=qcow2 size=8589934592 backing_file='vm_strorage.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
2>查看快照大小(证明快照真的很小 不占用很多存储空间)
[root@foundation11 images]# du -sh node1_snap.qcow2 ##查看快照大小 很小
196K node1_snap.qcow2
3>在虚拟机管理器中用快照新建虚拟机
(2)shell脚本命令
[root@foundation14 images]# vim Createvm.sh ##编写脚步文件
#!/bin/bash ##命令运行环境的指定
#qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_strorage.qcow2 \
#/var/lib/libvirt/images/$1.qcow2 &> /dev/null ##快照并把所有内容删除
#echo success ##打印'success'
#
#virt-install \ ##安装虚拟机
#--name $1 \
#--ram 1024 \
#--file /var/lib/libvirt/images/$1.qcow2 \
#--file-size 8 \
#--import &> /dev/null & ##导入
[root@foundation14 images]# chmod +x Createvm.sh ##加执行权限
[root@foundation14 images]# ./Createvm.sh work1 ##执行
2.reset虚拟机(shell脚本命令)
[root@foundation14 images]# vim Rester.sh ##编写脚本文件
#!/bin/bash
#virsh destory $1 &> /dev/null ##关闭虚拟机
#rm -fr /var/lib/libvirt/images/$1.qcow2 ##删除建立虚拟机的快照
#
#qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_strorage.qcow2 \
#/var/lib/libvirt/images/$1.qcow2 &> /dev/null ##快照
#
#echo success
#
#virsh start $1 &> /dev/null ##打开虚拟机
#
#virt-viewer $1 &> /dev/null & ##显示虚拟机(并在后台运行)
[root@foundation14 images]# chmod +x Rester.sh
[root@foundation14 images]# ./Rester.sh work1
四.排错方法
1.
[root@foundation14 images]# file work1.qcow2 ##查看文件类型 可以看出他是一个快照
work1.qcow2: QEMU QCOW Image (v3), has backing file (path /var/lib/libvirt/images/vm_strorage.qcow2), 8589934592 bytes
2.
[root@foundation14 images]# sh -x ./Createvm.sh work1 ##查看脚本运行进程(同时运行程序)
+ qemu-img create -f qcow2 -b /var/lib/libvirt/images/vm_strorage.qcow2 /var/lib/libvirt/images/work1.qcow2
+ echo success
success
+ virt-install --name work1 --ram 1024 --file /var/lib/libvirt/images/work1.qcow2 --file-size 8 --import