Rss

Utiliser du iSCSI avec un initiator FreeNAS

Étonnament, il n’est pas possible d’utiliser directement des périphériques iSCSI avec FreeNAS, l’interface prévoit la possibilité d’offrir ce service (être une target) mais pas de l’utiliser (être un initiator).

Par nature, FreeNAS ne permet pas les modifications système, ce dernier étant généré lors du boot ; cette limitation est bien sûr toute relative car il reste possible de faire des modifications qui persisteront. Au moins jusqu’à la prochaine release 😉
Alors, que nous faut-il pour utiliser des périphériques iSCSI sur notre FreeNAS ? Grâce à cette astuce trouvée sur le forum FreeNAS, il est possible d’accéder en écriture à notre / et le FreeBSD iSCSI How-To ainsi que cette entrée de FAQ pour FreeBSD nous donnent les infos utiles à la mise en œuvre de l’initiator.

En résumé, voici les manips :

  • accès R/W à / : mount -uw /
  • création du fichier /conf/base/etc/iscsi.conf
  • création du script /conf/base/etc/rc.d/mountiscsi
  • copie de ces fichiers dans le répertoire /etc
  • remise en R/O du / : mount -ur /
  • exécution du script /etc/rc.d/mountiscsi start

et hop ! ça marche ^^
Les fichiers créés dans /conf/base seront utilisés lors du prochain reboot pour alimenter le répertoire /etc. Alors certes, ces modifications seront perdues après une réinstallation ou une mise à jour de FreeNAS mais cela reste très gérable et facilement reproductible.

Il faut bien sûr disposer d’au moins un périphérique iSCSI pour tester et en profiter, voici un exemple simple de fichier iscsi.conf :

ocfifi {
        authMethod = None
        InitiatorName = iqn.2005-01.il.ac.huji.cs::freenas.mon.domaine
        TargetName = iqn.1999-02.com.netapp:filer1
        TargetAddress = 10.2.1.21:3260,2000
}

Voici le script mountiscsi créé pour l’occasion, certainement améliorable mais pleinement fonctionnel :

#!/bin/sh
     
# PROVIDE: mountiscsi
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: nojail
     
. /etc/rc.subr
     
name="mountiscsi"
stop_cmd=":"
start_cmd="mountiscsi_start"
start_precmd="mountiscsi_precmd"
     
mountiscsi_precmd()
{
	/sbin/kldload iscsi_initiator.ko
}
     
mountiscsi_start()
{
    	/sbin/iscontrol -c /etc/iscsi.conf -n ocfifi
 	sleep 2
    	/sbin/iscontrol -c /etc/iscsi.conf -n ocriri
    	sleep 2
}
     
load_rc_config $name
run_rc_command "$1"

Comments are closed.