Avamar Checkpoint erstellen

Vor irgendwelchen kritischen Aktionen im Avamar Grid immer einen Checkpoint erstellen…

admin@avutilnode:~/>: date
Mon Sep 23 10:25:50 CEST 2013
admin@avutilnode:~/>: cplist
cp.20130923050556 Mon Sep 23 07:05:56 2013   valid rol ---  nodes   4/4 stripes  12518
cp.20130923052249 Mon Sep 23 07:22:49 2013   valid --- ---  nodes   4/4 stripes  12518
admin@avutilnode:~/>: dpnctl stop maint && dpnctl stop sched
dpnctl: INFO: Suspending maintenance windows scheduler...
dpnctl: INFO: Suspending backup scheduler...
dpnctl: INFO: Backup scheduler suspended.
admin@avutilnode:~/>: avmaint --ava checkpoint
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<checkpoint
  tag="cp.20130923082707"
  isvalid="false"/>
admin@avutilnode:~/>: watch avmaint cpstatus
Every 2.0s: avmaint cpstatus                                   Mon Sep 23 10:35:43 2013
<xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpstatus
  generation-time="1379925344"
  tag="cp.20130923082707"
  status="completed"
  stripes-completed="12518"
  stripes-total="12518"
  start-time="1379924827"
  end-time="1379924937"
  result="OK"
  refcount="4"/>
admin@avutilnode:~/>: dpnctl start maint && dpnctl start sched
dpnctl: INFO: Resuming maintenance windows scheduler...
dpnctl: INFO: maintenance windows scheduler resumed.
dpnctl: INFO: Resuming backup scheduler...
dpnctl: INFO: Backup scheduler resumed.
Veröffentlicht unter howto | Verschlagwortet mit , , , , | Kommentare deaktiviert für Avamar Checkpoint erstellen

QUADStor OpenSource Storage Virtualization auf SLES 11 SP3

QUADStor OpenSource Storage Virtualization

Vor kurzem schrieb ich einen Artikel über die OpenSource VTL von Quadstor. Bei dieser Gelegenheit bin ich auf eine weitere OpenSource Software des Herstellers aus Bangalore/Indien gestossen. Das Produkt zur Speichervirtualisierung „QUADStor OpenSource Storage Virtualization“ hat eine interessante Liste an Features zu bieten:

  • Thin Provisioning – virt. LUNs mit bis zu 64TB Kapazität können „dünn“ bereitgestellt werden, unabhängig davon wie viel Kapazität tatsächlich vorhanden ist. Erst beim Beschreiben der virt. LUNs, bei Quadstor „VDisks“ genannt, wird tatsächlich Speicherplatz benötigt.
  • Deduplizierung
    • Inline Deduplizierung, d.h. Deduplizierung sofort beim Schreiben auf VDisks, nicht nachgelagert (Vorteil: Platzersparnis, Nachteil: CPU-Last)
    • sowohl für NAS- als auch SAN-Zugriffe
    • Deduplizierung ist unabhängig vom verwendeten Filesystem, da dies auf Storage-Ebene abläuft
    • globale Deduplizierung (VDisks innerhalb eines Pools)
  • Komprimierung
  • Support für HA Cluster
  • lokales VDisk Cloning
  • VDisk Spiegelung auf anderes Quadstor Storage Virtualization System
  • Unified Storage – Zugriff auf VDisks lokal, via FC (nur mit Qlogic HBAs!) und iSCSI, lokale VDisks können auch als Netzwerkfreigaben via NFS/CIFS im LAN bereitgestellt werden (NAS via NFS-Server/Samba)
  • VAAI Support – Clone-Operationen von VMs lagert VMware Sphere an Quadstor aus, mittels Deduplizierung schnelle Bereitstellung
  • in der neuesten Version können VDisks als Plattenplatz für Quadstor VTL genutzt werden
  • Weboberfläche für Management
  • Open Source Software unter GPL v2 Lizenz, bei GitHUB

Voraussetzungen

  • 64bit Linux (Pakete für Redhat, SLES, Dedian und CentOS) oder FreeBSD
  • 64bit Intel/AMD Multicore-CPU
  • >=4GB RAM für SAN, >=8GB RAM für NAS
  • Qlogic 24xx/25xx HBA für FC
  • 1 Gb/s bzw. 10Gb/s Ethernet-NICs
  • Die Pakete apache2, gcc, perl, kernel-default-devel und sg3_utils
  • nicht gemountete Platten >4GB via SCSI-Subsystem oder mdadm (Software RAID)

Der Apache2 Webserver ist (dauerhaft bei Systemstart) zu starten.

yast > system > system services (run level) > apache2 > enable

Alternativ Installation RPMs und Apache2 bei Systemstart via Shell:

zypper install apache2
zypper install gcc
zypper install perl
zypper install kernel-default-devel
zypper install sg3_utils
/sbin/chkconfig --add apache2

Dann sind die Quadstor Storage Virtualization RPMs passend zum OS herunterzuladen (die RPMs für SLES11SP2 passen auch für SLES11SP3).

Testumgebung

Aus alten Restposten habe ich eine Testumgebung zusammengestellt.

  • Sun/STK 6140 Storage Array mit ein paar Trays mit 500GB SATA Platten und kaputten Batterien für den Cache (deshalb kein write Cache), redundante Anbindung (active/passive controller) für 2 Hosts via FC-AL 4Gb/s
  • ein alter Sun x86 Rechner mit Qlogic Dualport FC HBA, SLES11SP3 und Common Array Manager Software
  • HP DL360 mit Xeon E5640 Quadcore CPU, 16GB RAM, interne Disks RAID1, Emulex Dualport FC HBA und 4x1Gb/s NICs (LACP), SLES11SP3 für QUADStor OpenSource Storage Virtualization

Bei der Installation von SLES11SP3 wird gefragt ob die Unterstützung für Multi-Pathing aktiviert werden soll. Nachdem ich das bejaht hatte war ich durchaus positiv überrascht, dass alle LUNs vom Array problemlos erkannt und mit Multipathing eingerichtet waren. Dabei werden Multi-Pathing Gerätendateien mit „device mapper names“ verwendet. Lesenswert ist die Doku zu Multi-Pathing für SLES11SP3.

Installation

Nun sind die RPMs zu installieren.

backup1:/tmp/quadstor/storagev # ls

quadstor-client-3.0.43-sles11sp2.x86_64.rpm  quadstor-core-3.0.43-sles11sp2.x86_64.rpm  quadstor-itf-3.0.43-sles11sp2.x86_64.rpm

backup1:/tmp/quadstor/storagev # rpm -ivh quadstor-core-3.0.43-sles11sp2.x86_64.rpm

Preparing...                ########################################### [100%]

   1:quadstor-core          ########################################### [100%]

QUADStor Storage Virtualization Software is provided free of charge and is distributed under the GPL v2 license. However the softw                   are also contains other third/party/open source software. For such parts their respective licenses apply.

For any queries regarding the licensing contact support@quadstor.com.

For the GPL v2 license visit http://www.gnu.org/licenses/gpl-2.0.html

Performing post install. Please wait...

backup1:/tmp/quadstor/storagev # rpm -ivh quadstor-itf-3.0.43-sles11sp2.x86_64.rpm

Preparing...                ########################################### [100%]

   1:quadstor-itf           ########################################### [100%]

Building required kernel modules

Running /quadstor/bin/builditf

rm -rf *.o *.ko .*.cmd *.mod.c .tmp_versions Module.symvers .*.o.d Module.*

cp /quadstor/lib/modules/corelib.o /quadstor/src/export

make -C /lib/modules/3.0.76-0.11-default/build SUBDIRS=/quadstor/src/export modules

make[1]: Entering directory `/usr/src/linux-3.0.76-0.11-obj/x86_64/default'

make -C ../../../linux-3.0.76-0.11 O=/usr/src/linux-3.0.76-0.11-obj/x86_64/default/. modules

  CC [M]  /quadstor/src/export/core_linux.o

  CC [M]  /quadstor/src/export/ldev_linux.o

  CC [M]  /quadstor/src/export/devq.o

  LD [M]  /quadstor/src/export/ldev.o

  LD [M]  /quadstor/src/export/coredev.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/coredev.mod.o

  LD [M]  /quadstor/src/export/coredev.ko

  CC      /quadstor/src/export/ldev.mod.o

  LD [M]  /quadstor/src/export/ldev.ko

make[1]: Leaving directory `/usr/src/linux-3.0.76-0.11-obj/x86_64/default'

strip --strip-debug *.ko

rm -f *.o *.ko iscsit.mod.c .*.o.cmd .*.ko.cmd Module.symvers

rm -rf .tmp_versions

make -C /lib/modules/3.0.76-0.11-default/build SUBDIRS=/quadstor/src/target-mode/iscsi/kernel modules

make[1]: Entering directory `/usr/src/linux-3.0.76-0.11-obj/x86_64/default'

make -C ../../../linux-3.0.76-0.11 O=/usr/src/linux-3.0.76-0.11-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.76-0.11-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.76-0.11-default/build SUBDIRS=/quadstor/src/target-mode/fc/qla2xxx modules

make[1]: Entering directory `/usr/src/linux-3.0.76-0.11-obj/x86_64/default'

make -C ../../../linux-3.0.76-0.11 O=/usr/src/linux-3.0.76-0.11-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.76-0.11-obj/x86_64/default'

strip --strip-debug *.ko

strip --strip-unneeded *.ko

Moving original qla2xxx driver to /lib/modules/3.0.76-0.11-default/kernel/drivers/scsi/qla2xxx/qla2xxx.ko.qssave

Recreating initrd image

Kernel image:   /boot/vmlinuz-3.0.76-0.11-default

Initrd image:   /boot/initrd-3.0.76-0.11-default

KMS drivers:     radeon

Root device:    /dev/disk/by-id/cciss-3600508b1001c522836b1d3d076c1e8c8-part2 (/dev/dm-11) (mounted on / as ext3)

Resume device:  /dev/disk/by-id/cciss-3600508b1001c522836b1d3d076c1e8c8-part1 (/dev/dm-10)

Kernel Modules: hwmon thermal_sys thermal processor fan scsi_mod cciss scsi_tgt scsi_transport_fc lpfc hpsa libata ata_piix ata_ge                   neric scsi_dh dm-mod dm-multipath dm-log dm-region-hash dm-mirror dm-snapshot scsi_dh_alua scsi_dh_rdac scsi_dh_emc scsi_dh_hp_sw                    mbcache jbd ext3 dm-round-robin dm-queue-length dm-least-pending dm-service-time i2c-core i2c-algo-bit drm drm_kms_helper ttm rade                   on usb-common usbcore ohci-hcd uhci-hcd ehci-hcd xhci-hcd hid usbhid crc-t10dif sd_mod

