虚拟机基础管理

管理工具

RealVNC

下载链接:https://www.realvnc.com/en/connect/download/viewer/

命令里写了 --graphics vnc,listen=0.0.0.0,KVM 会启动一个 VNC 服务。但需要知道它监听在哪个端口(通常是从 5900 开始)。

# 查看虚拟机的 VNC 端口
virsh vncdisplay ubuntu-01

# 如果输出 :0,对应端口就是 5900。
# 如果输出 :1,对应端口就是 5901,以此类推。

最后在本地电脑打开 VNC 客户端,输入 宿主机IP:5900 即可看到 Ubuntu 的安装界面。

virsh 命令

  • virsh 是基于命令行的虚拟机管理工具,来自 libvirt-client 包;
  • 此工具基于 libvirtd 服务,此服务如果关闭或意外停止将无法继续使用 virsh 命令对虚拟机进行管理,但虚拟机本身依旧会正常运行(默认的 iptables规则与虚拟网卡等实现都是由 libvirtd 服务生成的)。
  • virsh 分为交互式与非交互式,交互式直接敲 virsh 后回车即可进入 virsh 命令行界面。非交互式则需要在命令后跟上具体的任务命令:
    • 可以使用虚拟机名称、编号、UUID 来对虚拟机进行操作,但 UUID 最保险。
      任务 命令
      只列出目前在运行的虚拟机 virsh list
      查看所有虚拟机(包括已关机) virsh list --all
      启动虚拟机 virsh start ubuntu-01
      关闭虚拟机 virsh shutdown ubuntu-01
      强制断电 virsh destroy ubuntu-01
      暂停虚拟机 virsh suspend ubuntu-01
      恢复暂停的虚拟机 virsh resume ubuntu-01
      查看虚拟机 UUID virsh domuuid ubuntu-01
      通过 Console 连接 virsh console ubuntu-01 (退出按 Ctrl + ])
      设置开机自启 virsh autostart ubuntu-01(本质上是在 /etc/libvirt/qemu/autostart/ 创建了一个软链接)
      禁止开机自启 virsh autostart --disable ubuntu-01(本质上是删除了 /etc/libvirt/qemu/autostart/ 下的软链接)
      修改配置 virsh edit ubuntu-01 (需重启生效)
      查看磁盘信息 virsh domblklist ubuntu-01
      查看虚拟机 XML 配置 virsh dumpxml ubuntu-01(本质上是从 /etc/libvirt/qemu/ 目录下读取 XML 文件)

这份总结已经非常全面,特别是你对“本质上是创建/删除软链接”的理解,说明你已经深入到了 Libvirt 的底层逻辑。

关于 QEMU Guest Agent (QGA),它是 SRE 提升虚拟机管理精细度的关键。目前的“高级功能”描述略显宽泛,因为即使不装 QGA,很多操作(如强制断电、基本信息查看)也能做。QGA 的真正价值在于**“从宿主机安全、优雅地感知和操作 Guest OS 内部”**。

以下是润色后的版本,我帮你强化了 SRE 实战场景


virt-manager

virt-manager 是一个可视化虚拟机管理工具,它提供了一个用户友好的界面,用于创建、配置、管理和监控虚拟机。

安装 virt-manager

# Ubuntu/Debian
apt install virt-manager -y

# CentOS/Rocky
yum install virt-manager -y

启动 virt-manager

  • 需要开启 X11 转发,例如 xshell 中需要安装 Xmanager-passive 程序
# 假设宿主机 IP 为 10.0.0.1,X11 转发端口为 0.0
export DISPLAY=10.0.0.1:0.0

# 启动 virt-manager
virt-manager

在虚拟机内安装 QGA 服务

# Ubuntu/Debian
apt install qemu-guest-agent -y && systemctl enable --now qemu-guest-agent

# CentOS/Rocky
yum install qemu-guest-agent -y && systemctl enable --now qemu-guest-agent

通过QEMU Guest Agent (QGA) 可以增强 virsh 功能,它是安装在虚拟机内部的一个守护进程(qemu-guest-agent)。它在宿主机与虚拟机之间开启了一个特殊的通信通道(Virtio-serial),使得 Libvirt 可以执行那些必须进入系统内部才能完成的任务。

核心增强功能:

  • 优雅管理:不通过发送 ACPI 信号,而是直接在虚拟机内部调用 systemctl poweroff,避免文件系统损坏。
  • 信息探测:无需登录虚机,即可获取虚机内部的真实网卡 IP(包括多网卡、虚拟 IP)、用户登录情况及 OS 详细版本。
  • 文件系统冻结:在进行虚拟机快照备份前,自动冻结(fsfreeze)磁盘 I/O,确保备份数据的一致性。
  • 重置密码:在忘记密码时,直接从宿主机端注入新密码。

当虚拟机已安装并启动 QGA 服务后,可使用以下高级命令:

任务 命令 SRE 使用场景
获取虚拟机时间 virsh domtime ubuntu-01 同步宿主机与虚机时间,防止时钟偏移影响日志分析
查看内部网卡 IP virsh domifaddr ubuntu-01 --source agent 最常用:直接获取虚机内部真实 IP(支持多网卡环境)
安全关机 virsh shutdown ubuntu-01 --mode agent 比默认 ACPI 方式更稳定,确保数据库等应用安全关闭
安全重启 virsh reboot ubuntu-01 --mode agent 强制通过内部 Agent 重启,避免某些内核卡死状态
重置 root 密码 virsh set-user-password ubuntu-01 root 123456 紧急救援,无需进入单用户模式或挂载磁盘修改
查看 OS 详情 virsh domhostname ubuntu-01 确认内部主机名是否与 Libvirt 记录一致
获取磁盘占用 virsh domfsinfo ubuntu-01 从内部视角看磁盘挂载点和文件系统类型

为虚拟机添加描述

# 创建虚拟机时添加,在使用 virt-install 创建虚拟机时,添加 --description 参数即可:
virt-install --name my-vm-01 --description "研发部-张三-用于Web接口测试" ...

# 创建后添加描述
virsh desc prod-harbor --new-desc "生产环境harbor" --live --config
# --config:修改下次启动时生效(持久化)
# --live:修改立即生效(仅限本次运行,重启丢失)
# 通常两个参数配合使用,如果机器已经关机,则只添加 --config 参数即可

虚拟机改名

# 停止虚拟机(重命名必须在关机状态下进行):
virsh shutdown 老名称

# 执行重命名:
virsh domrename 老名称 新名称