菜鸟科技网

kvm管理命令有哪些常用操作及参数?

KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它将Linux内核转化为一个Type-1(裸金属) hypervisor,允许用户在单一物理服务器上运行多个虚拟机,KVM的管理命令是系统管理员日常操作虚拟化的核心工具,涵盖了虚拟机的创建、配置、启动、停止、迁移、监控等全生命周期管理,熟练掌握这些命令,能够显著提升虚拟化环境的运维效率和稳定性。

kvm管理命令有哪些常用操作及参数?-图1
(图片来源网络,侵删)

在KVM生态中,管理命令主要通过两种工具实现:一是virsh,基于libvirt库的命令行工具,功能全面且标准化,适合大多数场景;二是virsh的图形化前端virt-manager,以及基于qemu-kvm直接调用的qemu-imgqemu-system-x86_64等底层工具,前者提供可视化操作,后者则更侧重于底层镜像管理和虚拟机启动参数调试。virsh是最常用且功能最强大的命令行工具,本文将围绕virsh展开,并结合其他辅助命令进行详细说明。

虚拟机的创建是基础操作。virsh通过definecreate命令基于XML配置文件定义或启动虚拟机。virsh define vm01.xml会创建一个名为vm01的虚拟机配置但不启动,而virsh create vm01.xml则会立即启动虚拟机,XML配置文件定义了虚拟机的硬件规格,如vCPU数量(<vcpu>)、内存大小(<memory>)、磁盘镜像(<disk>,支持qcow2、raw等格式,可通过qemu-img create -f qcow2 disk01.qcow2 20G预先创建)、网络接口(<interface>,可选择桥接、NAT等模式)以及设备(如<controller><serial>等),创建后,可通过virsh list --all查看所有虚拟机状态(running、shut off、paused等),virsh start vm01启动虚拟机,virsh shutdown vm01正常关机,virsh destroy vm01强制关机(相当于物理机断电)。

虚拟机的管理与监控同样重要。virsh提供了丰富的子命令:virsh reboot vm01重启虚拟机,virsh suspend vm01暂停虚拟机,virsh resume vm01恢复虚拟机;virsh edit vm01可直接编辑虚拟机的XML配置并热更新部分参数(如内存、vCPU需在虚拟机支持热插拔的前提下);virsh dominfo vm01查看虚拟机详细信息(包括CPU使用率、内存占用等实时数据);virsh dommemstat vm01统计内存使用情况;virsh vcpuinfo vm01查看vCPU分配与执行情况,对于磁盘管理,virsh blockstats vm01 vda可获取磁盘vda的I/O统计信息(如读取/写入字节数、操作次数),而qemu-img info disk01.qcpy2则能查看磁盘镜像的格式、大小、集群大小等元数据。

虚拟机迁移是KVM的高级功能,分为实时迁移(Live Migration)和静态迁移(Offline Migration),实时迁移可在虚拟机运行状态下将其从一台物理机迁移到另一台,实现业务不中断。virsh迁移命令需结合libvirtd服务配置(确保节点间网络互通、共享存储或使用磁盘镜像复制),从源节点执行virsh migrate --live vm01 qemu+ssh://root@target_host/system,其中--live表示实时迁移,qemu+ssh指定传输协议和目标节点地址,迁移过程中可通过virsh domjobinfo vm01查看迁移进度,完成后在目标节点通过virsh list --all确认虚拟机状态,静态迁移则需先关闭虚拟机,然后复制虚拟机磁盘镜像和配置文件到目标节点,再通过virsh define重新定义。

kvm管理命令有哪些常用操作及参数?-图2
(图片来源网络,侵删)

网络管理方面,KVM默认提供default NAT网络,管理员可通过virsh net-list查看网络列表,virsh net-start default启动默认网络,virsh net-destroy default停止网络,若需自定义网络(如桥接模式),可创建XML网络配置文件(如network.xml),通过virsh net-define network.xml定义,再使用virsh net-autostart network设置开机自启,虚拟机网络接口的配置则在虚拟机XML的<interface>标签中定义,如<source bridge='br0'/>表示桥接到物理网卡br0

性能优化与故障排查也依赖管理命令,通过virsh schedinfo vm01查看虚拟机调度参数(如CPU权重、份额),调整<vcpu>placement属性可实现vCPU绑定到物理CPU核心,减少上下文切换,对于性能瓶颈,可使用top -p $(virsh qemu-monitor-command vm01 --hmp info | grep 'CPU' | awk '{print $3}' | cut -d'=' -f2)查看虚拟机进程的CPU占用,或通过iotop -p $(virsh domid vm01)监控磁盘I/O,故障时,virsh console vm01可进入虚拟机串口终端排查系统问题,virsh dumpxml vm01 > vm01_backup.xml则能备份虚拟机配置,防止误操作导致配置丢失。

相关问答FAQs

Q1: 如何在KVM中为运行中的虚拟机动态添加磁盘?
A1: 首先使用qemu-img create -f qcow2 /var/lib/libvirt/images/vm01_disk02.qcow2 10G创建新的磁盘镜像文件,然后通过virsh attach-disk vm01 /var/lib/libvirt/images/vm01_disk02.qcow2 vdb --type disk --driver qemu --subdriver qcow2 --persistent命令将磁盘动态挂载到虚拟机,其中vdb为虚拟机内识别的设备名,--persistent确保重启后配置生效,最后在虚拟机内部(如Linux系统)使用echo '- - -' > /sys/class/scsi_host/host0/scan(或类似命令)扫描新磁盘,再进行分区和格式化(如fdisk /dev/vdbmkfs.ext4 /dev/vdb1),最后挂载使用。

Q2: KVM虚拟机无法启动,提示“domain 'vm01' failed to start”,如何排查?
A2: 可按以下步骤排查:1. 检查虚拟机XML配置是否正确,执行virsh dumpxml vm01查看配置,确认磁盘路径(如/var/lib/libvirt/images/vm01.qcow2)是否存在且有读写权限,网络接口、内存、vCPU参数是否合理;2. 查看详细错误日志,执行virsh dominfo vm01journalctl -u libvirtd,重点关注/var/log/libvirt/qemu/vm01.log日志文件,通常包含启动失败的具体原因(如磁盘文件损坏、驱动加载失败、内存不足等);3. 尝试使用virsh create vm01.xml(临时启动)而非virsh define,观察是否有临时错误提示;4. 检查底层资源,如物理内存是否充足(free -h)、磁盘空间是否足够(df -h)、KVM模块是否加载(lsmod | grep kvm),若日志提示磁盘文件损坏,可尝试使用qemu-img check /var/lib/libvirt/images/vm01.qcow2检查镜像,或通过qemu-img commit修复qcow2镜像的快照问题。

kvm管理命令有哪些常用操作及参数?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