Ubuntu KVM命令有哪些常用操作?

在Ubuntu系统中,KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它利用Linux内核的虚拟化功能来创建和管理虚拟机,通过命令行工具,用户可以高效地完成虚拟机的安装、配置和管理,以下是关于Ubuntu中使用KVM命令的详细说明,包括环境准备、虚拟机管理、网络配置、快照操作等核心内容。

ubuntu kvm 命令
(图片来源网络,侵删)

环境准备与安装

在开始使用KVM之前,需要确保系统支持虚拟化并安装必要的软件包,首先检查CPU是否支持虚拟化扩展(Intel VT-x或AMD-V),执行命令egrep -c '(vmx|svm)' /proc/cpuinfo,若返回值大于0则支持,然后安装KVM及相关工具:

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

安装完成后,将当前用户添加到libvirt和kvm用户组以避免权限问题:

sudo usermod -aG libvirt,kvm $USER
newgrp libvirt

最后启动libvirtd服务并设置开机自启:

sudo systemctl enable --now libvirtd

虚拟机管理命令

创建虚拟机

使用virt-install命令可以快速创建虚拟机,以下是一个创建Ubuntu虚拟机的示例:

ubuntu kvm 命令
(图片来源网络,侵删)
sudo virt-install \
  --name ubuntu-vm \
  --ram 2048 \
  --vcpus 2 \
  --disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=20 \
  --cdrom /path/to/ubuntu-22.04.3-live-server-amd64.iso \
  --network bridge=virbr0 \
  --graphics spice

参数说明:

  • --name:虚拟机名称
  • --ram:分配内存(MB)
  • --vcpus:虚拟CPU核心数
  • --disk:磁盘路径和大小(GB)
  • --cdrom:安装镜像路径
  • --network:网络模式(默认为NAT)
  • --graphics:显示协议(spice/vnc/none)

启动、关闭与重启虚拟机

# 启动虚拟机
sudo virsh start ubuntu-vm
# 关闭虚拟机(优雅关机)
sudo virsh shutdown ubuntu-vm
# 强制关闭
sudo virsh destroy ubuntu-vm
# 重启虚拟机
sudo virsh reboot ubuntu-vm
# 查看虚拟机状态
sudo virsh list --all

虚拟机控制台连接

# 图形化控制台
sudo virt-viewer ubuntu-vm
# 命令行控制台(需安装libguestfs-tools)
sudo virsh console ubuntu-vm

磁盘与存储管理

创建磁盘镜像

# 创建qcow2格式磁盘(动态分配)
qemu-img create -f qcow2 /var/lib/libvirt/images/disk-vm.qcow2 10G
# 创建raw格式磁盘(固定大小)
qemu-img create -f raw /var/lib/libvirt/images/disk-vm.raw 10G

扩展磁盘容量

# 扩展qcow2磁盘至20GB
qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
# 在虚拟机内部扩展分区(以ext4为例)
sudo growpart /dev/vda 1
sudo resize2fs /dev/vda1

网络配置

KVM默认使用NAT网络模式,也可配置桥接模式实现与主机同一网段通信,以下是桥接网络配置步骤:

  1. 安装bridge-utils:

    sudo apt install bridge-utils
  2. 创建桥接接口:

    ubuntu kvm 命令
    (图片来源网络,侵删)
    sudo nm-connection-editor

    在图形界面中添加新桥接,将物理网卡(如ens33)桥接到virbr0。

  3. 验证桥接状态:

    brctl show

快照与克隆

创建快照

sudo virsh snapshot-create-as ubuntu-vm pre-install --description "Before software installation"

列出快照

sudo virsh snapshot-list ubuntu-vm

恢复快照

sudo virsh snapshot-revert ubuntu-vm pre-install

克隆虚拟机

sudo virt-clone --original ubuntu-vm --name ubuntu-vm-clone --file /var/lib/libvirt/images/ubuntu-vm-clone.qcow2

性能监控

查看虚拟机资源占用

# CPU使用率
sudo virsh cpu-stats ubuntu-vm
# 内存使用情况
sudo virsh memstat ubuntu-vm
# 磁盘I/O
sudo iostat -x /dev/vda

使用top监控虚拟机进程

