KVM虚拟化命令有哪些常用操作?

KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它将Linux内核转化为一个Type-1(裸金属) hypervisor,允许用户在同一物理服务器上运行多个隔离的虚拟机(VM),KVM依赖于CPU的硬件虚拟化扩展(如Intel VT-x或AMD-V),并通过QEMU(Quick Emulator)提供设备模拟和I/O虚拟化,以下是KVM虚拟化中常用的命令及其详细说明,涵盖虚拟机管理、网络配置、存储管理等多个方面,并通过表格形式汇总关键命令,最后附上相关FAQs。

kvm虚拟化命令
(图片来源网络,侵删)

KVM虚拟机管理命令

KVM虚拟机的管理通常通过virsh命令行工具实现,它是libvirt库的命令行接口,支持虚拟机的创建、启动、停止、迁移等操作。

虚拟机生命周期管理

  • 列出所有虚拟机
    virsh list --all
    显示所有虚拟机的名称、ID和状态(running/shut off/paused等)。

  • 启动虚拟机
    virsh start <vm_name>
    启动指定的虚拟机,例如virsh start ubuntu-vm

  • 关闭虚拟机(正常关机):
    virsh shutdown <vm_name>
    向虚拟机发送关机信号,需在虚拟机内部安装acpid服务才能正常关机。

    kvm虚拟化命令
    (图片来源网络,侵删)
  • 强制关闭虚拟机(相当于物理机断电):
    virsh destroy <vm_name>
    立即停止虚拟机,可能导致数据未保存,需谨慎使用。

  • 挂起虚拟机
    virsh suspend <vm_name>
    暂停虚拟机运行,状态为paused,可通过virsh resume恢复。

  • 恢复挂起的虚拟机
    virsh resume <vm_name>

  • 删除虚拟机(仅删除配置,不删除磁盘文件):
    virsh undefine <vm_name>
    若需同时删除磁盘文件,需手动删除或使用--storage参数(需配置存储池)。

    kvm虚拟化命令
    (图片来源网络,侵删)

虚拟机配置与查看

  • 查看虚拟机配置信息
    virsh dumpxml <vm_name>
    以XML格式输出虚拟机的详细配置,包括CPU、内存、磁盘、网络等参数。

  • 编辑虚拟机配置
    virsh edit <vm_name>
    打开默认文本编辑器(如vi)修改虚拟机XML配置,修改后需重启虚拟机生效。

  • 查看虚拟机资源使用情况
    virsh dominfo <vm_name>
    显示虚拟机的CPU、内存、磁盘等资源占用信息。

  • 虚拟机控制台访问
    virsh console <vm_name>
    直接连接虚拟机的串口控制台,需在虚拟机配置中启用串口并设置终端类型为pty

虚拟机快照管理

快照用于保存虚拟机的某个时间点状态,便于后续恢复或回滚。

  • 创建快照
    virsh snapshot-create-as <vm_name> <snapshot_name> --description "snapshot description"
    virsh snapshot-create-as ubuntu-vm snap1 --description "pre-update snapshot"

  • 列出虚拟机所有快照
    virsh snapshot-list <vm_name>

  • 查看快照详情
    virsh snapshot-info <vm_name> <snapshot_name>

  • 恢复快照
    virsh snapshot-revert <vm_name> <snapshot_name>
    恢复虚拟机到指定快照状态,恢复前需关闭虚拟机。

  • 删除快照
    virsh snapshot-delete <vm_name> <snapshot_name>

KVM存储管理命令

KVM支持多种存储后端,如文件(qcow2、raw)、块设备、网络存储(NFS、iSCSI)等,通过virshqemu-img工具管理。

磁盘镜像管理

  • 创建磁盘镜像(qcow2格式,支持快照和压缩):
    qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-vm.qcow2 20G
    创建一个20GB的qcow2格式磁盘镜像。

  • 转换磁盘格式(如raw转qcow2):
    qemu-img convert -f raw -O qcow2 source.img target.qcow2

  • 调整磁盘大小(需在虚拟机内部扩展文件系统):
    qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
    磁盘容量增加10GB,虚拟机内需使用resize2fs(ext4)或xfs_growfs(XFS)扩容文件系统。

  • 查看磁盘镜像信息
    qemu-img info /var/lib/libvirt/images/ubuntu-vm.qcow2

存储池管理

存储池是存储资源的逻辑集合,如目录、LVM卷、iSCSI目标等。

  • 列出所有存储池
    virsh pool-list --all

  • 创建存储池(以目录为例):
    virsh pool-define-as --name dir-pool --type dir --target /data/kvm-pool
    定义名为dir-pool的目录存储池,目标路径为/data/kvm-pool

  • 启动存储池
    virsh pool-start dir-pool

  • 设置存储池自动启动
    virsh pool-autostart dir-pool

  • 删除存储池(需先停止并卸载):
    virsh pool-destroy dir-pool && virsh pool-undefine dir-pool

KVM网络管理命令

KVM支持多种网络模式,如NAT(默认)、桥接(bridge)、仅主机网络(host-only)等,通过virshbrctl工具管理。

虚拟网络管理

  • 列出所有虚拟网络
    virsh net-list --all

  • 查看虚拟网络配置
    virsh net-dumpxml default
    default是KVM默认的NAT网络名称。

  • 启动虚拟网络
    virsh net-start default

  • 停止虚拟网络
    virsh net-stop default

  • 删除虚拟网络
    virsh net-undefine default
    删除前需确保没有虚拟机使用该网络。

