找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2981

积分

0

好友

408

主题
发表于 昨天 10:02 | 查看: 1| 回复: 0

你是否习惯使用图形界面的 virt-manager 来管理虚拟机?有时,通过命令行一键式安装与配置,效率其实更高。virt-install 作为 libvirt 的命令行接口,能完全实现 virt-manager 的功能,并且更容易实现自动化与批量操作。本文将以安装 Ubuntu 24.04 LTS 为例,带你从零开始,通过 virt-install 命令完成虚拟机创建、共享文件夹配置,并对比测试 virtiofs 的卓越性能。

Ubuntu 24.04 虚拟机桌面环境截图

检查硬件虚拟化支持

在开始之前,确保你的主机硬件支持虚拟化技术,这对于虚拟机性能至关重要。运行以下命令进行检测:

grep -E --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo

如果输出中高亮显示了 vmx(Intel)或 svm(AMD),则说明硬件虚拟化已启用。你还可以通过检查 kvm 内核模块来进一步确认:

lsmod | grep kvm

准备主机系统

笔者使用的系统是 Arch Linux,安装必要软件包的命令如下。如果你使用的是其他发行版(如 Ubuntu、Fedora),请使用对应的包管理器命令(如 aptdnf)。

# 以Arch Linux为例
paru -S virt-install virt-viewer dnsmasq dmidecode vde2 bridge-utils

安装完成后,需要启动 libvirtd 服务。先检查服务状态:

sudo systemctl status libvirtd

若服务未运行,则启用并启动它:

sudo systemctl enable libvirtd
sudo systemctl start libvirtd

为了让当前用户有权限管理虚拟机,需要将其添加到 libvirtkvm 用户组:

sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)

默认的 libvirt 配置可能只允许 root 用户执行某些操作。你可以编辑 /etc/libvirt/qemu.conf 文件,找到 user = 这一行,并添加你的用户名(例如 user = "sundar")来放宽权限。

为了虚拟机联网,设置默认网络随系统自动启动:

sudo virsh net-autostart default

最后,熟悉一下管理虚拟机的主要命令行工具 virsh,查看它的帮助文档:

sudo virsh --help

安装客户机操作系统

首先,我们需要确定要安装的操作系统在 virt-install 中的标识名。使用 osinfo-query 命令查看所有支持的系统:

osinfo-query os

输出列表很长。假设我们要安装 Ubuntu 24.04,可以这样筛选:

osinfo-query os | grep -i ubuntu

从输出中找到 ubuntu24.04 这个标识名,在后续命令中会用到。

接下来,就是核心的安装命令。你需要准备好 Ubuntu 24.04 的 ISO 文件路径,并规划好虚拟机磁盘的存放位置。

virt-install \
  --os-variant ubuntu24.04 \
  --name ubuntu24.04 \
  --cdrom /mnt/data/Data/distros/ubuntu-24.04.2-desktop-amd64.iso \
  --virt-type=kvm \
  --osinfo detect=on,require=on \
  --ram 8192 \
  --vcpus 4 \
  --disk path=/mnt/data/Data/VBOXs/ubuntu24.04.img,format=raw,size=190 \
  --connect=qemu:///system \
  --filesystem source.dir="/mnt/data/Data",target.dir="data",type=mount,mode=passthrough,driver.type=virtiofs \
  --filesystem source.dir="/home/sundar",target.dir="arch",type=mount,mode=passthrough,driver.type=virtiofs \
  --memorybacking access.mode=shared,source.type=memfd

命令参数解析:

  • --os-variant: 必须与 osinfo-query 查到的名称严格一致。
  • --name: 虚拟机的名称,便于后续管理。
  • --cdrom: 指定 Ubuntu ISO 文件的路径。
  • --virt-type: 选择 kvm,这是在 Linux 主机上性能最好的虚拟化类型。
  • --osinfo detect=on,require=on: 让工具自动从 ISO 检测系统并优化配置。
  • --ram: 分配给虚拟机的内存大小(MB)。
  • --vcpus: 分配给虚拟机的虚拟 CPU 核心数。
  • --disk: 定义虚拟磁盘。path 是镜像文件路径,format 设为 raw 格式(据报道性能稍好),size 是磁盘容量(GB)。
  • --connect: 连接到系统级的 QEMU 实例。
  • --filesystem: 这是实现高性能文件夹共享的关键。 可以多次使用此选项。source.dir 是主机上的目录路径,target.dir 是客户机内显示的挂载点名称(注意,不是完整路径)。driver.type=virtiofs 指定使用 virtio-fs 驱动,性能远超传统方式。
  • --memorybacking: 内存后端配置,使用默认值即可。

