Virtualization is all you need

Virtualization is all you need

💡 原文中文,约7500字,阅读约需18分钟。
📝

内容提要

文章介绍裸机虚拟化实践:作者用Proxmox在单机上运行多个隔离系统,解决开发、游戏、创作与稳定环境冲突。通过LVM瘦池、桥接网络、virtIO、IOMMU与SR-IOV优化存储和I/O,并配置GPU直通、KVM切换器实现多系统并行使用。

🔎

延伸解读

裸机虚拟化的适用场景

文章指出,裸机虚拟化适合需要同时运行多个操作系统且对性能、隔离性有较高要求的用户。例如,开发者需要Linux环境,游戏玩家需要Windows,创作者需要特定驱动,而裸机虚拟化允许这些系统并行运行,互不干扰。但作者也提醒,如果只是偶尔使用虚拟机,传统宿主型虚拟机软件更简单高效。

I/O虚拟化技术的选择

在裸机虚拟化中,I/O设备分配至关重要。文章介绍了三种方案:virtIO半虚拟化适用于网卡和存储控制器,能提升性能;IOMMU实现GPU等设备的直通,减少切换开销;SR-IOV则通过硬件辅助实现I/O共享,适合高速网络。读者应根据设备类型和性能需求选择合适的方案。

存储配置的灵活性与风险

作者使用LVM ThinPool管理存储,支持虚拟磁盘超额配置,例如为Windows虚拟机分配100TB虚拟硬盘,实际仅占用少量物理空间。这种方案灵活且节省空间,但需注意物理存储耗尽的风险。当物理空间不足时,可动态加入新硬盘扩展ThinPool,虚拟机内部无感知。

网络桥接与NAT的实践

对于无线网络,由于AP拒绝未验证帧,透明桥接难以实现。作者采用桥接子网加NAT的方案:宿主机创建桥接子网并启用NAT,OpenWRT虚拟机仅作DHCP服务器。虚拟机间通信直接通过桥接,对外流量经宿主机NAT转发。此方案简单有效,能充分利用带宽。

❓

Q&A

什么是裸机虚拟化?它和普通虚拟机软件有什么不同?

裸机虚拟化是在硬件上直接运行一个轻量级的专用虚拟化层,然后在这个虚拟化层上运行多个完全隔离的操作系统。与在已有操作系统上使用虚拟机软件不同,裸机虚拟化不需要宿主操作系统,因此避免了宿主系统资源占用高、稳定性差和安全风险大的问题。

为什么作者选择 Proxmox 作为裸机虚拟化方案?

作者选择 Proxmox 因为它是开源的,基于 Debian Linux,同时支持 KVM 全虚拟化和 LXC 容器虚拟化,提供易于使用的 Web 界面,并内置了动态内存管理、CPU 过载保护、硬盘超配、ZFS、Ceph、多节点支持、模板克隆和快照等高级特性。

在裸机虚拟化中,如何优化 I/O 设备性能?

针对不同设备采用不同 I/O 方案:使用 virtIO 实现网卡和硬盘控制器的半虚拟化;通过 IOMMU 实现 GPU 直通;使用支持 SR-IOV 的网卡实现硬件 I/O 虚拟化,从而提高性能并减少延迟。

作者如何解决存储问题?

作者将两块 SSD 集成到同一个 LVM 中,并创建 ThinPool 用于存储虚拟磁盘。ThinPool 按需分配空间,支持超额配置,例如创建 100TB 虚拟硬盘但实际只占用少量物理空间,未来可动态扩展。

作者如何配置网络以支持虚拟机?

对于有线网络,Proxmox 可直接创建虚拟网络并接入路由器。对于无线网络,作者创建桥接子网(如 10.10.10.0/24),设置 Proxmox IP 为 10.10.10.10,启用 IPv4 转发和 MASQUERADE 实现 NAT,并创建 OpenWRT 虚拟机作为 DHCP 服务器,自动分配 IP 地址。

作者日常如何使用多个虚拟机?

作者同时打开用于开发的 Manjaro 和用于游戏的 Windows 11。通过显示器切换信号源来切换屏幕,因为两个系统直通了不同的 GPU。使用 KVM 切换器共享键盘和鼠标,将 KVM 切换器的两个 USB 输出端口连接到主机,并通过 USB 直通绑定到不同虚拟机。

英伟达在 vGPU 方面有什么限制?

英伟达只在昂贵的 enterprise GPU 上支持真正的 vGPU(基于 SR-IOV),而消费级显卡如 RTX2060 实际上硬件支持 vGPU,但被驱动屏蔽,目的是销售高端商用显卡。

🏷️

标签

➡️

继续阅读