KVM虚拟化-01
2021-06-22 本文已影响0人
你好_请关照
KVM全称:Kernel-based Virtual machine
KVM内存压缩技术: 相同的内容只占用1份内存,所以KVM虚拟机可以超迈,尤其是在做虚拟机克隆的时候。
环境要求:Centos7、4G 内存、开启CPU虚拟化
管理工具安装:yum install libvirt virt-install qemu-kvm -y
libvirt作用:虚拟机的管理软件
libvirt可管理:kvm、xen、qumu、lxc...
virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
qumu-kvm qumu-img(qcow2,raw)作用:管理虚拟机的虚拟磁盘
systemctl status libvirtd.service
systemctl enable libvirtd.service
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name c7 --memory 1024 --vcpus 1 --disk /opt/centos3.raw,format=raw,size=5 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
1.常用命令:
virsh list
virsh list --all 查看虚拟机
virsh reboot 重启虚拟机
virsh shutdown 关机
virsh destroy 拔电关机
virsh undefine 删除虚拟机
virsh define 导入虚拟机配置文件
virsh dumpxml 导出虚拟机的备份文件;举例:virsh dumpxml centos7 >c7.xml
virsh edit 修改虚拟机配置文件,此命令带语法检查功能
virsh domrename 重命名虚拟机
virsh suspend 挂起虚拟机
virsh resume 挂起后,重新恢复虚拟机
virsh vncdisplay 查看虚拟机短端口号
virsh autostart 设置虚拟机为开机自启,前提是systemctl status libvirtd.service 服务器是开机自启
virsh console 使用console 方式连接虚拟机
#开机自启,其实就是给虚拟机的配置文件设置软连接,当删除软连接后开机自启将失效,需要重新定义开机自启,存放软连接文件位置:/etc/libvirt/qemu/autostart
grubby --update-kernel=ALL --args="console=ttyS0,115200n8" #登录虚拟机,输入此修改内核参数的命令,重启虚拟机,使用virsh console 虚拟机名称 连接到虚拟机。
2.虚拟机磁盘格式:
raw:裸格式,占用空间比较大,不支持快照功能,不方便传输,性能较好,总50G,占用50G
qcow2:cow(copy on write )占用空间小,支持快照,性能比raw差一点,方便传输,总50G 占用2G
#qcow2格式创建虚拟机:
#区别于raw格式创建虚拟机:--disk /opt/wb02.qcow2,format=qcow2,这两个字段为qcow2,其他参数与raw格式创建虚拟机一样。
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name wb02 --memory 1024 --vcpus 1 --disk /opt/wb02.qcow2,format=qcow2,size=5 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
3.磁盘工具常用命令:
#查看虚拟硬盘信息:qemu-img info
qemu-img info cengos7.raw
#创建虚拟硬盘:qemu-img create
创建qcow2格式磁盘(创建在当前路径下): qemu-img create -f qcow2 centos7.qcow2 1G
创建raw格式磁盘(创建在当前路径下): qemu-img create c7.raw 1G
#对虚拟硬盘扩容:qume-img resize
#qcow2格式的虚拟磁盘只能扩容,不能缩容,raw格式的虚拟磁盘支持缩容,但是一般不建议缩容。
将centos7.qcow2磁盘文件扩容4G:qemu-img resize centos7.qcow2 +4G
将centos7.qcow2磁盘文件扩容到6G:qemu-img resize centos7.qcow2 6G
扩容raw格式的的磁盘文件: qemu-img resize c7.raw 5G
缩容rwa格式的虚拟磁盘(原有5G):qemu-img resize c7.raw 1G
#转换磁盘格式的命令 qemu-img convert
将raw格式的虚拟磁盘转换为qcow2格式:qemu-img convert -f raw -O qcow2 c7.raw c7.qcow2
#虚拟磁盘格式转换完成后,需要停机修改配置文件中的硬盘格式才能启用转换后的虚拟磁盘。
修改下面2行:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
4.快照管理:
创建快照: virsh snapshot-create-as wb01 --name 基础优化_ok
查看快照:virsh snapshot-list wb01
还原快照:virsh snapshot-revert wb01 --snapshotname 基础优化_ok
删除快照:virsh snapshot-delete wb01 test_ces
#raw不支持做快照,qcow2支持做快照,并且快照保存在qcow2的磁盘文件中。
5.完整克隆:
自动克隆:virt-clone -o wb01 -n lb01 --auto-clone
手动克隆:
#克隆的虚拟机不要有快照,直接cp过去的虚拟机如果有快照的话,无法启动。
cp lb01.qcow2 lb01-clone.qcow2
virsh dumpxml lb01 >lb01-clone.xml
mv lb01-clone.xml /etc/libvirt/qemu
vim /etc/libvirt/qemu/lb01-clone.xml
#修改虚拟机名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
virsh define lb01-clone.xml
virsh start lb01-clone
6.链接克隆:
#生成虚拟机磁盘文件
qemu-img create -f qcow2 -b /opt/wb01.qcow2 /opt/wb02.qcow2
cp /etc/libvirt/qemu/wb01.xml /etc/libvirt/qemu/wb02.xml
vim /etc/libvirt/qemu/wb02.xml
#修改虚拟机名字
#删除虚拟机uuid
#删除mac地址
#修改磁盘路径
virsh define wb02.xml
virsh list --all
virsh start wb02
[root@node01 /etc/libvirt/qemu]# virsh dumpxml wb01 | grep "qcow2"
<driver name='qemu' type='qcow2'/>
<source file='/opt/wb01.qcow2'/>
[root@node01 /etc/libvirt/qemu]# virsh dumpxml wb02 | grep "qcow2"
<driver name='qemu' type='qcow2'/>
<source file='/opt/wb02.qcow2'/>
<source file='/opt/wb01.qcow2'/> #基于wb01磁盘进行克隆。
[root@node01 /etc/libvirt/qemu]#
7.自动链接克隆脚本
#!/bin/bash
#new_kvm=$2
#old_kvm=$1
read -p "请输入被克隆的虚拟机名称:" old_kvm
read -p "请输入新的虚拟机名称:" new_kvm
old_kvm_disk=`virsh dumpxml wb01 | sed -r -n "s#(<source file=.)(.*)(./>)#\2#p" |tr -d " "`
old_kvm_disk_path=`dirname $old_kvm_disk`
qemu-img create -f qcow2 -b $old_kvm_disk $old_kvm_disk_path/${new_kvm}.qcow2
virsh dumpxml $old_kvm>/tmp/${new_kvm}.xml
#修改kv名称
sed -ri "s#(<name>)(.*)(</name>)#\1${new_kvm}\3#g" /tmp/${new_kvm}.xml
#删除虚拟机uuid
sed -i '/uuid/d' /tmp/${new_kvm}.xml
#删除mac地址
sed -ri '/mac address/d' /tmp/${new_kvm}.xml
#修改磁盘路径
sed -ri "s#(<source file=.)(.*)(./>)#\1/opt/${new_kvm}.qcow2\3#g" /tmp/${new_kvm}.xml
virsh define /tmp/${new_kvm}.xml
virsh start ${new_kvm}