Tag: TrueNAS

Disco iSCSI visibile tra i dispositivi ma non tra i datastore

Problema tra sistemi. Ho uno storage con TrueNAS che esporta verso un cluster due dischi iSCSI e una cartella NFS, utilizzati come datastore per le VM.

A causa di un problema con il disco di avvio dello storage ho dovuto reinstallare da zero TrueNAS, versione SCALE 23.10.0.1.

Nessun problema con la reimportazione dei volumi su TrueNAS, pochi aggiustamenti sui permessi e tutto pare tornato a posto.

I dischi iSCSI esportati verso il cluster, però, non sono visibili. Sono visibili i dispositivi fisici ma i datastore non vengono montati da nessun nodo.

In questo caso i dispositivi vengono erroneamente interpretati come snapshot. Possiamo montarli come datastore con il comando “esxcfg-volume -M xxxx
Verifichiamo con “esxcli storage vmfs snapshot list“:

[root@alfa:~] esxcli storage vmfs snapshot list
63d4ea88-32fcf386-7e0e-yyyyyyyyyyyy
   Volume Name: iRaid
   VMFS UUID: 63d4ea88-32fcf386-7e0e-yyyyyyyyyyyy
   Can mount: true
   Reason for un-mountability: 
   Can resignature: true
   Reason for non-resignaturability: 
   Unresolved Extent Count: 1

63d7dc50-2758fd2c-fca2-xxxxxxxxxxxx
   Volume Name: iSSD
   VMFS UUID: 63d7dc50-2758fd2c-fca2-xxxxxxxxxxxx
   Can mount: true
   Reason for un-mountability: 
   Can resignature: true
   Reason for non-resignaturability: 
   Unresolved Extent Count: 1

In effetti i due dischi vengono visti come snapshot. Forziamo il mount dei datastore:

root@alfa:~] esxcfg-volume -M "63d4ea88-32fcf386-7e0e-yyyyyyyyyyyy"
Persistently mounting volume 63d4ea88-32fcf386-7e0e-yyyyyyyyyyyy

e

[root@alfa:~] esxcfg-volume -M "63d7dc50-2758fd2c-fca2-xxxxxxxxxxxx"
Persistently mounting volume 63d7dc50-2758fd2c-fca2-xxxxxxxxxxxx

Adesso è ok

TrueNAS connessione a disco iSCSI

Ho un box TrueNAS con 4 dischi da 3TB in RaidZ ma si sa, lo spazio non è mai abbastanza. Non potendo aggiungere altri dischi all’interno dello stesso server ho allestito un secondo box, con altrettanti dischi da 3TB ed esportato un disco iSCSI che ho montato (via rete) sul primo server.

Vediamo come.

Per prima cosa creiamo un volume all’interno di un pool, in questo caso “targetDisk”.

Adesso dobbiamo condividere il volume attraverso l’iSCSI, quindi partiamo da “Sharing” -> “Block Shares (iSCSI)
Possiamo utilizzare il wizard, che ci aiuta a creare portale, iniziatore, target e extent:

La configurazione globale, da cui prendiamo il “Base Name“: “iqn.2005-10.org.freenas.ctl” (1)
Il portale con Group ID 1 e l’interfaccia (ip) su cui ascolta
Il gruppo di iniziatori, con le reti autorizzate a connettersi
Il Target, con il nome “targetDisk” che ci servirà tra poco
L’extent con il nome “targetdisk” (occhio che qui è tutto minuscolo)
Ed infine il target associato con nome “targetdisk” (2)

A questo punto è tutto ok, ricordiamoci di avviare la condivisione iSCSI dal pannello dei servizi.

Ci spostiamo sul nodo TrueNAS che deve importare il disco che abbiamo esportato sopra e ci connettiamo in SSH (oppure avviamo la Shell dal pannello web).
Dobbiamo creare (o modificare) il file /conf/base/etc/iscsi.conf così:

t0 {
  TargetAddress = 10.20.30.251
  TargetName = iqn.2005-10.org.freenas.ctl:targetdisk
}

In questo caso il TargetAddress è l’indirizzo del nodo che espone il disco iSCSI e il nome è composto dal BaseName del punto 1 e dal nome targetdisk, quello del target associato del punto 2, divisi da “:”
Dobbiamo anche modificare il file “/conf/base/etc/rc.conf” aggiungendo queste righe al termine del file:

iscsid_enable="YES"
iscsictl_enable="YES"
iscsictl_flags="-Aa"

Una ultima modifica al file “/conf/base/etc/ix.rc.d/ix-zfs” dove dobbiamo modificare la linea:

# REQUIRE: hostid mountcritlocal

con:

# REQUIRE: hostid mountcritlocal iscsictl

A questo punto possiamo riavviare il nodo e dovremmo trovare un nuovo disco “da0” tipo questo:

Possiamo aggiungere quindi un nuovo pool (Storage -> Pools) indicando il disco “da0” come unico membro del nuovo pool di nome “targetDisk“. La dashboard, adesso, ci permette di vedere entrambi i volumi:

Abbiamo un po’ più spazio.