連載
» 2003年01月07日 00時00分 公開

Linux管理者への道(5):システム・バックアップを基礎の基礎から (2/3)

[浅野史彦, 小川典嗣,アイティーブースト]

Linuxにおけるテープの操作

 ここでは、Linuxでテープデバイスを扱うための方法を説明します。特に断らない限り、DDS4を前提に話を進めます。

デバイスの認識

 システムが正常にデバイスを認識しているかどうかを確認するには、/proc以下を確認します。例えば、SCSI接続のデバイスであれば、/proc/scsi/scsiを確認すると該当するテープデバイスが表示されるはずです。

# cat /proc/scsi/scsi

Attached devices:

Host: scsi0 Channel: 00 Id: 06 Lun: 00

Vendor: ARCHIVE Model: Python 06408-XXX Rev: 8071

Type: Sequential-Access ANSI SCSI revision: 03

(略)


 また、例えばIDE接続のテープデバイスをプライマリのスレーブ(/dev/hdb)に接続している場合は、/proc/ide/hdbディレクトリ以下のファイルを確認してください。mediaファイルには「tape」、modelファイルには「製品名」が表示されます。

# cat /proc/ide/hdb/media

tape


# cat /proc/ide/hdb/model

Seagate STT20000A


テープデバイスの扱い方

 初めてテープを扱う方や、イメージファイルを扱った経験がない場合、戸惑うことがあるかもしれませんが、テープデバイスはマウントせずにデータの読み取り/書き込みを行います。

 ディスクのパーティションやCD-ROMのような回転系のメディアに保存されているデータの場合、あるディレクトリにマウントし、メディアの中に存在するディレクトリ構造をたどってデータを扱います。それに対してテープデバイスはマウントせず、1つのファイルのように扱うのが普通です。

 SCSI接続のテープデバイスの場合、通常は/dev/st0を、IDE接続の場合は/dev/ht0を利用します。

 ただし、/dev/st0や/dev/ht0を利用した場合、データを保存したり読み出したりするとテープが自動的に巻き戻されるため、テープに1つのデータしか格納できません。1本のテープに複数のファイルを保存したい場合は、/dev/nst0や/dev/nht0といったnorewind(巻き戻しなし)のデバイスファイルを使います。

 テープの構造は図1のようになっています。テープの先頭にはBOT(Begin Of Tape)マークが存在し、その後に保存するファイルデータが置かれます。また、ファイルデータの最後にはEOF(End Of File)マークが置かれます。データはデータブロック単位で書き込まれ、ブロックとブロックの間にはIRG(Inter Record Gap)と呼ばれるすき間があります。テープ上のデータを扱う場合は、ヘッドの位置決めをしてからファイルを読み取る必要があります。

図1 テープ内のデータ配置構造 図1 テープ内のデータ配置構造

 回転系のメディアと異なり、早送りと巻き戻しを繰り返しながらテープにどのようなデータが入っているかを確認する必要があるため、テープにデータを格納する場合は必ず「いつ」「どのホストの」「どのデータをバックアップしたのか」を把握できるように、ラベルを作成して管理することを忘れないでください。

 また、1本のテープに入り切らないようなデータを、複数のテープにまたがって記録することも可能です。

図2 データは複数のテープにまたがることが可能 図2 データは複数のテープにまたがることが可能

mtコマンドの基礎

 Linuxでテープを操作するには、mtコマンドを利用します。一般的なディストリビューションにはmt-stというソフトウェアが付属しているはずなので、システムにインストールしておきましょう。また、ソースパッケージは以下のURLから入手可能です。

ftp://ibiblio.org/pub/Linux/system/backup/mt-st-0.7.tar.gz

 mtコマンドの書式は以下のようになります。

# mt -f /dev/st0 オペレーション


 fはデバイスファイルを指定するオプション、「オペレーション」の部分はどのような操作をするのかを示すキーワードが入ります。以下に主要なオペレーションを紹介します。

オペレーション 説明
status テープの状態を表示
tell テープの現在のブロック位置を示す
compression 0 or 1 ハードウェア圧縮を有効/無効にする。引数に1を取れば有効、0を取れば無効
rewind テープを先頭まで巻き戻す
bsf n 現在位置からn個前のファイルまで、テープを巻き戻す。テープの位置は次のファイルの第1ブロック
bsfm n 現在位置からn個前のファイルマークまで、テープを巻き戻す。テープの位置はファイルマークの先頭側
fsf n 次のデータの先頭位置までテープを早送りする
nは数値

●ハードウェア圧縮 compression

 データの圧縮にはソフトウェア圧縮とハードウェア圧縮があります。ソフトウェア圧縮をする場合、圧縮処理にCPUが使われます。ハードウェア圧縮では専用の圧縮用チップで処理を行うため、CPUに負担を掛けずに高速な処理が可能で、圧縮した分だけバックアップ時間が短くなります。

 テープメディアに記されている「20/40GB」といった容量は、非圧縮時/圧縮時の容量ですが、圧縮したからといって必ずしも40Gbytesのデータが保存できるわけではありません。データ形式によって、圧縮があまり効かないものも存在します。

 ハードウェア圧縮を利用する場合は、compressionを使用します(通常はデフォルトで有効になっています)。

# mt -f /dev/st0 compression 1


 逆に、圧縮を無効にするにはcompressionの引数に「0」を指定します。

# mt -f /dev/st0 compression 0


●テープ位置の移動 bsf、fsf、bsfm

 複数のデータが入ったテープで特定のデータを利用するには、データを読み出せる位置に移動するために巻き戻し、早送りをする必要があります。例えば、3つ先のデータを読み出せる位置に移動するにはfsfを利用します。

# mt -f /dev/st0 fsf 3


 1つ前のEOFに移動するにはbsfを利用します。ただし、bsfではファイルを読み出せる位置にテープをつけることができません。例えば、bsfを使用して1つ前のファイルに移動した後、

# mt -f /dev/st0 bsf 1


statusで状態表示を行うと、以下のように「block number」が-1になります。

# mt -f /dev/nst0 status

SCSI 2 tape drive:

File number=3, block number=-1, partition=0.

Tape block size 512 bytes. Density code 0x26 (DDS-4 or QIC-4GB).

Soft error count since last status=0

General status bits on (41010000):

ONLINE IM_REP_EN


 ファイルを読み出せる位置に移動するには、早送りする必要があります。

# mt -f /dev/st0 fsf 1


 ただし、bsfmという拡張されたオペレーションを利用すれば、直接ファイルを読み出せる位置まで移動することができます。

# mt -f /dev/st0 bsfm 1

# mt -f /dev/nst0 status

SCSI 2 tape drive:

File number=4, block number=0, partition=0.

Tape block size 512 bytes. Density code 0x26 (DDS-4 or QIC-4GB).

Soft error count since last status=0

General status bits on (41010000):

EOF ONLINE IM_REP_EN


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。