4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mhVTLによるテープライブラリの動作検証方法

Posted at

膨大な量のデータを安価に管理するため、昨今「磁気テープ」に注目が集まっています。大量のテープを管理するにはテープライブラリと呼ばれる装置が用いられます。テープライブラリは、大量の磁気テープを収納するスロット、磁気テープからデータを読み書きするドライブ、スロットとドライブの間で磁気テープを移動するロボットにより構成されます。こちらの動画を見ると、テープライブラリとはどのようなものか、よくわかると思います(リンク先の動画では、ロボットが手前と奥に一台ずつあり、手前のロボットは右側にある二台のドライブにテープを出し入れしています)。

今後、データの量が増え続けると、このようなテープライブラリを触る機会があるかもしれません。そこで、mhVTLと呼ばれるテープライブラリのエミュレータで遊んでみました。

mhVTLの設定方法

mhVTLの設定方法は、本家のサイトに詳しく載っています。私はRHEL6.5の仮想マシン上で試してみました。まずは、ELRepo.orgをyum repositoryとして登録します。

[root@localhost ~]# rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm

次に、mhVTLをインストールします。

[root@localhost ~]# yum install kmod-mhvtl mhvtl-utils

最後に、mhVTLを起動します。これで、仮想テープライブラリを使用する準備ができました。

[root@localhost ~]# service mhvtl start

lsscsiというコマンドを入れると、二つの仮想テープ装置が起動していることが確認できます。下の例では、/dev/sg10というデバイスが一つ目のロボット、/dev/sg2-5がそのロボットとセットのドライブ、/dev/sg11が二つ目のロボット、/dev/sg6-9がそのドライブとなっています。

[root@localhost ~]# lsscsi -g
[1:0:0:0]    cd/dvd  VBOX     CD-ROM           1.0   /dev/sr0   /dev/sg0
[2:0:0:0]    disk    ATA      VBOX HARDDISK    1.0   /dev/sda   /dev/sg1
[4:0:0:0]    mediumx STK      L700             0104  /dev/sch0  /dev/sg10
[4:0:1:0]    tape    IBM      ULT3580-TD5      0104  /dev/st0   /dev/sg2
[4:0:2:0]    tape    IBM      ULT3580-TD5      0104  /dev/st1   /dev/sg3
[4:0:3:0]    tape    IBM      ULT3580-TD4      0104  /dev/st2   /dev/sg4
[4:0:4:0]    tape    IBM      ULT3580-TD4      0104  /dev/st3   /dev/sg5
[4:0:8:0]    mediumx STK      L80              0104  /dev/sch1  /dev/sg11
[4:0:9:0]    tape    STK      T10000B          0104  /dev/st4   /dev/sg6
[4:0:10:0]   tape    STK      T10000B          0104  /dev/st5   /dev/sg7
[4:0:11:0]   tape    STK      T10000B          0104  /dev/st6   /dev/sg8
[4:0:12:0]   tape    STK      T10000B          0104  /dev/st7   /dev/sg9

mtxコマンドによるテープライブラリの操作方法

mtxというコマンドを入れると、このテープライブラリを操作することができます。

[root@localhost ~]# yum install mtx

mtxコマンドの"-f"オプションにロボットを指定して、statusサブコマンドを実行すると、そのテープライブラリ内のスロット、磁気テープおよびドライブの一覧を取得することができます。下の例では、「Data Transfer Element」がドライブ、「Storage Element」がスロットであり、それぞれ「Full」と表示されている場所に磁気テープがあることを示しています。それぞれの磁気テープは「VolumeTag = <磁気テープのID>」により区別されます。「Import/Export」と表示されている行は、テープライブラリ装置からの磁気テープの挿入・取り出し口です。

