再谈永不消逝的存储

五年多前,我写过一篇技术博客永不消逝的存储,指出RAID1是建立单机安全存储的必要基础。去年年底,我又在知乎上根据几乎完全相同的逻辑回答了一个问题,获得了一些赞同也引起了一些讨论。看完这些讨论以后,我感觉那篇五年多前的博客并未过时。因为直到今天,直接采用QNAP TS-212P的成熟RAID1方案,仍然在建立大容量单机安全存储时具有无可挑战的性价比。随着时间过去了五年多,这个方案甚至变得性价比更高了,因为:

  1. QNAP TS-212P已经停产,但是在闲鱼上的保有量非常大。而且这个型号设备极其耐用,几乎不可能买到损坏件。目前在闲鱼上的售价基本在300元以内,比全新品700元便宜了一多半。不过在闲鱼上购买时要注意型号既不是QNAP TS-212(少了一个“P”)也不是QNAP TS-212P3(多了一个“3”)。
  2. 硬盘存储比五年多前跌价也幅度巨大,目前QNAP TS-212P最大支持的单盘16TB硬盘目前的售价也已经低于1000元,基本上在850到900元之间。这么一来,使用两块16TB硬盘组成RAID1的开销也就在1700到1800元。

所以,现在只需要总共花费2500元(比五年多前便宜一半)就可以建立一个容量达16TB的RAID1存储(是五年多前的1.6倍)。由此可见,摩尔定律仍然以一个弱化版本在继续生效。

不过,经历了五年多这么长的时间,我自然也不仅获得了这一点点的新见识。前面那篇博客,正如开篇时所说,仅仅解决了单机安全存储的问题。如果要达到永不消逝的存储这样的要求,一个明显的问题在于“单机”二字。RAID1解决了“单个硬盘”这样的单点故障风险,但是RAID1本身也是一个单点故障风险。换言之,遇到地震天灾等不可抗力时,如果数据只存储在一个NAS上,就仍然会造成全毁的后果。

要解决单机存储的单点故障风险,就要引入多地同步了。具体能够把NAS部署在多少个地点,当然人各不同。但可以肯定的是,部署的地点越多,安全系数就越高。但是,如何在RAID1方案已经确定为QNAP TS-212P自带系统的前提下,选用最合适的多地同步方案呢?QNAP TS-212P自带系统的官方应用中,有个名叫Hybrid Backup Sync的似乎堪用,它既支持定时备份,也支持实时同步,并且支持单向及双向的推送和拉取。实测下来,软件质量是过关的。它唯一的问题在于不支持网络穿透,这样如果同步的两台NAS所在的网络都位于NAT背后,或对于取得公用IP的一级路由器缺乏端口转发控制权限,就无法使用了。换言之,只要需要同步的NAS都位于没有公用IP的家用网络中,或位于企业内网中,就不可能使用QNAP TS-212P自带系统的官方应用Hybrid Backup Sync实现同步。

