可能是普通用户能够接触到的最低成本高密度的存储方案?

LTO磁带与避难所计划

Posted by Bob Guo on March 6, 2021

这已经是我第三篇讲资料备份与避难所的文章了。随着Steam中国的逐渐铺开,做好备份与灾备已经成为ACG社群的必修课,而这篇文章中我将会简单地讨论一下如何利用磁带技术对数据进行冷备份。

历史

如果你是00后或之前年代的人,你一定对磁带不陌生。先不说90年代四处开花的音像店,即使是在传统模拟音频与数字音频交界处的我们这一代人也从每年发行的新书上拿到过磁带片。Cassette Tape这些磁带的学名叫做卡式磁带,在微型计算机出现的早期也被用作数据存储。我们对磁带的探索就从这里开始。
磁带作为计算机的数据存储可以说是随着计算机产业的发展而不断发展的。最早将磁带投入存储应用的商业计算机是20世纪50年代的UNIVAC 1,当时这样一枚磁带能够达到每秒12800字的理论传输速度和228K的海量存储空间,相较于传统的打孔纸带无疑是革命性质的。UNISERVO当然,承袭老式mainframe的特点,UNISERVO(UNIVAC的磁带机)的尺寸巨大。
对于现代人来说,我们记忆中的这种磁带更多出现在讲述冷战的作品中,无论是游戏还是影视。由于继续讲述磁带的发展史并不符合本文的主题,所以:
我们把时间轴拉到1997年。在马老师学会开汽车的这一年里,磁带存储也迎来了一次飞跃。虽然其由于物理限制完全没有“随机读写性能”可言以至于在更适合个人用户需求的机械硬盘的不断打压下磁带从个人用户市场已经撤离,但由于高安全性、抗震动、省电等各种特性,它在需要保证数据安全的企业级市场仍然方兴未艾。在这一年,三家该领域的领头羊企业-IBM、惠普与希捷磁带(后被昆腾收购)联合推出了LTO标准组织。虽然直到2000年这一标准组织才推出第一个LTO标准-LTO1,但这一标准在之后不断演化,目前最新的标准为2020年9月推出的LTO9.该标准允许用户在一张磁盘下塞入18TB未经压缩的数据或45TB压缩后的数据,考虑到LTO磁带的尺寸,这一存储密度确实十分强悍。其他磁带标准本文就暂不赘述,使用层面上区别不大。
虽然磁带存储已经完完全全是带资本家们的形状了,但是企业级产品有一个好处就是我们熟知的“大船”。现在市面上旧款LTO标准的磁带机在二手市场价格十分良心,以我购买的LTO4磁带机为例,从电脑到磁带机总持有成本大约在7-800元左右,对于我存储ACG作品和开源项目源代码的需求来说简直是再合适不过了。即使LTO4在使用上有各种麻烦,但考虑到成本以及未来的数据量级,用磁带仍然可以被赛博仓鼠们纳入考量。

磁带机与磁带盘

请注意,虽然现代磁带机的基本操作逻辑相同,不同磁带机在使用方面仍有各自的区别(包括应用程序),请用户注意甄别与分析,后文不再做提醒 我购买的磁带机是HP的LTO4磁带机,型号是StorageWorks Ultrium 1760。

$ cat /proc/scsi/scsi Host: scsi11 Channel: 00 Id: 00 Lun: 00
Vendor: HP Model: Ultrium 4-SCSI Rev: U52D
Type: Sequential-Access ANSI SCSI revision: 05

Ultrium 1760 SAS & MOLEX Front 我手上这台采用的是SAS接口,但也有采用SCSI接口的。如果使用SCSI接口,事情就比较大条,在此不做详解。为了从我的X370 Killer SLI主板上引出SAS接口,我额外购买了一张戴尔H200 HBA

27:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 02)

Overview for Card Key chip SAS Port 引出两个SAS接口。磁带机本身采用大4D供电,惠普的官方材料中也明确指出应使用大4D线。
LTO磁带还有一个很有意思的设计:每一代磁带机都能做前两代的向下兼容。比如,我的LTO4磁带机就可以读写LTO3磁带与读取LTO2磁带,但LTO6(怎么老是你w)因为采用了全新的材料无法向前兼容。这一设计是为了让用户在升级磁带机的时候仍然能够读取之前留下的备份资料,对于它的目标客户来说是极具吸引力的。
说回磁带本体。 Length Height thick 为了做到向下兼容,LTO磁带的物理尺寸一直是一样的,每一代的进步都在存储密度上下苦功。 Up Down Tape Front 正常来讲,磁带就像你看到的这张图一样装在四方形的盒子里,在顶部印有生产商LOGO、规格和方向箭头;在底部有磁带的转轴与序列号;右边有磁带与机器沟通用的接口;前部是写保护开关和barcode-磁带库需要使用barcode对数据进行归档。

软件

