MHVTL
MHVTL ist eine Software zum Emulieren einer Tape Library, also eine virtuelle Tape Library (VTL). Die VTL kan via iSCSI auch anderen Hosts per LAN zur Verfügung gestellt werden. D.h. eine Backup Software muß nicht zwingend auf dem selben Host laufen.
MHVTL ist für Backup Labor- und Testumgebungen vorgesehen, es gibt keinen kommerziellen Support. Die Software wurde bereits mit zahlreichen Backup Produkten erfolgreich getestet, u.a. EMC Networker, IBM TSM, Symantec Netbackup, etc..
MHVTL ist OpenSource und unter GPL v2 lizensiert.
Voraussetzungen
MHVTL läuft auf allen Linux Distributionen. Ich verwende für meine Testumgebung openSUSE 12.3 mit installiertem git (Versionsverwaltung), gcc (C Compiler) und kernel-* (Kernelquellen).
Wer den Speicherplatz für die virtuellen Bänder auf eine eigene Partition oder Festplatte, separiert von / haben möchte, muß einen Mountpoint /opt/mhvtl mit entsprechend Platz bereitstellen.
Nach der Betriebssysteminstallation lade ich ich den SourceCode von MHVTL herunter.
os01:~ # cat /etc/issue Welcome to openSUSE 12.3 "Dartmouth" - Kernel \r (\l).os01:~ # pwd /root os01:~ # mkdir mhvtl os01:~ # cd mhvtl os01:~/mhvtl # git init Initialized empty Git repository in /root/mhvtl/.git/ os01:~/mhvtl # git pull http://github.com/markh794/mhvtl.git remote: Counting objects: 5062, done. remote: Compressing objects: 100% (1562/1562), done. remote: Total 5062 (delta 3487), reused 5062 (delta 3487) Receiving objects: 100% (5062/5062), 2.61 MiB | 1.55 MiB/s, done. Resolving deltas: 100% (3487/3487), done. From http://github.com/markh794/mhvtl * branch HEAD -> FETCH_HEAD os01:~/mhvtl # ls -l total 120 drwxr-xr-x 8 root root 4096 Jul 4 10:58 .git -rw-r--r-- 1 root root 350 Jul 4 10:58 .gitignore -rw-r--r-- 1 root root 18487 Jul 4 10:58 COPYING -rw-r--r-- 1 root root 34540 Jul 4 10:58 ChangeLog -rw-r--r-- 1 root root 5249 Jul 4 10:58 INSTALL -rw-r--r-- 1 root root 2398 Jul 4 10:58 Makefile -rw-r--r-- 1 root root 647 Jul 4 10:58 README drwxr-xr-x 3 root root 4096 Jul 4 10:58 doc drwxr-xr-x 2 root root 4096 Jul 4 10:58 etc drwxr-xr-x 2 root root 4096 Jul 4 10:58 include drwxr-xr-x 2 root root 4096 Jul 4 10:58 kernel drwxr-xr-x 2 root root 4096 Jul 4 10:58 man -rw-r--r-- 1 root root 3606 Jul 4 10:58 mhvtl-utils.spec drwxr-xr-x 3 root root 4096 Jul 4 10:58 scripts -rw-r--r-- 1 root root 207 Jul 4 10:58 todo drwxr-xr-x 2 root root 4096 Jul 4 10:58 usr drwxr-xr-x 2 root root 4096 Jul 4 10:58 webgui
Danach wird geprüft ob die Version der Kernel-Quellen mit dem laufenden Kernel zusammenpasst.
os01:~/mhvtl # rpm -qa|grep kernel kernel-default-devel-3.7.10-1.1.1.x86_64 kernel-default-3.7.10-1.16.1.x86_64 kernel-source-3.7.10-1.16.1.noarch kernel-desktop-3.7.10-1.1.1.x86_64 kernel-devel-3.7.10-1.16.1.noarch kernel-xen-devel-3.7.10-1.16.1.x86_64 kernel-default-devel-3.7.10-1.16.1.x86_64 kernel-source-3.7.10-1.1.1.noarch kernel-syms-3.7.10-1.1.1.x86_64 kernel-desktop-3.7.10-1.16.1.x86_64 kernel-firmware-20130114git-1.2.1.noarch kernel-syms-3.7.10-1.16.1.x86_64 kernel-desktop-devel-3.7.10-1.1.1.x86_64 patterns-openSUSE-devel_kernel-12.3-7.10.1.x86_64 kernel-desktop-devel-3.7.10-1.16.1.x86_64 kernel-default-3.7.10-1.1.1.x86_64 kernel-xen-devel-3.7.10-1.1.1.x86_64 kernel-devel-3.7.10-1.1.1.noarch os01:~/mhvtl # uname -a Linux os01.site 3.7.10-1.16-desktop #1 SMP PREEMPT Fri May 31 20:21:23 UTC 2013 (97c14ba) x86_64 x86_64 x86_64 GNU/Linux
MHVTL benötigt sg3_utils, zlib-devel und lzo-devel – falls nicht vorhanden muß das nachinstalliert werden.
os01:~/mhvtl # cd kernel os01:~/mhvtl/kernel # rpm -qa|grep sg3_utils sg3_utils-1.33-5.1.1.x86_64 os01:~/mhvtl/kernel # rpm -qa|grep zlib-devel zlib-devel-1.2.7-7.1.1.x86_64 os01:~/mhvtl # zypper se lzo Retrieving repository 'openSUSE-12.3-Update' metadata .....................................[done] Building repository 'openSUSE-12.3-Update' cache ..........................................[done] Loading repository data... Reading installed packages... S | Name | Summary | Type --+-----------------+------------------------------------------------+-------- i | liblzo2-2 | A Real-Time Data Compression Library | package | liblzo2-2-32bit | A Real-Time Data Compression Library | package | lzo-devel | Development files for lzo | package | lzo-devel-32bit | Development files for lzo | package | lzop | The fastest compressor and decompressor around | package os01:~/mhvtl # zypper install lzo-devel Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: lzo-devel 1 new package to install. Overall download size: 42.2 KiB. After the operation, additional 207.8 KiB will be used. Continue? [y/n/?] (y): y Retrieving package lzo-devel-2.06-9.1.1.x86_64 (1/1), 42.2 KiB (207.8 KiB unpacked) Retrieving: lzo-devel-2.06-9.1.1.x86_64.rpm ...............................................[done] (1/1) Installing: lzo-devel-2.06-9.1.1 ....................................................[done] os01:~/mhvtl # zypper se zlib Loading repository data... Reading installed packages... S | Name | Summary | Type --+-------------------------+---------------------------------------------------------+-------- | ghc-zlib | Haskell gzip and zlib formats library | package | ghc-zlib-devel | Haskell gzip and zlib formats library development files | package | jzlib | JZlib re-implementation of zlib in pure Java | package | jzlib-demo | JZlib re-implementation of zlib in pure Java | package | jzlib-javadoc | JZlib re-implementation of zlib in pure Java | package | php5-zlib | PHP5 Extension Module | package i | zlib-devel | Include Files and Libraries mandatory for Development | package | zlib-devel-32bit | Include Files and Libraries mandatory for Development | package | zlib-devel-static | Include Files and Libraries mandatory for Development | package | zlib-devel-static-32bit | Include Files and Libraries mandatory for Development | package | zlibrary | Cross-platform GUI library | package | zlibrary-devel | Development files for zlibrary | package | zlibrary-ui-gtk | GTK+ interface module for ZLibrary | package | zlibrary-ui-qt | Qt4 interface module for ZLibrary | package
Falls kein eigener Mountpoint erzeugt wurde muß jetzt das Verzeichnis /opt/mhvtl angelegt werden. Außerdem ist ein User/Gruppe vtl anzulegen. Danach sind Berechtigungen für User/Gruppe zu setzen.
os01:~/mhvtl # mkdir /opt/mhvtl os01:~/mhvtl # groupadd vtl os01:~/mhvtl # useradd -c "mhvtl user" -g vtl vtl os01:~/mhvtl # chown vtl:vtl /opt/mhvtl
Installation
Nun ist MHVTL zu kompilieren, installieren und zu starten.
os01:~/mhvtl # make ... os01:~/mhvtl # make install ... os01:~/mhvtl # /etc/init.d/mhvtl start
Wie man mit dem Befehl lsscsi sieht wurden laut MHVTL Standardkonfiguration 2 VTLs angelegt.
os01:/etc/mhvtl # lsscsi -g [1:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 /dev/sg0 [2:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda /dev/sg1 [3:0:0:0] mediumx STK L700 0104 /dev/sch0 /dev/sg10 [3:0:1:0] tape IBM ULT3580-TD5 0104 /dev/st0 /dev/sg2 [3:0:2:0] tape IBM ULT3580-TD5 0104 /dev/st1 /dev/sg3 [3:0:3:0] tape IBM ULT3580-TD4 0104 /dev/st2 /dev/sg4 [3:0:4:0] tape IBM ULT3580-TD4 0104 /dev/st3 /dev/sg5 [3:0:8:0] mediumx STK L80 0104 /dev/sch1 /dev/sg11 [3:0:9:0] tape STK T10000B 0104 /dev/st4 /dev/sg6 [3:0:10:0] tape STK T10000B 0104 /dev/st5 /dev/sg7 [3:0:11:0] tape STK T10000B 0104 /dev/st6 /dev/sg8 [3:0:12:0] tape STK T10000B 0104 /dev/st7 /dev/sg9
Konfiguration
Die Konfigurationsdateien von MHVTL liegen unter /etc/mhvtl.
os01:/etc/mhvtl # ls -l total 16 -rw-r--r-- 1 vtl vtl 3328 Jul 4 13:39 device.conf -rw-r--r-- 1 vtl vtl 1566 Jul 4 13:39 library_contents.10 -rw-r--r-- 1 vtl vtl 1646 Jul 4 13:39 library_contents.30 -rw-r--r-- 1 vtl vtl 206 Jul 4 13:39 mhvtl.conf
In der Datei device.conf liegen die Definitionen der virtuellen Bandroboter und Laufwerke:
Die VTL 10 ist eine Storagetek L700 mit 2 IBM LTO5- und 2 IBM LTO4-Laufwerken. Die VTL 30 ist eine Storagetek L80 mit 4 Storagetek T1000B-Laufwerken.
os01:/etc/mhvtl # cat device.conf VERSION: 5 # VPD page format: # <page #> <Length> <x> <x+1>... <x+n> # NAA format is an 8 hex byte value seperated by ':' # Note: NAA is part of inquiry VPD 0x83 # # Each 'record' is separated by one (or more) blank lines. # Each 'record' starts at column 1 # Serial num max len is 10. # Compression: factor X enabled 0|1 # Where X is zlib compression factor 1 = Fastest compression # 9 = Best compression # enabled 0 == off, 1 == on # # fifo: /var/tmp/mhvtl # If enabled, data must be read from fifo, otherwise daemon will block # trying to write. # e.g. cat /var/tmp/mhvtl (in another terminal) Library: 10 CHANNEL: 00 TARGET: 00 LUN: 00 Vendor identification: STK Product identification: L700 Unit serial number: XYZZY_A NAA: 10:22:33:44:ab:00:00:00 Home directory: /opt/mhvtl Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 11 CHANNEL: 00 TARGET: 01 LUN: 00 Library ID: 10 Slot: 01 Vendor identification: IBM Product identification: ULT3580-TD5 Unit serial number: XYZZY_A1 NAA: 10:22:33:44:ab:00:01:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 12 CHANNEL: 00 TARGET: 02 LUN: 00 Library ID: 10 Slot: 02 Vendor identification: IBM Product identification: ULT3580-TD5 Unit serial number: XYZZY_A2 NAA: 10:22:33:44:ab:00:02:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 13 CHANNEL: 00 TARGET: 03 LUN: 00 Library ID: 10 Slot: 03 Vendor identification: IBM Product identification: ULT3580-TD4 Unit serial number: XYZZY_A3 NAA: 10:22:33:44:ab:00:03:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 14 CHANNEL: 00 TARGET: 04 LUN: 00 Library ID: 10 Slot: 04 Vendor identification: IBM Product identification: ULT3580-TD4 Unit serial number: XYZZY_A4 NAA: 10:22:33:44:ab:00:04:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Library: 30 CHANNEL: 00 TARGET: 08 LUN: 00 Vendor identification: STK Product identification: L80 Unit serial number: XYZZY_B NAA: 30:22:33:44:ab:00:08:00 Home directory: /opt/mhvtl Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 31 CHANNEL: 00 TARGET: 09 LUN: 00 Library ID: 30 Slot: 01 Vendor identification: STK Product identification: T10000B Unit serial number: XYZZY_B1 NAA: 30:22:33:44:ab:00:09:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 32 CHANNEL: 00 TARGET: 10 LUN: 00 Library ID: 30 Slot: 02 Vendor identification: STK Product identification: T10000B Unit serial number: XYZZY_B2 NAA: 30:22:33:44:ab:00:10:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 33 CHANNEL: 00 TARGET: 11 LUN: 00 Library ID: 30 Slot: 03 Vendor identification: STK Product identification: T10000B Unit serial number: XYZZY_B3 NAA: 30:22:33:44:ab:00:11:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl Drive: 34 CHANNEL: 00 TARGET: 12 LUN: 00 Library ID: 30 Slot: 04 Vendor identification: STK Product identification: T10000B Unit serial number: XYZZY_B4 NAA: 30:22:33:44:ab:00:12:00 Compression: factor 1 enabled 1 Compression type: lzo Backoff: 400 # fifo: /var/tmp/mhvtl
In der Datei library_contents.10 befindet sich die Bestückung der VTL 10. Diese enthält 4 leere Laufwerke, einen leeren Picker (Greifarm), 4 leere Ein-/Ausgabe-Schächte (Media Access Ports) und teilweise bestückte Schächte (Nr. 1-39). Anhand der Endung des Barcodes der virt. Bänder erkennt man ob es sich um LTO4 (L4) oder LTO5 (L5) handelt. Barcodes, die mit CLN beginnen bezeichnen Reinigungsbänder (Cleaning).
os01:/etc/mhvtl # cat library_contents.10 Drive 1: Drive 2: Drive 3: Drive 4: Picker 1: MAP 1: MAP 2: MAP 3: MAP 4: # Slot 1 - ?, no gaps # Slot N: [barcode] # [barcode] # a barcode is comprised of three fields: [Leading] [identifier] [Trailing] # Leading "CLN" -- cleaning tape # Leading "W" -- WORM tape # Leading "NOBAR" -- will appear to have no barcode # If the barcode is at least 8 character long, then the last two characters are Trailing # Trailing "S3" - SDLT600 # Trailing "X4" - AIT-4 # Trailing "L1" - LTO 1, "L2" - LTO 2, "L3" - LTO 3, "L4" - LTO 4, "L5" - LTO 5 # Trailing "LT" - LTO 3 WORM, "LU" - LTO 4 WORM, "LV" - LTO 5 WORM # Trailing "L6" - LTO 6, "LW" - LTO 6 WORM # Trailing "TA" - T10000+ # Trailing "TZ" - 9840A, "TY" - 9840B, "TX" - 9840C, "TW" - 9840D # Trailing "TV" - 9940A, "TU" - 9940B # Trailing "JA" - 3592+ # Trailing "JB" - 3592E05+ # Trailing "JW" - WORM 3592+ # Trailing "JX" - WORM 3592E05+ # Trailing "D7" - DLT7000 media (DLT IV) # Slot 1: E01001L4 Slot 2: E01002L4 Slot 3: E01003L4 Slot 4: E01004L4 Slot 5: E01005L4 Slot 6: E01006L4 Slot 7: E01007L4 Slot 8: E01008L4 Slot 9: E01009L4 Slot 10: E01010L4 Slot 11: E01011L4 Slot 12: E01012L4 Slot 13: E01013L4 Slot 14: E01014L4 Slot 15: E01015L4 Slot 16: E01016L4 Slot 17: E01017L4 Slot 18: E01018L4 Slot 19: E01019L4 Slot 20: E01020L4 Slot 21: Slot 22: CLN101L4 Slot 23: CLN102L5 Slot 24: Slot 25: Slot 26: Slot 27: Slot 28: Slot 29: Slot 30: F01030L5 Slot 31: F01031L5 Slot 32: F01032L5 Slot 33: F01033L5 Slot 34: F01034L5 Slot 35: F01035L5 Slot 36: F01036L5 Slot 37: F01037L5 Slot 38: F01038L5 Slot 39: F01039L5
In der Datei library_contents.30 befindet sich die Bestückung der VTL 30. Diese enthält 4 leere Laufwerke, einen leeren Picker (Greifarm), 4 leere Ein-/Ausgabe-Schächte (Media Access Ports) und teilweise bestückte Schächte (Nr. 1-40). Anhand der Endung TA des Barcodes der virt. Bänder erkennt, daß es sich um T1000-Bänder handelt. Barcodes, die mit CLN beginnen bezeichnen Reinigungsbänder (Cleaning).
os01:/etc/mhvtl # cat library_contents.30 Drive 1: Drive 2: Drive 3: Drive 4: Picker 1: MAP 1: MAP 2: MAP 3: MAP 4: # Slot 1 - ?, no gaps # Slot N: [barcode] # [barcode] # a barcode is comprised of three fields: [Leading] [identifier] [Trailing] # Leading "CLN" -- cleaning tape # Leading "W" -- WORM tape # Leading "NOBAR" -- will appear to have no barcode # If the barcode is at least 8 character long, then the last two characters are Trailing # Trailing "S3" - SDLT600 # Trailing "X4" - AIT-4 # Trailing "L1" - LTO 1, "L2" - LTO 2, "L3" - LTO 3, "L4" - LTO 4, "L5" - LTO 5 # Trailing "LT" - LTO 3 WORM, "LU" - LTO 4 WORM, "LV" - LTO 5 WORM # Trailing "L6" - LTO 6, "LW" - LTO 6 WORM # Trailing "TA" - T10000+ # Trailing "TZ" - 9840A, "TY" - 9840B, "TX" - 9840C, "TW" - 9840D # Trailing "TV" - 9940A, "TU" - 9940B # Trailing "JA" - 3592+ # Trailing "JB" - 3592E05+ # Trailing "JW" - WORM 3592+ # Trailing "JX" - WORM 3592E05+ # Trailing "D7" - DLT7000 media (DLT IV) # Slot 1: G03001TA Slot 2: G03002TA Slot 3: G03003TA Slot 4: G03004TA Slot 5: G03005TA Slot 6: G03006TA Slot 7: G03007TA Slot 8: G03008TA Slot 9: G03009TA Slot 10: G03010TA Slot 11: G03011TA Slot 12: G03012TA Slot 13: G03013TA Slot 14: G03014TA Slot 15: G03015TA Slot 16: G03016TA Slot 17: G03017TA Slot 18: G03018TA Slot 19: G03019TA Slot 20: G03020TA Slot 21: G03021TA Slot 22: G03022TA Slot 23: G03023TA Slot 24: G03024TA Slot 25: G03025TA Slot 26: G03026TA Slot 27: G03027TA Slot 28: G03028TA Slot 29: G03029TA Slot 30: G03030TA Slot 31: G03031TA Slot 32: G03032TA Slot 33: G03033TA Slot 34: G03034TA Slot 35: G03035TA Slot 36: G03036TA Slot 37: G03037TA Slot 38: G03038TA Slot 39: G03039TA Slot 40: CLN303TA
In der Datei mhvtl.conf kann man die Standardkapazität für virt. Bänder definieren. Die Voreinstellungbeträgt 500MB.
os01:/etc/mhvtl # cat mhvtl.conf # Home directory for config file(s) MHVTL_CONFIG_PATH=/etc/mhvtl # Default media capacity (500 M) CAPACITY=500 # Set default verbosity [0|1|2|3] VERBOSE=1 # Set kernel module debuging [0|1] VTL_DEBUG=0
Im Verzeichnis /opt/mhvtl werden beim Start des MHVTL-daemons die Verzeichnisstrukturen und Dateien für die virtuellen Bänder angelegt. Für jedes Band existiert ein Verzeichnis.
os01:/etc/mhvtl # cd /opt/mhvtl os01:/opt/mhvtl # ls -l total 288 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 CLN101L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 CLN102L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 CLN303TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01001L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01002L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01003L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01004L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01005L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01006L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01007L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01008L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01009L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01010L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01011L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01012L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01013L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01014L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01015L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01016L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01017L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01018L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01019L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 E01020L4 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01030L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01031L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01032L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01033L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01034L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01035L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01036L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01037L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01038L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 F01039L5 drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03001TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03002TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03003TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03004TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03005TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03006TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03007TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03008TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03009TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03010TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03011TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03012TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03013TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03014TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03015TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03016TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03017TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03018TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03019TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03020TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03021TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03022TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03023TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03024TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03025TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03026TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03027TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03028TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03029TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03030TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03031TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03032TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03033TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03034TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03035TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03036TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03037TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03038TA drwxrwx--- 2 vtl vtl 4096 Jul 4 13:45 G03039TA os01:/opt/mhvtl # ls -l E01001L4 total 576 -rw-rw---- 1 vtl vtl 68308 Jul 4 14:58 data -rw-rw---- 1 vtl vtl 513024 Jul 4 14:58 indx -rw-rw---- 1 vtl vtl 1540 Jul 4 14:58 meta
Wenn man eine eigene VTL-Konfiguration wünscht ist dies einfach zu bewerkstelligen:
- MHVTL daemon stoppen: /etc/init.d/mhvtl stop
- bisherige Bänder löschen: rm -r /opt/mhvtl/*
- Konfigurationsdateien in /etc/mhvtl anpassen
- MHVTL daemon starten: /etc/init.d/mhvtl start
MHVTL bringt ein eigenes Bedienkommando vtlcmd mit. Damit kann man virt. Bänder aus den Ein-/Ausgabefächern in Schächte laden, etc.. Mit mktape lassen sich neue Bänder erstellen. Genauere Infos enthält das Handbuch (man vtlcmd, man mktape).
Beispiel: neues LTO4-Datenband erzeugen und in Ein-/Ausgabefach der VTL 10 stecken.
os01:/etc/mhvtl # mktape -m E01021L4 -s 500 -t data -d LTO4 -l 10 os01:/etc/mhvtl # ls -l /opt/mhvtl/E01021L4 total 4 -rw-rw---- 1 vtl vtl 0 Jul 8 19:51 data -rw-rw---- 1 vtl vtl 0 Jul 8 19:51 indx -rw-rw---- 1 vtl vtl 1536 Jul 8 19:51 meta os01:/etc/mhvtl # vtlcmd 10 load map E01021L4 MAP not opened os01:/etc/mhvtl # vtlcmd 10 open map OK os01:/etc/mhvtl # vtlcmd 10 load map E01021L4 OK os01:/etc/mhvtl # vtlcmd 10 close map OK os01:/etc/mhvtl # vtlcmd 10 list map Contents: E01021L4
Prinzipiell kann MHVTL jetzt bereits in einer am selben Host installierten Backup Software konfiguriert werden.
Im nächsten Artikel zeige ich wie MHVTL einfach über eine Weboberfläche bedient werden kann. Das Einrichten von iSCSI wird so zum Kinderspiel.
Pingback: Installation Webmanagement Console GUI für MHVTL | Backupinferno