阅读旧的LTO-2磁带的性能

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

我想就如何尽快阅读内容提供一些build议。 使用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 [...] 

testing从磁带读取到/dev/null

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

(请注意,这里指定的128k块大小是最大块大小,如果磁带上块的实际大小小于这个数值,那么每个IO将返回更less的数据量。

iostat -Mzcnx 1显示:

  r/sw/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。

因此:由于我无法及时回去改变写入磁带的块大小,请让我知道是否有办法更快地读取现有数据。

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

基本上这是通过产生两个子过程来完成的。 进程使用共享内存缓冲区进行通信。 命令行参数类似于dd,并增加了参数来调整共享内存缓冲区的大小。

这个命令有时候已经在一些Linux发行版中,但是如果它不使用yum或者apt-get(或者你的软件包检索机制)来获取缓冲包。

在创作许多磁带备份/恢复软件包时,我亲自使用了这个命令,并将吞吐量提高了大约10-20%。