之前我的 All In One HomeLab 一直是使用 ESXi 作为底层系统, 上面运行多个系统, 其中的黑群晖中又运行了 Docker 的一些容器.
但在使用的一年时间中发现了一些问题:
- 群晖的 Raid1 阵列通过 NFS 挂载到 ESXi 上后遇到连接速度瓶颈, iowait 占用过高, 缓存盘提速效果不明显.
- ESXi 对家用硬件支持不是很完善.
- ESXi 对资源分配不够灵活, 每台虚拟机需要提前确定内存量.
- 黑群晖升级比较复杂, 升级时可能带来不稳定, 每次升级都是一次”折腾”.
在体验了一年群晖系统后, 我了解了一台成熟的 “NAS” 应该有哪些功能, 于是我打算自己打造一个更加开放, 便于维护, 功能完善和高度自定义的 NAS 系统.
当然自己做的 NAS 系统易用度和普适性上肯定不如现有的群晖系统, 只是希望做出一个能比群晖更加开放和更加高度客制化的系统, 过程记录在此, 供想要定制自己 NAS 的大家参考.
底层系统 unRAID
目前能底层系统的选择其实不是很多, ESXi, PVE, unRAID, FreeNAS 等.
最后处于灵活性强的考虑选择了 unRAID.
unRAID 对家用硬件支持较好, 系统单独出售不与硬件捆绑, 上面原生支持了 Docker 和 VM, 硬盘阵列在有冗余的同时也可以随时调整容量(对于我这种不断根据需求扩容的 HomeLab 十分友好), 可以为每个共享文件夹单独设置 SSD 缓存策略(nvme SSD 能提供很高的 io 性能).
unRAID 插件
unRAID 可以装一些很实用的插件拓展系统功能.
Dynamix System Info / Dynamix System Temp
显示详细系统信息
Fix Common Problems
修复常见系统问题
NerdPack GUI + User Scripts
安装第三方软件包 + 执行自定义脚本文件
Recycle Bin
删除的文件移入回收站
2022.09.13 更新(新增两个插件, 效果待检验):
Dynamix Cache Dirs
缓存硬盘的目录结构, 减少硬盘的唤醒.(我自己选的是一小时无读写硬盘休眠.)
Dynamix File Integrity
最近在研究 SnapRaid 的时候, 突然发现 unRAID 的阵列是没有能力纠正 bitrot 的.
如果硬盘自带的纠错机制没能纠正 bitrot, 就可能导致 Parity Check 的时候出现 Errors.
如果安装了 Dynamix File Integrity 这个插件, 它能对所有文件进行 Hash, 并在发生静默错误时提醒用户.(虽然不能纠正内容, 用户要自行从备份恢复内容.)
服务部署
unRAID 底层系统支持 Docker, 本来在群晖中以 Docker 形式部署的镜像都可以直接迁移到 unRAID 下.
关键是要寻找群晖套件的等效替代品.
相册 - Photoprism
分类功能感觉还强于群晖自带的 Photos, 只是手机客户端体验可能不那么好.
因为不想把服务暴露到公网, 手机连 VPN 还是比较麻烦, 所以手机上我还是使用了 Google Photos.文件备份管理/历史版本管理 - Syncthing
十分推荐 Syncthing, 完爆原本的 Synology Drive. WebUI 能看到同步情况和历史版本, 还自带多种 P2P 打洞方式, 备份速度也很快, 支持功能也多.
网页文件管理 - kodbox
unRAID 自带的网页管理加 Dynamix File Manager 插件是另一种相对轻量的替代.
文件索引 - diskover
可以使用 ES 索引所有磁盘的文件, 快速搜索, 但不能搜索到文件内容. FSCrawler 可能可以作为替代品.
CloudSync 备份 - restic / duplicati
我目前使用 duplicati 将本地文件备份到阿里云 Webdav 中, 可以 Docker 一键安装, 有 WebUI 方便管理. 阿里云不用买会员也是不限速的, 目前闲鱼可以直接购买一年的 8T 扩容不到 30 元.
目前测试十分稳定, 速度能跑满我家的 120Mbps 的上行宽带, 也能尽快完成备份让硬盘休眠, 每周打一次增量快照也不会太久.
如果被风控了再更新~ 当然 E5 订阅的 5T Onedrive 也是不错的备份目的地选择(虽然在我测试时网络不是十分稳定). 如果数据量少 (200GB 以下) 的话还可以直接选择更可靠的腾讯云 COS, 每月费用也很便宜.
Quickconnect - 无替代品, 虚拟机解决.
虚拟机部署
在 VM 中安装了 Windows 11, Ubuntu 22.04, Debian 11 和黑群晖 7.1.
黑群晖 7.1 目前用于 Quickconnect 内网穿透.
踩坑
portainer 与 unRAID 官方网页版本的 Docker 管理是冲突的. unRAID 的 docker 管理不如 portainer 完善, 但一旦在 unRAID 上修改就会覆盖所有 portainer 中的设置, 而且 unRAID 添加自己容器需要自己添加 xml 模板.
Unraid 也有其缺点:
Docker, 网络, 虚拟机相关的高级设置在 WebUI 中缺失或不够全面, Slackware 手动设置相对困难.
必须先启动阵列才能启动 Docker 和虚拟机, 修改网络设置必须关闭 Docker 和虚拟机, 如果在 unRAID 上运行软路由会比较麻烦.
细节方面处理仍有不足, 如遇到一些小 Bug 需要自行 debug.
如 Docker 图标可能不更新, Docker pull 过慢会卡死 WebUI, 关机时可能不能正确卸载磁盘, dockerMan 与 portainer 冲突, 共享文件夹容易遇到权限问题.
纯机械 Array 访问速度慢. (可以用 SSD 缓存解决.)
插件安装容易遇到网络问题. (可以在 emhttp 的环境变量(修改方法在此文中提到) 中加入 HTTP_PROXY 使用 http 代理, 或直接使用网关代理.)
目前 unRAID 的稳定性看起来还没有问题, 还需要再观察一段时间~
本文采用 CC BY-NC-SA 4.0 许可协议发布.
作者: lyc8503, 文章链接: https://blog.lyc8503.net/post/13-unraid-all-in-one/
如果本文给你带来了帮助或让你觉得有趣, 可以考虑赞助我¬_¬