mtxコマンド

mtxコマンドを使う機会があったのだが、文献が少なかったので、記録として書き留めておく。

概要
テープライブラリのロボットを制御できるコマンド。

以下、操作例

テープライブラリのステータスを表示する

mtx -f /dev/changer status

表示例

Storage Changer /dev/sga:3 Drives, 400 Slots ( 20 Import/Export )
Data Transfer Element 0:Empty
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Storage Element 1:Full
Storage Element 2:Full
Storage Element 3:Full :VolumeTag=000001
以下略

Data Transfer Element というのは、テープドライブ
Storage Elementはライブラリ内でテープを挿しておく場所。
Import/Exportという項目がある場合は、メディアの出し入れのための場所がライブラリに用意されていると言うこと。
Fullはテープが入っているということ。
Emptyはそのままの意味で、空。
:VolumeTag=000001というのは、テープメディアのラベルが読み取れたときに表示される。#バーコードリーダが備わっていなかったり、シールを貼っていない場合は表示されない・・・はず。

注意点
mtx statusで表示されるData Transfer Elemenの順番と、/dev/以下にst0,st1 ...の順で認識しているドライブの順序は必ずしも一致しない。
mtx load 20 0で0番ドライブに入れたから /dev/st0でアクセスできるはずだ・・・と思い込まないで、mt -f /dev/st0 status 等とコマンドを打って確認することが重要。
特に、複数のドライブが一つのライブラリに搭載されている場合は要注意。 いったん全部のドライブからunloadして、1ドライブ毎にload mtコマンドを使って、mtx statusで見えるドライブ順と/dev/st*の順序を確認しておくこと。


テープライブラリを操作し、テープをドライブに入れる
mtx -f デバイス名 load 入れたいテープがある場所、入れたいドライブ
(1ドライブのライブラリであれば指定しなくて良いが、複数のドライブを持つライブラリの時は0番から連番でドライブに番号が振られているので、ドライブ番号を指定する)

例 Storage Element 20のテープをドライブ0に入れる場合

mtx -f /dev/changer load 20 0

ただし、事前にドライブ0にはテープメディアがない状態にしておくこと。


テープライブラリを操作し、テープをドライブからStorage Elementに移動する
例 ドライブ0からStorage Element 20にテープを移動させる

mtx -f /dev/changer unload 20 0

ただし、事前に移動先のStorage Elementにはテープメディアがない状態にしておくこと。

テープライブラリを操作し、テープをStorage Elementから別のStorage Elementに移動する
例 Storage Element 20からStorage Element 19に移動させる

mtx -f /dev/changer transfer 20 19

ただし、事前に移動先のStorage Elementにはテープメディアがない状態にしておくこと。
Import/Exportからテープを移動したりする際に使う。
後は、使用する順序に並び替えるときにも使う。


ココまでで基本的にはマニュアル操作の基本は大丈夫。

他には

  • next:mtxは、指定したドライブに入っているメディアが、ドライブに入れられる前に入っていたStorage Elementを記憶している。nextは、今入っているメディアを元々のStorage Elementに戻し、次のStorage Elementからテープをドライブに挿入する。

Storage Elementの順であって、ラベル順でないことに注意が必要。
あらかじめ、transferを使って並べ替えておけば有用。

  • previous:nextの逆、一個前のテープに入れ替える
  • first:Storage Element1のテープをロードする 既にドライブにテープが入っているときはunloadする
  • last:最後の番号のStorage Elementのテープをロードする 既にドライブにテープが入っているときはunloadする