标签归档:RAID

家用数据备份冗余那点事

最近在 X(前 Twitter ) 上看到了此图,突然让我有了此篇日志的念头。

简单记录一下自己在数据备份冗余方面做了一些事情,以及如何在数据隐私以及数据备份冗余方面找到一个平衡点。

那就先从上图聊起吧。作为一个 NAS 老用户,我也遇到过两块盘几乎同时挂掉的情况。当时我刚用 NAS 没多久,对 NAS 的依赖还不强。突然发现挂了一个盘,以防万一我就直接把 NAS 关机并下单新硬盘。新硬盘到货后换上没到半小时,另外一个盘又挂了。如果之前我没有将 NAS 关机的话,就要丢数据了。

随着对 NAS 的依赖越来越重,我想着总不能一个盘挂了就挂机啊。新加坡的电商物流相比国内的电商物流慢多了,下单一个硬盘等一个星期都不是什么新鲜事,于是我就开始琢磨如何优雅地在不关机的前提下尽可能地降低两盘同时挂掉的情况出现。

在一块盘挂掉的情况下,除了关机或者降低 NAS 的磁盘 IO 压力等,我们能够降低第二盘挂掉概率的方法其实并不多。最终,我个人觉得,缩短第一块盘挂掉的时长是更为靠谱的方案——热备

如何降低 NAS 坏双盘风险:热备盘

我一直用的是一个四盘位的 NAS。我将三块盘做成了一个存储池并开启 Synology Hybrid RAID (SHR);第四快盘不做任何工作,仅仅是热备。

  1. 当存储存储池中一块盘出现问题之后,我会第一时间将第四快盘加入到存储池中替换掉坏盘,并卸掉坏盘。
  2. 立即下单一块新盘,到货后直接装入 NAS 作为热备盘。这样子,我就可以最大限度的缩短一块坏盘存在的时长。
  3. 如果在等新盘到货的过程中,又有盘挂掉且没有热备盘可用时,还是会关机处理。
//www.plantuml.com/plantuml/png/VP9FI_D04CRl-odctTFRGmuczIQXtyDwMCrgXIH2ck912lwXn9EzbO88GXH425GH37wURjAFuPQ2oTWPSngUUIRyzfdf3LELfACe5F_IWOuqgFEXSvQe-4GB4Qf37O9SbfVcDgkAt9Ib5E8uKTOdJJ4tro_LsoFiIBWG04Sg2K3M-LLzFxUQ-2svsv8dnLW897MX7_-lRmhpb7Na3uAp-Vn6CTbNVRUmQClorJnCxQZjOOJrdypdk-tsOpETsOaEYG-MVviM25n2wrfjZ3anw2gVcCbpDLkiFWfRs362THU_cc1a84bA4dF3AV0sOS_P7vm6WOuF71yjhwbfZzlok8p7QtayneFtpUFvw0YQ6bl8go1K1eOvcJ_RJ3pGpWUuWDek3zY8k4VWU50-J43SDJ8D1CHTAobpiU1S-61mCdmqQrzFny4e2hy1
通过热备盘降低单盘坏掉的时长

如果一件事情发生的次数足够多,小概率的意外也会变成必然事件。

事情如果有变坏的可能,不管这种可能性有多小,它总会发生的。

Anything that can go wrong will go wrong.

墨菲定律
Murphy’s Law

所以,把鸡蛋放在 NAS 一个篮子里面显然不靠谱的,毕竟 RAID 是数据冗余并不是数据备份。如我在上一篇日志“懒猫微服的非典型性玩法”提到,我还依赖懒猫微服对一些重要数据(比如照片)做了备份,如下图:

