Etiqueta: iSCSI

Pool iSCSI para KVM

KVM puede utilizar iSCSI como backend de almacenamiento, si se cuenta con una SAN (Storage Area Network) pueden asignarse LUN’s (Logical Unit Numbers) y presentarlas a las máquinas virtuales. El pool es creado en el almacenamiento pero libvirt no puede crearlo o eliminarlo.

Instalación Servidor iSCSI


Hostname: target.local
IP Address: 192.168.100.127

Comenzamos con la instalación.

]$ sudo yum install -y targetd targetcli
]$ sudo systemctl enable --now target

Habilitamos el servicio en el cortafuegos.

]$ sudo firewall-cmd --add-service=iscsi-target --permanent
]$ sudo firewall-cmd --reload
success

En este punto ya contamos con un lvm de 30 GB sin montar, en este caso /dev/vg1/lv1.

[tusysadmin@target ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1 1024M  0 rom
vda         252:0    0    6G  0 disk
├─vda1      252:1    0    5G  0 part
│ ├─rl-root 253:0    0  4.4G  0 lvm  /
│ └─rl-swap 253:1    0  616M  0 lvm  [SWAP]
└─vda2      252:2    0    1G  0 part /boot
vdb         252:16   0   30G  0 disk
└─vdb1      252:17   0   30G  0 part
  └─vg1-lv1 253:2    0   30G  0 lvm

Lanzamos la utilidad targetcli.

[root@target ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> ls
o- / ............................................................... [...]
  o- backstores .................................................... [...]
  | o- block ........................................ [Storage Objects: 0]
  | o- fileio ....................................... [Storage Objects: 0]
  | o- pscsi ........................................ [Storage Objects: 0]
  | o- ramdisk ...................................... [Storage Objects: 0]
  o- iscsi .................................................. [Targets: 0]
  o- loopback ............................................... [Targets: 0]
/>

Crearemos un dispositivo de bloques, esto lo hacemos dentro de backstores/block.

/> backstores/block create vms_store /dev/vg1/lv1
Created block storage object vms_store using /dev/vg1/lv1.
/>

Creamos el IQN (iSCSI Qualified Name).

/> cd iscsi
/iscsi> create iqn.2022-05.com.target:vms
Created target iqn.2022-05.com.target:vms.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi>

Creamos el LUN asociado al bloque vms_store.

/iscsi> cd iqn.2022-05.com.target:vms/tpg1
/iscsi/iqn.20...rget:vms/tpg1> luns/ create /backstores/block/vms_store
Created LUN 0.
/iscsi/iqn.20...rget:vms/tpg1>

Ahora creamos una ACL (Access Control List) en el que indicamos el IQN del cliente al que presentaremos la LUN.

/iscsi/iqn.20...rget:vms/tpg1> acls/ create iqn.2022-05.com.iniciator:vms
Created Node ACL for iqn.2022-05.com.iniciator:vms
Created mapped LUN 0.
/iscsi/iqn.20...rget:vms/tpg1>

Salimos de targetcli y verificamos que el puerto este abierto.

[tusysadmin@target ~]$ ss -an | grep 3260
tcp    LISTEN     0      256       *:3260                  *:*

Configurar iniciador

Ahora toca configurar el iniciador iSCSI en nuestro servidor de máquinas virtuales para posteriormente presentarlo a KVM.

[tusysadmin@localhost ~]$ sudo yum install iscsi-initiator-utils -y

Editamos el archivo initiatorname.iscsi

~]$ sudo vi /etc/iscsi/initiatorname.iscsi

En este archivo ponemos el nombre que anteriormente agregamos en la ACL.

InitiatorName=iqn.2022-05.com.iniciator:vms

Probamos la configuración.

[tusysadmin@localhost ~]$ sudo iscsiadm -m discovery -t st -p target.local
192.168.100.127:3260,1 iqn.2022-05.com.target:vms

Hacemos el login al target.

~]$ sudo iscsiadm --mode node --targetname iqn.2022-05.com.target:vms --portal target.local --login
Logging in to [iface: default, target: iqn.2022-05.com.target:vms, portal: 192.168.100.127,3260]
Login to [iface: default, target: iqn.2022-05.com.target:vms, portal: 192.168.100.127,3260] successful.

Crear el pool

Con la conexión establecida a nuestra servidor de maquina virtuales ya podemos crear el pool iSCSI y usarlo en nuestras maquinas virtuales. Creamos el archivo iscsipool.xml con el siguiente contenido.

<pool type='iscsi'>
    <name>iscsipool</name>
    <source>
        <host name='192.168.100.127'/>
        <device path='iqn.2022-05.com.target:vms'/>
    </source>
    <initiator>
	    <iqn name='iqn.2022-05.com.iniciator:vms' />
    </initiator>
    <target>
        <path>/dev/disk/by-path</path>
    </target>
</pool>

Básicamente es la información del target y del iniciador lista para ser agregada a KVM. Ahora definimos, iniciamos y auto iniciamos el pool.

[tusysadmin@localhost ~]$ sudo virsh pool-define --file iscsipool.xml
El grupo iscsipool ha sido definido desde iscsipool.xml

[tusysadmin@localhost ~]$ sudo virsh pool-start --pool iscsipool 
Se ha iniciado el grupo iscsipool

[tusysadmin@localhost ~]$ sudo virsh pool-autostart --pool iscsipool
El grupo iscsipool ha sido marcado como iniciable automáticamente

Listamos el pool la información de el mismo.

