html
即使你只是将脚浸入Proxmox生态系统以运行虚拟机,你肯定会在后面遇到LXC。尽管提供的隔离功能较弱,LXC相当灵活,并且消耗的资源仅为其虚拟机对应物的一小部分。随着Proxmox VE Helper-Scripts库提供大量有用的模板,LXC的部署极其简单,使其非常适合低功率设备的新手和硬核服务器拥有者。
然而,你会发现LXC有两种类型:特权和非特权,你可以选择任一变体。大多数初始化脚本通常默认使用非特权LXC,你经常会听到家庭实验室的用户(包括我自己)提倡使用这些容器。这是因为它们的特权对应物可能会带来重大的安全挑战,即使你还是Proxmox新手,它们看起来也许无害(而且更有用)。
乍一看,特权LXC提供了无忧的体验
将设备传递给它们非常简单
当你试图在Proxmox主机上部署多个GPU密集型服务,如Ollama、Immich(至少对于机器学习部分)和Jellyfin时,走LXC这条路听起来更不错。毕竟,你不需要研究SR-IOV就能把同一张卡传给不同的虚拟机,也不必处理它们占用更多系统资源的倾向。你也不用修改内核模块,还要跑好几个脚本才能让GPU直通到你的虚拟机。
虽然前两点适用于无特权容器,但传递你的 PCI 设备(甚至是连接到 USB 端口的设备)可能会是一场噩梦。毕竟,你需要编辑多个配置文件,还要运行不同的命令,才能给无特权 LXC 授予正确的权限。如果有时候出现问题,排查 UID/GID 映射可真让人头疼。
相比之下,特权容器传递设备就方便多了。一旦你从主机获取了外设的设备路径,就可以直接把它粘贴到你选择的 LXC 的资源选项卡的添加部分。GPU 通常需要在容器里装上合适的驱动,但这比把它们传递给无特权 LXC 要简单多了。
网络共享同样不需要任何变通
非特权容器出于安全考虑,完全禁用了网络共享,这与设备直通不同。对于像我这样在专用NAS服务器上存储电子书、图片、ROM和提取文件的人来说,非特权容器不支持挂载网络共享是个大问题,因为这让媒体服务器LXC无法与存储的文件配对,除非采取一些变通方法。
而且,这些变通方法充其量也只是勉强可行。例如,我在主机上挂载了我的SMB共享,这样我就可以将它们与非特权的Jellyfin、Calibre-Web、Immich和RomM LXC配对。现在,强制LXC使用主机上的挂载点并不理想,如果我在高可用性集群中配置它们,甚至可能会导致它们失效。对于NFS共享,这个解决方案就更复杂了,因为你还得处理与普通系统设备相同的权限问题。
另一方面,特权 LXC 支持网络共享,因此在与媒体管理应用程序一起使用时,无需经历多个步骤。其实,我最开始把我的 Jellyfin 服务器部署成特权容器,就是为了避免这些问题。幸好我在可能对主机造成不可逆损害之前意识到了这个错误。
但它们对注重安全的朋友来说是个噩梦
毕竟,它们拥有与您的 Proxmox 节点的根用户相同的权限
虚拟化环境最大的优势之一是它们与主机机器相对隔离。当然,至少对于一般的虚拟机和非特权 LXC 来说是这样的。你知道,特权容器让挂载网络共享和配置设备直通变得特别简单,这正是因为 LXC 的根 ID 映射到了实际 Proxmox 主机的根用户。实际上,容器的权限和 PVE 的根用户是一样的。
如果容器受到威胁,恶意软件可能会轻易传播到 Proxmox 主机并感染您家庭实验室的其余部分。有人可能会认为某些恶意软件能够突破严格隔离的虚拟机,但事实是 LXC 和主机共享相同的 UID 映射,使得有特权的容器更加脆弱,即使您的家庭服务器没有暴露在互联网上。
非特权容器通过使用映射到主机上随机(通常是一个较大的数字)的 UID/GID 来解决这个问题,这些 ID 权限非常有限,这正是让在这些 LXC 上进行设备直通变得如此麻烦的原因。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.