テープデバイスにデータをバックアップしたい時(テープ操作編) [Linux(CentOS/VineLinux)]
さて、テープデバイスにデータをバックアップしたり戻したりするための基本的な方法が判ったところで、もう一つ覚えるべきポイントがあります。それはテープの操作です。音楽用のカセットテープよろしく、テープを早送りしたり巻き戻したりする操作が必要なんですよ。
そのために必要なコマンドが mt コマンドです。このコマンドはおそらく大半のディストリビューションでは標準で入って来ないのですが、インストールされているかどうかチェックするなら…
こんな結果ならインストール済み。コマンドが無いって怒られたらさくっとyumっちまいなYO!
つーことなので、
ということで。なお、Vineなお友達は、残念なことに…
ですが、VineのインストールCDの中、Extrasディレクトリにmt-stのパッケージがあるらしいので、rpmコマンドでインストールしませう。
で、mtコマンドが使用可能になったところで、mtコマンドの基本編です。
mt -f (テープデバイス名) (コマンド) ...
例えば、テープドライブにメディアをセットしてステータスを見るコマンドを実行してみると…
こんな感じでなにやら結果が返ってきます。
このmtコマンドでよく使う操作としては…
・早送り(頭出し)
・巻き戻し(頭出し)
・巻き戻し(テープの先頭まで)
・巻き戻してイジェクト
・リテンション(テープの最初から最後まで早送りしてから最初まで巻き戻すことで、テープの「よれ」を修正する)
というところでしょうか。
まず、テープに複数のデータをバックアップするところからいきます。
前エントリーで説明したとおり、/dev/nst0を使って複数のバックアップを取ります。例えば…
この例ですと、同じテープに「/home/data1」と「/home/data2」と「/home/data3」と3個のデータ(ボリューム)がバックアップされている状態になります。
ちなみに最後のtarコマンドでは/dev/st0を使用していますが、1個目・2個目はまだこの後にバックアップデータを書き込むので巻き戻して欲しくないのですが、3個目についてはもう追加で書き込むバックアップデータがないので、巻き戻しても構わないためです。(というか、普通はバックアップが終了したらテープをイジェクトするはずなので、巻き戻っていないと都合が悪い→テープドライブのイジェクトボタンを押してから巻き戻るまでそのまでじーっと待つハメになるですよ。)
テープは↑こんな状態になっています。(見づらい場合はメモ帳とかにコピペしてちょ)
そして、テープのヘッド位置ですが、データを復元する等でテープをドライブに装着した直後は、「先頭」という位置にヘッドがあります。そのままの状態で、 tar xvf /dev/nst0 と実行すると、/home/data1が復元されてきますし、さらに続けて tar xvf /dev/nst0 と実行すると今度は/home/data2が復元されます。
では、テープのヘッドが「先頭」にある状態で…
と実行すると、1ブロック(ボリューム)分、ヘッドが「早送り」され、このコマンドが終了した時点でテープのヘッドは/home/data2を読み出せる状態になります。ですから、上記のmtコマンドに続けて tar xvf /dev/nst0 と実行すると、復元されるデータは/home/data2ということになります。
なお、mtコマンドのfsfの後に、繰り返す回数を指定することが出来ます。(省略すると「1」が指定された物と見なされる)ですので、この例のケースで、テープのヘッドが先頭にある状態で
と実行してから tar xvf /dev/nst0 と実行すると、先頭から2ブロック(ボリューム)早送りされた状態からのスタートになるので、/home/data3が復元される…ということになります。
さて。今度は巻き戻しつつ頭出しをしてみます。先ほど「fsf」と記述したところに、「bsfm」と記述するだけです。ただし、注意が必要です。
↑このように実行したとします。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」を指定します。
まあ、直前のコマンドで/dev/nst0でなく/dev/st0を使えば巻き戻るのではありますが。
また、テープを巻き戻してイジェクトしたい場合には、「offline」または「eject」を指定します。サーバルーム等、テープドライブの設置場所が少しだけ離れていて、自席でテープドライブを操作してたなんてケースには便利です。
サーバルームに歩いていく間にテープが巻き戻されてイジェクトされていることでしょう。
さらに、「リテンション」という操作があります。「リテンションって…なに?」という質問が出そうなので説明しておきますと、テープデバイスは、動いたり止まったり・早送りしたり巻き戻ししたりすると、テープの巻き方に「よれ」が出てきます。例えばオーディオ用のカセットテープやビデオテープを再生したり止めたり、早送りしたり巻き戻したりといった操作を行った後にイジェクトし、テープを見てみると、まるでバウムクーヘンのような模様が出来ていることに気がつくと思います。一方で、最初から最後まで止めずに再生し続けたテープはバウムクーヘンのような模様がほとんど無いことに気がつきます。この「模様」はテープが動いたり止まったりした際にごく僅かにテープの位置が上下にずれることで生じるのですが、この状態を長く放置すると、テープの端っこの部分がまるでワカメのようによれよれになり、テープの寿命を著しく縮めてしまう結果となりえるのです。
ですので、特に長期間保存をするような場合は、この模様をなるべく消してしまいたいのです。このための操作を「リテンション」と呼びます。
具体的な対処方法としては、テープを先頭から最後まで一旦早送りしてから、最後から最初まで巻き戻せば、このような模様はほとんど消えて無くなります。(オーディオ用のカセットテープやビデオテープでも有効です。是非おためしください)
mtコマンドでは「retension」と指定することでこのような処理が行えます。
外部の倉庫とか、自社の書棚とか金庫とかにテープを保管する場合は是非この「リテンション」をしてから保存するよう心がけましょう。
そのために必要なコマンドが 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
外部の倉庫とか、自社の書棚とか金庫とかにテープを保管する場合は是非この「リテンション」をしてから保存するよう心がけましょう。
コメント 0