2018年1月2日火曜日

仮想テープライブラリ(mhvtl)を使う

はじめに

バックアップソフトを検証するときに、「テープライブラリなんて持ってないよ!」という経験をしたことありませんか?(私はあります。)
そんな時に、重宝するのがこの"mhvtl"です。

mhvtl って

mhvtl は linux 上で「物理テープライブラリ」のように動作するソフトウェアです。
※詳しいことは以下のサイトをご確認ください。
 https://sites.google.com/site/linuxvtl2/

環境情報

やりたいこと

仮想化環境上(ESXi)に二台のマシンを構築してスロットのテープ交換、対象のテープへ新規書き込み、読み込み、削除、追記を行えるようにします。
 ※注意
 動かすことを目的としていますので、VTL 周りの設定や冗長化は行いません。

構成図

以下のように構成します。

構成内容

構築するマシンの役割はそれぞれ以下のようにします。
マシン名:vtl
mhvtl をインストールするマシンです。iSCSI ターゲットになります。
マシン名:cli
テープを操作するマシンです。iSCSI イニシエータになります。

ハードウェア構成

[vtl]

 CPU:2Core
 メモリー:2GB
 ストレージ:50GB
 NIC:2本

[cli]
 CPU:2Core
 メモリー:2GB
 ストレージ:16GB
 NIC:2本

OS インストール時構成

[vtl]

 OS:CentOS 6.9
 言語:日本語
 タイムゾーン:Tokyo
 パッケージ:BasicServer

[cli]
 OS:CentOS 6.9
 言語:日本語
 タイムゾーン:Tokyo
 パッケージ:BasicServer

OS インストール後設定

[vtl]
 selinux:disabled
 iptables:off
 ntp:cliと時刻を(dateコマンドで)合わせる
 ネットワーク周り
  eth0:10.150.1.101/8
  eth1:172.16.1.101/24

[cli]
 selinux:disabled
 iptables:off
 ntp:cliと時刻を(dateコマンドで)合わせる
 ネットワーク周り
  eth0:10.150.1.101/8
  eth1:172.16.1.101/24

ソフトウェア設定

[vtl]
 mhvtl のインストール
 iSCSI ターゲット設定

[cli] 
 iSCSI イニシエータ設定

 構築手順

ESXi 上に仮想マシン(vtl, cli)を作成し、OS のインストールを行い、OS インストール後設定まで終わった状態から構築をしていきます。構築作業は、すべて root ユーザで実施します。

mhvtl のインストール

対象:vtl

事前準備

  • vtl操作ユーザの作成
[root@vtl ~]# cat /etc/passwd | grep vtl
vtl:x:500:500::/home/vtl:/bin/bash
[root@vtl ~]#

<確認事項>
vtl ユーザが表示されること

  • gcc のインストール
[root@vtl mhvtl-1.5]# yum install --disablerepo=* --enablerepo=dvd gcc
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Determining fastest mirrors
dvd                                                                                                   | 4.0 kB     00:00 ...
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package gcc.x86_64 0:4.4.7-18.el6 will be インストール
--> 依存性の処理をしています: cpp = 4.4.7-18.el6 のパッケージ: gcc-4.4.7-18.el6.x86_64
--> 依存性の処理をしています: cloog-ppl >= 0.15 のパッケージ: gcc-4.4.7-18.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be インストール
--> 依存性の処理をしています: libppl_c.so.2()(64bit) のパッケージ: cloog-ppl-0.15.7-1.2.el6.x86_64
--> 依存性の処理をしています: libppl.so.7()(64bit) のパッケージ: cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.7-18.el6 will be インストール
--> 依存性の処理をしています: libmpfr.so.1()(64bit) のパッケージ: cpp-4.4.7-18.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be インストール
---> Package ppl.x86_64 0:0.10.2-11.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================
 パッケージ                    アーキテクチャ             バージョン                           リポジトリー             容量
=============================================================================================================================
インストールしています:
 gcc                           x86_64                     4.4.7-18.el6                         dvd                      10 M
依存性関連でのインストールをします。:
 cloog-ppl                     x86_64                     0.15.7-1.2.el6                       dvd                      93 k
 cpp                           x86_64                     4.4.7-18.el6                         dvd                     3.7 M
 mpfr                          x86_64                     2.4.1-6.el6                          dvd                     157 k
 ppl                           x86_64                     0.10.2-11.el6                        dvd                     1.3 M

