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.

Dieser Beitrag wurde unter howto, Labor abgelegt und mit , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.