Archive | SCST

Una SAN para tiempos de crisis

Tags: , , , , , , , , , , , , , , , , , , , , ,

Una SAN para tiempos de crisis

Posted on 28 julio 2010 by Angel Ferrás Rodríguez

En tiempos de crisis proponemos “cocinar” una SAN a bajo precio con los siguientes ingredientes:

iSCSI

iSCSI   es una alternativa a la clásica SAN de fibra óptica, es económica su implementación ya  que no requiere de una infraestructura y tecnología adiccional Hardware de costosas HBAs y Switches de Fibra. Con sólo un switch ethernet ( o dos que aporten redundancia de acceso) y  con un servidor con tarjetas Ethernet de Gigabit junto con unos discos ya tendrías una SAN. Los initiators y targets  iSCSI en muchos sistemas operativos para servidores actuales es gratuito y ya vienen con la distribución, al igual que las soluciones de multicamino (multipath).

DISCOS

En la actualidad se diponen discos de buen precio y alta capacidad para una solución de rango medio (midrange). Un ejemplo podría ser 4 discos SATA de 3Gb/s ,  capacidad 2 TB,  64 MB de Caché y 7200 rpm  podrían salir a unos 500€. Proporcionando aproximadamente unos 6 TB en RAID software con MDADM (solución de servidores Linux de RAID software) , que nos da una media de 111 euros por Tera tolerante a fallo (RAID).

Preguntadle a vuestro proveedor de SAN cuanto saldría el TB en fibra …   ;-)

Haciendo justicia no es comparable una cabina de discos en fibra en cuanto a rendimiento debido a sus fenomenales características Hardware. Sus discos tienen un rendimiento mayor,  15.000 rpm frente a los 7200 rpm que tienen  los discos SATA, comparativamente  pueden  duplicar las I/Os y mejoras como gestión de colas o DIF T10 . En un entorno de alta capacidad frente a rendimiento, sería adecuado nuestra propuesta con discos SATA, en caso contario, incluir discos SAS  con una controladora  será una alternativa  más adecuada.

RAID

La tecnología RAID Hardware dejó de ser hace años exclusiva de entornos enterprise y cualquier placa de PC lleva integrado una controladora de discos SATA con soporte de RAID 0,1,5.  Por otro lado los resultados del RAID por software (MDADM, ZFS, …) y los gestores de volúmenes (Logical Volumen Manager – LVM ,Solaris Volumen Manager – SVM ,Veritas Volume Manager – VxVM, ZFS, …) demuestran ser alternativa eficaz que  complementan de forma segura y hacen flexible cualquier cambio posterior en el almacenamiento.

MULTIPATH

Una solución SAN en iSCSI necesitaría de un switch ethernet para conectar los Initiator/s con los Target/s. Un diseño en SAN de fibra típico sería redundar HBAs y Switches de fibra proporcionando multicamino (multipah) al sistema, se conseguiría de esta forma prevenir de cualquier fallo Hardware la continuidad de acceso a los discos. Esta tolerancia a fallos también es posible realizarse por analogía en iSCSI, redundando tarjetas  y switches ethernet, acompañado de un software multipath.

PROXY SAN/NAS

Cualquier sistema UNIX/Linux dispone de soporte para fibra e iSCSI, con una correcta configuración se podría realizar un redirección de los volúmnes (lunes) en fibra a traves de iSCSI sobre ethernet y combinar con  cualquier protocolo de compartición de ficheros como SMB o NFS. Ésto nos permitiría crear un servidor que centraliza el almacenamiento en el CPD redireccionándolo a ethernet sobre protocolos de bloques (iSCSI) o de ficheros (SMB,NFS).

También existen soluciones enterprise con esta funcionalidad  basadas en software abierto tales como NexentaStor,  OpenFiler o FreeNAS.

FS con reservas

El acceso de diferentes servidores a los mismos volúmes (típico en clústeres) necesitan tener un control de acceso y reservas de forma que haya coherencia en las modificaciones en el sistema de ficheros. Ésto se puede conseguir eligiendo un sistema de ficheros de tipo disco compartido (Share Disk File System)   como GFS (REDHAT) o VMFS (VMWARE).

Controladoras Activo/Activo Activo/Pasivo

Soluciones software tipo  IET en servidores linux  sobre las tarjetas ethernet del servidor  como Enterprise Target iSCSI proporcionará un comportamiento  análogo al  típico de  las controladoras de cabinas de discos  en fibra.

Soporte

El tema más delicado ya que el soporte SAN va en función de la interoperabilidad entre fabricantes destacando los elementos siguientes:

Sistema Operativo-Multipath- HBA-Drivers-Switch-Almacenamiento- Modos del multipath

Y debido a que el diseño de cada elemento en su totalidad  no se ajusta a los mismos estándares se necesita una certificación previa entre diferentes productos y marcas.

Esta situación cambia bastante en un entorno iSCSI siendo un protocolo/estandar bien definido con una implementación precisa, que crea un marco de interoperatibidad mucho mayor.

Aún así, hablamos  de la infrestructura que contiene los datos de una empresa, y si algo en su CPD debe de tener soporte es este almacén de datos. Por lo que el final de este diseño propuesto puede variar bastante  si no se quiere contratar soporte … incluyento por ejemplo  soluciones de backup, Alta disponibilidad (HA) con replicación síncrona entre dos cabinas de discos, … todo un tema a desarrollar y cuya implementación en producción es aconsejable que deba superar toda una fase de testeo intensivo  y planes robustos de contingencia.

Lo aconsejable es buscar soporte en alguna solución tipo Openfiler, siendo una de las soluciones más flexibles … aunque no olvidar que hay que mirar la interoperabilidad con lupa y como ejemplo  VMWARE no la certifica para sus servidores ESX ….

