Carry a jukebox with you (if you’re using Linux)

A rather smart gent whom I used to work with at another company, Mark Harvey, has in his own time been working on an open source VTL implementation that can be used for testing/lab purposes. I.e., he’s not aiming for it to be the next competitor to EDLs, FalconStor, etc., but rather, something that people can use when needing to test jukebox functionality without wanting to carry a jukebox around with them.

While Mark has primarily focused on getting his VTL software working with NetBackup, recently he’s made some progress in getting it to work (with a couple of limitations) with NetWorker.

The current limitation is that NetWorker doesn’t quite like the identity of the virtual drives – it sees them all as having the same serial number, and prohibits creating multiple drives with the same serial number. (The VTL presents differing serial numbers, but NetWorker may be working on the WWNN, which is the same on each device…)

Getting the VTL installed and configured

Limit yourself to one drive though, and you’re fine. To get started, you first need to download the VTL code – Mark hosts it at linuxvtl.googlepages.com.

My testing was with the 2009-06-09 tar ball on a CentOS 5.3 virtual machine and NetWorker 7.5.1. I’m not going to repeat the installation instructions – I suggest you build the RPMs, install sg3_util package (required), following the instructions included in Mark’s package.

Before you actually configure a jukebox in NetWorker, you need to strip down the number of devices in the VTL to 1, and the instructions below are geared towards that. Assuming you’ve not yet started the VTL software:

Create /etc/mhvtl/device.conf

Marks’ /etc/init.d/mhvtl startup script will create this file if it doesn’t exist, but we want to manually configure the file to only device. Below is the device.conf file I’ve used:

[root@tara mhvtl]# cat device.conf

VERSION: 2

# VPD page format:
# <page #> <Length> <x> <x+1>... <x+n>

# NOTE: The order of records is IMPORTANT...
# The 'Unit serial number:' should be last (except for VPD data)
# i.e.
# Order is : Vendor ID, Product ID, Product Rev and serial number finally
# Zero, one or more VPD entries.
#
# Each 'record' is sperated by one (or more) blank lines.
# Each 'record' starts at column 1

Library: 0 CHANNEL: 0 TARGET: 0 LUN: 0
 Vendor identification: STK
 Product identification: L700
 Product revision level: 5500
 Unit serial number: XYZZY

Drive: 1 CHANNEL: 0 TARGET: 1 LUN: 0
 Vendor identification: QUANTUM
 Product identification: SDLT600         
 Product revision level: 5500
 Unit serial number: ZF7584364         
 Max density: 0x46
 VPD: b0 04 00 02 01 00

(Note – yes, you can specify the serial number above, but no, if you create a second device with a different serial number it doesn’t yet work.)

Defining the library contents

After creating the device config, you need to configure the library contents – this is done by creating the file /etc/mhvtl/library_contents. Mine looks like the following:

[root@tara mhvtl]# cat library_contents
# Define how many tape drives you want in the vtl..
# The 'XYZZY_...' is the serial number assigned to
# this tape device.

Drive 1: ZF7584364

# Place holder for the robotic arm. Not really used.
Picker 1:

# Media Access Port
# (mailslots, Cartridge Access Port, <insert your favourate name here>)
# Again, define how many MAPs this vtl will contain.
MAP 1:
MAP 2:
MAP 3:
MAP 4:

# And the 'big' on, define your media and in which slot contains media.
# When the rc script is started, all media listed here will be created
# using the default media capacity.
Slot 1:    800843S3
Slot 2: 800844S3
Slot 3: 800845S3
Slot 4: 800846S3
Slot 5: 800847S3
Slot 6: 800848S3
Slot 7: 800849S3
Slot 8: 800850S3
Slot 9: 800851S3
Slot 10: 800852S3
Slot 11: 800853S3
Slot 12: 800854S3
Slot 13: 800855S3
Slot 14: 800856S3
Slot 15: 800857S3
Slot 16: 800858S3
Slot 17: 800859S3
Slot 18: 800860S3
Slot 19: 800861S3
Slot 20: 800862S3
Slot 21:
Slot 22:
Slot 23:
Slot 24:
Slot 25:
Slot 26:
Slot 27:
Slot 28:
Slot 29:
Slot 30:
Slot 31: CLN001L1
Slot 32: CLN002L1

