内容提要
文章介绍裸机虚拟化:在硬件上直接运行轻量虚拟化层,并行运行多个隔离操作系统。作者用Proxmox搭建方案,通过LVM存储、virtIO、IOMMU、SR-IOV和GPU直通,同时运行Linux开发、Windows游戏与创作及服务器容器,解决系统冲突,实现按需切换与资源灵活分配。
延伸解读
裸机虚拟化的适用场景
文章指出,裸机虚拟化适合需要频繁同时使用多个操作系统、且对性能、稳定性和安全性有较高要求的用户。例如,作者需要同时进行Linux开发、Windows游戏和创作,并运行稳定的服务器服务。如果只是偶尔使用虚拟机,在现有操作系统上安装虚拟化软件可能更高效。
I/O虚拟化技术的选择
在裸机虚拟化中,I/O设备分配至关重要。文章介绍了三种技术:virtIO用于网络和存储的半虚拟化,IOMMU用于GPU等设备的直通,SR-IOV用于网卡等硬件辅助虚拟化。选择取决于设备类型和性能需求,例如GPU直通需要IOMMU支持,而高速网络可考虑SR-IOV。
存储与网络配置的实践
作者使用LVM ThinPool管理存储,实现按需分配和超额配置,方便扩展。网络方面,针对WiFi无法桥接的问题,采用NAT和OpenWRT虚拟机提供DHCP。这些方案解决了裸机虚拟化中的常见挑战,但需要一定的技术知识来配置。
Nvidia vGPU的限制与商业策略
文章提到,Nvidia通过驱动限制消费级GPU的vGPU功能,仅在企业级GPU上支持真正的vGPU,这被作者批评为商业利益驱动。对于AI开发者,可以使用Nvidia-docker在容器中管理不同CUDA版本,但无法在虚拟机上实现GPU虚拟化。这反映了硬件厂商通过软件限制来细分市场的行为。
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,实现按需分配和超额分配,例如为Windows虚拟机创建100TB虚拟磁盘但实际只占用已写入空间。网络方面,针对WiFi无法桥接的问题,作者创建桥接子网,设置Proxmox IP为10.10.10.10并启用NAT,再运行OpenWRT虚拟机作为DHCP服务器,虚拟机间通过桥接直接通信,网络速度可达最大带宽。
作者创建了哪些虚拟机,分别用于什么目的?
作者创建了多个虚拟机:Manjaro用于开发,Ubuntu用于运行AI模型,Kali用于体验新功能;三个Windows 11虚拟机,分别用于AMD显卡游戏、Nvidia显卡游戏和创作软件(使用AMD PRO驱动),两个游戏虚拟机共享同一虚拟磁盘;还有多个Ubuntu Server虚拟机辅助NAS运行服务,以及三个LXC容器运行RSS抓取、媒体服务器和照片服务器。
Nvidia在vGPU方面有什么限制?作者对此有何看法?
Nvidia仅在企业级GPU上支持真正的vGPU,消费级GPU的vGPU功能被驱动主动屏蔽,目的是销售高价商业卡。作者认为这是Nvidia为商业利益恶心普通消费者的行为,并指出硬件厂商可以通过软件和商业模式赚大钱,但曾经的颠覆者最终变成了恶龙。