https://www.plantuml.com/plantuml/png/TPB1IiCm7CRlUOg_FUbXUm0POxw023kAXz1aQw5h9CqEGpo9Jd03aKsGUPmWY4MyJ9HrBxEaUmoZ6SqQvwaqt_V_VVt-JICHc8jk9q8x8g0T2XqiA0znXNL55COKOLym3ldeMLtF46fnh3sUwj_bWnUPfUfnwC4P0ZZbpAT90aR99n_oQh1nx3LxiI-2C6w3fuzRB2AKWsTy-IILyx4Mpek0F9kgXtiuF6XglCDX4Mltu2XWWYNUrep_8duJVCm9o4csp6vAQFavqYtjf1dHx-QJLcacf_qVWDa5r2h7GKW8ZK_gQnmo2AXLhRAcc4T9MGEjPBLIVuIANZgpxZI2VNaxKAzFoDcbiTh9mhWhP--hHLzzJKs6lBnGupSrJCtadfks1L5ie4ggzJ-_HDkMyuMsEBRDcs4zvJRQszs6TDePdyj43HeJVPE_0G00
Synology Photos & 懒猫相册双持

其实对于照片这种非常重要的数据,这样子还是远远不够的。毕竟 NAS 和懒猫微服都在我家里面,严格意义上来说,这并不算是异地灾备。所以我也利用云做了一个山寨版的两地三中心。

山寨版的两地三中心

在实现方案上,我做了一点简单地思考:

  1. 家庭照片对我个人而言,是非常隐私的数据,所以我一直很犹豫要不要把照片放在云服务上面。考虑到本地存储在数据安全方面的局限性,我只能妥协。但是我只能接受将照片加密后放到云端。最终,我选择了 Syncthing,因为 Syncthing 支持将数据加密后同步。
  2. 所依赖的云服务无论在隐私保护、兼容性还是稳定性方面都有很高的保障,最终我选择了 Google Drive。

于是,下面这个方案就应运而生了。

//www.plantuml.com/plantuml/png/SoWkIImgAStDuL8ioKZDJLN8JIn9BSfCrCqlBSd9p4lbuaehIWGAAprhd_IyP_NJVUkUpUbLKgZcKb0eACfFJYqkLb0AhinBBid8p4jNK08Af-NdfAGMAIWzdxtkwTwfGA5Qk1dFzorvDdEQWfzZC2uJC0r0rlzi_eJdKxQ-Q9c8qm4eBdZQjU3f-ZQeEo0EISx9BqrHK7BFpq_FILLmASeiIrNYuaBpd8rkT4PcIafgNgok7OgZSIkqGtOS5zJf80Ls2WZ7MJsTqFDixLAOj09O7YNuu4fGlAIWQuVk6OHAk49Y38EOXMgu5SHag5eCUtHrxT33oo4rBmMOOW00
山寨版两地三中心

当然也不可能所有的数据都保护的这么讲究。从数据备份本身而言,覆盖率也做不到面面俱到,而且也是要控制成本的,当然在座如果有不差钱的可以直接略过下一个部分 😂。

数据分级

在着手对数据进行备份冗余之前,首先要对数据做一下必要的分级。

我将所有数据分为四级:

  • 一级:人在数据在,人不在数据也得在 😂
  • 二级:人在数据在
  • 三级:能不丢不丢
  • 四级:丢了也无所谓

同时,我也会对数据按照隐私需求分为三级:

  • 一级:绝对隐私
  • 二级:不适合展示于公共领域
  • 三级:可以展示于公共领域

这样子就可以得出一个简单的方案矩阵了

安全级别隐私级别例如方案备注
一级一级照片和视频、私人合同等NAS + LazyCat + Google Drive (加密)山寨两地三中心
二级非隐私合同、各类文件等NAS + LazyCat + Google Drive
三级NA
二级一级NA
二级私有项目代码和数据GitHub Private Repo + Google Drive双云
三级开源项目代码和数据GitHub Public Repo + Google Drive双云
三级一级购买的数字媒体NAS + LazyCat– 本地双备
– 版权问题,必须绝对隐私
二级NA
三级NA
四级一级散落在各种设备的不重要文档数据NA
二级散落在各种设备和云服务的不重要文档数据
三级散落在各种设备和云服务的不重要文档数据
数据分级

上表中提到的双云方案过于常见就不再赘述了。NAS + LazyCat 方案其实就是日志“懒猫微服的非典型性玩法”中提到的方案,也不赘述了。今天就先写到这了。