Por otro lado si se elige una implementación  de un target iSCSI sobre un sistema operativo, ésta solución  no tiene porqué dejar de ser soportada por la distribución, ejemplo de ellos son: RHEL que incluye desde la versión 5.3 soporte para esta característica integrando SCSI Target Framework proyecto integrado en la linea principal de desarrollo del Kernel y mantenido por el creador de IET, u OpenSolaris con el proyecto COMSTAR.

Comments (1)

VTL 4 – Creando una VTL Open Source para FC

Tags: , , , , , , , , , , , , , , ,

VTL 4 – Creando una VTL Open Source para FC

Posted on 21 julio 2010 by Angel Ferrás Rodríguez

Ya disponemos en nuestro AA Labs de una VTL Open Source sobre FCP. Su implementación está basada en los trabajos previos sobre mhVTL y SCST.  Siguiendo con la configuración SAN del post anterior, hemos conseguido emular una librería modelo Storagetek SL700 y un drive SDL600 de Quantum:

Partiendo del escenario descrito en los post  SCST 2 y SCST 3, donde se compiló un kernel vanilla y se le añadió el proyecto SCST junto con los drivers de QLogic en modo target, configurado para que ofreciera a la SAN un disco virtual (VDISK). Se añade al servidor el proyecto mhVTL emulando una librería de cintas modelo Sun Storagetek SL700 con un drive SDLT600 de QUANTUM, encargándose el módulo SCST de ofrecerlas a través de la HBA QLogic QLA2340 en modo target.

El procedimiento de su implementación es el siguiente:

1.- Crear entorno previo SCST descrito en el  post SCST 2.

2.- Instalar proyecto mhVTL

3.- Configurar mhVTL

4.- Configurar SCST para dar visibilidad a los elementos de mhVTL por fibra.

2.- Instalar proyecto mhVTL

Si se ha realizado  la VTL Open Source sobre iSCSI, ya sabrás como instalarlo. Descarga de las fuentes mhvtl en formato tar.gz desde la web del proyecto. A continuación el procedimiento de instalación sería:

# useradd vtl
# passwd vtl
# mkdir /opt/mhvtl
# chown -Rf vtl:vtl /opt/mhvtl
# mkdir /etc/mhvtl
# chown -Rf vtl:vtl /etc/mhvtl
# cd /root/mhvtl-0.18-4
# make distclean
# cd kernel
# make
# make install
# cd ../
# make
# make install

3.- Configurar mhVTL

Edición del fichero /etc/mhvtl/device.conf  para definir en el proyecto mhVTL la librería y el drive:

# cat /etc/mhvtl/device.conf
VERSION: 4

# VPD page format:
# <page #> <Length> <x> <x+1>… <x+n>

# NOTE: The order of records is IMPORTANT…
# The 'Unit serial number:' should be last (except for VPD data)
# i.e.
# Order is : Vendor ID, Product ID, Product Rev and serial number finally
# Zero, one or more VPD entries.
#
# Each 'record' is sperated by one (or more) blank lines.
# Each 'record' starts at column 1

Library: 2 CHANNEL: 0 TARGET: 0 LUN: 0
Vendor identification: STK
Product identification: L700
Product revision level: 5500
Unit serial number: XYZZY

Drive: 1 CHANNEL: 0 TARGET: 1 LUN: 0
Library ID: 2 Slot: 1
Vendor identification: QUANTUM
Product identification: SDLT600
Product revision level: 5500
Unit serial number: ZF7584364
Max density: 0×46
VPD: b0 04 00 02 01 00

Definir el contenido de la librería en el fichero /etc/mhvtl/library_contents:

# cat /etc/mhvtl/library_contents
# Define how many tape drives you want in the vtl..
# The 'XYZZY_...' is the serial number assigned to
# this tape device.

Drive 1: ZF7584364

# Place holder for the robotic arm. Not really used.
Picker 1:

# Media Access Port
# (mailslots, Cartridge Access Port, <insert your favourate name here>)
# Again, define how many MAPs this vtl will contain.
MAP 1:
MAP 2:
MAP 3:
MAP 4:

# And the 'big' on, define your media and in which slot contains media.
# When the rc script is started, all media listed here will be created
# using the default media capacity.
Slot 1:    800843S3
Slot 2: 800844S3
Slot 3: 800845S3
Slot 4: 800846S3
Slot 5: 800847S3
Slot 6: 800848S3
Slot 7: 800849S3
Slot 8: 800850S3
Slot 9: 800851S3
Slot 10: 800852S3
Slot 11: 800853S3
Slot 12: 800854S3
Slot 13: 800855S3
Slot 14: 800856S3
Slot 15: 800857S3
Slot 16: 800858S3
Slot 17: 800859S3
Slot 18: 800860S3
Slot 19: 800861S3
Slot 20: 800862S3
Slot 21:
Slot 22:
Slot 23:
Slot 24:
Slot 25:
Slot 26:
Slot 27:
Slot 28:
Slot 29:
Slot 30:
Slot 31: CLN001L1
Slot 32: CLN002L1

4.- Configurar SCST para dar visibilidad a los elementos de mhVTL por fibra.

Levantar  servicio mhVTL:

/etc/init.d/mhvtl start

Comprobación:

# lsscsi
[2:0:0:0]    disk    ATA      WDC WD7500AACS-0 01.0  /dev/sda
[8:0:0:0]    mediumx STK      L700             5500  -
[8:0:1:0]    tape    QUANTUM  SDLT600          5500  -

Se observan el VDISK (procedente de prueba anterior) y la librería STK L700 junto con el drive QUANTUM SDLT600 creados por mhVTL.

Se configura para que los dispositivos sean visibles por la HBA:

# echo "add 8:0:1:0 1" > /proc/scsi_tgt/groups/Default/devices

# echo "add 8:0:0:0 2" > /proc/scsi_tgt/groups/Default/devices

Y se pone en modo target el host asociado como interfaz en sysfs:

# echo “1″ >/sys/class/scsi_host/host7/target_mode_enabled

Comprobación:

# cat /sys/class/scsi_host/host7/active_mode

Target

