手搓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虚拟化环境是否依然丝滑。

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

apt-get update
apt-get install -y qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virtinst cpu-checker qemu-utils
apt list qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virtinst cpu-checker qemu-utils
kvm-ok

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

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

systemctl start libvirtd
systemctl enable libvirtd
systemctl status libvirtd

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

virsh net-start default
virsh net-autostart default

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

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

mkdir /var/lib/libvirt/images/iso
mkdir /var/lib/libvirt/images/vm

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

qemu-img create -f qcow2 /var/lib/libvirt/images/vm/vsr1000.qcow2 4G
qemu-img info /var/lib/libvirt/images/vm/vsr1000.qcow2

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

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

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并允许远程连接。

virsh list
virsh vncdisplay VSR1000

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

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

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

virsh console VSR1000

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

我们进入到VNC再看一眼。

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

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

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

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

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

virsh destroy VSR1000
virsh list –all

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

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

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

声明:来自铁军哥,仅代表创作者观点。链接:https://eyangzhen.com/7817.html

铁军哥的头像铁军哥

相关推荐

添加微信
添加微信
Ai学习群
返回顶部