In the above configuration, we’ve got a library with 32 presented slots, with slots 1-20 occupied by writable tapes, and slots 31-32 occupied with cleaning cartridges. Feel free to manipulate the numbers as you wish. (If you’re wondering about the choice of barcode labels, I’m terribly predictable. Every time I start a sequence of barcode labels in examples, I always start with 800843.)

Getting NetWorker and the VTL working together

Once the VTL has been configured, start it using the init script:

[root@tara mhvtl]# /etc/init.d/mhvtl start
vtllibrary process PID is 5315

So long as everything is working, you should see processes along the lines of:

[root@tara mhvtl]# ps -eaf | grep vtl
vtl       5310     1  0 08:56 ?        00:00:00 vtltape -q 1
vtl       5315     1  0 08:56 ?        00:00:00 vtllibrary -q 0

Looking in /opt/vtl, the default location for the VTL data, you should see the following files (suitably adjusted for any changes you make to barcodes/contents):

[root@tara mhvtl]# ls /opt/vtl
800843S3  800845S3  800847S3  800849S3  800851S3  800853S3
800855S3  800857S3  800859S3  800861S3  CLN001L1  800844S3
800846S3  800848S3  800850S3  800852S3  800854S3  800856S3
800858S3  800860S3  800862S3  CLN002L1

If we check the NetWorker inquire output, we get the following*:

[root@tara mhvtl]# inquire -l

-l flag found: searching all LUNs, which may take over 10 minutes per adapter
 for some fibre channel adapters.  Please be patient.

scsidev@0.0.0:STK     L700     5500|Autochanger (Jukebox), /dev/sg1
                                    S/N:    XYZZY     
                                    ATNN=STK     L700            XYZZY     
                                    WWNN=5123456003030303
scsidev@0.1.0:QUANTUM SDLT600  5500|Tape, /dev/nst0
                                    S/N:    ZF7584364
                                    ATNN=QUANTUM SDLT600         ZF7584364
                                    WWNN=5123456003030303

Assuming you get inquire output like the above, you next need to create your tape library. Below is the output of jbconfig command:

[root@tara mhvtl]# jbconfig

Jbconfig is running on host tara.pmdg.lab (Linux 2.6.18-128.1.16.el5),
 and is using tara.pmdg.lab as the NetWorker server.

 1) Configure an AlphaStor Library.
 2) Configure an Autodetected SCSI Jukebox.
 3) Configure an Autodetected NDMP SCSI Jukebox.
 4) Configure an SJI Jukebox.
 5) Configure an STL Silo.

What kind of Jukebox are you configuring? [1] 2
14484:jbconfig: Scanning SCSI buses; this may take a while ...
Installing 'Standard SCSI Jukebox' jukebox - scsidev@0.0.0.

What name do you want to assign to this jukebox device? MHVTL
15814:jbconfig: Attempting to detect serial numbers on the jukebox and drives ...

15815:jbconfig: Will try to use SCSI information returned by jukebox to configure drives.

Turn NetWorker auto-cleaning on (yes / no) [yes]? yes

The following drive(s) can be auto-configured in this jukebox:
 1> sdlt600 @ 0.1.0 ==> /dev/nst0
These are all the drives that this jukebox has reported.

To change the drive model(s) or configure them as shared or NDMP drives,
 you need to bypass auto-configure. Bypass auto-configure? (yes / no) [no] no

Jukebox has been added successfully

The following configuration options have been set:

> Jukebox description to the control port and model.
> Autochanger control port to the port at which we found it.
> Networker managed tape autocleaning on.
> Barcode reading to on.
> Volume labels that match the barcodes.
> Slot intended to hold cleaning cartridge to 32.  Please insure that a
 cleaning cartridge is in that slot
> Number of times we will use a new cleaning cartridge to 5.
> Cleaning interval for the tape drives to 6 months.

You can review and change the characteristics of the autochanger and its
 associated devices using the NetWorker Management Console.

Would you like to configure another jukebox? (yes/no) [no]no

Using the VTL with NetWorker

Once you’ve got the jukebox created, start up with a simple command – plain old nsrjb:

[root@tara mhvtl]# nsrjb

Jukebox MHVTL: (Ready to accept commands)
14118:nsrjb: No volumes found in the media database...continuing.
slot  volume                      pool  barcode   volume id  recyclable
 1: -*                                  800843S3  -                    
 2: -*                                  800844S3  -                    
 3: -*                                  800845S3  -                    
 4: -*                                  800846S3  -                    
 5: -*                                  800847S3  -                    
 6: -*                                  800848S3  -                    
 7: -*                                  800849S3  -                    
 8: -*                                  800850S3  -                    
 9: -*                                  800851S3  -                    
