关于我组了一台 nas,并在一周内把 raid1 数据搞丢这件事

2022-11-29secret

说来也是神奇,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 上,有些数据我是直接剪切粘贴过去的,没有留下备份,这也埋下了伏笔。

但硬盘很吵嘛,一直在那里响我也担心的,于是后面又购入了一块 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%,就能看到完整的文件系统目录结构了。我可以通过目录结构确定我到底丢失了哪些数据,这不由得让我松了口气。尽管导出的话也都会提示超过最大文件大小限制,但已经好太多了。

UFS

我尝试去找了下破解的版本,毕竟正版的价格太贵了。但网上流传的也都是不完全破解的版本,都有文件导出限制。始终没有找到,于是到淘宝去找店家,花费 39.8 元店家远程破解。数据经实测可以正常导出,导出速度也挺快的,导出几百个 G 完全没问题。

到这里,数据最终还是成功找回来了。虽然使用的破解,还是感谢下数据修复软件。

当然,也是有吸取一些教训的。尽量不要用 SSD 缓存,尽量不用 raid1,😂 (骗你的

SSD 缓存可以继续用,但注意如果要对盘做什么操作,首先卸载 SSD 缓存,将缓存文件都写入到硬盘中,避免数据丢失。

raid1 的话我确实不再用了,因为在个人数据备份场景下,raid1 的作用实在有限,而且浪费了大量磁盘空间与性能,我开始使用 Hyber Backup 套件,一个硬盘单纯用于备份盘,每天凌晨三点备份,如果没有大量数据变更的话,只需几分钟就能完成一次备份。

而且它支持版本控制等功能,也挺好用的。 Hyber Backup

其他问题

遇到的一些问题我也简单列一下吧

机箱风扇满速运转,声音很吵。

机箱没有温控,风扇接到机箱默认满速。我把风扇接到了主板上,通过主板的 bios 来智能调整风扇的转速,比如可以设置风扇停转温度、风扇启转温度、风扇满速温度。

注意这里的温度可以调低一点,风扇如果不转的话硬盘很容易一直积攒温度到 50 度,带来隐患。可以持续一段时间来监控硬盘和 CPU 的温度看是否正常。

下面是我的设备监控图,最开始设置的温度较高,硬盘很容易升高到 48 度左右,在调整风扇后温度下降显著。

温度

硬盘没有休眠

尝试了很多方法,还是没能成功休眠。不清楚是硬盘的原因,还是 arpl 或者群晖系统的问题。
https://github.com/fbelavenuto/arpl/issues/309

系统 CPU 温度显示错误

系统 CPU 温度
这里我通过 docker 安装了性能监测软件。 最开始我装的 netdata,直接在 docker 中搜索无需配置就能安装成功了,它可以看到 CPU 的实际温度。

netdata - overview

netdata CPU 温度

不过 netdata 里的所有展示的数据都是独立于 DSM 系统的,通过自己的一套程序去获取。在我需要监控硬盘温度时,它默认不支持,需要安装 hddtemp,但 DSM 系统又不好去安装这些工具。

不过我们可以在存储管理器中看到硬盘温度等数据,有没有办法直接拿到里面展示的数据呢,有的,我们可以通过 SNMP 协议按照对应的格式拿到与解析相关数据。

所以我用了这个工具, Synology-NAS-monitoring,只要是系统里能展示的数据,它都可以监控。也正因此,如果你直接使用,它展示的 CPU 温度等信息也是上面提到的错误信息,需要做一些小小的配置。

  具体配置过程
  1. 安装 docker alhazmy13/telegraf-influxdb-grafana

安装步骤参照 https://github.com/alhazmy13/Synology-NAS-monitoring
在安装完成后,你可以进入页面,只是 CPU 温度等信息还是展示的错误的信息。

  1. 新建终端机。

  2. 安装 lm-sensors 等工具

  apt-get update && apt-get install lm-sensors 
  apt-get install vim # 或者安装 vim-tiny,下面命令从 vim 更改到 vi 即可
  1. vim /etc/telegraf/telegraf.conf
# 添加以下几行即可,在页面靠后部分,可以直接跳到最后再往前找
[[inputs.sensors]]
  interval = "60s"
  timeout = "30s"

telegraf

  1. (可选) 开启 gzip,加快代理到外网的加载速度

vim /etc/grafana/grafana.ini

# enable gzip
- ; enable_gzip = false
+ enable_gzip = true
  1. 重启进入页面,配置 CPU 温度信息源即可

grafana

overview

nas 这东西呢,在我了解它之前我并不需要它,在我了解之后它已经成为我的刚需了。尽管目前它仍然不完美,声音吵,硬盘无法成功休眠,但它依旧可以帮助我做很多事情。

  • 我的数据有了稳定的备份 (虽然目前还是担心两个硬盘忽然挂掉 = =,感觉还是差一个冷备份

  • 通过 frp 反向代理 + emby(或 jellyfin) 资源库,我可以 24 小时任何地方管理我的数据,听我下载的歌,追我攒存的剧与动漫。

  • 可以把网盘的数据备份到本地。

  • 可以挂一些自动的服务 (虽然我现在还没挂hhh

  • 可以挂一些 torrent,下载更省心 = =

  • 可以把我相册的图片备份到 nas,管理起来更方便

总之,如果你也有这方面的需求,可以考虑入手一个 nas。

感谢看到这里~ 比心 =v

点赞 0