备份这件事,道理大家都懂,但真正动手做的人不多。3-2-1备份策略(三份数据、两种介质、一份异地)说起来简单,执行起来却需要时间和金钱。尤其是当家庭数据越来越多,我开始把更多东西迁移到自托管(self-hosted)环境后,一个冷存储备份(cold storage backup)对我来说就成了刚需。

尽管存储成本一路走高,我还是咬咬牙买了一块8TB的外置硬盘专门干这件事。用法很简单:插上,拷贝文件,然后拔掉,直到下次备份再插上。就这么一个“拔掉”的动作,恰恰是冷存储能发挥作用的关键——冷,意味着断开连接,这正是它能扛住主存储甚至异地副本都扛不住的那些风险的原因。

打开网易新闻 查看精彩图片

挂载着的硬盘,就是多一个攻击面

很多人以为备份失败是硬盘本身的问题,但实际上,像Immich照片库或ZFS存储池(ZFS tank)这类系统出的故障,往往跟磁盘本身没关系,问题出在用户操作或恶意攻击上。

用户误操作的情况很常见:一条在root shell里敲错的命令,或者备份脚本指向了已损坏的数据源,就足以酿成大祸。而恶意攻击方面,勒索软件是实实在在的威胁——把备份保持离线,就意味着攻击者在盯上主副本之前,少了一个可以尝试攻破的目标。一块挂载着的备份盘是暴露在风险中的,如果所有副本都处于挂载状态,一旦遭遇攻击,你几乎没什么回旋余地。

这些风险靠冗余(redundancy)是解决不了的,因为冗余和冷备份是两码事。冗余保护的是硬件故障——这也是我为什么用两块8TB硬盘做镜像(mirror)的原因。但那两块盘是常驻挂载的,上面提到的任何一种风险都可能发生在一直挂载的盘上。而冷存储盘是物理隔离(air-gapped)的,它只会执行我主动发出的命令,拷完就拔掉放回架子上。

ZFS镜像也解决不了这个问题

ZFS的镜像确实能保护数据免受静默损坏(silent corruption)。每个数据块都有校验和(checksum),scrub(数据清洗)操作会主动发现潜在问题,镜像模式下,好的副本会自动修复坏的副本——这是ZFS在双盘或多盘配置下提供的核心能力。

但这一切都发生在文件层面。如果你误删了文件,ZFS帮不上忙——删除操作会带着一致的校验和同步到两块镜像盘上。虽然可以通过回滚(rollback)快照来恢复,但那些快照本身存放在存储池内部,如果存储池、HBA卡(主机总线适配器)或运行它的机器出了问题,快照也跟着一起没了。

我把冷备份做成了30秒的事

大多数人(包括我自己)之所以让备份盘一直挂着,核心原因就是嫌麻烦。但一个简单的脚本就能解决大部分问题。

关键配置如下:

  • 在fstab(文件系统表)里加上noauto,nofail参数,配合短超时,避免硬盘没接时系统在启动阶段卡住
  • 用一个脚本完成挂载、同步、卸载的全流程
  • 备份完成后自动断开,物理隔离

这样一来,备份不再是需要专门腾出时间做的事,而是顺手就能完成的日常操作。30秒搞定,零摩擦,这才是冷存储能长期坚持下来的真正原因。