Sie sind auf Seite 1von 7

Montando un iniciador iSCSI en Linux

o o o o Configurar el iniciador iSCSI Conectar automticamente el recurso iSCSI Particionar y formatear el disco iSCSI Montar automticamente las particiones dentro del disco cada vez que se conecte

Open-iscsi en uno de los iniciadores iSCSI de Linux ms utilizado; adems est dentro de la paquetera de Debian. Este instalar un script de inicio que carga los mdulos y lanza un programa que controla el iniciador (iscsid), y un programa para configurar el iniciador (iscsiadm). Los mdulos para iSCSI ya estn presente en los kernels actuales (desde el 2.6.18 en adelante) por eso no se incluyen en el paquete de open-iscsi. Configuracin de open-iscsi Crear un link para fijar la ruta de archivos de autologin
ln -s /etc/{iscsid.conf,initiatorname.iscsi} /etc/iscsi/

El archivo de configuracin por defecto se encuentra en /etc/iscsi/iscsid.conf o ~/.iscsid.conf. Editar el archivo /etc/iscsi/iscsid.conf
# nano /etc/iscsi/iscsid.conf

Modificar y/o verificar que coincidan los valores de los siguientes atributos:
node.startup = automatic node.session.auth.username = MY-ISCSI-USER (nicamente si se utiliza CHAP) node.session.auth.password = MY-ISCSI-PASSWORD (nicamente si se utiliza CHAP) discovery.sendtargets.auth.username = MY-ISCSI-USER (nicamente si se utiliza CHAP) discovery.sendtargets.auth.password = MY-ISCSI-PASSWORD (nicamente si se utiliza CHAP) node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.login_timeout = 15 node.conn[0].timeo.logout_timeout = 15 node.conn[0].timeo.noop_out_interval = 10 node.conn[0].timeo.noop_out_timeout = 15 node.session.iscsi.InitialR2T = No node.session.iscsi.ImmediateData = Yes node.session.iscsi.FirstBurstLength = 262144 node.session.iscsi.MaxBurstLength = 16776192 node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536

Guardar y salvar el archivo. Reiniciar el servicio open-iscsi:


# /etc/init.d/open-iscsi restart

La configuracin de open-iscsi se realiza a travs del comando iscsiadm y la misma se guarda en una base de datos. Si queremos cambiar algn parmetro de la configuracin tenemos que hacerlo a travs de iscsiadm. Deteccin del target En primer lugar tenemos que indicarle a iscsiadm que detecte nuestro target iSCSI y lo agregue a su base de datos. Hay que aclarar que iscsiadm tiene tres formas de operacin discovery: En este modo se pueden descubrir targets y agregarlos a la base de datos. node: En este modo se administran los targets ya descubiertos y se pueden visualizar datos acerca de estos nodos, as como conectarse a ellos. session: En este modo se administran los targets a los que se est conectados (en los que se ha hecho login). Para detectar el target usamos:
# iscsiadm -m discovery -t sendtargets p 10.200.3.79 10.200.3.79:3260,1 iqn.1991-05.com.microsoft:storagecc-moodle-target

Se le indico al iscsiadm que descubra los targets que le ofrece el portal ubicado en la direccin 10.200.3.79. El mtodo que usa para descubrirlo es sendtargets , que es el mtodo soportado ms estable. Como se observa este descubri el target que se configuro previamente. Nota: Para determinar el IQN del servidor host, leer el archivo initiatorname.iscsi que est en en /etc/iscsi. Este valor servir para configurar el target.
# more initiatorname.iscsi InitiatorName=iqn.1993-08.org.debian:01:21524bc4686

