Questo post e' basato sulla traduzione e integrazione di un articolo scritto da Vivek Gite e da un articolo scritto da Vide.
Q. Come si formatta e ci si connette a un volume iSCSI sotto Debian / Ubuntu Linux?
A. Dovete installare il pacchetto open-iscsi package per una implementazione iSCSI sotto Debian / Ubuntu Linux. Questo pacchetto e' anche conosciuto come Linux Open-iSCSI Initiator. E' necessario utilizzare un sistema Linux con versione di kernel2.6.16, o superiore. Seguira' un post con le istruzioni specifiche per REHL 5 / CentOS 5 / Fedora Linux.
Installare Open-iSCSI Initiator
Digitate il comando seguente a terminale:
$ sudo apt-get install open-iscsi
Rimuovere gli init script che, almeno in etch, non sono configurati proprio al meglio e causano kernel panic in fase di shutdown e conseguente emicrania al sistemista :)
update-rc.d -f open-iscsi remove
Configurazione di Open-iSCSI
E' necessario creare due link simbolici con i seguenti comandi:
ln -s /etc/iscsid.conf /etc/iscsi/
ln -s /etc/initiatorname.iscsi /etc/iscsi/
I file di configurazione potrebbero essere /etc/iscsi/iscsid.conf o ~/.iscsid.conf.
Aprite il file /etc/iscsi/iscsid.conf:
# vi /etc/iscsi/iscsid.conf
Settare node.session.auth.username, node.session.auth.password and altri parametri come segue:
node.startup = automatic
node.session.auth.username = MY-ISCSI-USER
node.session.auth.password = MY-ISCSI-PASSWORD
discovery.sendtargets.auth.username = MY-ISCSI-USER
discovery.sendtargets.auth.password = MY-ISCSI-PASSWORD
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
Salvare e chiudere il file. Eseguire un restart del servizioopen-iscsi:
# /etc/init.d/open-iscsi restart
Eseguite un discovery diretto all'host target iscsi:
# iscsiadm -m discovery -t sendtargets -p ISCSI-SERVER-IP-ADDRESS
Se l'indirizzo IP del server iSCSI fosse 192.168.1.60, digitate:
# iscsiadm -m discovery -t sendtargets -p 192.168.1.60
Segnatevi l'identificativo (qualcosa come iqn.2001-05.com.doe:test) trovato dal discovery precedente. Vi servira' per eseguire il login e connettervi all'host iSCSI:
# iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.60:3260 --login
Eseguire un nuovo restart del servizioopen-iscsi:
# /etc/init.d/open-iscsi restart
Formattare il volume iSCSI
Ora dovreste vedere un nuovo drive sul sistema, ad esempio /dev/sdc. Potete cercare il nome del nuovo device sul file /var/log/messages.
# tail -f /var/log/messages
Se il nome del device appena creato e' /dev/sdc, digitate il seguente comando per creare una o piu' partizioni:
# fdisk /dev/sdc
Formattate la partizione creata:
# mkfs.ext3 /dev/sdc1
Montate il filesystem:
# mkdir /mnt/iscsi
# mount /dev/sdc1 /mnt/iscsi
Se e' tutto a posto, potete istruire il vostro sistema per attivare al boot l'initiator iSCSI e montare in automatico i volumi iSCSI. Aggiungete al file /etc/fstab una riga come la seguente:
/dev/sdc1 /mnt/iscsi ext3 defaults,auto,_netdev 0 0
Risolvere i problemi di boot / shutdown sotto etch Debian Linux
Aprite il file /etc/network/nterfaces e aggiungete le righe seguenti alla definizione dell'interfaccia di rete che utilizzate per montare i volumi iSCSI:
post-up echo “Waiting for network to come up before starting iSCSI…” && sleep 5
post-up /etc/init.d/open-iscsi start
pre-down umount -a -O _netdev
pre-down /etc/init.d/open-iscsi stop
Questo per ovviare alla cancellazione degli init script eseguita all'inizio del post.
Aprite il file
/etc/default/rcS
e verificate che contenga la riga seguente:
ASYNCMOUNTNFS=no
Questa disabilita il mount asincrono, che teoricamente dovrebbe funzionare meglio, ma in pratica non funziona poi cosi' bene su Debian Etch quando si ha a che fare con iSCSI.
Per evitare che il sistema killi la connessione iSCSI prima che i volumi siano smontati, occorre modificare l'ordine di esecuzione di alcuni script relativi agli init level 0 e 6 (halt e reboot):
mv /etc/rc6.d/S20sendsigs /etc/rc6.d/S39sendsigs
mv /etc/rc0.d/S20sendsigs /etc/rc0.d/S39sendsigs
Commenti finali:
Ho testato il workaround presentato per risolvere i problemi di iSCSI con Debian Etch. Funziona bene in fase di reboot/halt. Per quanto riguarda la fase di boot, ancora non sono riuscito ad eseguire il mount in automatico, mentre non ci sono problemi per la connessione dell'initiator al target iSCSI. In pratica eseguendo un semplice:
mount -a
al termine della fase di boot, i volumi iSCSi vengono montati senza problemi. Vedremo nei prossimi giorni come ovviare a questo problema.