SSブログ

テープデバイスにデータをバックアップしたい時(テープ操作編) [Linux(CentOS/VineLinux)]

 さて、テープデバイスにデータをバックアップしたり戻したりするための基本的な方法が判ったところで、もう一つ覚えるべきポイントがあります。それはテープの操作です。音楽用のカセットテープよろしく、テープを早送りしたり巻き戻したりする操作が必要なんですよ。

 そのために必要なコマンドが mt コマンドです。このコマンドはおそらく大半のディストリビューションでは標準で入って来ないのですが、インストールされているかどうかチェックするなら…

# mt --help
usage: mt [-v] [--version] [-h] [ -f device ] command [ count ]


 こんな結果ならインストール済み。コマンドが無いって怒られたらさくっとyumっちまいなYO!

# yum search  mt-st
 (このへん省略)
mt-st.i386 : Install mt-st if you need a tool to control tape drives.

 つーことなので、

# yum install mt-st.i386


 ということで。なお、Vineなお友達は、残念なことに…

# apt-cache search mt-st
#


 ですが、VineのインストールCDの中、Extrasディレクトリにmt-stのパッケージがあるらしいので、rpmコマンドでインストールしませう。



 で、mtコマンドが使用可能になったところで、mtコマンドの基本編です。

 mt -f (テープデバイス名) (コマンド) ...

 例えば、テープドライブにメディアをセットしてステータスを見るコマンドを実行してみると…

# mt -f /dev/st0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x46 (no translation).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN


 こんな感じでなにやら結果が返ってきます。

 このmtコマンドでよく使う操作としては…
 ・早送り(頭出し)
 ・巻き戻し(頭出し)
 ・巻き戻し(テープの先頭まで)
 ・巻き戻してイジェクト
 ・リテンション(テープの最初から最後まで早送りしてから最初まで巻き戻すことで、テープの「よれ」を修正する)

 というところでしょうか。



 まず、テープに複数のデータをバックアップするところからいきます。
 前エントリーで説明したとおり、/dev/nst0を使って複数のバックアップを取ります。例えば…

