我有一堆旧的LTO-2磁带,我的任务是将内容保存为磁盘上的大型二进制文件,以便最终合并到较新的媒体上。(内容采用本网站特有的自定义格式,与此问题无关。我不需要保留阻塞。)
我想听听关于如何尽快阅读内容的建议。目前使用dd的性能约为2MB/s,我相信这是由于磁带上文件的大小很低,而且是可变的。该LTO-2规格说,我应该能够得到40 to /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(请注意,此处指定的128 k的块大小是最大块大小。如果磁带上的块的实际大小小于此大小,则将为每个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字节,平均每一次都有一个IO未完成。
因此:考虑到我不能回到过去,更改写入磁带的块大小,请告诉我是否有什么方法可以更快地读取现有数据。
发布于 2014-12-11 07:01:19
查看缓冲区命令,基本上它的速度允许同步读写活动,而不是普通的读,然后写,然后读,等等。
基本上,它是通过产生两个子进程来做到这一点的。这些进程使用共享内存缓冲区进行通信。命令行参数与dd相似,通过添加参数来调整共享内存缓冲区的大小。
该命令有时已经存在于某些Linux发行版中,但是如果它不使用yum或apt(或任何您的包检索机制)来获取缓冲区包。
在编写许多磁带备份/还原包时,我亲自使用了这个命令,它将吞吐量提高了大约10-20%。
https://serverfault.com/questions/651757
复制相似问题