命令执行后,virt-viewer 窗口会自动弹出,开始 Ubuntu 的图形化安装过程。按照屏幕提示完成安装后,关闭虚拟机。

客户机安装后配置

安装完成后,我们可以使用 virsh 命令来管理虚拟机。

列出所有虚拟机(包括已关闭的):

sudo virsh list --all

启动我们刚安装的 ubuntu24.04 虚拟机:

sudo virsh start ubuntu24.04

启动图形界面连接:

virt-viewer --connect qemu:///system ubuntu24.04

也可以将启动和连接合并为一条命令:

sudo virsh start ubuntu24.04 && virt-viewer --connect qemu:///system ubuntu24.04

进入虚拟机后,为了获得更好的剪贴板共享和文件拖放支持,建议安装 spice-vdagent

sudo apt install spice-vdagent

如果你希望通过 SSH 从主机访问虚拟机,还需要安装并启动 openssh-server

sudo apt install openssh-server
sudo systemctl enable ssh --now

然后,从主机查询虚拟机的 IP 地址:

sudo virsh domifaddr ubuntu24.04

输出示例:

 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:9e:89:5d    ipv4         192.168.122.79/24

得到 IP 后,就可以从主机使用 SSH 登录了:

ssh -t sundar@192.168.122.79

访问共享文件夹

在安装命令中,我们通过 --filesystem 参数声明了两个共享目录。现在需要在 Ubuntu 客户机内手动挂载它们。

首先,创建挂载点目录:

sudo mkdir -p /mnt/data
sudo mkdir -p /mnt/arch

然后,挂载共享文件夹。这里的 dataarch 就是之前在 virt-install 命令中设置的 target.dir

sudo mount -t virtiofs data /mnt/data
sudo mount -t virtiofs arch /mnt/arch

为了每次启动自动挂载,需要编辑 /etc/fstab 文件,添加以下两行:

data           /mnt/data    virtiofs    defaults        0       0
arch           /mnt/arch    virtiofs    defaults        0       0

virtiofs 共享文件夹性能实测

共享文件夹的性能是很多用户关心的重点。为了验证 virtiofs 的效能,我进行了一个简单的测试:将主机上一个约 2.5GB(包含 17,557 个文件)的目录,复制到虚拟机的 ~/Documents 文件夹中,并记录耗时。

  • 使用 virtiofs(本文方法):耗时 46.6 秒
  • 使用传统的 virtio-9p(旧方法):耗时 16.32 分钟

性能提升超过 20倍,差异极其显著。对于需要在主机和虚拟机之间频繁交换文件的开发或测试工作流,virtiofs 无疑是首选方案。这种高效的数据交互方式,也是现代云计算和 IaaS 平台中实现快速实例初始化与数据挂载的基础技术之一。

常用 virsh 命令速查表

掌握以下 virsh 命令,足以应对日常的虚拟机管理工作:

命令 功能
sudo virsh list --all 列出所有虚拟机(含关闭的)
sudo virsh list 列出正在运行的虚拟机
sudo virsh start <vm_name> 启动指定虚拟机
sudo virsh reboot <vm_name> 重启虚拟机
sudo virsh shutdown <vm_name> 正常关闭虚拟机
sudo virsh destroy <vm_name> 强制关闭虚拟机(相当于断电)
sudo virsh autostart <vm_name> 设置虚拟机随主机自动启动
sudo virsh autostart --disable <vm_name> 禁用虚拟机自动启动
sudo virsh undefine <vm_name> --remove-all-storage 删除虚拟机及其所有磁盘文件

通过本文的介绍,你应该已经掌握了使用 virt-install 命令行工具全流程安装和配置虚拟机的方法。从硬件检查、系统准备,到具体的安装命令、后期优化和性能测试,这一套流程在 Linux 运维 和开发环境中非常实用。相较于图形界面,命令行操作更易于脚本化和集成到自动化部署流程中。如果你在实践过程中遇到问题,或在 虚拟化云原生 领域有更多心得,欢迎到专业的 开发者社区 交流探讨。




上一篇:飞牛OS 0day路径遍历漏洞复现与分析及安全建议
下一篇:C++实战性能优化指南:从内存管理、编译优化到代码习惯
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-5 00:37 , Processed in 0.307981 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表