cfumass(4) ist ein USB-Gerätetreiber, der seit FreeBSD 12.0 verfügbar ist.
Virtuelle Speichergeräte werden durch die Vorlagen 0 und 10 unterstützt. Die Kernelmodule usb_template(4) und cfumass(4) müssen geladen sein. cfumass(4) ist die Schnittstelle zum CTL-Subsystem, das auch für iSCSI- oder Fibre-Channel-Targets benutzt wird. Auf dem Host können Initiatioren von USB-Massenspeichern nur auf eine einzige LUN, LUN 0 zugreifen.
Der einfachste Weg, ein schreibgeschütztes
USBSpeicherziel einzurichten, ist die
Verwendung des cfumass
rc-Skripts.
Kopieren Sie einfach die Dateien, die dem
USB-Host präsentiert werden sollen, in das
Verzeichnis /var/cfumass
und fügen Sie
diese Zeile in /etc/rc.conf
ein:
cfumass_enable="YES"
Um das Ziel ohne Neustart zu konfigurieren, führen Sie diesen Befehl aus:
#
service cfumass start
Im Gegensatz zur seriellen und Netzwerkfunktionalität
sollte die Vorlage in /boot/loader.conf
nicht auf 0 oder 10 gesetzt werden, da die
LUN vor dem Setzen der Vorlage
konfiguriert werden muss. Das cfumass
rc-Skript setzt beim Start automatisch die richtige
Vorlage.
Der Rest dieses Kapitels enthält eine detaillierte
Beschreibung der Konfiguration ohne die Verwendung des
cfumass
rc-Skripts. Dies ist
beispielsweise notwendig, wenn man eine beschreibbare
LUN zur Verfügung stellen will.
Im Gegensatz zu iSCSI ist es bei
USB-Massenspeichern nicht zwingend
erforderlich, dass der ctld(8) Daemon läuft. Es
gibt zwei Möglichkeiten, das Target zu konfigurieren:
ctladm(8) oder ctld(8). Beide erfordern, dass das
Kernelmodul cfumass.ko
geladen ist.
Das Modul kann manuell geladen werden:
#
kldload cfumass
Wenn cfumass
nicht im Kernel
integriert ist, kann /boot/loader.conf
angepasst werden, damit das Modul beim Booten geladen
wird:
cfumass_load="YES"
Eine LUN kann ohne den ctld(8) Daemon erstellt werden:
#
ctladm create -b block -o file=/data/target0
Dies stellt den Inhalt des Abbilds von
/data/target0
als LUN
auf dem USB-Host dar. Die Datei muss vor
der Ausführung des Befehls vorhanden sein. Um die
LUN beim Systemstart zu konfigurieren,
muss das Kommando in /etc/rc.local
eingetragen werden.
ctld(8) kann auch benutzt werden, um
LUNs zu verwalten. Dazu erstellen Sie eine
/etc/ctl.conf
und fügen eine Zeile in
/etc/rc.conf
hinzu, um sicherzustellen,
dass ctld(8) beim Booten automatisch gestartet wird.
Danach kann der Daemon gestartet werden.
Es folgt ein Beispiel einer einfachen Konfiguration für
/etc/ctl.conf
. Eine ausführliche
Beschreibung der Optionen finden Sie
in ctl.conf(5).
target naa.50015178f369f092 { lun 0 { path /data/target0 size 4G } }
Dieses Beispiel erstellt ein einzelnes Target
mit einer einzigen LUN.
naa.50015178f369f092
ist eine
Gerätekennung, die aus 32 zufälligen
Hexadezimalziffern besteht.
path
definiert den absoluten Pfad zu einer
Datei oder eines zvol, welches die
LUN als Speicher nutzen kann. Diese Datei
muss vor dem Start von ctld(8) existieren. Die zweite
Zeile ist optional und definiert die Größe
der LUN.
Damit der ctld(8) Daemon beim Booten gestartet wird,
muss diese Zeile in /etc/rc.conf
hinzugefügt werden:
ctld_enable="YES"
Sie können ctld(8) mit diesem Befehl direkt starten:
#
service ctld start
Der ctld(8) Daemon liest beim Start
/etc/ctl.conf
. Wenn diese Datei nach dem
Start des Daemons bearbeitet wird, müssen die Änderungen neu
geladen werden, damit sie sofort wirksam werden:
#
service ctld reload
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.