トランザクションの要約
=============================================================================================================================
インストール         5 パッケージ

総ダウンロード容量: 15 M
インストール済み容量: 33 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
-----------------------------------------------------------------------------------------------------------------------------
合計                                                                                          79 MB/s |  15 MB     00:00
警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
 Package: centos-release-6-9.el6.12.3.x86_64 (@anaconda-CentOS-201703281317.x86_64/6.9)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
これでいいですか? [y/N]y
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
警告: RPMDB は yum 以外で変更されました。
  インストールしています  : mpfr-2.4.1-6.el6.x86_64                                                                      1/5
  インストールしています  : cpp-4.4.7-18.el6.x86_64                                                                      2/5
  インストールしています  : ppl-0.10.2-11.el6.x86_64                                                                     3/5
  インストールしています  : cloog-ppl-0.15.7-1.2.el6.x86_64                                                              4/5
  インストールしています  : gcc-4.4.7-18.el6.x86_64                                                                      5/5
  Verifying               : gcc-4.4.7-18.el6.x86_64                                                                      1/5
  Verifying               : ppl-0.10.2-11.el6.x86_64                                                                     2/5
  Verifying               : cloog-ppl-0.15.7-1.2.el6.x86_64                                                              3/5
  Verifying               : mpfr-2.4.1-6.el6.x86_64                                                                      4/5
  Verifying               : cpp-4.4.7-18.el6.x86_64                                                                      5/5

インストール:
  gcc.x86_64 0:4.4.7-18.el6

依存性関連をインストールしました:
  cloog-ppl.x86_64 0:0.15.7-1.2.el6   cpp.x86_64 0:4.4.7-18.el6   mpfr.x86_64 0:2.4.1-6.el6   ppl.x86_64 0:0.10.2-11.el6

完了しました!
[root@vtl mhvtl-1.5]#
[root@vtl mhvtl-1.5]# yum --disablerepo=* --enablerepo=dvd install zlib-devel
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package zlib-devel.x86_64 0:1.2.3-29.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================
 パッケージ                     アーキテクチャ             バージョン                          リポジトリー             容量
=============================================================================================================================
インストールしています:
 zlib-devel                     x86_64                     1.2.3-29.el6                        dvd                      44 k

トランザクションの要約
=============================================================================================================================
インストール         1 パッケージ

総ダウンロード容量: 44 k
インストール済み容量: 115 k
これでいいですか? [y/N]y
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : zlib-devel-1.2.3-29.el6.x86_64                                                               1/1
  Verifying               : zlib-devel-1.2.3-29.el6.x86_64                                                               1/1

インストール:
  zlib-devel.x86_64 0:1.2.3-29.el6

完了しました!
[root@vtl mhvtl-1.5]#

以下サイトからダウンロード
http://ftp.riken.jp/Linux/centos/6/os/x86_64/Packages/

[root@vtl ~]# rpm -ivh /tmp/rpm/lzo-devel-2.03-3.1.el6_5.1.x86_64.rpm /tmp/rpm/lzo-minilzo-2.03-3.1.el6_5.1.x86_64.rpm
準備中...                ########################################### [100%]
   1:lzo-minilzo            ########################################### [ 50%]
   2:lzo-devel              ########################################### [100%]
[root@vtl ~]#
[root@vtl ~]# yum --disablerepo=* --enablerepo=dvd install lsscsi
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package lsscsi.x86_64 0:0.23-3.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 パッケージ        アーキテクチャ    バージョン            リポジトリー    容量
================================================================================
インストールしています:
 lsscsi            x86_64            0.23-3.el6            dvd             38 k

トランザクションの要約
================================================================================
インストール         1 パッケージ

総ダウンロード容量: 38 k
インストール済み容量: 75 k
これでいいですか? [y/N]y
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
警告: RPMDB は yum 以外で変更されました。
  インストールしています  : lsscsi-0.23-3.el6.x86_64                        1/1
  Verifying               : lsscsi-0.23-3.el6.x86_64                        1/1

インストール:
  lsscsi.x86_64 0:0.23-3.el6

