Proxmox VE 安装并直通硬盘给 NAS 系统:一台机器跑所有
一、为什么要在 PVE 上跑 NAS
很多人纠结:一台机器,到底是装 Unraid、TrueNAS,还是 OMV?
Proxmox VE(PVE)提供了另一个思路:先装虚拟化平台,再把 NAS 系统装进虚拟机。
这样做的好处:
- 一台机器同时跑多个系统。NAS 是虚拟机,软路由是虚拟机,Home Assistant 也是虚拟机,互不干扰
- 快照和备份方便。整个虚拟机可以快照,玩坏了秒回滚
- 硬件利用率高。不跑 NAS 的时候,CPU 和内存可以分给其他任务
- 折腾的容错成本高。PVE 层不炸,虚拟机随便玩
代价:
- 硬盘管理必须直通。NAS 系统需要直接控制物理硬盘,虚拟化层会把这层控制挡住,必须专门配置
- 有一定的学习曲线。网络、存储、直通这些概念要理解
- 多一层性能损耗。现代 CPU 的虚拟化支持已经很好,直通之后损耗几乎可以忽略

二、硬件要求
| 项目 | 要求 |
|---|---|
| CPU | 支持硬件虚拟化(Intel VT-x / AMD-V),支持 VT-d / AMD-Vi(直通必需) |
| 内存 | 8GB 起步,16GB 以上舒适 |
| 系统盘 | 128GB 以上 SSD(PVE 本身 + 虚拟机镜像) |
| 数据盘 | 独立于系统盘,用于直通给 NAS |
| 网卡 | 千兆,做软路由建议双网口 |
关键点:CPU 必须支持 IOMMU(Intel 叫 VT-d,AMD 叫 AMD-Vi),否则无法做硬盘/控制器直通。近十年内的桌面 CPU 基本都支持,但需要在 BIOS 里手动开启。
三、安装 PVE
下载与制作启动盘
去 Proxmox 官网下载 ISO,用 balenaEtcher 或 Ventoy 写入 U 盘。
安装步骤
1. U 盘启动,选 Install Proxmox VE (Graphical) 2. 同意许可协议 3. 选择目标磁盘:选你的 SSD。可以点 Options 调整分区大小(一般默认就行) 4. 国家与时区:Country 填 China,Time zone 选 Asia/Shanghai 5. 设置密码和邮箱:root 密码要记牢,邮箱用于接收告警 6. 网络配置:设置主机名(格式如 pve.local)、IP 地址、网关、DNS。家用建议直接配置静态 IP 7. 确认后开始安装,大约 5 到 10 分钟 8. 装完重启,拔掉 U 盘
登录
重启后屏幕会显示管理地址:https://你的IP:8006
浏览器打开(注意是 https,会有证书警告,跳过即可),用 root 和你设的密码登录。
去掉订阅弹窗
社区版每次登录会提示没有订阅。可以执行以下命令去掉(通过 SSH 或者 Web 的 Shell):
sed -i 's/NotFound/Active/g' /usr/share/perl5/PVE/API2/Subscription.pm
systemctl restart pveproxy
然后配置社区软件源(把企业源注释掉,加 pve-no-subscription 源),再执行更新。
四、开启 IOMMU(直通的前提)
BIOS 设置
进 BIOS,开启:
- Intel:VT-x、VT-d
- AMD:SVM Mode、IOMMU
不同主板位置不同,一般在 Advanced → CPU Configuration 里。
修改 GRUB
SSH 登录 PVE,编辑 /etc/default/grub,找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行:
- Intel CPU:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
- AMD CPU:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
保存后执行:
update-grub
加载内核模块
编辑 /etc/modules,加入:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
然后更新 initramfs:
update-initramfs -u -k all
重启验证
reboot
重启后执行:
dmesg | grep -e DMAR -e IOMMU
看到类似 DMAR: IOMMU enabled 的输出,说明 IOMMU 开启成功。
再检查分组:
find /sys/kernel/iommu_groups/ -type l
有输出说明分组正常。
五、硬盘直通:两种方式
方式一:单盘直通(qm set)
最简单的方式,把单块硬盘直接挂给虚拟机。
第一步:确认硬盘标识
ls -l /dev/disk/by-id/
找到你的硬盘,会看到类似 ata-ST4000VN008-xxxxx_ZZZZZZZ 这样的名字。用 by-id 的名字,不要用 /dev/sdb,因为设备名可能会变。
第二步:挂载到虚拟机
假设虚拟机 ID 是 100:
qm set 100 -scsi1 /dev/disk/by-id/ata-ST4000VN008-xxxxx_ZZZZZZZ
这条命令把硬盘作为 scsi1 设备挂给 VM 100。之后可以在 Web 界面看到。
优点:简单,一块一块加,灵活。 缺点:虚拟机拿到的是「一块硬盘」,能看到型号但看不到 SMART 完整信息(部分信息被虚拟化层屏蔽)。
方式二:SATA 控制器直通(推荐)
把整个 SATA 控制器(或者 HBA 卡)直通给虚拟机,虚拟机直接控制控制器上的所有硬盘。
第一步:找到控制器的 PCI 地址
lspci -nn | grep -i sata
输出类似:
00:17.0 SATA controller [0106]: Intel Corporation xxx [8086:a282]
记下 00:17.0 和设备 ID 8086:a282。
第二步:确认 IOMMU 分组
find /sys/kernel/iommu_groups/ -type l | grep "00:17.0"
第三步:绑定到 vfio
编辑 /etc/modprobe.d/vfio.conf:
options vfio-pci ids=8086:a282
然后更新并重启。
第四步:在 Web 界面添加 PCI 设备
虚拟机 → Hardware → Add → PCI Device,选择对应的控制器,勾选 All Functions 和 PCI-Express。
优点:虚拟机完全控制硬盘,SMART 信息完整,性能最好,热插拔也能识别。 缺点:整个控制器上的盘都归虚拟机,包括 PVE 自己的系统盘如果也在同一个控制器上,会导致 PVE 无法启动。
所以:PVE 系统盘一定要装在独立的控制器上(比如 NVMe SSD 或者另一个 SATA 控制器),把要直通的那个控制器单独留给 NAS 虚拟机。
六、创建 NAS 虚拟机
上传 ISO
在 PVE 的 Web 界面,local → ISO Images → Upload,上传你要装的 NAS 系统 ISO(Unraid、TrueNAS、OMV 都行)。
创建虚拟机
点「Create VM」:
- General:填名称,比如
unraid或truenas - OS:选择刚才上传的 ISO,类型选 Linux
- System:
- BIOS:UEFI(OVMF)
- 勾选
Add EFI Disk - Machine 选
q35 - Disks:先随便给一块小盘(后面会删掉或不用),或者直接用直通的盘
- CPU:给 2 到 4 核,类型选
host(性能最好) - Memory:给 4GB 以上(TrueNAS 建议 8GB+)
- Network:默认 VirtIO 就行
调整启动顺序
创建完后,在虚拟机的 Options → Boot Order 里,把 CD-ROM 排到第一位。
安装系统
启动虚拟机,打开 Console,按正常流程装 NAS 系统。装到直通的硬盘上。
装完把 ISO 移除,改启动顺序。
七、重要提醒
1. 备份 PVE 配置
PVE 的系统盘如果挂了,所有虚拟机都受影响。定期备份 /etc/pve 目录。
2. 不要直通 PVE 系统盘所在的控制器
这是最常见的翻车原因。直通之后 PVE 读不到自己的系统盘,直接无法启动,只能重装。
3. 硬盘休眠可能失效
直通之后,部分情况下硬盘无法进入休眠状态。在意功耗的话,用单盘直通(方式一)比控制器直通更容易保留休眠能力。
4. 做好备份
虚拟化的好处是可以快照,但快照不等于备份。重要数据依然要遵循 3-2-1 原则。
5. 虚拟机里的 NAS 也要做安全设置
不要因为是内网虚拟机就放松警惕。VLAN 隔离、强密码、及时更新,该做的都要做。
八、常见问题
Q:直通后 PVE 启动不了?
大概率是直通了系统盘所在的控制器。进 BIOS 把 PVE 装到另一个控制器上(比如 NVMe),再直通原来的 SATA 控制器。
Q:虚拟机里看不到硬盘?
检查直通是否生效(虚拟机 Hardware 里是否有对应设备);确认硬盘没有被 PVE 占用(如果 PVE 已经挂载了这块盘,要先卸载)。
Q:IOMMU 分组不理想?
老旧主板的 IOMMU 分组可能很粗,一个组里包含多个设备,无法单独直通。可以尝试开启 ACS 补丁(有风险),或者换主板。
Q:性能损耗大吗?
直通之后基本没有损耗。CPU 选 host 模式、网卡用 VirtIO、磁盘用 SCSI 配合 VirtIO SCSI 控制器,性能接近物理机。
Q:可以把 Unraid 的 U 盘直通吗?
可以。Unraid 对 U 盘 GUID 敏感,直通整个 USB 控制器比直通单个 USB 设备更可靠。
Q:PVE 和直接装 NAS 系统,哪个更好?
需求单一(只做存储)→ 直接装 NAS 系统,简单省事。 想一机多能(软路由 + NAS + 智能家居)→ PVE,一台顶三台。
九、小结
PVE 加硬盘直通,是「一机多用」场景下最优雅的方案。它把硬件资源池化,让 NAS、软路由、各种服务各占一个虚拟机,互不干扰又能共享硬件。
整个流程里,唯一的重大风险点是直通控制器时误伤系统盘。只要把 PVE 装在独立的 NVMe 或者 M.2 上,把 SATA 控制器整体留给 NAS,这个方案就非常稳。
配置完成之后,你会获得一台「既是 NAS 又是服务器」的机器,而且每个系统都有快照保护,折腾起来毫无心理负担。