10: -*                                  800852S3  -                    
11: -*                                  800853S3  -                    
12: -*                                  800854S3  -                    
13: -*                                  800855S3  -                    
14: -*                                  800856S3  -                    
15: -*                                  800857S3  -                    
16: -*                                  800858S3  -                    
17: -*                                  800859S3  -                    
18: -*                                  800860S3  -                    
19: -*                                  800861S3  -                    
20: -*                                  800862S3  -                    
21:                                                                        
22:                                                                        
23:                                                                        
24:                                                                        
25:                                                                        
26:                                                                        
27:                                                                        
28:                                                                        
29:                                                                        
30:                                                                        
31: -*                                  CLN001L1  -                    
32: Cleaning Tape (5 uses left)         CLN002L1  -                    
 *not registered in the NetWorker media data base

drive 1 (/dev/nst0) slot   :

(Note that I ran that about 30 seconds after the jukebox was created, so it had already transitioned into the “Ready to accept commands” state.)

The VTL isn’t built for speed, but it’s still zippy enough for lab testing. Here’s the output from a verbose label command, with timestamps added:

[root@tara mhvtl]# date ; nsrjb -Lvvv -b Default -S 1; date
Sat Jul 11 09:09:53 EST 2009
setting verbosity level to `3'
Info: Preparing to load volume `-' from slot 1 into device `/dev/nst0'.
Info: Loading volume `-' from slot `1' into device `/dev/nst0'.
Info: Load sleep for 5 seconds.
Info: Performing operation `Verify label' on device `/dev/nst0'.
Info: Operation `Verify label' in progress on device `/dev/nst0'
Info: Cannot read the current volume label `Tape label read for volume
 ? in pool ?, is not recognised by Networker: Input/output error'.
Info: nsrmmgd assumes the volume is unlabeled and will write a new label.
Info: Performing operation `Label without mount' on device `/dev/nst0'.
Info: Operation `Label without mount' in progress on device `/dev/nst0'
Info: Label: `800843S3', pool: `Default', capacity: `<NULL>'.
Info: Performing operation `Eject' on device `/dev/nst0'.
Info: Operation `Eject' in progress on device `/dev/nst0'
Info: Eject sleep for 5 seconds.
Info: Preparing to unload volume `800843S3' from device `/dev/nst0' to slot 1.
Info: Unloading volume `800843S3' from device `/dev/nst0' to slot 1.
Info: Unload sleep for 5 seconds.
Sat Jul 11 09:10:33 EST 2009

Writing a backup, we get the obligitory screen-shot:

Screenshot showing backup to Mark's VTL
Screenshot showing backup to Mark's VTL

It’s still about recovery

Even though this is for lab usage only, we still need to make sure that what we write to virtual tape is what we get back. So after that backup, I ran a recovery, restoring the backup to another location. Performing checksums against the source and the original yielded:

[root@tara /]# md5sum /usr/share/doc/crash-4.0/README
/backup/recover_test/doc/crash-4.0/README
73568e4d9e09ce2847673dd5156cb571  /usr/share/doc/crash-4.0/README
73568e4d9e09ce2847673dd5156cb571  /backup/recover_test/doc/crash-4.0/README

Caveats

In conclusion, I’d like to offer a few caveats:

  1. In case I’ve not mentioned this enough, this is not a production VTL. Please don’t think I’m advocating it as a replacement to a full VTL.
  2. The VTL will let you backup as much as you want to any piece of media, so be careful with space management – it’s on your own head to manage media sizes, etc.
  3. The default placement of the VTL object files (i.e., media) is in /opt/vtl, which is likely to be in the root filesystem on an average Linux host. Thus, if you don’t keep an eye on media capacity, you’re going to overrun your root filesystem (or whatever filesystem the VTL data is stored in).
  4. You still need either a NetWorker autochanger license or to be running in eval mode to be able to use/configure this.

Again, if I haven’t said this enough – this is for lab testing.

[2009-07-13 Edit]

Proving that sometimes I just don’t read the documentation sufficiently, with a little bit more digging I discovered that Mark has also implemented a mktape command, that creates media with user nominated sizes. By stopping NetWorker, deleting the VTL media, recreating the media with the nominated sizes then restarting the VTL and NetWorker, you can control capacity using this VTL. Most importantly, that means you can simulate tape changes.

[2009-11-15]