top -p $(pgrep -f qemu-system)

常见故障排除

  1. 虚拟机无法启动:检查磁盘路径是否正确,使用sudo virsh edit ubuntu-vm修改XML配置。
  2. 网络不通:确认NAT或桥接配置,检查防火墙规则(如ufw)。
  3. 性能问题:调整CPU亲和性或内存参数,启用KVM加速。

相关命令速查表

功能命令示例
列出虚拟机sudo virsh list --all
编辑虚拟机配置sudo virsh edit ubuntu-vm
删除虚拟机sudo virsh undefine ubuntu-vm
挂载ISO镜像sudo virsh attach-disk ubuntu-vm /path/to.iso hda --type cdrom --mode readonly
卸载磁盘sudo virsh detach-disk ubuntu-vm hda

相关问答FAQs

Q1: 如何解决KVM虚拟机黑屏无法显示的问题?
A1: 首先检查虚拟机配置中的<graphics>标签是否正确设置(如spice/vnc),尝试使用sudo virt-viewer ubuntu-vm重新连接,若仍无法显示,可尝试关闭图形模式并使用命令行控制台:sudo virsh edit ubuntu-vm,将<graphics type='spice'/>改为<graphics type='none'/>,然后通过sudo virsh console ubuntu-vm访问。

Q2: 如何在KVM虚拟机与主机之间实现文件传输?
A2: 可通过以下方式实现:

  1. 共享文件夹:安装qemu-guest-agent后,在主机端使用sudo virsh attach-disk ubuntu-vm /path/to/host/dir vdb --type block --mode readonly挂载目录。
  2. SCP/SSH:在虚拟机中安装SSH服务,通过scp命令传输文件。
  3. virtio-win驱动:对于Windows虚拟机,安装virtio-win驱动后,通过virtio磁盘实现高效文件共享。

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

(0)
运维的头像运维
上一篇2025-10-20 11:35
下一篇 2025-10-20 11:39

相关推荐

  • cmd at命令实例有哪些具体用法?

    在Windows操作系统中,命令提示符(CMD)是一个强大的工具,它允许用户通过文本命令与系统进行交互,at命令是一个计划任务工具,用于在指定的时间运行命令或程序,尽管在较新的Windows版本中(如Windows 8和Windows 10),at命令已被schtasks命令取代,但了解at命令的实例和用法仍然……

    2025-11-20
    0
  • bat如何启动服务?命令格式是怎样的?

    在Windows操作系统中,BAT脚本(批处理文件)是一种强大的工具,可以通过简单的命令实现自动化操作,其中启动服务是常见的应用场景,服务是Windows中在后台运行的应用程序,通常没有用户界面,用于提供系统功能或支持其他应用程序,通过BAT脚本启动服务,可以简化手动操作,提高管理效率,以下是关于使用BAT脚本……

    2025-11-20
    0
  • cmd命令如何获取当前时间戳?

    在Windows操作系统中,cmd命令是用户与系统交互的重要工具,而时间戳则是记录和追踪事件发生时间的关键数据,结合cmd命令与时间戳,可以实现日志记录、任务调度、文件管理等多种实用功能,本文将详细解析如何通过cmd命令获取、处理和应用时间戳,并通过具体示例和表格展示操作方法,获取当前时间戳的cmd命令在cmd……

    2025-11-20
    0
  • net命令建用户的具体步骤是什么?

    在Windows操作系统中,net命令是功能强大的网络命令行工具,其中通过net user子命令可以方便地创建、管理和删除用户账户,尤其适合管理员在无图形界面的服务器环境中进行用户管理操作,以下是关于使用net命令创建用户的详细说明,包括命令语法、参数详解及实际应用场景,net user命令的基本语法为:net……

    2025-11-20
    0
  • xp开机如何运行命令?

    在Windows XP系统中,开机时运行命令是一项非常实用的功能,它允许用户在系统启动过程中自动执行特定的程序或脚本,从而实现系统优化、软件自启动或任务自动化等目的,本文将详细介绍如何在Windows XP中设置开机自运行命令,包括通过系统配置工具、启动文件夹、注册表等多种方法,并附上注意事项和常见问题解答,W……

    2025-11-20
    0

发表回复

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