我为什么用 Fedora Server 做 NAS 系统
> 写于 2026-08-09 。这篇文章讲讲我为什么走到现在这套方案。
## 0. 叠甲:先说明白几件事
> 本文是个人博客向的记录与观点分享。**重点是介绍我自己的 NAS 是怎么搭的**,对其它系统的讨论只作参照,不为分高下。在阅读之前,请先接受以下立场:
1. **方案无优劣,只有适配。** 成品 NAS、TrueNAS、Windows、Fedora Server——每个方案都对应一种风险偏好和维护意愿。我的选择只代表“我的需求与偏好”,不能覆盖你心里的白月光。
2. **飞牛、群晖这类成品 NAS 系统各有适用场景。**本文里对它们的讨论,都限定在“与我的存储和系统哲学不完全合拍”的语境里;依赖图形界面和集成服务的话,它们往往更省心。
3. **经验来自一台具体机器。**我的结论建立在特定硬件和场景(硬件见 2.2 节),换一台机器,结论可能完全不同。
4. **我大量用“我行我素”的判断。** 不用 RAID、不用快照、信任 XFS、接受无冗余——这些基于我自己的备份闭环和风险接受度,**请勿照搬,风险自负**。
还有最重要的一点:下面这套**存储哲学是全文锚点**——你先看看它,再决定要不要看我后面的内容。
---
## 1. 存储哲学:七条原则
### 1.1 无冗余设计,丢了就重建
最重要的一条:我四块数据盘都是单盘直挂,没有 RAID、没有镜像、没有热备。
商业 NAS 卖点基本都围绕 RAID 转:镜像、容错、双盘冗余、热备……但 RAID 真解决的是一个具体问题——盘用着用着坏了,而你没别的副本。它用多买几块盘的成本,换取坏盘时还能继续运行的机会。机会有边界,不能让风险降到零。阵列重建时第二盘挂了、固件 bug 一波带走全部数据、控制器坏了救援难,这些事故每年都真实发生。
在我这里,RAID 不如备份更值钱:它牺牲容量,还让人懒得备份。单盘就是单盘,坏了换一块,管理和恢复都更直观。
不靠 RAID 保命,我把数据分两类处理:独一无二的靠备份(见 1.2 节),能再下载的只留索引(见 1.3 节)。
### 1.2 独一无二的数据,靠全量备份兜底
三个层级的备份:
1. 长期保存的目录,打成带 10% 恢复记录的 RAR 分卷(分卷自带冗余,轻微损坏能自愈)
2. 再生成 par2 冗余包,这是第二层:文件传输或存储时数据坏了,par2 可修复坏的部分,无需整包重传
3. 最后用官方网盘客户端上传
为什么这么复杂?因为网盘不保证文件完整性。传输中断、服务商不稳定、硬盘老化,随时可能下载解压失败。恢复记录加 par2,给网盘里存的那份文件多加一层纠错,即使小范围坏了,也能修回来。
### 1.3 能再下载的东西,只留索引
我的 33TB 存储里,动画、视觉小说占绝大多数,它们有共同特点:能从网上重新下载。所以我这样做:
- 每晚全盘扫描生成目录索引(具体在 3.5 节),同步到手机浏览
- 判断不常用内容,删除实体文件,只留索引
- 想看时查索引,重新下
这个策略让硬盘永远装不满,解决了“空间忧虑”,索引生成速度也体现了文件系统的区别。
### 1.4 版本需求交给 git
代码、文档需要历史版本?git 解决得比 NAS 的版本功能强且通用。我的 NAS 不需要快照,跟预算无关,只是没这需求。
### 1.5 相册: Syncthing 同步,原生浏览
手机相册是商业 NAS 的一个重点:群晖 Photos、飞牛相册、Immich……用久了人们也会绑死数据格式、APP、识别能力。
我做法简单:Syncthing 实时同步手机相册到 NAS,手机用原生相册浏览。
### 1.6 告警用邮件就够
Scrutiny 每天凌晨巡检硬盘 SMART,出问题就发邮件。我的 NAS 不需要秒级响应,邮件是最靠谱又不依赖厂商的告警渠道。
### 1.7 盘不拔插
硬盘永远装在机器里,传输用 Samba,不用 Windows 直接拔盘读取。Linux 上文件系统足够稳定,对我来说够了。
---
## 2. 这台 NAS 的来历和现状
### 2.1 从 Windows Server 到 Fedora Server
这机器以前跑 Windows Server ,系统从 2022 升到 2025,数据盘是 NTFS。运行了一年多,今年(2026)端午节重装 Fedora Server 44,期间完成数据盘 NTFS 到 XFS 迁移。
装之前我先在虚拟机里玩了几天,熟悉了 Podman、SELinux,买了新硬盘备用。装 Fedora 时直接拔掉 Windows 系统盘,装系统盘换新盘。这样装失败能回滚,服务不需重配。原 Windows 盘闲置当缓存用。
我选 Fedora Server,是看中了 Linux 7.1 引入的新 ntfs.ko 驱动,我偏好它而不是原来的 ntfs3。想继续用 NTFS 数据盘,但 Fedora 内核没启用这个驱动选项,还得自己编译,临时禁内核更新防覆盖。
等了几核内核版本,Fedora 官方没开,我写脚本自动检查(现在删了)。驱动还能用,但文件数有限制,inode 计数不会增长,新文件写不进盘。继续搞没意义,Linux 上的 NTFS 对我数据量不够用,fstab 也得写一大串权限规则。最后把数据盘全格式化成 XFS,结束 NTFS 路线。
格式化没一次全来。四盘空间凑够,我像玩华容道,用 tmux+Rsync 盘间搬数据,空一块格式化一块,数据一直在本地盘,四盘全部换成 XFS。
### 2.2 硬件和存储
硬件是 2017 年闲鱼购入:i3-7100T,16G 内存(原单 16G,涨价前换成双 8G),4 块机械盘(2 块 WD 4T,1 块希捷 14T,1 块 WD 14T),2 块 128G M.2。四块数据盘全是 XFS(存储配置详见 3.1)。
### 2.3 当前运行的服务
机器运行 14 个容器(清单和端口详 3.2),宿主机跑 Samba 共享(见 3.2),远程访问通过 Xray 隧道 + frp(架构详 3.3)。
备份和索引任务定时跑(cron,准备迁移 systemd timer),对应 1.2 和 1.3 章策略,具体见 3.5。
---
## 3. 技术架构总览
### 3.1 存储层: 全盘 XFS,单分区直挂
四块数据盘都是 XFS 单分区,fstab 用 UUID + `noatime,nofail`。盘符会随 SATA 线接法变,挂载配置认 LABEL/UUID:Old-1、Old-2、New-1、New-2。格式化时保留 `ftype=1`(容器 overlayfs 硬性要求)。系统盘用 LVM,SSD-Cache 专门跑压缩解压等临时 IO。还有两块 VeraCrypt 加密卷(H、Weii),平时空目录,随需挂。
为什么不用 btrfs?我没快照和 RAID,需要单盘直挂降低管理复杂度,还不信任 btrfs(尽管 Fedora Desktop 默认启用)。XFS 历史悠久,大文件顺序 IO 适合我,够用。
### 3.2 服务层: Podman,rootless 为主
容器两类:12 个 rootless(用户级,linger 常驻)+ 2 个 rootful(webtop 和 scrutiny,开机自启走系统服务)。更新容器时,我先开代理再执行 `podman pull`,重建前关代理。原因是 Podman 会把调用者环境的 `*_PROXY` 自动带进新容器,容器内的 `127.0.0.1:1145`指向自己,代理地址死,这坑我踩过,维护手册 3.2 章有记。
| 容器 | 端口 | 作用 |
|-----------------|-----------------|-------------------------------|
| Syncthing | 8384 | 同步工具(相册、笔记) |
| qBittorrent-EE | 7474 | BT 下载 |
| OpenList | 5244 | WebDAV 服务器,顺带挂载网盘 |
| openlist_mysql | 3306 | OpenList 的 MySQL 数据库 |
| openlist_meilisearch | 7700 | OpenList 搜索索引 |
| Open-WebUI | 8080 | 一站式 AI 对话,绑定中转站 |
| Bili-Sync | 12345 | B站视频自动同步 |
| PeerBanHelper | 9898 | BT 恶意 Peer 自动封禁 |
| dufs | 5000 | 临时文件上传(替代以前 Windows Server 的 localsend) |
| vnstat-dashboard| 8685 | 网络流量统计面板 |
| FluxDown | 17800 | 视频下载服务 |
| frpc | — | 内网穿透客户端(host 模式) |
| webtop(rootful) | 3000/3001 + 1145| 百度网盘/115 GUI 客户端 + 全局代理核心 (V2rayN) |
| scrutiny(rootful)| 8088/8086 | 硬盘 SMART 健康监控 |
| Jellyfin (按需) | 8096 | 媒体服务器(核显转码,默认不启)|
| Minecraft (按需)| 25565 | 联机游戏服务器 |
> Jellyfin 和 Minecraft 平时不常驻,需要用时才启。
宿主机运行 Samba,8 个共享,覆盖四块数据盘、两块加密卷、SSD 缓存盘和临时目录,主要给 Windows 机器用。
### 3.3 远程层:零端口暴露
公网唯一入口是 VPS 上的 Xray 隧道(用抗量子加密算法,防未来量子计算破解),frp 跑在隧道里。路由器和 NAS 没有直接公网端口,外部扫描进不了服务。唯一临时例外是 Minecraft,联机时才启一个独立 frp 通道暴露端口,不开啥都没。
架构图:
```
[访问端(如手机)] -> 请求访问 22.22.22.22:8384
│
(加密隧道)
▼
[VPS: Xray/3X-UI 服务端]
│
├─ (触发路由匹配 22.22.22.22:8384 -> 出站 to-8384)
│
└─ (执行 Redirect 重定向到 11.11.11.11:8384)
│
[VPS: Linux 内核接管] -> 11.11.11.11 是本地 lo 网卡
▼
[VPS: frps 服务端(监听 11.11.11.11)]
│
(FRP 隧道 - 运行在 Xray 代理里)
▼
[本地: frpc 客户端]
│
▼
[本地: Syncthing 服务 (127.0.0.1:8384)]
```
### 3.4 监控与告警: Cockpit + Scrutiny
Cockpit 看系统全景,Scrutiny 监控 SMART 巡检和邮件告警(见 1.6 篇)。智能邮件告警后有段有趣故障,4.3 会提。
### 3.5 索引层: 33TB 的一张地图
[`generate_efu_and_tree.py`](http://generate_efu_and_tree.py/) 每天凌晨 4:30 全盘扫描,缓存生效后大约 8 秒产出两份资产(之前用 NTFS 同规模要 2 分钟):
- **EFU 文件**:给 Windows 的 Everything 用,映射 V:/W:/X:/Y: 四盘符,全局秒搜
- **Tree 文本**:通过 Syncthing 同步到手机,配合自制的 DiskTree-GUI (Kotlin Multiplatform) 浏览
这就是 1.3 节里索引策略的落地实例。
---
## 4. 实证: 一块“娇气盘”
我那块 WD 14T(WUH721414ALE6L4)折腾了几回,这过程说明了我的维护心法。
### 4.1 第一个问题: 休眠唤醒后的错误计数
这盘休眠唤醒后,SMART 错误计数不断增。后来判定是盘固件和 Linux 电源管理兼容问题。用 openSeaChest 禁用 EPC (Idle A/B 全关) 固件,就让盘永不停转。代价是年电费多点,换来错误计数归零。
### 4.2 第二个问题: 6.0Gbps 下链路错误
开机后 1-3 分钟,这盘在 6.0Gbps 下报 `interface fatal error` 和 `CommWake LinkSeq`,偶尔 I/O 错误,内核自动限速。我做了三轮交叉测试,每次只变一项:
- 换口换线:WD 14T 仍报错,原口装 4T 盘没错,排除线和主板口
- 交换盘位(电源线和数据线都换):第一次开机全正常,一度误判供电问题
- 换盘托、恢复原线缆:新盘位复现错误,判定盘体信号在 6.0Gbps 下不达标
最后把 `libata.force=3.0G` 加入所有内核启动项,四口都锁 3.0Gbps。机械盘峰值本来不高,实际读写无影响。开机后没再出现此类错误。
### 4.3 第三个问题: Scrutiny 重复告警
Scrutiny 每天零点发错报警邮件。查了很久,盘的持久 SMART 错误日志无法清空,是历史错误痕迹,当前无新故障。这警告我保留记录,但不当新故障处理。
### 4.4 最后处理决定
SMART 关键指标全零,测试读写正常,所以没迁移数据,也没 RMA。链路问题靠限速解决,重要数据有备份。这个决定不适合别人直接套用,但符合我的风险边界。
---
## 5. 安全纵深
经常被问“用通用系统自己搭,安全吗?”我答:安全设置自己设计、自己验证。下文部分分别应对不同领域的问题。
### 5.1 网络入口
远程架构见 3.3,这里补一点:frp 开了 token 认证,即使隧道出问题,外部也不能直接拿整台主机所有服务。
### 5.2 容器边界
大部分容器 rootless,只挂载自己需要的目录。家目录和 `Tools`(带凭据脚本)没 bind 进容器。唯一例外是 webtop(3.2),rootful,挂载四盘读写目录。它的 VNC 桌面能通过 frp/Xray 隧道远程访问,我靠隧道认证加 VNC 密码压风险。
### 5.3 备份和内容类型
备份用官方网盘 GUI 客户端(见 1.2),不靠非官方 CLI(如 BaiduPCS-Go),避免账号风险,备份过程好查。
下载内容和需长期保存数据分开分类,详见 1.1、1.2。
### 5.4 SELinux 的实际作用
Fedora Server 默认启用 SELinux Enforcing。容器共享、Samba 导出卷、GPU 直通都有对应布尔开关,权限问题可从服务域、文件标签、策略查起。
近期飞牛路径穿越漏洞让我体会到这层隔离价值。我测试过:用 `runcon` 切到 `httpd_t` 服务域,再读系统口令文件或敏感目录,SELinux 都拦住了。只要策略、服务域、文件标签正确,恶意路径穿越请求都没法越权访问。条件是服务不能运行在无约束域,挂载路径标签要准,容器尽量不加 `label=disable` 参数。相关资料见[公开文章](https://post.m.smzdm.com/p/aeowzx5q/)。
---
## 6. 为什么选 Fedora Server
“不用现成 NAS 系统”只回答了一半,剩下是为什么同为通用 Linux 选 Fedora Server?
### 6.1 内核更新快
2.1 节折腾 NTFS 驱动让我确定:NAS 依赖内核和文件系统深。Fedora Server 内核更新快,44 版用上 7.1.x,老硬件和文件系统相关修复能早拿。那套驱动我已经不用了。
### 6.2 Podman 用起来顺手
Podman 是 Red Hat 参与维护项目,配 Fedora Server 用着顺手。3.2 节的 rootless、linger、`podman-restart.service` 能直接用。Debian 也能,但得自己补版本和配置。
### 6.3 SELinux 默认 Enforcing
SELinux 默认强制模式(隔离效果已验证见 5.4),权限排查工具现成不用从零造安全模型,目前慢慢补漏洞。
### 6.4 Cockpit
Fedora Server 自带 Cockpit,磁盘、服务、日志、更新、终端都能从 9090 端口管。日常管理靠它就行,需要细操作再 SSH。
### 6.5 软件较新,升级有节奏
Fedora Server 软件包新不少,系统有版本发布和官方升级路径。我享受这种新内核和新工具的节奏感,同时有明确升级窗口。
### 6.6 Server 版和桌面版
Server 版干净无 GUI,无多余桌面依赖,装完就能用做服务器。我的 NAS 不用桌面,唯一需图形界面用 rootful Ubuntu-Xfce 桌面容器 webtop(3.2 节)解决。
---
## 7. 为什么不选现成的 NAS 系统(只讲要点)
重点是这台 NAS 自己,这里只列要点对比。
### 7.1 飞牛(fnOS)
**飞牛(fnOS) 是我公司环境实际用过的方案。**公司用它做 NAS,免费、中文、可装普通 x86 机器,开放 root,SSH、sudo、iptables 和 Docker 都能自己管,最近权限管理改进好用,GUI 可配置用户权限,很实在。
但我对公司这台飞牛不太信任,重要数据每天备份到云端,不只留这里。它管理面、存储和升级节奏自己一套,安全没 SELinux 和 rootless 容器这层保障。用 root 权限可以绕过安全,但要自己维护改动,且和官方更新可能冲突。我个人 NAS 选 Fedora Server,因为喜欢自己管内核、容器、文件系统,直接掌控它们。
### 7.2 TrueNAS 和 OMV
**TrueNAS / OMV。**ZFS 很强,但生态要求 ECC 内存、冗余、快照,不适合我的单盘直挂。OMV 虽更开放,但还是围绕 NAS 面板,不符合我想要的服务器形态。
### 7.3 Windows Server
**Windows Server。**用多年,最让我弃用的是它的更新方式和功耗,空载 CPU 占用经常30%以上。
### 7.4 群晖和威联通
**群晖/威联通。**没用过不云评,从公开资料看,它们管理框架比飞牛更封闭,硬件绑定,生态重,全家桶绑定和我哲学反差大。
到此为止,不再细说。
---
## 8. 什么人适合这条路线,什么人千万别试
选 Fedora Server 路线,意味着自愿承担更多维护工作。说真的:
### 8.1 适合的人
- 家里有闲置/退役电脑,愿意花半天配置
- 熟悉或愿意学 shell 、systemd 、容器基础
- 有持续执行备份习惯(没有备份不建议用这条路,或者自己能做 RAID)
- 喜欢掌控感:能看日志、改内核参数、写脚本
### 8.2 不适合的人
- 想开箱即用,懒得读文档
- 数据重要但没备份习惯(自建 NAS + 无备份=灾难现场)
- 想用厂商售后和官方技术支持
- 全家桶重度用户 (Drive/Photos/Note 生态深度绑定)
---
## 9. 结语
### 9.1 我的答案
回到开头:为什么用 Fedora Server 做 NAS?
因为我的存储哲学(1 章七条原则)和传统 NAS 默认方案不完全重合,见 7 章对照。Fedora Server 是普通 Linux 服务器,可以按需搭存储、容器和服务。
### 9.2 这套方案的代价
现在它稳稳管着 33TB 存储和 14 个容器,CPU 常年个位数负载。出过几次故障,我都有排查记录,下一次遇到好下手。
缺点是配置得自己维护,网友问我得解释十分钟。对我来说,工作量换来了足够可见性和调整空间。
对我就是一台能按自己想法维护的 Linux 服务器,担负 NAS 角色,但不被某种 NAS 用法框死。
---
_附录:相关资源_
- 维护手册:《 Fedora Server [系统安装与维护手册.md](http://xn--jhqy8fevl03gyma581k20c4ep81g.md/)》(与本文同目录,含全部配置细节和踩坑记录,暂时未完善不放出)
- 目录浏览 App: DiskTree-GUI (Kotlin Multiplatform,开源)
---
原文链接:[点击查看](https://www.v2ex.com/t/1233600)
## 0. 叠甲:先说明白几件事
> 本文是个人博客向的记录与观点分享。**重点是介绍我自己的 NAS 是怎么搭的**,对其它系统的讨论只作参照,不为分高下。在阅读之前,请先接受以下立场:
1. **方案无优劣,只有适配。** 成品 NAS、TrueNAS、Windows、Fedora Server——每个方案都对应一种风险偏好和维护意愿。我的选择只代表“我的需求与偏好”,不能覆盖你心里的白月光。
2. **飞牛、群晖这类成品 NAS 系统各有适用场景。**本文里对它们的讨论,都限定在“与我的存储和系统哲学不完全合拍”的语境里;依赖图形界面和集成服务的话,它们往往更省心。
3. **经验来自一台具体机器。**我的结论建立在特定硬件和场景(硬件见 2.2 节),换一台机器,结论可能完全不同。
4. **我大量用“我行我素”的判断。** 不用 RAID、不用快照、信任 XFS、接受无冗余——这些基于我自己的备份闭环和风险接受度,**请勿照搬,风险自负**。
还有最重要的一点:下面这套**存储哲学是全文锚点**——你先看看它,再决定要不要看我后面的内容。
---
## 1. 存储哲学:七条原则
### 1.1 无冗余设计,丢了就重建
最重要的一条:我四块数据盘都是单盘直挂,没有 RAID、没有镜像、没有热备。
商业 NAS 卖点基本都围绕 RAID 转:镜像、容错、双盘冗余、热备……但 RAID 真解决的是一个具体问题——盘用着用着坏了,而你没别的副本。它用多买几块盘的成本,换取坏盘时还能继续运行的机会。机会有边界,不能让风险降到零。阵列重建时第二盘挂了、固件 bug 一波带走全部数据、控制器坏了救援难,这些事故每年都真实发生。
在我这里,RAID 不如备份更值钱:它牺牲容量,还让人懒得备份。单盘就是单盘,坏了换一块,管理和恢复都更直观。
不靠 RAID 保命,我把数据分两类处理:独一无二的靠备份(见 1.2 节),能再下载的只留索引(见 1.3 节)。
### 1.2 独一无二的数据,靠全量备份兜底
三个层级的备份:
1. 长期保存的目录,打成带 10% 恢复记录的 RAR 分卷(分卷自带冗余,轻微损坏能自愈)
2. 再生成 par2 冗余包,这是第二层:文件传输或存储时数据坏了,par2 可修复坏的部分,无需整包重传
3. 最后用官方网盘客户端上传
为什么这么复杂?因为网盘不保证文件完整性。传输中断、服务商不稳定、硬盘老化,随时可能下载解压失败。恢复记录加 par2,给网盘里存的那份文件多加一层纠错,即使小范围坏了,也能修回来。
### 1.3 能再下载的东西,只留索引
我的 33TB 存储里,动画、视觉小说占绝大多数,它们有共同特点:能从网上重新下载。所以我这样做:
- 每晚全盘扫描生成目录索引(具体在 3.5 节),同步到手机浏览
- 判断不常用内容,删除实体文件,只留索引
- 想看时查索引,重新下
这个策略让硬盘永远装不满,解决了“空间忧虑”,索引生成速度也体现了文件系统的区别。
### 1.4 版本需求交给 git
代码、文档需要历史版本?git 解决得比 NAS 的版本功能强且通用。我的 NAS 不需要快照,跟预算无关,只是没这需求。
### 1.5 相册: Syncthing 同步,原生浏览
手机相册是商业 NAS 的一个重点:群晖 Photos、飞牛相册、Immich……用久了人们也会绑死数据格式、APP、识别能力。
我做法简单:Syncthing 实时同步手机相册到 NAS,手机用原生相册浏览。
### 1.6 告警用邮件就够
Scrutiny 每天凌晨巡检硬盘 SMART,出问题就发邮件。我的 NAS 不需要秒级响应,邮件是最靠谱又不依赖厂商的告警渠道。
### 1.7 盘不拔插
硬盘永远装在机器里,传输用 Samba,不用 Windows 直接拔盘读取。Linux 上文件系统足够稳定,对我来说够了。
---
## 2. 这台 NAS 的来历和现状
### 2.1 从 Windows Server 到 Fedora Server
这机器以前跑 Windows Server ,系统从 2022 升到 2025,数据盘是 NTFS。运行了一年多,今年(2026)端午节重装 Fedora Server 44,期间完成数据盘 NTFS 到 XFS 迁移。
装之前我先在虚拟机里玩了几天,熟悉了 Podman、SELinux,买了新硬盘备用。装 Fedora 时直接拔掉 Windows 系统盘,装系统盘换新盘。这样装失败能回滚,服务不需重配。原 Windows 盘闲置当缓存用。
我选 Fedora Server,是看中了 Linux 7.1 引入的新 ntfs.ko 驱动,我偏好它而不是原来的 ntfs3。想继续用 NTFS 数据盘,但 Fedora 内核没启用这个驱动选项,还得自己编译,临时禁内核更新防覆盖。
等了几核内核版本,Fedora 官方没开,我写脚本自动检查(现在删了)。驱动还能用,但文件数有限制,inode 计数不会增长,新文件写不进盘。继续搞没意义,Linux 上的 NTFS 对我数据量不够用,fstab 也得写一大串权限规则。最后把数据盘全格式化成 XFS,结束 NTFS 路线。
格式化没一次全来。四盘空间凑够,我像玩华容道,用 tmux+Rsync 盘间搬数据,空一块格式化一块,数据一直在本地盘,四盘全部换成 XFS。
### 2.2 硬件和存储
硬件是 2017 年闲鱼购入:i3-7100T,16G 内存(原单 16G,涨价前换成双 8G),4 块机械盘(2 块 WD 4T,1 块希捷 14T,1 块 WD 14T),2 块 128G M.2。四块数据盘全是 XFS(存储配置详见 3.1)。
### 2.3 当前运行的服务
机器运行 14 个容器(清单和端口详 3.2),宿主机跑 Samba 共享(见 3.2),远程访问通过 Xray 隧道 + frp(架构详 3.3)。
备份和索引任务定时跑(cron,准备迁移 systemd timer),对应 1.2 和 1.3 章策略,具体见 3.5。
---
## 3. 技术架构总览
### 3.1 存储层: 全盘 XFS,单分区直挂
四块数据盘都是 XFS 单分区,fstab 用 UUID + `noatime,nofail`。盘符会随 SATA 线接法变,挂载配置认 LABEL/UUID:Old-1、Old-2、New-1、New-2。格式化时保留 `ftype=1`(容器 overlayfs 硬性要求)。系统盘用 LVM,SSD-Cache 专门跑压缩解压等临时 IO。还有两块 VeraCrypt 加密卷(H、Weii),平时空目录,随需挂。
为什么不用 btrfs?我没快照和 RAID,需要单盘直挂降低管理复杂度,还不信任 btrfs(尽管 Fedora Desktop 默认启用)。XFS 历史悠久,大文件顺序 IO 适合我,够用。
### 3.2 服务层: Podman,rootless 为主
容器两类:12 个 rootless(用户级,linger 常驻)+ 2 个 rootful(webtop 和 scrutiny,开机自启走系统服务)。更新容器时,我先开代理再执行 `podman pull`,重建前关代理。原因是 Podman 会把调用者环境的 `*_PROXY` 自动带进新容器,容器内的 `127.0.0.1:1145`指向自己,代理地址死,这坑我踩过,维护手册 3.2 章有记。
| 容器 | 端口 | 作用 |
|-----------------|-----------------|-------------------------------|
| Syncthing | 8384 | 同步工具(相册、笔记) |
| qBittorrent-EE | 7474 | BT 下载 |
| OpenList | 5244 | WebDAV 服务器,顺带挂载网盘 |
| openlist_mysql | 3306 | OpenList 的 MySQL 数据库 |
| openlist_meilisearch | 7700 | OpenList 搜索索引 |
| Open-WebUI | 8080 | 一站式 AI 对话,绑定中转站 |
| Bili-Sync | 12345 | B站视频自动同步 |
| PeerBanHelper | 9898 | BT 恶意 Peer 自动封禁 |
| dufs | 5000 | 临时文件上传(替代以前 Windows Server 的 localsend) |
| vnstat-dashboard| 8685 | 网络流量统计面板 |
| FluxDown | 17800 | 视频下载服务 |
| frpc | — | 内网穿透客户端(host 模式) |
| webtop(rootful) | 3000/3001 + 1145| 百度网盘/115 GUI 客户端 + 全局代理核心 (V2rayN) |
| scrutiny(rootful)| 8088/8086 | 硬盘 SMART 健康监控 |
| Jellyfin (按需) | 8096 | 媒体服务器(核显转码,默认不启)|
| Minecraft (按需)| 25565 | 联机游戏服务器 |
> Jellyfin 和 Minecraft 平时不常驻,需要用时才启。
宿主机运行 Samba,8 个共享,覆盖四块数据盘、两块加密卷、SSD 缓存盘和临时目录,主要给 Windows 机器用。
### 3.3 远程层:零端口暴露
公网唯一入口是 VPS 上的 Xray 隧道(用抗量子加密算法,防未来量子计算破解),frp 跑在隧道里。路由器和 NAS 没有直接公网端口,外部扫描进不了服务。唯一临时例外是 Minecraft,联机时才启一个独立 frp 通道暴露端口,不开啥都没。
架构图:
```
[访问端(如手机)] -> 请求访问 22.22.22.22:8384
│
(加密隧道)
▼
[VPS: Xray/3X-UI 服务端]
│
├─ (触发路由匹配 22.22.22.22:8384 -> 出站 to-8384)
│
└─ (执行 Redirect 重定向到 11.11.11.11:8384)
│
[VPS: Linux 内核接管] -> 11.11.11.11 是本地 lo 网卡
▼
[VPS: frps 服务端(监听 11.11.11.11)]
│
(FRP 隧道 - 运行在 Xray 代理里)
▼
[本地: frpc 客户端]
│
▼
[本地: Syncthing 服务 (127.0.0.1:8384)]
```
### 3.4 监控与告警: Cockpit + Scrutiny
Cockpit 看系统全景,Scrutiny 监控 SMART 巡检和邮件告警(见 1.6 篇)。智能邮件告警后有段有趣故障,4.3 会提。
### 3.5 索引层: 33TB 的一张地图
[`generate_efu_and_tree.py`](http://generate_efu_and_tree.py/) 每天凌晨 4:30 全盘扫描,缓存生效后大约 8 秒产出两份资产(之前用 NTFS 同规模要 2 分钟):
- **EFU 文件**:给 Windows 的 Everything 用,映射 V:/W:/X:/Y: 四盘符,全局秒搜
- **Tree 文本**:通过 Syncthing 同步到手机,配合自制的 DiskTree-GUI (Kotlin Multiplatform) 浏览
这就是 1.3 节里索引策略的落地实例。
---
## 4. 实证: 一块“娇气盘”
我那块 WD 14T(WUH721414ALE6L4)折腾了几回,这过程说明了我的维护心法。
### 4.1 第一个问题: 休眠唤醒后的错误计数
这盘休眠唤醒后,SMART 错误计数不断增。后来判定是盘固件和 Linux 电源管理兼容问题。用 openSeaChest 禁用 EPC (Idle A/B 全关) 固件,就让盘永不停转。代价是年电费多点,换来错误计数归零。
### 4.2 第二个问题: 6.0Gbps 下链路错误
开机后 1-3 分钟,这盘在 6.0Gbps 下报 `interface fatal error` 和 `CommWake LinkSeq`,偶尔 I/O 错误,内核自动限速。我做了三轮交叉测试,每次只变一项:
- 换口换线:WD 14T 仍报错,原口装 4T 盘没错,排除线和主板口
- 交换盘位(电源线和数据线都换):第一次开机全正常,一度误判供电问题
- 换盘托、恢复原线缆:新盘位复现错误,判定盘体信号在 6.0Gbps 下不达标
最后把 `libata.force=3.0G` 加入所有内核启动项,四口都锁 3.0Gbps。机械盘峰值本来不高,实际读写无影响。开机后没再出现此类错误。
### 4.3 第三个问题: Scrutiny 重复告警
Scrutiny 每天零点发错报警邮件。查了很久,盘的持久 SMART 错误日志无法清空,是历史错误痕迹,当前无新故障。这警告我保留记录,但不当新故障处理。
### 4.4 最后处理决定
SMART 关键指标全零,测试读写正常,所以没迁移数据,也没 RMA。链路问题靠限速解决,重要数据有备份。这个决定不适合别人直接套用,但符合我的风险边界。
---
## 5. 安全纵深
经常被问“用通用系统自己搭,安全吗?”我答:安全设置自己设计、自己验证。下文部分分别应对不同领域的问题。
### 5.1 网络入口
远程架构见 3.3,这里补一点:frp 开了 token 认证,即使隧道出问题,外部也不能直接拿整台主机所有服务。
### 5.2 容器边界
大部分容器 rootless,只挂载自己需要的目录。家目录和 `Tools`(带凭据脚本)没 bind 进容器。唯一例外是 webtop(3.2),rootful,挂载四盘读写目录。它的 VNC 桌面能通过 frp/Xray 隧道远程访问,我靠隧道认证加 VNC 密码压风险。
### 5.3 备份和内容类型
备份用官方网盘 GUI 客户端(见 1.2),不靠非官方 CLI(如 BaiduPCS-Go),避免账号风险,备份过程好查。
下载内容和需长期保存数据分开分类,详见 1.1、1.2。
### 5.4 SELinux 的实际作用
Fedora Server 默认启用 SELinux Enforcing。容器共享、Samba 导出卷、GPU 直通都有对应布尔开关,权限问题可从服务域、文件标签、策略查起。
近期飞牛路径穿越漏洞让我体会到这层隔离价值。我测试过:用 `runcon` 切到 `httpd_t` 服务域,再读系统口令文件或敏感目录,SELinux 都拦住了。只要策略、服务域、文件标签正确,恶意路径穿越请求都没法越权访问。条件是服务不能运行在无约束域,挂载路径标签要准,容器尽量不加 `label=disable` 参数。相关资料见[公开文章](https://post.m.smzdm.com/p/aeowzx5q/)。
---
## 6. 为什么选 Fedora Server
“不用现成 NAS 系统”只回答了一半,剩下是为什么同为通用 Linux 选 Fedora Server?
### 6.1 内核更新快
2.1 节折腾 NTFS 驱动让我确定:NAS 依赖内核和文件系统深。Fedora Server 内核更新快,44 版用上 7.1.x,老硬件和文件系统相关修复能早拿。那套驱动我已经不用了。
### 6.2 Podman 用起来顺手
Podman 是 Red Hat 参与维护项目,配 Fedora Server 用着顺手。3.2 节的 rootless、linger、`podman-restart.service` 能直接用。Debian 也能,但得自己补版本和配置。
### 6.3 SELinux 默认 Enforcing
SELinux 默认强制模式(隔离效果已验证见 5.4),权限排查工具现成不用从零造安全模型,目前慢慢补漏洞。
### 6.4 Cockpit
Fedora Server 自带 Cockpit,磁盘、服务、日志、更新、终端都能从 9090 端口管。日常管理靠它就行,需要细操作再 SSH。
### 6.5 软件较新,升级有节奏
Fedora Server 软件包新不少,系统有版本发布和官方升级路径。我享受这种新内核和新工具的节奏感,同时有明确升级窗口。
### 6.6 Server 版和桌面版
Server 版干净无 GUI,无多余桌面依赖,装完就能用做服务器。我的 NAS 不用桌面,唯一需图形界面用 rootful Ubuntu-Xfce 桌面容器 webtop(3.2 节)解决。
---
## 7. 为什么不选现成的 NAS 系统(只讲要点)
重点是这台 NAS 自己,这里只列要点对比。
### 7.1 飞牛(fnOS)
**飞牛(fnOS) 是我公司环境实际用过的方案。**公司用它做 NAS,免费、中文、可装普通 x86 机器,开放 root,SSH、sudo、iptables 和 Docker 都能自己管,最近权限管理改进好用,GUI 可配置用户权限,很实在。
但我对公司这台飞牛不太信任,重要数据每天备份到云端,不只留这里。它管理面、存储和升级节奏自己一套,安全没 SELinux 和 rootless 容器这层保障。用 root 权限可以绕过安全,但要自己维护改动,且和官方更新可能冲突。我个人 NAS 选 Fedora Server,因为喜欢自己管内核、容器、文件系统,直接掌控它们。
### 7.2 TrueNAS 和 OMV
**TrueNAS / OMV。**ZFS 很强,但生态要求 ECC 内存、冗余、快照,不适合我的单盘直挂。OMV 虽更开放,但还是围绕 NAS 面板,不符合我想要的服务器形态。
### 7.3 Windows Server
**Windows Server。**用多年,最让我弃用的是它的更新方式和功耗,空载 CPU 占用经常30%以上。
### 7.4 群晖和威联通
**群晖/威联通。**没用过不云评,从公开资料看,它们管理框架比飞牛更封闭,硬件绑定,生态重,全家桶绑定和我哲学反差大。
到此为止,不再细说。
---
## 8. 什么人适合这条路线,什么人千万别试
选 Fedora Server 路线,意味着自愿承担更多维护工作。说真的:
### 8.1 适合的人
- 家里有闲置/退役电脑,愿意花半天配置
- 熟悉或愿意学 shell 、systemd 、容器基础
- 有持续执行备份习惯(没有备份不建议用这条路,或者自己能做 RAID)
- 喜欢掌控感:能看日志、改内核参数、写脚本
### 8.2 不适合的人
- 想开箱即用,懒得读文档
- 数据重要但没备份习惯(自建 NAS + 无备份=灾难现场)
- 想用厂商售后和官方技术支持
- 全家桶重度用户 (Drive/Photos/Note 生态深度绑定)
---
## 9. 结语
### 9.1 我的答案
回到开头:为什么用 Fedora Server 做 NAS?
因为我的存储哲学(1 章七条原则)和传统 NAS 默认方案不完全重合,见 7 章对照。Fedora Server 是普通 Linux 服务器,可以按需搭存储、容器和服务。
### 9.2 这套方案的代价
现在它稳稳管着 33TB 存储和 14 个容器,CPU 常年个位数负载。出过几次故障,我都有排查记录,下一次遇到好下手。
缺点是配置得自己维护,网友问我得解释十分钟。对我来说,工作量换来了足够可见性和调整空间。
对我就是一台能按自己想法维护的 Linux 服务器,担负 NAS 角色,但不被某种 NAS 用法框死。
---
_附录:相关资源_
- 维护手册:《 Fedora Server [系统安装与维护手册.md](http://xn--jhqy8fevl03gyma581k20c4ep81g.md/)》(与本文同目录,含全部配置细节和踩坑记录,暂时未完善不放出)
- 目录浏览 App: DiskTree-GUI (Kotlin Multiplatform,开源)
---
原文链接:[点击查看](https://www.v2ex.com/t/1233600)
评论
暂无评论。