# cat /proc/scsi_tgt/scsi_tgt
Device (host:ch:id:lun or name)                             Device handler
2:0:0:0                                                     dev_disk
vm_disk                                                     vdisk_fileio
8:0:1:0                                                     dev_tape
8:0:0:0                                                     dev_changer

Desde el Host con W2k8 que opera en modo initiator se observan desde el administrador de dispositivos de la siguiente forma:

Se ha instalado la Utilidad OneCommand manager de Emulex con propósito de diagnóstico, la librería y el drive emulados se observan de la siguiente forma:

Para comprobar la conectividad del host con la VTL por fibra  se han usado las utilidades mtx en su versión para Windows:

Estado de la librería:

c:\mtx>mtx.exe -f 3:0:0:2 status
Storage Changer 3:0:0:2:1 Drives, 36 Slots ( 4 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded):VolumeTag = 800843S3

Storage Element 1:Empty
Storage Element 2:Full :VolumeTag=800844S3
Storage Element 3:Full :VolumeTag=800845S3
Storage Element 4:Full :VolumeTag=800846S3
Storage Element 5:Full :VolumeTag=800847S3
Storage Element 6:Full :VolumeTag=800848S3
Storage Element 7:Full :VolumeTag=800849S3
Storage Element 8:Full :VolumeTag=800850S3
Storage Element 9:Full :VolumeTag=800851S3
Storage Element 10:Full :VolumeTag=800852S3
Storage Element 11:Full :VolumeTag=800853S3
Storage Element 12:Full :VolumeTag=800854S3
Storage Element 13:Full :VolumeTag=800855S3
Storage Element 14:Full :VolumeTag=800856S3
Storage Element 15:Full :VolumeTag=800857S3
Storage Element 16:Full :VolumeTag=800858S3
Storage Element 17:Full :VolumeTag=800859S3
Storage Element 18:Full :VolumeTag=800860S3
Storage Element 19:Full :VolumeTag=800861S3
Storage Element 20:Full :VolumeTag=800862S3
Storage Element 21:Empty
Storage Element 22:Empty
Storage Element 23:Empty
Storage Element 24:Empty
Storage Element 25:Empty
Storage Element 26:Empty
Storage Element 27:Empty
Storage Element 28:Empty
Storage Element 29:Empty
Storage Element 30:Empty
Storage Element 31:Full :VolumeTag=CLN001L1
Storage Element 32:Full :VolumeTag=CLN002L1
Storage Element 33 IMPORT/EXPORT:Empty
Storage Element 34 IMPORT/EXPORT:Empty
Storage Element 35 IMPORT/EXPORT:Empty
Storage Element 36 IMPORT/EXPORT:Empty

Información de la librería:

c:\mtx>tapeinfo.exe -f 3:0:0:2
Product Type: Medium Changer
Vendor ID: 'STK     '
Product ID: 'L700            '
Revision: '5500'
Attached Changer API: No
SerialNumber: 'XYZZY     '
Ready: yes

Información del drive:

c:\mtx>tapeinfo.exe -f Tape0
Product Type: Tape Drive
Vendor ID: 'QUANTUM '
Product ID: 'SDLT600         '
Revision: '5500'
Attached Changer API: No
SerialNumber: 'ZF7584364 '
MinBlock: 4
MaxBlock: 1048576
Ready: yes
BufferedMode: yes
Medium Type: Not Loaded
Density Code: 0×49
BlockSize: 0
DataCompEnabled: yes
DataCompCapable: yes
DataDeCompEnabled: yes
CompType: 0×10
DeCompType: 0×10
BOP: yes
Block Position: 0
Partition 0 Remaining Kbytes: 499
Partition 0 Size in Kbytes: 500
ActivePartition: 0
EarlyWarningSize: 0
NumPartitions: 0
MaxPartitions: 0

Carga de cinta de Slot 1 a drive 0:

c:\mtx>mtx.exe -f 3:0:0:2 load 1 0
Loading media from Storage Element 1 into drive 0…done

Descarga de drive 0 a slot 1:

c:\mtx>mtx.exe -f 3:0:0:2 unload 1 0
Unloading drive 0 into Storage Element 1…done

Como se puede observar la librería virtual opera correctamente a las peticiones descritas a través de fibra. Queda para un próximo post estudiar el comportamiento de la librería administrada por un software típico de backup.

Fuentes:

Proyecto mhvtl

Proyecto SCST

Foros de nimsa

Blog nsrd.info

Comentarios desactivados

SCST 3 – Poniendo a prueba un disco virtual en fibra basado en SCST

Tags: , , , , , , , ,

SCST 3 – Poniendo a prueba un disco virtual en fibra basado en SCST

Posted on 05 julio 2010 by Angel Ferrás Rodríguez

Para poner a prueba  el disco de fibra creado en el anterior post vamos a disponer de un servidor con Windows Server 2008 y una HBA Emulex LP-10000DC  con drivers en modo Initiator. El escenario creado para esta prueba es el siguiente:

Resumiendo: El servidor Centos con kernel vanilla preparado con proyecto SCST y una HBA con drivers en modo target es configurado para proporcinar un disco virtual(vdisk) a la SAN.  El disco virtual es un fichero que a través del módulo SCST es ofrecido por fibra óptica ( HBA operando en modo target). Por otro lado disponemos de un servidor con un sistema operativo Windows Server 2008  SP1, que dispone de una HBA operando en modo Initiator. Las dos HBAs están conectadas a una SAN y se ha realizado un zonning en el switch de fibra de forma que el Initiator pueda ver la lun correspondiente al vdisk.

Comprobación: Desde el servidor Windows se ve correctamente el disco de fibra creado, desde su administrador de dispositivos:

Aparecen dos discos tipo “disk drives” debido a que la HBA es de dos puertos y están zoneados al mismo disco. Hemos operado con sólo uno de los discos y lo hemos inicializado sin problemas:

Desde el servidor Centos comprobamos las sesiones en el target por los initiators (son dos, uno por cada puerto de la HBA Emulex usada):

