テープデバイスをいじる

投稿者: | 2011年11月30日

バックアップ機材としてHP DAT72 USB テープドライブを長年使っているのだが、サーバのハードウェア構成を変えて、OSをアップデートし、ついでにドライブを置く場所を変えてUSB延長ケーブルを使って接続したらハードウェア的なエラー続出。サーバ側のUSBが悪さをしているのか、それともUSBケーブルの接続延長が悪いのか切り分けができない。また、いまさらドライブの置き場所を変更するのもめんどい(テーブルレイアウトや棚のレイアウトもあるのだ)。そこで何をやったかというと、使う時だけ、ノートパソコンを持っていき、そこにUSBでグサッと挿して使うことにした。もちろんサーバ、ノートパソコン間は無線LAN。

結論からいえば、ぜんぜん問題なし。一番の理由はテープデバイスの書き込み速度が遅いので、他の遅さ(今時の感覚からいって)は、まったくクリティカルにならない。

書き込みの平均速度はどれくらいかというと 2.7MB/s。でもテープデバイスのカタログで使う書き込み速度の場合は9.7GB/hって表現になる。それだけでもテープの遅さがわかろうというものだ。

さて実際にやるとこんな感じ。

18GB -> 6500.71s
1.3GB -> 480.254s

さすがに、この速度じゃ普通のユーザは使わないよね。今時ならBlu-rayで50GB扱えるから。

さて、この2つのファイル。1つのテープに書き込んでいる。UNIX (Linux)では /dev/st? (?には0とか1とかが割当たる) がリワインド(巻き戻し)するテープストリーマのデバイス。/dev/nst? がノーリワインド(巻き戻しなし)のそれ。

この機種ではmtでtellがつかえない。あと操作ではないがハードウェア側での compression も使えない。これはハードウェア依存なので仕方がない。とりあえず次のコマンドがつかえることは確認した。

% mt -f /dev/nst0 rewind
% mt -f /dev/nst0 status

statusではfile numberとblock numberで今いる位置がわかる。確実にカウントするなら、一旦、 rewind してテープ先頭に移動してからfsfで移動することだ。

% mt -f /dev/nst0 rewind
% mt -f /dev/nst0 fsf 3
% mt -f /dev/nst0 status
….
file number = 3

ちゃんと頭から3ファイル分飛ばしている(つまり4つめのファイルの頭出しとなる)。 bsf を試してみたのだが、思ったような動きをしてくれない。実際にやってみると後ろに戻るファイル自分のいる位置も含めて数える必要があるようだ。つまり、1つ分ファイルを戻ろうとしたら bsf 2 としなければならない。しかも一回目の読み込みがエラーになったり、ならなかったり。これはうまく頭出しをできていないのか、それともコマンドの扱い方がおかしいのかよくわからないが、すくなくとも現状ではこのような状態である。なんとなく、違うよなー、何かが違うよなーと思う。

よって、テープの中に複数のファイルがある場合、rewindで先頭に戻り、fsf で前に進める方が良いようである。