# cd /home/data1
# tar cvf /dev/nst0 .
# cd /home/data2
# tar cvf /dev/nst0 .
# cd /home/data3
# tar cvf /dev/st0


 この例ですと、同じテープに「/home/data1」と「/home/data2」と「/home/data3」と3個のデータ(ボリューム)がバックアップされている状態になります。
 ちなみに最後のtarコマンドでは/dev/st0を使用していますが、1個目・2個目はまだこの後にバックアップデータを書き込むので巻き戻して欲しくないのですが、3個目についてはもう追加で書き込むバックアップデータがないので、巻き戻しても構わないためです。(というか、普通はバックアップが終了したらテープをイジェクトするはずなので、巻き戻っていないと都合が悪い→テープドライブのイジェクトボタンを押してから巻き戻るまでそのまでじーっと待つハメになるですよ。

+----+-----------+-----+-----------+-----+-----------+-----+-----
|先頭|/home/data1|(EOF)|/home/data2|(EOF)|/home/data3|(EOF)|……
+----+-----------+-----+-----------+-----+-----------+-----+-----

 テープは↑こんな状態になっています。(見づらい場合はメモ帳とかにコピペしてちょ)
 そして、テープのヘッド位置ですが、データを復元する等でテープをドライブに装着した直後は、「先頭」という位置にヘッドがあります。そのままの状態で、 tar xvf /dev/nst0 と実行すると、/home/data1が復元されてきますし、さらに続けて tar xvf /dev/nst0 と実行すると今度は/home/data2が復元されます。
 では、テープのヘッドが「先頭」にある状態で…

# mt -f /dev/nst0 fsf

 と実行すると、1ブロック(ボリューム)分、ヘッドが「早送り」され、このコマンドが終了した時点でテープのヘッドは/home/data2を読み出せる状態になります。ですから、上記のmtコマンドに続けて tar xvf /dev/nst0 と実行すると、復元されるデータは/home/data2ということになります。

 なお、mtコマンドのfsfの後に、繰り返す回数を指定することが出来ます。(省略すると「1」が指定された物と見なされる)ですので、この例のケースで、テープのヘッドが先頭にある状態で

# mt -f /dev/nst0 fsf 2

 と実行してから tar xvf /dev/nst0 と実行すると、先頭から2ブロック(ボリューム)早送りされた状態からのスタートになるので、/home/data3が復元される…ということになります。

 さて。今度は巻き戻しつつ頭出しをしてみます。先ほど「fsf」と記述したところに、「bsfm」と記述するだけです。ただし、注意が必要です。

# mt -f /dev/nst0 fsf 2
# tar xvf /dev/nst0

 ↑このように実行したとします。tarコマンド終了時には、テープドライブのヘッド位置は、/home/data3の末尾の(EOF)の位置にいます。この状態から、「やっぱり/home/data2を読み出したい!」と思ったとしたら、その時のmtコマンドの記述は mt -f /dev/nst0 bsfm 2 でなければなりません。
 なぜなら、ヘッドの位置は/home/data3の後ろにあるので、1ブロック(ボリューム)だけ巻き戻すということは、ヘッドが/home/data3の先頭にまで戻るだけになってしまうからなのです。よって…

 ① /home/data3
 ② /home/data2

 と2ブロック(ボリューム)を飛び越さない限り、/home/data2を読める状態にならないということに注意しなければなりません。

 ちなみに、fsfやbsfmは今ヘッドがある位置からの相対的なブロック(ボリューム)数の移動ですが、「asf」を使うと、テープ内における絶対的なブロック(ボリューム)番号での移動が可能です。(まあ、ぶっちゃけ、rewindしてからfsfしてるのと変わらんのですが(笑)


 他に行うであろう操作として、単にテープの先頭まで巻き戻したい場合には、「rewind」を指定します。

# mt -f /dev/nst0 rewind


 まあ、直前のコマンドで/dev/nst0でなく/dev/st0を使えば巻き戻るのではありますが。

 また、テープを巻き戻してイジェクトしたい場合には、「offline」または「eject」を指定します。サーバルーム等、テープドライブの設置場所が少しだけ離れていて、自席でテープドライブを操作してたなんてケースには便利です。

# mt -f /dev/nst0 offline


 サーバルームに歩いていく間にテープが巻き戻されてイジェクトされていることでしょう。

 さらに、「リテンション」という操作があります。「リテンションって…なに?」という質問が出そうなので説明しておきますと、テープデバイスは、動いたり止まったり・早送りしたり巻き戻ししたりすると、テープの巻き方に「よれ」が出てきます。例えばオーディオ用のカセットテープやビデオテープを再生したり止めたり、早送りしたり巻き戻したりといった操作を行った後にイジェクトし、テープを見てみると、まるでバウムクーヘンのような模様が出来ていることに気がつくと思います。一方で、最初から最後まで止めずに再生し続けたテープはバウムクーヘンのような模様がほとんど無いことに気がつきます。この「模様」はテープが動いたり止まったりした際にごく僅かにテープの位置が上下にずれることで生じるのですが、この状態を長く放置すると、テープの端っこの部分がまるでワカメのようによれよれになり、テープの寿命を著しく縮めてしまう結果となりえるのです。
 ですので、特に長期間保存をするような場合は、この模様をなるべく消してしまいたいのです。このための操作を「リテンション」と呼びます。
 具体的な対処方法としては、テープを先頭から最後まで一旦早送りしてから、最後から最初まで巻き戻せば、このような模様はほとんど消えて無くなります。(オーディオ用のカセットテープやビデオテープでも有効です。是非おためしください)
 mtコマンドでは「retension」と指定することでこのような処理が行えます。

# mt -f /dev/nst0 retension


 外部の倉庫とか、自社の書棚とか金庫とかにテープを保管する場合は是非この「リテンション」をしてから保存するよう心がけましょう。


nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。