Featured image of post 第二台NAS组装、优化以及系统构建

第二台NAS组装、优化以及系统构建

二胎有备而来~

这是第一台NAS的笔记https://11010.net/p/nas-diy-1/,上一台NAS整理完给家人用了,日常工作的城市用着太不方便了,由奢入俭难,干脆再来一台放工作城市用~

需求

8/9代主板多SATA可选性非常多,8100便宜够用。工作城市网络不好,网盘在线看视频偶尔卡顿,决定再DIY一套NAS。最后买这个机箱的理由:干啥都能用,不在乎样子,还有就是便宜。

  • 主要看视频、纪录片等

  • 不保存重要资料

  • 有个Win备用

  • 跑点docker服务

配件 型号 价格
主板 技嘉 B365M D3V 200
CPU I3-8100 114
电源 全汉FSP-300W 80
内存 梵想3200Hz 16G 2 170
系统盘 三星pm981a 100
数据盘 1T SSD STAT 0
散热 零下30度4线温控 27

BIOS设置

关于BIOS设置,每个主板都不太一样,可以把自己需求、BIOS品牌和版本告诉GPT,基本优化建议就出来了,遇到自己不知道的配置项,也可以单独发给GPT。

  • 启用 C-State(CPU 空闲状态)

    • 设置项名称:CPU C StatesEnhanced C-StatesPackage C State Limit

    • 建议设置: Enabled ,并将Package C State Limit设置为 C7 (如支持)

  • 启用 SpeedStep(节能调频):

    • 设置项名称:Intel SpeedStep/EIST/CPU Enhanced Halt (C1E)

    • 建议设置: Enabled

  • 启用 ASPM(主动状态功耗管理) :

    • 设置项名称:PCI Express ASPM Support

    • 建议设置: L1 或 Auto

    • 说明:降低空闲时 NVMe 与主板之间的功耗

  • 启用 SATA 电源管理 :

    • 设置项名称:SATA Aggressive Link Power Management(ALPM)

    • 建议设置: Enabled

  • 关闭未使用的设备 :

    • 串口(Serial Port)

    • 音频控制器(HD Audio)

    • 板载 Wi-Fi / 蓝牙(如果有)

    • 板载网口(除用于 ESXi 的)

    • 板载 RGB / 灯效

  • XMP 配置:

    • 设置项名称:XMP Profile

    • 建议设置: Disabled 或选择较低频率手动设置

    • 原因:XMP 往往会提高内存电压

  • NVMe功耗管理:

    • 如果 BIOS 支持NVMe Power StateNVMe L1.2,可启用
  • SATA 模式 :

    • 设置项名称:SATA Mode Selection

    • 建议设置: AHCI (不要使用 RAID)

  • 关闭 RGB 灯效 (主板或风扇上的灯):

    • 设置项名称:LED LightingAura Lighting

    • 建议设置: Disabled on sleep/standby or completely

  • UEFI启动模式优先 :

    • 设置项名称:Boot Mode

    • 建议设置: UEFI only

    • 有助于更快的启动和一些平台节能

  • 冷启动风扇策略 :

    • 设置项名称:Smart FanFan Stop(不同 BIOS 名称不同)

    • 可设定在低温时关闭系统风扇或降低转速

系统

这次用的PVE做虚拟环境,工作居住地没有公网环境,在PVE系统装个frp,利用SSH穿透 + vscode远程窗口很容易操作PVE控制台。

  • ubuntu:硬盘直通,跑 docker 服务,共享目录给其他虚拟机

  • 飞牛OS:直通核显,媒体服务器

  • win10: 偶尔使用的时候开机

功耗

硬件和系统规划如上,待机大概22瓦,常规使用大概21瓦-30瓦范围,24小时开机0.6度电。

为什么用Ubuntu管理硬盘

  • 我没什么重要文件

  • 系统环境对我来说越简单越好

  • 我随时准备把系统换成别的,不想数据倒来倒去

  • 如果有重要的数据盘,也可以单独直通到其他NAS或用PVE存储池管理重要数据,不重要的数据继续在Ubuntu上

PVE 直通数据盘

1
2
3
4
5
# 查询硬盘 by-id 路径
ls -l /dev/disk/by-id/

# 直通 101 是我ubuntu虚拟机 id 是我数据盘id
qm set 101 -virtio1 /dev/disk/by-id/ata-WANYAO_1TB_SSD_PRN24102900001

在PVE下格式化磁盘

1
2
3
4
5
# 这个盘刚开始用,所以直接格式化重新分区
# 在v-ubuntu 虚拟机操作即可
sudo parted /dev/vda -- mklabel gpt
sudo parted /dev/vda -- mkpart primary ext4 0% 100%
sudo mkfs.ext4 /dev/vda1

在Ubuntu安装 nfs-kernel-server