See here for an update article covering multiple drive support, now that Mark has this working in a way which is compatible with NetWorker.


* Note – acknowledging I’ve adjusted the spacing slightly in the inquire output to ensure it fits on the average browser. That’s the only manipulation that was done though.

32 thoughts on “Carry a jukebox with you (if you’re using Linux)”

  1. Hi
    Can You publish the “step by step” installation of those VTL please? I’m trying to create one in my test environment. Do you try to connect this VTL to other hosts via iSCSI?
    Regards from Poland

    1. I’ve been configuring the VTL only with local storage – I don’t think Mark’s VTL is yet at the stage of supporting iSCSI. I’ll try to remember this weekend to fire up a new/clean virtual machine and run through the installation/configuration process again and document.

  2. Default media capacity can also be set in /etc/mhvtl/mhvtl.conf

    Look for the “CAPACITY=XXX” where XXX is defined in MBytes

    New media will be created from the rc script using this default size – if it does not currently exist in /opt/vtl/

  3. Hi,

    I installed mhvtl and created jukebox (3times). But I still have a one big problem.

    I created jukebox without problems. I see all tapes and drive.

    I can load unload tape.
    I can label tape.

    But my problem is that I can not read the label.

    here is error from daemon.log:

    67985 09/23/2009 04:09:08 PM nsrmmgd Loading volume `800843S3′ from slot `1′ into device `/dev/nst0′.
    38752 09/23/2009 04:09:15 PM nsrd /dev/nst0 Verify label operation in progress
    38758 09/23/2009 04:09:17 PM nsrd media warning: /dev/nst0 reading: no tape label found
    72504 09/23/2009 04:09:17 PM nsrd /dev/nst0 verify label operation failed: no tape label found
    0 09/23/2009 04:09:18 PM nsrmmgd 09/23/09 16:09:18 nsrmmgd: [Jukebox `brusko_virtual’, operation # 2]. Expected volume `800843S3′ in slot `1′. The actual volume is `’.
    7224 09/23/2009 04:09:18 PM nsrd [Jukebox `brusko_virtual’, operation # 2]. Expected volume `800843S3′ in slot `1′. The actual volume is `’.
    38752 09/23/2009 04:09:18 PM nsrd /dev/nst0 Eject operation in progress
    67986 09/23/2009 04:09:25 PM nsrmmgd Unloading volume `-‘ from device `/dev/nst0′ to slot 1.
    7224 09/23/2009 04:09:31 PM nsrd [Jukebox `brusko_virtual’, operation # 2]. Expected volume `800843S3′ in slot `1′. The actual volume is `’.
    0 09/23/2009 04:09:33 PM nsrmmdbd pools supported: Default;
    12361 09/23/2009 04:09:35 PM nsrd [Jukebox `brusko_virtual’, operation # 2]. Finished with status: failed

    Can you help me?

    I am using opensuse 11.1 and networker 74sp5

      1. after of mount tape from slot 1

        Jukebox brusko_virtual: (Ready to accept commands)
        slot volume pool barcode volume id recyclable
        1: -* 800843S3 –
        2: 800844S3 Default 800844S3 4290456513 no
        3: 800845S3 Default 800845S3 4273679332 no
        4: 800846S3 Default 800846S3 4256902147 no
        5: 800847S3 Default 800847S3 4240124965 no
        6: 800848S3 Default 800848S3 4223347780 no
        7: 800849S3 Default 800849S3 4206570598 no
        8: 800850S3 Default 800850S3 4189793415 no
        9: 800851S3 Default 800851S3 4173016232 no
        10: 800852S3 Default 800852S3 4156239051 no
        11: 800853S3 Default 800853S3 4139461870 no
        12: 800854S3 Default 800854S3 4122684685 no
        13: 800855S3 Default 800855S3 4105907504 no
        14: 800856S3 Default 800856S3 4089130320 no
        15: 800857S3 Default 800857S3 4072353137 no
        16: 800858S3 Default 800858S3 4055575955 no
        17: 800859S3 Default 800859S3 4038798771 no
        18: 800860S3 Default 800860S3 4022021587 no
        19: 800861S3 Default 800861S3 4005244405 no
        20: 800862S3 Default 800862S3 3988467221 no
        21:
        22:
        23:
        24:
        25:
        26:
        27:
        28:
        29:
        30:
        31:
        32: Cleaning Tape (5 uses left) CLN002L1 –
        *not registered in the NetWorker media data base

        drive 1 (/dev/nst0) slot :
        brusko-1:~ #

        here is output from mount operation (load in working, I have problem only with reading label from tape):

        brusko-1:~ # nsrjb -lvv -S1 -f /dev/nst0
        setting verbosity level to `2′
        Info: Using pool `Default’.
        Info: Loading volume `800843S3′ from slot `1′ into device `/dev/nst0′.
        Info: Load sleep for 5 seconds.
        Info: Performing operation `Verify label’ on device `/dev/nst0′.
        Info: Operation `Verify label’ in progress on device `/dev/nst0′
        Info: Ejecting media.
        Info: Performing operation `Eject’ on device `/dev/nst0′.
        Info: Operation `Eject’ in progress on device `/dev/nst0′
        Info: Eject sleep for 5 seconds.
        Info: Unloading volume `-‘ from device `/dev/nst0′ to slot 1.
        Error: Expected volume `800843S3′ in slot `1′. The actual volume is `’.
        Info: Unload sleep for 5 seconds.
        Error: Expected volume `800843S3′ in slot `1′. The actual volume is `’.
        39077:nsrjb: error, Jukebox command terminated with errors.

        1. OK your output indicates problems with slot 1 – out of curiosity what happens if you attempt a load operation on slot 2?

          Is there any chance you configured the drive to be something other than SDLT600?

          What happens if you load without mounting the virtual tape in slot 1 and running a scanner -m against it?

          E.g.,
          nsrjb -nl -S 1
          scanner -mnv /dev/nst0

          1. here is output:

            brusko-1:~ # nsrjb -lvv -n -S1 -f /dev/nst0 && scanner -mnv /dev/nst0
            setting verbosity level to `2′
            Info: Loading volume `-‘ from slot `1′ into device `/dev/nst0’.
            8909:scanner: using ‘/dev/nst0′ as the device name
            9000:scanner: /dev/nst0: opened for reading
            9003:scanner: /dev/nst0: rewinding
            9067:scanner: Rewinding done
            8968:scanner: Reading the label…
            8969:scanner: Reading the label done
            39074:scanner: NetWorker notice: no tape label found

            39074:scanner: NetWorker notice: no tape label found

            8944:scanner: scanning for valid records…
            8945:scanner: read: 0 bytes
            9000:scanner: /dev/nst0: opened for reading
            8945:scanner: read: 0 bytes
            8945:scanner: read: -1 bytes : Input/output error8946:scanner: Cannot continue
            8947:scanner: No valid tape records found
            brusko-1:~ #
            brusko-1:~ #
            brusko-1:~ # nsrjb -lvv -n -S2 -f /dev/nst0 && scanner -mnv /dev/nst0
            setting verbosity level to `2′
            Info: Performing operation `Eject’ on device `/dev/nst0′.
            Info: Operation `Eject’ in progress on device `/dev/nst0′
            Info: Eject sleep for 5 seconds.
            Info: Unloading volume `-‘ from device `/dev/nst0′ to slot 1.
            Info: Unload sleep for 5 seconds.
            Info: Loading volume `800844S3′ from slot `2′ into device `/dev/nst0’.
            8909:scanner: using ‘/dev/nst0′ as the device name
            9000:scanner: /dev/nst0: opened for reading
            9003:scanner: /dev/nst0: rewinding
            9067:scanner: Rewinding done
            8968:scanner: Reading the label…
            8969:scanner: Reading the label done
            39074:scanner: NetWorker notice: no tape label found

            39074:scanner: NetWorker notice: no tape label found

            8944:scanner: scanning for valid records…
            8945:scanner: read: 0 bytes
            9000:scanner: /dev/nst0: opened for reading
            8945:scanner: read: 0 bytes
            8945:scanner: read: -1 bytes : Input/output error8946:scanner: Cannot continue
            8947:scanner: No valid tape records found
            brusko-1:~ #

            I have the same problem for all tapes. I cal load tapes but I can not mount tapes. I have problem with reading label…

            I did not try to configure different virtual drive. I am using standard configuration for DL600

            brusko-1:~ # mminfo -a -r’type’
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            sdlt600
            brusko-1:~ #

            scsidev@2.1.0:QUANTUM SDLT600 5500|Tape, /dev/nst0
            S/N: ZF7584364
            ATNN=QUANTUM SDLT600 ZF7584364
            WWNN=3735383433363420

          2. Is your environment virtual, or a physical machine? I’ve had less success with physical machines – every time I’ve done a successful configuration it’s been in a VM. Mark assures me however that it does work on physical machines, I’ve just not been able to get it there myself. It’s possible there’s something interfering from within OpenSuSE as well. Is it at all possible to try to setup a CentOS VM to see if the problem still occurs? I’d suggest you may want to touch base with Mark over at http://linuxvtl.googlepages.org in case he can suggest something, or walk you through the debugging options (if he’s got time) so that he can determine what’s happening at the SCSI layer when the label is being written.

          3. The environment is physical machine but I tested this on virtual machine too (again with opensuse) and I have the same problem.

            I will install CentOS to my virtual machine and test virtual lib on the CentOS.

            I will inform you after this …
            But today I don’t have a time for playing (lot of real problems ..)

  4. Hello,

    I installed CentOS 5.3 to my virtual. and The mhvtl it’s working without any problems (I can mount tape and read data from tape) 🙂

  5. 2.6.30.5-43.fc11.x86_64 #1 SMP:

    make -C /lib/modules/2.6.30.5-43.fc11.x86_64/build SUBDIRS=/store/mhvtl/mhvtl-0.16/kernel modules
    make[1]: Entering directory `/usr/src/kernels/2.6.30.5-43.fc11.x86_64′
    CC [M] /store/mhvtl/mhvtl-0.16/kernel/mhvtl.o
    In file included from /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c:331:
    /store/mhvtl/mhvtl-0.16/kernel/fetch27.c: In function âvtl_sg_copy_userâ:
    /store/mhvtl/mhvtl-0.16/kernel/fetch27.c:33: warning: ignoring return value of âcopy_to_userâ, declared with attribute warn_unused_result
    /store/mhvtl/mhvtl-0.16/kernel/fetch27.c:35: warning: ignoring return value of âcopy_from_userâ, declared with attribute warn_unused_result
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c: At top level:
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c:1385: error: unknown field âbus_idâ specified in initializer
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c:1385: error: expected â=â before string constant
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c:1385:22: warning: missing terminating ” character
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c:1385: error: missing terminating ” character
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c: In function âvtl_add_adapterâ:
    /store/mhvtl/mhvtl-0.16/kernel/mhvtl.c:1435: error: âstruct deviceâ has no member named âbus_idâ
    make[2]: *** [/store/mhvtl/mhvtl-0.16/kernel/mhvtl.o] Error 1
    make[1]: *** [_module_/store/mhvtl/mhvtl-0.16/kernel] Error 2
    make[1]: Leaving directory `/usr/src/kernels/2.6.30.5-43.fc11.x86_64′
    make: *** [default] Error 2

  6. I have tried installing VTL (ver mhvtl-2009-10-09.tgz) on CentOS 5.3. Also made the changes in the device.conf and library_contents file as mentioned above. However here is what I receive when I try to start the VTL using init script:
    **************
    [root@storm etc]# /etc/init.d/mhvtl start
    FATAL: Module mhvtl not found.
    ls: /proc/scsi/mhvtl: No such file or directory
    Incorrect (or no) kernel module loaded to feed these daemons.

    Need mhvtl kernel module version at least 0.16.0

    Please see http://linuxvtl.googlepages.com
    **************

    Kindly let me know how do I go about getting this to work…

  7. Hi Preston & Tomas,

    Please feel free in contacting me with these problems. While I’m no NetWorker expert, I may be able to point you in the right direction (from the library/drive point of view).

    I do know the latest OpenSuSE and NetBackup 6.x does not get along. The format of /sys changed somewhat (can’t remember exact details), but the result is NetBackup does not see the tape drives correctly. NetWorker may be suffering as well.

    As a debugging tip, you can shutdown a selected daemon “vtlcmd exit” or “vtlcmd library exit”, then start that daemon in debug mode “vtltape -q -d” or “vtllibrary -d”.

  8. I beleive I installed all corectly. My purpose of using VTL is not to use with Networker. We are trying to simulate a block device or file/Directory as tape device so oracle can dump data on it. I did mt status on st0 and nst0, but they returned with No Medium.

    How the virtual tapes on /opt/vtl/* is mapped on /dev?

    Any help/hint much appreciated.

    Thanks!!

    ~LA

    1. Once the VTL is setup, you still need to manage loading/unloading virtual media into the virtual drives – e.g., the ‘mtx’ package. Alternatively, the vtlcmd program may be able to be used for media movement, but I currently am between locations with VTLs setup, so I can’t answer this for sure.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.