完了しました!
[root@vtl ~]#

資源のダウンロードと配置

  •  資源のダウンロード
以下サイトから資源を作業端末へダウンロードします
サイト:https://sites.google.com/site/linuxvtl2/home#mhvtl-download
資源1:mhvtl-2016-03-10.tgz
資源2:mhvtl-utils-1.5-4.x86_64.rpm

  • 資源をvtlへ配置
ディレクトリを作成します
[root@vtl ~]# mkdir -p /tmp/source/mhvtl/
[root@vtl ~]#
[root@vtl ~]# mkdir -p /tmp/rpm/
[root@vtl ~]#

<確認事項>
ディレクトリが作成されること

資源1を /tmp/source/mhvtl/ に WinSCP、TeraTerm などで配置します
資源2を /tmp/rpm/ に WinSCP、TeraTerm などで配置します

[root@vtl ~]# ls -l /tmp/source/mhvtl/mhvtl-2016-03-10.tgz
-rw-r--r--. 1 root root 298312  1月  2 22:31 2018 /tmp/source/mhvtl/mhvtl-2016-03-10.tgz
[root@vtl ~]#
[root@vtl ~]# ls -l /tmp/rpm/mhvtl-utils-1.5-4.x86_64.rpm
-rw-r--r--. 1 root root 457315  1月  2 22:31 2018 /tmp/rpm/mhvtl-utils-1.5-4.x86_64.rpm
[root@vtl ~]#

<確認事項>
資源が配置されていること

mhvtl のインストール

  • mhvtl-utils のインストール
 [root@vtl ~]# rpm -ivh /tmp/rpm/mhvtl-utils-1.5-4.x86_64.rpm
準備中...                ########################################### [100%]
   1:mhvtl-utils            ########################################### [100%]
[root@vtl ~]#

<確認事項>
mhvtl-utils がインストールされていること