1
2
sudo apt update
sudo apt install -y nfs-kernel-server

在Ubuntu创建分享目录

1
2
3
4
5
6
# 参考 OMV 目录,硬盘挂载到 srv 目录下,后续都是单个硬盘直通,根据功能取名,例如 nfs_media
sudo mkdir -p /srv/nfs_media

# 修改用户和用户组,改成自己的用户组和用户
sudo chown ubuntu:ubuntu /srv/nfs_media
sudo chmod 755 /srv/nfs_media

Ubuntu挂载直通的数据盘

1
2
3
4
5
6
# 开机自动挂载,第二行是执行完命令后,显示我的硬盘uuid,
sudo blkid /dev/vda1
/dev/vda1: UUID="3aa7e88e-d1d1-4140-bf38-305fa0abf8bb" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="7d4aeee3-eb77-4d49-a933-ed3b8955bc39"

# sudo vim /etc/fstab 添加上面输出的UUID内容
UUID=3aa7e88e-d1d1-4140-bf38-305fa0abf8bb /srv/nfs_media ext4 defaults 0 2

Ubuntu配置 NFS 共享目录

编辑文件:sudo vim /etc/exports

1
2
# no_subtree_check: 性能优化,适用于整个目录共享, no_root_squash:不用root操作
/srv/nfs_media 192.168.3.0/24(rw,sync,no_subtree_check,no_root_squash)

重启生效:sudo exportfs -ra 开机启动:sudo systemctl enable –now nfs-server

测试在飞牛挂载NFS目录

直通核显给飞牛OS

PVE修改GRUB配置

vim /etc/default/grub

1
2
3
## 把这一行注释掉,修改成下面的
# GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off"

保存后执行

1
update-grub

PVE启用 VFIO 模块

vim /etc/modules # 编辑文件,添加如下内容

1
2
3
4
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

PVE屏蔽 i915 模块

1
update-initramfs -u

绑定核显设备ID

1
2
3
4
5
6
7
8
# 查看核显设备ID
lspci -nn | grep -i vga

# 输出,设备ID:8086:3e92
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Desktop 9 Series) [8086:3e92]

# 绑定核显设备ID
echo "options vfio-pci ids=8086:3e92" > /etc/modprobe.d/vfio-pci.conf

重启PVE

1
reboot

验证直通

1
2
3
4
5
6
root@pve:~# dmesg | grep -i vfio
[    4.656337] VFIO - User Level meta-driver version: 0.3
[    4.688038] vfio-pci 0000:00:02.0: vgaarb: deactivate vga console
[    4.688043] vfio-pci 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    4.688185] vfio_pci: add [8086:3e91[ffffffff:ffffffff]] class 0x000000/00000000
[   19.554481] vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff

直通PCIe给飞牛OS

我的飞牛虚拟机ID为101

1
qm set 101 -hostpci0 00:02.0,x-vga=1,pcie=1

记录下我飞牛虚拟机的配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
boot: order=scsi0
cores: 4
cpu: host
hostpcil: 0000:00:02, x-vga=1, pcie=1
ide2: local:iso/fnos-0.9.24-1091.iso,media=cdrom,size=2219520K
machine: q35
memory: 8192
meta: creation-qemu=10.0.2, ctime=1758347780
name: fnos
neto: virtio=BC:24:11:A6:0E:58, bridge=vmbr0
numa: 0
onboot: 1
ostype: 126
scsiO: local:102/vm-102-disk-0.qcow2,iothread=1, size=32G, ssd=1
scsil: local:102/vm-102-disk-1.qcow2, iothread=1, size=32G, ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=fb280b13-97ce-4d34-badc-fc2adaf23b72
sockets: 1
vmgenid: 75416911-1074-4bcf-a39e-2fe9a9102518

关于定时自动开机

本来设置的10点启动,结果白天ssh连接失败,用小米路由器软件看了下,这货也没联网,大概知道是启动失败了。晚上下班回家后看机器已经启动了,看了下PVE启动时间是18点,大概是RTC问题。

最近查了下真正的原因:绝大多数主板的“定时开机”功能是基于 RTC 硬件时钟,不会管 Linux 时区。比如我在 BIOS 设置上午 10 点开机。BIOS 会在 RTC = 10:00 UTC 的时候触发,所以实际触发时间会比晚 8 个小时。

查看

1
timedatectl status

推荐方案A:修改 BIOS 开机时间

把开机时间按 UTC 时间来算,比如你想在北京时间 10 点开机,那把时间设置成 2 点,倒推 8 个小时。

方案B: 同步时间

让系统使用本地时间作为硬件时钟,第二天正常10点自动开机了

1
timedatectl set-local-rtc 1 --adjust-system-clock
Licensed under CC BY-NC-SA 4.0
最后更新于 Sep 23, 2025 09:39 CST