Ahora, si queremos saber cul es la informacin que se almacen sobre el target descubierto, tenemos que operar en modo nodo
# iscsiadm -m node -T iqn.1991-05.com.microsoft:storagecc-moodle-target -p 10.200.3.79
node.name = iqn.1991-05.com.microsoft:storagecc-moodle-target node.tpgt = 1 node.startup = automatic iface.hwaddress = default iface.iscsi_ifacename = default iface.net_ifacename = default iface.transport_name = tcp iface.initiatorname = <empty> node.discovery_address = 10.200.3.79 node.discovery_port = 3260 node.discovery_type = send_targets node.session.initial_cmdsn = 0 node.session.initial_login_retry_max = 8 node.session.cmds_max = 128 node.session.queue_depth = 32 node.session.auth.authmethod = None node.session.auth.username = <empty> node.session.auth.password = <empty> node.session.auth.username_in = <empty> node.session.auth.password_in = <empty> node.session.timeo.replacement_timeout = 120 node.session.err_timeo.abort_timeout = 15 node.session.err_timeo.lu_reset_timeout = 20 node.session.err_timeo.host_reset_timeout = 60 node.session.iscsi.FastAbort = Yes node.session.iscsi.InitialR2T = No node.session.iscsi.ImmediateData = Yes node.session.iscsi.FirstBurstLength = 262144 node.session.iscsi.MaxBurstLength = 16776192 node.session.iscsi.DefaultTime2Retain = 0 node.session.iscsi.DefaultTime2Wait = 2 node.session.iscsi.MaxConnections = 1 node.session.iscsi.MaxOutstandingR2T = 1 node.session.iscsi.ERL = 0 node.conn[0].address = 10.200.3.79 node.conn[0].port = 3260 node.conn[0].startup = manual node.conn[0].tcp.window_size = 524288 node.conn[0].tcp.type_of_service = 0 node.conn[0].timeo.logout_timeout = 15 node.conn[0].timeo.login_timeout = 15 node.conn[0].timeo.auth_timeout = 45 node.conn[0].timeo.noop_out_interval = 10 node.conn[0].timeo.noop_out_timeout = 10 node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536 node.conn[0].iscsi.HeaderDigest = None node.conn[0].iscsi.DataDigest = None node.conn[0].iscsi.IFMarker = No node.conn[0].iscsi.OFMarker = No

Login en el dispositivo Ahora que la informacin del target ya est configurada, podemos empezar a usarlo. Para ello debemos hacer login o autenticarnos en el target.
# iscsiadm -m node -T iqn.1991-05.com.microsoft:storagecc-moodle-target -p 10.200.3.79:3260 l

La opcin -l indica que queremos hacer login en el target. Esto significa que el disco iSCSI estar disponible como un dispositivo de hardware ms en nuestro servidor. Para comprobar si el disco iSCSI se detecto y se conect al equipo basta con ver la salida de dmesg.
#dmesg [266526.849541] Loading iSCSI transport class v2.0-869. [266526.849541] iscsi: registered transport (tcp) [266526.874950] iscsi: registered transport (iser) [266527.207384] scsi9 : iSCSI Initiator over TCP/IP [266527.606534] scsi 9:0:0:0: Direct-Access MSFT Virtual HD 3.1 PQ: 0 ANSI: 5 [266527.619272] sd 9:0:0:0: [sdc] 409600 512-byte hardware sectors (210 MB) [266527.717515] sd 9:0:0:0: [sdc] Write Protect is off [266527.717531] sd 9:0:0:0: [sdc] Mode Sense: 03 00 00 00 [266527.719263] sd 9:0:0:0: [sdc] Got wrong page [266527.719263] sd 9:0:0:0: [sdc] Assuming drive cache: write through [266527.719263] sd 9:0:0:0: [sdc] 409600 512-byte hardware sectors (210 MB) [266527.719348] sd 9:0:0:0: [sdc] Write Protect is off [266527.719353] sd 9:0:0:0: [sdc] Mode Sense: 03 00 00 00 [266527.719971] sd 9:0:0:0: [sdc] Got wrong page [266527.719998] sd 9:0:0:0: [sdc] Assuming drive cache: write through [266527.720027] sdc: sdc1 [266527.721265] sd 9:0:0:0: [sdc] Attached SCSI disk [266527.721314] sd 9:0:0:0: Attached scsi generic sg5 type 0

Montaje automtico del dispositivo de hardware iSCSI Se define que se haga login al target y se conecte el disco automticamente cada vez que se inicie el servicio open-iscsi.
# iscsiadm -m node -T iqn.1991-05.com.microsoft:storagecc-moodle-target -p 10.200.3.79 -o update -n node.conn[0].startup -v automatic

Finalmente se reinicia el servicio open-iscsi y el disco iSCSI debera ser detectado automticamente y conectado al equipo.
# /etc/init.d/open-iscsi restart

Particionar y formatear el disco iSCSI Aunque el disco iSCSI ya est conectado, no es operable hasta que se definan las particiones en l y estn formateadas en un sistema que el kernel maneje. Para ello se utiliza fdisk en cualquiera de sus variantes. La informacin de dmesg que se obtuvo anteriormente indica que el disco se reconoci como /dev/sdc Creando la particin (seguir men):
# fdisk /dev/sdc

Formateando la particin:
# mkfs.ext3 /dev/sdc1

Montando el sistema de archivo:


# mkdir /iscsi # mount /dev/sdc1 /iscsi

