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, 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, 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, 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, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

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, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

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, Screenshot: Otmar Meier, unter CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)

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, 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, 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, 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, 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…

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, 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, 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, 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, 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.