Update to r50030:

Slightly revise the way we refer to FreeBSD 12 here.

Update to r50019:
Submit documentation from trasz for his Foundation-sponsored work on the
USB Mass Storage CTL front end.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D9966
This commit is contained in:
Bjoern Heidotting 2017-03-12 11:21:01 +00:00
parent 51be17aa5a
commit f841b88432
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=50051

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/disks/chapter.xml,v 1.187 2012/04/26 19:32:48 bcr Exp $
basiert auf: r48568
basiert auf: r50030
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@ -645,6 +645,140 @@ da0: &lt;STECH Simple Drive 1.04&gt; s/n WD-WXE508CAN263 detached
Laufwerken und
<acronym>iSCSI</acronym>-<acronym>LUN</acronym>s.</para>
</sect2>
<sect2>
<title><acronym>USB</acronym>-Massenspeicher</title>
<note>
<para>Der &man.cfumass.4;-Treiber ist ein
<acronym>USB</acronym> Geräte-Modus-Treiber und steht mit
&os;&nbsp;12.0 zur Verfügung.</para>
</note>
<para>Auf
<acronym>USB</acronym>-<acronym>OTG</acronym>-kompatibler
Hardware, wie in eingebetteten Systemen, kann der &os;
<acronym>USB</acronym>-Stack im Geräte-Modus laufen. Der
Geräte-Modus ermöglicht es dem Rechner, verschiedene Arten von
<acronym>USB</acronym>-Geräteklassen zu präsentieren,
einschließlich serieller Schnittstellen, Netzwerkadapter und
Massenspeicher. Ein <acronym>USB</acronym>-Host,
beispielsweise ein Laptop oder Desktop-Rechner, kann darauf
wie auf ein physikalisches <acronym>USB</acronym>-Gerät
zugreifen.</para>
<para>Je nach angeschlossener Hardware, ermöglicht das
&man.usb.template.4; Kernelmodul es dem
<acronym>USB</acronym>-Stack, automatisch zwischen Host- und
Geräteseite umzuschalten. Das Anschließen eines
<acronym>USB</acronym>-Gerätes an den
<acronym>USB</acronym>-<acronym>OTG</acronym>-Port bewirkt,
dass &os; in den Geräte-Modus wechselt.</para>
<para>Was &os; dem <acronym>USB</acronym>-Host präsentiert,
hängt von der sysctl-Variablen
<varname>hw.usb.template</varname> ab. Eine Liste der
verfügbaren Werte finden Sie in &man.usb.template.4;. Damit
der Host die geänderte Konfiguration erkennt, muss entweder
das Gerät getrennt und wieder angeschlossen, oder der
<acronym>USB</acronym>-Bus neu gescannt werden. Wenn auf dem
Host &os; läuft, können Sie &man.usbconfig.8;
<command>reset</command> benutzen. Dieser Befehl muss nach
dem Laden von <filename>usb_template.ko</filename> erfolgen,
falls der <acronym>USB</acronym>-Host bereits am
<acronym>USB</acronym>-<acronym>OTG</acronym>-Port
angeschlossen war.</para>
<para>Die sysctl-Variable <varname>hw.usb.template</varname> ist
in der Voreinstellung auf 0 gesetzt, so dass &os; als
<acronym>USB</acronym>-Massenspeicher funktioniert. Dazu
müssen die beiden Kernelmodule &man.usb.template.4; und
&man.cfumass.4; geladen sein. &man.cfumass.4; ist die
Schnittstelle zum CTL-Subsystem, die auch für
<acronym>iSCSI</acronym>- und Fibre Channel-Targets
benutzt wird. Auf der Host-Seite können
<acronym>USB</acronym>-Massenspeicher nur auf eine einzelne
<acronym>LUN</acronym> (<acronym>LUN</acronym> 0)
zugreifen.</para>
<para><acronym>USB</acronym>-Massenspeicher benötigen keinen
aktiven &man.ctld.8;-Daemon, obwohl er bei Bedarf verwendet
werden kann. Dies unterscheidet sich von
<acronym>iSCSI</acronym>. So gibt es zwei Möglichkeiten,
ein Target zu konfigurieren: &man.ctladm.8; und &man.ctld.8;.
Beide erfordern, dass das <filename>cfumass.ko</filename>
Kernelmodul geladen ist. Das Modul kann wie folgt geladen
werden:</para>
<screen>&prompt.root; <userinput>kldload cfumass</userinput></screen>
<para>Wenn <filename>cfumass.ko</filename> nicht im Kernel
enthalten ist, kann das Modul beim Booten über
<filename>/boot/loader.conf</filename> geladen werden:</para>
<programlisting>cfumass_load="YES"</programlisting>
<para>Eine <acronym>LUN</acronym> kann auch ohne den
&man.ctld.8;-Daemon erstellt werden:</para>
<screen>&prompt.root; <userinput>ctladm create -b block -o file=/data/target0</userinput></screen>
<para>Damit wird dem <acronym>USB</acronym> der Inhalt des
Abbilds <filename>/data/target0</filename> als
<acronym>LUN</acronym> präsentiert. Die Datei muss vor dem
Ausführen des Befehls vorhanden sein. Um die
<acronym>LUN</acronym> beim Systemstart zu konfigurieren,
fügen Sie den Befehl in <filename>/etc/rc.local</filename>
hinzu.</para>
<para>&man.ctld.8; kann ebenfalls verwendet werden, um
<acronym>LUN</acronym>s zu verwalten. Erstellen Sie
<filename>/etc/ctl.conf</filename> und fügen Sie eine Zeile in
<filename>/etc/rc.conf</filename> hinzu, um sicherzustellen,
dass &man.ctld.8; beim Booten automatisch gestartet wird.
Danach starten Sie den Daemon.</para>
<para>Dies ist ein Beispiel für eine einfache
<filename>/etc/ctl.conf</filename> Konfigurationsdatei.
&man.ctl.conf.5; enthält eine ausführliche Beschreibung der
einzelnen Optionen.</para>
<programlisting>target naa.50015178f369f092 {
lun 0 {
path /data/target0
size 4G
}
}</programlisting>
<para>Dieses Beispiel erstellt ein Target mit einer einzigen
<acronym>LUN</acronym>.
<literal>naa.50015178f369f092</literal> ist eine Gerätekennung
aus 32 zufälligen, hexadezimalen Ziffern. Die
<literal>path</literal>-Zeile definiert den vollständigen Pfad
einer Datei oder eines zvols, welche als Backend für die
<acronym>LUN</acronym> benutzt wird. Die Konfigurationsdatei
muss vor dem Start von &man.ctld.8; existieren. Die zweite
Zeile ist optional und gibt die Größe der
<acronym>LUN</acronym> an.</para>
<para>Fügen Sie folgende Zeile in
<filename>/etc/rc.conf</filename> hinzu, um den
&man.ctld.8;-Daemon beim Booten zu starten:</para>
<programlisting>ctld_enable="YES"</programlisting>
<para>Um &man.ctld.8; zu starten, führen Sie dieses Kommando
aus:</para>
<screen>&prompt.root; <userinput>service ctld start</userinput></screen>
<para>Beim Start liest der &man.ctld.8;-Daemon
<filename>/etc/ctl.conf</filename> ein. Wenn diese Datei nach
dem Start des Daemons bearbeitet wird, können Sie sie erneut
einlesen, damit die Änderungen direkt wirksam sind:</para>
<screen>&prompt.root; <userinput>service ctld reload</userinput></screen>
</sect2>
</sect1>
<sect1 xml:id="creating-cds">