Linux CentOSでのLTO6テープの読み取り速度が非常に遅い

Linux CentOSでのLTO6テープの読み取り速度が非常に遅い

技術専門家の皆さん、

私はスピードの面で大きな成功を収めていないまま、数週間LTO6テープからデータを抽出しようとしてきました。

テープの内容を大きなバイナリファイルにダンプするために「dd」を使用しています。なぜなら、テープがどの形式で記録されたのかわからないからです(確かにTARではありません)。デフォルトでは、次のコマンドを使用します。

dd if=/dev/nst0 of=tape.dump bs=512k

これを行うときの速度は常に約4.7 MB / sです。また、ブロックサイズを変更するときにこの速度を超えることはできないようです。常に最大4.7MB / sに達します。

より多くの洞察を得るために読書操作中にTapestatを実行しましたが、私が見ることができる唯一のことは、読書作業が完了するのを100%(および99%)待っていたということでした。

st0         4       0        3.4M        0.0k   6%   0%   6%       0       0

Tape:     r/s     w/s   kB_read/s   kB_wrtn/s  %Rd  %Wr  %Oa    Rs/s    Ot/s
st0        72       0       36.0M        0.0k  98%   0%  98%       0       0

Tape:     r/s     w/s   kB_read/s   kB_wrtn/s  %Rd  %Wr  %Oa    Rs/s    Ot/s
st0        73       0       36.5M        0.0k 100%   0% 100%       0       0

Tape:     r/s     w/s   kB_read/s   kB_wrtn/s  %Rd  %Wr  %Oa    Rs/s    Ot/s
st0        72       0       36.0M        0.0k  98%   0%  98%       0       0

Tape:     r/s     w/s   kB_read/s   kB_wrtn/s  %Rd  %Wr  %Oa    Rs/s    Ot/s
st0        73       0       36.5M        0.0k 100%   0% 100%       0       0

Tape:     r/s     w/s   kB_read/s   kB_wrtn/s  %Rd  %Wr  %Oa    Rs/s    Ot/s
st0        72       0       36.0M        0.0k  98%   0%  98%       0       0

また、出力ファイル/ dev / nullを使用して読み取り操作を実行すると、速度は変わりません。したがって、デフォルトのディスク速度は「靴磨き」効果を引き起こすようには見えません。

私が使用したハードウェアは、SASを介してCentOS8を実行しているHPE DL385G7サーバーに接続されたHPE Ultrium 6外部テープドライブでした。

研究を始める場所の助けや案内をいただきありがとうございます!

ありがとう

ベストアンサー1

まあ、私はついに適切な速度でテープを捨てることができました。現在私が使用しているプロセスは、基本的にテープの各部分に異なるブロックサイズを使用することに依存します。現在のブロックサイズが64 KBのテープの最初の2 KBを読み取り、数ブロック(テストに400を使用)に対して65 KB(異常であることがわかっています)に切り替えます。その後、コマンドが自動的に一致するまで64 KBに戻りますdd: error reading '/dev/nst0': Cannot allocate memory。この時点で、テープの最初の4GBが読み取られます。

テープの残りの部分は65 KBのブロックサイズに戻すことができ、速度は適切です(〜100 MB / s)。テープのデータを分析すると、各64KBブロックに1KBの「パディング」があるように見えるため、65KBブロックサイズを使用することは驚くべきことではありません。

[root@tapepoc TapeBlobExtractor]# dd if=/dev/nst0 of=/tape_dump/tape_1.dump bs=64k
dd: error reading '/dev/nst0': Cannot allocate memory
0+2 records in
0+2 records out
2048 bytes (2.0 kB, 2.0 KiB) copied, 3.28837 s, 0.6 kB/s
[root@tapepoc TapeBlobExtractor]# dd if=/dev/nst0 of=/tape_dump/tape_2.dump bs=65k count=400
dd: warning: partial read (7168 bytes); suggest iflag=fullblock
11+389 records in
11+389 records out
26167296 bytes (26 MB, 25 MiB) copied, 5.26119 s, 5.0 MB/s
[root@tapepoc TapeBlobExtractor]# dd if=/dev/nst0 of=/tape_dump/tape_3.dump bs=64k
dd: error reading '/dev/nst0': Cannot allocate memory
60413+4 records in
60413+4 records out
3959387136 bytes (4.0 GB, 3.7 GiB) copied, 17.4649 s, 227 MB/s
[root@tapepoc TapeBlobExtractor]# dd if=/dev/nst0 of=/tape_dump/tape_4.dump bs=65k
^C1024568+19746 records in
1024568+19746 records out
68377951232 bytes (68 GB, 64 GiB) copied, 641.83 s, 107 MB/s

おすすめ記事