[tusysadmin@localhost ~]$ sudo virsh pool-info iscsipool
Nombre:         iscsipool
UUID:           80ba818f-14da-4c77-aee4-55f82dcefc34
Estado:         ejecutando
Persistente:    si
Autoinicio:     si
Capacidad:      30.00 GiB
Ubicación:      30.00 GiB
Disponible:     0.00 B

Con esto, el pool ya puede ser usado en KVM como otro pool para presentarse a las maquinas virtuales.

Instalar almacenamiento iSCSI en CentOS 7

Como alternativa para reducir los costos por manejar equipos de fibra óptica surgió iSCSI. Un protocolo TCP/IP de la capa de transporte que administra comandos SCSI a través de conexiones de red entre el almacenamiento y el host. No necesita equipos especiales como el caso de fibra y es relativamente fácil de implementar sobre todo en ambientes donde no existen conexiones de fibra.

Es una arquitectura Cliente-Servidor, por un lado, el iniciador puede ser una tarjeta de red estándar con software iniciador iSCSI (opción más económica) o con hardware (HBA), la diferencia radica en el rendimiento pues al hacerlo por software se involucra al CPU en las funciones de empaquetado y desempaquetado de SCSI a paquetes IP, ocasionando que el
procesamiento pueda ser un cuello de botella.

Por su parte el objetivo es el almacenamiento que comparte los recursos en
la red, estos recursos se identifican como Unidades Lógicas Únicas, LUN por sus siglas en inglés. Las LUN’s a su vez, son presentadas a los iniciadores (clientes) por medio de un Nombre Calificado ISCSI, IQN por sus siglas en inglés.

Con está base teórica, comencemos con la configuración en el siguiente ambiente:

iSCSI target:
Hostname: target.local
IP Address: 192.168.122.57

iSCSI iniciador:
Hostname: iniciador.local
IP Address: 192.168.122.222

Comenzamos en el host target.

]$ sudo yum install -y targetd targetcli
]$ sudo systemctl enable target

Habilitamos el servicio en el cortafuegos.

]$ sudo firewall-cmd --add-service=iscsi-target --permanent
]$ sudo firewall-cmd --reload
success

En este punto ya contamos con un lvm sin montar, en este caso /dev/vg1/lv1.

[tusysadmin@target ~]$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
vda             252:0    0    7G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    6G  0 part 
  ├─centos-root 253:0    0  5.3G  0 lvm  /
  └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
vdb             252:16   0   20G  0 disk 
└─vdb1          252:17   0   20G  0 part 
  └─vg1-lv1     253:2    0   20G  0 lvm  

Lanzamos la utilidad targetcli.

[root@target ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> ls
o- / ........................................................... [...]
  o- backstores ................................................ [...]
  | o- block .................................... [Storage Objects: 0]
  | o- fileio ....................................[Storage Objects: 0]
  | o- pscsi .................................... [Storage Objects: 0]
  | o- ramdisk .................................. [Storage Objects: 0]
  o- iscsi .............................................. [Targets: 0]
  o- loopback ........................................... [Targets: 0]

Como vamos a crear un dispositivo de bloques lo hacemos dentro de backstores/block.

/> backstores/block create web_store /dev/vg1/lv1 
Created block storage object web_store using /dev/vg1/lv1.

Creamos el iSCSI Qualified Name.

/> cd iscsi
/iscsi> create iqn.2021-09.com.tusysadmin.target1:web
Created target iqn.2021-09.com.tusysadmin.target1:web.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi>

Creamos la LUN asociada al bloque web_store.

/iscsi> cd iqn.2021-09.com.tusysadmin.target1:web/tpg1/
/iscsi/iqn.20...get1:web/tpg1> luns/ create /backstores/block/web_store 
Created LUN 0.
/iscsi/iqn.20...get1:web/tpg1>

Para crear la ACL con el IQN del iniciador iSCSI.

/iscsi/iqn.20...get1:web/tpg1> acls/ create iqn.2021-09.com.tusysadmin.iniciator:web
Created Node ACL for iqn.2021-09.com.tusysadmin.iniciator:web
Created mapped LUN 0.
/iscsi/iqn.20...get1:web/tpg1> 

Salimos de la utilidad target y verificamos que el puerto 3260 esté abierto.

[root@target ~]# ss -an | grep 3260
tcp    LISTEN     0      256       *:3260                  *:*

Configurando el iniciador iSCSI

En nuestro servidor cliente instalamos el iniciador iSCSI.

tusysadmin@iniciador ~]$ sudo yum install -y iscsi-initiator-utils

Modificamos el archivo /etc/iscsi/initiatorname.iscsi y agregamos el iqn que creamos en la ACL puesto que es nombre que tiene acceso a nuestra LUN. Para finalmente realizar la conexión.

[root@iniciador ~]# iscsiadm --mode node --targetname iqn.2021-09.com.tusysadmin.target1:web --portal target.local --login 
Logging in to [iface: default, target: iqn.2021-09.com.tusysadmin.target1:web, portal: 192.168.122.57,3260] (multiple)
Login to [iface: default, target: iqn.2021-09.com.tusysadmin.target1:web, portal: 192.168.122.57,3260] successful.

Si listamos los dispositivos iSCSI usados aparece el nuevo dispositivo en /dev/sda

[root@iniciador ~]# lsscsi
[0:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0 
[6:0:0:0]    disk    LIO-ORG  web_store        4.0   /dev/sda 

En este punto la partición puede ser montada como sistema de archivos o como lvm, eso ya dependerá del uso deseado.

© 2025

Tema por Anders NorenArriba ↑