在 Proxmox 上运行 Ollama:LXC、虚拟机和 GPU passthrough
Proxmox VE 是家庭实验室的瑞士军刀:一个自由、资源占用低的高性能 hypervisor,能够在单台服务器上让轻量级容器和隔离的虚拟机共存。在 Proxmox 上运行 Ollama,意味着可以在多个服务间共享昂贵的 GPU,同时保持推理 100% 在本地进行。本指南涵盖两种路径——LXC 配合共享 GPU(简单)和 VM 配合完整直通(规范)——并详细说明了 NVIDIA 配置以及那些会让您浪费整个晚上的 IOMMU 陷阱。
#为何在Proxmox上部署 Ollama
在家庭实验室中,人们很少希望有一台只用于 AI 的专用服务器。Proxmox 可以将 Ollama 与您的其他服务(NAS、家庭自动化、反向代理)部署在同一台机器上,同时隔离各项负载。此时,Ollama 守护进程运行在容器或虚拟机中,监听其惯用端口,并可从整个本地基础设施访问——无论是另一个容器中的 Open WebUI、n8n 工作流,还是您的工作电脑。
核心问题在于 GPU。没有硬件加速的 LLM 推理可以使用,但速度很慢;要让 14B 或 32B 模型以较好的速度运行,就需要让 Ollama 能访问一张 NVIDIA 显卡。然而,GPU 虚拟化并不简单:Proxmox 提供了两种截然不同的方案,它们在操作简便程度和部署规范性方面各有取舍,优劣恰好相反。
#LXC与VM:对于Ollama,应如何选择
在你的机器上执行操作的智能体:具备智能体能力的 Cline、MCP、n8n + Ollama、本地自动化。
- 在线空间,终身可用
- PDF + 文件
- 终身更新
这是首先要做的决定,它决定了后续的一切。LXC 容器共享主机内核:轻量、启动即刻完成,尤其是,它可以访问主机的 GPU,同时主机仍可使用这块 GPU。而虚拟机是一台完整且隔离的机器;要让它使用 GPU,就必须通过 VFIO 直通将整块 GPU 专门分配给它——主机随后便完全无法使用这块显卡。
- LXC + 共享GPU
- 简单方案:NVIDIA 驱动已安装在主机和容器中(版本一致),/dev/nvidia* 设备被挂载到容器内。GPU 可同时被主机和其他容器使用。如果您只想共享一张显卡,此方案非常合适。
- 虚拟机 + 完整直通
- 更干净的方案。通过 VFIO/IOMMU 将 GPU 从主机解绑,并分配给虚拟机。实现完全隔离,在虚拟机内像在裸机上一样管理驱动程序,互不干扰。但只要这台虚拟机还在运行,GPU 就由它独占。
- 决定性标准
- 只有一张显卡,需要在多个服务之间共享 → LXC。有一张专用于 AI 的显卡(或多个 GPU),且需要严格隔离 → VM。如果您希望运行不同的操作系统(Windows 或使用特定驱动的操作系统),也必须使用直通(passthrough)。
#硬件要求和显存
根据目标模型的规模来配置 GPU。在 Q4_K_M 量化(质量与内存的最佳平衡)下,不同模型规模所需的 VRAM 如下。请始终为上下文预留额外空间。
- 3B(≈2 GB)
- RTX 3060 12GB 绰绰有余。即使仅使用 CPU,进行测试也能轻松应对。
- 7B(≈5 GB)
- RTX 3060 12GB 或 RTX 4070 12GB。家庭实验室的理想入门配置。
- 14B (≈9 GB)
- RTX 4070 12GB 的显存比较紧张,RTX 4080 16GB 则比较宽裕。
- 32B(≈19 GB)
- 需要RTX 4090 24GB,或使用双卡tensor-split
- 70B(≈40 GB)
- 多GPU(2× RTX 4090)或搭载48 GB及以上统一内存的Mac M4 Pro/Max。
在虚拟化方面,VM 的直通需要比 LXC 更严格的先决条件:CPU 和主板必须支持 VT-d(Intel)或 AMD-Vi(AMD),BIOS 中必须启用 IOMMU,理想情况下还需为 GPU 分配独立的 IOMMU 组。而 LXC 则无需这些条件——只需在主机上安装 NVIDIA 驱动即可。
#LXC配合共享GPU,简易方案
原理:在 Proxmox 主机上安装 NVIDIA 驱动程序,创建一个非特权的 LXC 容器,挂载 GPU 设备,然后在容器中安装相同版本的驱动程序(不含内核模块)及 Ollama。主机与容器的驱动版本必须一致,否则容器的用户空间将拒绝与主机内核模块通信。
- 01在主机上安装 NVIDIA 驱动程序安装内核头文件,然后从NVIDIA软件仓库安装驱动程序(也可使用官方.run文件)。继续之前,请用nvidia-smi确认主机已正确检测到显卡。
- 02创建一个非特权的 LXC 容器可使用 Debian 12 或 Ubuntu 24.04 模板。启用嵌套模式(nesting=1)以支持 GPU 运行时。记录容器 ID(例如 200)。
- 03检测GPU设备在宿主机上列出 /dev/nvidia* 设备节点,并记录它们的主设备号和次设备号。接下来要向容器开放的就是这些设备节点。
- 04在LXC配置中挂载设备编辑 /etc/pve/lxc/200.conf,在 cgroups 配置中允许访问 NVIDIA 设备,并通过绑定挂载将这些设备挂载到容器中。重启容器。
- 05在容器中安装相同的驱动程序在容器中使用 --no-kernel-module 选项安装 NVIDIA 驱动程序(内核模块来自宿主机)。此时 nvidia-smi 应能在容器内正常运行。
- 06安装 Ollama官方脚本会自动检测 GPU。Ollama 会启动其守护进程,并将模型加载到共享的显卡上。
#采用完整直通的虚拟机:更规范的方案
在这种配置中,GPU 不再由宿主机使用,而是通过 VFIO 分配给虚拟机。虚拟机看到的是一块真正的 NVIDIA 显卡,运行方式与裸机相同:在其中正常安装驱动即可,无需折腾驱动版本。相应地,需要预先配置宿主机,让它在启动时释放显卡(绑定到 VFIO),并确保宿主机内核不加载 nvidia 驱动。
- 01开机时启用IOMMU根据您的 Proxmox 安装方式,在 GRUB 或 systemd-boot 中,将 intel_iommu=on(或 amd_iommu=on)和 iommu=pt 添加到内核参数中。
- 02为 VFIO 隔离 GPU识别显卡的 PCI ID(包括 GPU 及其 HDMI 音频设备),将这些 ID 配置到 vfio-pci 中,并在宿主机上将 nouveau/nvidia 驱动加入黑名单,防止宿主机接管这些设备。
- 03重新生成 initramfs 并重启更新 initramfs,使其包含 VFIO 模块,然后重启宿主机。确认 GPU 已由 vfio-pci 驱动接管。
- 04创建虚拟机并分配GPU创建虚拟机(机器类型 q35,BIOS 使用 OVMF/UEFI),添加 GPU PCI 设备直通,并勾选 PCI-Express。安装来宾操作系统(推荐 Ubuntu Server)
- 05在虚拟机中安装驱动程序 + Ollama在虚拟机中安装常规 NVIDIA 驱动(这里允许使用内核模块,因为这是一台完整的机器),用 nvidia-smi 验证,然后安装 Ollama。
#IOMMU、驱动程序及常见陷阱
直通功能很少无缘无故失败:几乎总是由 IOMMU 或隔离不当的 PCI 组引起。下面介绍最常见的障碍及其诊断方法。
- 未隔离的 IOMMU 组
- 如果 GPU 与其他设备(USB 控制器、另一块扩展卡)共享同一个 IOMMU 组,Proxmox 会拒绝直通。请检查这些组;作为最后手段,ACS override 补丁可以将组分开,但代价是隔离不再那么严格。
- 主机占用GPU
- 重启后,若 lspci 显示 GPU 为「nvidia」或「nouveau」而非「vfio-pci」,说明黑名单未生效。请检查 /etc/modprobe.d 并重新生成 initramfs。
- BIOS 中 IOMMU 未启用
- dmesg 未显示任何 DMAR/IOMMU 信息:VT-d 或 AMD-Vi 在固件中已禁用。请在 BIOS 中启用该功能后再进行操作。
- LXC 驱动版本不同步
- 仅限LXC侧:主机更新后出现NVML版本不匹配。请对主机与容器的版本进行对齐。
- 主机控制台使用的GPU
- 如果只有一块 GPU,而且它还负责 Proxmox 的视频输出,就很难妥善实现 GPU 直通。理想情况下,请保留核显或第二块显卡,用于宿主机显示。
#让局域网中的设备访问 Ollama
默认情况下,Ollama 仅监听 http://localhost:11434 — 因此只能从容器或虚拟机内部访问。若需从其他位置托管的 Open WebUI 或本地设备调用,需通过 OLLAMA_HOST 变量配置其监听所有网络接口。
#故障排除
- 容器中缺少 nvidia-smi
- 设备未挂载,或 cgroups 的设备访问授权配置不正确。请检查 lxc.mount.entry 和 lxc.cgroup2.devices.allow 配置行,再通过 ls -l /dev/nvidia* 核实实际的主设备号。
- Ollama 在 CPU 上运行,即使有 GPU
- 检查 ollama ps 的输出:如果模型显示为“100% CPU”,说明 CUDA 运行时未检测到显卡。检查 nvidia-smi 的输出,并重启 Ollama 守护进程。
- 添加PCI后虚拟机无法启动
- 通常为 OVMF/q35 或共享 IOMMU 组问题。请检查虚拟机日志,并确认主机端显卡是否正确配置在 vfio-pci 上。
- 更新 Proxmox 后性能下降
- 主机内核更新可能会导致 NVIDIA(LXC)模块或 VFIO 绑定失效。请重新安装头文件和驱动程序,并重新生成 initramfs。
#深入了解
在Proxmox上部署完Ollama后,本网站指南可帮助完成技术栈搭建并选择合适的硬件:
- 在 Linux 上安装 Ollama
- 详细介绍守护进程的规范安装、systemd 设置及 NVIDIA/AMD GPU 配置,适用于容器或虚拟机内部环境。
- 使用 Docker Compose 在生产环境中部署 LLM
- 用于将 Open WebUI、Qdrant 和反向代理与您在 Proxmox 上运行的 Ollama 整合成一套完整的技术栈。
- 为本地 AI 选择 GPU
- 这份 2026 年选购指南帮助您根据目标模型,确定供 LXC 使用或通过 GPU 直通方式使用的显卡所需规格。
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。