引言:为什么选择 CentOS Stream 搭建家庭 NAS?
在当今数字化时代,家庭数据量呈爆炸式增长——高清电影、家庭照片、备份文件和媒体库等数据需要可靠的存储解决方案。传统商业 NAS 设备如 Synology 或 QNAP 虽然方便,但价格昂贵且硬件升级受限。本文将指导您使用
CentOS Stream
(一个免费、开源且企业级的 Linux 发行版)从零开始搭建一个高性能、低成本的家庭影院 NAS。CentOS Stream 基于 Red Hat Enterprise Linux (RHEL),提供稳定性和长期支持,适合家庭用户构建数据中心,而无需支付许可费用。
为什么选择 CentOS Stream?
免费且开源
:零成本,避免商业 NAS 的硬件绑定。
高性能
:支持 ZFS 文件系统、RAID 配置和 Docker 容器化,能处理 4K 流媒体和多用户访问。
低成本
:只需一台旧 PC 或 Raspberry Pi(推荐 x86 架构),硬件预算可控制在 500-2000 元。
灵活性
:可扩展为智能家居中心,集成 Plex、Home Assistant 等工具。
安全性
:企业级内核,定期更新,适合存储敏感数据。
本文假设您有基本的 Linux 知识(如命令行操作),但会提供详细步骤和代码示例。整个过程分为硬件准备、系统安装、存储配置、媒体服务搭建和优化维护五个部分。预计搭建时间 4-6 小时,后续维护简单。
注意
:操作涉及分区和数据擦除,请备份重要数据。所有代码基于 CentOS Stream 9(最新稳定版),请从官网下载 ISO 镜像(
https://www.centos.org/download/)。
第一部分:硬件准备——构建低成本基础
家庭 NAS 的核心是可靠存储和低功耗。选择旧 PC 或组装机,避免高端服务器以控制成本。
推荐硬件规格
主机
:旧台式机或笔记本(Intel/AMD x86 CPU,至少 4 核心,如 Intel i3-8100)。预算 300-800 元。或使用 mini PC(如 Beelink U59,约 600 元)。
内存
:至少 8GB DDR4(推荐 16GB,用于 ZFS 缓存)。成本 100-200 元。
存储
:
系统盘:128GB SSD(SATA 或 NVMe),用于安装 CentOS(约 100 元)。
数据盘:2-4 个 4TB+ HDD(如 WD Red 或 Seagate IronWolf,支持 NAS 专用)。使用 RAID 1(镜像)或 RAID 5(奇偶校验)提供冗余。总成本 800-1500 元。
总容量建议:8TB+,支持 100+ 高清电影。
网络
:千兆以太网(Gigabit NIC),确保家庭路由器支持。如果 Wi-Fi,需 USB 网卡。
电源和机箱
:低功耗电源(300W+),机箱支持多硬盘(如热插拔)。总成本 200 元。
可选
:UPS(不间断电源,约 200 元)防止断电损坏数据。
硬件组装步骤
打开机箱,安装主板、CPU 和内存。
连接硬盘:SATA 数据线和电源线。优先连接 SSD 到主板 SATA0 端口。
插入网线到路由器。
通电测试:开机进入 BIOS,启用 AHCI 模式(SATA),设置从 USB 启动。
示例
:如果您使用 Raspberry Pi 4(ARM 架构,成本 400 元),需额外 USB 3.0 硬盘盒,但性能不如 x86,适合轻度使用。本文以 x86 PC 为主。
第二部分:安装 CentOS Stream——从零部署系统
CentOS Stream 提供图形化和命令行安装,适合新手。下载 ISO 后,使用 Rufus(Windows)或 dd(Linux/Mac)制作启动 U 盘。
步骤 1: 制作启动 U 盘
在 Windows 上:
下载 Rufus(
https://rufus.ie/)。
插入 8GB+ U 盘,选择 CentOS Stream ISO,点击“开始”。这将创建可引导 U 盘。
在 Linux/Mac 上:
# Linux 示例(替换 /dev/sdX 为您的 U 盘,如 /dev/sdb,使用 lsblk 检查)
sudo dd if=CentOS-Stream-9-latest-x86_64-dvd1.iso of=/dev/sdb bs=4M status=progress && sync
# Mac 示例
sudo dd if=CentOS-Stream-9-latest-x86_64-dvd1.iso of=/dev/disk2 bs=4M status=progress
警告
:dd 会擦除 U 盘数据,确保备份。确认设备路径,避免误删硬盘。
步骤 2: 安装 CentOS Stream
插入 U 盘,启动 PC,按 F12(或 Del/F2)进入 BIOS,设置 U 盘为第一启动项。
进入安装界面,选择“Install CentOS Stream 9”。
语言选择:English(推荐,便于命令行)。
安装目的地(Installation Destination):
选择“Custom”或“Automatic”分区。
对于 NAS,推荐手动分区(Advanced Custom):
/boot:500MB,ext4(引导分区)。
/:剩余 SSD 空间,ext4 或 XFS(系统根目录)。
Swap:4GB(如果内存 <16GB)。
数据分区:稍后在安装后创建(使用 HDD)。
勾选“Encrypt my data”可选(安全,但稍慢)。
网络和主机名:启用 Ethernet,设置静态 IP(如 192.168.1.100),主机名如“nas-home”。
软件选择:Minimal Install(最小化,节省资源),或添加“Server with GUI”如果需要桌面(不推荐 NAS)。
设置 root 密码和创建用户(e.g., user: admin,密码强)。
开始安装,重启后移除 U 盘。
步骤 3: 首次登录和基本配置
登录后,更新系统:
sudo dnf update -y # 更新所有包
sudo dnf install epel-release -y # 启用 EPEL 仓库,获取额外软件
配置防火墙(允许 SSH 和 Web 访问):
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-port=80/tcp # 用于 Web 服务
sudo firewall-cmd --permanent --add-port=32400/tcp # 用于 Plex
sudo firewall-cmd --reload
启用 SSH 以便远程管理:
sudo systemctl enable sshd
sudo systemctl start sshd
现在,您可以从另一台电脑 SSH 连接:
ssh admin@192.168.1.100
。
常见问题
:如果安装失败,检查 BIOS 中的 UEFI/Legacy 模式匹配。CentOS Stream 默认 UEFI。
第三部分:存储配置——实现数据冗余和性能
NAS 的核心是存储管理。CentOS Stream 支持多种 RAID 和文件系统。我们使用
ZFS
(Zettabyte File System),它提供数据完整性检查、快照和压缩,适合媒体存储。ZFS 需要额外安装,但性能优于 ext4。
步骤 1: 识别和分区硬盘
连接 HDD 后,使用
lsblk
检查:
lsblk # 输出示例:sda (SSD), sdb, sdc, sdd (HDDs)
为数据盘分区(假设 sdb, sdc, sdd 为 HDD):
sudo fdisk /dev/sdb # 进入 fdisk
# 输入 n (新建分区), p (主分区), 1 (分区号), 回车 (默认起始), 回车 (默认结束), w (保存)
# 重复为 sdc, sdd
步骤 2: 安装和配置 ZFS
安装 ZFS:
sudo dnf install kernel-devel -y # 内核开发包
sudo dnf config-manager --set-enabled crb # 启用 CRB 仓库
sudo dnf install zfs -y
sudo modprobe zfs # 加载模块
创建 ZFS 池(Pool)。推荐 RAIDZ1(类似 RAID 5,1 块奇偶校验):
# 创建名为 tank 的池,使用 sdb1, sdc1, sdd1(3 块盘,提供 2 块有效容量)
sudo zpool create tank raidz1 /dev/sdb1 /dev/sdc1 /dev/sdd1
# 检查状态
zpool status tank # 应显示 ONLINE
zpool list # 查看容量
创建数据集(Dataset):
# 创建媒体数据集,启用压缩(节省空间)
sudo zfs create -o compression=lz4 tank/media
# 创建备份数据集
sudo zfs create tank/backup
# 设置权限(允许 admin 用户读写)
sudo chown -R admin:admin /tank
sudo chmod 755 /tank
ZFS 高级功能示例:
快照
(备份状态):
sudo zfs snapshot tank/media@2023-10-01
自动清理旧快照
:使用脚本,如 cron 任务:
# 编辑 crontab: crontab -e
# 添加:0 2 * * * zfs destroy tank/media@$(date +%Y-%m-%d -d "7 days ago") # 删除 7 天前快照
性能优化
:启用 ZFS 缓存(如果有额外 RAM):
sudo zfs set primarycache=all tank/media
如果不想用 ZFS,可用 LVM + RAID:
sudo dnf install lvm2 -y
sudo pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
sudo vgcreate vg_data /dev/sdb1 /dev/sdc1 /dev/sdd1
sudo lvcreate -n lv_media -l 100%FREE vg_data
sudo mkfs.ext4 /dev/vg_data/lv_media
sudo mount /dev/vg_data/lv_media /mnt/media
# 添加到 /etc/fstab 实现开机挂载:echo "/dev/vg_data/lv_media /mnt/media ext4 defaults 0 0" | sudo tee -a /etc/fstab
挂载点
:将 ZFS 数据集挂载到 /mnt/media(自动)或手动:
sudo zfs set mountpoint=/mnt/media tank/media
现在,您的数据已安全存储。测试:
echo "test" > /mnt/media/test.txt
。
第四部分:媒体服务搭建——打造家庭影院
家庭影院 NAS 需要媒体服务器来组织、转码和流式传输视频。我们使用
Plex
(免费版)作为核心,它支持 DLNA、Chromecast 和移动 App。备选:Jellyfin(完全开源,无付费墙)。
步骤 1: 安装 Docker(容器化部署,便于管理)
sudo dnf config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io -y
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker admin # 允许 admin 用户运行 Docker
newgrp docker # 立即生效
步骤 2: 部署 Plex Media Server
下载 Plex 官方 Docker 镜像:
docker pull plexinc/pms-docker
运行容器(挂载媒体目录和配置):
# 创建 Plex 配置目录
mkdir -p /home/admin/plex/config
mkdir -p /mnt/media/movies # 电影文件夹,上传视频到此
# 运行容器
docker run -d \
–name plex \
–net=host \
-e TZ=Asia/Shanghai \
-v /home/admin/plex/config:/config \
-v /mnt/media:/media \
-v /tmp:/transcode \
–restart unless-stopped \
plexinc/pms-docker
参数说明
:
–net=host
:使用主机网络,便于发现设备。
-v
:卷挂载,确保数据持久化。
–restart
:开机自启。
访问 Plex:浏览器打开
http://192.168.1.100:32400/web。首次设置:
创建 Plex 账户(免费)。
添加库:选择 /media/movies,类型“电影”。
上传视频:使用 SFTP(WinSCP)或 rsync 从 PC 复制文件到 /mnt/media/movies。
示例 rsync:
rsync -avz /path/to/local/movies/ admin@192.168.1.100:/mnt/media/movies/
转码优化:Plex 默认 CPU 转码,如果硬件支持,安装 Intel Quick Sync 或 NVIDIA GPU 驱动(可选,成本高)。
对于低功耗,启用“Direct Play”避免转码。
步骤 3: 备选 Jellyfin(如果偏好开源)
docker pull jellyfin/jellyfin
docker run -d \
–name jellyfin \
–net=host \
-v /home/admin/jellyfin/config:/config \
-v /mnt/media:/media \
-v /tmp:/transcode \
–restart unless-stopped \
jellyfin/jellyfin
访问
http://192.168.1.100:8096。类似
Plex,添加库并扫描媒体。
步骤 4: 额外工具——文件共享和下载
SMB 文件共享
(Windows/Mac 访问):
安装 Samba:
sudo dnf install samba -y
sudo systemctl enable smb
sudo systemctl start smb
配置 /etc/samba/smb.conf:
“`ini
[global]
workgroup = WORKGROUP
server string = NAS Server
security = user
[media]
path = /mnt/media
browseable = yes
writable = yes
valid users = admin
设置密码:`sudo smbpasswd -a admin`。
重启:`sudo systemctl restart smb`。
在 Windows:\\192.168.1.100\media。
– **自动下载**(使用 qBittorrent):
“`bash
docker pull linuxserver/qbittorrent
docker run -d \
–name qbittorrent \
-p 8080:8080 \
-v /home/admin/qbittorrent/config:/config \
-v /mnt/media/downloads:/downloads \
–restart unless-stopped \
linuxserver/qbittorrent
访问
http://192.168.1.100:8080,设置用户名/密码,添加种子下载到
/downloads。
第五部分:优化、维护和安全——确保高性能与低成本
性能优化
监控工具
:安装 htop 和 iotop。
sudo dnf install htop iotop -y
htop # 实时 CPU/内存监控
iotop # 磁盘 I/O 监控
电源管理
:安装 powertop 节能。
sudo dnf install powertop -y
sudo powertop –auto-tune
自动更新
:配置 dnf 自动更新。
sudo dnf install dnf-automatic -y
sudo systemctl enable dnf-automatic.timer
sudo nano /etc/dnf/automatic.conf # 设置 apply_updates = yes
安全措施
防火墙
:已配置,仅允许必要端口。
SELinux
:默认启用,无需更改,但检查日志:
sudo ausearch -m avc -ts recent
。
备份策略
:使用 rsync 备份到外部 USB 驱动器。
示例脚本 /home/admin/backup.sh:
#!/bin/bash
rsync -avz –delete /mnt/media/ /mnt/backup/ # 备份媒体
echo “Backup completed at $(date)” >> /var/log/backup.log
添加 cron:
crontab -e
,添加
0 3 * * * /home/admin/backup.sh
(每天凌晨 3 点)。
用户管理
:避免 root 登录,编辑 /etc/ssh/sshd_config:
PermitRootLogin no
,然后
sudo systemctl restart sshd
。
故障排除
磁盘故障
:
zpool status
检查,替换坏盘后
zpool replace tank /dev/sdX1
。
Plex 无法访问
:检查防火墙,确保端口 32400 开放。
低性能
:如果转码卡顿,降低分辨率或使用硬件加速(需额外配置)。
成本总结
硬件:~1500 元(旧 PC + 硬盘)。
软件:免费。
电费:~50 元/月(低功耗运行)。
通过以上步骤,您已拥有一个功能齐全的家庭影院 NAS。它不仅存储海量媒体,还能扩展到智能家居(如集成 Home Assistant)。如果遇到问题,参考 CentOS 文档或 Plex 论坛。享受您的家庭数据中心!