[root@vtl ~]# cd /tmp/source/mhvtl/
[root@vtl mhvtl]#
[root@vtl mhvtl]# zcat mhvtl-2016-03-10.tgz | tar xvf -
mhvtl-1.5/man/
mhvtl-1.5/man/vtltape.1.in
mhvtl-1.5/man/mktape.1.in
mhvtl-1.5/man/edit_tape.1.in
mhvtl-1.5/man/vtllibrary.1.in
mhvtl-1.5/man/build_library_config.1.in
mhvtl-1.5/man/mhvtl.conf.5.in
mhvtl-1.5/man/mhvtl.1.in
mhvtl-1.5/man/library_contents.5.in
mhvtl-1.5/man/make_vtl_media.1.in
mhvtl-1.5/man/vtlcmd.1.in
mhvtl-1.5/man/device.conf.5.in
mhvtl-1.5/man/Makefile
mhvtl-1.5/doc/
mhvtl-1.5/doc/index.html
mhvtl-1.5/doc/4_library_example/
mhvtl-1.5/doc/4_library_example/mhvtl.conf
mhvtl-1.5/doc/4_library_example/device.conf
mhvtl-1.5/doc/4_library_example/library_contents.20
mhvtl-1.5/doc/4_library_example/library_contents.30
mhvtl-1.5/doc/4_library_example/library_contents.10
mhvtl-1.5/doc/4_library_example/library_contents.40
mhvtl-1.5/kernel/
mhvtl-1.5/kernel/fetch26.c
mhvtl-1.5/kernel/mhvtl.c
mhvtl-1.5/kernel/fetch27.c
mhvtl-1.5/kernel/fetch.c
mhvtl-1.5/kernel/fetch24.c
mhvtl-1.5/kernel/vtl_common.h
mhvtl-1.5/kernel/Makefile
mhvtl-1.5/usr/
mhvtl-1.5/usr/q.c
mhvtl-1.5/usr/overland_pm.c
mhvtl-1.5/usr/default_ssc_pm.c
mhvtl-1.5/usr/hp_ultrium_pm.c
mhvtl-1.5/usr/edit_tape.c
mhvtl-1.5/usr/subprocess.c
mhvtl-1.5/usr/security_protocol.h
mhvtl-1.5/usr/vtlcmd.c
mhvtl-1.5/usr/stklxx_pm.c
mhvtl-1.5/usr/ssc.c
mhvtl-1.5/usr/make_vtl_media.in
mhvtl-1.5/usr/minilzo.h
mhvtl-1.5/usr/lzodefs.h
mhvtl-1.5/usr/logging.h
mhvtl-1.5/usr/dump_tape.c
mhvtl-1.5/usr/smc.c
mhvtl-1.5/usr/vtltape.c
mhvtl-1.5/usr/spc.c
mhvtl-1.5/usr/ssc.h
mhvtl-1.5/usr/mode.h
mhvtl-1.5/usr/hp_smc_pm.c
mhvtl-1.5/usr/mode.c
mhvtl-1.5/usr/subprocess.h
mhvtl-1.5/usr/ait_pm.c
mhvtl-1.5/usr/mktape.c
mhvtl-1.5/usr/default_smc_pm.c
mhvtl-1.5/usr/vtlcart.c
mhvtl-1.5/usr/t10000_pm.c
mhvtl-1.5/usr/vtltape.pem
mhvtl-1.5/usr/vtllib.h
mhvtl-1.5/usr/vtlcart_v1.c
mhvtl-1.5/usr/make_scsi_dev
mhvtl-1.5/usr/list.h
mhvtl-1.5/usr/vtltape.h
mhvtl-1.5/usr/smc.h
mhvtl-1.5/usr/stk9x40_pm.c
mhvtl-1.5/usr/spectra_pm.c
mhvtl-1.5/usr/be_byteshift.h
mhvtl-1.5/usr/q.h
mhvtl-1.5/usr/vtl_cart_type.c
mhvtl-1.5/usr/README.LZO
mhvtl-1.5/usr/build_library_config
mhvtl-1.5/usr/vtlcart_v1_mtr.c
mhvtl-1.5/usr/log.h
mhvtl-1.5/usr/lzoconf.h
mhvtl-1.5/usr/ibm_smc_pm.c
mhvtl-1.5/usr/spc.h
mhvtl-1.5/usr/Makefile
mhvtl-1.5/usr/quantum_dlt_pm.c
mhvtl-1.5/usr/scalar_pm.c
mhvtl-1.5/usr/ibm_03592_pm.c
mhvtl-1.5/usr/vtllib.c
mhvtl-1.5/usr/ult3580_pm.c
mhvtl-1.5/usr/vtllibrary.c
mhvtl-1.5/usr/tapeexerciser.c
mhvtl-1.5/usr/scsi.h
mhvtl-1.5/usr/dump_messageQ.c
mhvtl-1.5/usr/minilzo.c
mhvtl-1.5/usr/log.c
mhvtl-1.5/etc/
mhvtl-1.5/etc/mhvtl.in
mhvtl-1.5/etc/library_contents.sample
mhvtl-1.5/etc/Makefile
mhvtl-1.5/scripts/
mhvtl-1.5/scripts/rescan-scsi-bus.sh
mhvtl-1.5/scripts/centos_configure.sh
mhvtl-1.5/scripts/start-mhvtl-scst.sh
mhvtl-1.5/scripts/70-persistent-tape.rules
mhvtl-1.5/scripts/checkpatch.pl
mhvtl-1.5/scripts/70-persistent-generic.rules
mhvtl-1.5/scripts/update_device.conf.in
mhvtl-1.5/scripts/mhvtl-1.4.ebuild
mhvtl-1.5/scripts/Makefile
mhvtl-1.5/scripts/NetBackup/
mhvtl-1.5/scripts/NetBackup/drive_stats.pl
mhvtl-1.5/scripts/NetBackup/vlt_endeject_notify.pl
mhvtl-1.5/scripts/checkarch.sh
mhvtl-1.5/include/
mhvtl-1.5/include/vtl_u.h
mhvtl-1.5/Makefile
mhvtl-1.5/README
mhvtl-1.5/INSTALL
mhvtl-1.5/mhvtl-utils.spec
[root@vtl mhvtl]#
[root@vtl mhvtl]# cd mhvtl-1.5/
[root@vtl mhvtl-1.5]#
[root@vtl mhvtl-1.5]# make
make -C usr USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/usr' に入ります
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o vtltape.o vtltape.c

cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o ssc.o ssc.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o default_ssc_pm.o default_ssc_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o ult3580_pm.o ult3580_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o hp_ultrium_pm.o hp_ultrium_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o stk9x40_pm.o stk9x40_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o quantum_dlt_pm.o quantum_dlt_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o ait_pm.o ait_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o t10000_pm.o t10000_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o ibm_03592_pm.o ibm_03592_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"  -o minilzo.o -c minilzo.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o vtltape vtltape.o ssc.o \
                default_ssc_pm.o \
                ult3580_pm.o \
                hp_ultrium_pm.o \
                stk9x40_pm.o \
                quantum_dlt_pm.o \
                ait_pm.o t10000_pm.o ibm_03592_pm.o \
                minilzo.o \
                -lz -L. -lvtlcart -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o dump_tape.o dump_tape.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o dump_tape dump_tape.o minilzo.o -L. \
                -lz -L. -lvtlcart -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o vtlcmd.o vtlcmd.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o vtlcmd vtlcmd.o -L. -lvtlcart -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o dump_messageQ.o dump_messageQ.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o dump_messageQ dump_messageQ.o -L. -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o mktape.o mktape.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o mktape mktape.o -L. -lvtlcart -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o edit_tape.o edit_tape.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o edit_tape edit_tape.o -L. -lvtlcart -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o vtllibrary.o vtllibrary.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o vtl_cart_type.o vtl_cart_type.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o stklxx_pm.o stklxx_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o hp_smc_pm.o hp_smc_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o overland_pm.o overland_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o spectra_pm.o spectra_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o scalar_pm.o scalar_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o ibm_smc_pm.o ibm_smc_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\"   -c -o default_smc_pm.o default_smc_pm.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o vtllibrary vtllibrary.o -L. -lvtlscsi \
                vtl_cart_type.o \
                stklxx_pm.o \
                hp_smc_pm.o \
                overland_pm.o \
                spectra_pm.o \
                scalar_pm.o \
                ibm_smc_pm.o \
                default_smc_pm.o