Montaje automtico del filesystem No solo se necesita que el disco iSCSI se conecte automticamente sino que tambin las particiones dentro del disco se monten al inicio para que estn disponibles para el servicio que las usar. En los sistemas Linux, el fichero /etc/fstab indica qu particiones deben ser montadas en el inicio, dnde y con qu opciones. Identificacin del dispositivo de hardware. Para poder indicarle al sistema automticamente qu particin se debe montar, se debe conocer el dispositivo que apunta a dicha particin. Por ello es necesario buscar una forma de referirnos al dispositivo de forma esttica. Con el comando udevinfo indicara qu links se crearon en Udev para dicho dispositivo.
# udevinfo --query symlink --name /dev/sdc1
disk/by-id/scsi-149455400000000000000000001000000980b00000d000000 disk/by-path/ip-10.200.3.79:3260-iscsi-iqn.1991-05.com.microsoft:storagecc-moodle-target-lun-0-part1 disk/by-uuid/3c5c1fc8-cec1-41d4-8b92-11becd5f4832

Udevinfo muestra tres links simblicos que cre en /dev. De estos links, los dos ltimos sern de utilidad porque identifican unvocamente al disco. El primero est creado usando el path, que en el caso incluye el ip del servidor iSCSI, el puerto, el nombre del target, y el identificador de la particin (lun-0). El segundo se crea a partir del uuid del disco, que es un identificador nico que se asigna a la particin cuando es creada, y que por ende se borra solamente si se elimina la particin. Teniendo esta informacin, se conoce qu nodo en /dev (o qu link simblico) se tiene que usar en /etc/fstab. En este caso se utilizara la identificacin por path, usando por lo tanto el siguiente link simblico para el dispositivo:
#nano /etc/fstab
/dev/ part1 disk/by-path/ip-10.200.3.79:3260-iscsi-iqn.1991-05.com.microsoft:storagecc-moodle-target-lun-0/iscidriver auto defautl,_netdev 0 1

Sin embargo si se reinicia el servidor, el disco iSCSI no es montado y el sistema da un error indicando que el dispositivo no existe. La razn es simple: el script que monta las particiones en /etc/fstab es cargado antes de que la red y que el servicio iniciador open-iscsi. Por lo tanto el dispositivo es creado luego y por eso no se monta. La configuracin de Udev funciona en base a reglas. Estas reglas comparan que la informacin sobre el hardware conectado coincida con ciertos valores y si es as, crean el nodo del dispositivo con cierto nombre o ejecutan algn programa. Para ello se debe obtener los valores que Udev recibe del dispositivo remoto e identificar uno que indique que el dispositivo es un disco iSCSI. Para ello volvemos se debe usar
udevinfo # udevinfo -q env -n /dev/sda ID_VENDOR=IET ID_MODEL=VIRTUAL-DISK ID_REVISION=0 ID_SERIAL=1494554000000000030303030303100000000000000000000 ID_SERIAL_SHORT=494554000000000030303030303100000000000000000000 ID_TYPE=disk ID_BUS=scsi ID_PATH=ip-192.168.1.110:3260-iscsi-iqn.2005-02.au.com.empresa:san.200G.samba-lun-0 ID_FS_USAGE=filesystem ID_FS_TYPE=ext3 ID_FS_VERSION=1.0 ID_FS_UUID=3c5c1fc8-cec1-41d4-8b92-11becd5f4832 ID_FS_LABEL= ID_FS_LABEL_SAFE=

El comando interroga a Udev y le dice que muestre todos los valores del tipo env para el dispositivo /dev/sdc. El valor a buscar es ID_PATH , porque contiene la palabra iscsi . Se crea el archivo /etc/udev/rules.d/z99_open-iSCSI.rules con la siguiente lnea:
#nano /etc/udev/rules.d/z99_open-iSCSI.rules
ENV {ID_PATH}=="*iscsi*", RUN+="/bin/mount -a -O _netdev"

Esta regla es leda por Udev cada vez que se conecta un dispositivo nuevo al sistema. Lo que hace es verificar que el valor ID_PATH del dispositivo contenga la cadena iscsi , si es as, el dispositivo conectado es del tipo iSCSI y por lo tanto corre el comando mount. Como se observa, mount se llama con dos parmetros:
-a para que trate de montar lo que encuentre en /etc/fstab -O _netdev para que solo monte las entradas de /etc/fstab que tengan marcada la opcin _netdev

Como la entrada en fstab para el disco iSCSI contiene la opcin _netdev , ser montado automticamente. Si hacemos la prueba y reiniciamos el servicio open-iscsi, veremos que en cuanto Udev detecta el nuevo disco iSCSI, monta la particin que creamos en l.