Folgende Anleitung soll dem Benutzer helfen /home-Shares als iSCSI unter Fedora 15 nachträglich einzubinden. Bisher lief das unter NFS (welches durchaus auch Vorteile hat) aber iSCSI ist schneller und bietet bei kurzfristigen "Flaps" der Netzverbindung ein besseres Systemverhalten. NFSv4 wurde nicht berücksichtigt, da es von meinem NAS (noch) nicht unterstützt wird. Vor- und Nachteile von NFSv3 gegenüber iSCSI für diesen Anwendungsfall:
Warum Fedora 15?
In erster Linie weil ich seit Jahren bereits Fedora nutze. Besonders interessant wird es hier allerdings durch den Einsatz von Systemd in der neuesten Version.
Das RPM-Paket iscsi-initiator-utils muss installiert sein (erhältlich von DVD oder Fedora-15-Repositories). Der iSCSI-Dienst muss gestartet werden, die bisherigen SYSV-Init-Befehle
chkconfig iscsi status chkconfig iscsi start chkconfig iscsi start
sehen unter systemd wie folgt aus:
systemctl status iscsi.service systemctl enable iscsi.service systemctl start iscsi.service
Außerdem sollte sicherheitshalber der Dienst für das Sandboxing deaktiviert werden (dieser mountet separat noch mal die /home-Verzeichnisse) bei Einsatz von NFS klappt dies garantiert nicht, bei iSCSI hab ich ihn dann gleich ausgelassen.
Als allererstes wird ein Discovery durchgeführt, diesem übergibt man als Argument die IP-Adresse von der man sich erhofft dass dort das iSCSI-Target zu erreichen ist
iscsiadm -m discovery -t st -p 192.168.0.99
als Antwort bekommt man die IQN (diese sollte man auch auf dem Target irgendwie sehen), und die LUN-Bezeichnung
192.168.0.99:3260,1 iqn.2001-04.com.example:storage.lun1
Um zu verhindern, dass die iSCSI-Verbindung bei Netzproblemen über das WLAN oder andere Adapater läuft empfiehlt es sich ein iSCSI-Interface anzulegen, dazu legt man die Datei /var/lib/iscsi/ifaces/iface0 an mit folgendem Inhalt
# BEGIN RECORD 2.0-872 iface.iscsi_ifacename = iface0 iface.hwaddress = XX:XX:XX:XX:XX:XX iface.transport_name = tcp # END RECORD
Wobei anstelle des XX:XX:XX:XX:XX:XX die MAC-adresse des Interfaces steht, diese erhält man mit den Befehlen ifconfig |grep HWaddr. Alternativ kann man hierzu auch die entsprechenden iscsiadm-Befehle verwenden
iscsiadm -m iface -I iface0 --op=new iscsiadm -m iface -I iface0 --op=update -n iface.hwaddress -v XX:XX:XX:XX:XX:XX
Damit sich das System beim Hochfahren automatische anmeldet sollte man sicherheitshalber nochmal
iscsiadm -m node --op update -n node.conn[0].startup -v automatic
ausführen. Um das Ganze detaillierter zu regeln gibt es in den Dateien /etc/iscsi/iscsid.conf und /var/lib/iscsi/nodes/[IQN,LUN-Bezeichnung]/[Portal]/[Interface] die Direktive node.startup = automatic. Diese beide Dateien ermögliche auch weitergehende Einstellungen zu modifizieren und sind im wesentlich mit erläuternden Kommentaren versehen und sollten daher bei Problem immer erstmal die erste Anlaufstelle sein.
Optional kann man bei iSCSI eine Authentifizierung über CHAP durchführen.
iscsiadm -m node --name node.session.auth.authmethod --value=CHAP --op=update iscsiadm -m node --name node.session.auth.username --value=l00serName --op=update iscsiadm -m node --name node.session.auth.password --value=l00serPassword --op=update
Das Passwort wird übrigens unverschlüsselt in der /etc/iscsi/iscsid.conf abgespeichert, auf diese kann zwar standardmäßig nur der root-User lesend zugreifen, man sollte dies aber wissen.
Der Einfachheit halber geht das Einloggen mit iscsiadm -m node --login, das Ausloggen dann über iscsiadm -m node --logout.
Damit man mit der LUN tatsächlich etwas sinnvolles anfangen kann, empfiehlt sich die Partitionierung und das Anlegen eines Dateisystems. Im Folgenden nehme ich an, dass sich das Gerät als /dev/sdx im System gemeldet hat (sehr wahrscheinlich hat es einen niedrigeren Buchstaben). Partitionieren mit
cfdisk /dev/sdx
Anschliessend das Dateisystem anlegen und die Partition mit einem Label versehen (macht später eine eindeutige Identifizierung leichter)
mkfs.ext4 -L "meinzuhause" /dev/sdx1
Das Ganze kann natürlich auch einfacher und sicherer mit gparted durchgeführt werden ;-)
Im Folgenden möglichen Einträge in der Datei /etc/fstab mit denen das Volume beim Hochfahren eingebunden werden kann. Der zweite Eintrag ist nur zu Verständnis/Anschauungszwecken gedacht, da sich die Benennung durch Anschließen externer Festplatten oder USB-Sticks ändern kann, führt dies sehr wahrscheinlich zu einem nicht beabsichtigtem Verhalten (USB-Volumes sind vor den Netzvolumes da und werden dann als /home eingebunden).
Die Option _netdev zu finden war etwas schwierig aber notwendig, denn sie führt dazu, dass das System das Volume erst mountet wenn die Netzwerkdienste und damit das iSCIS-Login abgeschlossen ist.
LABEL=meinzuhause /home ext4 defaults,auto,_netdev 0 0 /dev/sdb1 /home ext4 defaults,auto,_netdev 0 0
Infos
[1] iSCSI auf Fedora 10 benutzen (Initiator und Target) http://www.howtoforge.de/howto/2788/