TOP比較データ> mtコマンドによるテープ装置の制御
バックアップ・ソリューションの選択基準
バックアップ・ソリューションの選択基準

第4回:OSSでのバックアップ手法(前編)

著者:バックボーン・ソフトウエア  青木 浩朗   2005/3/14
前のページ  1  2   3  次のページ
mtコマンドによるテープ装置の制御

   今はもうハードディスクレコーダーが全盛ですが、昔ビデオデッキを使用していた際に、大切なテープの上に誤って上書きしてしまった事はありませんか?例えば、120分のビデオテープの前半60分に第1回のドラマを録画していて、その後に第2回を録画しようと思った時に、間違って巻き戻されていて、まだ見ていない第1回に上書きしてしまったなんて経験があります。ビデオデッキの場合には、事前に内容を目で見て確認することもできますが、バックアップ用のテープ装置の場合には内容を見ることが難しいです。

   そこで、活躍するのがmtコマンドと、テープのEOFマークです。

   まず、テープの一番先頭にはBOT(Beginning of Tape)というマークが置かれ、最初の位置を示すようになります。そして、データが書かれた後には必ずEOF(End of File)マークが置かれます。データとEOFを書き終わった段階で、使用したデバイスファイルが「/dev/st0(rewind)」のタイプであった場合には、テープヘッドは先頭に戻ります。「/dev/nst0(no rewind)」を使用している場合は、図1のようにテープヘッドはその位置で停止しています。

EOFマークとテープヘッダの関係
図1:EOFマークとテープヘッダの関係


   mtコマンドは以下のようなコマンドに表2のオプションを付けて実行します。詳細なステータスを確認できたり、巻き戻しや早送りなどの機能があります。

# mt -f /dev/st0(または/dev/nst0)操作内容
操作内容 説明
status テープの状態を表示
rewind テープを先頭まで巻き戻す
fsf n 現存の位置からn個先のファイルまで、テープを進める
テープの位置は次のファイルの第1ブロック
bsf n 現在の位置からn個前のファイルまで、テープを巻き戻す
テープの位置は次のファイルの第1ブロック
bsfm n 現在の位置からn個前のファイルマークまで、テープを巻き戻す
テープの位置はファイルマークの先頭側

表2:mtコマンドの主なオプション


   最初に、mtコマンドのステータスを使用して、現在の状況を確認します。場所を確認するのには、File numberの数字を見るようにしてください。番号0がテープの先頭になります。

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

   次に、テストデータを作成し、tarコマンドを使用して(詳細な使用方法は後述します)ファイルを1つ「/dev/nst0」(no rewind)でバックアップしてみます。mtコマンドによって確認してみると、File numberが1となっており、ヘッドの位置が移動していることがわかります。

# touch /tmp/testfile
# tar cvf /dev/nst0 /tmp/testfile
tar: Removing leading `/' from member names
tmp/testfile
# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=1, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x1b (DLT 35GB).
Soft error count since last status=0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

   EOFはEnd of Fileの意味であり、本来はファイルの終端を示すものですが、同時に連続で書き込む際には、次のファイルの先頭を示すことになります。図2をよく理解し、間違った場所への書き込みは避けなければなりません。

   試しに、同じようにDATA02〜04をバックアップすると、File numberは4番目になりました。

連続したバックアップ
図2:連続したバックアップ


# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=4, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x1b (DLT 35GB).
Soft error count since last status=0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

   ここで、もしDATA03をリストアしたいという場合にはどうしたらよいでしょうか?具体的にはFile numberが2番になれば、DATA03の先頭にテープヘッドが移動することになります。単純にbsfオプションを使い、2つ戻ればよいような気がします。しかし、bsfはDATA03の手前のファイルマークではなく、データそのものの第1ブロックに移動してしまいます。その様子は、最終行でEOFが検出されていないことからもわかります(図3)。

誤ったテープヘッダの位置
図3:誤ったテープヘッダの位置


# mt -f /dev/nst0 bsf 2
# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=2, block number=-1, partition=0.
Tape block size 0 bytes. Density code 0x1b (DLT 35GB).
Soft error count since last status=0
General status bits on (1010000):
ONLINE IM_REP_EN

   正しくは、bsfmコマンドを使用し、その地点を含めたEOFの数戻るという操作をします(図4)。

正しいテープヘッダの位置
図4:正しいテープヘッダの位置


# mt -f /dev/nst0 bsfm 3
# mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=2, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x1b (DLT 35GB).
Soft error count since last status=0
General status bits on (81010000):
EOF ONLINE IM_REP_EN

   mtコマンドを使用する際には細心の注意が必要です。本格的な運用をする際には、テスト用に使用してもよいメディアを用意し、何度もテストしてみるのがよいでしょう。

   このような煩雑な作業は、商用のバックアップソフトウェアを使用することで、すべてGUIで操作が可能であり、リストアしたいジョブの選択が容易になります。

前のページ  1  2   3  次のページ


バックボーン・ソフトウエア
著者プロフィール
バックボーン・ソフトウエア株式会社  青木 浩朗
ストレージ専業ベンダーにて、SEおよび企画を担当した後に、2001年にBakBoneSoftware入社。主に大手ベンダーのSEを担当しながら、テクニカル・マーケティングとして、各種講演や執筆活動を行っている。最近は、特にデータベースとクラスタリングに注力し、検証レポートを作成するのをライフワークとしている。


INDEX
第4回:OSSでのバックアップ手法(前編)
  バックアップ・デバイス
mtコマンドによるテープ装置の制御
  tarコマンド