@kasperdのおかげで、さらに調査を行いましたが、これが実際に問題でした。この機能はEWEOM(Early Warning End of Media)と呼ばれ、テープメーカーによってテープに付けられたマーカーを参照するため、スプールされたテープの量を追跡するドライブではありません。
mbuffer
テープへの書き込みに使用しているプログラムのパッチを作成しました。テープの終わりに達した時点で、呼び出しENOSPC
を交互に行うwrite()
とエラーが 発生しますが、さらにデータを書き込むことができます。私の場合、非常に多くのデータがあります。圧縮率が非常に低いデータの圧縮に応じて、8〜19 GiBです。
興味深いことに、EWEOMマーカーに到達した後、テープの書き込み速度は劇的に低下します。80MB /秒から約47MB /秒までほぼ半分になります。ドライブはこの時点より数時間前から80MB /秒を維持しているため、これはデータの問題ではないようです。ドライブモーターの速度が遅くなり、このセクションが書き換えられるようにテープ全体を書き換えても速度は上がりません(そのため、最初の書き込みが遅くなることはありません。新品のテープ。)
EWEOMマーカーがテープに表示されるタイミングに関するドキュメントが見つからないため、標準化されているかどうかはわかりません。私が見つけたのは、LTO-6 / 7ドライブへのあいまいな参照だけで、これはテープスペースの5%に増加しました。おそらくこれは、テープの書き込み速度が速いために大きなバッファをフラッシュできるようにするためです。
Linux APIに関する限り、関連する行はst.c
SCSIテープドライバーのソースコードにあり、この動作の説明はst
ドライバーのドキュメントにあります。