Firmware:       radeon/R520_cp.bin radeon/R520_cp.bin.sig radeon/RS600_cp.bin radeon/RS600_cp.bin.sig radeon/RS690_cp.bin radeon/R                   S690_cp.bin.sig radeon/R420_cp.bin radeon/R420_cp.bin.sig radeon/R300_cp.bin radeon/R300_cp.bin.sig radeon/R200_cp.bin radeon/R200                   _cp.bin.sig radeon/R100_cp.bin radeon/R100_cp.bin.sig radeon/RV710_me.bin radeon/RV710_me.bin.sig radeon/RV710_pfp.bin radeon/RV71                   0_pfp.bin.sig radeon/RV730_me.bin radeon/RV730_me.bin.sig radeon/RV730_pfp.bin radeon/RV730_pfp.bin.sig radeon/RV770_me.bin radeon                   /RV770_me.bin.sig radeon/RV770_pfp.bin radeon/RV770_pfp.bin.sig radeon/RS780_me.bin radeon/RS780_me.bin.sig radeon/RS780_pfp.bin r                   adeon/RS780_pfp.bin.sig radeon/RV670_me.bin radeon/RV670_me.bin.sig radeon/RV670_pfp.bin radeon/RV670_pfp.bin.sig radeon/RV635_me.                   bin radeon/RV635_me.bin.sig radeon/RV635_pfp.bin radeon/RV635_pfp.bin.sig radeon/RV620_me.bin radeon/RV620_me.bin.sig radeon/RV620                   _pfp.bin radeon/RV620_pfp.bin.sig radeon/RV630_me.bin radeon/RV630_me.bin.sig radeon/RV630_pfp.bin radeon/RV630_pfp.bin.sig radeon                   /RV610_me.bin radeon/RV610_me.bin.sig radeon/RV610_pfp.bin radeon/RV610_pfp.bin.sig radeon/R600_me.bin radeon/R600_me.bin.sig rade                   on/R600_pfp.bin radeon/R600_pfp.bin.sig radeon/R520_cp.bin radeon/R520_cp.bin.sig radeon/RS600_cp.bin radeon/RS600_cp.bin.sig rade                   on/RS690_cp.bin radeon/RS690_cp.bin.sig radeon/R420_cp.bin radeon/R420_cp.bin.sig radeon/R300_cp.bin radeon/R300_cp.bin.sig radeon                   /R200_cp.bin radeon/R200_cp.bin.sig radeon/R100_cp.bin radeon/R100_cp.bin.sig radeon/SUMO2_me.bin radeon/SUMO2_me.bin.sig radeon/S                   UMO2_pfp.bin radeon/SUMO2_pfp.bin.sig radeon/SUMO_me.bin radeon/SUMO_me.bin.sig radeon/SUMO_pfp.bin radeon/SUMO_pfp.bin.sig radeon                   /SUMO_rlc.bin radeon/SUMO_rlc.bin.sig radeon/PALM_me.bin radeon/PALM_me.bin.sig radeon/PALM_pfp.bin radeon/PALM_pfp.bin.sig radeon                   /CYPRESS_rlc.bin radeon/CYPRESS_rlc.bin.sig radeon/CYPRESS_me.bin radeon/CYPRESS_me.bin.sig radeon/CYPRESS_pfp.bin radeon/CYPRESS_                   pfp.bin.sig radeon/JUNIPER_rlc.bin radeon/JUNIPER_rlc.bin.sig radeon/JUNIPER_me.bin radeon/JUNIPER_me.bin.sig radeon/JUNIPER_pfp.b                   in radeon/JUNIPER_pfp.bin.sig radeon/REDWOOD_rlc.bin radeon/REDWOOD_rlc.bin.sig radeon/REDWOOD_me.bin radeon/REDWOOD_me.bin.sig ra                   deon/REDWOOD_pfp.bin radeon/REDWOOD_pfp.bin.sig radeon/CEDAR_rlc.bin radeon/CEDAR_rlc.bin.sig radeon/CEDAR_me.bin radeon/CEDAR_me.                   bin.sig radeon/CEDAR_pfp.bin radeon/CEDAR_pfp.bin.sig radeon/R700_rlc.bin radeon/R700_rlc.bin.sig radeon/R600_rlc.bin radeon/R600_                   rlc.bin.sig radeon/RV710_me.bin radeon/RV710_me.bin.sig radeon/RV710_pfp.bin radeon/RV710_pfp.bin.sig radeon/RV730_me.bin radeon/R                   V730_me.bin.sig radeon/RV730_pfp.bin radeon/RV730_pfp.bin.sig radeon/RV770_me.bin radeon/RV770_me.bin.sig radeon/RV770_pfp.bin rad                   eon/RV770_pfp.bin.sig radeon/RS780_me.bin radeon/RS780_me.bin.sig radeon/RS780_pfp.bin radeon/RS780_pfp.bin.sig radeon/RV670_me.bi                   n radeon/RV670_me.bin.sig radeon/RV670_pfp.bin radeon/RV670_pfp.bin.sig radeon/RV635_me.bin radeon/RV635_me.bin.sig radeon/RV635_p                   fp.bin radeon/RV635_pfp.bin.sig radeon/RV620_me.bin radeon/RV620_me.bin.sig radeon/RV620_pfp.bin radeon/RV620_pfp.bin.sig radeon/R                   V630_me.bin radeon/RV630_me.bin.sig radeon/RV630_pfp.bin radeon/RV630_pfp.bin.sig radeon/RV610_me.bin radeon/RV610_me.bin.sig rade                   on/RV610_pfp.bin radeon/RV610_pfp.bin.sig radeon/R600_me.bin radeon/R600_me.bin.sig radeon/R600_pfp.bin radeon/R600_pfp.bin.sig ra                   deon/CAYMAN_rlc.bin radeon/CAYMAN_rlc.bin.sig radeon/CAYMAN_mc.bin radeon/CAYMAN_mc.bin.sig radeon/CAYMAN_me.bin radeon/CAYMAN_me.                   bin.sig radeon/CAYMAN_pfp.bin radeon/CAYMAN_pfp.bin.sig radeon/CAICOS_mc.bin radeon/CAICOS_mc.bin.sig radeon/CAICOS_me.bin radeon/                   CAICOS_me.bin.sig radeon/CAICOS_pfp.bin radeon/CAICOS_pfp.bin.sig radeon/TURKS_mc.bin radeon/TURKS_mc.bin.sig radeon/TURKS_me.bin                    radeon/TURKS_me.bin.sig radeon/TURKS_pfp.bin radeon/TURKS_pfp.bin.sig radeon/BTC_rlc.bin radeon/BTC_rlc.bin.sig radeon/BARTS_mc.bi                   n radeon/BARTS_mc.bin.sig radeon/BARTS_me.bin radeon/BARTS_me.bin.sig radeon/BARTS_pfp.bin radeon/BARTS_pfp.bin.sig

Features:       acpi dm multipathd kms block usb multipath kpartx resume.userspace resume.kernel

Bootsplash:     SLES (1024x768)

46471 blocks

>>> Network: auto

>>> Calling mkinitrd -k /boot/vmlinuz-3.0.76-0.11-default -i /tmp/mkdumprd.9PTYIUcr7Q -f 'kdump network' -B  -s ''

Regenerating kdump initrd ...

Kernel image:   /boot/vmlinuz-3.0.76-0.11-default

Initrd image:   /tmp/mkdumprd.9PTYIUcr7Q

KMS drivers:     radeon

Root device:    /dev/disk/by-id/cciss-3600508b1001c522836b1d3d076c1e8c8-part2 (/dev/dm-11) (mounted on / as ext3)

Resume device:  /dev/disk/by-id/cciss-3600508b1001c522836b1d3d076c1e8c8-part1 (/dev/dm-10)

Kernel Modules: hwmon thermal_sys thermal processor fan scsi_mod cciss scsi_tgt scsi_transport_fc lpfc hpsa libata ata_piix ata_ge                   neric scsi_dh dm-mod dm-multipath dm-log dm-region-hash dm-mirror dm-snapshot scsi_dh_alua scsi_dh_rdac scsi_dh_emc scsi_dh_hp_sw                    mbcache jbd ext3 dm-round-robin dm-queue-length dm-least-pending dm-service-time i2c-core i2c-algo-bit drm drm_kms_helper ttm rade                   on usb-common usbcore ohci-hcd uhci-hcd ehci-hcd xhci-hcd hid usbhid af_packet bonding bnx2 nls_utf8 hpwdt crc-t10dif sd_mod

