标签归档:懒猫

家用数据备份冗余那点事

最近在 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 方案其实就是日志“懒猫微服的非典型性玩法”中提到的方案,也不赘述了。今天就先写到这了。

懒猫微服的非典型性玩法

最近入手了一个小众新产品:懒猫微服。先在此感谢懒猫微服 CEO 张勇(Andy Stewart)因为我是 yetone 手搓的 OpenAI Translator 的忠实用户来提供的优惠券。 😂

懒猫微服

很多人在第一次看到懒猫微服介绍的反应几乎都是“这不就是个 NAS 吗?”其实我也不例外。我本身就拥有一台群晖 NAS,所以经过一段时间的把玩之后,我意识到懒猫微服看似 NAS,其实在数据和服务稳定性方面远不如 NAS,但是他的性能和可玩性方面远超 NAS。懒猫微服和 NAS 完全是两个赛道上的东西。

懒猫微服 NAS

为什么我会说懒猫微服在数据和服务稳定性方面远不如 NAS,原因有二:

  1. NAS 原生支持磁盘冗余阵列(RAID);懒猫有两块数据盘,但并没有启用 RAID。懒猫微服支持通过外接硬盘来实现 Btrfs 实时备份,虽然对于无 NAS 用户这的确是一个不错的折中方案,但是作为一个已经有 NAS 的玩家,我肯定不会考虑将重要数据迁移到懒猫微服中
  2. NAS 通常都是双网口。虽然 NAS 的双网口有很多有趣的玩法,但是我一般都使用绑定模式来保证即便一个网口脱落了,通讯不会被影响。不过 NAS 基本上都不原生支持 WiFi,懒猫却支持。网线直连 + WiFi 倒也算是懒猫的一个折中方案

所以目前我不会考虑用懒猫微服替代掉我的 NAS,当然这本来也不是懒猫微服的市场定位。

懒猫微服 > NAS 在不考虑上一个段落问题的前提下

同时懒猫微服也有不少吸引我的地方:

  1. 它的性能远高于一些常规 NAS,但是同性能的高端 NAS 售价却远高于懒猫微服。目前受限于 NAS 的性能,我很多想部署的东西都被暂时搁置了,而现在我可以把它们都部署在懒猫微服了,同时我也可以把大部分应用从 NAS 迁移到懒猫微服了。NAS 的定位将会是一个纯数据备份工具和影音中心。
  2. 懒猫微服应用市场内容丰富,且有自动网络穿透。其 SDK 支持跨平台和多端,社区也很活跃。所以可玩性非常强。
  3. 懒猫微服官方应用的一些能力和群晖对标应用所没有的。比方说,受益于懒猫微服比 NAS 更高性能的芯片,懒猫官方相册通过大语言模型的加持支持通过自然语言来检索照片。同时懒猫官方相册的新版本将会支持相似照片发现和清理。群晖的逆优化也是远近闻名的,群晖曾经的 Moments 应用是支持相似照片发现和清理的,但是后来新一代相册应用 Synology Photos 上线后却硬生生将这个非常有用的功能给去掉了。而且用户社区一直向群晖喊话恢复这个功能,但是官方毫无回应。再者,群晖官方也迟迟不开放 Synology Photos 的 API,社区想自己做插件来搞定都不行。在有懒猫之前,我不得不使用第三方工具定期扫描 NAS 的照片目录也找出相似图片并一一清理,非常的麻烦。

非典型性玩法

为了能够既不将重要数据如照片迁移到懒猫微服,又能使用到懒猫微服的官方应用的有意思特性,我利用 Syncthing 整出了一个非典型玩法。

Synology Photos & 懒猫相册双持

首先,我对懒猫相册和 Syncthing 的能力做了个评估,确认我的非典型性玩法是可行的

  1. 懒猫相册不仅仅可以收录应用端上传的图片和视频,也可以支持直接复制到“图片”目录的内容。
  2. Syncthing 目录同步配置支持指定目录的过滤。

然后,我开始按照下图开始双持部署。 😂

https://www.plantuml.com/plantuml/png/TPB1IiCm7CRlUOg_FUbXUm0POxw023kAXz1aQw5h9CqEGpo9Jd03aKsGUPmWY4MyJ9HrBxEaUmoZ6SqQvwaqt_V_VVt-JICHc8jk9q8x8g0T2XqiA0znXNL55COKOLym3ldeMLtF46fnh3sUwj_bWnUPfUfnwC4P0ZZbpAT90aR99n_oQh1nx3LxiI-2C6w3fuzRB2AKWsTy-IILyx4Mpek0F9kgXtiuF6XglCDX4Mltu2XWWYNUrep_8duJVCm9o4csp6vAQFavqYtjf1dHx-QJLcacf_qVWDa5r2h7GKW8ZK_gQnmo2AXLhRAcc4T9MGEjPBLIVuIANZgpxZI2VNaxKAzFoDcbiTh9mhWhP--hHLzzJKs6lBnGupSrJCtadfks1L5ie4ggzJ-_HDkMyuMsEBRDcs4zvJRQszs6TDePdyj43HeJVPE_0G00
Synology Photos & 懒猫相册双持
  1. 我在群晖 NAS 和懒猫微服都安装了 Syncthing,并设置将 NAS 中的相册目录同步到懒猫微服相册目录的一个子目录。同时在懒猫微服的 Syncthing 端设置同步时忽略掉群晖 NAS 的元数据目录 @eaDir
  2. 仅开启 Synology Photos 手机端相册备份功能,并保持懒猫相册手机端的相册备份功能的禁用状态,这样子可以防止同一张照片被重复备份。

这样子,既能依托于懒猫微服的高性能使用懒猫相册来管理,也能使用 NAS 来保管好我的各种回忆。无论我在 NAS 侧还是在懒猫微服侧对相册内容做操作,同时被同步到另外一侧。

未完待续

我现在还一直在挖掘懒猫微服的新玩法,比方说最近我刚在懒猫商城上架了一个集成了 OllamaAnythingLLM,部署了一个轻量级的 RAG 实现。

当然懒猫微服也存在非常多的问题,比方说,非常晦涩难读和不完整的 SDK 文档,充斥着大小 Bug 的系统、SDK 和官网,草台班子般的客服支持。我在微服上面移植和开发应用的整个过程,如同在垦荒。但是瑕不掩瑜,懒猫各方面高效的迭代优化和补丁,极其快速的客服响应等方面,都给我一种蒸蒸日上的感觉。

作为一个公司的此类产品的第一款,让我心内也有了足够的预期。所以,正是因为这种不完善,反而让我觉得这种垦荒还蛮有意思的,让我愿意继续挖掘懒猫微服的可玩性。