磁带机折腾小记
缘起
之前使用独立的硬盘来做数据冷备,而现在nas里存储本身都快不够了,使用硬盘只做冷备显得有点奢侈,另外加上冷备的移动震动风险,总体上不太安全。
因此从23、24年就想用磁带机来备份数据,但是苦于当时磁带机比较贵,容量还可以的1.5T的lto5磁带机需要1000+,2.5T的lto6磁带机更贵了,加上当时的矿盘50元1T极具性价比,这事儿就没搞了。
而25年的硬盘价格随着AI的火热一路狂飙,矿盘已经从每T50涨价到100左右了(和之前全新的价格差不多了),基本没啥性价比了,因此到年底磁带机的事情又提上日程。
这里记录下折腾的过程,为未来留一个记录,也给想玩的人一个参考(磁带机毕竟是只toB的,教程少)。
折腾过程
选什么设备
现在市面上用于数据存储的磁带机,基本都是lto磁带机,lto磁带是个标准联盟,现在仅有几家厂商在做相关设备,比如IMB、惠普等。
lto磁带机按代来分,比如lto5、lto6,lto5指的是第五代的lto,其原始容量为1.5T(由于存储的数据压缩率都较低,这里不管压缩容量),lto6原始容量为2.5T。
| LTO 代次 | 本机数据传输率 | 压缩后数据传输率 | 本机容量 | 接口类型及速度 |
|---|---|---|---|---|
| LTO 9 | 400 Mb/s | 750 Mb/s | 18TB | FC (8 Gb) / SAS (12 Gb) |
| LTO 8 | 360 Mb/s | 750 Mb/s | 12 TB | FC (8 Gb) / SAS (6 Gb) |
| LTO 7 | 300 Mb/s | 750 Mb/s | 6 TB | FC (8 Gb) / SAS (6 Gb) |
| LTO 6 | 160 Mb/s | 400 Mb/s | 2.5 TB | FC (8 Gb) / SAS (6 Gb) |
| LTO 5 | 140 Mb/s | 280 Mb/s | 1.5 TB | FC (8 Gb) / SAS (6 Gb) |
| LTO 4 | 120 Mb/s | 240 Mb/s | 800 GB | FC (8 Gb) / SAS (6 Gb) |
| LTO 3 | 80 Mb/s | 160 Mb/s | 400 GB | FC (8 Gb) / SAS (6 Gb) |
| LTO 2 | 35 Mb/s | 70 Mb/s | 200 GB | FC (8 Gb) / SAS (6 Gb) |
| LTO 1 | 15 Mb/s | 30 Mb/s | 100 GB | FC (8 Gb) / SAS (6 Gb) |
看到上面lto7\8\9是不是很心动,容量和机械硬盘媲美了,但是可以明确的讲,个人用不起,这些新的设备都还在各大公司的数据中心服役,没有报废到某鱼,价格动辄几个w,个人完全没必要了解。
而lto4及以下的设备,容量不到1T太小了,基本没必要折腾了,使用效率极低,需要频繁换磁带。
最适合的是lto5和lto6的设备,其中lto5的磁带机在500多块,lto6的磁带机在1000左右,但lto6磁带容量大1T达到2.5T。
结合未来备份容量会比较大,lto6的磁带容量比lto5磁带大60%,还是lto6更划算。
其中lto5磁带和lto6磁带本身都不贵,基本在10元1T的水平。
关于有多少数据用磁带机才划算,其实有个20-30t就划算了,使用硬盘要2000-3000,使用磁带机机器1000 + 300左右的磁带。
综合分析后,决定买入lto6的磁带机设备,这样未来使用时间更长,同时也能写lto5的磁带(如果lto磁带贵的话)。
从哪买
个人玩磁带机,基本只有从某鱼买这一个途径,毕竟新的磁带机只对商用的。
而某鱼上各类设备鱼龙混杂,要买磁带机需要自己有较好的判断,最好是买个人玩家或者专业商家的,他们一般会包好,并提供健康状况的截图,这样买起来才放心。
部分卖家是直接从IDC机房下架的设备,虽然可能也是好的,但是他们一般是不懂磁带机的,好坏未知,买了会比较折腾还可能踩坑。
另一个核心的点是买什么类型的设备,lto磁带机一般有电口和光口的,电口一般是sas接口,需要一张pcie的hba卡,转出sas口给磁带机;光口对应的需要一张hba的光卡,以及光纤线,连接到磁带机。
一般情况下电口是比较方便的,未来也能给sas硬盘用,所以一般电口的稍贵点,而如果买了光口的,最好确认卖家能卖全套的光卡和光纤线,拿来就能用,不然自己配会比较麻烦。
而lto磁带机的电源就比较杂了,有使用大4pin接口的,也有使用sas供电的,还有使用特殊供电协议的。为什么会这样呢,现在二手的磁带机都是从机房、磁带库(带机械臂的大型磁带自动存取的带库)拆出来的,很多的接口都是磁带库内部接口,而非公开的各种接口。
因此买的磁带机最好是大4pin供电这种,要么就是sas供电的,最好是电源连接线也是商家提供,能够拿来就用。
注意: 即使是最方便的大4pin的接口,要注意磁带机对电源有要求,必须能支持大4pin的高电流输出,如果电流不足,则磁带机闪黄灯无法用。
注意: 磁带机和磁带均有寿命的,可以在买前和商家要磁带机和磁带的健康度,比如磁头剩余寿命等,太差的健康度也不行(不过一般都挺高的)。
重要提示:
磁带机不管是任何命令,包括加载、卸载、ltfs格式化、挂载都比较慢,得半分钟左右,需耐心等待。。。
磁带机运行噪音较大,最好是放在书房等没人的房间,如果在卧室,基本是没法忍受的。。。
看好上面这两点再决定买不买。。。。
总结下来,买商家全套卡和线的方式最划算,我也是最终选择了一个光口的设备,但是商家自带光卡和光纤,使用的也是最方便的大4pin供电。
怎么连接
买完设备就到怎么使用了,首先是连接设备,这块没啥特别的。
只要主板有合适的pcie的接口,连接光卡或者hba电卡,然后连接到磁带机做数据传输,然后使用大4pin的电源接口连接磁带机就可以了。
然后开机进入到系统,如果磁带机状态灯亮绿灯,就是正常识别到磁带机设备并驱动正常了。
如果出现亮黄灯、黄灯闪烁灯,可以看下连接的情况以及系统支持情况,一般情况下windows和linux下均可以正常使用。
我这里使用的是linux的设备,后续的操作都基于linux。
注意: 注意磁带机和hba卡、光卡运行过程中都非常的热,且磁带机作为磁带库的一个组件,本身没有散热的(toB的带库场景下IDC是有空调散热的),需要搞个风扇专门做散热,防止烧毁设备。
设备使用命令
连接完设备,接下来就是怎么使用了,这里以linux系统下使用说明。
重要提示:
磁带机不管是任何命令,包括加载、卸载、ltfs格式化、挂载都比较慢,得半分钟左右,需耐心等待。。。
磁带机运行噪音较大,最好是放在书房等没人的房间,如果在卧室,基本是没法忍受的。。。
1、磁带机控制
首先要先放入磁带,类似之前dvd的操作,把磁带按照指示方向和正反(注意正反)轻推后磁带机会拉入加载磁带,等磁带机加载完成没有动静后即可进行后续操作。
然后linux下磁带机可以使用自带的mt命令来操作
磁带机状态:
sudo mt -f /dev/st0 status
磁带机磁带归位到带头:
sudo mt -f /dev/st0 rewind
磁带机吐出磁带:
sudo mt -f /dev/st0 offline
磁带加密:
这个比较关键,lto磁带机硬件都自带加密功能,可以通过下面的命令开启加密,这样即使磁带泄漏也不会有安全问题(通过sudo apt install stenc安装)。
sudo stenc -f /dev/st0 -e on -k tape.key -a 1
关闭的话就是 -e off,另外磁带机加密是开机生效一次,下一次重启后加载磁带后还需要执行一次。
成功开启加密后,磁带机的加密蓝色的指示灯亮起。
这里的秘钥key文件可以使用下面的命令算个sha256获取
echo -n $password | sha256sum | awk '{ print $1 }' > tape.key磁带压缩:
我买这个lto6磁带机压缩是默认开的,不需要设置就行,如果是其他磁带机可以自行查下资料。
那么命令里的/dev/st0是啥呢,一般指的是第一个磁带设备,这个设备写入文件等操作后,磁带机会把磁带卷回到磁带头的位置。
还有一个设备是/dev/nst0,这个也是指的是这个设备,这个设备写入文件等操作后,磁带机不会把磁带卷回到磁带头的位置,留在当前写完文件的位置。
注意后续我实践下来不使用这么裸的设备,因此这里知道概念就可以了。
2、磁带格式化和挂载卸载
网上有很多的教程使用tar命令直接操作磁带机,还能通过参数设置大容量的备份文件时自动分磁带,但是tar命令的使用非常不方便,不知道写入了什么东西,还得用tar命令跑一下才知道。
实践下来非常黑盒,备份的时候相当于直接tar压缩存储到磁带了,我最终放弃了这种方式。
因为lto5开始,磁带支持格式化成ltfs磁带文件系统,格式化后就像是普通的分区一样挂载和使用,虽然还不能随机存取(毕竟底层还是顺序读写的磁带)。
注意ltfs也是有代价的,它记录了一部分索引数据,这部分会占用100-200G的空间,这部分空间相当于浪费了。
1、使用如下命令即可格式化磁带机到ltfs文件系统(注意第一次才需要,后续格式化后存储玩数据,下次加载别操作,操作后数据就丢失了,注意加密的话先设置加密,再格式化)
sudo mkltfs -f -d /dev/st0
注意这里的mkltfs命令不是linux自带的,可以通过如下步骤自行构建安装。
1)从https://github.com/LinearTapeFileSystem/ltfs拉取源码
2)安装依赖
sudo apt install build-essential module-assistant gcc make perl dkms linux-headers-$(uname -r) sudo apt -y install automake; # 1.13.4 or later sudo apt -y install autoconf; # 2.69 or later sudo apt -y install libtool-bin; # 2.4.2 or later sudo apt -y install libfuse-dev; # 2.6.0 or later sudo apt -y install uuid-dev; # 1.36 or later sudo apt -y install libxml2-dev; # 2.6.16 or later, not: libxmlb2 libxml2 sudo apt -y install snmpd snmp libsnmp-dev; # net-snmp 5.3 or later sudo apt -y install libicu-dev; # icu4c 4.8 or later sudo apt -y install pkg-config;
3)编译
git clone cd ltfs; ./autogen.sh; ./configure; make; # except for the last step, installing the binaries into the system sudo make install sudo ldconfig ltfs --version
如果能正常显示ltfs版本,则编译安装成功,如果过程中有错误可以查询解决。
2、挂载磁带到ltfs
在格式化磁带后,或者下一次加载已经备份数据的磁带,可以先开启加密(如果格式化磁带时候开启里),然后使用如下命令挂载(不然因为加密原因不解密没法挂载的):
sudo ltfs -o devname=/dev/st0 /home/xxx/mnt/lto
其中/home/xxx/mnt/lto为挂载目录,挂载后和普通挂载点一样,cd、df等命令均可以正常使用。
在之后可以cd到挂载目录做相关操作了。
3、卸载ltfs磁带
在挂载并写入数据完成后,可以像普通挂载点一样,使用umount卸载
sudo umount /home/xxx/mnt/lto
然后在使用mt命令进行复位和offline的退出磁带操作(见文章上一部分内容)。
3、数据备份
数据备份这里只要注意一个原则即可:
不要随机读写磁带,即使是ltfs文件系统,随机读写的性能太差,需要频繁的倒带速度太慢。
其他的普通cp、rsync、dd命令啥的都可以正常使用,这在使用ltfs文件格式情况下没啥特别的。
注意:
通过实践观察,使用rsync还是快了很多的,建议使用rsync进行备份,使用普通的cp命令或程序化的拷贝操作,性能极差。
1) 磁带备份方式
但是磁带单盘的容量仅有2.5T,一次冷备很可能不够用,因此怎么能够把备份的数据分块放到磁带是个问题,这里有2种方法:
人肉根据磁带的容量,备份差不多的数据过来
使用程序化的备份程序,自动切分备份源,然后分磁带的存储备份
这里肯定是建议使用程序化的方式,我这里使用大模型写了切分的程序,可以切分然后多盘存储到磁带上。
这里程序化的方法,结合下面ltfs有100G不能写满的问题,可以设置成较小的分片,然后按分片不停的备份到磁带,直到剩余的空间接近100G。
2)磁带备份文件管理
这里还有另外一个点需要注意,磁带的管理,在备份多盘磁带后,怎么判断哪盘磁带上有什么?
这就需要备份的时候,备份的内容和磁带的条码关联起来,一般lto6磁带都带一个条形码,可以在备份日志里把条形码和备份数据关联起来,后续使用时比较方便。
3)磁带备份速度
至于备份的速度,磁带机比想象中还是快了很多,能够达到150MB/s,但是注意磁带机的数据供应要跟上。
比如从网络备份数据到磁带,但是网络传输大量小文件,速度很慢,则磁带机工作的不顺畅,速度慢不说,还会来回倒带,所谓的”擦皮鞋“。
应该尽量避免这种情况,把传输到磁带机的数据的速度提升上来。
根据这个速度,一般写满一盘磁带也要好几个小时,一般就是晚上开始写,第二天早上写完,或者早上写,到晚上写完一盘。
4)关于实际可用容量
经过实践发现一个很坑的点,格式化为ltfs后,可用的容量比实际容量小了100G左右,因此每次备份必须要确保最终剩余容量大于100G。
不然磁带可用容量会突然从100G降低到可用为0,导致数据没备份完就失败了。
这里一定要注意,经过各种查询和分析,没有找到原因。
5)关于大量的小文件
有ltfs格式有数据区和索引区,如果备份中有海量的小文件,那么可能是在内存中处理部分索引,会导致占用超过20G的内存以及大量的CPU的情况,此时基本上全在计算了,文件写入速度极慢,基本卡住了。
所以如果备份的源有大量的小文件,备份过程中卡住了,可以尝试先压缩或者其他方法来备份到磁带。
4、磁带机管理和维护
1、磁带清理
磁带机和古早的录音机一样,使用时间长了磁头就脏了,需要清理。
如果运行过程中磁带机的clean灯亮起来了,说明需要清理磁带机。
此时把清理磁带(和数据磁带不一样,需要单独购买,需要注意支持的磁带机代数)插入到磁带机后,磁带机会自动的进行clean操作,不需要设置。
清洁时间从 30 秒到 3 分钟不等,清理结束后清理磁带会自动弹出。
这里注意清理磁带和数据磁带一样是有寿命的,一般使用50次左右。
2、磁带机管理
一般买到的磁带机都带有管理软件,比如惠普的磁带机linux下有hpe_ltt命令,可以查看磁带机状态,做磁带机测试等。
如果linux发行版hp不支持,可以使用rpm转deb的形式安装。
linux下的这个工具是命令行界面,操作的使用可以看下命令提示。
相关的支持软件可以在这里搜索下载:https://support.hpe.com/connect/s/product?language=zh_CN&kmpmoid=406729
如果是windows下使用,有成熟的ui界面操作更方便。
总结
这次从准备折腾磁带机到完整的对比、购买、使用、备份程序、加密、管理等各个方面的实践,发现:
1、磁带机还是太小众了,开源领域的工具都是分散的,使用不便(当然商业化的磁带库那配套的很贵的软件是完善的)磁带的教程文旦实在太少了
2、磁带机的使用还是比较繁琐的,需要自己懂技术,且需要折腾比较多的细节
3、磁带的综合性价比还是较高的,只要备份的数据容量达到几十T,加上磁带机也比硬盘便宜了很多
4、折腾下来有小时候听音乐磁带的感觉了
参考文档
https://www.51cto.com/article/176568.html
https://skyblond.info/archives/1057.html
https://support.hpe.com/connect/s/product?language=zh_CN&kmpmoid=406729&tab=driversAndSoftware
https://www.reddit.com/r/DataHoarder/comments/1iajkuu/lto_drive_compression/
https://github.com/hurui200320/lto-tar-backup-script/tree/master
https://github.com/scsitape/stenc
https://www.ibm.com/docs/zh/7m1sde?topic=feature-cleaning-tape-drive
https://www.reddit.com/r/sysadmin/comments/vcrnyn/tape_drives_performance_requirements_to_prevent
https://www.ibm.com/docs/en/storage-archive-sde/2.4.6?topic=ltfsck-checking-media-by-using-command
https://sp.ts.fujitsu.com/dmsp/Publications/public/P2X0-1400-EN.pdf
发表评论