Firmware:       radeon/R520_cp.bin radeon/R520_cp.bin.sig radeon/RS600_cp.bin radeon/RS600_cp.bin.sig radeon/RS690_cp.bin radeon/R                   S690_cp.bin.sig radeon/R420_cp.bin radeon/R420_cp.bin.sig radeon/R300_cp.bin radeon/R300_cp.bin.sig radeon/R200_cp.bin radeon/R200                   _cp.bin.sig radeon/R100_cp.bin radeon/R100_cp.bin.sig radeon/RV710_me.bin radeon/RV710_me.bin.sig radeon/RV710_pfp.bin radeon/RV71                   0_pfp.bin.sig radeon/RV730_me.bin radeon/RV730_me.bin.sig radeon/RV730_pfp.bin radeon/RV730_pfp.bin.sig radeon/RV770_me.bin radeon                   /RV770_me.bin.sig radeon/RV770_pfp.bin radeon/RV770_pfp.bin.sig radeon/RS780_me.bin radeon/RS780_me.bin.sig radeon/RS780_pfp.bin r                   adeon/RS780_pfp.bin.sig radeon/RV670_me.bin radeon/RV670_me.bin.sig radeon/RV670_pfp.bin radeon/RV670_pfp.bin.sig radeon/RV635_me.                   bin radeon/RV635_me.bin.sig radeon/RV635_pfp.bin radeon/RV635_pfp.bin.sig radeon/RV620_me.bin radeon/RV620_me.bin.sig radeon/RV620                   _pfp.bin radeon/RV620_pfp.bin.sig radeon/RV630_me.bin radeon/RV630_me.bin.sig radeon/RV630_pfp.bin radeon/RV630_pfp.bin.sig radeon                   /RV610_me.bin radeon/RV610_me.bin.sig radeon/RV610_pfp.bin radeon/RV610_pfp.bin.sig radeon/R600_me.bin radeon/R600_me.bin.sig rade                   on/R600_pfp.bin radeon/R600_pfp.bin.sig radeon/R520_cp.bin radeon/R520_cp.bin.sig radeon/RS600_cp.bin radeon/RS600_cp.bin.sig rade                   on/RS690_cp.bin radeon/RS690_cp.bin.sig radeon/R420_cp.bin radeon/R420_cp.bin.sig radeon/R300_cp.bin radeon/R300_cp.bin.sig radeon                   /R200_cp.bin radeon/R200_cp.bin.sig radeon/R100_cp.bin radeon/R100_cp.bin.sig radeon/SUMO2_me.bin radeon/SUMO2_me.bin.sig radeon/S                   UMO2_pfp.bin radeon/SUMO2_pfp.bin.sig radeon/SUMO_me.bin radeon/SUMO_me.bin.sig radeon/SUMO_pfp.bin radeon/SUMO_pfp.bin.sig radeon                   /SUMO_rlc.bin radeon/SUMO_rlc.bin.sig radeon/PALM_me.bin radeon/PALM_me.bin.sig radeon/PALM_pfp.bin radeon/PALM_pfp.bin.sig radeon                   /CYPRESS_rlc.bin radeon/CYPRESS_rlc.bin.sig radeon/CYPRESS_me.bin radeon/CYPRESS_me.bin.sig radeon/CYPRESS_pfp.bin radeon/CYPRESS_                   pfp.bin.sig radeon/JUNIPER_rlc.bin radeon/JUNIPER_rlc.bin.sig radeon/JUNIPER_me.bin radeon/JUNIPER_me.bin.sig radeon/JUNIPER_pfp.b                   in radeon/JUNIPER_pfp.bin.sig radeon/REDWOOD_rlc.bin radeon/REDWOOD_rlc.bin.sig radeon/REDWOOD_me.bin radeon/REDWOOD_me.bin.sig ra                   deon/REDWOOD_pfp.bin radeon/REDWOOD_pfp.bin.sig radeon/CEDAR_rlc.bin radeon/CEDAR_rlc.bin.sig radeon/CEDAR_me.bin radeon/CEDAR_me.                   bin.sig radeon/CEDAR_pfp.bin radeon/CEDAR_pfp.bin.sig radeon/R700_rlc.bin radeon/R700_rlc.bin.sig radeon/R600_rlc.bin radeon/R600_                   rlc.bin.sig radeon/RV710_me.bin radeon/RV710_me.bin.sig radeon/RV710_pfp.bin radeon/RV710_pfp.bin.sig radeon/RV730_me.bin radeon/R                   V730_me.bin.sig radeon/RV730_pfp.bin radeon/RV730_pfp.bin.sig radeon/RV770_me.bin radeon/RV770_me.bin.sig radeon/RV770_pfp.bin rad                   eon/RV770_pfp.bin.sig radeon/RS780_me.bin radeon/RS780_me.bin.sig radeon/RS780_pfp.bin radeon/RS780_pfp.bin.sig radeon/RV670_me.bi                   n radeon/RV670_me.bin.sig radeon/RV670_pfp.bin radeon/RV670_pfp.bin.sig radeon/RV635_me.bin radeon/RV635_me.bin.sig radeon/RV635_p                   fp.bin radeon/RV635_pfp.bin.sig radeon/RV620_me.bin radeon/RV620_me.bin.sig radeon/RV620_pfp.bin radeon/RV620_pfp.bin.sig radeon/R                   V630_me.bin radeon/RV630_me.bin.sig radeon/RV630_pfp.bin radeon/RV630_pfp.bin.sig radeon/RV610_me.bin radeon/RV610_me.bin.sig rade                   on/RV610_pfp.bin radeon/RV610_pfp.bin.sig radeon/R600_me.bin radeon/R600_me.bin.sig radeon/R600_pfp.bin radeon/R600_pfp.bin.sig ra                   deon/CAYMAN_rlc.bin radeon/CAYMAN_rlc.bin.sig radeon/CAYMAN_mc.bin radeon/CAYMAN_mc.bin.sig radeon/CAYMAN_me.bin radeon/CAYMAN_me.                   bin.sig radeon/CAYMAN_pfp.bin radeon/CAYMAN_pfp.bin.sig radeon/CAICOS_mc.bin radeon/CAICOS_mc.bin.sig radeon/CAICOS_me.bin radeon/                   CAICOS_me.bin.sig radeon/CAICOS_pfp.bin radeon/CAICOS_pfp.bin.sig radeon/TURKS_mc.bin radeon/TURKS_mc.bin.sig radeon/TURKS_me.bin                    radeon/TURKS_me.bin.sig radeon/TURKS_pfp.bin radeon/TURKS_pfp.bin.sig radeon/BTC_rlc.bin radeon/BTC_rlc.bin.sig radeon/BARTS_mc.bi                   n radeon/BARTS_mc.bin.sig radeon/BARTS_me.bin radeon/BARTS_me.bin.sig radeon/BARTS_pfp.bin radeon/BARTS_pfp.bin.sig bnx2/bnx2-rv2p                   -09ax-6.0.17.fw bnx2/bnx2-rv2p-09ax-6.0.17.fw.sig bnx2/bnx2-rv2p-09-6.0.17.fw bnx2/bnx2-rv2p-09-6.0.17.fw.sig bnx2/bnx2-mips-09-6.                   2.1b.fw bnx2/bnx2-mips-09-6.2.1b.fw.sig bnx2/bnx2-rv2p-06-6.0.15.fw bnx2/bnx2-rv2p-06-6.0.15.fw.sig bnx2/bnx2-mips-06-6.2.3.fw bnx                   2/bnx2-mips-06-6.2.3.fw.sig

Features:       acpi dm multipathd kms block usb network multipath kpartx resume.userspace resume.kernel kdump

61122 blocks

Jetzt kann der Quadstor Daemon (Dienst) gestartet werden.

backup1:/tmp/quadstor/storagev # /etc/init.d/quadstor start

Starting quadstor: Starting iSCSI target service:

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)

QUADStor Storage Virtualization

QUADStor Storage Virtualization, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Quadstor Storage Virtualization läuft also schon mal. Für eine gesicherte Konfiguration des Webinterface gibt es eine Anleitung.

QUADStor - Physical disks

QUADStor – Physical disks, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Problem

Wie man hier im Screenshot erkennen kann erfasst Quadstor statt der Multipathing-Gerätedateien die Standard-SCSI-Gerätedateien. Beim vorhandenen Dual Controller Array tauchen deshalb die LUNs doppelt auf.

backup1:~ # more /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 01
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 02
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 03
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 04
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 05
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 06
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 07
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 31
  Vendor: SUN      Model: Universal Xport  Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 01
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 02
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 03
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 04
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 05
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 06
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 07
  Vendor: SUN      Model: CSM200_R         Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 31
  Vendor: SUN      Model: Universal Xport  Rev: 0660
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: TEAC     Model: DV-28S-W         Rev: C.2D
  Type:   CD-ROM                           ANSI  SCSI revision: 05

Hier die Multi-Pathing Konfiguration. Man sieht je 2 Standard SCSI Geräte einem Multi-Pathing Gerät untergeordnet (CSM200_R = Sun/STK 6140 tray).

backup1:~ # multipath -l
3600a0b80002998400000090b50a431be dm-4 SUN     ,CSM200_R
size=346G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:2 sdk        8:160  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:2 sdc        8:32   active undef running
3600a0b80002998400000090f50a4341a dm-2 SUN     ,CSM200_R
size=1.9T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:0 sdi        8:128  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:0 sda        8:0    active undef running
3600508b1001c522836b1d3d076c1e8c8 dm-0 HP      ,LOGICAL VOLUME
size=137G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
  `- 0:0:0:0 cciss/c0d0 104:0  active undef running
3600a0b8000299840000008ff509b5878 dm-8 SUN     ,CSM200_R
size=2.0T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:6 sdo        8:224  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:6 sdg        8:96   active undef running
3600a0b80002998400000090a50a4274a dm-5 SUN     ,CSM200_R
size=2.0T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:3 sdl        8:176  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:3 sdd        8:48   active undef running
3600508b1001c6a3287b5ac4f4bc8eb30 dm-1 HP      ,LOGICAL VOLUME
size=137G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
  `- 0:0:1:0 cciss/c0d1 104:16 active undef running
3600a0b80002998400000090e50a433da dm-9 SUN     ,CSM200_R
size=2.0T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:7 sdp        8:240  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:7 sdh        8:112  active undef running
3600a0b800029a1fa00000d96509b52dd dm-7 SUN     ,CSM200_R
size=2.0T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:5 sdn        8:208  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:5 sdf        8:80   active undef running
3600a0b80002998400000090950a423b6 dm-6 SUN     ,CSM200_R
size=2.0T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:4 sdm        8:192  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:4 sde        8:64   active undef running
3600a0b80002998400000090c50a43304 dm-3 SUN     ,CSM200_R
size=2.0T features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:1 sdj        8:144  active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 1:0:0:1 sdb        8:16   active undef running

backup1:~ # ls -l /dev/mapper
total 0
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600508b1001c522836b1d3d076c1e8c8 -> ../dm-0
lrwxrwxrwx 1 root root       8 Jul 29 14:53 3600508b1001c522836b1d3d076c1e8c8_part1 -> ../dm-10
lrwxrwxrwx 1 root root       8 Jul 29 14:53 3600508b1001c522836b1d3d076c1e8c8_part2 -> ../dm-11
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600508b1001c6a3287b5ac4f4bc8eb30 -> ../dm-1
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600a0b8000299840000008ff509b5878 -> ../dm-8
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600a0b80002998400000090950a423b6 -> ../dm-6
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600a0b80002998400000090a50a4274a -> ../dm-5
lrwxrwxrwx 1 root root       7 Jul 29 14:55 3600a0b80002998400000090b50a431be -> ../dm-4
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600a0b80002998400000090c50a43304 -> ../dm-3
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600a0b80002998400000090e50a433da -> ../dm-9
lrwxrwxrwx 1 root root       7 Jul 29 15:15 3600a0b80002998400000090f50a4341a -> ../dm-2
lrwxrwxrwx 1 root root       7 Jul 29 14:53 3600a0b800029a1fa00000d96509b52dd -> ../dm-7
crw-rw---- 1 root root 10, 236 Jul 29 10:00 control

 