在Linux下跑磁带机是一个很轻松的事情。一般来讲,像tar这样的常用软件都属于预装级别的,但在Windows下面就麻烦很多,需要使用商业软件处理。从LTO6开始,LTO磁带引入了一项新技术-LTFS(Linear Tape File System),这项技术允许这些磁带像U盘一样直接在文件管理器里查看而不需要使用专门的软件,使用更加简单,但LTO6(及以上)的磁带机价格也更加昂贵。
另外一个需要注意的是厂商的软件。一般来讲,厂商软件只用作对机器做维护检修用,无法直接用于存储数据-pre LTFS,这就是一个很麻烦的点。在Windows下,我会以Iperius Backup作为例子,但其他软件也完全可以,就看你自己选择了。

实际操作

我准备了一个531G的超大文件夹,里面包括一些京都动画的动画作品。具体的文件数量等请看这张图片:File Demo

Windows

在Windows下备份比在Linux下更为傻瓜(某种意义上)。这些商用软件都有十分User Friendly的GUI界面,使用鼠标就可以做好备份。
备份的Log我已经发在知乎上,地址在这里

Linux

这才是这篇文章的重头戏。我个人推荐额外安装一个叫做mt-st的软件配合一起使用。
在Linux下,磁带机的默认位置是/dev/st0,下面所有的指令全部都用root身份完成。

  1. 读取磁带内的数据

    $ tar tvf /dev/st0 > tapelist

如果你的磁带里面没有数据/不是使用tar,那么机器会提示你:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

如果你的磁带里有焦油球,那么里面的内容会被输出到tapelist这个文件,cat+grep一下就能知道有没有重要文件了。确认磁带可用之后就可以进行下一步了。

  1. 首次写入磁带

    $ tar cvf /dev/st0 [你要备份的文件]

我这里是/run/media/bob/c8355f1a-6f9b-4802-b6b6-7b1578177577/kyoto/。使用time命令能够得知时间,总共是152分钟。
写入完成后,就可以利用上面提到的语句检查磁带内的数据了。

  1. 补充写入磁带
    有很多时候,一部动画出续作了,或者根本没有放完,你就需要将新搞到的文件丢到磁带里。
    我这里采用了一枚全新的磁带,按照上面的步骤在磁带里放入一个测试文件。

    $ nano test && tar cvf /dev/st0 test

检查磁带内的数据,数据已经放入磁带

-rw-r–r– root/root 5 2021-03-10 15:06 test

然后新建一个test 2文件,如果仍然使用默认的cvf指令写入的话,我们会发现磁带内的test被test 2代替:

-rw-r–r– root/root 6 2021-03-10 15:10 test2

在数据尾部继续写入需要使用特殊的指令:

$ tar -r test -vf /dev/st0

再次检查磁带内的文件:

-rw-r–r– root/root 6 2021-03-10 15:10 test2
-rw-r–r– root/root 5 2021-03-10 15:06 test

成功了。

  1. 退出磁带

    $ mt -f /dev/st0 eject

稍等片刻就可以取出磁带并保存。

  1. 读取文件
    使用如下指令就可以将磁带中的文件取出:

    $ tar xvf /dev/st0 -C [目标文件夹]

如果你想要从磁带中读取某些特定的文件,那就可以使用这两个指令:

tar -T [文件列表] -xvf /dev/st0
tar xvfz /dev/st0 [想要提取的文件/文件夹]

磁带保存

磁带本身的物理结构决定了它的抗震性能处在机械硬盘与固态硬盘之间。一般你购买的磁带都会有一个专门的包装盒(比如我这样),我们只需要额外安排一个避光干燥的环境储存就可以了。考虑到这是一个避难所,我建议网上购买一个安全箱,把磁带和磁带机放进去,一旦出现重大危险直接提桶跑路(笑)。噢对了,你还可以额外购买一些干燥剂放在储存磁带的地方。

磁带机保养

由于一般家用的特性,磁带机的保养工作主要由清洗带来处理。保养带的价格比普通的磁带要昂贵得多(100+ vs 20-30),但好在其本身是跨平台的。 Clean Tape 我手上的C7978A清洗带能够兼容LTO1-5全部的磁带机。我个人建议是定期使用,但具体定期多久就需要按照你自己的情况来决定了。清洗带本身也是有寿命的,需要定期汰换,所以这也是一个长期使用的成本。

成本核算

这一个章节我们来讨论一下你是否应该使用磁带机。
我这套系统不算磁带总共的成本是720的磁带机,90块的HBA卡,这两个硬支出就达到810元,我之前购买的8T HC320也才905。当然,考虑到磁带30一盘的价格,当数据量上升之后这一方式就会有极大的成本优势,但这一门槛的高度也并非一般用户可以达到(我这套系统在你有10TB以上的数据需要冷备份的情况下才开始显得值得)尤其是,任何介质都无法100%保证数据安全,3-2-1原则仍然需要用户遵守,而无论磁带还是磁带机作为二手产品其本身的风险也在一定程度上抵消了优势。更不要说连企业级机械硬盘都自愧弗如的噪音。
磁带存储这一方案对于我这种不能说经验老到但起码并非小白的用户来说自然可行,但对于更多的ACG爱好者来说,这一思路的可行性确实也有待考量。如果数据量不大,真的可能不如买一个硬盘来的方便好用。

鸣谢

感谢FlyGoat提供的技术指导。
感谢排长大晚上的解答有关SCSI的疑问。