# cat /proc/scsi_tgt/sessions

Target name          Initiator name                                Group name                   Active/All Commands Count

qla2x00tgt           10:00:00:00:c9:4f:56:a0                       Default                             0/0

qla2x00tgt           10:00:00:00:c9:4f:56:9f                       Default                             0/0

Hemos provocado simultáneas I/Os sobre el disco de fibra (copia, borrado y lectura de ficheros) con resultados  satisfactorios.

En breve, aumentaremos el tamaño del VDISK y lo someteremos a unas pruebas de rendimiento y stress. Igualmente se usará en el backend un disco físico.

Por otro lado, ya nos estamos preparando para nuestro próximo proyecto …. la emulación de una librería virtual de cintas (VTL) en fibra basado en el proyecto mhvtl que ya usamos en AA Labs en su versión para iSCSI.

Comments (2)

SCST 2 – Emulando un disco de fibra a partir de un servidor linux con SCST

Tags: , , , , , ,

SCST 2 – Emulando un disco de fibra a partir de un servidor linux con SCST

Posted on 01 julio 2010 by Angel Ferrás Rodríguez

Como se anunciaba en el anterior post se detallará el procedimiento mediante el  cual  un servidor linux con una HBA  ofrecerá almacenamiento sobre fibra a través del proyecto SCST. Para esta ocasión se ha usado una HBA QLA2340 con el propósito de integrar los drivers en modo target  con el módulo SCST, mostrándose como se podrá ofrecer un disco de fibra a partir de un fichero del sistema operativo.

Para ello hemos dispuesto de un equipo con las siguientes características:

Placa: ASRock ALiveNF7G-GLAN

RAM: 4 GB DDR 800 HHz Mushkin Extreme

Micro: AMD Athlon64 X2 4600+ 2.4 Ghz AM2 Box

SO: Centos 5.5 en su versión de 64 bits

HBA: QLogic QLA 2340

HD: Western Digital Caviar GP 750GB 5400 rpm SATA2 MAESTRO

HBA: QLogic QLA2340 PCI/PCI-X

Host con Centos 5.5 y HBA QLogic QLA2340 en modo target

QLogic QLA2340

Fases que consta el procedimiento:

1 – Cargar firmware de HBA

2 – Compilar un Kernel vanilla

3 – Compilar proyecto  SCST y drivers de QLogic

4- Configurar una lun accesible en modo target

1.- Cargar firmware de HBA

Se aconseja que la HBA  tenga un firmware de versión igual o superior a versión 5.xx para versiones de QLOGIC 24/25XX. Para la versión de HBA usada en el laboratorio, QLA2340, hemos descargado  ql2300_fw.bin.3.03.20 desde el siguiente link. Para otra versiones de HBAs QLogic aquí.

Se copia el archivo de firmware en la carpeta  /lib/firmware. Así el módulo qla2xxx(drivers de QLogic) que lleva por defecto la distribución lo cargará en la tarjeta en tiempo de arranque. El éxito de la carga del firmware se observará en la salida del comando dmesg de la siguiente forma :

qla2xxx 0000:01:0a.0: Found an ISP2312, irq 82, iobase 0xffffc20000028000
qla2xxx 0000:01:0a.0: Configuring PCI space…
qla2xxx 0000:01:0a.0: Configure NVRAM parameters…
qla2xxx 0000:01:0a.0: Verifying loaded RISC code…
qla2xxx 0000:01:0a.0: Allocated (412 KB) for firmware dump…
scsi4 : qla2xxx
qla2xxx 0000:01:0a.0:
QLogic Fibre Channel HBA Driver: 8.03.01.04.05.05-k
QLogic QLA2340 – 133MHz PCI-X to 2Gb FC, Single Channel
ISP2312: PCI (33 MHz) @ 0000:01:0a.0 hdma+, host#=4, fw=3.03.26 IPX


2 – Compilar un kernel vanilla

La versión inicial del kernel de partida en Centos 5.5 es:

# uname -a

Linux unknown001966cb53eb 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:08:30 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

Se descarga una versión vanilla (mainline)  desde kernel.org, versión 2.6.26:

#cd /usr/src

# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2

# bunzip2 /usr/src/linux-2.6.26.tar.bz2

# tar -xvf /usr/src/linux-2.6.26.tar

Se crean los enlaces simbólicos linux y kernel :

#ln -s /usr/src/linux-2.6.26 linux

#ln -s /usr/src/linux-2.6.26 kernel

Se descargan las fuentes del proyecto de SCST de su Subversion:

#cd  /root

#svn co https://scst.svn.sourceforge.net/svnroot/scst/trunk

(…)

A    trunk/nightly/bin

A    trunk/nightly/bin/nightly

A    trunk/nightly/README.txt

U   trunk

Revisión obtenida: 1792

Ir a carpeta /root/scst/trunk/src y parchear las fuentes del kernel que nos hemos descargado:



# cd /root/scst/trunk/

# cp /root/scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.26.patch /usr/src

# cp /root/scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.26.patch /usr/src

# cd /usr/src

# patch -p0 < scst_exec_req_fifo-2.6.26.patch

Eliminar los drivers de las fuentes del kernel vanilla y sustituir por su homólogo modificado que proporciona las fuentes de SCST:

# mv /usr/src/linux/drivers/scsi/qla2xxx /usr/src/linux/drivers/scsi/qla2xxx_orig

Incluir el driver de Qlogic en modo target  previo a la compilación del kernel:

#  ln -s /root/scst/trunk/qla2x00t /usr/src/linux/drivers/scsi/qla2xxx

Procedemos a configurar la compilación del kernel y sus módulos:

#cd /usr/src/linux

#make menuconfig

Desde el menú de configuración del kernel activar “Device Drivers->SCSI device support->SCSI low level drivers->Qlogic 2xxx target mode support”:

Modificar el fichero Makefile y cambiar la entrada EXTRAVERSION de “-prep”  a “-scst”:

#vi Makefile

(…)

VERSION = 2

