QUADStor VTL
Vor kurzem erklärte ich das Thema VTL und erwähnte dabei QUADStor VTL, eine Open Source VTL Software (GPL v2) vom Hersteller QUADStor aus Bangalore/Indien. Heute möchte ich die Installation, Konfiguration und Bedienung demonstrieren.
Voraussetzungen
QUADStor VTL benötigt eine nicht gemountete Platte bzw. LVM-Volume mit mindestens 4GB Größe.
Nach der Installation von SLES 11 SP2 wird zunächst geprüft ob alle notwendigen Pakete vorhanden sind.
sles01:~ # rpm -qa apache2 apache2-2.2.12-1.28.1 sles01:~ # rpm -qa gcc gcc-4.3-62.198 sles01:~ # rpm -qa perl perl-5.10.0-64.55.1 sles01:~ # rpm -qa kernel-default-devel kernel-default-devel-3.0.13-0.27.1 sles01:~ # rpm -qa sg3_utils sg3_utils-1.31-1.11.14
Der Apache2 Webserver ist zu starten.
yast > system > system services (run level) > apache2 > enable
Dann sind alle QUADStor VTL Pakete für SLES 11 SP2 herunterzuladen.
Installation
Nun sind die beiden QUADStor rpm-Dateien zu installieren.
sles01:~ # cd quadstor_vtl/ sles01:~/quadstor_vtl # ls -l total 7580 -rw-r--r-- 1 root root 437 Jul 15 15:54 ReleaseNotes.txt -rw-r--r-- 1 root root 7326357 Jul 15 15:56 quadstor-vtl-core-2.2.7-sles11sp2.x86_64.rpm -rw-r--r-- 1 root root 412328 Jul 15 15:56 quadstor-vtl-itf-2.2.7-sles11sp2.x86_64.rpm sles01:~/quadstor_vtl # rpm -ivh quadstor-vtl-core-2.2.7-sles11sp2.x86_64.rpm Preparing... ########################################### [100%] 1:quadstor-vtl-core ########################################### [100%] Performing post install. Please wait... sles01:~/quadstor_vtl # rpm -ivh quadstor-vtl-itf-2.2.7-sles11sp2.x86_64.rpm Preparing... ########################################### [100%] 1:quadstor-vtl-itf ########################################### [100%] Building required kernel modules Running /quadstor/bin/builditf rm -rf *.o *.ko .*.cmd *.mod.c .tmp_versions Module.symvers .*.o.d Module.* rm *.unsigned modules.order cp /quadstor/lib/modules/corelib.o /quadstor/src/export make -C /lib/modules/3.0.13-0.27-default/build SUBDIRS=/quadstor/src/export modules make[1]: Entering directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' make -C ../../../linux-3.0.13-0.27 O=/usr/src/linux-3.0.13-0.27-obj/x86_64/default/. modules CC [M] /quadstor/src/export/ldev_linux.o CC [M] /quadstor/src/export/devq.o CC [M] /quadstor/src/export/core_linux.o LD [M] /quadstor/src/export/vtlcore.o LD [M] /quadstor/src/export/ldev.o Building modules, stage 2. MODPOST 2 modules WARNING: could not find /quadstor/src/export/.corelib.o.cmd for /quadstor/src/export/corelib.o CC /quadstor/src/export/ldev.mod.o LD [M] /quadstor/src/export/ldev.ko CC /quadstor/src/export/vtlcore.mod.o LD [M] /quadstor/src/export/vtlcore.ko make[1]: Leaving directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' rm -f *.o *.ko iscsit.mod.c .*.o.cmd .*.ko.cmd Module.symvers .*unsigned* modules.order *.unsigned Module.markers rm -rf .tmp_versions make -C /lib/modules/3.0.13-0.27-default/build SUBDIRS=/quadstor/src/target-mode/iscsi/kernel modules make[1]: Entering directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' make -C ../../../linux-3.0.13-0.27 O=/usr/src/linux-3.0.13-0.27-obj/x86_64/default/. modules CC [M] /quadstor/src/target-mode/iscsi/kernel/tio.o CC [M] /quadstor/src/target-mode/iscsi/kernel/iscsi.o CC [M] /quadstor/src/target-mode/iscsi/kernel/nthread.o CC [M] /quadstor/src/target-mode/iscsi/kernel/config.o CC [M] /quadstor/src/target-mode/iscsi/kernel/digest.o CC [M] /quadstor/src/target-mode/iscsi/kernel/conn.o CC [M] /quadstor/src/target-mode/iscsi/kernel/session.o CC [M] /quadstor/src/target-mode/iscsi/kernel/target.o CC [M] /quadstor/src/target-mode/iscsi/kernel/event.o CC [M] /quadstor/src/target-mode/iscsi/kernel/param.o CC [M] /quadstor/src/target-mode/iscsi/kernel/scdefs.o CC [M] /quadstor/src/target-mode/iscsi/kernel/seq_list.o LD [M] /quadstor/src/target-mode/iscsi/kernel/iscsit.o Building modules, stage 2. MODPOST 1 modules CC /quadstor/src/target-mode/iscsi/kernel/iscsit.mod.o LD [M] /quadstor/src/target-mode/iscsi/kernel/iscsit.ko make[1]: Leaving directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' strip --strip-debug *.ko rm -f *.o ietd ietadm cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o ietd.o ietd.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o iscsid.o iscsid.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o conn.o conn.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o session.o session.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o target.o target.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o message.o message.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o ctldev.o ctldev.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o log.o log.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o chap.o chap.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o event.o event.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o param.o param.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o plain.o plain.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o isns.o isns.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o md5.o md5.c cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o sha1.o sha1.c cc ietd.o iscsid.o conn.o session.o target.o message.o ctldev.o log.o chap.o event.o param.o plain.o isns.o md5.o sha1.o -o ietd cc -DLINUX -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include -I. -D_GNU_SOURCE -c -o ietadm.o ietadm.c cc ietadm.o param.o -o ietadm rm -f *.o *.ko qla2xxx.mod.c .*.*.cmd .*.ko.cmd Module.symvers .*.o.d *.ko.unsigned modules.order rm -rf .tmp_versions make -C /lib/modules/3.0.13-0.27-default/build SUBDIRS=/quadstor/src/target-mode/fc/qla2xxx modules make[1]: Entering directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' make -C ../../../linux-3.0.13-0.27 O=/usr/src/linux-3.0.13-0.27-obj/x86_64/default/. modules CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_os.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_init.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_mbx.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_iocb.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_isr.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_gs.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_dbg.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_sup.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_attr.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_mid.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_dfs.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_bsg.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_nx.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_target.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/qla_sc.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/fcbridge.o CC [M] /quadstor/src/target-mode/fc/qla2xxx/fcq.o LD [M] /quadstor/src/target-mode/fc/qla2xxx/qla2xxx.o Building modules, stage 2. MODPOST 1 modules CC /quadstor/src/target-mode/fc/qla2xxx/qla2xxx.mod.o LD [M] /quadstor/src/target-mode/fc/qla2xxx/qla2xxx.ko make[1]: Leaving directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' strip --strip-debug *.ko strip --strip-unneeded *.ko rm -f *.o *.ko ib_srpt.mod.c .*.*.cmd .*.ko.cmd Module.symvers .*.o.d *.ko.unsigned modules.order rm -rf .tmp_versions make -C /lib/modules/3.0.13-0.27-default/build SUBDIRS=/quadstor/src/target-mode/fc/srpt modules make[1]: Entering directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' make -C ../../../linux-3.0.13-0.27 O=/usr/src/linux-3.0.13-0.27-obj/x86_64/default/. modules CC [M] /quadstor/src/target-mode/fc/srpt/fcbridge.o CC [M] /quadstor/src/target-mode/fc/srpt/fcq.o CC [M] /quadstor/src/target-mode/fc/srpt/qla_sc.o CC [M] /quadstor/src/target-mode/fc/srpt/ibsrpt.o LD [M] /quadstor/src/target-mode/fc/srpt/ib_srpt.o Building modules, stage 2. MODPOST 1 modules CC /quadstor/src/target-mode/fc/srpt/ib_srpt.mod.o LD [M] /quadstor/src/target-mode/fc/srpt/ib_srpt.ko make[1]: Leaving directory `/usr/src/linux-3.0.13-0.27-obj/x86_64/default' strip --strip-debug *.ko Moving original qla2xxx driver to /lib/modules/3.0.13-0.27-default/kernel/drivers/scsi/qla2xxx/qla2xxx.ko.qssave Recreating initrd image Kernel image: /boot/vmlinuz-3.0.13-0.27-default Initrd image: /boot/initrd-3.0.13-0.27-default Root device: /dev/sda2 (mounted on / as ext3) Resume device: /dev/sda1 Kernel Modules: hwmon thermal_sys thermal processor fan scsi_mod scsi_transport_spi mptbase mptscsih mptspi libata ata_piix ata_generic vmxnet3 vmw_pvscsi vmxnet scsi_dh scsi_dh_rdac scsi_dh_hp_sw scsi_dh_alua scsi_dh_emc mbcache jbd ext3 usb-common usbcore ohci-hcd uhci-hcd ehci-hcd hid usbhid crc-t10dif sd_mod Features: acpi block usb resume.userspace resume.kernel Bootsplash: SLES (1024x768) 34658 blocks >>> Network: auto >>> Calling mkinitrd -B -k /boot/vmlinuz-3.0.13-0.27-default -i /boot/initrd-3.0.13-0.27-default-kdump -f 'kdump network' -s '' Regenerating kdump initrd ... Kernel image: /boot/vmlinuz-3.0.13-0.27-default Initrd image: /boot/initrd-3.0.13-0.27-default-kdump Root device: /dev/sda2 (mounted on / as ext3) Resume device: /dev/sda1 Kernel Modules: hwmon thermal_sys thermal processor fan scsi_mod scsi_transport_spi mptbase mptscsih mptspi libata ata_piix ata_generic vmxnet3 vmw_pvscsi vmxnet scsi_dh scsi_dh_rdac scsi_dh_hp_sw scsi_dh_alua scsi_dh_emc mbcache jbd ext3 usb-common usbcore ohci-hcd uhci-hcd ehci-hcd hid usbhid af_packet e1000 nls_utf8 crc-t10dif sd_mod Features: acpi block usb network resume.userspace resume.kernel kdump 48642 blocks Don't refresh the bootloader. You may have to do that manually! sles01:~/quadstor_vtl #
Grundkonfiguration
Nun QUADStor VTL starten
sles01:~/quadstor_vtl # /sbin/chkconfig --del quadstor quadstor 0:off 1:off 2:off 3:off 4:off 5:off 6:off sles01:~/quadstor_vtl # /etc/init.d/quadstor start Starting quadstor: Starting iSCSI target service:
Für den automatischen Start:
yast > system > system services (run level) > quadstor > enable
Hat man SELinux aktiv ist noch folgendes auszuführen:
/usr/sbin/setsebool -P httpd_enable_cgi 1 /usr/sbin/semanage permissive -a httpd_t
Das Absichern des Webinterface ist hier beschrieben.
Bedienung
Aufruf von http://localhost bzw. http://127.0.0.1 im Browser (über Netzwerk ist der hostname bzw. die IP-Adresse des Servers einzugeben)
Zunächst wird ein neuer Pool erzeugt:
Jetzt kann Platttenplatz dem pool zugewiesen werden. Physical storage > add …
Nun zu Virtual Libraries wechseln und add VTL drücken:
Namen der VTL eingeben, Modell/Bandlaufwerke/Anzahl Laufwerke/Schächte angeben und submit drücken…
dann add vtl drücken…
Die VTL ist nun konfiguriert.
sles01:~ # lsscsi -g [0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda /dev/sg0 [0:0:1:0] disk VMware, VMware Virtual S 1.0 /dev/sdb /dev/sg1 [2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 /dev/sg2 [4:0:0:0] mediumx IBM 03584L32 6.24 /dev/sch0 /dev/sg7 [5:0:0:0] tape IBM ULT3580-TD5 B170 /dev/st0 /dev/sg3 [6:0:0:0] tape IBM ULT3580-TD5 B170 /dev/st1 /dev/sg4 [7:0:0:0] tape IBM ULT3580-TD5 B170 /dev/st2 /dev/sg5 [8:0:0:0] tape IBM ULT3580-TD5 B170 /dev/st3 /dev/sg6
Mit add vcartridge können nun virtuelle Bänder erzeugt werden.
Achtung! Der Barcode-Label muß 6 Zeichen betragen.
Die VTL Controller und Laufwerke sind bereits via iSCSI target freigegeben.
Fazit
QUADStor VTL ist eine interessante Alternative zu MHVTL. Es ist zwar noch nicht lange am Markt, wirkt aber durchdacht und ist auch für den produktiven Einsatz vorgesehen. Kommerzieller Support ist auf Anfrage verfügbar. Die Anzahl verschiedener emulierter Tape Libraries und Drives ist ordentlich, von Adic (Quantum) bis IBM und von SDLT bis LTO ist alles vertreten. Sicherheitstechnisch hat es gegenüber MHVTL Vorteile (wenn man die MHVTL Console/GUI benutzt). Zudem unterstützt QUADStor neben iSCSI den Zugriff via Fibre Channel und Infiniband. Es steht neben Linux auch für FreeBSD zur Verfügung. Gegenüber MHVTL fällt die Konfiguration und Installation leicht.
Laut Hersteller QUADStor sind noch weitere Features geplant:
- Emulation weiterer Libraries/drives
- Verschlüsselung der virt. Bänder
- Deduplizierung
- VTL Replikation
Hier gibt es eine Dokumentation/FAQ und ein Supportforum.
Wer denn neuesten Kram braucht kann natürlich auf github zugreifen und selbst kompilieren…