Workaround

Quadstor unterstützt Software RAID devices (mdadm). Das nutze ich aus um die Multi-Pathing Geräte doch noch mit quadstor nutzen zu können. Für jedes Multi-Pathing Gerät erstelle ich ein zugeordnetes Dummy RAID Gerät (RAID 0 bestehend aus einer Platte).

backup1:~ # mdadm --create /dev/md0 --level=0 --raid-devices=1 /dev/mapper/3600a0b8000299840000008ff509b5878 --force
mdadm: /dev/mapper/3600a0b8000299840000008ff509b5878 appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b8000299840000008ff509b5878 but will be lost or
       meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
backup1:~ # mdadm --create /dev/md1 --level=0 --raid-devices=1 /dev/mapper/3600a0b80002998400000090b50a431be --force
mdadm: /dev/mapper/3600a0b80002998400000090b50a431be appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b80002998400000090b50a431be but will be lost or
       meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
backup1:~ # mdadm --create /dev/md2 --level=0 --raid-devices=1 /dev/mapper/3600a0b80002998400000090f50a4341a --force
mdadm: /dev/mapper/3600a0b80002998400000090f50a4341a appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b80002998400000090f50a4341a but will be lost or
       meaningless after creating array
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
backup1:~ # mdadm --create /dev/md3 --level=0 --raid-devices=1 /dev/mapper/3600a0b80002998400000090a50a4274a --force
mdadm: /dev/mapper/3600a0b80002998400000090a50a4274a appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b80002998400000090a50a4274a but will be lost or
       meaningless after creating array
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md3 started.
backup1:~ # mdadm --create /dev/md4 --level=0 --raid-devices=1 /dev/mapper/3600a0b80002998400000090e50a433da --force
mdadm: /dev/mapper/3600a0b80002998400000090e50a433da appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b80002998400000090e50a433da but will be lost or
       meaningless after creating array
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md4 started.
backup1:~ # mdadm --create /dev/md5 --level=0 --raid-devices=1 /dev/mapper/3600a0b800029a1fa00000d96509b52dd --force
mdadm: /dev/mapper/3600a0b800029a1fa00000d96509b52dd appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b800029a1fa00000d96509b52dd but will be lost or
       meaningless after creating array
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
backup1:~ # mdadm --create /dev/md6 --level=0 --raid-devices=1 /dev/mapper/3600a0b80002998400000090950a423b6 --force
mdadm: /dev/mapper/3600a0b80002998400000090950a423b6 appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b80002998400000090950a423b6 but will be lost or
       meaningless after creating array
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md6 started.
backup1:~ # mdadm --create /dev/md7 --level=0 --raid-devices=1 /dev/mapper/3600a0b80002998400000090c50a43304 --force
mdadm: /dev/mapper/3600a0b80002998400000090c50a43304 appears to be part of a raid array:
    level=raid0 devices=0 ctime=Thu Jan  1 01:00:00 1970
mdadm: partition table exists on /dev/mapper/3600a0b80002998400000090c50a43304 but will be lost or
       meaningless after creating array
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md7 started.

backup1:~ # cat /proc/mdstat
Personalities : [raid0]
md7 : active raid0 dm-3[0]
      2134897664 blocks super 1.2 512k chunks
md6 : active raid0 dm-6[0]
      2134894592 blocks super 1.2 512k chunks
md5 : active raid0 dm-7[0]
      2134894592 blocks super 1.2 512k chunks
md4 : active raid0 dm-9[0]
      2134897664 blocks super 1.2 512k chunks
md3 : active raid0 dm-5[0]
      2134894592 blocks super 1.2 512k chunks
md2 : active raid0 dm-2[0]
      2072411136 blocks super 1.2 512k chunks
md1 : active raid0 dm-4[0]
      362906624 blocks super 1.2 512k chunks
md0 : active raid0 dm-8[0]
      2134894592 blocks super 1.2 512k chunks
unused devices:

Die RAID Konfiguration wird erst nach Sichern der Konfiguration permanent.

