MHVTL – Linux virtual tape library
download
The homepage of MHVTL project is here.
Mark Harvey is the developer of this OpenSource Software (GPL v2).
First of all download latest stable version 0.16-13 (source rpm).
installation
run terminal
opensuse@nwsrv:~> su -
Password: reverse
nwsrv:~ # cd /home/opensuse/Download/
nwsrv:/home/opensuse/Download # ls -l
total 152
-rw-r--r-- 1 opensuse users 154834 Aug 25 17:00 mhvtl-0.16-13.src.rpm
nwsrv:/home/opensuse/Download # rpm -Uvh mhvtl-0.16-13.src.rpm
1:mhvtl warning: user markh does not exist - using root
warning: user markh does not exist - using root3%)
########################################### [100%]
nwsrv:/home/opensuse/Download # cd /usr/src/packages/BUILD
nwsrv:/usr/src/packages/BUILD # tar xfz ../SOURCES/mhvtl-2010-05-09.tgz
nwsrv:/usr/src/packages/BUILD # cd mhvtl-0.16/kernel/
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16/kernel # make
make -C /lib/modules/2.6.31.12-0.2-default/build SUBDIRS=/usr/src/packages/BUILD/mhvtl-0.16/kernel modules
make[1]: Entering directory `/usr/src/linux-2.6.31.12-0.2-obj/i386/default'
make -C ../../../linux-2.6.31.12-0.2 O=/usr/src/linux-2.6.31.12-0.2-obj/i386/default/. modules
CC [M] /usr/src/packages/BUILD/mhvtl-0.16/kernel/mhvtl.o
In file included from /usr/src/packages/BUILD/mhvtl-0.16/kernel/mhvtl.c:337:
/usr/src/packages/BUILD/mhvtl-0.16/kernel/fetch27.c: In function âvtl_sg_copy_userâ:
/usr/src/packages/BUILD/mhvtl-0.16/kernel/fetch27.c:54: warning: cast from pointer to integer of different size
/usr/src/packages/BUILD/mhvtl-0.16/kernel/fetch27.c:55: warning: cast from pointer to integer of different size
Building modules, stage 2.
MODPOST 1 modules
CC /usr/src/packages/BUILD/mhvtl-0.16/kernel/mhvtl.mod.o
LD [M] /usr/src/packages/BUILD/mhvtl-0.16/kernel/mhvtl.ko
make[1]: Leaving directory `/usr/src/linux-2.6.31.12-0.2-obj/i386/default'
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16/kernel # make install
install -o root -g root -m 644 mhvtl.ko /lib/modules/`uname -r`/kernel/drivers/scsi/
depmod -ae
WARNING: -e needs -E or -Fnwsrv:/usr/src/packages/BUILD/mhvtl-0.16/kernel #
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16/kernel # cd ..
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16 # make
make -C scripts MHVTL_CONFIG_PATH=/etc/mhvtl
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/scripts'
sed -e s'/@CONF_PATH@/\/etc\/mhvtl/' update_device.conf.in > update_device.conf
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/scripts'
make -C usr USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/vtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/usr'
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -fpic vtllib.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -fpic spc.c
cc -shared -o libvtlscsi.so vtllib.o spc.o
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -o vtltape.o vtltape.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -o q.o q.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o vtltape vtltape.o q.o -L. -lz -lvtlscsi
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -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=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o dump_tape dump_tape.o
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -o vtlcmd.o vtlcmd.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o vtlcmd q.o vtlcmd.o
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o dump_messageQ q.o dump_messageQ.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -o mktape.o mktape.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o mktape mktape.o
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -c -o vtllibrary.o vtllibrary.c
cc -Wall -Wshadow -g -O2 -D_LARGEFILE64_SOURCE -I../kernel -DMHVTL_VERSION=\"0.16.13\" -DMHVTL_DEBUG -DUSR=\"vtl\" -DMHVTL_HOME_PATH=\"/opt/vtl\" -DMHVTL_CONFIG_PATH=\"/etc/mhvtl\" -o vtllibrary vtllibrary.o q.o -L. -lvtlscsi
sed -e s'/@HOME_PATH@/\/opt\/vtl/' 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
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/usr'
make -C etc USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/vtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/etc'
make[1]: `mhvtl' is up to date.
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/etc'
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16 # make install
make usr
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16'
make -C usr USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/vtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[2]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/usr'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/usr'
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16'
make -C usr install /usr
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/usr'
install -d -m 755 /usr/lib
install -o root -g bin -m 755 libvtlscsi.so /usr/lib/
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 -m 700 build_library_config /usr/bin/
install -m 700 make_vtl_media /usr/bin/
install -m 700 make_vtl_devices /usr/bin/
make[1]: Nothing to be done for `/usr'.
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/usr'
make etc
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16'
make -C etc USR=vtl GROUP=vtl MHVTL_HOME_PATH=/opt/vtl MHVTL_CONFIG_PATH=/etc/mhvtl
make[2]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/etc'
make[2]: `mhvtl' is up to date.
make[2]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/etc'
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16'
make -C scripts install
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/scripts'
install -m 700 update_device.conf /usr/bin/
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/scripts'
make -C etc install
make[1]: Entering directory `/usr/src/packages/BUILD/mhvtl-0.16/etc'
install -d -m 755 /etc
install -d -m 755 /etc/init.d
install -m 700 mhvtl /etc/init.d/
test ! -x /sbin/insserv || /sbin/insserv mhvtl
make[1]: Leaving directory `/usr/src/packages/BUILD/mhvtl-0.16/etc'
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16 # /etc/init.d/mhvtl start
Could not locate library config file: /etc/mhvtl/library_contents.10
Creating a default one
Please stop mhvtl & edit /etc/mhvtl/library_contents.10 to suit your requirements
Could not locate library config file: /etc/mhvtl/library_contents.30
Creating a default one
Please stop mhvtl & edit /etc/mhvtl/library_contents.30 to suit your requirements
vtltape: version 0.16.13
vtltape: version 0.16.13
vtltape: version 0.16.13
vtltape: version 0.16.13
vtltape: version 0.16.13
vtltape: version 0.16.13
vtltape: version 0.16.13
vtltape: version 0.16.13
vtllibrary: version 0.16.13
vtllibrary process PID is 6126
vtllibrary: version 0.16.13
vtllibrary process PID is 6129
done
Lets have a look at the SCSI devices…
nwsrv:/usr/src/packages/BUILD/mhvtl-0.16 # lsscsi -g [0:0:0:0] disk ATA VBOX HARDDISK 1.0 /dev/sda /dev/sg0 [0:0:1:0] disk ATA VBOX HARDDISK 1.0 /dev/sdb /dev/sg1 [1:0:0:0] cd/dvd VBOX CD-ROM 1.0 /dev/sr0 /dev/sg2 [2:0:0:0] mediumx SPECTRA PYTHON 550V /dev/sch0 /dev/sg11 [2:0:1:0] tape IBM ULT3580-TD4 550V /dev/st0 /dev/sg3 [2:0:2:0] tape IBM ULT3580-TD4 550V /dev/st1 /dev/sg4 [2:0:3:0] tape IBM ULT3580-TD4 550V /dev/st2 /dev/sg5 [2:0:4:0] tape IBM ULT3580-TD4 550V /dev/st3 /dev/sg6 [2:1:0:0] mediumx SPECTRA PYTHON 550V /dev/sch1 /dev/sg12 [2:1:1:0] tape IBM ULT3580-TD4 550V /dev/st4 /dev/sg7 [2:1:2:0] tape IBM ULT3580-TD4 550V /dev/st5 /dev/sg8 [2:1:3:0] tape IBM ULT3580-TD4 550V /dev/st6 /dev/sg9 [2:1:4:0] tape IBM ULT3580-TD4 550V /dev/st7 /dev/sg10 nwsrv:/usr/src/packages/BUILD/mhvtl-0.16 #
You can see that there are 2 Spectra Python tape libraries, each containing 4 IBM LTO4 tape drives.
Note
EMC Networker will not recognize the second tape library. There seems to be a problem that the second tape library has the same SCSI controller number as the first one.
configuration
The MHVTL configuration files are located in /etc/mhvtl. You may stop MHVTL with /etc/init.d/mhvtl stop, change the files as desired and start MHVTL with /etc/init.d/mhvtl start once again.
nwsrv:/etc/mhvtl # ls device.conf library_contents.10 library_contents.30 mhvtl.conf
The virtual tapes are located as files in directory /opt/vtl.
nwsrv:/opt/vtl # ls CLN100S3 DD1001S3 DD1005S3 DD1009S3 DD3003S3 DD3007S3 UD1011L4 UD1015L4 UD1019L4 UD3013L4 UD3017L4 CLN101L4 DD1002S3 DD1006S3 DD1010S3 DD3004S3 DD3008S3 UD1012L4 UD1016L4 UD1020L4 UD3014L4 UD3018L4 CLN300S3 DD1003S3 DD1007S3 DD3001S3 DD3005S3 DD3009S3 UD1013L4 UD1017L4 UD3011L4 UD3015L4 UD3019L4 CLN301L4 DD1004S3 DD1008S3 DD3002S3 DD3006S3 DD3010S3 UD1014L4 UD1018L4 UD3012L4 UD3016L4 UD3020L4
MHVTL forum
There’s a forum for MHVTL, run by nia, where you can ask questions, have a look at other configurations and so on…