Update to r42910:
Add section describing the new iSCSI stack. This section was translated from the latest r47889. Reviewed by: bcr Differential Revision: https://reviews.freebsd.org/D5170
This commit is contained in:
parent
eef7bcc5ba
commit
d17c111223
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48147
1 changed files with 362 additions and 1 deletions
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
$FreeBSD$
|
||||
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $
|
||||
basiert auf: r42610
|
||||
basiert auf: r42910
|
||||
-->
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="network-servers">
|
||||
<info><title>Netzwerkserver</title>
|
||||
|
|
@ -95,6 +95,11 @@
|
|||
<command>syslogd</command>, konfiguriert, um Protokolle von
|
||||
anderen Hosts zu akzeptieren.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Wissen, wie <acronym>iSCSI</acronym> eingerichtet
|
||||
wird.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Dieses Kapitel setzt folgende Grundkenntnisse voraus:</para>
|
||||
|
|
@ -6432,4 +6437,360 @@ Logging to FILE /var/log/messages</screen>
|
|||
verhindern, dass lokale Benutzer darin herumschnüffeln.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="network-iscsi">
|
||||
<!--
|
||||
<info>
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Edward Tomasz</firstname>
|
||||
<surname>Napierala</surname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</info>
|
||||
-->
|
||||
|
||||
<title>iSCSI Initiator und Target Konfiguration</title>
|
||||
|
||||
<para><acronym>iSCSI</acronym> bietet die Möglichkeit,
|
||||
Speicherkapazitäten über ein Netzwerk zu teilen. Im Gegensatz
|
||||
zu <acronym>NFS</acronym>, das auf Dateisystemebene arbeitet,
|
||||
funktioniert <acronym>iSCSI</acronym> auf
|
||||
Blockgerätebene.</para>
|
||||
|
||||
<para>In der <acronym>iSCSI</acronym>-Terminologie wird das
|
||||
System, das den Speicherplatz zur Verfügung stellt, als
|
||||
<emphasis>Target</emphasis> bezeichnet. Der Speicherplatz
|
||||
selbst kann aus einer physischen Festplatte bestehen, oder auch
|
||||
aus einem Bereich, der mehrere Festplatten, oder nur Teile einer
|
||||
Festplatte, repräsentiert. Wenn beispielsweise die
|
||||
Festplatte(n) mit <acronym>ZFS</acronym> formatiert ist, kann
|
||||
ein <acronym>zvol</acronym> erstellt werden, welches dann als
|
||||
<acronym>iSCSI</acronym>-Speicher verwendet werden kann.</para>
|
||||
|
||||
<para>Die Clients, die auf den <acronym>iSCSI</acronym>-Speicher
|
||||
zugreifen, werden <emphasis>Initiator</emphasis> genannt. Ihnen
|
||||
steht der verfügbare Speicher als rohe, nicht formatierte
|
||||
Festplatte, die auch als <acronym>LUN</acronym> bezeichnet wird,
|
||||
zur Verfügung. Die Gerätedateien für die Festplatten erscheinen
|
||||
in <filename>/dev/</filename> und müssen separat formatiert und
|
||||
eingehangen werden.</para>
|
||||
|
||||
<para>Seit 10.0-RELEASE enthält &os; einen nativen,
|
||||
kernelbasierten <acronym>iSCSI</acronym>
|
||||
<emphasis>Target</emphasis> und <emphasis>Initiator</emphasis>.
|
||||
Dieser Abschnitt beschreibt, wie ein &os;-System als Target oder
|
||||
Initiator konfiguriert wird.</para>
|
||||
|
||||
<sect2 xml:id="network-iscsi-target">
|
||||
<title>Ein <acronym>iSCSI</acronym>-Target konfigurieren</title>
|
||||
|
||||
<note>
|
||||
<para>Ein natives <acronym>iSCSI</acronym>-Target wird seit
|
||||
&os; 10.0-RELEASE unterstützt. Um <acronym>iSCSI</acronym>
|
||||
mit älteren Versionen zu benutzen, installieren Sie ein
|
||||
Target aus der Ports-Sammlung, beispielsweise
|
||||
<package>net/istgt</package>. Dieses Kapitel beschreibt
|
||||
nur das native Target.</para>
|
||||
</note>
|
||||
|
||||
<para>Um ein <acronym>iSCSI</acronym>-Target zu konfigurieren,
|
||||
erstellen Sie die Konfigurationsdatei
|
||||
<filename>/etc/ctl.conf</filename> und fügen Sie eine Zeile
|
||||
in <filename>/etc/rc.conf</filename> hinzu, um
|
||||
sicherzustellen, dass &man.ctld.8; automatisch beim Booten
|
||||
gestartet wird. Starten Sie dann den Daemon.</para>
|
||||
|
||||
<para>Das folgende Beispiel zeigt eine einfache
|
||||
<filename>/etc/ctl.conf</filename>. Eine vollständige
|
||||
Beschreibung dieser Datei und der verfügbaren Optionen finden
|
||||
Sie in &man.ctl.conf.5;.</para>
|
||||
|
||||
<programlisting>portal-group pg0 {
|
||||
discovery-auth-group no-authentication
|
||||
listen 0.0.0.0
|
||||
listen [::]
|
||||
}
|
||||
|
||||
target iqn.2012-06.com.example:target0 {
|
||||
auth-group no-authentication
|
||||
portal-group pg0
|
||||
|
||||
lun 0 {
|
||||
path /data/target0-0
|
||||
size 4G
|
||||
}
|
||||
}</programlisting>
|
||||
|
||||
<para>Der erste Eintrag definiert die Portalgruppe
|
||||
<literal>pg0</literal>. Portalgruppen legen fest, auf welchen
|
||||
Netzwerk-Adressen der &man.ctld.8;-Daemon Verbindungen
|
||||
entgegennehmen wird. Der Eintrag
|
||||
<literal>discovery-auth-group no-authentication</literal>
|
||||
zeigt an, dass jeder Initiator
|
||||
<acronym>iSCSI</acronym>-Targets suchen darf, ohne sich
|
||||
authentifizieren zu müssen. Die dritte und vierte Zeilen
|
||||
konfigurieren &man.ctld.8; so, dass er auf allen
|
||||
<acronym>IPv4</acronym>- (<literal>listen 0.0.0.0</literal>)
|
||||
und <acronym>IPv6</acronym>-Adressen
|
||||
(<literal>listen [::]</literal>) auf dem Standard-Port 3260
|
||||
lauscht.</para>
|
||||
|
||||
|
||||
<para>Es ist nicht zwingend notwendig eine Portalgruppe zu
|
||||
definieren, da es bereits eine integrierte Portalgruppe namens
|
||||
<literal>default</literal> gibt. In diesem Fall ist der
|
||||
Unterschied zwischen <literal>default</literal> und
|
||||
<literal>pg0</literal> der, dass bei
|
||||
<literal>default</literal> eine Authentifizierung nötig ist,
|
||||
während bei <literal>pg0</literal> die Suche nach Targets
|
||||
immer erlaubt ist.</para>
|
||||
|
||||
<para>Der zweite Eintrag definiert ein einzelnes Target. Ein
|
||||
Target hat zwei mögliche Bedeutungen: eine Maschine die
|
||||
<acronym>iSCSI</acronym> bereitstellt, oder eine Gruppe von
|
||||
<acronym>LUN</acronym>s. Dieses Beispiel verwendet die
|
||||
letztere Bedeutung, wobei
|
||||
<literal>iqn.2012-06.com.example:target0</literal> der Name
|
||||
des Targets ist. Dieser Name ist nur für Testzwecke geeignet.
|
||||
Für den tatsächlichen Gebrauch ändern Sie
|
||||
<literal>com.example</literal> auf einen echten, rückwärts
|
||||
geschriebenen Domainnamen. <literal>2012-06</literal> steht
|
||||
für das Jahr und den Monat, an dem die Domain erworben
|
||||
wurde. <literal>target0</literal> darf einen beliebigen
|
||||
Wert haben und in der Konfigurationsdatei darf eine beliebige
|
||||
Anzahl von Targets definiert werden.</para>
|
||||
|
||||
<para>Der Eintrag
|
||||
<literal>auth-group no-authentication</literal> erlaubt es
|
||||
allen Initiatoren sich mit dem angegebenen Target zu verbinden
|
||||
und <literal>portal-group pg0</literal> macht das Target über
|
||||
die Portalgruppe <literal>pg0</literal> erreichbar.</para>
|
||||
|
||||
<para>Die nächste Sektion definiert die <acronym>LUN</acronym>.
|
||||
Jede <acronym>LUN</acronym> wird dem Initiator als separate
|
||||
Platte präsentiert. Für jedes Target können mehrere
|
||||
<acronym>LUN</acronym>s definiert werden. Jede
|
||||
<acronym>LUN</acronym> wird über eine Nummer identifiziert,
|
||||
wobei <acronym>LUN</acronym> 0 verpflichtend ist. Die Zeile
|
||||
mit dem Pfad <literal>path /data/target0-0</literal> definiert
|
||||
den absoluten Pfad zu der Datei oder des zvols für die
|
||||
<acronym>LUN</acronym>. Der Pfad muss vorhanden sein, bevor
|
||||
&man.ctld.8; gestartet wird. Die zweite Zeile ist optional
|
||||
und gibt die Größe der <acronym>LUN</acronym> an. Als
|
||||
nächstes fügen Sie folgende Zeile in
|
||||
<filename>/etc/rc.conf</filename> ein, um &man.ctld.8;
|
||||
automatisch beim Booten zu starten:</para>
|
||||
|
||||
<programlisting>ctld_enable="YES"</programlisting>
|
||||
|
||||
<para>Um &man.ctld.8; jetzt zu starten, geben Sie dieses
|
||||
Kommando ein:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>service ctld start</userinput></screen>
|
||||
|
||||
<para>Der &man.ctld.8;-Daemon liest beim Start
|
||||
<filename>/etc/ctl.conf</filename>. Wenn diese Datei nach dem
|
||||
Starten des Daemons bearbeitet wird, verwenden Sie folgenden
|
||||
Befehl, damit die Änderungen sofort wirksam werden:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>service ctld reload</userinput></screen>
|
||||
|
||||
<sect3>
|
||||
<title>Authentifizierung</title>
|
||||
|
||||
<para>Die vorherigen Beispiele sind grundsätzlich unsicher, da
|
||||
keine Authentifizierung verwendet wird und jedermann vollen
|
||||
Zugriff auf alle Targets hat. Um für den Zugriff auf die
|
||||
Targets einen Benutzernamen und ein Passwort vorauszusetzen,
|
||||
ändern Sie die Konfigurationsdatei wie folgt:</para>
|
||||
|
||||
<programlisting>auth-group ag0 {
|
||||
chap username1 secretsecret
|
||||
chap username2 anothersecret
|
||||
}
|
||||
|
||||
portal-group pg0 {
|
||||
discovery-auth-group no-authentication
|
||||
listen 0.0.0.0
|
||||
listen [::]
|
||||
}
|
||||
|
||||
target iqn.2012-06.com.example:target0 {
|
||||
auth-group ag0
|
||||
portal-group pg0
|
||||
lun 0 {
|
||||
path /data/target0-0
|
||||
size 4G
|
||||
}
|
||||
}</programlisting>
|
||||
|
||||
<para>Die Sektion <literal>auth-group</literal> definiert die
|
||||
Benutzernamen und Passwörter. Um sich mit
|
||||
<literal>iqn.2012-06.com.example:target0</literal> zu
|
||||
verbinden, muss ein Initiator zuerst einen Benutzernamen
|
||||
und ein Passwort angeben. Eine Suche nach Targets wird
|
||||
jedoch immer noch ohne Authentifizierung gestattet. Um
|
||||
eine Authentifizierung zu erfordern, setzen Sie
|
||||
<literal>discovery-auth-group</literal> auf eine definierte
|
||||
<literal>auth-group</literal> anstelle von
|
||||
<literal>no-autentication</literal>.</para>
|
||||
|
||||
<para>In der Regel wird für jeden Initiator ein einzelnes
|
||||
Target exportiert. In diesem Beispiel wird der Benutzername
|
||||
und das Passwort direkt im Target-Eintrag festgelegt:</para>
|
||||
|
||||
<programlisting>target iqn.2012-06.com.example:target0 {
|
||||
portal-group pg0
|
||||
chap username1 secretsecret
|
||||
|
||||
lun 0 {
|
||||
path /data/target0-0
|
||||
size 4G
|
||||
}
|
||||
}</programlisting>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="network-iscsi-initiator">
|
||||
<title>Einen <acronym>iSCSI</acronym>-Initiator
|
||||
konfigurieren</title>
|
||||
|
||||
<note>
|
||||
<para>Der in dieser Sektion beschriebene
|
||||
<acronym>iSCSI</acronym>-Initiator wird seit &os;
|
||||
10.0-RELEASE unterstützt. Lesen Sie &man.iscontrol.8;, wenn
|
||||
Sie den <acronym>iSCSI</acronym>-Initiator mit älteren
|
||||
Versionen benutzen möchten.</para>
|
||||
</note>
|
||||
|
||||
<para>Um den Initiator zu verwenden, muss zunächst ein
|
||||
<acronym>iSCSI</acronym>-Daemon gestartet sein. Der
|
||||
Daemon des Initiators benötigt keine Konfigurationsdatei. Um
|
||||
den Daemon automatisch beim Booten zu starten, fügen Sie
|
||||
folgende Zeile in <filename>/etc/rc.conf</filename>
|
||||
ein:</para>
|
||||
|
||||
<programlisting>iscsid_enable="YES"</programlisting>
|
||||
|
||||
<para>Um &man.iscsid.8; jetzt zu starten, geben Sie dieses
|
||||
Kommando ein:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>service iscsid start</userinput></screen>
|
||||
|
||||
<para>Die Verbindung mit einem Target kann mit, oder ohne eine
|
||||
Konfigurationsdatei <filename>/etc/iscsi.conf</filename>
|
||||
durchgeführt werden. Dieser Abschnitt beschreibt beide
|
||||
Möglichkeiten.</para>
|
||||
|
||||
<sect3>
|
||||
<title>Verbindung zu einem Target herstellen - ohne
|
||||
Konfigurationsdatei</title>
|
||||
|
||||
<para>Um einen Initiator mit einem Target zu verbinden, geben
|
||||
Sie die <acronym>IP</acronym>-Adresse des Portals und den
|
||||
Namen des Ziels an:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>iscsictl -A -p <replaceable>10.10.10.10</replaceable> -t <replaceable>iqn.2012-06.com.example:target0</replaceable></userinput></screen>
|
||||
|
||||
<para>Um zu überprüfen, ob die Verbindung gelungen ist, rufen
|
||||
Sie <command>iscsictl</command> ohne Argumente auf. Die
|
||||
Ausgabe sollte in etwa wie folgt aussehen:</para>
|
||||
|
||||
<programlisting>Target name Target portal State
|
||||
iqn.2012-06.com.example:target0 10.10.10.10 Connected: da0</programlisting>
|
||||
|
||||
<para>In diesem Beispiel wurde die
|
||||
<acronym>iSCSI</acronym>-Sitzung mit der
|
||||
<acronym>LUN</acronym> <filename>/dev/da0</filename>
|
||||
erfolgreich hergestellt. Wenn das Target
|
||||
<literal>iqn.2012-06.com.example:target0</literal> mehr als
|
||||
nur eine <acronym>LUN</acronym> exportiert, werden mehrere
|
||||
Gerätedateien in der Ausgabe angezeigt:</para>
|
||||
|
||||
<screen>Connected: da0 da1 da2.</screen>
|
||||
|
||||
<para>Alle Fehler werden auf die Ausgabe und in die
|
||||
Systemprotokolle geschrieben. Diese Meldung deutet
|
||||
beispielsweise darauf hin, dass der &man.iscsid.8;-Daemon
|
||||
nicht ausgeführt wird:</para>
|
||||
|
||||
<programlisting>Target name Target portal State
|
||||
iqn.2012-06.com.example:target0 10.10.10.10 Waiting for iscsid(8)</programlisting>
|
||||
|
||||
<para>Die folgende Meldung deutet auf ein Netzwerkproblem hin,
|
||||
zum Beispiel eine falsche <acronym>IP</acronym>-Adresse oder
|
||||
einen falschen Port:</para>
|
||||
|
||||
<programlisting>Target name Target portal State
|
||||
iqn.2012-06.com.example:target0 10.10.10.11 Connection refused</programlisting>
|
||||
|
||||
<para>Diese Meldung bedeutet, dass der Name des Targets falsch
|
||||
angegeben wurde:</para>
|
||||
|
||||
<programlisting>Target name Target portal State
|
||||
iqn.2012-06.com.example:target0 10.10.10.10 Not found</programlisting>
|
||||
|
||||
<para>Diese Meldung bedeutet, dass das Target eine
|
||||
Authentifizierung erfordert:</para>
|
||||
|
||||
<programlisting>Target name Target portal State
|
||||
iqn.2012-06.com.example:target0 10.10.10.10 Authentication failed</programlisting>
|
||||
|
||||
<para>Verwenden Sie diese Syntax, um einen
|
||||
<acronym>CHAP</acronym>-Benutzernamen und ein Passwort
|
||||
anzugeben:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>iscsictl -A -p <replaceable>10.10.10.10</replaceable> -t <replaceable>iqn.2012-06.com.example:target0</replaceable> -u <replaceable>user</replaceable> -s <replaceable>secretsecret</replaceable></userinput></screen>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Verbindung mit einem Target herstellen - mit
|
||||
Konfigurationsdatei</title>
|
||||
|
||||
<para>Wenn Sie für die Verbindung eine Konfigurationsdatei
|
||||
verwenden möchten, erstellen Sie
|
||||
<filename>/etc/iscsi.conf</filename> mit etwa folgendem
|
||||
Inhalt:</para>
|
||||
|
||||
<programlisting>t0 {
|
||||
TargetAddress = 10.10.10.10
|
||||
TargetName = iqn.2012-06.com.example:target0
|
||||
AuthMethod = CHAP
|
||||
chapIName = user
|
||||
chapSecret = secretsecret
|
||||
}</programlisting>
|
||||
|
||||
<para><literal>t0</literal> gibt den Namen der Sektion in der
|
||||
Konfigurationsdatei an. Diser Name wird vom Initiator
|
||||
benutzt, um zu bestimmen, welche Konfiguration verwendet
|
||||
werden soll. Die anderen Einträge legen die Parameter fest,
|
||||
die während der Verbindung verwendet werden.
|
||||
<literal>TargetAddress</literal> und
|
||||
<literal>TargetName</literal> müssen angegeben werden,
|
||||
die restlichen sind optional. In diesen Beispiel wird
|
||||
der <acronym>CHAP</acronym>-Benuztername und das Passwort
|
||||
angegeben.</para>
|
||||
|
||||
<para>Um sich mit einem bestimmten Target zu verbinden, geben
|
||||
Sie dessen Namen an:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>iscsictl -An <replaceable>t0</replaceable></userinput></screen>
|
||||
|
||||
<para>Um sich stattdessen mit allen definierten Targets aus
|
||||
der Konfigurationsdatei zu verbinden, verwenden Sie:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>iscsictl -Aa</userinput></screen>
|
||||
|
||||
<para>Damit sich der Initiator automatisch mit allen Targets
|
||||
aus <filename>/etc/iscsi.conf</filename> verbindet, fügen
|
||||
Sie folgendes in <filename>/etc/rc.conf</filename>
|
||||
hinzu:</para>
|
||||
|
||||
<programlisting>iscsictl_enable="YES"
|
||||
iscsictl_flags="-Aa"</programlisting>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue