起
说来也是神奇,nas 这东西一直只是听说过,但并不了解,也一直是觉得我没有需要搭建 nas 的需求。
但恰逢双十一,总怀着种不花钱就是亏的心思。同时,有一些数据安全的需求,想要组磁盘阵列来保护数据。
最开始,我的需求只是磁盘阵列,一些硬盘盒也足够满足我的需求。但看了一些帖子,都说不如组 nas,索性就直接 nas 走起吧。
至于数据安全需求呢,其实我的数据并不重要。但在电脑上,我不想去删掉一些可能不重要,甚至可能再也不会打开的东西,比如大学里的课件、我的课程设计;在生活中,我同样会保留一些不那么重要的东西,比如来来回回的车票、去医院的挂号单,比如某次骑车时扑在我脸上的叶子。总之临时起意的需求就变成了生活中的刚需,当天晚上翻淘宝翻到睡不着 = =.
买
买啥的话很快就排除了白群晖,高昂的价格让我有点高攀不起。
具体的配置倒是挺快就定下来了,因为我抄了一个 B 站 Up 主的作业。
他的博客我贴在这里了,NAS折腾记(3):NAS 装机
我的配置如下:
配件 | 说明 | 价格 |
---|---|---|
CPU | i3-8100T | 410 |
主板 | B360-Mini ITX (纳斯电子科技) | 549 |
电源 | 益衡-7025B 250W | 265 |
散热器 | 乔思伯 HP400S | 78 |
机箱 | 拓普龙 4 盘位机箱 (蜗牛星际) | 260 |
内存 | 光威 2666MHz 8G * 2 | 127 * 2 |
M.2 | 西部数据 240G SN350 | 168 * 2 |
SSD | 西部数据 2.5 寸 SATA | 324 |
HDD | 希捷 ST8000NC0002 8T * 2 (闲鱼) | 500 * 2 |
总计 3476 |
机箱的话我是看这个机箱相对较小才入的,但其实就是蜗牛星际的机箱,做工也一般,前面的 USB 插槽还只支持 USB2.0,总的来说还是感觉不如再多花点钱入手一个做工更精致的hh。或者直接咸鱼低价收一个更便宜的。
SSD 缓存的话,其实必要性不大,性能提升有限,而且存在一定数据风险。不如直接上 16 * 2 的内存,因为内存对 nas 的性能提升是最大的,往大了买准没错,平时的空余内存都会被 nas 去当作缓存来提速,不会浪费。
算了一下总价,还是花了挺多钱的。硬盘的话不是我不想从京东上买,京东上的实在太贵了,于是从闲鱼收了两块,成色都挺好的,通电时间只有几十上百个小时,不清楚是不是清零盘,扫描的话也一切正常,全盘都是绿的。不过是企业盘,很吵,不用的时候也会有声音,我把它丢阳台了。
硬盘这方面确实是没有保障的,所以我想的是组一个 raid1,给数据加一些安全感,当然,这也引出了后半部分标题——关于我在一周内把 raid1 数据搞丢这件事。
安装
装机的话其实也没啥好说的,不过这是我第一次去装机,从装 CPU、涂硅脂,到布线都手忙脚乱的,来来回回把主板装上再拆下来不下三次,不过好歹也是顺顺利利开机了。
在安装系统这方面,我也是参考了上面那位博主的博客 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1,使用相对简单的安装工具 arpl,github 链接在这里 https://github.com/fbelavenuto/arpl
安装过程整体也比较顺利。
数据丢失这件事
先说下我的硬盘吧,最开始,我把两块 8T 的 HDD 组了台 raid1 来用,同时用两个 M.2 开启了读写缓存。一些数据已经迁移到这块 nas 上,有些数据我是直接剪切粘贴过去的,没有留下备份,这也埋下了伏笔。
虽然已经有了两块 HDD,但硬盘很吵嘛,一直在那里响我也担心的,于是后面又购入了一块 500G 的 SSD,想作为系统盘来用,比如一些下载工作也用这块 SSD,尽量不频繁写入 HDD。
群晖的系统盘默认会安装到所有硬盘上,但是会从盘号最小的那块硬盘上启动。
DSM 操作系统安装在哪个硬盘上?- 群晖知识中心
在 SSD 到了后,我想的是把原有的盘先拿出来,只装上这个 SSD,重新安装系统,再把原有的盘塞进去。因为我原有的盘是两块 8T 盘组的 raid1,怎么想数据都是万无一失的。
基于 SSD 重新安装完系统后,我插入一块 8T 的硬盘,在存储管理器里弹出了重组存储池的提示,提示我可以用这个硬盘和两个 M.2 重组存储池,我直接就点重组了,但在重组后我才注意到,我的另外一块硬盘还没有插进去,自然也没有重组进去。
如果再重新把另一块硬盘加入进已经重组完成的存储池,就需要重新组 raid1,花费超过 10 小时 (之前组过一次)。我觉得这个时间太长了,下意识的解决方案是我把两块硬盘都装进去,再点一次重组存储池就行了,那已经装上的硬盘已经重组存储池了怎么办呢,这个好办,我决定把刚重组的存储池先给删掉。
尽管系统已经给了我二次确认的提示,但我还是遵循了我的下意识,同时怀着对 raid1 的盲目信任,很迅速地就删除了存储池。并在 1 分钟内发现,就算这时我再插入那个一直没用过的 raid1 的硬盘,也不会再有重组存储池的选项弹出来了。
我盲目以为删除存储池,就像是弹出硬盘一样,不会清空数据。但事实是,我的数据在我清空存储池时就被删掉了。
为什么我的那块没有动过的硬盘没有重组存储池的弹窗弹出呢,按理说 raid1 是可以从任何一块硬盘恢复数据的。我在查阅官方文档后才明白,因为我的存储池开启了 SSD 读写缓存,所以需要两块 SSD 缓存再加上任一块 raid1 中的硬盘才能重组存储池,而我的缓存呢,在我删除上面那个存储池时也一并删除掉了。
搞明白到底做了什么神奇操作的我,恨不得给自己来上一拳。
事已至此,我先合计了下丢失的数据,有一部分数据我是直接剪切过去的。同时,在大约一年前多,我把部分数据备份过移动硬盘。具体丢失的数据应该不算多,并且也不是什么关键文件,但我也很难去列出具体丢了什么数据。数据丢了之后我一直有种怅然的情绪,有种人死灯灭的感受,之前我可能很久没打开过这些数据,但我知道它们就在那里,而我现在再去问,你有哪些数据呀,却再也找不到那些文件夹了。
我还是决定先尝试修复下数据,感觉机会还挺大的。不管是对数据安全的追求,还是对后续数据安全保障的演练,都值得我去做。
参考的一些修复链接:
最开始我尝试通过 mdadm 的命令去挂载磁盘,接着用 vgchange -ay 去挂载文件系统。这样操作确实也成功了,DSM 存储管理器里会多出一个存储池,不过它是一个 LUN 类型的存储池,没有数据,显然还有问题。注意这时候我还不知道删除存储池就直接把数据删除了,我就又删除了存储池… 得,我成功把两个盘的数据都给删了,然后就再也挂载不上去了。
复盘了整个操作后的我不由得掩面叹气。如果我没有把这一块硬盘的数据也删掉,直接重装一个 ubuntu 系统,应该还是有挺大机会修复出数据的。
常规的数据修复方法已经没用了,我开始找数据恢复软件。我用了下 UFS,可以扫描删除的文件,同时支持 btrfs 文件格式,仅仅扫了前面 5%,就能看到完整的文件系统目录结构了。我可以通过目录结构确定我到底丢失了哪些数据,这不由得让我松了口气。尽管导出的话也都会提示超过最大文件大小限制,但已经好太多了。
我尝试去找了下破解的版本,毕竟正版的价格太贵了。但网上流传的也都是不完全破解的版本,都有文件导出限制。始终没有找到,于是到淘宝去找店家,花费 39.8 元店家远程破解。数据经实测可以正常导出,导出速度也挺快的,导出几百个 G 完全没问题。
到这里,数据最终还是成功找回来了。虽然使用的破解,还是感谢下数据修复软件。
当然,也是有吸取一些教训的。尽量不要用 SSD 缓存,尽量不用 raid1,😂 (骗你的
SSD 缓存可以继续用,但注意如果要对盘做什么操作,首先卸载 SSD 缓存,将缓存文件都写入到硬盘中,避免数据丢失。
raid1 的话我确实不再用了,因为在个人数据备份场景下,raid1 的作用实在有限,而且浪费了大量磁盘空间与性能,我开始使用 Hyber Backup 套件,一个硬盘单纯用于备份盘,每天凌晨三点备份,如果没有大量数据变更的话,只需几分钟就能完成一次备份。
而且它支持版本控制等功能,也挺好用的。
其他问题
遇到的一些问题我也简单列一下吧
机箱风扇满速运转,声音很吵。
机箱没有温控,风扇接到机箱默认满速。我把风扇接到了主板上,通过主板的 bios 来智能调整风扇的转速,比如可以设置风扇停转温度、风扇启转温度、风扇满速温度。
注意这里的温度可以调低一点,风扇如果不转的话硬盘很容易一直积攒温度到 50 度,带来隐患。可以持续一段时间来监控硬盘和 CPU 的温度看是否正常。
下面是我的设备监控图,最开始设置的温度较高,硬盘很容易升高到 48 度左右,在调整风扇后温度下降显著。
硬盘没有休眠
尝试了很多方法,还是没能成功休眠。不清楚是硬盘的原因,还是 arpl 或者群晖系统的问题。
https://github.com/fbelavenuto/arpl/issues/309
系统 CPU 温度显示错误
这里我通过 docker 安装了性能监测软件。
最开始我装的 netdata,直接在 docker 中搜索无需配置就能安装成功了,它可以看到 CPU 的实际温度。
不过 netdata 里的所有展示的数据都是独立于 DSM 系统的,通过自己的一套程序去获取。在我需要监控硬盘温度时,它默认不支持,需要安装 hddtemp,但 DSM 系统又不好去安装这些工具。
不过我们可以在存储管理器中看到硬盘温度等数据,有没有办法直接拿到里面展示的数据呢,有的,我们可以通过 SNMP 协议按照对应的格式拿到与解析相关数据。
所以我用了这个工具, Synology-NAS-monitoring,只要是系统里能展示的数据,它都可以监控。也正因此,如果你直接使用,它展示的 CPU 温度等信息也是上面提到的错误信息,需要做一些小小的配置。
具体配置过程
- 安装 docker alhazmy13/telegraf-influxdb-grafana
安装步骤参照 https://github.com/alhazmy13/Synology-NAS-monitoring
在安装完成后,你可以进入页面,只是 CPU 温度等信息还是展示的错误的信息。
-
新建终端机。
-
安装 lm-sensors 等工具
apt-get update && apt-get install lm-sensors
apt-get install vim # 或者安装 vim-tiny,下面命令从 vim 更改到 vi 即可
vim /etc/telegraf/telegraf.conf
# 添加以下几行即可,在页面靠后部分,可以直接跳到最后再往前找
[[inputs.sensors]]
interval = "60s"
timeout = "30s"
- (可选) 开启 gzip,加快代理到外网的加载速度
vim /etc/grafana/grafana.ini
# enable gzip
- ; enable_gzip = false
+ enable_gzip = true
- 重启进入页面,配置 CPU 温度信息源即可
尾
nas 这东西呢,在我了解它之前我并不需要它,在我了解之后它已经成为我的刚需了。尽管目前它仍然不完美,声音吵,硬盘无法成功休眠,但它依旧可以帮助我做很多事情。
-
我的数据有了稳定的备份 (虽然目前还是担心两个硬盘忽然挂掉 = =,感觉还是差一个冷备份
-
通过 frp 反向代理 + emby(或 jellyfin) 资源库,我可以 24 小时任何地方管理我的数据,听我下载的歌,追我攒存的剧与动漫。
-
可以把网盘的数据备份到本地。
-
可以挂一些自动的服务 (虽然我现在还没挂hhh
-
可以挂一些 torrent,下载更省心 = =
-
可以把我相册的图片备份到 nas,管理起来更方便
-
…
总之,如果你也有这方面的需求,可以考虑入手一个 nas。
感谢看到这里~ 比心 =v