网桥配置

  • 查看网桥状态
    brctl show
    需安装bridge-utils工具包。

  • 创建网桥(例如br0):
    ip link add br0 type bridge && ip addr add 192.168.1.100/24 dev br0 && ip link set br0 up
    将物理网卡(如eth0)加入网桥:ip link set eth0 master br0

  • 删除网桥
    ip link set eth0 nomaster && ip link del br0

KVM常用命令汇总表

功能分类命令示例说明
虚拟机生命周期virsh list --all列出所有虚拟机状态
virsh start <vm_name>启动虚拟机
virsh destroy <vm_name>强制关闭虚拟机
虚拟机配置virsh dumpxml <vm_name>查看虚拟机XML配置
virsh edit <vm_name>编辑虚拟机配置
快照管理virsh snapshot-create-as <vm_name> <snap_name>创建快照
virsh snapshot-revert <vm_name> <snap_name>恢复快照
存储管理qemu-img create -f qcow2 <disk_path> <size>创建磁盘镜像
qemu-img resize <disk_path> +<size>扩展磁盘大小
virsh pool-list --all列出存储池
网络管理virsh net-list --all列出虚拟网络
brctl show查看网桥状态
性能监控virsh domblkstat <vm_name>查看虚拟机磁盘统计信息
virsh dommemstat <vm_name>查看虚拟机内存统计信息

相关问答FAQs

问题1:如何查看KVM虚拟机的实时资源占用情况(如CPU、内存使用率)?
解答:可通过以下方式查看:

  1. 使用virsh命令
    • virsh cpu-stats <vm_name>:查看CPU实时使用统计。
    • virsh memstat <vm_name>:查看内存使用统计。
  2. 使用tophtop:在宿主机上执行top -p $(virsh qemu-command-info <vm_name> | grep PID | awk '{print $2}'),直接查看虚拟机进程的资源占用。
  3. 安装virt-top工具yum install virt-top(CentOS/RHEL)或apt install virt-top(Ubuntu),运行virt-top可实时显示所有虚拟机的资源使用情况,类似top命令。

问题2:KVM虚拟机无法启动,提示“domain is not running”或“failed to allocate memory”,如何排查?
解答:此类问题通常与资源分配或配置错误相关,可按以下步骤排查:

  1. 检查虚拟机状态:执行virsh list --all确认虚拟机是否处于shut off或paused状态。
  2. 查看错误日志:通过virsh logcat <vm_name>或查看/var/log/libvirt/qemu/<vm_name>.log定位具体错误,如内存不足(failed to allocate memory)需检查宿主机内存是否充足;磁盘文件损坏需检查磁盘镜像文件是否存在或使用qemu-img check验证。
  3. 检查资源配置:使用virsh dumpxml <vm_name>查看CPU、内存配置是否超出宿主机限制,例如宿主机总内存为16GB,若虚拟机配置为32GB则无法启动。
  4. 检查存储池/网络:确认虚拟机关联的存储池是否已启动,网络配置是否正确(如NAT网络是否运行)。
  5. 尝试强制重启:若配置无问题,可尝试virsh undefine <vm_name>后重新定义虚拟机,或使用virsh reset <vm_name>强制重启虚拟机(可能导致数据丢失)。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/428414.html<

(0)
运维的头像运维
上一篇2025-10-27 17:42
下一篇 2025-10-27 17:48

相关推荐

  • 网页制作预算如何科学规划?

    网络网页开发的费用预算是一个系统性工程,需要综合考虑项目需求、功能复杂度、技术选型、设计要求、后期维护等多个维度,合理的预算规划不仅能确保项目顺利推进,还能避免因资金不足导致的半途而废或质量缩水,以下从核心构成、预算步骤、成本影响因素及参考范围等方面详细说明,网页开发费用的核心构成网页开发的总费用通常由直接成本……

    2025-11-20
    0
  • Dos命令大全.chm有哪些常用命令?

    dos命令大全.chm 是一份详细记录 Windows 操作系统命令行工具的电子书文档,它系统性地整理了 DOS(Disk Operating System)及 Windows 命令提示符(CMD)下的常用命令、参数说明及实例应用,是学习、查阅和掌握命令行操作的重要参考资料,本文将围绕该文档的核心内容,分类介绍……

    2025-11-19
    0
  • ESXi 5.5命令有哪些常用操作?

    在VMware ESXi 5.5系统中,命令行接口(CLI)是管理员进行高级配置、故障排查和自动化管理的重要工具,通过ESXi Shell或SSH连接,管理员可以执行一系列命令来管理虚拟机、存储、网络及主机自身,以下将详细介绍ESXi 5.5中常用的命令及其应用场景,帮助用户更好地掌握命令行操作,连接到ESXi……

    2025-11-18
    0
  • adb命令抓log,具体操作步骤是怎样的?

    adb命令抓log是Android开发者和测试人员日常工作中非常重要的技能,通过adb(Android Debug Bridge)可以高效地获取设备运行时的日志信息,帮助定位和分析问题,日志内容涵盖系统核心信息、应用程序运行状态、错误堆栈等,是调试和优化的关键依据,以下是关于adb抓log的详细方法和注意事项……

    2025-11-18
    0
  • Cygwin命令行安装,如何正确操作?

    Cygwin 是一个在 Windows 操作系统上模拟 Unix-like 环境的工具集,它提供了大量的 Linux 命令和工具,使得开发者可以在 Windows 下使用熟悉的命令行操作,本文将详细介绍如何通过 Cygwin 的命令行方式安装 Cygwin,包括安装前的准备、安装步骤、配置过程以及常见问题的解决……

    2025-11-16
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注