[root@localhost ~]# mtx -f /dev/sg10 status
  Storage Changer /dev/sg10:4 Drives, 43 Slots ( 4 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = E01001L4
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
      Storage Element 1:Empty
      Storage Element 2:Full :VolumeTag=E01002L4
      Storage Element 3:Full :VolumeTag=E01003L4
      Storage Element 4:Full :VolumeTag=E01004L4
      Storage Element 5:Full :VolumeTag=E01005L4
      Storage Element 6:Full :VolumeTag=E01006L4
      Storage Element 7:Full :VolumeTag=E01007L4
      Storage Element 8:Full :VolumeTag=E01008L4
      Storage Element 9:Full :VolumeTag=E01009L4
      Storage Element 10:Full :VolumeTag=E01010L4
      Storage Element 11:Full :VolumeTag=E01011L4
      Storage Element 12:Full :VolumeTag=E01012L4
      Storage Element 13:Full :VolumeTag=E01013L4
      Storage Element 14:Full :VolumeTag=E01014L4
      Storage Element 15:Full :VolumeTag=E01015L4
      Storage Element 16:Full :VolumeTag=E01016L4
      Storage Element 17:Full :VolumeTag=E01017L4
      Storage Element 18:Full :VolumeTag=E01018L4
      Storage Element 19:Full :VolumeTag=E01019L4
      Storage Element 20:Full :VolumeTag=E01020L4
      Storage Element 21:Empty
      Storage Element 22:Full :VolumeTag=CLN101L4
      Storage Element 23:Full :VolumeTag=CLN102L5
      Storage Element 24:Empty
      Storage Element 25:Empty
      Storage Element 26:Empty
      Storage Element 27:Empty
      Storage Element 28:Empty
      Storage Element 29:Empty
      Storage Element 30:Full :VolumeTag=F01030L5
      Storage Element 31:Full :VolumeTag=F01031L5
      Storage Element 32:Full :VolumeTag=F01032L5
      Storage Element 33:Full :VolumeTag=F01033L5
      Storage Element 34:Full :VolumeTag=F01034L5
      Storage Element 35:Full :VolumeTag=F01035L5
      Storage Element 36:Full :VolumeTag=F01036L5
      Storage Element 37:Full :VolumeTag=F01037L5
      Storage Element 38:Full :VolumeTag=F01038L5
      Storage Element 39:Full :VolumeTag=F01039L5
      Storage Element 40 IMPORT/EXPORT:Empty
      Storage Element 41 IMPORT/EXPORT:Empty
      Storage Element 42 IMPORT/EXPORT:Empty
      Storage Element 43 IMPORT/EXPORT:Empty

では、mtxコマンドを使って、磁気テープをスロットからドライブに移動してみましょう。「load」コマンドを使って、2番のスロットにある磁気テープを1番のドライブに移動してみます。

[root@localhost ~]# mtx -f /dev/sg10 load 2 1
Loading media from Storage Element 2 into drive 1...done

すると、2番のスロットが「Empty」に、1番のドライブが「Full」に変わったことがわかるかと思います。

[root@localhost ~]# mtx -f /dev/sg10 status
  Storage Changer /dev/sg10:4 Drives, 43 Slots ( 4 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = E01001L4
Data Transfer Element 1:Full (Storage Element 2 Loaded):VolumeTag = E01002L4
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
      Storage Element 1:Empty
      Storage Element 2:Empty
      Storage Element 3:Full :VolumeTag=E01003L4
      Storage Element 4:Full :VolumeTag=E01004L4
      Storage Element 5:Full :VolumeTag=E01005L4
...

「unload」コマンドでドライブからスロットに磁気テープを戻すことができます。

[root@localhost ~]# mtx -f /dev/sg10 unload 2 1
Unloading drive 1 into Storage Element 2...done
[root@localhost ~]# mtx -f /dev/sg10 status
  Storage Changer /dev/sg10:4 Drives, 43 Slots ( 4 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = E01001L4
Data Transfer Element 1:Empty
Data Transfer Element 2:Empty
Data Transfer Element 3:Empty
      Storage Element 1:Empty
      Storage Element 2:Full :VolumeTag=E01002L4
      Storage Element 3:Full :VolumeTag=E01003L4
      Storage Element 4:Full :VolumeTag=E01004L4
      Storage Element 5:Full :VolumeTag=E01005L4
...

磁気テープへのデータの読み書き方法

磁気テープにデータを読み書きするには、バックアップソフトを使う方法などがありますが、この記事ではtarコマンドを使った方法をご紹介します。まず、テープに書き込むファイルを用意してみます。

[root@localhost ~]# echo "hello world" > hello.txt
[root@localhost ~]# echo "hello hello" > hello2.txt

次に、磁気テープをドライブにロードし、ドライブに対してtarコマンドを発行してファイルをテープに書き込みます。私の環境では、指定するドライブのデバイス名はlsscsi -gコマンドにより出力される/dev/st*の方を指定する必要がありました。tarコマンドのcvfオプションで磁気テープにファイルを書き込むことができます。ファイルを追記するにはrvfオプションを指定する必要があります。

[root@localhost ~]# mtx -f /dev/sg10 load 2 1
Loading media from Storage Element 2 into drive 1...done
[root@localhost ~]# tar cvf /dev/st1 hello.txt
hello.txt
[root@localhost ~]# tar rvf /dev/st1 hello2.txt
hello2.txt

磁気テープに書き込んだファイルの一覧を取得するには、tarコマンドのtvfオプションを使います。

[root@localhost ~]# tar tvf /dev/st1
-rw-r--r-- root/root        12 2016-11-01 00:57 hello.txt
-rw-r--r-- root/root        12 2016-11-01 00:57 hello2.txt

さて、磁気テープからファイルを復元してみましょう。復元先のディレクトリを用意し、そこにテープからファイルを読み戻してみます。

[root@localhost ~]# mkdir restore
[root@localhost ~]# cd restore
[root@localhost restore]# tar xvf /dev/st1 hello.txt
hello.txt
[root@localhost restore]# tar xvf /dev/st1 hello2.txt
hello2.txt
[root@localhost restore]# cat hello.txt
hello world
[root@localhost restore]# cat hello2.txt
hello hello

磁気テープに書き込んだファイルが復元できたことが確認できました。

おわりに

以上が、mhVTLによるテープライブラリの操作方法のご紹介です。テープの管理にmtxコマンド、データの読み書きにtarコマンドを使っており、テープライブラリの管理が煩雑に思えるかもしれません。しかし、例えばSpectrum Archive Library Editionのようなソフトウェアを用いると、ファイルシステムを扱うようにテープライブラリに保管したデータを操作することができます。

今後、データの量が増えると、いつか職場でテープライブラリの管理を任される日が来るかもしれません。テープライブラリの管理者に任命されたときは、ぜひこの記事を思い出してmhVTLで操作方法を練習してみてください。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?