手搓KVM虚拟化!Ubuntu 26.04 + KVM 7.0.0,告别VMware的低成本玩法

对于我个人而言,在条件允许的情况下,我还是比较喜欢使用VMware的虚拟化产品(Hyper-V别开!VMware 25H2安装避坑指南,附Hermes新动向)。在虚拟化的江湖里,VMware也一直是无数人心中的白月光。但时移世易,开源的KVM凭借其随风潜入夜、润物细无声的灵活性(不会吧!KVM竟然不支持磁盘的精简置备!?),成了技术人的新宠。当然,介于当前的形式,国产化也是一个很好的替代方向(软考党必看:H3C CAS最新版安装避坑全记录,你的内存条准备好了吗?)。

对于低成本用户而言,如果动手能力强的话,使用KVM完全可以手搓一个虚拟化环境(通过命令行配置调整KVM的虚拟网络)。

关于KVM,我们之前基于CentOS做过介绍(最小化安装的CentOS7部署KVM虚拟机),CentOS停服之后,我们也介绍了Ubuntu上的配置方法(如何在Ubuntu 23.10部署KVM并创建虚拟机?)。

恰逢Ubuntu 26.04 LTS顶着7.0.0内核的光环新鲜出炉(仅占752MB内存!Ubuntu 26.04 Server版上手:这才是服务器该有的样子!),咱们今天就来一次老树发新芽,看看在这片新土壤上,手搓一个KVM虚拟化环境是否依然丝滑。

首先,我们先安装核心虚拟化组件。

sql 复制代码
apt-get updateapt-get install -y qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virtinst cpu-checker qemu-utilsapt list qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virtinst cpu-checker qemu-utilskvm-ok

可以看到,KVM已经正确安装。

虚拟化核心组件libvirt服务器默认处于未运行状态,需要我们手动启动服务。

bash 复制代码
systemctl start libvirtdsystemctl enable libvirtdsystemctl status libvirtd

当然,默认情况下,KVM网络也是没有的,我们需要配置一个初始化网络。

sql 复制代码
virsh net-start defaultvirsh net-autostart default

之前的案例中,我们使用了virt-manager这个图形化管理工具。今天,我们来点高级的,用纯命令行来创建一台虚拟机。

参考CAS的配置(H3C CAS实战:CVM纳管CVK的相爱相杀,这波操作太秀了!),我们在KVM的默认目录/var/lib/libvirt/下创建两个目录,分别用于存放ISO镜像和VM虚拟机磁盘文件。

bash 复制代码
mkdir /var/lib/libvirt/images/isomkdir /var/lib/libvirt/images/vm

之前使用virt-manager创建虚拟机,我们也遇到过磁盘精简置备的问题(不是KVM不支持精简置备的磁盘,而是VMM)。这次,我们直接使用qemu-img命令创建一个qcow2格式的系统盘(qemu-img命令手册),它默认就是精简置备模式,实际占用空间随使用量动态增长。

swift 复制代码
qemu-img create -f qcow2 /var/lib/libvirt/images/vm/vsr1000.qcow2 4Gqemu-img info /var/lib/libvirt/images/vm/vsr1000.qcow2

可以看到,新创建的系统盘,默认只有196 KB,非常节省磁盘空间。

接下来,我们执行以下命令,创建一台VSR虚拟机。

apache 复制代码
virt-install \  --name VSR1000 \  --ram 2048 \  --vcpus 2 \  --disk path=/var/lib/libvirt/images/vm/vsr1000.qcow2,format=qcow2 \  --os-variant generic \  --network default \  --graphics vnc,listen=0.0.0.0 \  --cdrom /var/lib/libvirt/images/iso/VSR1000_H3C-CMW710-R1362P12-X64.iso \  --noautoconsole

其中,--name用于指定虚拟机名称,--ram和--vcpus用于指定给虚拟机分配的内存(MB)和CPU数量,--disk用于指定系统盘文件,--cdrom用于指定要挂载的ISO镜像文件,--os-variant generic指使用通用系统优化设置,--network用于指定虚拟机连接的网络,--noautoconsole命令指示创建完成后不自动跳转到控制台,保持后台运行。因为VSR安装时需要用VNC连接,所以我们通过配置--graphics vnc,listen=0.0.0.0选项,用于开启VNC并允许远程连接。

