KVM虚拟化平台部署与虚拟机管理实战
前言本文主要介绍在Linux环境下如何从零开始部署KVM虚拟化平台并通过libvirt和virsh命令行工具创建和管理虚拟机。实验涵盖了虚拟化环境检查、网桥配置、基于COWCopy-On-Write技术的克隆盘创建以及常用的虚拟机生命周期管理命令。实验主机信息主机名称IP地址配置ecs192.168.88.1252 CPU, 4G 内存一、虚拟化环境准备1.1 检查CPU虚拟化支持在安装KVM之前需要确认CPU是否支持硬件虚拟化Intel VT-x 或 AMD-V。[rootecs ~]# lscpu | grep -P vmx|svm Flags: ... vmx ...如果输出中包含vmxIntel或svmAMD则表示CPU支持虚拟化。1.2 安装KVM及相关服务通过dnf或yum安装必要的软件包包括QEMU模拟器、libvirt守护进程及驱动。[rootecs ~]# dnf install -y qemu-kvm libvirt-daemon libvirt-client \ libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq1.3 启动libvirt服务并验证[rootecs ~]# systemctl enable --now libvirtd [rootecs ~]# lsmod | grep kvm kvm_intel 174841 6 kvm 578518 1 kvm_intel [rootecs ~]# virsh version Compiled against library: libvirt 8.0.0 Using library: libvirt 8.0.0 Using API: QEMU 8.0.0 Running hypervisor: QEMU 6.2.0当看到kvm和kvm_intel或kvm_amd模块已加载且virsh version正常输出时表示虚拟化平台已成功部署。二、配置虚拟网络NAT网桥为了给虚拟机提供网络访问能力我们需要创建一个NAT模式的虚拟网桥。2.1 创建网桥配置文件创建一个名为vbr.xml的配置文件定义网桥名称、IP地址段及DHCP范围。[rootecs ~]# vim vbr.xml network namevbr/name forward modenat/ bridge namevbr stpon delay0/ ip address192.168.100.254 netmask255.255.255.0 dhcp range start192.168.100.128 end192.168.100.200/ /dhcp /ip /network2.2 网桥管理命令示例# 根据xml文件定义网络 [rootecs ~]# virsh net-define vbr.xml Network vbr defined from vbr.xml # 设置开机自启动 [rootecs ~]# virsh net-autostart vbr Network vbr marked as autostarted # 启动网桥 [rootecs ~]# virsh net-start vbr Network vbr started # 验证状态 [rootecs ~]# virsh net-list --all Name State Autostart Persistent ----------------------------------------- vbr active yes yes # 查看网桥接口 [rootecs ~]# ifconfig vbr vbr: flags4099UP,BROADCAST,MULTICAST mtu 1500 inet 192.168.100.254 netmask 255.255.255.0 ... ...常用网桥管理命令virsh net-edit vbr修改网桥配置virsh net-destroy vbr关闭网桥virsh net-undefine vbr删除网桥定义三、创建虚拟机基于COW技术为了节省磁盘空间并实现快速部署我们采用Copy-On-Write (写时复制)技术基于一个基础镜像创建虚拟机磁盘。3.1 准备基础镜像将基础镜像如cirros.qcow2复制到libvirt默认镜像目录并上传相关XML配置文件。# 从远程主机同步文件 [rootserver s4]# rsync -av public/{cirros.qcow2,vmbase.xml} 192.168.88.125:/root/ # 拷贝基础模板盘到镜像存储目录 [rootecs ~]# cp cirros.qcow2 /var/lib/libvirt/images/ [rootecs ~]# cd /var/lib/libvirt/images/3.2 创建克隆磁盘使用qemu-img命令创建后端文件指向cirros.qcow2的克隆盘大小为20G。[rootecs ~]# qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G Formatting vmhost.img, fmtqcow2 cluster_size65536 extended_l2off ... ... [rootecs ~]# qemu-img info vmhost.img image: vmhost.img file format: qcow2 virtual size: 20 GiB (21474836480 bytes) disk size: 196 KiB cluster_size: 65536 backing file: cirros.qcow2 backing file format: qcow23.3 修改虚拟机配置文件复制并修改虚拟机配置文件重点修改虚拟机名称、磁盘路径和网络桥接。[rootecs ~]# cp vmbase.xml vmhost.xml [rootecs ~]# vim vmhost.xml修改以下关键字段namevmhost/name !-- 修改虚拟机名称 -- memory unitKB1048576/memory !-- 内存 1G -- vcpu placementstatic2/vcpu !-- CPU 2核 -- source file/var/lib/libvirt/images/vmhost.img / !-- 修改磁盘路径 -- source bridgevbr / !-- 修改网桥名称 --3.4 创建并启动虚拟机# 定义虚拟机 [rootecs ~]# virsh define vmhost.xml Domain vmhost defined from vmhost.xml # 查看虚拟机状态 [rootecs ~]# virsh list --all Id Name State --------------------------- - vmhost shut off # 启动虚拟机 [rootecs ~]# virsh start vmhost Domain vmhost started # 进入虚拟机控制台 [rootecs ~]# virsh console vmhost # 按两次回车进入 Connected to domain vmhost Escape character is ^] login as cirros user. default password: gocubsgo. use sudo for root. cirros login:退出console使用快捷键Ctrl ]四、虚拟机常用管理命令4.1 生命周期管理命令描述virsh list [--all]列出当前运行或所有的虚拟机virsh start vm启动虚拟机virsh shutdown vm正常关闭虚拟机需安装ACPI服务virsh destroy vm强制关闭虚拟机断电virsh define file.xml根据XML文件创建虚拟机配置virsh undefine vm删除虚拟机配置不删除磁盘文件virsh console vm连接虚拟机串行控制台示例操作# 创建 [rootecs ~]# virsh define vmhost.xml # 关闭 [rootecs ~]# virsh shutdown vmhost # 强制关闭模拟内核崩溃场景 [rootecs ~]# virsh destroy vmhost # 删除 [rootecs ~]# virsh undefine vmhost4.2 配置与状态查看命令描述virsh edit vm修改虚拟机配置virsh autostart vm设置虚拟机随宿主机自启virsh dominfo vm查看虚拟机摘要信息virsh domiflist vm查看虚拟机网卡列表virsh domblklist vm查看虚拟机磁盘列表示例操作# 查看详细信息 [rootecs ~]# virsh dominfo vmhost # 修改配置 [rootecs ~]# virsh edit vmhost # 设置开机自启 [rootecs ~]# virsh autostart vmhost # 查看网卡信息 [rootecs ~]# virsh domiflist vmhost Interface Type Source Model MAC ----------------------------------------------------------- vnet0 bridge vbr virtio 52:54:00:14:25:4a # 查看磁盘信息 [rootecs ~]# virsh domblklist vmhost Target Source ---------------------------------------------- vda /var/lib/libvirt/images/vmhost.img五、总结云计算与KVM通过本次实验我们完成了KVM虚拟化平台的搭建并掌握了一个虚拟机从磁盘创建、配置定义到启动运行的完整流程。云计算的三种服务模式模式全称说明IaaS基础设施即服务提供计算、网络、存储等基础资源如ECS云服务器PaaS平台即服务提供应用开发和部署平台如数据库、中间件SaaS软件即服务直接提供应用程序如企业邮箱、在线文档云部署模式公有云第三方提供商通过互联网向公众提供服务如阿里云、腾讯云。私有云专供一个企业或组织内部使用数据安全性更高。混合云结合私有云和公有云允许数据和应用在两者间共享兼具安全与弹性。附参考资料libvirt 官网文档希望这篇笔记对你有帮助如果有任何问题欢迎在评论区交流。