backup1:~ # mdadm --detail --scan >> /etc/mdadm.conf
backup1:~ # vi /etc/mdadm.conf
DEVICE /dev/disk/by-id/*
ARRAY /dev/md0 metadata=1.2 name=backup1:0 UUID=68de1206:6a244d7e:89d3788f:5860b5e8
ARRAY /dev/md1 metadata=1.2 name=backup1:1 UUID=b043cdd4:13b3b19e:bccd5b05:04cb7116
ARRAY /dev/md2 metadata=1.2 name=backup1:2 UUID=19e868b8:bfa7f12c:a773d1b7:0a800112
ARRAY /dev/md3 metadata=1.2 name=backup1:3 UUID=cac11075:1906c1da:9ad5a190:2fd6a15f
ARRAY /dev/md4 metadata=1.2 name=backup1:4 UUID=63097236:6c60b353:f0c8ea61:c251bf6c
ARRAY /dev/md5 metadata=1.2 name=backup1:5 UUID=72a0c2a7:07569c58:2c5a45bc:ab2b7463
ARRAY /dev/md6 metadata=1.2 name=backup1:6 UUID=e4b31529:c5cbb5b1:637bcae6:3471981e
ARRAY /dev/md7 metadata=1.2 name=backup1:7 UUID=2d2aae1e:3033a0b2:598e2f47:7672b380

Das sollte man am Besten mit einem Neustart überprüfen. Im Zweifelsfall schreibt man noch ein init-Skript, das vor quadstor gestartet wird. Beispiel:

mdadm --examine --scan
mdadm --assemble --scan

Nun müsste Quadstor RAID Geräte erkennen, die wiederum auf Multi-Pathing Geräte zeigen. Deshalb in Quadstor > physical storage > rescan.

QUADStor - Physical disks inkl. RAID

QUADStor – Physical disks inkl. RAID, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Nun tauchen die RAID Geräte auf.

Pool

Zunächst gilt es einen Pool anzulegen: quadstor > Storage pools > add pool

QUADStor - add pool

QUADStor – add pool, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor - add pool1

QUADStor – add pool1, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Nun gilt es dem erstellten Pool Platten hinzuzufügen: Quadstor > physical storage > add

QUADStor - add pdisk md0 to pool1

QUADStor – add pdisk md0 to pool1, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor - add pdisk

QUADStor – add pdisk, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Auch die anderen RAID Gerät werden nun dem Pool1 hinzugefügt.

QUADStor - initializing

QUADStor – initializing, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor - Pool

QUADStor – Pool, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

VDisk

Nachdem nun ein Pool angelegt und mit disks bestückt wurde kann man nun eine virt. LUN, eine sog. VDisk, erstelllen: Quadstor > Virtual Disk > add VDisk

QUADStor - VDisk hinzufügen

QUADStor – VDisk hinzufügen, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Diese VDisk soll via iSCSI der Virtualisierungslösung VMware VSphere (ESXi) zur Verfügung gestellt werden (Haken setzen bei 512byte emulation).

QUADStor - VDisk hinzufügen für Virtualisierung mit ESXi

QUADStor – VDisk hinzufügen für Virtualisierung mit ESXi, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Im Feld Status erkennt man am Buchstaben E (Emulation) die VDisks für ESXi und Co..

QUADStor - VDisk hinzugefügt

QUADStor – VDisk hinzugefügt, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Unter modify lassen sich u.a. die iSCSI Zugangsdaten verändern.

QUADStor - VDisk Eigenschaften

QUADStor – VDisk Eigenschaften, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Nun noch eine Standard-VDisk für die lokale Nutzung einrichten…

quadstor13

QUADStor – VDisk für lokales Filesystem, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Die VDisk für ein lokales Filesystem ist nun ebenfalls erstellt.

QUADStor - VDisk für lokales Filesystem erstellt

QUADStor – VDisk für lokales Filesystem erstellt, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

 iSCSI LUN für VMware ESXi

Auf einem Hard- oder Software iSCSI Initiator in VMware ESXi / VSphere muß zunächst das iSCSI Target bekannt gegeben werden.

Am ESXi Server: Konfiguration > Speicheradapter > iSCSI Initiator auswählen > Eigenschaften > dynamische Erkennung > FQDN des Quadstor Host angeben

QUADStor - iSCSI target

QUADStor – iSCSI target, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

iSCSI LUNs sind nun sichtbar…

QUADStor - iSCSI LUNs

QUADStor – iSCSI LUNs, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Nun kann man die iSCSI LUN dem ESXi hinzufügen und ein VMFS-Filesystem darauf anlegen.

LUN für lokales Filesystem

Dem Rechner mit der Quadstor Software kann natürlich eine VDisk auch als LUN für lokalen Zugriff zugewiesen werden. Auf der o.g. 5GB großen VDisk habe ich eine Partition mit dem ext3- Dateisystem angelegt.

QUADStor - LUN für lokales Dateisystem

QUADStor – LUN für lokales Dateisystem, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Auf einer VDisk kann ein beliebiges Dateisystem aufgebracht werden, hier z.B. ext3. Um es benutzen zu können muß es in einem Verzeichnis einhängt werden. Das kann man dann nicht nur lokal nutzen sondern auch als Netzwerkfreigabe via CIFS/NFS anderen zur Verfügung stellen.

Fazit

Quadstor Storage Virtualization bietet eine leicht bedienbare Open Source Software zur Speichervirtualisierung mit Inline Deduplizierung und iSCSI/FC-target Integration. Quadstor bietet daneben noch eine VTL Software an.

Mit der Software von Quadstor läßt sich mit Hilfe eines 64bit x86 kompatiblen-Rechners ein professionelles NAS-System bereitstellen – ausreichend RAM und HDDs vorausgesetzt. Netzwerkfreigaben und lokale Filesysteme muß man allerdings noch mit Betriebssystemmitteln verwalten. Vieles ist aber bereits über eine gefällige Weboberfläche bedienbar.

Aus meiner Sicht eine klare Testempfehlung! Gerade in low budget Umgebungen könnte das Produkt interessant sein…

Die direkte Unterstützung von Linux Multi-Pathing Geräten wäre noch wünschenswert.

Veröffentlicht unter howto, Labor | Verschlagwortet mit , , , , , , , , , , , , , , | Kommentare deaktiviert für QUADStor OpenSource Storage Virtualization auf SLES 11 SP3

EMC News: Networker 8.1, Avamar 7.0, Datadomain appliances und DDOS 5.4

EMC will im Q3/2013 Produktupdates für Backupsoftware und -hardware herausbringen (GA). Konkret betrifft das Networker 8.1, Avamar 7.0 und Datadomain.

Zusammenfassung der Neuerungen, Videos, etc

Mittlerweile sind interessante Dokumente dazu erschienen.

Kompatibilitätsleitfäden:

Dokumentation

Directed Availabilty (vgl. RTM)

Während einige Produkte eine Frischzellenkur erhalten werden andere in die ewigen Jagdgründe (EOL bzw. EOS) befördert bzw. durch Nachfolgeprodukte ersetzt. Vorteilhaft ist dabei z.B. dass mit einer alten NMSQL/NME-Lizenz auch NMM verwendet werden kann.

  • Networker module for Microsoft applications (NMM) ersetzt Networker Module for Exchange (NME) / SQL Server (NMSQL)
  • Networker module for databases and applications (NMDA) ersetzt Networker Module for Oracle (NMO)
  • Networker Snapshot Management ersetzt PowerSnap

Meine Highlights

  • DDBoost / client direct support für NMDA 1.5 mit Oracle auf AIX 64bit
  • virtual synthetic full backups mit Datadomain und Networker
  • Avamar 7 – „Blackout window“ entfällt! Backups während garbage collection möglich
  • Avamar 7  VM recovery – Boot vom VM-Backup-Image auf Datadomain, anschließend Storagevmotion, keine Downtime…

offene Punkte

  • für die neue Art von VMware Image Backups via virt. appliance wird eine neue Lizenz benötigt: Networker VMware Protection Tier 1/2/3/4/5 qty1/5 (Tier 1: 1-5 CPUs, Tier 2: 6-10 CPUs, Tier 3: 11-25 CPUs, Tier 4: 26-50 CPUs, Tier 5: 50+ CPUs) – gibt es einen Migrationsweg für bisherige Networker VADP backups?
  • File Level Restore für Linux ist nur via VMware protection appliance möglich

 

Veröffentlicht unter News | Verschlagwortet mit , , , , | Kommentare deaktiviert für EMC News: Networker 8.1, Avamar 7.0, Datadomain appliances und DDOS 5.4

Open Source Backupsoftware Bareos – ein Bacula Fork

Bareos – ein Bacula Fork

Bacula

Bacula ist eine weit verbreitete Open Source Datensicherungslösung (AGPL v3). Es existiert eine Community Edition (kostenlos) und Enterprise Edition (kostenpflichtiger Support und aufpreispflichtige Extras von Bacula Systems SA).

Zentrale Features der Community Edition:

  • Client/Server-Architektur
  • Aufteilung der Aufgaben in einzelne Prozesse, dadurch skalierbar
  • Clients für Windows, Linux, MacOsX und UNIX
  • Pool- und Volume-Management
  • Jobsteuerung
  • Steuerung erfolgt über Kommandozeile oder GUI
  • Datenbank für Metainformationen, also Infos über Sicherungsinhalt, Volumes, Pools und Jobs (unterstützt wird MySQL, PostgreSQL oder SQLite)
  • Unterstützung von Bandrobotern, Bandlaufwerken und Festplatten
  • Volume-übergreifende Backups
  • dokumentiertes Volume-Format
  • Filesystem-Backups via Client oder CIFS/NFS-Freigabe
  • Pre/Post-Skript möglich
  • VSS für Windows
  • Die Bereitstellung aktueller Software-Versionen erfolgt nur noch als Sourcecode, d.h. das Kompilieren der Software muß man selbst durchführen. Das ist vor allem ärgerlich für Leute, die Windows Clients benötigen. Gegen Bares kann man den Windows Client bei Bacula Systems innerhalb 3 Monate herunterladen.

Viele Features gibt es nur kostenpflichtig mit Wartungsvertrag in der Enterprise Edition, hier eine Auswahl:

  • Deduplizierung auf Basis Storage Appliances (ZFS basiert oder Netapp Data Ontap) oder ZFS auf Linux
  • diverse Plugins
    • NDMP (Backup von NAS-Systemen)
    • Datenbanken (Oracle, MySQL, PostgreSQL)
    • VSS Plugin für MS Exchange und SQL Server
    • BMR (Bare Metal Recovery) für Windows und Linux
    • VMware VADP (Backup von VMware VSphere VMs ohne Backup Client)
    • SAN shared storage (gemeinsame Nutzung von Bandlaufwerken für mehrere storage daemons, vgl. dynamic drive sharing bei EMC Networker)
    • Block level deltas für Filesystem backups
    • schnelle incr./diff. Backups für Netapp via CIFS/NFS
  • BWeb Mangement Suite
  • Bereitstellung der Software via certified binaries

Bareos

Nach der Unzufriedenheit einiger Entwickler mit der Weiterentwicklung der Bacula Community Edition entschlossen sie sich 2010 einen Neustart zu wagen. Somit entstand Bareos (Backup Archiving REcovery Open Sourced) als Fork. Die Open Source Software (Lizenz AGPL v3) ist eine Enwicklung der in Köln ansässigen Bareos GmbH & Co. KG.

Ziele von Bareos

  • Bereitstellung der Software als Pakete/binaries für die wichtigsten Linux-Distributionen, Windows und MacOsX sowie als Sourcecode
  • Weiterentwicklung der Open Source Software
  • keine Aufspaltung in Community und Enterprise Edition, alle Features kostenlos verfügbar
  • kommerzieller Support verfügbar

Features von Bareos (12.4 stable, 13.2 beta):

  • basierend auf der Bacula Community Edition hat Bareos natürlich auch deren Features geerbt (siehe oben)
  • Entfernen und Aufräumen alten Bacula Codes
  • Hardwareverschlüssung für LTO Ultrium 4 und höher
  • erweiterte Import/Export Funktionen für Bandroboter
  • NDMP (Backup von NAS-Systemen)
  • Fileset shadowing Deduplizierung
  • Bandbreitenlimitierung möglich
  • Unterstützung für Client Quota
  • erweiterte Scheduler-Funktionen
  • autom. Erkennung der am Windows-Client verfügbaren Laufwerke
  • reverse data channel / passive clients (Netzverbindungen initiert nicht der Client – für DMZ / Firewall-Umgebungen)
  • Job migration/copy zwischen Storage daemons (Migration von Backup-Daten an einen anderen Ort, z.B. „die Cloud“)
  • Security-Verbesserungen
  • LZ4/LZ4H Kompression verfügbar
  • Verbesserung von Kommandozeilen-Tools

Fazit

Für die Benutzer der Bacula Community Edition scheint sich eine gute Gelegenheit zu ergeben dem Fork Bareos eine Chance zu geben. Man sieht bereits einige Features die Bareos hier voraus ist. Vor allem die Installation dürfte durch die bereitgestellten Pakete/binaries deutlich erleichtert werden. Eine neue Bedienoberfläche ist bereits in Planung.

Um auch kommerziell erfolgreich in größeren IT-Umgebungen zu sein wird aber eine Erweiterung der Features unumgänglich sein. Themen wie Virtualisierung (z.B. VMware VADP) und Datenbanken sollten deshalb auf der Agenda stehen. Mit der Implementierung von NDMP-Backups für NAS geht es bereits in die richtige Richtung.

Somit werde ich die Weiterentwicklung mit Spannung verfolgen…

Veröffentlicht unter News | Verschlagwortet mit , , , , , , | Kommentare deaktiviert für Open Source Backupsoftware Bareos – ein Bacula Fork

Installation Quadstor VTL auf SLES 11 SP2

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)

QUADStor VTL

QUADStor VTL, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Zunächst wird ein neuer Pool erzeugt:

QUADStor VTL - Pool erzeugen

QUADStor VTL – Pool erzeugen, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor VTL - Pool konfiguriert

QUADStor VTL – Pool konfiguriert, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Jetzt kann Platttenplatz dem pool zugewiesen werden. Physical storage > add …

QUADStor VTL - add phys. storage

QUADStor VTL – add phys. storage, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor VTL - add phys. storage to pool

QUADStor VTL – add phys. storage to pool, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor VTL - phys. storage dem pool zugewiesen

QUADStor VTL – phys. storage dem pool zugewiesen, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Nun zu Virtual Libraries wechseln und add VTL drücken:

QUADStor VTL - add VTL

QUADStor VTL – add VTL, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Namen der VTL eingeben, Modell/Bandlaufwerke/Anzahl Laufwerke/Schächte angeben und submit drücken…

QUADStor VTL - VTL konfiguriert

QUADStor VTL – VTL konfiguriert, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

dann add vtl drücken…

QUADStor VTL - VTL Konfiguration abschliessen

QUADStor VTL – VTL Konfiguration abschliessen, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

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.

QUADStor VTL - Bänder erstellen

QUADStor VTL – Bänder erstellen, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor VTL - Bänder angelegt

QUADStor VTL – Bänder angelegt, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Die VTL Controller und Laufwerke sind bereits via iSCSI target freigegeben.

QUADStor VTL - iSCSI target controller

QUADStor VTL – iSCSI target controller, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

QUADStor VTL - iSCSI target drive

QUADStor VTL – iSCSI target drive, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

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…

Veröffentlicht unter howto, Labor | Verschlagwortet mit , , , , | Kommentare deaktiviert für Installation Quadstor VTL auf SLES 11 SP2

Installation Webmanagement Console GUI für MHVTL

MHVTL Webmanagement console GUI

Im letzen Beitrag habe ich die Installation von MHVTL, einer virtuellen Tape Library Software für Linux, beschrieben.

Die Bedienung dieser Software erfolgt über das init-Skript /etc/init.d/mhvtl und die Kommandozeilenbefehle vtlcmd und mktape. Das ist zwar funktional aber nicht unbedingt intuitiv.

Über das MHVTL Forum wurde eine webbasierte Lösung MHVTL Webmanagement Console GUI vorgestellt. Bei der Software wurde auf Funktionalität und einfache Bedienung Wert gelegt, Sicherheitsaspekte spielten eine geringe Rolle. Über einen Einsatz der Lösung sollte also jeder selbst entscheiden. Für mein privates Testlab nutze ich es gern.

Was leistet MHVTL Webmanagement console GUI im Detail?

  • start/stop MHVTL daemon
  • div. Statusanzeigen
  • Konfiguration der VTL(s)
  • Bedienung der VTL(s)
  • Konfiguration iSCSI target (für Remote-Zugriff auf VTL via LAN/iSCSI)
  • Durchführung von Updates

Voraussetzungen

Installation der Pakete git-core, lsscsi, mtx, mt_st, sysstat, sg3_utils und tgt:

os01:~/mhvtl-gui # zypper se lsscsi
Loading repository data...
Reading installed packages...

S | Name   | Summary                             | Type
--+--------+-------------------------------------+--------
i | lsscsi | List all SCSI devices in the system | package
os01:~/mhvtl-gui # zypper se mtx
Loading repository data...
Reading installed packages...

S | Name                 | Summary                                                             | Type
--+----------------------+---------------------------------------------------------------------+--------
  | libdmtx-devel        | Software for reading and writing Data Matrix barcodes               | package
i | libdmtx0             | Software for reading and writing Data Matrix barcodes               | package
  | mtx                  | A Program for Controlling the Robotic Mechanism in DDS Auto Loaders | package
  | texlive-delimtxt     | Read and parse text tables                                          | package
  | texlive-delimtxt-doc | Documentation for texlive-delimtxt                                  | package
os01:~/mhvtl-gui # zypper install mtx
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  mtx

1 new package to install.
Overall download size: 71.6 KiB. After the operation, additional 276.0 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package mtx-1.3.12-16.1.1.x86_64                                                      (1/1),  71.6 KiB (276.0 KiB unpacked)
Retrieving: mtx-1.3.12-16.1.1.x86_64.rpm .......................................................................................[done]
(1/1) Installing: mtx-1.3.12-16.1.1 ............................................................................................[done]
os01:~/mhvtl-gui # zypper se mt-st
Loading repository data...
Reading installed packages...
No packages found.
os01:~/mhvtl-gui # zypper se mt_st
Loading repository data...
Reading installed packages...

S | Name  | Summary                             | Type
--+-------+-------------------------------------+--------
  | mt_st | mt-st Controls Magnetic Tape Drives | package
os01:~/mhvtl-gui # zypper install mt_st
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  mt_st

1 new package to install.
Overall download size: 27.6 KiB. After the operation, additional 69.2 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package mt_st-0.9b-114.1.1.x86_64                                                     (1/1),  27.6 KiB ( 69.2 KiB unpacked)
Retrieving: mt_st-0.9b-114.1.1.x86_64.rpm ......................................................................................[done]
(1/1) Installing: mt_st-0.9b-114.1.1 ...........................................................................................[done]
os01:~/mhvtl-gui # zypper se sysstat
Loading repository data...
Reading installed packages...

S | Name         | Summary                                         | Type
--+--------------+-------------------------------------------------+--------
  | sysstat      | Sar and Iostat Commands for Linux               | package
  | sysstat-isag | Interactive System Activity Grapher for sysstat | package
os01:~/mhvtl-gui # zypper install sysstat
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  sysstat

1 new package to install.
Overall download size: 246.7 KiB. After the operation, additional 996.0 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package sysstat-10.0.5-6.1.2.x86_64                                                   (1/1), 246.7 KiB (996.0 KiB unpacked)
Retrieving: sysstat-10.0.5-6.1.2.x86_64.rpm ....................................................................................[done]
(1/1) Installing: sysstat-10.0.5-6.1.2 .........................................................................................[done]
os01:~/mhvtl-gui #
os01:~/mhvtl-gui # zypper se sg3_utils
Loading repository data...
Reading installed packages...

S | Name            | Summary                                                  | Type
--+-----------------+----------------------------------------------------------+--------
i | sg3_utils       | A collection of tools that send SCSI commands to devices | package
  | sg3_utils-devel | A collection of tools that send SCSI commands to devices | package

os01:~/mhvtl-gui # zypper se git-core
Loading repository data...
Reading installed packages...

S | Name     | Summary        | Type
--+----------+----------------+--------
i | git-core | Core git tools | package
os01:~/mhvtl-gui # rpm -qa|grep git-core
git-core-1.8.1.4-1.1.1.x86_64
>> git >=  1.7.4.1  required fpr liveupdate

os01:~/mhvtl-gui # zypper se tgt
Loading repository data...
Reading installed packages...

S | Name                           | Summary                                                                     | Type
--+--------------------------------+-----------------------------------------------------------------------------+--------
  | istgt                          | Userspace iSCSI Target                                                      | package
  | libQtGTL-devel                 | Header Files for LibQtGTL                                                   | package
  | libQtGTL0_1                    | Qt4 Wrapper Classes and Widgets for OpenGTL                                 | package
i | libwebkitgtk-1_0-0             | Library for rendering web content, GTK+ Port                                | package
  | libwebkitgtk-1_0-0-32bit       | Library for rendering web content, GTK+ Port                                | package
i | libwebkitgtk-3_0-0             | Library for rendering web content, GTK+ Port                                | package
  | libwebkitgtk-3_0-0-32bit       | Library for rendering web content, GTK+ Port                                | package
  | libwebkitgtk-devel             | Library for rendering web content, GTK+ Port                                | package
  | libwebkitgtk2-lang             | Languages for package libwebkit                                             | package
  | libwebkitgtk3-devel            | Library for rendering web content, GTK+ Port                                | package
  | libwebkitgtk3-lang             | Languages for package libwebkit3                                            | package
  | nagios-plugins-mrtgtraf        | Check incoming/outgoing transfer rates of a router                          | package
  | python-SpiceClientGtk          | Gtk client and libraries for SPICE remote desktop servers - python-bindings | package
  | python-webkitgtk               | Python bindings for WebKit/Gtk                                              | package
  | python-webkitgtk-devel         | Python bindings for WebKit/Gtk -- Development Files                         | package
  | tgt                            | Generic Linux target framework (tgt)                                        | package
  | typelib-1_0-SpiceClientGtk-2_0 | Gtk client and libraries for SPICE remote desktop servers - gi-bindings     | package
  | typelib-1_0-SpiceClientGtk-3_0 | Gtk client and libraries for SPICE remote desktop servers - gi-bindings     | package
os01:~/mhvtl-gui # zypper install tgt
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW packages are going to be installed:
  perl-Config-General tgt

2 new packages to install.
Overall download size: 232.7 KiB. After the operation, additional 657.1 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package perl-Config-General-2.50-10.1.1.x86_64                                        (1/2),  68.8 KiB (154.7 KiB unpacked)
Retrieving: perl-Config-General-2.50-10.1.1.x86_64.rpm .........................................................................[done]
Retrieving package tgt-1.0.28-6.1.1.x86_64                                                       (2/2), 163.9 KiB (502.4 KiB unpacked)
Retrieving: tgt-1.0.28-6.1.1.x86_64.rpm ........................................................................................[done]
(1/2) Installing: perl-Config-General-2.50-10.1.1 ..............................................................................[done]
(2/2) Installing: tgt-1.0.28-6.1.1 .............................................................................................[done]

Ausschalten von Sicherheitsfunktionen:

  • deaktivieren von SE-Linux (via yast)
  • Anpassung der sudo-Konfiguration, so dass vom Webserver aus Kommandos unter root-Berechtigungen gestartet wrden dürfen

Aus der sudo-Konfiguration entfernen:
Zeile „Defaults requiretty“ in /etc/sudoers
Der sudo-Konfiguration hinzufügen:

echo "wwwrun ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers

Download MHVTL Console/GUI via git Versionsverwaltung:

os01:~ # mkdir mhvtl-gui
os01:~ # cd mhvtl-gui
os01:~/mhvtl-gui # git init
Initialized empty Git repository in /root/mhvtl-gui/.git/
os01:~/mhvtl-gui # git pull http://github.com/niadev67/mhvtl-gui.git
remote: Counting objects: 2264, done.
remote: Compressing objects: 100% (573/573), done.
remote: Total 2264 (delta 1648), reused 2130 (delta 1514)
Receiving objects: 100% (2264/2264), 834.76 KiB | 398 KiB/s, done.
Resolving deltas: 100% (1648/1648), done.
From http://github.com/niadev67/mhvtl-gui
 * branch            HEAD       -> FETCH_HEAD

Installation

Kopieren ins Webserver documentroot Verzeichnis:

os01:/srv/www/htdocs # cd /root
os01:~ # pwd
/root
os01:~ # cp -r mhvtl-gui /srv/www/htdocs/

Konfiguration

Bei der openSUSE Installation wurde bereits das Pattern „Web/LAMP Server“ ausgewählt. Bei Bedarf muß noch der Webserver apache2 und die Programmiersprache PHP5 nachinstalliert werden.

Über yast > system > system services runlevel kann der automatische Start des Webservers eingestellt werden.

Nun noch die Apache2 Webserver Konfiguration ergänzen:

os01:~ # vi /etc/apache2/httpd.conf
#MHVTL
Alias /mhvtl "/srv/www/htdocs/mhvtl-gui"
<Directory "/srv/www/htdocs/mhvtl-gui">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all

Bedienung

Aufruf von http://localhost/mhvtl/ bzw. http://127.0.0.1/mhvtl/ im Browser (über Netzwerk ist der hostname bzw. die IP-Adresse des Servers einzugeben) und dann Anmeldung via Passwort mhvtl (Änderung über Datei /srv/www/htdocs/mhvtl-gui/go.php)

MHVTL Webmanagement Console GUI - Login

MHVTL Webmanagement Console GUI – Login, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

MHVTL Webmanagement Console GUI

MHVTL Webmanagement Console GUI, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

  • Console: start/stop MHVTL daemon, Zustandsanzeige MHVTL und Linux
  • Setup: Konfiguration der VTL(s) und der virt. Bänder
  • Operator: Bedienung der VTL(s)
  • iSCSI (tgt): Konfiguration iSCSI target
  • Utility: Verschiedenes, u.a. Auflistung der konfigurierten Devices, Bearbeitung von Bändern, Liveupdate

iSCSI target

Die Einrichtung und Bedienung von iSCSI target auf der Shell wird im MHVTL Forum beschrieben.

Über MHVTL Webmanagement Console GUI lässt sich die iSCSI target Konfiguration auch bequem grafisch erledigen.

Zunächst aktiviert man iSCSI target. Mit Quickstart wird für jede VTL eine iSCSI target und für jedes Bandlaufwerk und jeden Controller eine iSCSI LUN erstellt. Zugriff wird jedem Host gewährt.

MHVTL Webmanagement Console GUI - iSCSI target aktivieren

MHVTL Webmanagement Console GUI – iSCSI target aktivieren, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

MHVTL Webmanagement Console GUI - iSCSI target quickstart

MHVTL Webmanagement Console GUI – iSCSI target quickstart, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

MHVTL Webmanagement Console GUI - iSCSI target Konfiguration

MHVTL Webmanagement Console GUI – iSCSI target Konfiguration, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Natürlich lässt sich diese Konfiguration bei Bedarf anpassen.

Hier nochmals die Kontrolle via Shell:

os01:/ # 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
os01:/ # tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2011-04.com.nia:os01:mhvtl:stgt:1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: passthrough
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg10
            Backing store flags:
        LUN: 2
            Type: passthrough
            SCSI ID: IET     00010002
            SCSI SN: beaf12
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg2
            Backing store flags:
        LUN: 3
            Type: passthrough
            SCSI ID: IET     00010003
            SCSI SN: beaf13
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg3
            Backing store flags:
        LUN: 4
            Type: passthrough
            SCSI ID: IET     00010004
            SCSI SN: beaf14
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg4
            Backing store flags:
        LUN: 5
            Type: passthrough
            SCSI ID: IET     00010005
            SCSI SN: beaf15
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg5
            Backing store flags:
    Account information:
    ACL information:
        ALL
Target 2: iqn.2011-04.com.nia:os01:mhvtl:stgt:2
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00020000
            SCSI SN: beaf20
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: passthrough
            SCSI ID: IET     00020001
            SCSI SN: beaf21
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg11
            Backing store flags:
        LUN: 2
            Type: passthrough
            SCSI ID: IET     00020002
            SCSI SN: beaf22
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg6
            Backing store flags:
        LUN: 3
            Type: passthrough
            SCSI ID: IET     00020003
            SCSI SN: beaf23
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg7
            Backing store flags:
        LUN: 4
            Type: passthrough
            SCSI ID: IET     00020004
            SCSI SN: beaf24
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg8
            Backing store flags:
        LUN: 5
            Type: passthrough
            SCSI ID: IET     00020005
            SCSI SN: beaf25
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Thin-provisioning: No
            Backing store type: sg
            Backing store path: /dev/sg9
            Backing store flags:
    Account information:
    ACL information:
        ALL

Die LUN 0 ist jeweils der VTL Controller, die restlichen LUNs sind die Bandlaufwerke.

Fazit

Mittels MHVTL Webmanagement Console GUI lässt sich MHVTL einfach konfigurieren und bedienen.

Die Konfiguration von iSCSI target wird zum Kinderspiel. Damit lassen sich eingerichtete VTLs nun auch über LAN ansprechen. Das ist vor allem praktisch wenn die Backupsoftware nicht unter Linux läuft, man aber eine VTL benötigt.

In Test- und Laborumgebungen kann man ggf. über die sicherheitsbedenkliche Konfiguration hinwegsehen. ansonsten kann MHVTL inkl. iSCSI target auch sicher via Shell konfiguriert werden.

Veröffentlicht unter howto, Labor | Verschlagwortet mit , , , , | Kommentare deaktiviert für Installation Webmanagement Console GUI für MHVTL

Installation MHVTL auf openSUSE 12.3

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:

  1. MHVTL daemon stoppen: /etc/init.d/mhvtl stop
  2. bisherige Bänder löschen: rm -r /opt/mhvtl/*
  3. Konfigurationsdateien in /etc/mhvtl anpassen
  4. 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.

 

 

Veröffentlicht unter howto, Labor | Verschlagwortet mit , , , , | 1 Kommentar

Backup Grundlagen: Tape Library, VTL und Festplatte

Heute möchte ich eine Artikelreihe starten, die Grundlagen zum Thema Backup vermitteln soll.

Für Datensicherungen werden Laufwerke und Speichermedien zur Aufbewahrung der gesicherten Daten benötigt.

Tape Library

Über sehr lange Zeit dominierten Magnetbänder in Einzellaufwerken oder Bandrobotern (Tape Libraries) den Markt. Bekannte Hersteller solcher Bandroboter sind Quantum, Storagetek (Oracle), IBM, HP, Fujitsu, Tandberg, Overland, etc.. Ein beliebter Medientyp ist LTO Ultrium, eine Gemeinschaftsentwicklung verschiedener Hersteller.

Ein Bandroboter besteht i.d.R. mindestens aus folgenden Bauteilen:

  • (modulares) 19“-Gehäuse mit Bedieneinheit
  • Laufwerk (z.B. LTO5) mit Schnittstelle (SCSI, SATA, SAS, FC, etc.)
  • Schächte für Ablage der Bandmedien
  • Ein-/Ausgabe Fach (bzw. Fächer)
  • Robotik (für Transport der Medien zwischen Ein/Ausgabe Fach, Schacht und Laufwerk) inkl. Barcode-Leser
  • Bandmedien mit Barcode-Label für Daten und Reinigung der Laufwerke

Bild einer IBM 3584 (LTO-Ultrium Library), Foto: Raven / de.wikipedia, via Wikimedia Commons, unter GFDL 1.2 (http://commons.wikimedia.org/wiki/Commons:GNU_Free_Documentation_License_1.2)

Ein Bandrobotor wird i.d.R. lokal an einen Backup-Server oder an ein Speichernetzwerk (SAN) angeschlossen. Über ein oder mehrere Ein-/Ausgabe-Fächer können dem Bandroboter Bandmedien entnommen bzw. hinzugefügt werden. Nach dem Befüllen eines Fachs werden die Bänder über eine mechanische Konstruktion auf freie Schächte verteilt. Danach wird eine Inventarisierung durchgeführt, d.h. die Barcodes der Bänder werden gelesen. Somit ist bekannt welches Band in welchem Schacht bzw. Laufwerk steckt. Zur Datensicherung gibt die Backup Software Steuerkommandos an den Bandroboter. Ein neues Band wird zurückgespult, mit einem Label versehen und kann dann mit Daten befüllt werden. Ist das Ende des Bandes erreicht wird die Backup Software informiert. Diese läßt das Band zurückspulen, aus dem Laufwerk entfernen und fordert das nächste Band an.

Vorteile

  • hohe Kapazität
  • Bandmedien: Auslagerbarkeit, lange Lagerfähigkeit, unempfendlich gegen Stöße
  • hohe Performance bei sequentiellem Zugriff
  • vergleichsweise geringe Kosten für Medien
  • Kompression und Verschlüsselung hardware-basiert im Laufwerk
  • niedrige Energiekosten

Nachteile

  • mechanische Beanspruchung, Bandabrieb
  • Start-Stop-Betrieb / „shoe shine“ Problem, wenn Backup Daten nicht ausreichend schnell geliefert werden
  • nicht sequentieller Zugriff extrem langsam (Spulen und Positionierung des Bandes)
  • Daten können nur an das Ende angehängt werden, nur Komplettlöschung des Bandes möglich
  • vergleichweise lange Wartedauer beim Wechsel eines Mediums (z.B. wenn Band voll ist)
  • hoher Konfigurations- und Verwaltungsaufwand
  • Komplexität bei Partitionierung oder dynamic drive sharing
  • Bandmedien: Haltbarkeit hängt von Umgebungsbedingungen ab, z.B. Lufftfeuchtigkeit, Temperatur, etc.

Bandrobotor werden heutzutage kaum mehr als Primärspreicher für Sicherungen verwendet. Der Haupteinsatz liegt beim Staging, also der Auslagerung von Sicherungsdaten von VTL/Festplatten auf Bänder. Ebenso üblich ist die Verwendung im Archivierungs- und HSM-Umfeld. In all diesen Fällen stehen die günstigen Medienkosten, der Energieverbrauch sowie die Halt- und Auslagerbarkeit der Medien im Vordergrund.

VTL

Mit den sinkenden Preisen für Festplatten wurde diese als Speichermedien interessant. Es gab aber oft Probleme Festplatten zur Datensicherung zu nutzen: vorhandene Backup Software war noch nicht zum Sichern bzw. Verwalten von Datenbeständen auf Platte optimiert oder bestehende komplexe IT Prozesse konnten nicht ohne weiteres umgestellt werden.

Deshalb wurden virtuelle Bandroboter (virtual Tape Libraries) eingeführt. Hier emuliert eine Software einen oder mehrere Bandrobotor. Dazu wird dem Backup-Server ein Plattensystem lokal, via SAN oder via LAN zur Verfügung gestellt. Über LAN muß ggf. die Netzwerkperformance beachtet werden. Geringere Bandbreiten und Protokoll-Overhead bei NFS und CIFS wirken sich negativ aus (file). Mit iSCSI, FCoE oder Symantec OST / Datadomain BOOST sieht es bzgl. Performance besser aus (block). Technisch legt die VTL Software die virtuellen Bandmedien in Verzeichnissen/Ordnern auf dem Plattensystem ab.

Bekannte Hersteller von VTL Software bzw. VTL appliances sind Falconstor, Datadomain (EMC), Quantum, Storagetek (Oracle), IBM, HP, Fujitsu, etc.. Es gibt auch NAS Systeme mit integrierter VTL Funktionalität, z.B. EMC VNX.

Vorteile

  • Backup Software und vorhandene Prozesse können ohne Anpassung weiter genutzt werden, z.B. auch NDMP-Backups
  • kaum Limitierung bei Anzahl von Laufwerken und Schächten
  • kurze Bandwechselzeit, da keine Mechanik
  • hohe random-Performance
  • Backup Clients mit geringer Netzwerkperformance führen nicht zum Shoeshine-Problem
  • virt. Bandmedien sind via RAID-Technologie geschützt
  • Deduplizierung/Kompression/Replikation über Backup Software oder VTL appliance
  • vereinfachte Auslagerung von virtuellen Medien auf phys. Bandroboter möglich (wenn gleicher Medientyp in VTL und TL verwendet wird)
  • hoher Konfigurations- und Verwaltungsaufwand

Nachteile

  • Limitierungen der alten Architektur werden übernommen (z.B. können nur komplette virtuelle Bänder gelöscht werden, gleichzeitiges Lesen/Schreiben auf einem Laufwerk ist nicht möglich)
  • Lizensierung ist herstellerabhängig, entweder gleich wie phys. Tape Library oder nach Kapazität des Plattensystems
  • phys. Auslagerung von virtuellen Bandmedien ist nicht möglich (nur über Staging)
  • hohe Energiekosten

VTLs sind heutzutage typischerweise aktivierbare, lizenzkostenpflichtige Features von Backup to Disk appliances, NAS Systemen oder Backup/Storage-Software.

Festplatte

Backup to Disk gibt es in vielen Ausprägungen. Vom einfachen Speichersystem, lokal am Backup-Server angeschlossen, bis zur optimierten Appliance gibt es Lösungen für alle Ansprüche und Preisklassen. Oftmals wird das Disk to Disk to Tape (D2D2T) Verfahren oder Replikation eingesetzt um sich gegen einen Verlust des Festplattensystems zu schützen.

Bekannte Hersteller sind analog zu den VTLs.

EMC Clariion CX500 Disk Array, Foto: Michael Moll / wikimedia, via Wikimedia Commons, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

Vorteile

  • gleichzeitiges Lesen/Schreiben auf einem Laufwerk ist möglich
  • Lizensierung erfolgt i.d.R. nach Kapazität des Plattensystems
  • hohe random-Performance
  • Backup Clients mit geringer Netzwerkperformance führen nicht zum Shoeshine-Problem
  • Daten sind via RAID-Technologie geschützt
  • Deduplizierung/Kompression/Replikation über Backup Software oder Appliance
  • ggf. integrierte Snapshot-/Clone-/CDP-Technologie
  • reduzierter Konfigurations- und Verwaltungsaufwand

Nachteile

  • Backup Software und vorhandene Prozesse müssen u.U. angepasst werden, z.B. auch NDMP-Backups
  • phys. Auslagerung von virtuellen Bandmedien ist nicht möglich (nur über Staging)
  • hohe Energiekosten

Open Source VTL

Für eine Backup Labor- oder Testumgebung ist eine Open Source VTL i.d.R. ausreichend.

  • MHVTL ist für Linux verfügbar. Via iSCSI ist der Zugriff per LAN möglich (auch von anderen Betriebssystemen). MHVTL wurde bereits erfolgreich mit gängiger Backup Software getestet. Neben der Administration via Shell besteht die Möglichkeit eine Weboberfläche zu nutzen. Bei dieser wurde jedoch mehr Wert auf schnelle Bereitstellung von Funktionalität und einfacher Bedienung gelegt als auf Sicherheit. Ein Betrieb in produktiven Umgebungen ist nicht vorgesehen.
  • QUADstor VTL ist für Linux und FreeBSD erst seit kurzem verfügbar. Der externe Zugriff via iSCSI, Infiniband und Fibrechannel klingt vielversprechend. Das Unternehmen aus Bangalore/Indien bietet auch kommerziellen Support an.

In Kürze werde ich einen Artikel über MHVTL verfassen. Stay tuned…

Veröffentlicht unter Backup-Grundlagen, howto | Verschlagwortet mit , , , , , , | 1 Kommentar

Granular Level Recover für Exchange 2010 mit NMM

Mit dem EMC Networker Module for Microsoft Applications (NMM) lassen sich VSS basierte Backups von Microsoft Exchange 2010 durchführen.

Beim Single Item Recovery greifen viele zu Ontrack Power Controls für MS Exchange und VSS. Snapshots benötigen Speicherplatz. Die Power Controls werden nach Anzahl Postfächern lizensiert. Die Nachteile dieser Lösung sind also finanzieller Natur 😉

Bisher musste man beim single item recovery mit NMM zunächst die zugehörige Datenbank in eine Recovery Database (RDB) zurücksichern. Dann war ein Browsen in der RDB möglich. Nach Auswahl des Items (Postfach, Mail, Kalender, …) konnte dieses zurückgesichert werden. Je nach Größe der Postfach-Datenbank konnte das dauern (z.B. Rücksicherung von 1TB Postfach-DB in RDB um 20kB Mail wiederherzustellen). Das Item stand dann dem Anwender im Outlook im Posteingang unter dem Ordner „Uhrzeit/Datum/Recovered Items“ zur Verfügung.

Mit NMM 2.4.0.388 oder NMM 2.4.1 gibt es nun die Funktionalität Granular Level Recover, die Single Item Recovery deutlich beschleunigt.

In NMM ist zunächst der Mailbox-Server bzw. die Database Availability Group (DAG) auszuwählen. Danach im Menü „Recover > Exchange 2010 Recover session > Granular Level Recover“ auswählen. In der nun folgenden Liste der Postfach-Datenbanken kann die Datenbank sowie die gewünschte Version ausgewählt werden. Es stehen nur Sicherungen mit dem Backup Level „Full“ zur Verfügung. Nach dem Drücken von „Recover > Start Recover“ wird dem Exchange Mailbox Server das VSS Backup im VHD-Format im Verzeichnis C:\Program Files\Legato\nsr\tmp\nwfs\Networker Virtual File System  eingehängt. Die darin befindliche EDB-Datei bzw. Postfach-DB wird als RDB „GLR…“ bereitgestellt. Nun kann über „Recover“ wie gewohnt die RDB durchsucht, eine Mail ausgewählt und rückgesichert werden. Beim Schliessen von NMM wird die RDB entfernt und das virtuelle Dateisystem wieder ausgehängt.

Das Bereitstellen der RDB dauert je nach Größe wenige Minuten. Das Durchsuchen der RDB läuft mit geringfügig schlechterer Performance – dafür erfolgt der Zugriff über Netz. GLR bedingt ein disk-basiertes Backup-Medium, also AFTD oder Data Domain. EMC verwendet für das virtuelle Dateisystem das Eldos Callback File System.

Alternativ zu NMM kann man natürlich auch über das Powershell Restore-Mailbox Commandlet aus der RDB zurücksichern. Dazu darf NMM nicht geschlossen werden (RDB wird ausgehängt). Praktisch ist das für Postfächer im „disconnect“ Status, die NMM nicht anzeigt…

Restore-Mailbox -Identity jdoe -RecoveryDatabase MyRecoveryDatabase -RecoveryMailbox "Doe, John" -TargetFolder Recovery
Veröffentlicht unter howto | Verschlagwortet mit , , , , , , , , , , , , , | Kommentare deaktiviert für Granular Level Recover für Exchange 2010 mit NMM

Wochentag in Windows Batch für PRE und POST Backup in VMware VADP

Im letzten Artikel habe ich das Thema PRE und POST Backup Skripte für VMware behandelt. Das wird i.d.R. eingesetzt um applikationskonsistente Snapshot-Backups (mit VMware VADP kompatibler Backup-Software) zu erzeugen.

Das Verfahren hat einen Nachteil. Egal welcher Wochentag bzw. welches Datum – man kann zunächst keine unterschiedliche Fallbehandlung mehr durchführen.

Workaround / Beispiel:

Eine Pervasive PSQL Datenbank soll sonntags OFFLINE, die restlichen Tage ONLINE gesichert werden.

Mit dem Tool butil kann man Pervasive PSQL Datenbanken in die „continious operation“ Betriebsart versetzen und so konsistent sichern. Dazu führt man vor dem Snapshot Erstellen das Tool butil mit dem Parameter -startbu und danach mit -endbu für jede Datenbank aus.

Für das OFFLINE Backup wird der Pervasive PSQL Datenbank-Dienst gestoppt.

Die Datenbank-Datendateien *.BIS liegen unter S:\DGU, Pervasive PSQL Binaries unter C:\PVSW\Bin.

C:\Program Files\VMware\VMware Tools\backupScripts.d\vcb.bat

echo off
if "%1" == "freeze" goto doFreeze
goto doThaw
:doFreeze
call c:\batch\vadp_backup\pre-freeze-script.bat
goto EOF
:doThaw
call c:\batch\vadp_backup\post-thaw-script.bat
:EOF

c:\batch\vadp_backup\pre-freeze-script.bat

REM *** pre backup ***

@echo off
REM Wochentag berechnen...
FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a
set /a "TwoDigitYearMax=2038%%1000"
if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
If %dow% equ 1 set "WoTa=Montag"
If %dow% equ 2 set "WoTa=Dienstag"
If %dow% equ 3 set "WoTa=Mittwoch"
If %dow% equ 4 set "WoTa=Donnerstag"
If %dow% equ 5 set "WoTa=Freitag"
If %dow% equ 6 set "WoTa=Samstag"
If %dow% equ 7 set "WoTa=Sonntag"
if "%WoTa%" equ "Sonntag" goto OFFLINE

:ONLINE
REM ONLINE Backup Pervasive SQL
echo Heute ist ein %WoTa% - Online-Backup
@echo off
set PVSW=C:\PVSW\Bin
echo %DATE% / %TIME%
SET DGU=S:\DGU
if not exist %DGU%\*.BIS goto ERR1
for %%X in (%DGU%\*.BIS) do (
                echo %%X
                %PVSW%\BUTIL -startbu %%X
                echo ##########
)
goto ENDE

:ERR1
echo Keine Dateien %DGU%\*.BIS gefunden.
goto ENDE

:OFFLINE
REM OFFLINE Backup Pervasive SQL
echo Heute ist ein %WoTa% - Offline-Backup
net stop "Pervasive.SQL (transactional)" /y
goto ENDE

:ENDE

c:\batch\vadp_backup\post-thaw-script.bat

REM *** post backup ***

@echo off
REM Wochentag berechnen...
FOR /F "tokens=1,2,3 delims=." %%a in ('echo %date%') do set yy=%%c & set mm=%%b & set dd=%%a
set /a "TwoDigitYearMax=2038%%1000"
if 1%yy% LSS 200 if 1%yy% LSS 1%TwoDigitYearMax% (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
If %dow% equ 1 set "WoTa=Montag"
If %dow% equ 2 set "WoTa=Dienstag"
If %dow% equ 3 set "WoTa=Mittwoch"
If %dow% equ 4 set "WoTa=Donnerstag"
If %dow% equ 5 set "WoTa=Freitag"
If %dow% equ 6 set "WoTa=Samstag"
If %dow% equ 7 set "WoTa=Sonntag"
if "%WoTa%" equ "Sonntag" goto OFFLINE

:ONLINE
REM ONLINE Backup Pervasive SQL
echo Heute ist ein %WoTa% - Online-Backup
@echo off
set PVSW=C:\PVSW\Bin
echo %DATE% / %TIME%
SET DGU=S:\DGU
if not exist %DGU%\*.BIS goto ERR1
for %%X in (%DGU%\*.BIS) do (
                echo %%XX
                %PVSW%\BUTIL -endbu %%X
                echo ##########
)
goto ENDE

:ERR1
echo Keine Dateien %DGU%\*.BIS gefunden.
goto ENDE

:OFFLINE
REM OFFLINE Backup Pervasive SQL
echo Heute ist ein %WoTa% - Offline-Backup
net start "Pervasive.SQL (transactional)" /y
goto ENDE

:ENDE

Danke an Miniversum für die Formel zur Wochentagsberechnung.

Veröffentlicht unter howto | Verschlagwortet mit , , , , , , , | Kommentare deaktiviert für Wochentag in Windows Batch für PRE und POST Backup in VMware VADP