一、虚拟机管理
virt-manager
##开启虚拟机管理器
virsh list
##显示正在运行的虚拟机
virsh list --all
##查看所有虚拟机(运行的和未运行的)
virsh start desktop
##打开虚拟机
virsh shutdown desktop
##正常关闭虚拟机(正常关机,有等待过程)
virsh destroy desktop
##强行关闭虚拟机
virt-viewer desktop
##显示虚拟机
二、自动安装虚拟机脚本的编写
mkdir scripts
##新建一个目录,在/mnt/(目录存放位置自己设定)
vim vm_create.sh
##新建文件(文件名自定),编写脚本
vim vm_create.sh
#!/bin/bash ##在什么环境下运行
virt-install \ ##安装虚拟机命令
--cdrom /home/kiosk/Desktop/rhel-server-7.3-x86_64-dvd.iso \ ##设置安装镜像路径
--memory 1000 \ ##内存大小
--vcpus 1 \ ##cpu核数
--disk /var/lib/libvirt/images/$1.qcow2,size=8,bus=virtio \ ##硬盘设置(存放路径,大小,类型是虚拟化输入输出)
--network bridge=br0,model=virtio \ ##网络模式(桥接,虚拟化输入输出)
--name=$1 &>/dev/null & ##虚拟机名称,(打入后台,且将报错信息扔进垃圾箱)
注意: " \ " 为换行符号,前面用空格隔开
测试:
sh vm_create.sh node1
##建立虚拟机
三、虚拟机的迁移
虚拟机两部分:
client.qcow2 硬盘文件
client.xml 硬盘信息文件
注意:硬盘信息文件修改后 systemctl restart libvirtd
第一步:
从另一个主机上发现一个已经安装好的虚拟机
克隆步骤:
假设别人主机中存在已经安装好的虚拟机client
第二步:
复制虚拟机所需的两个文件
cd /mnt
scp root@172.25.254.10:/var/lib/libvirt/images/client.qcow2
scp root@172.25.254.10:/etc/libvirt/qemu/uc.xml /mnt/client.xml
ls /mnt/
##查看获取的两个文件是否存在
virsh create client.xml
##创建虚拟机
注意:
将client.qcow2移到绝对路径:/var/lib/libvirt/images下,否则会报错
虚拟机的恢复:
virsh create /mnt/client.xml
##用虚拟机硬件文件一次性打开虚拟机,关闭消失
virsh define /mnt/client.xml
##永久恢复
注意:
1.只拷硬盘文件的话,在自己主机点击创建一个虚拟机,选择"import existing disk image",关闭后虚拟机消失
2.硬盘文件client.qcow2最终必须在/var/lib/libvirt/images/
3.硬件信息client.xml可以在自己设定目录
四、虚拟机的快照
注意:
当用快照时,原始的虚拟机就不要动,否则快照失效
当快照错乱崩溃时,删除,重新对client.qcw2进行快照,与desktop的reset原理类似
操作:
1.qemu-img create -f qcow2 -b /var/lib/libvirt/images/client.qcow2 /var/lib/libvirt/images/node1.qcow2
2.把生成的快照导入到虚拟机图形控制器中
3.快照虚拟机可以使用
4.快照虚拟机损坏,那么删除快照重新制作快照
5.当使用快照后请不要对母作任何操作
当使用快照后请不要对母盘作任何操作
自动安装虚拟机快照脚本的编写
mkdir scripts
##新建一个目录,在/mnt/(目录存放位置自己设定)
vim vm_snapshot.sh
##新建文件(文件名自定),编写脚本
注意:$1表示母盘名称,$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 $2 \
--memory 1000 \
--vcpus 1 \
--disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--import &> /dev/null &
测试:
sh vm_snapshot.sh client node2
五、命令删除虚拟机
两步操作:
virsh undefine 虚拟机名称
rm -rf /var/lib/libvirt/images/虚拟机硬盘.qcow2