sed -e s'/@HOME_PATH@/\/opt\/mhvtl/' make_vtl_media.in > make_vtl_media.1
sed -e s'/@CONF_PATH@/\/etc\/mhvtl/' make_vtl_media.1 > make_vtl_media
rm -f make_vtl_media.1
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE  -I../kernel -DMHVTL_VERSION=\"1.5.4\" -D_GNU_SOURCE -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/mhvtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o tapeexerciser tapeexerciser.c
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/usr' から出ます
make -C etc USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/etc' に入ります
sed -e s'/@USR@/vtl/' mhvtl.in > mhvtl.1
sed -e s'/@CONF_PATH@/\/etc\/mhvtl/' mhvtl.1 > mhvtl
sed -i s'/@HOME_PATH@/\/opt\/mhvtl/' mhvtl
rm -f mhvtl.1
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/etc' から出ます
make -C scripts MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/scripts' に入ります
sed -e s'/@CONF_PATH@/\/etc\/mhvtl/' update_device.conf.in > update_device.conf
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/scripts' から出ます
[root@vtl mhvtl-1.5]#
[root@vtl mhvtl-1.5]# make install
make usr
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5' に入ります
make -C usr USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[2]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/usr' に入ります
make[2]: `all' に対して行うべき事はありません.
make[2]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/usr' から出ます
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5' から出ます
make -C usr install /usr/lib /usr
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/usr' に入ります
install -d -m 755 /usr/lib64
install -o root -g bin -m 755 libvtlscsi.so /usr/lib64/
install -o root -g bin -m 755 libvtlcart.so /usr/lib64/
install -d -m 755 /usr/bin
install -o root -g vtl -m 4750 vtltape /usr/bin/
install -o root -g vtl -m 4750 vtllibrary /usr/bin/
install -o vtl -g vtl -m 750 vtlcmd /usr/bin/
install -o vtl -g vtl -m 750 mktape /usr/bin/
install -o vtl -g vtl -m 750 dump_tape /usr/bin/
install -o vtl -g vtl -m 750 edit_tape /usr/bin/
install -o vtl -g vtl -m 755 tapeexerciser /usr/bin/
install -m 700 build_library_config /usr/bin/
install -m 700 make_vtl_media /usr/bin/
make[1]: `/usr/lib' に対して行うべき事はありません.
make[1]: `/usr' に対して行うべき事はありません.
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/usr' から出ます
make scripts
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5' に入ります
make -C scripts MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[2]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/scripts' に入ります
make[2]: `update_device.conf' は更新済みです
make[2]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/scripts' から出ます
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5' から出ます
make -C scripts install /usr
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/scripts' に入ります
install -m 700 update_device.conf /usr/bin/
make[1]: `/usr' に対して行うべき事はありません.
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/scripts' から出ます
make etc
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5' に入ります
make -C etc USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/mhvtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[2]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/etc' に入ります
make[2]: `mhvtl' は更新済みです
make[2]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/etc' から出ます
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5' から出ます
make -i -C etc install  USR=vtl
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/etc' に入ります
install -d -m 755 /etc/init.d
install -m 700 mhvtl /etc/init.d
test ! -x /sbin/insserv || /sbin/insserv mhvtl
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/etc' から出ます
make -C man man
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/man' に入ります
sed -e s'/@VERSION@/1.5/' build_library_config.1.in > build_library_config.1
sed -e s'/@VERSION@/1.5/' device.conf.5.in > device.conf.5
sed -e s'/@VERSION@/1.5/' edit_tape.1.in > edit_tape.1
sed -e s'/@VERSION@/1.5/' library_contents.5.in > library_contents.5
sed -e s'/@VERSION@/1.5/' make_vtl_media.1.in > make_vtl_media.1
sed -e s'/@VERSION@/1.5/' mhvtl.1.in > mhvtl.1
sed -e s'/@VERSION@/1.5/' mhvtl.conf.5.in > mhvtl.conf.5
sed -e s'/@VERSION@/1.5/' mktape.1.in > mktape.1
sed -e s'/@VERSION@/1.5/' vtlcmd.1.in > vtlcmd.1
sed -e s'/@VERSION@/1.5/' vtllibrary.1.in > vtllibrary.1
sed -e s'/@VERSION@/1.5/' vtltape.1.in > vtltape.1
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/man' から出ます
make -C man install /usr  USR=vtl
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/man' に入ります
install -d -m 755 /usr/share/man/man1
install -d -m 755 /usr/share/man/man5
install -o root mhvtl.1 /usr/share/man/man1/
install -o root mktape.1 /usr/share/man/man1/
install -o root vtlcmd.1 /usr/share/man/man1/
install -o root vtltape.1 /usr/share/man/man1/
install -o root edit_tape.1 /usr/share/man/man1/
install -o root vtllibrary.1 /usr/share/man/man1/
install -o root make_vtl_media.1 /usr/share/man/man1/
install -o root build_library_config.1 /usr/share/man/man1/
install -o root mhvtl.conf.5 /usr/share/man/man5/
install -o root device.conf.5 /usr/share/man/man5/
install -o root library_contents.5 /usr/share/man/man5/
make[1]: `/usr' に対して行うべき事はありません.
make[1]: ディレクトリ `/tmp/source/mhvtl/mhvtl-1.5/man' から出ます
test -d /opt/mhvtl || mkdir -p /opt/mhvtl
[root@vtl mhvtl-1.5]#






mhvtl の自動起動


mhvtl の操作

対象:vtl

SCSIバスにつながっているデバイスの確認

テープライブラリ内のスロット、磁気テープおよびドライブの一覧を取得

磁気テープをスロットからドライブに移動

テープへ書き込み


iSCSI ターゲット設定

対象:vtl

iscsitarget のインストール

iscsitarget の設定


iSCSI イニシエータ設定 

対象:cli

iscsiinitiator のインストール

iscsiinitiator の設定


cli から vtl へ接続して操作

SCSIバスにつながっているデバイスの確認

テープライブラリ内のスロット、磁気テープおよびドライブの一覧を取得

磁気テープをスロットからドライブに移動

テープへ書き込み


仮想テープライブラリ(mhvtl)を使う

はじめに バックアップソフトを検証するときに、「テープライブラリなんて持ってないよ!」という経験をしたことありませんか?(私はあります。) そんな時に、重宝するのがこの"mhvtl"です。 mhvtl って mhvtl は linux 上で「物理...