Networker and MHVTL in a VirtualBox VM part4

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…

This entry was posted in Backup, EMC, Linux and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>