技术笔记

Proxmox VE 安装并直通硬盘给 NAS 系统:一台机器跑所有

yaobingbin yaobingbin · · 约 10 分钟 · 0 条评论

一、为什么要在 PVE 上跑 NAS

很多人纠结:一台机器,到底是装 Unraid、TrueNAS,还是 OMV?

Proxmox VE(PVE)提供了另一个思路:先装虚拟化平台,再把 NAS 系统装进虚拟机。

这样做的好处:

  • 一台机器同时跑多个系统。NAS 是虚拟机,软路由是虚拟机,Home Assistant 也是虚拟机,互不干扰
  • 快照和备份方便。整个虚拟机可以快照,玩坏了秒回滚
  • 硬件利用率高。不跑 NAS 的时候,CPU 和内存可以分给其他任务
  • 折腾的容错成本高。PVE 层不炸,虚拟机随便玩

代价:

  • 硬盘管理必须直通。NAS 系统需要直接控制物理硬盘,虚拟化层会把这层控制挡住,必须专门配置
  • 有一定的学习曲线。网络、存储、直通这些概念要理解
  • 多一层性能损耗。现代 CPU 的虚拟化支持已经很好,直通之后损耗几乎可以忽略

Proxmox VE 安装并直通硬盘给 NAS 系统:一台机器跑所有

二、硬件要求

项目 要求
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 FunctionsPCI-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:填名称,比如 unraidtruenas
  • 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 又是服务器」的机器,而且每个系统都有快照保护,折腾起来毫无心理负担。

评论经后台审核通过后显示 · 请勿发布广告、外链或无关内容

发表评论

邮箱地址不会被公开。填写昵称与邮箱后方可评论。