我想要开始磁带备份计划,并希望以足够的方式保持数据流向磁带驱动器(目标持续 120+MBs),但如果没有专用的源驱动器/阵列(当不写入磁带时处于空闲状态),我就不知道该如何做到这一点。我们特定驱动器的文档提到没有最低吞吐量要求。
环境
- Linux Debian 使用 mt 和 tar 写入磁带,备份 RAR 档案并附带恢复记录,每个档案大小约为 1GB-300GB
- Quantum TC-42BN 磁带驱动器上的 LTO-4 磁带通过外部 SFF 电缆与 SAS 连接
- 服务器仅用于文件备份,没有网络服务或文件服务。
- MD RAID 阵列的数据会在白天/夜晚间歇性地被读取/写入。
如果源阵列在磁带写入期间有大量读取/写入(来自计划的备份),则磁带的吞吐量将急剧下降,即使是暂时的。因此,一些问题集中在源阵列/磁带写入吞吐量上:
- 我假设在磁带写入期间源的吞吐量持续下降到 10-20MB/s(或更低)以下会是个问题吗?
- 我是否需要有一个保证没有安排备份的源?基本上至少有 2 个阵列;一个用于备份,一个用于存档和磁带写入?
- 是否存在针对驱动器/阵列的 QOS,可以优先考虑磁带写入?
- LTO-4 磁带驱动器有节流阀,那么 LTO-4 是否有一个共同的较低吞吐量限制需要维持,或者每个驱动器的吞吐量限制是否差别很大? 再次,文档提到了最大设计速度和“可变速度传输”,但没有提到如何可变。
- 我是否遗漏了该源吞吐量方程中的某些内容,或者是否有毫无根据的担心?
更新:
我决定使用单个 I/O 流对系统进行最低限度的负担,通过一个 600GB 的存档作业以大约 30MB/s 的速度从阵列读取数据,同时将 tar 从带有消费级 SATA 的 4 驱动器 RAID 6 写入磁带。通过监听驱动器,磁带的速度确实慢得像爬行一样,但似乎没有耗尽数据或出现故障。这告诉我,不要指望在完整的计划备份期间一切都能跟上我们的硬件配置但它可以在写入磁带的同时处理不太繁重的 I/O 工作。
值得注意的是,LOT4 磁带必须进行 56 次端到端传输,因此它有效地写入了约 14GB 的块,然后停下来几秒钟,减速,然后“转向”另一个方向。我认为这有助于在较低的吞吐量下保持驱动器“充满”数据,正如我所料提前阅读和异步写入设置在stinit.def。
另一个需要注意的是,读取“dd if=/dev/st0 of=/dev/null”仅产生 107MB/s 的结果。我认为这是实际的最大有效吞吐量这驱动器,而不是120 MB/s。 该驱动器当前位于专用 SAS PCIe HBA 上,未安装其他 PCIe 卡
同时,我设置了一个 1TB RAID0 作为 Disk2Tape 缓冲区,并且必须向服务器添加另一个磁盘才能实现这一点。
我仍然希望找到一种方法来为磁带驱动器实施某种 QOS,并将写入磁带设置为最高优先级,以便我们能够简化阵列并降低寄生硬件成本但与此同时,如果我想确保无论什么计划作业命中阵列都能连续写入,我找不到不绕过专用 disk2tape 缓冲区的方法。
答案1
这缓冲存储器是一个小巧方便的工具,可以帮助您maintain sustained data flow to the tape drive
。它在大多数 Linux 发行版上都可用。
mbuffer - 缓冲 I/O 操作并显示吞吐率。它是多线程的,支持网络连接,并提供比标准缓冲区更多的选项。
动态多线程压缩的使用示例:
tar cvf-/备份目录| lbzip2 | mbuffer -m 4G -L -P 80 > /dev/st0
- 开始将文件添加到 tar 文件存档中
- (可选)使用 lbzip2 压缩以使用所有 CPU 核心
- 开始填充内存缓冲区
- 一旦填充到 80%,就开始将数据发送到磁带驱动器
缓冲存储器参数解释:
-m 4
4GB 内存缓冲区大小。如有必要或可用,请使用更大的缓冲区。-L
锁定内存(可选)-P 80
在缓冲区已填满 80% 后开始写入磁带。无需输入 100,因为磁带驱动器开始写入需要一些时间,到那时它可能已经填满 100%。
在这个例子中,一旦缓冲区填满容量的 80%,它就会开始将数据发送到磁带,并且 mbuffer 将继续接收存档流。
如果存档过程缓慢,并且 mbuffer 接收数据的速度不足以跟上磁带驱动器的速度,则一旦达到 0%,它就会停止向磁带驱动器发送数据。一旦内存缓冲区填充到 80%,它就会开始向磁带驱动器发送数据,并且录音将以全速继续。
这样,磁带的“擦鞋”工作量就会减少到最低限度,并且磁带驱动器将始终以维持数据流所需的最大速度获取数据。
您还可以反向使用 mbuffer 从磁带驱动器读取备份数据并将流存储到某些速度较慢的介质或通过网络发送。
答案2
这我找到的手册列出了从 30.5 MB/s 到 120 MB/s 的可变速度,增量约为 7 MB/s。
此外,LTO 驱动器使用合理大小的缓冲区来均衡数据流并提供速度调整指示器,因此除非读取速度变化很大或非常低,否则回拉应该很小。
如果数据位于一个相当不错的阵列上,并且文件较大,那么 120 MB/s 甚至不会成为什么大问题(除非文件系统高度碎片化)。我们的磁带缓冲区使用 RAID 0 中的两个(慢速)4 TB 驱动器,可以维持大约 270 MB/s,但在磁带写入时我们不写入缓冲区。