Centos

Linux CentOS 中 LTO6 磁帶的讀取速度非常低

  • September 15, 2020

尊敬的技術專家,

幾個星期以來,我一直在嘗試從 LTO6 磁帶中提取數據,但在速度部門沒有取得太大的成功。

我正在使用“dd”將磁帶內容轉儲到一個大的二進製文件中,因為我不知道磁帶是以什麼格式寫入的(絕對不是 TAR)。基本上我使用這個命令:

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

當我這樣做時,我總是得到大約 4.7MB/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 外部磁帶驅動器。

任何幫助或開始研究的方向將不勝感激!

謝謝

好吧,我終於設法以不錯的速度傾倒磁帶。我現在使用的過程基本上依賴於對磁帶的不同部分使用不同的塊大小。目前,我以 64KB 的塊大小讀取磁帶的前 2KB,然後切換到 65KB(我知道很奇怪)幾個塊(用 400 進行測試)。之後切換回 64KB,直到該命令自動以dd: error reading '/dev/nst0': Cannot allocate memory. 在這個 pont 讀取磁帶的前 4GB。

對於磁帶的其餘部分,我可以切換回 65KB 的塊大小,然後速度就不錯了(~100MB/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

引用自:https://unix.stackexchange.com/questions/607582