树莓派 NAS 搭配 OLED 状态屏:OpenMediaVault 轻量级家庭存储方案 📅 发布时间:2026/9/20 1:51:30 👁 浏览次数: 1. 为什么树莓派 NAS 至今仍然值得折腾树莓派做 NAS 这件事我从树莓派 3B 时代就开始折腾了。那时候 USB 2.0 的带宽跑 Samba 共享拷贝大文件的速度稳定在 12MB/s 左右说实话体验很一般。但到了树莓派 4B 和现在的树莓派 5情况完全不一样了——USB 3.0 接口、千兆网口、最高 8GB 甚至 16GB 内存这些硬件规格放在一台功耗只有几瓦的小板子上做家用 NAS 已经完全够用。这次要聊的这个开源项目核心思路是用树莓派搭配一块 OLED 小屏幕跑 OpenMediaVault 作为 NAS 系统同时用 OLED 实时显示系统状态。外观上走的是简洁实用路线没有花哨的 3D 打印外壳就是一块亚克力板加铜柱把树莓派、硬盘和 OLED 固定在一起放在桌面上不占地方看起来也干净。你可能会问市面上成品 NAS 那么多群晖、威联通、飞牛 NAS 都有成熟方案为什么还要自己折腾树莓派我的答案很直接——功耗、静音、可定制性。一台群晖 DS220 空载功耗大概 15W 到 20W而树莓派 4B 加一块 2.5 寸硬盘整机功耗可以控制在 8W 以内。一年 365 天开机电费差距虽然不大但风扇噪音的差别是实打实的。树莓派方案可以做到完全无风扇放在卧室里也听不到声音。这个项目适合什么人如果你手头已经有一块树莓派不管是 4B 还是 5想把它利用起来做一个轻量级的家庭文件服务器、备份节点或者小型媒体库同时希望有一个直观的状态显示屏那这套方案非常合适。如果你完全没接触过 Linux 和命令行可能需要先补一些基础知识但整体门槛并不高跟着步骤走能跑通。OLED 屏幕在这个项目里扮演的角色不是装饰而是状态监控终端。你可以让它显示 CPU 温度、内存占用、硬盘容量、网络 IP 地址、当前时间这些信息。树莓派 NAS 通常放在角落或者弱电箱里没有显示器每次想看状态都要 SSH 登录有了 OLED 之后抬头就能看到关键数据省事很多。2. 硬件选型与整体方案设计2.1 树莓派型号怎么选4B 还是 5树莓派 4B 和树莓派 5 都能跑 OpenMediaVault但两者在实际使用中有几个关键差异需要提前想清楚。树莓派 4B 的优势是成熟稳定、配件便宜、功耗更低。它的 USB 3.0 接口有两个千兆网口是独立芯片不占用 USB 带宽。实测下来USB 3.0 接一块 SATA 硬盘通过 USB 转 SATA 线Samba 读写速度可以跑到 100MB/s 左右基本跑满千兆网络。功耗方面4B 加一块 2.5 寸机械硬盘整机空载大约 5W满载读写大约 10W。树莓派 5 的优势是性能更强、PCIe 接口可扩展。树莓派 5 新增了一个 PCIe 2.0 x1 接口通过 M.2 HAT 可以接 NVMe 固态硬盘速度比 USB 3.0 快不少。但这里有个坑树莓派 5 的 PCIe 接口默认没有启用需要在/boot/firmware/config.txt里手动打开而且早期固件版本对某些 NVMe 硬盘兼容性不好需要更新固件。另外树莓派 5 的功耗明显更高满载可以到 12W 以上电源要求也更高官方推荐 5V 5A 的电源。我的建议是如果你追求稳定省心选树莓派 4B如果你想要更好的存储性能并且愿意折腾 PCIe 和固件选树莓派 5。对于大多数家用 NAS 场景4B 的性能已经足够没必要多花钱上 5。2.2 存储方案USB 硬盘还是 NVMe存储是这个项目里最影响体验的部分。树莓派本身没有 SATA 接口所以只能用 USB 或者 PCIe 来接硬盘。USB 方案是最常见的。用一根 USB 3.0 转 SATA 线接一块 2.5 寸机械硬盘或者 SSD。2.5 寸硬盘不需要额外供电直接从 USB 取电就行树莓派的 USB 接口输出电流足够。但要注意不要用 USB 3.0 的移动硬盘盒接 3.5 寸硬盘3.5 寸硬盘需要 12V 供电USB 口供不了必须用带独立电源的硬盘盒或者硬盘底座。NVMe 方案只适用于树莓派 5。通过 M.2 HAT 接一块 NVMe SSD读写速度可以到 400MB/s 以上但受限于 PCIe 2.0 x1 的带宽实际速度大概在 450MB/s 左右。这个速度对于家用 NAS 来说绰绰有余而且 NVMe 没有机械结构完全静音抗震性也好。如果你要用 OpenMediaVault 做 RAID需要注意USB 接口做 RAID 不稳定。USB 连接偶尔会掉盘RAID 阵列一旦掉盘就需要重建风险很大。所以我的建议是USB 方案就单盘用重要数据定期备份到另一块硬盘或者云端。NVMe 方案可以考虑做 RAID 1但树莓派 5 只有一个 PCIe 接口要做 RAID 1 需要两个 NVMe 硬盘得用支持双盘的 M.2 HAT成本会高不少。2.3 OLED 屏幕的选型与接线OLED 屏幕我推荐用0.96 寸 SSD1306 驱动的 I2C 屏幕分辨率 128x64价格便宜十几块钱就能买到。这个屏幕在树莓派社区里资料最多驱动成熟Python 库支持也很好。接线方面SSD1306 的 I2C 接口只需要四根线VCC 接 3.3VGND 接地SCL 接树莓派的 GPIO 3物理引脚 5SDA 接 GPIO 2物理引脚 3。树莓派 4B 和 5 的 I2C 引脚位置是一样的不用担心兼容性问题。注意OLED 屏幕的 VCC 一定要接 3.3V不要接 5V。虽然有些模块标称支持 3.3V 到 5V但长期接 5V 可能会缩短屏幕寿命而且 I2C 电平不匹配可能导致通信不稳定。如果你买的是 SPI 接口的 OLED 屏幕接线会复杂一些需要接 7 根线而且驱动代码也不一样。对于这个项目我强烈建议用 I2C 接口的屏幕省事。2.4 整体结构设计思路这个项目的结构设计遵循一个原则最小化、无风扇、易维护。底部是一块亚克力板用铜柱把树莓派固定在上面。硬盘用双面胶或者扎带固定在亚克力板的另一侧。OLED 屏幕用铜柱固定在树莓派上方角度稍微倾斜方便查看。所有线缆用扎带整理好从侧面走线。电源方面树莓派 4B 用官方 5V 3A 电源树莓派 5 用官方 5V 5A 电源。如果你要接 3.5 寸硬盘还需要一个独立的 12V 电源给硬盘供电。整个系统没有风扇靠自然散热。树莓派 4B 在 NAS 负载下 CPU 温度大概 60 到 70 度加一个小散热片就够了。树莓派 5 温度会高一些建议加一个散热片或者小风扇但如果你对噪音敏感可以限制 CPU 频率来降低温度。3. 系统安装与 OpenMediaVault 配置3.1 系统镜像的选择与烧录OpenMediaVault 官方提供了针对树莓派的镜像基于 Debian 系统。你可以从 OpenMediaVault 官网下载最新的树莓派镜像然后用 Raspberry Pi Imager 或者 balenaEtcher 烧录到 SD 卡上。这里有个细节SD 卡只用来装系统不要用来存数据。SD 卡的读写寿命有限频繁读写容易坏。系统装好之后所有数据都存到 USB 硬盘或者 NVMe 上。我建议用一张 16GB 或者 32GB 的 A1 或 A2 级别的 SD 卡速度不用太快但质量要可靠杂牌卡容易出问题。烧录完成后把 SD 卡插到树莓派上接上网线通电。第一次启动需要几分钟系统会自动扩展分区。启动完成后在浏览器里输入树莓派的 IP 地址就能看到 OpenMediaVault 的登录界面。默认用户名是admin密码是openmediavault。注意第一次登录后立刻修改默认密码并且把系统语言改成中文如果你需要的话。OpenMediaVault 的 Web 界面支持中文在“系统”-“常规设置”里可以切换。3.2 挂载硬盘与创建共享文件夹登录 OpenMediaVault 后第一步是挂载硬盘。在“存储器”-“磁盘”里你应该能看到接在 USB 或者 NVMe 上的硬盘。选中硬盘点击“擦除”然后到“文件系统”里创建新的文件系统。对于 Linux 环境推荐用 ext4 格式稳定性和兼容性最好。如果你需要在 Windows 和 Linux 之间共享硬盘可以用 exFAT但 exFAT 不支持 Linux 的权限管理OpenMediaVault 的一些功能会受限。创建文件系统后点击“挂载”。挂载完成后到“共享文件夹”里创建一个新的共享文件夹选择刚才挂载的文件系统设置好名称和权限。接下来配置 SMB/CIFS 服务这是 Windows 和 macOS 都能用的文件共享协议。在“服务”-“SMB/CIFS”里启用服务然后到“共享”里添加一个新的共享选择刚才创建的共享文件夹。设置好访问权限默认是允许所有用户读写你也可以创建用户和用户组来精细控制权限。3.3 用户与权限管理OpenMediaVault 的用户管理是基于 Linux 系统的用户和用户组。在“用户”-“用户”里可以创建新用户设置用户名和密码。创建用户后需要把用户加入到相应的用户组里比如users组这样才能访问共享文件夹。权限管理这块我踩过不少坑。OpenMediaVault 的权限分为共享文件夹权限和SMB 共享权限两层。共享文件夹权限控制的是文件系统层面的访问SMB 共享权限控制的是网络访问。两层权限必须都配置正确否则会出现“能看到共享文件夹但打不开”或者“能打开但无法写入”的问题。我的经验是先配置共享文件夹权限再配置 SMB 共享权限。共享文件夹权限里给需要访问的用户或用户组设置读写权限。SMB 共享权限里同样给这些用户或用户组设置读写权限。如果还是不行检查一下共享文件夹的所属用户和所属组确保当前用户有权限访问。3.4 树莓派系统优化与调整OpenMediaVault 装好之后还需要对树莓派系统做一些优化才能让 NAS 跑得更稳。第一件事是关闭不必要的服务。树莓派默认开启了一些服务比如蓝牙、音频、WiFi如果你用网线的话这些服务会占用 CPU 和内存资源。在 OpenMediaVault 的“系统”-“服务”里可以关闭不需要的服务。或者直接 SSH 登录用systemctl命令关闭。第二件事是调整 swappiness。Linux 默认的 swappiness 值是 60意味着系统会积极使用交换分区。对于 NAS 来说频繁的交换会拖慢速度而且 SD 卡的读写寿命有限。建议把 swappiness 调到 10 或者更低。编辑/etc/sysctl.conf添加vm.swappiness10然后执行sysctl -p生效。第三件事是设置静态 IP。NAS 的 IP 地址最好固定否则每次重启后 IP 变了其他设备就找不到共享文件夹了。可以在路由器里设置 DHCP 静态分配或者直接在 OpenMediaVault 的网络设置里配置静态 IP。第四件事是开启硬盘休眠。如果硬盘长时间不用可以让它休眠省电也延长寿命。在 OpenMediaVault 的“存储器”-“硬盘”里可以设置休眠时间。但要注意频繁启停对硬盘寿命也有影响所以休眠时间不要设太短建议 30 分钟以上。4. OLED 状态显示的实现4.1 I2C 接口的启用与测试树莓派的 I2C 接口默认是关闭的需要手动启用。在 OpenMediaVault 的 Web 界面里到“系统”-“树莓派”-“接口”勾选 I2C 并保存。或者 SSH 登录后执行raspi-config在“Interface Options”里启用 I2C。启用后安装 I2C 工具sudo apt install i2c-tools。然后执行i2cdetect -y 1如果屏幕接线正确你应该能看到一个地址通常是0x3c或者0x3d。这个地址就是 OLED 屏幕的 I2C 地址后面写代码的时候要用到。注意如果i2cdetect显示的是UU而不是地址说明 I2C 地址被驱动占用了需要先卸载驱动。如果什么都没显示检查接线是否正确特别是 SDA 和 SCL 有没有接反。4.2 Python 驱动库的安装与配置OLED 屏幕的驱动库我用的是luma.oled这个库支持多种 OLED 屏幕文档也比较全。安装方法pip install luma.oled如果你用的是树莓派 5可能需要先安装libopenjp2-7和libtiff5这些依赖sudo apt install libopenjp2-7 libtiff5安装完成后写一个简单的测试脚本确认屏幕能正常显示from luma.core.interface.serial import i2c from luma.oled.device import ssd1306 from luma.core.render import canvas serial i2c(port1, address0x3C) device ssd1306(serial) with canvas(device) as draw: draw.text((0, 0), Hello NAS, fillwhite)运行这个脚本如果屏幕上显示“Hello NAS”说明驱动配置正确。4.3 系统状态数据的采集OLED 要显示系统状态首先得把数据采集出来。树莓派上采集系统信息最方便的是用psutil库pip install psutilpsutil可以获取 CPU 使用率、内存占用、磁盘容量、网络流量等信息。比如import psutil cpu_percent psutil.cpu_percent(interval1) memory psutil.virtual_memory() disk psutil.disk_usage(/mnt/data)CPU 温度需要从系统文件里读def get_cpu_temp(): with open(/sys/class/thermal/thermal_zone0/temp, r) as f: temp float(f.read()) / 1000 return temp网络 IP 地址可以用socket库获取import socket def get_ip(): s socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: s.connect((8.8.8.8, 80)) ip s.getsockname()[0] except: ip 127.0.0.1 finally: s.close() return ip4.4 OLED 显示界面的设计与实现显示界面我设计成四行每行显示一个关键信息第一行CPU 温度和 CPU 使用率第二行内存使用率和内存总量第三行硬盘使用率和硬盘总量第四行IP 地址和运行时间代码实现上用一个主循环每隔几秒刷新一次屏幕。为了避免屏幕闪烁可以用luma.oled的canvas上下文管理器每次刷新时先清空再绘制。import time from luma.core.interface.serial import i2c from luma.oled.device import ssd1306 from luma.core.render import canvas from PIL import ImageFont serial i2c(port1, address0x3C) device ssd1306(serial) font ImageFont.load_default() def display_status(): cpu_temp get_cpu_temp() cpu_percent psutil.cpu_percent(interval0.5) memory psutil.virtual_memory() disk psutil.disk_usage(/mnt/data) ip get_ip() with canvas(device) as draw: draw.text((0, 0), fCPU: {cpu_temp:.1f}C {cpu_percent}%, fontfont, fillwhite) draw.text((0, 16), fMEM: {memory.percent}% {memory.total//1024//1024}M, fontfont, fillwhite) draw.text((0, 32), fDSK: {disk.percent}% {disk.total//1024//1024//1024}G, fontfont, fillwhite) draw.text((0, 48), fIP: {ip}, fontfont, fillwhite) while True: display_status() time.sleep(5)这个脚本跑起来之后OLED 屏幕上就会实时显示系统状态。你可以把它设置成开机自启动这样每次树莓派启动后OLED 自动开始工作。4.5 设置开机自启动让 OLED 显示脚本开机自启动最简单的方法是创建一个 systemd 服务。新建一个文件/etc/systemd/system/oled-status.service[Unit] DescriptionOLED Status Display Afternetwork.target [Service] ExecStart/usr/bin/python3 /home/pi/oled_status.py Restartalways Userpi [Install] WantedBymulti-user.target然后执行sudo systemctl daemon-reload sudo systemctl enable oled-status.service sudo systemctl start oled-status.service这样每次树莓派启动后OLED 显示脚本会自动运行。如果脚本崩溃了systemd 会自动重启它。5. 常见问题与排查技巧实录5.1 OLED 屏幕不亮或显示异常这是最常见的问题我遇到过好几次。排查思路按顺序来第一步检查接线。I2C 的四根线有没有接反VCC 是不是接了 3.3VSDA 和 SCL 有没有接错树莓派的 GPIO 引脚图网上到处都是对照着检查一遍。第二步检查 I2C 是否启用。执行ls /dev/i2c*如果只看到/dev/i2c-1说明 I2C 已经启用。如果什么都没看到说明 I2C 没启用需要重新配置。第三步检查 I2C 地址。执行i2cdetect -y 1看看能不能扫描到地址。如果显示0x3c说明屏幕通信正常。如果显示--说明屏幕没有响应可能是接线问题或者屏幕坏了。第四步检查驱动库版本。luma.oled的版本不同API 可能有差异。如果你用的是旧版本可能需要调整代码。建议用最新版本。我踩过的一个坑有些 OLED 屏幕的 I2C 地址是0x3d而不是0x3c代码里写死了0x3c就显示不出来。遇到这种情况把地址改成0x3d试试。5.2 硬盘挂载失败或掉盘USB 硬盘掉盘是树莓派 NAS 的常见问题。原因通常有三个供电不足、USB 线质量差、硬盘休眠设置不当。供电不足是最常见的。2.5 寸硬盘虽然标称只需要 5V 0.5A但启动瞬间电流可能超过 1A。如果树莓派的电源功率不够或者 USB 线太细就会导致硬盘掉盘。解决办法是换一个功率更大的电源或者用带独立供电的 USB Hub。USB 线质量差也会导致掉盘。有些便宜的 USB 3.0 线屏蔽不好高速传输时误码率高硬盘就会掉。换一根质量好的线试试。硬盘休眠设置不当也会导致掉盘。如果休眠时间设得太短硬盘频繁启停反而容易出问题。建议把休眠时间设到 30 分钟以上或者干脆关闭休眠。5.3 SMB 共享无法访问SMB 共享无法访问排查起来比较繁琐。我整理了一个速查表问题现象可能原因解决方法能看到共享文件夹但打不开共享文件夹权限不足检查共享文件夹的所属用户和权限能打开但无法写入SMB 共享权限只读在 SMB 共享设置里改为读写提示用户名或密码错误用户未加入用户组把用户加入users组网络邻居里看不到 NASSMB 服务未启用在服务里启用 SMB/CIFS访问速度很慢网络协商问题检查网线是否千兆SMB 协议版本设为 SMB3还有一个隐藏问题Windows 10/11 默认禁用了 SMB1 协议而有些老设备只支持 SMB1。如果你用老设备访问 NAS可能需要在 Windows 里启用 SMB1 支持。但 SMB1 有安全风险不建议长期使用。5.4 系统温度过高树莓派 4B 在 NAS 负载下温度到 70 度左右是正常的但如果超过 80 度就会触发降频性能下降。树莓派 5 温度更高满载可以到 85 度。解决办法加散热片。树莓派 4B 加一个铝制散热片温度可以降 10 度左右。树莓派 5 建议加一个带风扇的散热器但如果你对噪音敏感可以限制 CPU 频率。在/boot/firmware/config.txt里添加arm_freq1500这样可以把 CPU 频率限制在 1.5GHz温度会明显下降但性能也会有所损失。对于 NAS 来说1.5GHz 的性能已经足够。5.5 我的独家避坑经验折腾树莓派 NAS 这几年我总结了几条经验都是踩坑踩出来的第一SD 卡一定要用好的。我一开始用杂牌 SD 卡跑了三个月就坏了系统直接起不来。后来换成三星 EVO 或者闪迪 Extreme稳定跑了一年多没问题。第二电源一定要用官方的。树莓派对电源很挑剔电压不稳会导致各种奇怪的问题比如 USB 掉盘、WiFi 断连、系统重启。官方电源虽然贵一点但省心。第三重要数据一定要备份。树莓派 NAS 再稳定也是 DIY 方案可靠性比不上成品 NAS。重要数据至少备份两份一份在 NAS 上一份在另一块硬盘或者云端。第四不要频繁插拔 USB 硬盘。树莓派的 USB 接口没有防静电设计频繁插拔容易损坏接口或者硬盘。如果要换硬盘先关机再操作。第五OLED 屏幕的亮度不要设太高。OLED 屏幕长期高亮度显示会加速老化出现烧屏现象。建议把亮度设到 50% 左右或者设置成定时息屏。6. 性能实测与优化建议6.1 文件传输速度实测我用树莓派 4B 加一块 2.5 寸 5400 转机械硬盘做了实测。Samba 共享下从 Windows 电脑拷贝一个 5GB 的电影文件到 NAS速度稳定在 95MB/s 到 105MB/s 之间基本跑满了千兆网络。从 NAS 拷贝到电脑速度也差不多。如果用 NVMe 固态硬盘树莓派 5速度可以到 400MB/s 以上但受限于千兆网口实际网络传输速度还是 110MB/s 左右。所以如果你只是做文件共享USB 3.0 接机械硬盘已经足够没必要上 NVMe。6.2 功耗与噪音实测树莓派 4B 加 2.5 寸机械硬盘空载功耗 5.2W满载读写功耗 9.8W。树莓派 5 加 NVMe 固态硬盘空载功耗 7.5W满载功耗 13.2W。这个功耗水平一年 365 天开机的电费大概在 30 到 60 元之间非常省电。噪音方面2.5 寸机械硬盘有轻微的转动声但放在桌面上基本听不到。NVMe 固态硬盘完全静音。树莓派本身没有风扇也没有噪音。整体来说这套方案比成品 NAS 安静很多。6.3 进一步优化的方向如果你想让这套 NAS 跑得更快更稳可以考虑几个优化方向第一用 Docker 跑额外服务。OpenMediaVault 支持 Docker你可以在 NAS 上跑一些轻量级服务比如 AdGuard Home 做网络广告过滤、Jellyfin 做媒体服务器、Nextcloud 做私有云盘。树莓派 4B 的 4GB 内存跑这些服务有点吃力建议用 8GB 版本。第二配置自动备份。OpenMediaVault 有内置的 Rsync 功能可以设置定时任务把重要数据备份到另一块硬盘或者远程服务器。我一般设置每天凌晨 3 点自动备份备份完成后发邮件通知。第三监控系统健康状态。除了 OLED 显示你还可以用 OpenMediaVault 的监控功能设置 CPU 温度、硬盘 SMART 状态的告警。如果硬盘出现坏道或者温度过高系统会发邮件提醒你。第四考虑升级到 2.5G 网络。树莓派 5 支持通过 USB 3.0 转 2.5G 网卡网络速度可以提升到 250MB/s 左右。但需要你的路由器和交换机也支持 2.5G成本会高不少。对于大多数家用场景千兆网络已经够用。我个人在实际操作中的体会是树莓派 NAS 这套方案最大的价值不在于性能有多强而在于它让你完全掌控自己的数据。成品 NAS 虽然方便但数据存在别人的系统里总有一种不踏实的感觉。树莓派 NAS 虽然折腾但每一块硬盘、每一个服务、每一行代码都是你自己配置的出了问题也知道怎么修。这种掌控感是成品 NAS 给不了的。最后再分享一个小技巧如果你觉得 OLED 屏幕显示的信息太多可以做一个轮播效果每隔几秒切换一屏比如第一屏显示 CPU 和内存第二屏显示硬盘和网络第三屏显示时间和天气。这样屏幕利用率更高看起来也更舒服。代码实现上用一个列表存储不同的显示函数主循环里轮流调用就行。