资讯动态

Ubuntu宿主机部署KVM并搭建Rocky Linux虚拟机完整指南

发布时间:2026/9/19 1:52:27 来源:尧图企业网站定制
我最早接触KVM是几年前在一台旧服务器上折腾虚拟化当时图省事用的是VirtualBox结果生产环境一压测就暴露出一堆性能问题。后来换了KVM才真正理解“Linux原生的虚拟化方案”意味着什么——它不像VMware那样带着一层厚重的翻译官而是让虚拟机直接和硬件打交道。这篇东西主要写给那些想在Ubuntu宿主机上部署KVM、然后用命令行或图形界面搭建Rocky Linux虚拟机的朋友我会把从环境检查、组件安装、虚拟机创建到网络配置的完整链路都过一遍中间穿插我踩过的坑和调优经验尽量让你照着操作就能跑通。1. 核心设计思路为什么选KVM而不是其他虚拟化方案1.1 KVM的技术定位与优势KVMKernel-based Virtual Machine从名字就能看出来它是内核级别的虚拟化模块。从Linux 2.6.20开始KVM就被合入内核主线这意味着你只要装了现代Linux发行版KVM模块就在内核里躺着需要的时候加载一下就行。它做的事情本质上是把CPU的硬件虚拟化能力Intel VT-x/AMD-V暴露给用户空间配合QEMU完成设备模拟从而跑起完整的客户机系统。很多新手会纠结KVM、QEMU、libvirt这三者的关系我简单梳理一下KVM是内核模块负责CPU和内存的虚拟化QEMU是用户态程序负责模拟网卡、磁盘、USB等设备libvirt是一套管理API提供virsh、virt-manager这些上层工具帮你用XML描述虚拟机配置统一管理生命周期。三者的关系有点像发动机、变速箱和方向盘——KVM提供核心动力QEMU负责传动libvirt让驾驶员操作。相比VMware和VirtualBoxKVM在Linux环境下的优势非常明显性能损耗低虚拟机直接执行特权指令几乎不需要二进制翻译CPU密集型负载的损耗可以控制在5%以内。内存管理高效支持KSM内核同页合并多个相似的虚拟机内存页面可以合并超量分配内存时优势巨大。成本为零完全开源不需要购买授权也不存在vSphere那套复杂的许可体系。管理灵活virsh命令行工具配合XML配置可以轻松实现脚本化批量运维这是图形化工具很难做到的。1.2 场景适用性分析从实验环境到生产环境KVM适用的场景跨度很大。如果你只是在自己电脑上装个虚拟机玩玩KVM确实不如VirtualBox方便但对Ubuntu用户来说KVM开箱即用的特性足以弥补这一点。如果你需要跑测试环境、CI流水线、甚至是小规模的生产服务器KVM的稳定性和性能会让你非常放心。我见过不少团队把KVM当作轻量级的私有云底座配合libvirt的存储池、网络池功能在一台物理机上跑十几个隔离的Linux虚拟服务器。相比DockerKVM提供的是完整的硬件虚拟化边界可以跑不同内核版本的系统甚至Windows客户机这是容器方案无法替代的。不过也要说清楚KVM本身只提供虚拟化能力像在线迁移、高可用、快照管理这些高级功能需要搭配libvirt、oVirt或Proxmox VE这类管理平台才能用得更顺手。如果只是单机需求直接用virt-manager图形界面就够了完全不需要上重型管理平台。2. 环境准备与硬件检查部署前必须确认的3件事2.1 确认CPU虚拟化支持在安装KVM之前首先要确认CPU是否支持硬件虚拟化。这个检查非常简单在Ubuntu终端里执行grep -E -c (vmx|svm) /proc/cpuinfo如果输出结果大于0说明CPU支持虚拟化。其中vmx代表Intel的VT-xsvm代表AMD的Virt。如果输出是0你需要进入BIOS/UEFI设置找到Intel Virtualization Technology或SVM Mode选项将其启用保存重启后再检查一次。我碰到过一台老旧笔记本CPU明明是支持的但grep就是抓不到vmx标志最后发现是BIOS里的虚拟化选项默认是Disabled。这种问题在品牌机的OEM主板上特别常见一定不能跳过这一步。另外还要确认KVM模块是否已经加载lsmod | grep kvm正常情况下会看到kvm和kvm_intel或kvm_amd两个模块。如果没有手动加载sudo modprobe kvm_intel2.2 磁盘与内存的合理规划KVM虚拟机对宿主机资源的占用是实打实的不像容器那样可以共享内核。建议宿主机内存至少8GB起步如果打算同时跑两台以上虚拟机16GB才算舒适区间。磁盘方面除了宿主机系统占用的空间每台虚拟机至少预留20~30GB的镜像空间。这里要特别提醒虚拟机的磁盘类型有两种选择qcow2和raw。qcow2支持写时复制、快照和压缩文件小适合日常使用raw的读写性能稍好但会占用实际大小。我个人的习惯是测试环境用qcow2生产环境用raw配合LVM逻辑卷这样既兼顾性能又方便扩容。磁盘规划还需要考虑I/O性能的隔离。如果宿主机有多块物理磁盘最好把系统盘和虚拟机镜像分散到不同磁盘上避免虚拟机的密集读写拖垮宿主机。有条件的话SSD或NVMe盘会让虚拟机体验有质的提升。2.3 网络模式选择NAT、桥接还是macvtap这是部署KVM时最让人头疼的部分。KVM默认安装后会自动创建名为virbr0的虚拟网桥提供NAT网络虚拟机可以访问外网但外部无法直接访问虚拟机。如果你只是做测试NAT够用了。但如果你想让虚拟机对外提供服务或者希望虚拟机和宿主机在同一局域网内就需要用桥接模式。桥接的工作原理是把宿主机的物理网卡扔进一个网桥里虚拟机的虚拟网卡也挂在同一网桥上这样虚拟机就像一台独立的物理机一样参与局域网通信。还有一种macvtap模式它直接让虚拟机的虚拟网卡绑定到物理网卡上性能更好但宿主机和虚拟机之间无法直接通信这是个坑后面我会详细展开。3. Ubuntu上安装KVM图形化与命令行两种方式3.1 使用virt-manager图形化安装Ubuntu的KVM安装简单到不像话用apt就能一次搞定sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager这里简单解释一下每个包的作用qemu-kvm核心的QEMU模拟器KVM的前端。libvirt-daemon-systemlibvirt守护进程和配置文件负责管理虚拟机生命周期。libvirt-clients包含virsh、virt-host-validate等命令行工具。bridge-utils网桥管理工具提供brctl命令。virtinst包含virt-install命令用来自动化创建虚拟机。virt-manager图形化管理界面。装完之后把当前用户加入libvirt和kvm用户组否则普通用户操作虚拟机需要sudosudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER newgrp libvirt然后启动libvirtd服务并设为开机自启动sudo systemctl enable --now libvirtd验证一下安装状态virsh list --all如果输出一个空的列表且没有报错说明libvirt已经正常工作。图形界面这边直接在应用菜单里搜索“Virtual Machine Manager”打开点击左上角的电脑图标选择“Create a new virtual machine”然后按照向导选择本地ISO镜像、分配内存和CPU、设置磁盘大小一路下一步就能完成虚拟机创建。virt-manager对新手友好而且在图形界面里可以很方便地调整硬件配置查看虚拟机的显卡输出。3.2 使用virt-install命令行自动化创建如果你习惯命令行或者需要批量创建虚拟机virt-install是更好的选择。下面是我常用的创建Rocky Linux虚拟机命令模板sudo virt-install \ --name rocky9 \ --memory 4096 \ --vcpus 4 \ --disk path/var/lib/libvirt/images/rocky9.qcow2,size40,busvirtio,formatqcow2 \ --cdrom /home/user/iso/Rocky-9.5-x86_64-dvd.iso \ --os-variant rocky9.5 \ --network networkdefault \ --graphics vnc,listen0.0.0.0 \ --noautoconsole各个参数的含义--name虚拟机名称必须是唯一的。--memory内存大小单位MB。--vcpus虚拟CPU核心数。--disk磁盘配置path指定镜像文件路径size指定磁盘大小GBbus推荐用virtio以获得更好的性能format选qcow2。--cdrom安装介质路径这里指到本地ISO文件。--os-variant指定操作系统类型virt-install会根据这个参数优化虚拟机的设备配置。可以先执行osinfo-query os查看可用的系统类型。--network网络类型networkdefault表示使用virbr0 NAT网络也可以指定为bridgebr0使用桥接。--graphics图形输出方式VNC监听在0.0.0.0方便远程连接。--noautoconsole创建后不自动打开控制台适合远程操作场景。执行之后虚拟机就进入了安装过程。用VNC客户端连接到宿主机的指定端口默认5900就能看到Rocky Linux的安装界面。3.3 创建后的虚拟机管理命令创建不是终点日常管理才是重点。virsh命令是KVM运维工具库里的瑞士军刀virsh list --all # 查看所有虚拟机及其状态 virsh start rocky9 # 启动虚拟机 virsh shutdown rocky9 # 优雅关机 virsh destroy rocky9 # 强制断电慎用 virsh reboot rocky9 # 重启虚拟机 virsh suspend rocky9 # 挂起 virsh resume rocky9 # 恢复 virsh autostart rocky9 # 设置开机自启如果想开机自动启动虚拟机virsh autostart是很有用的生产环境常常配合物理机重启来自动拉起虚拟机。取消自启用virsh autostart --disable rocky9。要知道虚拟机当前的资源使用情况可以用virsh vcpuinfo rocky9 virsh dommemstat rocky9如果虚拟机没有安装guest agent内存状态可能无法完整获取建议在客户机里安装qemu-guest-agent这样宿主机可以拿到更准确的资源监控数据。4. Rocky Linux客户机安装全流程从ISO到可用系统4.1 官方ISO下载与校验Rocky Linux的ISO镜像在官方网站rockylinux.org就能下载选择DVD或Minimal版本。DVD版自带图形安装环境适合新手Minimal版体积更小安装完成后只有命令行界面适合服务器场景。下载ISO后务必校验文件完整性。SHA256校验是标准做法sha256sum Rocky-9.5-x86_64-dvd.iso把输出的哈希值和官网提供的校验值对比如果不一致说明文件损坏或下载不完整强行使用会导致安装中途报错。这个坑我栽过一次下载中断后网络自动续传的ISO在安装时莫名其妙地卡住排查半天才发现是镜像损坏。ISO文件建议统一放在一个目录里比如/home/user/iso方便virt-install引用和管理。4.2 基于virt-manager的Rocky Linux安装步骤在virt-manager中创建Rocky Linux虚拟机步骤如下点击“New VM”选择“Local install media (ISO image or CDROM)”浏览选到Rocky ISO。操作系统类型里如果工具识别不出来手动搜索“Rocky Linux”相关选项或者选择“Generic Linux”兜底。内存和CPU按需分配最低建议2GB内存、2核CPU如果要在里面跑数据库或编译器最好4GB起。磁盘大小先分配30GB格式保持默认的qcow2即可后续不够可以扩容。最后一步确认配置在“Customize configuration before install”前打勾可以在安装前微调显卡、网卡、磁盘总线等参数。常见调整是把磁盘总线改成VirtIO网卡设备模型也改成virtio性能会更好。点击Finish虚拟机启动并进入Rocky安装引导。Rocky Linux的安装过程跟RHEL、CentOS一脉相承Anaconda安装器提供图形和文本两种模式。分区的部分可以用向导自动分区也可以手动配置。服务器的建议是单独划一个/boot分区1GB足以根分区用LVM方便以后扩容。安装过程中的软件选择新手建议勾选带图形界面的“Workstation”或“Server with GUI”熟悉之后再用Minimal减小占用。我通常在“Software Selection”里直接选“Minimal Install”Ubuntu上远程SSH管理更符合我的运维习惯。4.3 客户机初始化配置Rocky安装完成后重启进入系统第一件事就是配置网络。Rocky Linux从RHEL 9开始默认用NetworkManager管理网络。用nmcli查看当前网卡状态nmcli device status nmcli connection show默认情况下虚拟机通过DHCP从virbr0网段192.168.122.x获取IP。如果不想依赖DHCP可以设置静态IPsudo nmcli connection modify ens3 ipv4.addresses 192.168.122.50/24 sudo nmcli connection modify ens3 ipv4.gateway 192.168.122.1 sudo nmcli connection modify ens3 ipv4.dns 192.168.122.1 8.8.8.8 sudo nmcli connection modify ens3 ipv4.method manual sudo nmcli connection up ens3如果你有用到网桥网络静态IP的网关指向物理路由器的IPDNS用宿主机所在网络的配置即可。之后更新系统并安装常用工具sudo dnf update -y sudo dnf install -y vim wget curl net-tools qemu-guest-agent sudo systemctl enable --now qemu-guest-agentqemu-guest-agent强烈建议安装它会让宿主机和客户机之间有一个通信通道virsh domifaddr能直接获取虚拟机IPvirsh shutdown也能更优雅地执行而不是模拟按电源键。5. 网络配置深入从virbr0到桥接和macvtap5.1 理解默认NAT网络的工作机制安装完libvirt后系统会自动创建一个网桥virbr0IP是192.168.122.1。虚拟机通过这个网桥连接虚拟网络libvirt内置的dnsmasq负责DHCP和DNS服务。NAT模式下虚拟机发出的请求会经过宿主机的iptables规则做地址转换然后从物理网卡出去。查看NAT规则sudo iptables -t nat -L POSTROUTING -v你会看到类似这样的输出MASQUERADE all -- anywhere anywhere match-set libvirt-mgmt-vnet ...这条规则就是把虚拟机的私有IP转换成宿主机的物理网卡IP进行通信。NAT模式的优点是不需要额外配置装好就能用安全性也好——外部访问不到虚拟机。缺点就是你从外面无法直接连到虚拟机必须通过宿主机的端口转发。如果你只是自己SSH进去管理NAT够用但虚拟机要对外提供服务就得换方案。5.2 桥接模式配置让虚拟机成为“局域网中的一台主机”桥接模式的思路是创建一个新的Linux网桥br0把物理网卡口比如enp3s0的从属口加入br0虚拟机网卡也挂到br0上。这样一来物理网卡和虚拟网卡都在同一个二层网络中虚拟机拿到的IP会和宿主机同网段外部可以直接访问。在Ubuntu 22.04及以上版本网络配置推荐用netplan来做。假设你的物理网卡叫enp3s0编辑/etc/netplan/01-netcfg.yamlnetwork: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: false bridges: br0: interfaces: [enp3s0] dhcp4: true optional: true这里把物理网卡设为手动模式br0桥接它并开启DHCP。然后应用配置sudo netplan apply确认br0创建成功ip addr show br0如果输出中br0拿到了和原来enp3s0一样的局域网IP说明配置成功。之后创建虚拟机时网络参数改成一行为--network bridgebr0或者在virt-manager里选择“Bridge br0”虚拟机就接入局域网了。注意libvirt默认不允许普通用户使用桥接网络如果报权限错误需要编辑/etc/libvirt/qemu.conf把user和group注释掉改成root然后重启libvirtd。这个配置在生产环境中比较常见但有多用户场景要多留个心眼毕竟放开root权限给libvirt意味着所有能操作libvirt的用户都能管理虚拟机。5.3 macvtap模式与物理接口直通macvtap模式是在物理网卡上直接创建虚拟接口虚拟机通过这个接口直连物理网络性能比桥接更高因为绕过了网桥的软件转发。在virt-manager的虚拟网络里选择“macvtap”或者在创建虚拟机时指定--network typedirect,sourceenp3s0,source_modebridge但macvtap有个明显的坑宿主机无法直接与macvtap模式的虚拟机通信。这是因为macvtap接口的本地通信路径被设计成不经过物理网卡导致宿主机访问虚拟机IP会不通。解决办法是额外添加一个NAT网络接口或者创建虚拟网线比如ip link add一对veth让宿主机和虚拟机之间有一条单独的管理通道。这个坑在排查问题时特别容易让人怀疑人生我记得有次折腾到半夜最后查文档才知道是macvtap的固有特性。所以我的建议是追求简单稳定用桥接追求极致网络性能且宿主机与虚拟机之间不需要直接通信时用macvtap纯测试环境用NAT就够了。6. 虚拟机的性能调优与磁盘管理6.1 VirtIO驱动的价值KVM默认的虚拟设备类型可能偏保守要发挥最佳性能关键是把磁盘和网卡都改成VirtIO类型。VirtIO是一种半虚拟化设备规范客户机知道自己在虚拟化环境中与宿主机协作完成I/O操作避免了全模拟设备的指令翻译开销。创建Rocky虚拟机时磁盘总线选择VirtIO网卡设备模型选择virtio装完系统后磁盘性能可以获得20%~50%的提升网络PPS也有明显改善。如果创建时没有选择VirtIO在关机状态下可以在virt-manager的“Detail”里修改或者用virsh命令调整XML配置。6.2 磁盘扩容的完整操作磁盘空间不够了是虚拟机运营中迟早会遇到的事。qcow2磁盘扩容不复杂但有几个关键步骤容易出错。假设把rocky9的磁盘从40GB扩到80GB首先宿主机上执行sudo qemu-img resize /var/lib/libvirt/images/rocky9.qcow2 80G磁盘镜像的容量扩大了但客户机里面的分区还没有变大。启动虚拟机在客户机内执行Rocky/RHEL系sudo growpart /dev/vda 2 sudo pvresize /dev/vda2 sudo lvextend -l 100%FREE /dev/mapper/rl-root sudo xfs_growfs /这里假设根分区是LVM管理的xfs文件系统。如果文件系统是ext4最后一步换成sudo resize2fs /dev/mapper/rl-root。growpart是cloud-utils-growpart包提供的如果提示命令不存在先安装sudo dnf install cloud-utils-growpart磁盘扩容时客户机磁盘的写入一定要稳住扩容过程中断电会导致文件系统损坏。6.3 CPU热插拔与内存热添加KVM支持在不关机的情况下给虚拟机添加CPU和内存。这个功能在调整生产环境资源时很实用但有个条件客户机的操作系统也支持热插拔。Rocky Linux是支持的只需在创建虚拟机时把CPU模型设为host-passthrough并开启NUMA感知。用virsh命令在线添加CPU和内存的方法virsh setvcpus rocky9 --count 6 --live virsh setmem rocky9 8G --live如果反馈“Requested operation is not valid”说明客户机固件或配置不允许热插拔需要关机调整XML里的CPU定义。这些高级操作我建议先在一台测试虚拟机上验证不推荐直接在生产环境上手。7. 常见问题与排查技巧实录7.1 虚拟机无法获取IP地址这是KVM新手最常见的问题。虚拟机启动进入系统后ip addr看不到IPping不通外网。排查步骤按下面的顺序来先确认虚拟机的网络类型。如果是NAT网络检查宿主机上virbr0是否存在IP是否是192.168.122.1。如果virbr0不存在用virsh net-start default启动默认网络。再检查客户机内的网卡是否被NetworkManager接管nmcli device status如果网卡状态是“unmanaged”说明NetworkManager没有托管这块网卡需要手动操作sudo nmcli device set ens3 managed yes或者干脆用NetworkManager的nmcli device reapply ens3。最后确认防火墙。Rocky Linux默认开启firewalld可能拦截DHCP请求。临时关闭测试sudo systemctl stop firewalld如果关掉防火墙就通了再想办法在防火墙规则里放行而不是永久关防火墙安全不能偷懒。7.2 virt-manager无法连接QEMU/KVM打开virt-manager提示“Unable to connect to libvirt”这类错误通常是libvirt服务没有正常启动或用户没有访问权限。依次检查sudo systemctl status libvirtd sudo virsh list --all如果报权限错误确认当前用户是否在libvirt用户组中。如果用户组还没生效重新登出登录或执行newgrp libvirt。某些精简环境下缺少qemu-kvm包会导致libvirtd启动后找不到QEMU模拟器而静默失败这时执行virsh capabilities可能会提示“cannot find QEMU”。安装缺失的包即可sudo apt install qemu-kvm7.3 VNC连接花屏或黑屏安装Windows或某些Linux发行版时VNC画面卡在启动界面或花屏非常恼人。最有效的方法是调整显卡模型。在virt-manager里把Video改成“QXL”或“Virtio”分辨率会被正确识别。有些场景把显示协议从VNC换成SPICE后问题也会消失sudo virt-install ... --graphics spice如果真的在安装过程中黑屏且没有任何输出先试试调低虚拟机的分辨率或者改用--graphics none配文本模式安装sudo virt-install ... --graphics none --extra-args consolettyS0这种无图形安装对Zabbix监控服务器这类系统特别合适装完直接用SSH连。7.4 虚拟机磁盘性能异常虚拟机跑起来后磁盘读写比宿主机慢很多先别急着骂KVM大概率是设备驱动没选对。检查客户机内的磁盘设备名sudo dmesg | grep -i virtio如果看到的是sda而不是vda说明磁盘被识别成了SCSI设备驱动模式不是VirtIO。创建虚拟机时确保磁盘总线选择了VirtIO网卡设备模型也是virtio。性能不达标的话还应该检查宿主机磁盘剩余空间和I/O负载宿主机I/O已经占满的情况下虚拟机的性能自然上不去。7.5 宿主机重启后虚拟机不自动启动很多人在宿主机重启后发现虚拟机全部处于关闭状态慌得不行。其实这只是默认行为KVM不会像VMware那样默认拉起所有虚拟机。解决办法就是注册IEEE自动启动属性virsh autostart rocky9取消自动启动用virsh autostart --disable rocky9autostart配置保存在/etc/libvirt/qemu/autostart/目录里面是指向虚拟机XML配置的软链接。对需要常驻服务的虚拟机我建议全部设置autostart并在宿主机启动脚本里加上健康检查逻辑确保虚拟机真正起来了。8. 备份与快照实践8.1 使用virsh快照管理虚拟机状态快照是虚拟化最值钱的功能之一。KVM支持内部快照和外部快照其中内部快照是把虚拟机当前状态连同磁盘数据一起保存在磁盘镜像文件里。创建快照virsh snapshot-create-as rocky9 rocky-baseline 初始安装完成状态查看快照列表virsh snapshot-list rocky9回滚快照virsh snapshot-revert rocky9 rocky-baseline删除快照virsh snapshot-delete rocky9 rocky-baseline注意内部快照在磁盘文件非常大时操作会比较慢而且快照会占用磁盘空间。生产环境对磁盘I/O敏感的话推荐用外部快照配合LVM快照来做。8.2 备份虚拟机配置与磁盘镜像虚拟机XML配置是它的“户口本”丢了它虚拟机就“没身份”了。定期备份XMLvirsh dumpxml rocky9 /backup/rocky9.xml磁盘镜像处于开机状态时直接拷贝qcow2文件会得到不一致的数据建议关机或用快照备份。libvirt的存储管理也可以用virsh vol-download把虚拟磁盘导出成文件virsh vol-download --pool default --vol rocky9.qcow2 --file /backup/rocky9.qcow2恢复时用virsh vol-upload --pool default --vol rocky9.qcow2 --file /backup/rocky9.qcow2再多说一句虚拟机备份也要遵循“3-2-1”原则——3份数据副本2种不同存储介质1份异地保存。KVM的备份文件往往很大有条件的话用rsync定期同步到异地服务器或者用restic做去重增量备份。9. 脚本化批量创建虚拟机的经验谈9.1 批量创建流程的完整脚本当你要一次性部署多台同配置的Rocky虚拟机时手工一个个创建实在太浪费时间。写个脚本可以大幅提升效率。我用过两种路径一种是复制磁盘镜像后修改XML另一种是用virt-clone克隆虚拟机。virt-clone的用法sudo virt-clone --original rocky9 --name rocky9-web01 --auto-clone这个命令会把原虚拟机的磁盘连同配置一起复制一份生成新虚拟机rocky9-web01。--auto-clone会自动处理磁盘路径。之后只需对新虚拟机做IP和主机名的修改就可以上线。如果你需要从零批量创建也可以写一个循环脚本用到的是前面介绍的virt-install命令行#!/bin/bash for i in 01 02 03; do sudo virt-install \ --name rocky9-web$i \ --ram 4096 \ --vcpus 4 \ --disk path/var/lib/libvirt/images/rocky9-web$i.qcow2,size50,formatqcow2 \ --os-variant rocky9.5 \ --network bridgebr0 \ --graphics none \ --location http://mirror.rockylinux.org/mirror/9.5/BaseOS/x86_64/os/ \ --extra-args consolettyS0 kshttps://server/kickstart/rocky.ks done这里用了--location指定网络安装源而不是本地ISO配合Kickstart文件可以实现全自动安装。consolettyS0让你可以通过串口控制台查看安装日志非常适合无图形环境的批量部署。9.2 配置管理用Ansible管理多台虚拟机批量创建完虚拟机后续的配置管理如果还靠手动SSH那就和前功尽弃了。建议配合Ansible。把虚拟机IP加入Ansible inventory写几个playbook就能完成统一的软件安装、安全加固、文件分发。我在虚拟机创建后通常第一件事就是跑一个初始化playbook包含以下动作修改主机名配置时区和NTP创建运维账号并配置SSH密钥安装基础软件包关闭不需要的服务配置firewalld规则这样下来一台干干净净的Rocky虚拟机从克隆到可以投入使用控制在10分钟以内。对于维护几十台虚拟机的场景来说这个效率的提升是巨大的。10. 我的几条实战体会KVM这玩意儿说简单也简单装完包就能跑虚拟机说复杂也复杂网络、存储、性能、备份每一块都有很多讲究。我最后分享几个自己血泪教训换来的经验。第一不要让libvirt的默认配置偷懒。刚装好的KVM虽然能用但把磁盘和网卡改成VirtIO、开启CPU host-passthrough、给客户机装好guest-agent这几步做完虚拟机的体验会有质的飞跃。这些配置在安装之初就定好后面会省非常多事。第二网络方案一定要想清楚再动手。NAT、桥接、macvtap各有特点没有绝对的好坏。如果你不确定用哪个默认NAT做测试桥接做服务macvtap应该在充分了解它的限制之后再用。网络配置最怕想到哪改到哪改到最后自己都搞不清到底通不通。第三备份永远可以用不上但绝不能没有。快照、dumpxml、磁盘导出这“三件套”我建议每个KVM用户在部署虚拟机的第一天就养成习惯。遇到折腾坏了的虚拟机一条revert命令就把你从半夜加班的深渊里拉回来。我在实际运维中还有一个习惯每次新建虚拟机都会写一个README记录它是什么用途、部署了什么服务、IP是多少、快照点在哪。等虚拟机多了你就知道这个文档多救命了。系统不会替你记住这些只有自己留好线索。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价