Com configurar el servidor iSCSI (destí) i el client (iniciador) a Debian 9


Al món dels centres de dades, les xarxes d'àrea d'emmagatzematge (SAN) de gran capacitat s'han convertit en l'estàndard mínim. A mesura que els proveïdors de núvol i la virtualització també continuen tenint impactes massius en el món de la tecnologia, la necessitat d'un espai d'emmagatzematge SAN encara més evident s'ha fet evident.

La majoria del maquinari SAN està format per un controlador minimalista (o conjunt de controladors) i una gran col·lecció de unitats d'alta capacitat, totes configurades per suportar grans quantitats de disponibilitat i integritat de dades.

Molts d'aquests productes especialitzats estan fets per grans venedors com Netapp, Dell Equalogic, HP Storageworks o EMC i tenen etiquetes de preu que només es poden permetre les empreses més grans.

De manera realista, aquests dispositius no són més que grans matrius de discs durs amb un controlador que proporciona l'espai d'aquests discs durs als clients en xarxa. Al llarg dels anys, han existit moltes tecnologies que proporcionen aquesta funcionalitat o una funcionalitat similar a un preu substancialment més barat.

La distribució Debian GNU/Linux ofereix paquets que permeten que un sistema Debian compleixi el propòsit d'un dispositiu d'emmagatzematge SAN a nivell empresarial a una mera fracció del cost! Això permet que tothom, des dels usuaris domèstics bàsics o els grans centres de dades, puguin obtenir els avantatges de l'emmagatzematge SAN sense haver de gastar una fortuna en una solució propietat del proveïdor.

Aquest article examinarà com es pot configurar un sistema Debian 9 (Stretch) per oferir espai en disc mitjançant un sistema conegut com a Internet Small Computer Systems Interface o iSCSI per abreujar-se. iSCSI és un estàndard basat en el protocol d'Internet (IP) per proporcionar emmagatzematge en bloc (disc dur) a altres sistemes. iSCSI funciona en un model de servidor client, però utilitza diferents noms per distingir el client del servidor.

En terminologia iSCSI, el servidor que ofereix l'espai en disc es coneix com a destí iSCSI i el sistema que sol·licita/utilitza l'espai en disc es coneix com iniciador iSCSI. En altres paraules, un iniciador sol·licita l'emmagatzematge de blocs des d'un objectiu.

Aquesta guia explicarà una configuració bàsica que inclou un servidor iSCSI senzill (destí) i un client (iniciador) amb Debian 9 (Stretch).

Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

La xarxa es pot veure de la següent manera:

Configuració de destinació iSCSI de Debian

Al món iSCSI, l'objectiu es considera l'amfitrió que conté els dispositius d'emmagatzematge que utilitzarà l'iniciador.

En aquest article s'utilitza el servidor amb la IP de 192.168.56.101 com a objectiu. Totes les configuracions es faran en aquest amfitrió per a aquesta secció.

El primer pas és la instal·lació dels paquets necessaris per permetre al sistema Debian servir els objectius iSCSI. Aquest paquet de programari es coneix com Target Framework (TGT).

L'altre element que s'utilitza per a aquesta guia són les eines de gestió de volums lògics (LVM), ja que els volums lògics (LV) s'utilitzaran com a suport d'emmagatzematge per a l'objectiu iSCSI.

Els dos paquets es poden instal·lar amb les ordres següents.

# apt-get update
# apt-get install tgt lvm2

Un cop instal·lats els paquets, s'utilitzarà LVM per preparar els discs durs de la destinació per utilitzar-los com a LUN iSCSI. La primera ordre s'utilitza per preparar els discs per incloure'ls en una configuració de LVM. Assegureu-vos de modificar l'ordre segons sigui necessari per a diferents escenaris!

# lsblk (Only used to confirm disks to be used in the LVM setup)
# pvcreate /dev/sd{b,c}

Un cop s'hagin preparat els discs amb l'ordre pvcreate anterior, és hora de crear un grup de volums a partir d'aquests discos concrets. El grup de volums és necessari per crear els volums lògics que actuaran com a emmagatzematge iSCSI més endavant.

Per crear un grup de volums, cal l'ordre vgcreate.

# vgcreate tecmint_iscsi /dev/sd{b,c}
# vgs  (Only needed to confirm the creation of the volume group)

Observeu a la sortida anterior que el sistema respon que es va crear el grup de volums, però sempre és una bona idea comprovar-ho com s'ha vist anteriorment amb l'ordre vgs. La capacitat d'aquest grup de volums és de només 9,99 GB. Tot i que es tracta d'un grup de volum especialment reduït, el procés seria el mateix per a discs de major capacitat!