后来,经过好友霍炬的推荐,我了解到了一款强大的同步软件Syncthing。它通过引入中继节点,完美解决了网络穿透的问题。我尝试了一种可能的解决方案,即通过在需要同步的NAS所在局域网内部署一台微型虚拟机,并以足够的读写权限挂载NAS的文件系统中的特定文件夹作为同步对。这样的微型虚拟机只执行Syncthing同步这个单一任务,所以当然使用Windows就会比较奢侈,即使使用Linux也最好选用尽可能以资源占用小为特点的发行版本。由于Syncthing有针对Debian建立专用仓库,所以“基于Debian”也列入了发行版本的选用要素。在这个过程中,我选用过的发行版本包括antiXLinux LiteDevuan GNU+Linux等,但最终还是停在了一个已经停止维护的发行版CrunchBang(字面意思是“#!”这两个字符,Linux味儿十足)上:它的32位版本只占用了6GB不到的硬盘、500MB出头的内存就对它需要执行的任务应付自如了。

Syncthing同步方案初看之下没有什么明显的缺点,但是经过一段时间以后,它还是暴露出了问题:这个方案得以正常运行的基础是在所有的同步NAS所在局域网中都需要部署一台额外的虚拟机,而要部署这台虚拟机就需要部署一台虚拟服务器。只要虚拟服务器和虚拟机出现任何网络或运行故障,同步就会马上中止。这么一来,维护成本就从n个NAS变成了n个NAS、n台虚拟服务器和n台虚拟机的总和。这种成本增加比看上去要麻烦得多,因为毕竟是家用方案,不可能为每个同步地点都安排技术团队去完成故障排除。更有甚者,有些NAS所在地也没有部署虚拟服务器的条件。所以,如果可能的话,还是以不要引入NAS之外的额外硬件和网络要求就能完成同步为上策。

终极解决方案直到去年才发现:采用微力同步软件。虽然这个软件并非QNAP TS-212P自带系统的官方应用,但它却可以直接安装在QNAP TS-212P自带系统中。它的底层正是Syncthing,因此在可靠性方面是没有什么可疑的。同时,它和QNAP TS-212P自带系统在文件管理设计上完全正交,在同步时只须考虑同步本身的逻辑即可,在使用其他应用时也不需要考虑会干扰到同步进程(除非会产生在同步的文件夹中的内容改动)。它的运行似乎占用的资源也很少,观察之下感觉似乎没有对QNAP TS-212P自带系统及其他应用的运行产生了什么显著的影响。当然,同步总是需要占用带宽,并花费时间,在小带宽连接的条件下完成同步往往需要很久。一个较好的实践是:尽可能不在一个方向的同步完成之前,就启动另一个方向的同步,尤其是两个方向的同步涉及同样的文件时。因为没有人能保证同步算法不存在某些微妙的缺陷,而一旦发生同步完成时刻的结果版本和预期不一致,就悔之晚矣。

但是,无论同步方案设计得多么完美,只要数据都是在线的,它就难以避免另一个巨大问题:数据毁损通过同步传播到所有NAS。在这种情况下,同步非但不能成为数据的保护机制,反而成为了最强大的破坏力量——比如,有一台NAS受勒索病毒波及,数据全部被改写,那么很快这些改写就会都被同步到其他地点。

在线错误被同步传播的隐患可以通过几种方式加以缓解:首先,是为文件建立快照,并指定保留若干版本,这样在文件遭到意外时可以通过快照恢复。但这并非最佳手段,因为文件快照会要求较大的额外存储,而且在文件真的是被病毒等手段破坏时,往往病毒会采取附加的技术手段把快照也一并破坏。其次,是将实时同步改为定期同步,这样在发现一处数据出问题时,可以在下次同步时刻到来之前先行主动阻止。但这种做法的问题也很显而易见:本来同步就是为了自动化,一旦建立起来,无论同步是实时与否,人们就会假设不再需要主动去干预。如果自动化还需要人工值守,那么整件事情简直就没有太大的价值了。

所以,消除在线错误被同步传播风险的唯一可靠方案是建立冷备份,这里的“冷”是相对于被置于运行中的系统中的数据被称为“热”的而言。也就是说,对于十分重要的数据,或是虽然不经常访问但是要用的时候必须保证正确完整的数据,可以额外地备份一份或数份到可移动的存储介质上并编号归档,平时保存在与运行中的系统断开的、温度和湿度适中的容器中。如果需要使用它们中存放的数据,则需要在把它们连上系统前保证系统无毒,有可能的话最好把存储以只读方式挂载。

值得一提的是:冷备份其实比热数据更大许多,放在RAID1中的数据固然安全,但并不是所有数据都值得放入RAID1中。前面说过,目前性价比最高的RAID1数据的建立成本大约是每16TB每NAS同步地点2500元(网络租用和电费不计),假设是双地同步,那么就是16TB大约5000元,即每TB大约300元、每GB大约0.3元。那么,如果是一张用以拍摄视频的存储卡就是是512GB,而每分钟4K60p视频就要大约1GB。一整张卡如果都转存带双地同步的RAID1,成本就要150多元,这就有点奢侈了。素材的利用率不可能十分高,但素材最好不要丢弃以备后用,这些场合下,原始素材转存冷备份,只把使用的部分和成片放入带同步的RAID1会是更好的综合存储。当然,又回到了问题原点:不放入RAID1中的数据存在单点故障风险,但是如果同时制作多于一份冷备份并分放在多地,那么也是可以在相当程度上让数据得以交叉保全。理想的情况下,数据的冷热比例应该大于3:1,如果数据量快速增长且主要用于归档,则冷热比例达到1000:1以上也毫不奇怪。

冷备份所使用的可移动存储介质可以选用磁盘、光盘或磁带,但最好不要选用闪存,因为据说闪存在不上电的条件下置放较久时间容易出现数据损坏的问题——我本人倒是从未经历过这样的事情。选用磁盘作为冷备份自然是最方便的,我一般都会在升级RAID1容量时,把升级前的较小容量的磁盘正好换下来作冷备份之用。

光盘和磁带是小众选择,但都是成熟技术。光盘在十几年前其实曾十分流行过,如今如日中天的京东就是售卖刻录盘起家的,我应该前后至少购买和使用过数千张刻录盘。而现在的电脑有光盘驱动器的都很少见了,更不用说有光盘刻录功能。但其实光存储技术还在缓慢地发展,现在的双层蓝光光盘的存储容量约为单张100GB左右,价格最低也要60元出头,平均价格区间则落在100到150元。这个存储容量,配合上这个每GB约0.6到1.5元的性价比,可以说是非常尴尬了。而磁带对于冷备份需求来说,却是个很值得选型的技术。目前,LTO6磁带机的闲鱼售价已经跌到了1500元左右,而它可以读写LTO5和LTO6两代磁带。LTO5磁带单带容量是1.5T到3T之间,而LTO6磁带单带容量则是2.5T到6.25T之间。但LTO5磁带的闲鱼售价在30到50元,LTO6则是80到120元。也就是说使用磁带的存储成本是每GB大约0.03到0.04元,是使用磁盘的十分之一!磁带之所以没有被大规模使用,主要原因在于磁带机不像光盘驱动器一样有便携版本,必须安装在台式机里面而且对台式机的电源功率等方面有较高要求。并且,磁带机在工作时会产生较大的声响;磁带和文件系统的管理软件虽然已经相当简单,但和光盘比起来还是会复杂一些。不过,LTO6已经基本上解决了LTO型磁带前面几代的所有使用体验的决定性障碍,并使用大大改进的索引使得访问性能有了质变的提升。以我个人的体验来说,使用LTO6磁带机的体验和使用磁盘和闪存的区别并不大,仅仅在磁带的挂载和推出时需要花费几分钟时间,而如果在特别随机地访问文件时由于需要倒带,性能当然和支持随机访问的存储不可同日而语;但反过来,顺序读写也有着随机读写所难以企及的高速。无论如何,在作为冷备份之用时,读写效率问题显然并不存在。最让我感觉磁带技术值得选型的理由则是:磁带有着比磁盘长得多的保存年限,一般在写入后可以保存30到50年。

当然,对于重要的、无法承担毁损代价的数据,我会制作三个以上的冷备份并分放在两个以上的跨国境的地点,一般都会放在地球的两个不同的大陆板块。未来如果有进一步的条件,我可能会把一些冷备份投放到长存大洋孤岛甚至其他行星或宜居天体上。也许这样做仍然难以抵御一些注定会发生的天文事件,但与我这有限的人生时空相比,大概能够聊以自慰地认为,这已经足够称得上永不消逝的存储了罢!


已发布

分类

来自

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据