PATCHLEVEL = 6

SUBLEVEL = 18

EXTRAVERSION = -scst

RHEL_MAJOR = 5

RHEL_MINOR = 5

NAME=Avast! A bilge rat!

(…)

Procedemos a compilar el kernel y módulos:

#make bzImage
(…)

Setup is 11384 bytes (padded to 11776 bytes).

System is 2783 kB

CRC 5f0d96a4

Kernel: arch/x86/boot/bzImage is ready (#1)

#make modules


(…)

Building modules, stage 2.

MODPOST 3 modules

CC drivers/net/s2io.mod.o

LD [M] drivers/net/s2io.ko

CC drivers/scsi/qla2xxx/qla2xxx.mod.o

LD [M] drivers/scsi/qla2xxx/qla2xxx.ko

CC drivers/scsi/scsi_wait_scan.mod.o

LD [M] drivers/scsi/scsi_wait_scan.ko

#make modules_install
#make install

Si el proceso ha ido bien, tendremos una entrada en el grub para el nuevo kernel creado preparado para levantar el modo target de la HBA:

#cat /boot/grub/menu.lst

(…)

title CentOS (2.6.26)
root (hd0,2)
kernel /vmlinuz-2.6.26 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.26.img

(…)

Hacemos un reinicio del sistema y arrancamos desde grub en CentOS (2.6.26) o el que se haya creado.

3 – Compilar proyecto  SCST y drivers de QLogic

Después del reinicio se comprueba que se ha cargado el nuevo kernel creado:

#uname -a
Linux unknown001966cb53eb 2.6.26 #1 SMP Sun Jun 27 19:42:12 CEST 2010 x86_64 x86_64 x86_64 GNU/Linux

Sobre el que compilaremos el módulo SCST que nos permitirá crear aquellos dispositivos visibles a través del target de fibra.

#cd /root/scst/trunk/scst/src

#make all

(…)

CC /root/scst/trunk/scst/src/scst.mod.o

LD [M] /root/scst/trunk/scst/src/scst.ko

make[1]: se sale del directorio `/usr/src/linux-2.6.26'

#make install

install -m 644 ../include/scst_const.h /usr/local/include/scst
rm -f /usr/local/include/scst/Modules.symvers
install -m 644 Module.symvers /usr/local/include/scst
/sbin/depmod -a 2.6.26
mkdir -p /var/lib/scst/pr
****************************************************************
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
*!!                                                          !!*
*!!  Now don’t forget to rebuild and reinstall all your      !!*
*!!  target drivers, custom dev handlers and necessary user  !!*
*!!  space applications. Otherwise, because of the versions  !!*
*!!  mismatch, you could have many problems and crashes.     !!*
*!!  See IMPORTANT note in the “Installation” section of     !!*
*!!  SCST’s README file for more info.                       !!*
*!!                                                          !!*
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
****************************************************************

# cd /root/scst/trunk/qla2x00t/qla2x00-target/

# make

(…)

target/qla2x00tgt.mod.o

LD [M] /root/scst/trunk/qla2x00t/qla2x00-target/qla2x00tgt.ko

make[1]: se sale del directorio `/usr/src/linux-2.6.26'

# make install

(…)

INSTALL /root/scst/trunk/qla2x00t/qla2x00-target/qla2x00tgt.ko

DEPMOD 2.6.26

make[1]: se sale del directorio `/usr/src/linux-2.6.26'

/sbin/depmod -a 2.6.26

Los binarios recién compilados se encuentran como módulos en /lib/modules/linux-2.6.26/extra:

# ls /lib/modules/2.6.26/extra/
dev_handlers  qla2x00tgt.ko  scst.ko

# ls -l /lib/modules/`uname -r`/extra/dev_handlers

/lib/modules/`uname -r`/extra/dev_handlers
total 224
-rw-r–r– 1 root root 13792 jun 27 19:55 scst_cdrom.ko
-rw-r–r– 1 root root 11375 jun 27 19:55 scst_changer.ko
-rw-r–r– 1 root root 15209 jun 27 19:55 scst_disk.ko
-rw-r–r– 1 root root 15366 jun 27 19:55 scst_modisk.ko
-rw-r–r– 1 root root 11391 jun 27 19:55 scst_processor.ko
-rw-r–r– 1 root root 11351 jun 27 19:55 scst_raid.ko
-rw-r–r– 1 root root 15142 jun 27 19:55 scst_tape.ko
-rw-r–r– 1 root root 51965 jun 27 19:55 scst_user.ko
-rw-r–r– 1 root root 62807 jun 27 19:55 scst_vdisk.ko

¿ que es cada módulo?

- scst – SCST itself
- scst_disk – device handler for disks (type 0)
- scst_tape – device handler for tapes (type 1)
- scst_processor – device handler for processors (type 3)
- scst_cdrom – device handler for CDROMs (type 5)
- scst_modisk – device handler for MO disks (type 7)
- scst_changer – device handler for medium changers (type 8)
- scst_raid – device handler for storage array controller (e.g. raid) (type C)
- scst_vdisk – device handler for virtual disks (file, device or ISO CD image).
- scst_user – user space device handler

4- Configurar una lun accesible en modo target

Para éste propósito se usará el módulo scst_vdisk a través del cual se ofrecerá un fichero de tamaño definido como una lun tipo disco en la SAN.

Cargamos los módulos, que para este caso sólo se necesitarían qla2xxx, qla2x00tgt y scst_vdisk, pero ya estamos pensando en el futuro ;-)

# for _mod in scst qla2xxx qla2x00tgt scst_vdisk scst_disk scst_changer scst_tape; do modprobe $_mod; done

# lsmod

Module Size Used by

scst_tape 10368 0

scst_changer 7936 0

scst_disk 10368 0

scst_vdisk 40556 0

qla2x00tgt 51480 0

scst 192628 5 scst_tape,scst_changer,scst_disk,scst_vdisk,qla2x00tgt

qla2xxx 186700 1 qla2x00tgt

Se crea un fichero de 512 MB en /mnt con nombre disk1:

# dd if=/dev/zero of=/mnt/disk1 bs=1024k count=512

512+0 records in

512+0 records out

536870912 bytes (537 MB) copied, 5,87352 seconds, 91,4 MB/s

# file /mnt/disk1

/mnt/disk1: data

Y se configura para que sea visible por la HBA:

# echo “open vm_disk /mnt/disk1″ > /proc/scsi_tgt/vdisk/vdisk

#  echo “add vm_disk 0″ >/proc/scsi_tgt/groups/Default/devices

El resultado de este proceso se puede observar en la salida del comando dmesg:

scst: Attached to scsi2, channel 0, id 0, lun 0, type 0
scst: Processing thread scsi_tgt0 (PID 6116) started
scst: Processing thread scsi_tgt1 (PID 6117) started
scst: Init thread started, PID 6118
scst: Task management thread started, PID 6119
scst: Management thread started, PID 6120
scst: SCST version 2.0.0-rc2-procfs loaded successfully (max mem for commands 928MB, per device 371MB)
scst: Enabled features: TRACING
Initializing QLogic Fibre Channel HBA Driver target mode addon version 2.0.0-rc2
Target mode driver for QLogic 2×00 controller registered successfully
scst: Target template qla2x00tgt registered successfully
scst: Virtual device handler vdisk_fileio for type 0 registered successfully
scst: Virtual device handler vdisk_blockio for type 0 registered successfully
scst: Virtual device handler vdisk_nullio for type 0 registered successfully
scst: Virtual device handler vcdrom for type 5 registered successfully
scst: Device 2:0:0:0: TST 0, QUEUE ALG 0, SWP 0, TAS 0, D_SENSE 0, has_own_order_mgmt 1
scst: Device handler “dev_disk” for type 0 registered successfully
scst: Device handler “dev_disk_perf” for type 0 registered successfully
scst: Device handler “dev_changer” for type 8 registered successfully
scst: Device handler “dev_tape” for type 1 registered successfully
scst: Device handler “dev_tape_perf” for type 1 registered successfully
dev_vdisk: Registering virtual vdisk_fileio device vm_disk
dev_vdisk: Attached SCSI target virtual disk vm_disk (file=”/mnt/disk1″, fs=512MB, bs=512, nblocks=1048576, cyln=512)
scst: Attached to virtual device vm_disk (id 1)
scst: Added device vm_disk to group Default (LUN 0, rd_only 0)

Para activar el modo target sólo quedaría introducir el valor 1 en el fichero target_mode_enabled correspondiente a su scsi_host asociado como interfaz sysfs.

# echo “1″ >/sys/class/scsi_host/host5/target_mode_enabled

Dejo unas comprobaciones verificando la correcta configuración de nuestro vdisk:

# cat /sys/class/scsi_host/host5/active_mode

Target

#  cat /proc/scsi_tgt/scsi_tgt
Device (host:ch:id:lun or name)                             Device handler
2:0:0:0                                                     dev_disk
vm_disk                                                     vdisk_fileio

# cat /proc/scsi_tgt/vdisk/vdisk

Name Size(MB) Block size Options File name T10 device id

vm_disk 512 512 /mnt/disk1 vm_disk 968d2339

#  cat /proc/scsi_tgt/groups/Default/devices

Device (host:ch:id:lun or name) LUN Options

vm_disk 0


El el siguiente post pondremos a prueba nuestro disco creado, usando un initiator de fibra sobre un host Windows Server 2008 con HBA QLA2340.

Fuentes:

How to configure QLogic target driver for 22xx/23xx/24xx/25xx adapters. Step by step guide.

Comments (3)

SCST – Creando toda una gama de dispositivos de fibra óptica

Tags: , , , , , , , , , , , ,

SCST – Creando toda una gama de dispositivos de fibra óptica

Posted on 28 junio 2010 by Angel Ferrás Rodríguez

Primer post de una serie dedicada a conocer el proyecto abierto SCST con licencia GPL. Aunque su implementación para targets iSCSI está bastante  difundida, no es así su implementación en fibra óptica (FCP). Tanto Qlogic como Emulex, líderes en el mercado del chipset de comunicaciones en HBAs de almacenamiento, están liberando su versión de drivers que conmutan de initiator a target, haciendo posible conocer el funcionamiento y protocolos de comunicación en esta imparable liberación de código y adecuación a estándares universales provocados por proyectos abiertos como SCST en Linux o COMSTAR en OpenSolaris. Como pasó en su momento con el proyecto Xen en el campo de la virtualización, no queda mucho para ver como las distribuciones enterprise UNIX/Linux  cercanas al OpenSource contendrán en sus repositorios el driver dual (initiator/target) de las HBAs, provocando un cambio en el modelo de negocio actual del almacenamiento. Así, un servidor podrá convertirse en una cabina de almacenamiento, o podrá emular cualquier otro dispositivo de fibra. Esta tendencia en la actualidad es liderada por Oracle/Sun Microsystems en sus productos OpenStorage (incluye modo target de Fibra basado en COMSTAR) u OpenSolaris (llevan los drivers duales para emlx y ql). Redhat y Novell/Suse, liderarán en breve soluciones equivalentes basadas en SCST,   … no me cabe la menor duda.

En el siguiente post veremos como se puede convertir un servidor con una distribución Linux y una HBA en …  una cabina de almacenamiento en fibra.

SCST fcp OpenStorage

Nota: link de empresas que desarrollan sus drivers sobre SCST.

Comments (1)

VTL en Laboratorio de Almacenamiento Abierto

Tags: , , , , , , , ,

VTL en Laboratorio de Almacenamiento Abierto

Posted on 30 mayo 2010 by Angel Ferrás Rodríguez

Incorporamos a nuestro laboratorio una VTL basada en el proyecto Linux Virtual Tape Library. El proyecto web Almacenamiento Abierto,  detallará en lo posible como se crea y configura cada elemento y escenario de nuestro entorno de pruebas. Para la sección VTL inicialmente hemos preparado los siguientes cuatro artículos :

VTL 1 – Virtualización de librerías de cintas –> Breve introducción a las librerías de cintas virtuales.

¿Que es SCST? –> Introducción al proyecto SCST sobre el cual está basado el proyecto Linux Virtual Tape Library.

VTL 2 – Creando una librería de cintas virtual Open Source sobre iSCSI –> Una guía para implementar paso a paso y de forma secilla una VTL basada en el proyecto Linux Virtual Tape Library.

VTL 3 – Comprobación de VTL Open Source sobre iSCSI operando con software de backup de Symantec –> Un ejemplo que demuestra como un software típico de administración de backup opera con la VTL creada en el capítulo anterior.

Comments (2)

VTL 3 – Comprobación de VTL Open Source sobre iSCSI operando con software de backup de Symantec

Tags: , , , , , ,

VTL 3 – Comprobación de VTL Open Source sobre iSCSI operando con software de backup de Symantec

Posted on 24 mayo 2010 by Angel Ferrás Rodríguez

A continuación se muestra como la VTL Open Source sobre iSCSI creada en el capítulo anterior se integra en un software típico de administración de copias de seguridad en cintas como Symantec Backup Exec 12.5 para servidores Windows.

El entorno elegido ha sido un Windows Server 2008 SP1 de 32 bits. Se ha hecho un escaneo de la IP del servidor que contiene el proyecto mhvtl desde su iSCSI initiator y ha reconocido todos sus dispositivos (targets iSCSI):

Desde la consola de Symantec Backup Exec 12.5 se observan igualmente las librerías y lectores de cintas:

Se hace una prueba sencilla: copia de respaldo de una carpeta del servidor y su restauración. Como se puede observar concluyen con éxito:

Comments (2)

VTL 2 – Creando una librería de cintas virtual Open Source en iSCSI

Tags: , , , , , ,

VTL 2 – Creando una librería de cintas virtual Open Source en iSCSI

Posted on 23 mayo 2010 by Angel Ferrás Rodríguez

La instalación se hará en cuatro fases:


1.- Obtener las fuentes del núcleo de Linux

2.- Compilar un núcleo con el proyecto SCST

3.- Compilar proyecto mhvtl

4.- Configurar dispositivos para mhvtl



El escenario:

Se ha elegido la instalación sobre un Sistema Operativo Centos versión 5.4 de 64 bits. En nuestro AA Labs hemos elegido una máquina virtual  hospedada en un VMWARE Server sobre OpenSuse 11.2.

1.- Obtener las fuentes del núcleo de Linux

Documentación:

Wiki CentOS: http://wiki.centos.org/HowTos/I_need_the_Kernel_Source

Foros de nimsa

Procedimiento:

Instalar entorno de compilación y todos los paquetes necesitados para las cuatro fases junto con todas sus dependencias:

# yum install make gcc hmaccalc openssl openssl-devel zlib-devel lsscsi mt-st mtx rpm-build redhat-rpm-config unifdef kernel-headers subversion

Crear usuario vtl y asignar contraseña:

# useradd vtl
# passwd vtl

Crear directorios /opt/mhvtl y /etc/mhvtl y se hace propietario a nuevo usuario:

# mkdir /opt/mhvtl
# chown -Rf vtl:vtl /opt/mhvtl

# mkdir /etc/mhvtl
# chown -Rf vtl:vtl /etc/mhvtl

Loguearse como usuario vtl:

#su – vtl

Conocer la versión del núcleo Linux que corre en tu sistema:

$ uname -a

Linux centos.ferras.local 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:08:30 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

Desempaquetar y preparar los archivos Fuentes:

[vtl@centos ~]$ cd

[vtl@centos ~]$ mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

[vtl@centos ~]$ echo ‘%_topdir %(echo $HOME)/rpmbuild’ > .rpmmacros

Descargar el paquete de Fuentes que corresponde a la versión de Kernel de tu CentOS/RHEL desde aquí e instalarlo:

$ rpm -i http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-194.3.1.el5.src.rpm

$ cd ~/rpmbuild/SPECS

$ rpmbuild -bp --target=`uname -m` kernel-2.6.spec

Comprobar que el árbol de fuentes del kernel esté en /home/vtl/rpmbuild/BUILD/:

$ ls ~/rpmbuild/BUILD/

kernel-2.6.18[vtl@centos SPECS]$ cp -Rf /home/vtl/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 /usr/src/kernels/

Copiarlos como root a /usr/src/kernels:

#cp -Rf /home/vtl/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 /usr/src/kernels/

2.- Compilar un núcleo con el proyecto SCST

Documentación:

Howto ISCSI-SCST: http://iscsi-scst.sourceforge.net/iscsi-scst-howto.txt

Foros de nimsa

Procedimiento:

Como usuario root descargar proyecto scst con subversion y añadir los parches indicados:

# cd /root

# svn co https://scst.svn.sourceforge.net/svnroot/scst/trunk scst

# cd /usr/src/kernels/linux-2.6.18.x86_64

# patch -p1 < /root/scst/iscsi-scst/kernel/patches/put_page_callback-2.6.18.1.patch

# patch -p1 < /root/scst/scst/kernel/scst_exec_req_fifo-2.6.18.patch

Compilar la imagen del kernel:

# make clean
# make && make modules
# make modules_install && make install

Comprobar que ha creado entrada el el grub de nuevo kernel vmlinuz-2.6.18-prep:

# cat /boot/grub/menu.lst

(…)

title CentOS (2.6.18-prep)

root (hd0,0)

kernel /vmlinuz-2.6.18-prep ro root=/dev/VolGroup00/LogVol00

initrd /initrd-2.6.18-prep.img

Reiniciar sistema con nuevo kernel y comprobarlo:

# uname -a

Linux centos.ferras.local 2.6.18-prep #1 SMP Thu May 20 21:13:48 CEST 2010 x86_64 x86_64 x86_64 GNU/Linux

Crear e instalar módulo scst:

#cd /root/scst
#make scst scst_install iscsi iscsi_install scstadm scstadm_install

3.- Compilar proyecto mhvtl

Documentación:

Proyecto Linux Virtual Tape Library

Foros de nimsa

Procedimiento:

Descargar proyecto mhvl en formato tgz desde aquí, se ha elegido la versión de desarrollo mhvtl-2010-05-08 (0.18-7):

# wget http://sites.google.com/site/linuxvtl2/mhvtl-2010-05-08.tgz?attredirects=0

Descomprimir y compilar:

# tar xzvf mhvtl-2010-05-08.tgz

# cd mhvtl-0.18/

# make distclean

# cd kernel

# make

# make install

# cd ..

#make

# make install

4.- Configurar dispositivos para mhvtl

Documentación:

Foros de nimsa

Procedimiento:

En el foro de nimsa se ha publicado un script para la creación automática de los ficheros de configuración iscsi-scstd.conf y scst.conf. De esta forma crea una configuración particular de librerías y drives emulados por iSCSI:

[root@centos ~]# cat make_scst_config.sh

#!/bin/ksh

# Customize your own

IQN=iqn.2010-05.es.ferras

# Build /etc/iscsi-scstd.conf

lsscsi -g | grep -e tape -e mediumx| awk ‘{print $1}’| cut -d “[" -f2| cut -d "]” -f1| while read each; do

echo “Target $IQN:$each” >>/tmp/iscsi-scstd.tmp

done

if [ -f /etc/iscsi-scstd.conf ]; then

cp -f /etc/iscsi-scstd.conf /etc/iscsi-scstd.conf_`date +%m%d%y%H%M%S`

echo Created backup of existing /etc/iscsi-scstd.conf as /etc/iscsi-scstd.conf_`date +%m%d%y%H%M%S`

fi

cat /tmp/iscsi-scstd.tmp >/etc/iscsi-scstd.conf

echo Created new /etc/iscsi-scstd.conf

rm -f /tmp/iscsi-scstd.tmp

echo ——-

# Build /etc/scst.conf

echo “[HANDLER changer]” >/tmp/scst.tmp

lsscsi -g| grep mediumx | awk ‘{print $1}’| cut -d “[" -f2| cut -d "]” -f1| while read each1; do

echo DEVICE $each1 >>/tmp/scst.tmp

done

echo “[HANDLER tape]” >>/tmp/scst.tmp

lsscsi -g| grep tape | awk ‘{print $1}’| cut -d “[" -f2| cut -d "]” -f1 | while read each2; do

echo DEVICE $each2 >>/tmp/scst.tmp

done

lsscsi -g | grep -e tape -e mediumx|awk ‘{print $1}’| cut -d “[" -f2| cut -d "]” -f1| while read each3; do

echo “[GROUP Default_$IQN:$each3]” >>/tmp/scst.tmp

done

lsscsi -g | grep -e tape -e mediumx| awk ‘{print $1}’| cut -d “[" -f2| cut -d "]” -f1| while read each4; do

echo “[ASSIGNMENT Default_$IQN:$each4]” >>/tmp/scst.tmp

echo “DEVICE $each4,0″ >>/tmp/scst.tmp

done

if [ -f /etc/scst.conf ]; then

cp -f /etc/scst.conf /etc/scst.conf_`date +%m%d%y%H%M%S`

echo Created backup of  existing /etc/scst.conf as /etc/scst.conf_`date +%m%d%y%H%M%S`

fi

cat /tmp/scst.tmp >/etc/scst.conf

echo Created new /etc/scst.conf

rm -f /tmp/scst.tmp

echo — Done —

Ejecutarlo:

# sh make_scst_config.sh

Arrancar mhvtl:

/etc/init.d/mhvtl start

Cargar los módulos scst:

modprobe scst
modprobe scst_tape
modprobe scst_changer

Si hemos llegado hasta aquí sin errores deberíamos ver los nuevos dispositivos SCSI del sistema:

# lsscsi

[0:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda

[1:0:0:0]    mediumx SPECTRA  PYTHON           550V  -

[1:0:1:0]    tape    IBM      ULT3580-TD4      550V  /dev/st0

[1:0:2:0]    tape    IBM      ULT3580-TD4      550V  /dev/st1

[1:0:3:0]    tape    IBM      ULT3580-TD4      550V  /dev/st2

[1:0:4:0]    tape    IBM      ULT3580-TD4      550V  /dev/st3

[1:1:0:0]    mediumx SPECTRA  PYTHON           550V  -

[1:1:1:0]    tape    IBM      ULT3580-TD4      550V  /dev/st4

[1:1:2:0]    tape    IBM      ULT3580-TD4      550V  /dev/st5

[1:1:3:0]    tape    IBM      ULT3580-TD4      550V  /dev/st6

[1:1:4:0]    tape    IBM      ULT3580-TD4      550V  /dev/st7

# cat /proc/scsi_tgt/scsi_tgt

Device (host:ch:id:lun or name)                             Device handler

0:0:0:0                                                     dev_disk

1:0:1:0                                                     dev_tape

1:0:2:0                                                     dev_tape

1:0:3:0                                                     dev_tape

1:0:4:0                                                     dev_tape

1:1:1:0                                                     dev_tape

1:1:2:0                                                     dev_tape

1:1:3:0                                                     dev_tape

1:1:4:0                                                     dev_tape

1:0:0:0                                                     dev_changer

1:1:0:0                                                     dev_changer

Una comprobación de que los targets iSCSI están correctamente levantados puede ser la siguiente: Desde un Windows XP con el initiator iSCSI instalado se hace un scan a la IP del servidor mhvtl. Se deberán detectar todos los dispositivos iSCSI:

initiator xp

Y desde el  Administrador de dispositivos:


El el siguiente capítulo vamos a poner a prueba la mhvtl creada desde un software de backup, Symantec Backup Exec.

Comments (4)