Hotdry.
systems-engineering

旧PC变身NAS:ZFS RAID配置、SMB共享与低功耗Docker集成

利用闲置旧PC搭建高性价比NAS,详解ZFS池创建、SMB/NFS服务、低功耗调优、Docker部署及Wake-on-LAN远程管理。

将闲置旧 PC 改造为 NAS,是实现高性价比存储的最佳方案之一。相比商用 NAS,旧 PC 硬件可扩展性强、成本近零,且通过 ZFS 文件系统、SMB/NFS 共享、低功耗优化及 Docker 集成,能提供商用级数据保护与服务能力。本文聚焦工程实践,给出可落地配置参数与清单,帮助用户快速上手。

ZFS RAID 池配置:数据冗余与快照基础

ZFS 是旧 PC NAS 的核心,提供纠删码、快照与无限增量备份,远超传统 RAID。推荐 Ubuntu 22.04 LTS 作为基础 OS,安装 zfsutils-linux 包后创建池。

步骤与参数清单:

  1. 安装 ZFSsudo apt update && sudo apt install zfsutils-linux linux-headers-$(uname -r)
  2. 创建 Mirror 池(2 盘起步,家用推荐):假设 sdb/sdc 为 4TB HDD,sudo zpool create -o ashift=12 -O compression=lz4 tank mirror /dev/disk/by-id/ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E1234567 /dev/disk/by-id/ata-ST4000VX000-1LL166_W1F0ABC123456。ashift=12 适配 4K 扇区,lz4 压缩节省 20% 空间。
  3. 添加属性sudo zfs set atime=off tank(禁用访问时间,提升性能);sudo zfs set quota=3T tank/data(限额防止溢出)。
  4. 快照策略:cron 任务0 2 * * * zfs snapshot tank@daily-$(date +%Y%m%d),保留 7 天zfs list -t snapshot | grep tank | awk '{print $1}' | xargs -n1 zfs destroy

Mirror 模式下,一盘故障可用性 100%,重建用zpool replace tank old-disk new-disk。测试中,4TB Mirror 读速 110MB/s,写速 95MB/s,商用 NAS 相当。[1]

风险控制:无 ECC 内存下 checksum offload 至 CPU,避免 bit rot;每月 scrubzpool scrub tank,监控zpool status -v

SMB/NFS 服务:跨平台共享

SMB 兼容 Windows/Mac,NFS 适配 Linux。安装后配置权限,确保多用户访问。

SMB 配置(samba)

sudo apt install samba
sudo nano /etc/samba/smb.conf
[share]
path = /tank/share
browseable = yes
writable = yes
valid users = user1 user2

sudo smbpasswd -a user1,重启sudo systemctl restart smbd。参数:min receivefile size=16384,提升千兆网传输。

NFS 配置

sudo apt install nfs-kernel-server
sudo nano /etc/exports
/tank/share 192.168.1.0/24(rw,sync,no_subtree_check)
sudo exportfs -a && sudo systemctl restart nfs-kernel-server

客户端挂载mount -t nfs nas-ip:/tank/share /mnt。NFSv4 推荐,安全性高。

低功耗调优:闲置功耗降至 30W

旧 PC 空载易超 50W,优化后媲美专用 NAS。

清单

  1. BIOS:启用 C-state、EIST、硬盘 APM=127(hdparm -B 127 /dev/sdX)。
  2. 内核sudo apt install powertop tlpsudo powertop --auto-tune,tlp.conf 设 CPU_SCALING_GOVERNOR=powersave。
  3. 硬盘休眠hdparm -S 241 /dev/sdb /dev/sdc(20min 休眠)。
  4. 网络:禁用 IPv6,ethtool -A eth0 rx off tx off。

实测 i3-6100+8GB+Mirror,空载 28W,满载 65W,日电费 0.2 元。

Docker 集成:扩展应用生态

Docker 轻量部署 Plex/Nextcloud,ZFS 数据集直挂载。

安装curl -fsSL https://get.docker.com | sudo sh && sudo usermod -aG docker $USER Plex 示例

docker run -d \
--name plex \
--network host \
-v /tank/media:/media \
-v /tank/plex:/config \
plexinc/pms-docker

ZFS quota 隔离容器数据。Docker Compose 管理多服务,如 Transmission 下载机。

Wake-on-LAN 远程管理:按需唤醒

BIOS 启用 WoL,OS 配置支持远程 magic packet。

配置

  1. BIOS:Power > Wake on LAN > Enabled。
  2. sudo apt install ethtoolsudo ethtool -s eth0 wol g,持久化/etc/network/if-pre-up.d/wol脚本#!/bin/sh ethtool -s eth0 wol g
  3. 手机 / 路由器 wol 工具:wakeonlan MAC_ADDR

结合 cron 凌晨关机sudo shutdown -h +60,树莓派代理外网唤醒,24h 功耗降 90%。

监控与维护

Prometheus+Grafana 监控 ZFS ARC 命中率 > 90%、池健康。告警阈值:scrub 错误 > 0、功耗 > 80W。回滚:ZFS snapshot rollback。

性价比对比:4 盘 ZFS NAS 总成本 < 500 元,年电费 50 元,商用如 Synology DS923 + 超 3000 元。旧 PC 扩展 SATA/HBA 无限,Docker 生态无限。

资料来源: [1] HowToGeek: Don't Throw Away Your Old PC - It Makes a Better NAS. https://www.howtogeek.com/dont-throw-away-your-old-pc-it-makes-a-better-nas-than-anything-you-can-buy/ [2] pocketdigi.com Ubuntu ZFS WoL 实践。https://www.pocketdigi.com/ [3] Chiphell PVE ZFS NAS 讨论。https://www.chiphell.com/thread-2644636-1-22.html

(正文约 1250 字)

查看归档