旧 LTO-2 磁带的读取性能

旧 LTO-2 磁带的读取性能

我有一堆旧的 LTO-2 磁带,我的任务是将内容保存为磁盘上的大型二进制文件,以便最终在较新的介质上进行合并。 (内容采用特定于此站点的自定义格式,与此问题无关。我不需要保留阻止。)

我想获得一些关于如何尽可能快地读取内容的建议。当前使用的性能dd约为 2MB/s,我认为这是由于磁带上文件的块大小较低且可变。LTO-2 规格表明我应该能够获得 40MB/s 的原生速度。

使用 Solaris,我可以通过tcopy实用程序看到文件是以可变块大小存储的:

# tcopy /dev/rmt/1cbn
file 1: record 1: size 40
file 1: record 2: size 1024
file 1: record 3: size 10240
file 1: record 4: size 7168
file 1: record 5: size 1024
file 1: records 6 to 7: size 10240
[...]

测试从磁带读取/dev/null

# dd if=/dev/rmt/1cbn of=/dev/null bs=128k

(请注意,此处指定的 128k 块大小是最大块大小。如果磁带上块的实际大小小于此大小,则每次 IO 将返回较少的数据量。)

iostat -Mzcnx 1显示:

    r/s    w/s   Mr/s   Mw/s wait actv wsvc_t asvc_t  %w  %b device
  304.2    0.0    1.9    0.0  0.0  1.0    0.0    3.2   0  97 rmt/1

这告诉我它的读取速度为 1.9MB/s,平均 IO 大小约为 6500 字节,并且平均每次都有 1 个未完成的 IO。

因此:鉴于我无法回到过去并改变写入磁带的块大小,请告诉我是否有某种方法可以更快地读取现有数据。

答案1

查看缓冲区命令,基本上它的速度允许同时进行读/写活动,而不是正常的读取,然后写入,然后读取等......

它基本上通过生成两个子进程来实现这一点。进程使用共享内存缓冲区进行通信。命令行参数与 dd 类似,但增加了用于调整共享内存缓冲区大小的参数。

有时该命令已经存在于某些 Linux 发行版中,但是如果没有,请使用 yum 或 apt-get(或任何包检索机制)来获取缓冲包。

我在编写许多磁带备份/恢复包时亲自使用过此命令,它将吞吐量提高了约 10-20%。

相关内容