总结
本次改版将两个部件合二为一,添加了配备Pimoroni InkyPHAT显示屏的电子墨水显示窗口,并增设了适配40mm机箱风扇的额外安装点。除此之外,所有文件保持原样,但已转换为STL格式以便更轻松地进行打印。由于我正在设计一款更美观的背板以适配当前使用的硬件,因此本次改版可能存在调整。目前背板仅为矩形切口,我正在探索如何最佳地收纳线缆。后续我还会逐步完善
介绍
这是一个相当简单的项目,但步骤繁多。考虑到四个SATA硬盘的价格,制作成本也较高。你不必使用我使用的相同组件,但如果进行改动,就需要考虑到这些差异。如果你使用更便宜的硬盘,除了成本外,安装步骤应该不会有太大差别。我之所以选择三星EVO 2TB SATA硬盘,是因为我之前的另一个项目中已经用过它们。选择何种硬件设备从根本上来说并不重要。
工具
- 电烙铁
- 大幅面3D打印机
- 2公斤的耗材(如果你一点错误都不犯的话,一公斤也能完成,但……唉,我可没能做到这一点)。
硬件
- 树莓派5代4GB版 + 主动散热器 + Pro Endurance系列SD卡
-
树莓派 Zero 2W(带接口)+普通 SD 卡
-
四个 2TB 的 SATA SSD 硬盘(三星 870 EVO)
- 皮莫罗尼
-
Geekworm x1009 SATA 硬盘盒,附带电源适配器
-
粉丝们
- 1 个 92mm 风扇 - 12V 电压
- 2个40毫米风扇 - 12伏电压
- 风扇分线器(随附在包装盒中)
- 温度传感器
- USB以太网适配器
组装用五金件
- M2.5 热固性插座
- 有一堆各种尺寸的螺丝,有M2规格的,也有2.5规格的。
-
M2.5 型 15mm 间隔件
- 电缆
- USB 风扇适配器
- 4条SATA 3数据线
- 微型 USB 转 USB A 接口线
组装
打印所有零件(这需要几天时间)。打印所有零件时,要确保在所有需要支撑的部位添加支撑结构,并且支撑结构的方向要与零件的实际摆放方向一致。
- 案例
- 面板
- 驱动箱壳体
- 四个(4个)驱动架
- 背板
- 树莓派雪橇模型
主要案例
- 仔细拆除支撑结构(这项工作很繁琐)
- 安装机箱风扇
- 底部有一个大风扇(标志朝内)。
- 机箱风扇在侧面
- 所有风扇均可使用随风扇附赠的螺丝进行安装固定。
- 将四个热缩套件安装到机箱背面板上的四个孔中。
德瑞住宅公司
- 将热固性插件安装在背面的四个孔中,并在每个插座中安装一个隔离套筒。
- 使用4颗M2螺丝将SATA固态硬盘安装到每个驱动器托架中(或者不安装也可以,说实话这是可选项,我手头没有合适的M2螺丝,所以就跳过了这一步)。
- 将 Geekworm 套件中的 SATA 数据线和电源线分别连接到每个硬盘驱动器上。
安装树莓派 5
-
将基础版树莓派 Lite 操作系统安装到 SD 卡上,并进行 Wi-Fi 配置(稍后你会需要一根以太网线,但目前我们可以通过 Wi-Fi 完成配置)。
- 将 8 个热缩套管分别安装到树莓派滑雪橇的顶部和底部孔洞中。
- 使用间隔件将树莓派安装在雪橇上
-
安装 Geekworm SATA 转接卡,并按照说明操作即可。
- 暂时先不要安装这些驱动程序。
- 安装温度传感器,并按照此处的说明进行操作。
-
可以选择打印分线板的安装支架,并用螺丝将其安装到位。
-
使用M2.5螺丝将雪橇从底部安装到箱体中(非必需但建议使用)。
-
若使用直角数据线,将SATA硬盘从左边(0号)依次插入至右边(3号)。最后一个硬盘应使用直角支架连接到树莓派上,其他三个硬盘则用直角支架连接到硬盘本体。这是因为其他连接方式不合适,而且我不想再次改装机箱,所以我只是把数据线反过来接了。
-
将 SATA 电源线插入 Geekworm 开发板的接口。
-
暂时先不要给树莓派通电
-
可以选择将扩展板安装架粘贴到机箱上(不过实际上最好等到快完成时再进行这一步。说实话,我并没有把它粘上,它就这么松松地放在里面了。)
- 热敏传感器应该安装在SATA数据线后面的开放区域,但要位于Zero 2W设备的前方。
InkyPhat 电子墨水显示屏
- 按照 Pimoroni 提供的说明,将 InkyPhat 屏幕轻轻地安装到 Zero 2w 的主板接口上。
- 将带有树莓派的屏幕安装到面板中。
- 将USB数据线插入Zero 2W设备,然后将其穿过设备背面接口连接至电脑或其他设备。
- 将 USB A 端插入树莓派上的一个蓝色(供电)USB 接口。
- 将面板卡入机箱的前面板位置
请按照 Pimoroni 提供的以下步骤,完成 InkyPhat 显示屏的安装设置:
https://github.com/pimoroni/inky
USB 风扇适配器
- 将USB风扇适配器插入树莓派5上的另一个蓝色USB接口。
- 附上两个四针Y型适配器
- 将主机箱风扇连接到第一个Y型适配器上的第一个接口。
- 将另外两个风扇插入第二个Y型适配器上剩余的两个接口。
- 把所有的风扇电缆都塞到滑雪橇下面去
至此,你应该已经将所有线缆都连接好了。使用 Geekworm 电源适配器为树莓派供电(不要使用 USB 接口,该接口将不会被使用)。
软件安装程序
第一部分:树莓派5的安装设置
1.安装树莓派操作系统
- 将树莓派操作系统(64位)Flash Raspberry Pi OS Lite镜像写入SD卡
- 配置主机名:nas.local
- 成像过程中启用 SSH 功能
2. 配置SATA扩展卡(Geekworm X1001)
安装驱动程序:
wgethttps://geekworm.com/cdn/shop/files/x1001-v1.1.sh
sudo chmod +x x1001-v1.1.sh
执行以下命令:
编辑 /boot/firmware/config.txt 文件:
sudo nano /boot/firmware/config.txt
添加以下代码行:
启用 PCIe Gen 3 接口
dtparam=pciex1_gen=3
增加 USB 供电功率
PSU_MAX_CURRENT=5000
重启并验证:
sudo 重启系统
sudo lspci # 应该会显示 SATA 控制器的相关信息
lsblk # 应该会显示你的固态硬盘信息
3. 配置温度传感器(DS18B20)
布线:
- 绿色(接地)线 → 黑色电线
- 蓝色(现场版)→ 红色电线
- 紫色(数据线) → 黄色电线(连接到 GPIO 4 的第 7 针)
软件配置:
sudo nano /boot/firmware/config.txt
地址:
dtoverlay=w1-gpio
重启并验证:
sudo 重启系统
sudo modprobe w1-gpio
sudo modprobe w1-therm
执行命令:ls /sys/bus/w1/devices/ # 应该会显示 28-xxxx 这样的设备编号
4.安装OpenMediaVault
wget -O -https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install| sudo bash
配置OMV:
- 请访问网页用户界面,网址为 http://nas.local 。
- 登录名:admin / openmediavault
- 格式化全部 4 个固态硬盘(存储 → 磁盘)
- 安装 md-adm 插件(系统 → 插件)
- 创建 RAID 5 阵列(存储 → RAID 管理)
- 于 RAID 阵列上创建文件系统
- 创建共享文件夹,并根据需要配置 SMB/NFS 服务
5.安装监控服务
克隆该仓库:
切换到当前目录
克隆Git仓库https://github.com/adunderwood/RaspberryPi_NAS.git
进入 RaspberryPi_NAS/Raspberry\ Pi/5 文件夹。
安装依赖项:
sudo apt update
sudo apt install python3-pip -y
执行以下命令:
配置该服务:
将 .env.example 复制到 .env 文件中
nano .env 文件
如有需要,可调整相关设置(对于大多数用户而言,默认设置即可):
LOG_DIR=/home/nas/services
MAX_LOG_LINES=2000
日志记录间隔时间 = 3
SAVE_INTERVAL=60
临时单位=华氏度
安装并启用该服务:
sudo mkdir -p /home/nas/services
sudo cp nas_service.py /home/nas/services/
sudo cp .env /home/nas/services/
sudo cp services/nas_service.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable nas_service
执行以下命令:
验证它是否正在运行:
sudo systemctl status nas_service
curl 命令http://localhost:5000/cpu
curl 命令http://localhost:5000/raid
第二部分:树莓派 Zero 2W 的安装设置步骤
1.安装树莓派操作系统
- 将树莓派操作系统(32位)Flash Raspberry Pi OS Lite镜像写入SD卡
- 成像过程中配置 WiFi 和 SSH 连接
- 设置主机名:display.local
2. 配置系统
sudo raspi-config
启用:
- 界面选项 → SPI(供 InkyPHAT 使用)
- 接口选项 → I2C(供 InkyPHAT 使用)
步骤 3:安装 InkyPHAT 驱动程序
curl 命令https://get.pimoroni.com/inky| bash
出现提示时,请选择 "InkyPHAT"。
测试显示屏:
python3 ~/Pimoroni/inky/examples/phat/hello-world.py
4.安装显示屏软件
克隆该仓库:
切换到当前目录
克隆Git仓库https://github.com/adunderwood/RaspberryPi_NAS.git
进入 RaspberryPi_NAS 文件夹下的 Raspberry\ Pi\ Zero\ 2w 子文件夹。
创建虚拟环境:
python3 -m venv ~/.virtualenvs/pimoroni
源代码位于 ~/.virtualenvs/pimoroni/bin/activate 文件夹内。
安装依赖项:
执行以下命令安装相关依赖包:
配置环境:
将 .env.example 复制到 .env 文件中
nano .env 文件
如有必要,请更新NAS的主机名/IP地址:
API 端点(将 nas.local 调整为您的树莓派 5 的主机名或 IP 地址)
NAS_URL=http://nas.local:5000/raid
温度数据获取接口的网址:TEMPERATURE_URL=http://nas.local:5000/temperature
CPU_URL=http://nas.local:5000/cpu
CPU温度监测网址:http://nas.local:5000/cpu_temp
显示设置
主题=浅色系
警告阈值 = 90%
WARN_TEMP=90
FONT_DIR=/home/nas/fonts
设置显示脚本包装器:
chmod +x display.sh
./display.sh
显示屏应该会自动更新你的NAS设备运行数据了!
5. 配置自动更新(Cron)功能
编辑 crontab 文件:
添加以下代码,每隔 5 分钟更新一次:
/5 * /home/nas/display/display.sh
建筑概览
统一监控服务(Pi 5)
一种服务就能替代7个以上独立的脚本程序:
- 收集以下数据:CPU使用率、CPU温度、环境温度、RAID状态
- 通过端口 5000 上的 REST API 提供数据服务
- 自动日志轮换功能(仅保留最近2000条读数记录)
- 针对传感器故障的稳健错误处理机制
- 日志总大小约为 100KB(而旧版本的日志大小则超过 35MB)。
API 端点:
- http://nas.local:5000/cpu - CPU 使用率
- http://nas.local:5000/cpu_temp - CPU 温度(°C)
- http://nas.local:5000/temperature - 环境温度
- http://nas.local:5000/raid - RAID磁盘使用情况
显示脚本(树莓派 Zero 2W)
- 从监控服务中获取数据
- 将统计数据呈现于 InkyPHAT 电子墨水显示屏上
- 遇到警告时,系统会自动切换至红色主题界面。
- 通过 cron 任务每隔 5 分钟更新一次信息
故障排除
监控服务问题
服务无法启动:
sudo journalctl -u nas_service -n 50测试端点:
curl http://localhost:5000/cpu温度传感器未找到:
- 检查 GPIO 4 的线路连接情况
- 请在 /boot/firmware/config.txt 文件中确认 dtoverlay=w1-gpio 这一配置项是否正确无误。
- 运行命令:ls /sys/bus/w1/devices/
RAID 未显示:
- 验证RAID阵列:df -h | grep /dev/md
- 检查 OMV 配置情况
显示问题
显示屏无法更新:
- 验证定时任务:crontab -l
- 检查网络:执行ping nas.local命令
- 测试API:curl http://nas.local:5000/cpu
- 检查日志:journalctl -u nas_service
显示屏显示错误信息:
- 请在 display.sh 文件中确认虚拟环境已被激活。
- 检查字体目录是否存在:ls /home/nas/fonts/
- 手动测试:./display.sh
InkyPHAT无法正常运行:
- 验证 SPI/I2C 功能是否已启用:sudo raspi-config
- 测试示例:python3 ~/Pimoroni/inky/examples/phat/hello-world.py
GitHub 仓库
完整源代码、详细文档及配置示例:
https://github.com/adunderwood/RaspberryPi_NAS
每款树莓派
- 树莓派 5/README.md - 监控服务设置指南
- 树莓派 Zero 2W/README.md - 显示屏设置指南
提示与注意事项
表现:
- 采用4块固态硬盘的RAID 5配置,可提供约5.5TB的可用存储空间,并具备1块硬盘冗余功能。
- 派力5
- 电子墨水显示屏耗电极低,且在阳光下也能清晰显示内容。
定制化服务:
- 请在显示的 .env 文件中调整 WARN_PERCENT 和 WARN_TEMP 的阈值。
- 更改显示主题:THEME=light|dark|red
- 修改 crontab 中的刷新间隔时间(默认值:5 分钟)
维护保养:
- 日志会自动轮换,以防止磁盘被填满
- 服务出现故障时,监控器会自动重启服务。
- 显示界面能从容应对网络中断的情况
タグ
モデルソース