El següent pas és la creació del volum lògic que actuarà com a disc del client iSCSI (iniciador). Per a aquest exemple s'utilitzarà la totalitat del grup de volums, però no és necessari.

El volum lògic es crearà mitjançant l'ordre lvcreate.

# lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
# lvs  (Simply used to confirm the creation of the logical volume)

L'ordre lvcreate anterior pot ser una mica confusa a primera vista, però el desglossament és el següent:

  • lvcreate: l'ordre s'utilitza per crear el volum lògic.
  • -l 100% GRATIS: creeu el volum lògic utilitzant tot l'espai lliure del grup de volums.
  • -n tecmint_lun1: el nom del volum lògic que s'ha de crear.
  • tecmint_iscsi: el nom del grup de volums per crear el volum lògic dins.

Un cop creat el volum lògic, és hora de crear el LUN (Número d'unitat lògica) real. El LUN serà el dispositiu d'emmagatzematge al qual l'iniciador es connectarà i utilitzarà més tard.

Crear un LUN és molt senzill i només requereix uns quants passos. El primer pas serà la creació del fitxer de configuració. Aquest fitxer residirà al directori /etc/tgt/conf.d i per a aquest article s'anomenarà TecMint_iscsi.conf.

Per crear aquest fitxer utilitzeu un editor de text.

# nano /etc/tgt/conf.d/TecMint_iscsi.conf

Dins d'aquest fitxer, es configurarà tota la informació de configuració necessària per a aquest LUN. Hi ha moltes opcions que es poden col·locar en aquest fitxer, però ara per ara es configurarà un LUN bàsic amb el protocol d'autenticació d'autenticació de mà de desafiament (CHAP) mutu.

La definició del LUN existirà entre dues declaracions objectiu. Per obtenir més paràmetres que es poden incloure a la declaració de destinació, reviseu la pàgina del manual del fitxer targets.conf emetent man 5 targets.conf.

<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

Hi ha moltes coses a sobre. Una explicació ràpida pot ser útil per a la majoria.

  • La primera línia comença la configuració iSCSI LUN particular. En aquest cas, el LUN amb l'etiqueta 'iqn.2018-02.linux-console.net:lun1'. La part iqn indica que aquest serà un nom qualificat iSCSI. El 2018-02 és una combinació de dates escollida arbitràriament. 'linux-console.net' és el domini al qual pertany aquest LUN en particular. Finalment, el lun1 s'utilitza com a nom per a aquest objectiu en particular.
  • La segona línia anterior il·lustra un comentari. Els comentaris poden existir als fitxers de configuració de destinació i han d'anar precedits amb un símbol #.
  • La tercera línia és on hi ha l'espai d'emmagatzematge real que utilitzarà l'iniciador. En aquest cas, el suport d'emmagatzematge serà el volum lògic que es va crear anteriorment a la guia.
  • La quarta línia és l'adreça IP que s'espera de l'iniciador. Tot i que no és un element de configuració obligatori, pot ajudar a augmentar la seguretat.
  • La cinquena línia és el nom d'usuari/contrasenya d'entrada. Igual que l'adreça de l'iniciador anterior, aquest paràmetre tampoc és necessari, però pot ajudar a assegurar el LUN. Com que aquesta guia també cobreix iSCSI mutual CHAP, aquest paràmetre és obligatori. Aquesta línia indica el nom d'usuari i la contrasenya que l'objectiu espera de l'iniciador per connectar-se a aquest LUN.
  • La sisena línia és el nom d'usuari/contrasenya que l'objectiu proporcionarà a l'iniciador per permetre l'autenticació CHAP mútua. Normalment, aquest paràmetre no és obligatori, però aquest article tracta l'autenticació CHAP mútua, de manera que aquest paràmetre és obligatori.
  • La línia final és la declaració de tancament de la definició de destinació. Presteu atenció a la barra inclinada de tancament davant de l'objectiu de paraula clau!

Un cop s'hagin escrit les configuracions adequades per al LUN, deseu els canvis i sortiu de l'editor de text. Si feu servir nano, premeu ctrl+o per desar i després premeu ctrl+x per sortir de nano.

Un cop creat el fitxer de configuració, el servei tgt s'hauria de reiniciar perquè tgt conegui els nous objectius i la configuració associada.

Això es pot fer amb una de les ordres següents i depèn del sistema d'inici en ús.

# service tgt restart  (For sysv init systems)
# systemctl restart tgt  (For systemd init systems)

Un cop s'hagi reiniciat tgt, és important comprovar que l'objectiu iSCSI estigui disponible segons el fitxer de configuració creat.

Això es pot aconseguir amb l'ordre 'tgtadm'.

# tgtadm --mode target --op show   (This will show all targets)

Això conclou la configuració de l'objectiu. La següent secció treballarà mitjançant la configuració de l'iniciador.

Configuració de l'iniciador iSCSI de Debian

El següent pas per utilitzar l'objectiu iSCSI configurat anteriorment és la configuració de l'iniciador iSCSI.

Un XenServer/ESXi diferent o altres distribucions com Red Hat, Debian o Ubuntu.

El primer pas d'aquest procés per a aquest iniciador de Debian és la instal·lació dels paquets adequats per a iSCSI.

# apt-get update
# apt-get install open-iscsi

Un cop l'apt hagi acabat la configuració dels paquets open-iscsi, pot començar la configuració de l'iniciador iSCSI. El primer pas serà comunicar-se amb l'objectiu per obtenir la informació de configuració inicial preparada per a l'objectiu.

# iscsiadm -m discovery -t st -p 192.168.56.101

Quan s'executi aquesta ordre, respondrà amb el nom del lun configurat anteriorment per a aquest host en concret. L'ordre anterior també generarà dos fitxers per a la informació LUN recent descoberta.

Ara, el fitxer creat per a aquest node haurà de tenir la informació CHAP configurada per tal que aquest objectiu iSCSI sigui realment accessible per l'iniciador.

Tècnicament, aquesta informació es podria configurar per a tot el sistema en conjunt, però en el cas que un host es connecti a diferents LUN amb diferents credencials, col·locar aquestes credencials al fitxer de configuració del node específic pot mitigar qualsevol problema.

El fitxer de configuració del node existirà al directori '/etc/iscsi/nodes/' i tindrà disponible un directori per LUN. En el cas d'aquest article (tingueu en compte que els camins canviaran si es canvien els noms/adreces IP).

# /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Per treballar amb aquest fitxer, es pot utilitzar qualsevol editor de text.

# nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Dins d'aquest fitxer hi haurà diverses opcions ja configurades per a l'objectiu respectiu que es van determinar durant l'execució de l'ordre iscsiadm anteriorment.

Com que aquesta configuració de l'iniciador/destinatari de Debian en particular utilitza CHAP mutu, cal canviar algunes opcions més i afegir-les a aquest fitxer i després realitzar un inici de sessió a l'objectiu iSCSI.

Els canvis a aquest fitxer són:

node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Les opcions anteriors permetran que aquest objectiu s'autentiqui amb l'iniciador i també permetran que l'iniciador s'autentiqui amb l'objectiu.

Hi ha una altra opció en aquest fitxer en particular que pot ser que s'hagi de canviar en funció de les preferències de l'administrador i és el paràmetre node.startup.

Si seguiu aquesta guia, l'opció node.startup s'establirà com a manual en aquest moment. Això pot no ser desitjat. Si l'administrador vol tenir l'objectiu iSCSI connectat quan s'iniciï el sistema, canvieu manual per automàtic com a tal:

node.startup = automatic

Un cop fets els canvis anteriors, deseu el fitxer i sortiu. En aquest punt, cal reiniciar el servei d'iniciador d'iscsi obert per llegir aquests nous canvis i connectar-se a l'objectiu iSCSI.

Això es pot aconseguir amb una de les ordres següents depenent del sistema d'inici utilitzat.

# service open-iscsi restart   (For sysv init systems)
# systemctl restart open-iscsi (For systemd init systems)

Observeu al quadre verd de dalt que l'iniciador iSCSI va poder iniciar sessió a l'objectiu. Per confirmar encara més que l'objectiu iSCSI està realment disponible per a l'iniciador, podem comprovar el sistema si hi ha unitats de disc addicionals disponibles mitjançant l'ordre lsblk i comprovant la sortida de unitats addicionals.

# lsblk

L'altra ordre que es pot utilitzar a l'iniciador per confirmar una connexió amb l'objectiu és iscsiadm com a tal:

# iscsiadm -m session

El lloc final per confirmar una connexió seria al mateix objectiu mitjançant l'ordre tgtadm per llistar les connexions iSCSI.

# tgtadm --mode conn --op show --tid 1

A partir d'aquest punt, el dispositiu iSCSI recentment connectat es pot utilitzar de manera similar a qualsevol disc connectat normalment! El particionament, la creació de sistemes de fitxers, el muntatge i/o el muntatge persistent es poden gestionar amb normalitat.

Una gran precaució a tenir en compte amb els dispositius iSCSI és que si l'objectiu iSCSI conté sistemes de fitxers importants que es necessiten a mesura que l'iniciador està arrencant, assegureu-vos d'utilitzar l'entrada '_netdev' al fitxer '/etc/fstab' per assegurar-vos que l'iSCSI el dispositiu està connectat abans que el sistema continuï arrencant!