前天,NAS 的一个硬盘突然报错,具体错误如下:

Warning 系统 2020/08/18 22:23:43 SYSTEM Checksum mismatch on file [/sys/fs/btrfs/f476a096-0b94-4a0c-b18d-d325538a5fdc/mount_path].
Error 系统 2020/08/18 22:24:34 SYSTEM Storage Pool [1] was crashed.

使用这个硬盘创建的存储池进入了损毁状态,并且各种套件都停止了工作。


根据群晖提供的 文档,我发现自己属于情况 4,也就是还能开机,并且可以读取数据。按照文档的操作步骤,检查 NAS。

  1. 我平时就是定时备份数据到另一个硬盘,现在只是损坏一个硬盘,并不需要额外进行备份。
  2. 进入存储空间管理员以移除对应的存储池。
  3. 对硬盘进行完整检查,发现其严重损坏。

    DS218+ 的硬盘 1 严重损坏,发生故障。请立即备份数据,然后更换硬盘。
    硬盘信息:
    品牌:Seagate
    型号:ST1000VM002-1ET162
    容量:931.5 GB
    序列号:S5140TAN
    固件:SC11
    S.M.A.R.T. 状态: 故障
    坏扇区数: 144
    硬盘重新连接次数: 0
    硬盘重新识别次数: 0
  4. 内存测试没有问题。

这个硬盘,是我从之前的小米路由器R2D上拆下来的,用了 5 年,看来寿命到了尽头。没办法,只能下单,购买一个新的硬盘。


昨天下午,新硬盘到家后,我创建好存储池和存储空间,并且将之前套件在存储空间 2 上创建的文件夹都转移到存储空间 1,也就是存放数据的空间上。至于为什么在存储空间 2 上会有这些套件的文件夹,是因为新硬盘到家之前,我将之前坏掉的硬盘取下来,很多套件都提示我需要修复。我就顺手单击全部修复按钮,现在想起来其实可以等新硬盘到家插上之后再修复。注意,移动文件夹之前需要禁用使用这个文件夹的套件,比如 Audio Station,Video Station。

将所有文件夹放置到对应的位置之后就该利用 Hyper Backup 的备份还原功能,将之前备份的数据还原就好。


经过几个小时的还原,终于把所有文件都恢复了。这次硬盘损坏,丢失了几个东西。

  1. Cloud Sync 套件的配置。备份没法备份这个套件的配置。
  2. Docker 中的镜像和容器。理由同上。
  3. 存储空间 1 中的文件历史记录。还原备份只能还原最近文件,没法还原文件历史记录。
  4. 之前通过 SSH 手动修改的文本编辑器支持格式。修复这个套件的时候相当于重装了一次。
  5. Download Station 无法正常运行。重装之后恢复。

这次还算顺利,看起来以后遇到相同的情况,也不用太担心。这也证明我现在的备份策略是基本可行的。

不过还需要时不时备份一下 Hyper Backup 无法顾及到数据,不过有些似乎不好备份,还好这些数据都不算是特别重要的。


因为之前不小心把很多套件安装到了存储空间 2 上,所以需要想办法把这些套件重新搬到存储空间 1 里。通过搜索,我找到了一篇 文章 提到过这个。

https://www.beatificabytes.be/sspks 这个链接添加到套件中心里,然后安装 PHP7.3 和 Mods Package Manager。

通过这个软件一个一个将套件从存储空间 2 移动到存储空间 1。虽然是最新的软件,但是在移动时还是遇到了问题,我只能先删除 Moment 和其依赖的套件,然后在存储空间 1 重新安装。


这次事件,我能学到的便是,要提高硬盘健康状况的检查频率。之前我一直是一个月运行一次硬盘快速检测,并没有运行过全面检测。我完全没有得到任何预警,存储空间就损毁了。现在我将设置调整为了每周日运行一次快速检测,每一个月运行一次完整检测。这也是群晖 官方推荐 的频率。

完整检测 它会扫描整个硬盘以运行深度诊断检测,但是检查时间比快速检测长得多。但是,建议用户一个月至少运行一次完整检测,以确保更准确的结果。

标签: 硬盘, 损坏, 恢复, NAS, 群晖