En esta entrada vamos a ver iSCSI en un servidor linux y usaremos clientes tanto linux como Windows:
1- En primer lugar creamos las maquinas en OpenStack una maquina Windows, una maquina Ubuntu que usaremos como servidor y otra maquina debian que la usaremos de cliente al igual que Windows.
2- A continuación nos vamos a la maquina ubuntu donde crearemos un grupo de volumenes en su disco secundarios que en este caso es «/dev/vdb», pero antes debemos de desmosntar el disco para poder crearlo:
root@san:/home/ubuntu# umount /dev/vdb root@san:/home/ubuntu#
Luego creamos el volumen físico:
root@san:/home/ubuntu# pvcreate /dev/vdb Physical volume "/dev/vdb" successfully created root@san:/home/ubuntu#
Para verificar que se ha creado correctamente ejecutamos «pvdisplay»:
root@san:/home/ubuntu# pvdisplay "/dev/vdb" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/vdb VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID xSGoR9-K4Zj-qXPE-0xHY-fHql-519H-2h1YQr root@san:/home/ubuntu#
Ahora debemos de crear el grupo al que llamaremos «SAN»:
root@san:/home/ubuntu# vgcreate san /dev/vdb Volume group "san" successfully created root@san:/home/ubuntu# root@san:/home/ubuntu# vgdisplay --- Volume group --- VG Name san System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 10.00 GiB PE Size 4.00 MiB Total PE 2559 Alloc PE / Size 0 / 0 Free PE / Size 2559 / 10.00 GiB VG UUID 7Jd0re-Uabx-NHce-G0Mp-iKNz-a0Pr-YTR2py root@san:/home/ubuntu#
3- El siguiente paso que debemos de dar es crear 4 volumenes lógicos, para eso vamos a hacer lo siguiente:
root@san:/home/ubuntu# lvcreate -n v1 -L 2.5G san Logical volume "v1" created root@san:/home/ubuntu# lvcreate -n v2 -L 2.5G san Logical volume "v2" created root@san:/home/ubuntu# lvcreate -n v3 -L 2.5G san Logical volume "v3" created root@san:/home/ubuntu# lvcreate -n v4 -L 2G san Logical volume "v4" created root@san:/home/ubuntu#
Luego hacemos un «lvdisplay» y vemos que se han creado correctamente los 4 volumenes lógicos:
root@san:/home/ubuntu# lvdisplay --- Logical volume --- LV Path /dev/san/v1 LV Name v1 VG Name san LV UUID mlqf49-1FXe-hgH5-aIAg-K2oo-3aps-B7pGq6 LV Write Access read/write LV Creation host, time san, 2014-12-05 14:11:59 +0000 LV Status available # open 0 LV Size 2.50 GiB Current LE 640 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0 --- Logical volume --- LV Path /dev/san/v2 LV Name v2 VG Name san LV UUID F7kzJg-opIx-oeRQ-a78z-qYa1-Bva8-qz9mm8 LV Write Access read/write LV Creation host, time san, 2014-12-05 14:12:10 +0000 LV Status available # open 0 LV Size 2.50 GiB Current LE 640 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1 --- Logical volume --- LV Path /dev/san/v3 LV Name v3 VG Name san LV UUID eBfc0Y-nwPd-Kjs4-y431-hzP5-JXWg-Rgej7w LV Write Access read/write LV Creation host, time san, 2014-12-05 14:12:17 +0000 LV Status available # open 0 LV Size 2.50 GiB Current LE 640 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:2 --- Logical volume --- LV Path /dev/san/v4 LV Name v4 VG Name san LV UUID EXUnxm-HZWU-3PLn-OCS0-PZFu-PfVy-NRDIAu LV Write Access read/write LV Creation host, time san, 2014-12-05 14:12:33 +0000 LV Status available # open 0 LV Size 2.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:3 root@san:/home/ubuntu#
4- Luego debemos de instalar el paquete «tgt»:
root@san:/home/ubuntu# apt-get install tgt
5- Ahora debemos de configurar iSCSI para que exporte un target, para eso primero debemos de crearlos en el fichero «/etc/tgt/targets.conf» de la siguiente manera.
<target iqn.2014-12.com.tecmint:tgt1> backing-store /dev/san/v1 </target>
Y luego reiniciamos el servicios tgt:
root@san:/home/ubuntu# /etc/init.d/tgt reload * Reloading configuration of target framework daemon tgtd [ OK ] root@san:/home/ubuntu#
Para verificar que esta creado el target ejecutamos el siguiente comando:
tgtadm --mode target --op show
Y nos mostrará lo siguiente:
root@san:/home/ubuntu# tgtadm --mode target --op show Target 1: iqn.2014-12.com.tecmint:tgt1 System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: null Backing store path: None Backing store flags: Account information: ACL information: ALL root@san:/home/ubuntu#
Luego nos vamos a la maquina cliente e instalamos el paquete «iscsi-initiator-utils» y luego hacemos debemos de hacer un discover con el siguiente comando:
root@san-cliente:/home/debian# iscsiadm -m discovery -t st -p 10.0.0.28 10.0.0.28:3260,1 iqn.2014-12.com.tecmint:tgt1 root@san-cliente:/home/debian#
6- A continuación lo que vamos a hacer es que iSCSI exporte un target con autenticación para ello lo que debemos de hacer es irnos al fichero «/etc/tgt/targets.conf» de nuevo y editamos otro target pero esta vez le añadiremos los parametros para que sean con autenticación:
<target iqn.2014-12.com.tecmint:tgt2> backing-store /dev/san/v2 IncomingUser usuario usuario </target>
7- El siguiente paso que vamos a realizar es configurar iSCSI para que los dos volumenes que nos quedan los exportemos como unos solo para ello lo unico que hay que hacer es introducir en el target los dos volumenes que quedan:
<target iqn.2014-12.com.tecmint:tgt3.tgt4> backing-store /dev/san/v3 backing-store /dev/san/v4 </target>
8- El siguiente paso es inicializar el primer target en la maquina cliente y formatearlo en XFS y luego lo montaremos en la carpeta /mnt:
Hacemos un «discovery» para visualizar los targets y vemos que son los que hemos configurado anteriormente:
root@san-cliente:/home/debian# iscsiadm -m discovery -t st -p 10.0.0.28 10.0.0.28:3260,1 iqn.2014-12.com.tecmint:tgt1 10.0.0.28:3260,1 iqn.2014-12.com.tecmint:tgt2 10.0.0.28:3260,1 iqn.2014-12.com.tecmint:tgt3.tgt4 root@san-cliente:/home/debian#
Luego conectamos el target al cliente, sera el primero de todos el que termina en «tdt1»:
root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt1 --portal 10.0.0.28:3260 --login Logging in to [iface: default, target: iqn.2014-12.com.tecmint:tgt1, portal: 10.0.0.28,3260] (multiple) Login to [iface: default, target: iqn.2014-12.com.tecmint:tgt1, portal: 10.0.0.28,3260] successful. root@san-cliente:/home/debian#
El siguiente paso es formatear el disco que se nos ha añadido que es en este caso «/dev/sda» y lo montamos en /mnt:
root@san-cliente:/home/debian# mkfs.xfs /dev/sda meta-data=/dev/sda isize=256 agcount=4, agsize=163840 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=655360, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 root@san-cliente:/home/debian# mount /dev/sda /mnt root@san-cliente:/home/debian#
Para comprobar ques esta montado hacemos un «df -h»:
root@san-cliente:/home/debian# df -h Filesystem Size Used Avail Use% Mounted on rootfs 1007M 677M 280M 71% / udev 10M 0 10M 0% /dev tmpfs 50M 144K 50M 1% /run /dev/vda1 1007M 677M 280M 71% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 100M 0 100M 0% /run/shm /dev/sda 2.5G 33M 2.5G 2% /mnt root@san-cliente:/home/debian#
9- A continución vamos a montar el segundo target en la maquina Windows, en primer lugar lo que debemos de hacer es inicializar iSCASI en Windows, para ello nos vamos a «Herramientas Administrativas» y hacemos clic en «Iniciador de iSCASI»:
Nos vamos a pestaña «Discovery» e instroducimos las dirección IP del servidor.
Luego volvemos a irnos a la pestaña «Target» y vemos que nos aparecen los distintos targets creados en el servidor:
Ahora los que debemos de hacer es coger el target que queramos usar y pinchar en «connect» e inmediatamente nos paracera como conectado:
Luego nos vamos al administrador de disco y vemos que efectivamente se ha conectado. Ahora debemos de formatearlos con el sistema de fichero NTFS, no debemos de olvidar de tenemos que poner el disco en «online» haciendo clic secundario:
Una vez hecho esto nos vamos al disco y añadimos un fichero con contenido:
10- Lo siguiente que vamos a hacer es inicializar el 3º target en la maquina cliente de linux y formatearemos los volumenes en «ext3» y en «vfat»:
Nos conectamos como hemos hecho anteriormente:
root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt3.tgt4 --portal 10.0.0.28:3260 --login Logging in to [iface: default, target: iqn.2014-12.com.tecmint:tgt3.tgt4, portal: 10.0.0.28,3260] (multiple) Login to [iface: default, target: iqn.2014-12.com.tecmint:tgt3.tgt4, portal: 10.0.0.28,3260] successful. root@san-cliente:/home/debian#
Una vez hecho esto procedemos a formatear los dos volumenes que contiene el target:
root@san-cliente:/home/debian# mkfs.ext3 /dev/sdb mke2fs 1.42.5 (29-Jul-2012) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 163840 inodes, 655360 blocks 32768 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=671088640 20 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: 1/20 done root@san-cliente:/home/debian#
Ahora creamos la farticion que necesita vfat para poder formatear y realizamos el formateo:
root@san-cliente:/home/debian# mkfs.vfat -n datos -F 32 /dev/sdc1 mkfs.vfat 3.0.13 (30 Jun 2012) root@san-cliente:/home/debian#
11- Ahora lo que debemos de hacer es redimensionar el LUN1, para poder visualizar los LUN que tenemos ejecutamos el comando «tgtadm –lld iscsi –mode target –op show»:
LUN: 1 Type: disk SCSI ID: IET 00030001 SCSI SN: beaf31 Size: 2684 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: rdwr Backing store path: /dev/san/v3 Backing store flags:
Vemos que el tamaño del LUN:1 tiene un tamaño de 2684 MB, lo que queremos hacer es que cambie de tamaño:
root@san:/home/ubuntu# lvextend -L +100 /dev/san/v1 Extending logical volume v1 to 2.60 GiB Logical volume v1 successfully resized root@san:/home/ubuntu# tgtadm --op delete --mode logicalunit --tid=1 --lun=1 root@san:/home/ubuntu# tgtadm --op new --mode logicalunit --tid=1 --lun=1 --backing-store=/dev/san/v1 root@san:/home/ubuntu#
Luego nos vamos al cliente y vemos que el tamaño ha aumentado, como lo hemos desmontado antes, al montarlo de nuevo se pone en en /dev/sdd.
root@san-cliente:/home/debian# fdisk -l /dev/sdd Disk /dev/sdd: 2789 MB, 2789212160 bytes 86 heads, 62 sectors/track, 1021 cylinders, total 5447680 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdd doesn't contain a valid partition table root@san-cliente:/home/debian#
12- A continuación vamos a desconectar los targets 2 y 3 de las maquinas windows y debian respectavamente para ello hacemos lo siguiente:
En la maquina debian ejecutamos el siguiente comando:
root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt3.tgt4 --portal 10.0.0.28:3260 --logout Logging out of session [sid: 2, target: iqn.2014-12.com.tecmint:tgt3.tgt4, portal: 10.0.0.28,3260] Logout of [sid: 2, target: iqn.2014-12.com.tecmint:tgt3.tgt4, portal: 10.0.0.28,3260] successful. root@san-cliente:/home/debian#
Y luego para desconectarlo desde windows con solo pinchar en el boton «Disconect» es suficiente:
13- Ahora conectamos el «target3» a la maquina Windows y vemos que es lo que pasa:
Como vemos en la imagen vemos que la partición que tenemos en «ext3» no esta montada y sin embargo la «vfat» sí
14- Por ultimo lo que vamos a conectar el «target2» en la maquina Debian, para ello ejecutamos los siguientes comandos:
root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt2 -p 10.0.0.28 -o update -n node.session.auth.authmethod -v CHAP root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt2 -p 10.0.0.28 -o update -n node.session.auth.username -v usuario root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt2 -p 10.0.0.28 -o update -n node.session.auth.password -v usuario root@san-cliente:/home/debian# iscsiadm -m node --targetname iqn.2014-12.com.tecmint:tgt2 --portal 10.0.0.28:3260 --login Logging in to [iface: default, target: iqn.2014-12.com.tecmint:tgt2, portal: 10.0.0.28,3260] (multiple) Login to [iface: default, target: iqn.2014-12.com.tecmint:tgt2, portal: 10.0.0.28,3260] successful. root@san-cliente:/home/debian#
Y hasta aquí hemos terminado con iSCSI en esta entrada.