nginx 复制代码
virsh listvirsh vncdisplay VSR1000

这里提醒一点,连接VNC时,我们需要查看其对应的VNC编号,系统默认编号开始于5900,我们将获取到编号最后的数字替换成对应的数字即可,然后通过UltraVNC Viewer进行连接。

然后,正常完成VSR的部署(网络之路17:认识网络功能虚拟化NFV)。

等待部署完成,我们就可以使用命令直接连接到VSR的命令行了。

javascript 复制代码
virsh console VSR1000

诶?这个报错是不是很熟悉?(如何在EVE-NG中导入VSR1000设备?怎么解决登录问题?

我们进入到VNC再看一眼。

果然,对于VSR而言,默认的console就是VNC连接,而KVM连接的串口Serial则对应VSR的AUX用户线。所以,我们需要调整认证方式为免认证,并且配置用户为管理员用户。

现在再通过命令连接虚拟机,就没有问题了。

再检查一下磁盘使用情况。

非常棒,4 GB的磁盘仅占用374 MB的空间,还得是精简置备。

当然,如果我们想关闭虚拟机,可以执行以下命令:

apache 复制代码
virsh destroy VSR1000virsh list --all

好家伙,这个VSR竟然占用了1 GB的运行内存,如果仅运行libvirt服务,系统内存也只用了849 MB,简直太棒了。

在Ubuntu 26.04 + Kernel 7.0.0的组合下,KVM的部署依然稳如泰山。尤其是内存管理上,跑一个VSR1000后的系统余温尚存,剩余可用内存相当可观,这对于咱们实验环境的层层套娃无疑是重大利好。

告别了图形界面的鼠标流,拥抱纯命令行的指尖艺术,这不仅是技术的回归,更是对底层逻辑的敬畏。

***推荐阅读***

我们的WireGuard管理系统支持手机电脑了!全平台终端配置,支持扫码连接,一键搞定

保姆级教程:一条命令部署OpenVPN管理系统V4版,支持Win/Mac/安卓/iOS全平台接入

成本省下99.7%!用40元的腾讯云服务器自建IPsecVPN,成功对接企业级飞塔防火墙

别再乱选VPN了!实测数据告诉你:为什么L2TP是个"坑"

SRv6部署第一坑:为什么配置了Locator却Ping不通?

嫌一键部署不过瘾?带你手搓Hermes智能体,主打一个通透

Hyper-V别开!VMware 25H2安装避坑指南,附Hermes新动向

H3C CAS实战:CVM纳管CVK的相爱相杀,这波操作太秀了!

VPP转发性能从10G暴增至24G?揭秘OpenEuler虚拟机的极限压榨术

NVUE不支持OSPFv3?别慌!教你一招搞定SRv6地基

手机也能跑DeepSeek-R1/Qwen3了:零成本搭建AI推理平台

2048卡昇腾910C集群算力集群交付工程手册

2048卡H100算力中心100G无阻塞存储网建设方案

相关推荐
孙高飞5 小时前
AI生成接口自动化测试用例最佳实践(附skill设计思路)
运维·自动化·测试用例
中海德--陈顺真5 小时前
HONEYWELL 扫描架控制板 51000398
运维·服务器·人工智能
wuminyu5 小时前
专家视角看Java多态性的底层基石vtable(虚函数表)构建过程解析
java·linux·c语言·jvm·c++
叶总没有会5 小时前
Docker入门
运维·docker·容器
KKKlucifer5 小时前
纵深防御视角下安全运维服务体系构建思路
运维·网络·安全
lbb 小魔仙5 小时前
2026远程办公软件夏季深度横测:ToDesk、向日葵、网易UU远程全面对比,远控白皮书
android·服务器·网络协议·tcp/ip·postgresql
暮色念了红尘5 小时前
CC Switch — Ubuntu 20.04 可用版本
ubuntu·ai·rust·ubuntu 20.04·vibe coding·cc swich
嵌入式×边缘AI:打怪升级日志5 小时前
全志T113 Tina-Linux开发环境搭建:从安装依赖到打包烧录完整教程
linux·运维·服务器
yugi9878386 小时前
Linux下58mm热敏打印机驱动安装与配置指南
linux·运维·服务器