<?xml version="1.0" encoding="iso-8859-1"?>
<!--
     The FreeBSD Documentation Project
     The FreeBSD German Documentation Project

     $FreeBSD$
     $FreeBSDde: de-docproj/books/handbook/disks/chapter.xml,v 1.187 2012/04/26 19:32:48 bcr Exp $
     basiert auf: r51746
-->
<chapter xmlns="http://docbook.org/ns/docbook"
  xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
  xml:id="disks">
  <info>
    <title>Speichermedien</title>

    <authorgroup>
      <author>
	<personname>
	  <firstname>Bernd</firstname>
	  <surname>Warken</surname>
	</personname>
	<contrib>Übersetzt von </contrib>
      </author>
      <author>
	<personname>
	  <firstname>Martin</firstname>
	  <surname>Heinen</surname>
	</personname>
      </author>
    </authorgroup>
  </info>

  <sect1 xml:id="disks-synopsis">
    <title>Übersicht</title>

    <para>Dieses Kapitel behandelt die Benutzung von Laufwerken unter
      &os;.  Hierzu zählen <acronym>SCSI</acronym>- und
      <acronym>IDE</acronym>-Geräte, <acronym>CD</acronym>- und
      <acronym>DVD</acronym>-Medien, speicherbasierte Laufwerke und
      <acronym>USB</acronym>-Geräte.</para>

    <para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie
      Folgendes wissen:</para>

    <itemizedlist>
      <listitem>
	<para>Wie Sie zusätzliche Laufwerke zu einem &os;-System
	  hinzufügen.</para>
      </listitem>

      <listitem>
	<para>Wie Sie unter &os; die Partition einer Festplatte
	  vergrößern.</para>
      </listitem>

      <listitem>
	<para>Wie Sie &os; zur Verwendung von
	  <acronym>USB</acronym>-Speichermedien konfigurieren.</para>
      </listitem>

      <listitem>
	<para>Wie Sie <acronym>CD</acronym>- und
	  <acronym>DVD</acronym>-Medien unter &os; benutzen.</para>
      </listitem>

      <listitem>
	<para>Wie Sie die unter &os; erhältlichen Backup-Programme
	  benutzen.</para>
      </listitem>

      <listitem>
	<para>Wie Sie RAM-Disks einrichten.</para>
      </listitem>

      <listitem>
	<para>Was Dateisystem-Schnappschüsse sind und wie sie
	  effizient eingesetzt werden.</para>
      </listitem>

      <listitem>
	<para>Wie Sie mit Quotas die Benutzung von Laufwerken
	  einschränken.</para>
      </listitem>

      <listitem>
	<para>Wie Sie Festplatten und Swap verschlüsseln, um Daten
	  vor Angreifern zu schützen.</para>
      </listitem>

      <listitem>
	<para>Wie Sie ein hochverfügbares Speichernetzwerk
	  konfigurieren.</para>
      </listitem>
    </itemizedlist>

    <para>Bevor Sie dieses Kapitel lesen,</para>

    <itemizedlist>
      <listitem>
	<para>sollten Sie wissen, wie Sie einen
	  <link linkend="kernelconfig">neuen &os;-Kernel konfigurieren
	    und installieren</link>.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 xml:id="disks-adding">
    <info>
      <title>Hinzufügen von Laufwerken</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>David</firstname>
	    <surname>O'Brian</surname>
	  </personname>
	  <contrib>Im Original von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>Laufwerke</primary>
      <secondary>hinzufügen</secondary>
    </indexterm>

    <para>Dieser Abschnitt beschreibt, wie Sie ein neues
      <acronym>SATA</acronym>-Laufwerk zu einer Maschine
      hinzufügen, die momentan nur ein Laufwerk hat.  Dazu schalten
      Sie zuerst den Rechner aus und installieren das Laufwerk
      entsprechend der Anleitungen Ihres Rechners, Ihres Controllers
      und des Laufwerkherstellers.  Starten Sie das System neu und
      melden Sie sich als Benutzer
      <systemitem class="username">root</systemitem> an.</para>

    <para>Kontrollieren Sie <filename>/var/run/dmesg.boot</filename>,
      um sicherzustellen, dass das neue Laufwerk gefunden wurde.  In
      diesem Beispiel erscheint das neu hinzugefügte
      <acronym>SATA</acronym>-Laufwerk als
      <filename>ada1</filename>.</para>

    <indexterm><primary>Partitionen</primary></indexterm>
    <indexterm>
      <primary><command>gpart</command></primary>
    </indexterm>

    <para>In diesem Beispiel wird eine einzige große Partition auf der
      Festplatte erstellt.  Verwendet wird das <link
	xlink:href="https://de.wikipedia.org/wiki/GUID_Partition_Table">
	<acronym>GPT</acronym></link>-Partitionsschema, welches
      gegenüber dem älteren und weniger vielseitigen
      <acronym>MBR</acronym>-Schema bevorzug wird.</para>

    <note>
      <para>Wenn die hinzugefügte Festplatte nicht leer ist, können
	alte Partitionsinformationen mit
	<command>gpart delete</command> entfernt werden.  Details
	finden Sie in &man.gpart.8;.</para>
    </note>

    <para>Zuerst wird das Partitionsschema erstellt und dann eine
      einzelne Partition angefügt.  Zur Verbesserung der Leistung auf
      neueren Festplatten mit größeren Blockgrößen, wird die
      Partition an einer Megabyte-Grenze ausgerichtet:</para>

    <screen>&prompt.root; <userinput>gpart create -s GPT ada1</userinput>
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 1M ada1</userinput></screen>

    <para>Je nach Anwendung kann es wünschenswert sein, mehrere
      kleinere Partitionen zu haben.  In &man.gpart.8; finden Sie
      Optionen zum Erstellen von kleineren Partitionen.</para>

    <para>Informationen über die Partitionen der Festplatte werden mit
      <command>gpart show</command> angezeigt:</para>

    <screen>&prompt.user; <userinput>gpart show ada1</userinput>
=>        34  1465146988  ada1  GPT  (699G)
          34        2014        - free -  (1.0M)
        2048  1465143296     1  freebsd-ufs  (699G)
  1465145344        1678        - free -  (839K)</screen>

    <para>Ein Dateisystem wird in der neuen Partition erstellt:</para>

    <screen>&prompt.root; <userinput>newfs -U /dev/ada1p1</userinput></screen>

    <para>Ein leeres Verzeichnis wird als Mountpunkt erstellt, also
      ein Speicherort für die Montage der neuen Festplatte im
      originalen Dateisystem:</para>

    <screen>&prompt.root; <userinput>mkdir /newdisk</userinput></screen>

    <para>Abschließend wird ein Eintrag in
      <filename>/etc/fstab</filename> hinzugefügt, damit die neue
      Festplatte automatisch beim Start eingehängt wird:</para>

    <programlisting>/dev/ada1p1	/newdisk      ufs   rw	    2	  2</programlisting>

    <para>Die neue Festplatte kann manuell montiert werden, ohne das
      System neu zu starten:</para>

    <screen>&prompt.root; <userinput>mount /newdisk</userinput></screen>
  </sect1>

  <sect1 xml:id="disks-growing">
    <info>
      <title>Partitionen vergrößern</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Allan</firstname>
	    <surname>Jude</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <personname>
	    <firstname>Björn</firstname>
	    <surname>Heidotting</surname>
	  </personname>
	  <contrib>Übersetzt von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>Partitionen</primary>
      <secondary>vergrößern</secondary>
    </indexterm>

    <para>Die Kapazität einer Festplatte kann sich ohne Änderungen
      an bereits vorhandenen Daten erhöhen.  Dies geschieht
      üblicherweise mit virtuellen Maschinen, wenn sich herausstellt,
      dass die virtuelle Festplatte zu klein ist und vergrößert werden
      soll.  Zuweilen wird auch ein Abbild einer Platte auf einen
      <acronym>USB</acronym>-Stick geschrieben, ohne dabei die volle
      Kapazität zu nutzen.  Dieser Abschnitt beschreibt, wie man
      Platten vergrößert, bzw. <emphasis>erweitert</emphasis>, um die
      Vorteile der erhöhten Kapazität zu nutzen.</para>

    <para>Überprüfen Sie <filename>/var/run/dmesg.boot</filename>, um
      den Gerätenamen der Festplatte zu bestimmen, die vergrößert
      werden soll.  In diesem Beispiel gibt es nur eine
      <acronym>SATA</acronym>-Festplatte im System, so dass die Platte
      als <filename>ada0</filename> angezeigt wird.</para>

    <indexterm><primary>Partitionen</primary></indexterm>
    <indexterm>
      <primary><command>gpart</command></primary>
    </indexterm>

    <para>Um die aktuelle Konfiguration der Partitionen auf der
      Festplatte anzuzeigen:</para>

    <screen>&prompt.root; <userinput>gpart show <replaceable>ada0</replaceable></userinput>
=>      34  83886013  ada0  GPT  (48G) [CORRUPT]
        34       128     1  freebsd-boot  (64k)
       162  79691648     2  freebsd-ufs  (38G)
  79691810   4194236     3  freebsd-swap  (2G)
  83886046         1        - free -  (512B)</screen>

    <note>
      <para>Wenn die Festplatte mit dem <link
	  xlink:href="http://en.wikipedia.org/wiki/GUID_Partition_Table">
	  <acronym>GPT</acronym></link>-Partitionsschema formatiert
	wurde kann es vorkommen, dass sie als
	<quote>corrupted</quote> angezeigt wird, weil sich die
	Sicherung der <acronym>GPT</acronym>-Partitionstabellen nicht
	mehr am Ende des Laufwerks befinden.  Reparieren Sie in so
	einem Fall die Partitionstabelle mit
	<command>gpart</command>:</para>

      <screen>&prompt.root; <userinput>gpart recover <replaceable>ada0</replaceable></userinput>
ada0 recovered</screen>
    </note>

    <para>Nun steht der zusätzliche Speicherplatz zur Verfügung und
      kann verwendet werden, um eine neue Partition anzulegen oder
      eine bestehende Partition zu erweitern:</para>

    <screen>&prompt.root; <userinput>gpart show <replaceable>ada0</replaceable></userinput>
=>       34  102399933  ada0  GPT  (48G)
         34        128     1  freebsd-boot  (64k)
        162   79691648     2  freebsd-ufs  (38G)
   79691810    4194236     3  freebsd-swap  (2G)
   83886046   18513921        - free -  (8.8G)</screen>

    <para>Partitionen können nur auf zusammenhängenden, freien
      Speicherplatz vergrößert werden.  In diesem Beispiel wird die
      letzte Partition der Platte als Swap-Speicher genutzt, aber die
      zweite Partition ist die, dessen Größe verändert werden soll.
      Weil der Swap-Speicher nur temporäre Daten enthält, kann er
      gefahrlos ausgehangen, gelöscht und nachdem die zweite Partition
      vergrößert wurde, als dritte Partition neu erstellt werden.</para>

    <para>Deaktivieren Sie Swap-Speicher Partition:</para>

    <screen>&prompt.root; <userinput>swapoff <replaceable>/dev/ada0p3</replaceable></userinput></screen>

    <para>Löschen Sie die dritte Partition, angegeben mit dem Schalter
      <option>-i</option>, der Festplatte
      <replaceable>ada0</replaceable>:</para>

    <screen>&prompt.root; <userinput>gpart delete -i <replaceable>3</replaceable> <replaceable>ada0</replaceable></userinput>
ada0p3 deleted
&prompt.root; <userinput>gpart show <replaceable>ada0</replaceable></userinput>
=>       34  102399933  ada0  GPT  (48G)
         34        128     1  freebsd-boot  (64k)
        162   79691648     2  freebsd-ufs  (38G)
	79691810   22708157        - free -  (10G)</screen>

    <warning>
      <para>Es besteht die Gefahr von Datenverlust, wenn die
	Partitionstabelle eines eingehangenen Dateisystems verändert
	wird.  Es empfiehlt sich daher, die folgenden Schritte auf
	einem ausgehangenen Dateisystem durchzuführen, während die
	Umsetzung über eine Live-<acronym>CD-ROM</acronym> oder
	von einem <acronym>USB</acronym>-Gerät erfolgt.  Wenn es
	jedoch absolut notwendig ist, kann ein eingehangenes
	Dateisystem auch vergrößert werden, nachdem die
	Sicherheitsfunktionen von GEOM deaktiviert wurden:</para>

      <screen>&prompt.root; <userinput>sysctl kern.geom.debugflags=16</userinput></screen>
    </warning>

    <para>Vergrößern Sie die Partition und lassen Sie Platz, um die
      Swap-Partition in der gewünschten Größe neu erstellen zu können.
      Die zu ändernde Partition wird mit <option>-i</option> und die
      neue gewünschte Größe mit <option>-s</option> angegeben.
      Optional wird die Ausrichtung der Partition mit
      <option>-a</option> festgelegt.  Dieser Schritt ändert nur die
      Größe der Partition.  Das Dateisystem innerhalb der Partition
      wird in einem separaten Schritt erweitert.</para>

    <screen>&prompt.root; <userinput>gpart resize -i <replaceable>2</replaceable> -s <replaceable>47G</replaceable> -a 4k <replaceable>ada0</replaceable></userinput>
ada0p2 resized
&prompt.root; <userinput>gpart show <replaceable>ada0</replaceable></userinput>
=>       34  102399933  ada0  GPT  (48G)
         34        128     1  freebsd-boot  (64k)
        162   98566144     2  freebsd-ufs  (47G)
   98566306    3833661        - free -  (1.8G)</screen>

    <para>Erstellen Sie die Swap-Partition neu und aktivieren Sie
      sie:</para>

    <screen>&prompt.root; <userinput>gpart add -t freebsd-swap -a 4k <replaceable>ada0</replaceable></userinput>
ada0p3 added
&prompt.root; <userinput>gpart show <replaceable>ada0</replaceable></userinput>
=>       34  102399933  ada0  GPT  (48G)
         34        128     1  freebsd-boot  (64k)
        162   98566144     2  freebsd-ufs  (47G)
   98566306    3833661     3  freebsd-swap  (1.8G)
&prompt.root; <userinput>swapon <replaceable>/dev/ada0p3</replaceable></userinput></screen>

    <para>Erweitern Sie das <acronym>UFS</acronym>-Dateisystem, um die
      Kapazität der vergrößerten Partition zu nutzen:</para>

    <screen>&prompt.root; <userinput>growfs <replaceable>/dev/ada0p2</replaceable></userinput>
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow file system on /dev/ada0p2, mounted on /, from 38GB to 47GB? [Yes/No] <userinput>Yes</userinput>
super-block backups (for fsck -b #) at:
 80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
 89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432</screen>

    <para>Wenn das Dateisystem <acronym>ZFS</acronym> ist, wird die
      Größenänderung mit dem Unterkommando <option>online</option> und
      <option>-e</option> ausgelöst:</para>

    <screen>&prompt.root; <userinput>zfs online -e <replaceable>zroot</replaceable> <replaceable>/dev/ada0p2</replaceable></userinput></screen>

    <para>Sowohl die Partition als auch das Dateisystem wurden jetzt
      vergrößert, um den neu zur Verfügung stehenden Speicherplatz zu
      nutzen.</para>
  </sect1>

  <sect1 xml:id="usb-disks">
    <info>
      <title><acronym>USB</acronym> Speichermedien</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Marc</firstname>
	    <surname>Fonvieille</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>USB</primary>
      <secondary>Speichermedien</secondary>
    </indexterm>

    <para>Der Universal Serial Bus (<acronym>USB</acronym>) wird
      von vielen externen Speichern benutzt:  Festplatten,
      <acronym>USB</acronym>-Thumbdrives sowie von
      <acronym>CD</acronym>- und <acronym>DVD</acronym>-Brennern.
      &os; bietet Unterstützung für Geräte mit <acronym>USB</acronym>
      1.x, 2.0 und 3.0.</para>

    <note>
      <para>Die Unterstützung für <acronym>USB</acronym> 3.0 ist mit
	einiger Hardware, einschließlich Haswell (Lynx Point)
	Chipsätzen, nicht kompatibel.  Wenn &os; beim Booten mit dem
	Fehler <errorname>failed with error 19</errorname> abbricht,
	müssen Sie xHCI/USB3 im <acronym>BIOS</acronym>
	deaktivieren.</para>
    </note>

    <para>Unterstützung für <acronym>USB</acronym>-Massenspeicher ist
      im <filename>GENERIC</filename>-Kernel enthalten.  Für einen
      angepassten Kernel müssen die nachstehenden Zeilen in der
      Kernelkonfigurationsdatei enthalten sein:</para>

    <programlisting>device scbus    # SCSI bus (required for ATA/SCSI)
device da	# Direct Access (disks)
device pass	# Passthrough device (direct ATA/SCSI access)
device uhci	# provides USB 1.x support
device ohci	# provides USB 1.x support
device ehci	# provides USB 2.0 support
device xhci	# provides USB 3.0 support
device usb	# USB Bus (required)
device umass	# Disks/Mass storage - Requires scbus and da
device cd	# needed for CD and DVD burners</programlisting>

    <para>&os; benutzt den &man.umass.4;-Treiber, der das
      <acronym>SCSI</acronym>-Subsystem verwendet um auf
      <acronym>USB</acronym>-Geräte zuzugreifen.  Da alle
      <acronym>USB</acronym>-Geräte vom System als
      <acronym>SCSI</acronym>-Geräte erkannt werden, dürfen Sie
      <emphasis>nicht</emphasis> <option>device atapicam</option>
      in die Kernelkonfigurationsdatei aufnehmen, wenn es sich bei
      dem Gerät um einen <acronym>CD</acronym>- oder
      <acronym>DVD</acronym>-Brenner handelt.</para>

    <para>Der übrige Abschnitt beschreibt, wie Sie überprüfen können
      ob ein <acronym>USB</acronym>-Gerät von &os; erkannt wird und
      wie Sie das Gerät so konfigurieren, dass es verwendet werden
      kann.</para>

    <sect2>
      <title>Konfiguration von Geräten</title>

      <para>Um die <acronym>USB</acronym>-Konfiguration zu testen,
	schließen Sie das <acronym>USB</acronym>-Gerät an.
	Verwenden Sie <command>dmesg</command> um zu überprüfen, ob
	das Gerät in den Systemmeldungen erscheint.  Dies sollte in
	etwa so aussehen:</para>

      <screen>umass0: &lt;STECH Simple Drive, class 0/0, rev 2.00/1.04, addr 3&gt; on usbus0
umass0:  SCSI over Bulk-Only; quirks = 0x0100
umass0:4:0:-1: Attached to scbus4
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: &lt;STECH Simple Drive 1.04&gt; Fixed Direct Access SCSI-4 device
da0: Serial Number WD-WXE508CAN263
da0: 40.000MB/s transfers
da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da0: quirks=0x2&lt;NO_6_BYTE&gt;</screen>

      <para>Fabrikat, Gerätedatei (<filename>da0</filename>),
	Geschwindigkeit und Kapazität werden je nach Gerät
	unterschiedlich sein.</para>

      <para>Da ein <acronym>USB</acronym>-Gerät als
	<acronym>SCSI</acronym>-Gerät erkannt wird, kann
	<command>camcontrol</command> benutzt werden, um die mit dem
	System verbundenen <acronym>USB</acronym>-Massenspeicher
	anzuzeigen:</para>

      <screen>&prompt.root; <userinput>camcontrol devlist</userinput>
&lt;STECH Simple Drive 1.04&gt;          at scbus4 target 0 lun 0 (pass3,da0)</screen>

      <para>Alternativ kann <command>usbconfig</command> benutzt
	werden, um die Geräte aufzulisten.  Weitere Informationen zu
	diesem Kommando finden Sie in &man.usbconfig.8;.</para>

      <screen>&prompt.root; <userinput>usbconfig</userinput>
ugen0.3: &lt;Simple Drive STECH&gt; at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)</screen>

      <para>Wenn das Gerät noch nicht formatiert ist, finden Sie in
	<xref linkend="disks-adding"/> Informationen, wie Sie
	<acronym>USB</acronym>-Laufwerke formatieren und Partitionen
	einrichten.  Wenn das Laufwerk bereits ein Dateisystem
	enthält, kann es von <systemitem
	  class="username">root</systemitem> nach den Anweisungen in
	<xref linkend="mount-unmount"/> eingehängt werden.</para>

      <warning>
        <para>Aus Sicherheitsgründen sollten Sie Benutzern, denen Sie
	  nicht vertrauen, das Einhängen (z.B. durch die unten
	  beschriebene Aktivierung von
	  <literal>vfs.usermount</literal>) beliebiger Medien
	  verbieten.  Die meisten Dateisysteme wurden nicht
	  entwickelt, um sich vor böswilligen Geräten zu
	  schützen.</para>
      </warning>

      <para>Um auch normalen Anwendern das Einhängen des Laufwerks zu
	gestatten, könnten Sie beispielsweise mit &man.pw.8; alle
	potentiellen Benutzer dieser Gerätedateien in die Gruppe
	<systemitem class="groupname">operator</systemitem> aufnehmen.
	Außerdem muss sichergestellt werden, dass <systemitem
	  class="groupname">operator</systemitem>
	Schreib- und Lesezugriff auf diese Gerätedateien haben.
	Hierfür werden die folgenden Zeilen in
	<filename>/etc/devfs.rules</filename> hinzugefügt:</para>

      <programlisting>[localrules=5]
add path 'da*' mode 0660 group operator</programlisting>

      <note>
	<para>Verfügt das System über interne
	  <acronym>SCSI</acronym>-Laufwerke, so verändern Sie die
	  zweite Zeile wie folgt:</para>

	<programlisting>add path 'da[<replaceable>3</replaceable>-9]*' mode 0660 group operator</programlisting>

	<para>Dies wird die ersten drei
	  <acronym>SCSI</acronym>-Laufwerke (<filename>da0</filename>
	  bis <filename>da2</filename>) davon ausschließen, in die
	  Gruppe <systemitem class="groupname">operator</systemitem>
	  aufgenommen zu werden.  Ersetzen Sie <literal>3</literal>
	  durch die Anzahl der <acronym>SCSI</acronym>-Laufwerke.
	  Weitere Informationen zu dieser Datei finden Sie in
	  &man.devfs.rules.5;.</para>
      </note>

      <para>Aktivieren Sie nun die Regeln
	in <filename>/etc/rc.conf</filename>:</para>

      <programlisting>devfs_system_ruleset="localrules"</programlisting>

      <para>Als nächstes müssen Sie das System anweisen, auch
	normalen Benutzern das mounten von Dateisystemen zu erlauben,
	indem Sie die folgende Zeile in
	<filename>/etc/sysctl.conf</filename> hinzufügen:</para>

      <programlisting>vfs.usermount=1</programlisting>

      <para>Da diese Einstellung erst nach einem Neustart wirksam
	wird, können Sie diese Variable mit <command>sysctl</command>
	auch direkt setzen:</para>

      <screen>&prompt.root; <userinput>sysctl vfs.usermount=1</userinput>
vfs.usermount: 0 -&gt; 1</screen>

      <para>Zuletzt müssen Sie noch ein Verzeichnis anlegen, in
	das das <acronym>USB</acronym>-Laufwerk eingehängt werden
	soll.  Dieses Verzeichnis muss dem Benutzer gehören, der das
	<acronym>USB</acronym>-Laufwerk in den Verzeichnisbaum
	einhängen will.  Dazu legen Sie als <systemitem
	  class="username">root</systemitem> ein
	Unterverzeichnis
	<filename>/mnt/<replaceable>username</replaceable></filename>
	an, wobei Sie <replaceable>username</replaceable>
	durch den Login des jeweiligen Benutzers sowie
	<replaceable>usergroup</replaceable> durch die primäre
	Gruppe des Benutzers ersetzen:</para>

      <screen>&prompt.root; <userinput>mkdir /mnt/<replaceable>username</replaceable></userinput>
&prompt.root; <userinput>chown <replaceable>username</replaceable>:<replaceable>usergroup</replaceable> /mnt/<replaceable>username</replaceable></userinput></screen>

      <para>Wenn Sie nun beispielsweise einen
	<acronym>USB</acronym>-Stick
	anschließen, wird automatisch die Gerätedatei
	<filename>/dev/da0s1</filename> erzeugt.  Ist das Gerät mit
	einem <acronym>FAT</acronym>-Dateisystem formatiert, kann es
	der Benutzer mit dem folgenden Befehl in den Verzeichnisbaum
	einhängen:</para>

      <screen>&prompt.user; <userinput>mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/<replaceable>username</replaceable></userinput></screen>

      <para>Bevor das Gerät entfernt werden kann,
	<emphasis>muss</emphasis> es abgehängt werden:</para>

      <screen>&prompt.root; <userinput>umount /mnt/<replaceable>username</replaceable></userinput></screen>

      <para>Nach Entfernen des Geräts stehen in den Systemmeldungen
	Einträge, ähnlich der folgenden:</para>

      <screen>umass0: at uhub3, port 2, addr 3 (disconnected)
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: &lt;STECH Simple Drive 1.04&gt; s/n WD-WXE508CAN263          detached
(da0:umass-sim0:0:0:0): Periph destroyed</screen>
    </sect2>

    <sect2>
      <title>Automatisches Einhängen von Wechselmedien</title>

      <para>Damit <acronym>USB</acronym>-Geräte automatisch
	eingehängt werden, muss der Kommentar für folgende Zeile in
	<filename>/etc/auto_master</filename> entfernt werden:</para>

      <screen>/media		-media		-nosuid</screen>

      <para>Anschließend fügen Sie folgende Zeilen in
	<filename>/etc/devd.conf</filename> hinzu:</para>

      <screen>notify 100 {
	match "system" "GEOM";
	match "subsystem" "DEV";
	action "/usr/sbin/automount -c";
};</screen>

      <para>Falls &man.autofs.5; und &man.devd.8; bereits
	ausgeführt werden, müssen Sie die Konfiguration neu
	einlesen:</para>

      <screen>&prompt.root; <userinput>service automount restart</userinput>
&prompt.root; <userinput>service devd restart</userinput></screen>

      <para>&man.autofs.5; wird beim Booten automatisch gestartet,
	wenn Sie folgende Zeile in <filename>/etc/rc.conf</filename>
	hinzufügen:</para>

      <programlisting>autofs_enable="YES"</programlisting>

      <para>Damit &man.autofs.5; funktioniert, muss &man.devd.8;
	aktiviert sein, was aber in der Voreinstellung der Fall
	ist.</para>

      <para>Starten Sie jetzt die Dienste:</para>

      <screen>&prompt.root; <userinput>service automount start</userinput>
&prompt.root; <userinput>service automountd start</userinput>
&prompt.root; <userinput>service autounmountd start</userinput>
&prompt.root; <userinput>service devd start</userinput></screen>

      <para>Jedes Dateisystem, das automatisch eingehängt werden kann,
	erscheint als ein Verzeichnis unterhalb von
	<filename>media</filename>.  Das Verzeichnis wird nach dem
	Dateisystemlabel benannt, bzw. nach dem Gerätenamen, falls
	kein Label existiert.</para>

      <para>Das Dateisystem wird transparent beim ersten Zugriff in
	den Verzeichnisbaum eingehängt und auch nach gewisser Zeit der
	Inaktivität wieder ausgehängt.  Laufwerke können auch manuell
	ausgehängt werden:</para>

      <screen>&prompt.root; <userinput>automount -fu</userinput></screen>

      <para>Diese Methode wird in der Regel bei Speicherkarten und
	<acronym>USB</acronym>-Sticks verwendet.  Sie funktioniert
	aber mit allen Blockgeräten, einschließlich optischen
	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">
    <info>
      <title>Erstellen und Verwenden
	von <acronym>CD</acronym>s</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Mike</firstname>
	    <surname>Meyer</surname>
	  </personname>
	  <contrib>Beigesteuert von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary><acronym>CD-ROM</acronym>s</primary>
      <secondary>brennen</secondary>
    </indexterm>

      <para><acronym>CD</acronym>s besitzen einige Eigenschaften, die
	sie von konventionellen Laufwerken unterscheiden.  Sie wurden
	so entworfen, dass sie ununterbrochen, ohne Verzögerungen
	durch Kopfbewegungen zwischen den Spuren, gelesen werden
	können.  <acronym>CD</acronym>s besitzen Spuren, aber damit
	ist der Teil Daten gemeint, der ununterbrochen gelesen wird,
	und nicht eine physikalische Eigenschaft der
	<acronym>CD</acronym>.  Das <acronym>ISO</acronym>
	9660-Dateisystem wurde entworfen, um mit diesen Unterschieden
	umzugehen.</para>

      <indexterm>
	<primary><acronym>ISO</acronym> 9660</primary>
      </indexterm>
      <indexterm>
	<primary>Dateisysteme</primary>
	<secondary>ISO 9660</secondary>
      </indexterm>

      <indexterm>
	<primary><acronym>CD</acronym>-Brenner</primary>
	<secondary><acronym>ATAPI</acronym></secondary>
      </indexterm>

      <para>Die &os; Ports-Sammlung bietet einige Werkzeuge zum
	Brennen und Kopieren von Audio- und
	Daten-<acronym>CD</acronym>s.  Dieses Kapitel beschreibt die
	Verwendung von mehreren Kommandozeilen-Werkzeugen.  Wenn Sie
	eine graphische Oberfläche zum Brennen von
	<acronym>CD</acronym>s benutzen, können Sie
	<package>sysutils/xcdroast</package> oder
	<package>sysutils/k3b</package> installieren.</para>

      <sect2 xml:id="atapicam">
	<info>
	  <title>Unterstützte Geräte</title>

	  <authorgroup>
	    <author>
	      <personname>
		<firstname>Marc</firstname>
		<surname>Fonvielle</surname>
	      </personname>
	      <contrib>Beigetragen von </contrib>
	    </author>
	  </authorgroup>
	</info>

	<indexterm>
	  <primary><acronym>CD</acronym>-Brenner</primary>
	  <secondary>ATAPI/CAM Treiber</secondary>
	</indexterm>

	<para>Der <filename>GENERIC</filename>-Kernel enthält
	  Unterstützung für <acronym>SCSI</acronym>,
	  <acronym>USB</acronym> und <acronym>ATAPI</acronym>
	  <acronym>CD</acronym> Lesegeräte und Brenner.  Wird ein
	  angepasster Kernel erstellt, unterscheiden sich die Optionen
	  für die Kernelkonfigurationsdatei je nach Art des
	  Geräts.</para>

	<para>Für einen <acronym>SCSI</acronym>-Brenner müssen
	  folgende Optionen vorhanden sein:</para>

	<programlisting>device scbus	  # SCSI bus (required for ATA/SCSI)
device da	  # Direct Access (disks)
device pass	  # Passthrough device (direct ATA/SCSI access)
device cd	  # needed for CD and DVD burners</programlisting>

	<para>Für einen <acronym>USB</acronym>-Brenner müssen folgende
	  Optionen vorhanden sein:</para>

	<programlisting>device scbus	  # SCSI bus (required for ATA/SCSI)
device da	  # Direct Access (disks)
device pass	  # Passthrough device (direct ATA/SCSI access)
device cd>	  # needed for CD and DVD burners
device uhci	  # provides USB 1.x support
device ohci	  # provides USB 1.x support
device ehci	  # provides USB 2.0 support
device xhci	  # provides USB 3.0 support
device usb	  # USB Bus (required)
device umass	  # Disks/Mass storage - Requires scbus and da</programlisting>

	<para>Für einen <acronym>ATAPI</acronym>-Brenner müssen
	  folgende Optionen vorhanden sein:</para>

	<programlisting>device ata	  # Legacy ATA/SATA controllers
device scbus	  # SCSI bus (required for ATA/SCSI)
device pass	  # Passthrough device (direct ATA/SCSI access)
device cd	  # needed for CD and DVD burners</programlisting>


	<note>
	  <para>Unter &os; Versionen kleiner 10.x wird auch diese
	    Option in der Kernelkonfigurationsdatei benötigt, falls
	    der Brenner ein <acronym>ATAPI</acronym>-Gerät ist:</para>

	  <programlisting>device atapicam</programlisting>

	  <para>Alternativ kann folgende Zeile in
	    <filename>/boot/loader.conf</filename> hinzugefügt werden,
	    um den Treiber beim Booten automatisch zu laden:</para>

	  <programlisting>atapicam_load="YES"</programlisting>

	  <para>Hierzu ist ein Neustart des Systems erforderlich, da
	    dieser Treiber nur beim Booten geladen werden kann.</para>
	</note>

	<para>Mit <command>dmesg</command> können Sie prüfen, ob das
	  Gerät von &os; erkannt wurde.  Unter &os; Versionen kleiner
	  10.x lautet der Gerätename <filename>acd0</filename>
	  anstelle von <filename>cd0</filename>.</para>

	<screen>&prompt.user; <userinput>dmesg | grep cd</userinput>
cd0 at ahcich1 bus 0 scbus1 target 0 lun 0
cd0: &lt;HL-DT-ST DVDRAM GU70N LT20&gt; Removable CD-ROM SCSI-0 device
cd0: Serial Number M3OD3S34152
cd0: 150.000MB/s transfers (SATA 1.x, UDMA6, ATAPI 12bytes, PIO 8192bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed</screen>
    </sect2>

    <sect2 xml:id="cdrecord">
      <title>Eine <acronym>CD</acronym> brennen</title>

      <para>Unter &os; kann <command>cdrecord</command> zum Brennen
	von <acronym>CD</acronym>s benutzt werden.  Dieses Programm
	wird aus dem Port oder Paket
	<package>sysutils/cdrecord</package> installiert.</para>

      <para>Obwohl <command>cdrecord</command> viele Optionen besitzt,
	ist die grundlegende Benutzung sehr einfach.  Geben Sie den
	Namen der zu brennenden ISO-Datei an.  Wenn das System über
	mehrere Brenner verfügt, müssen Sie auch den Namen des
	Gerätes angeben:</para>

      <screen>&prompt.root; <userinput>cdrecord <replaceable>dev=device</replaceable> <replaceable>imagefile.iso</replaceable></userinput></screen>

      <para>Benutzen Sie <option>-scanbus</option> um den Gerätenamen
	des Brenners zu bestimmen.  Die Ausgabe könnte wie folgt
	aussehen:</para>

      <indexterm>
	<primary><acronym>CD-ROM</acronym></primary>
	<secondary>brennen</secondary>
      </indexterm>

      <screen>&prompt.root; <userinput>cdrecord -scanbus</userinput>
ProDVD-ProBD-Clone 3.00 (amd64-unknown-freebsd10.0) Copyright (C) 1995-2010 Jörg Schilling
Using libscg version 'schily-0.9'
scsibus0:
        0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
        0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
        0,2,0     2) *
        0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
        0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
scsibus1:
        1,0,0   100) *
        1,1,0   101) *
        1,2,0   102) *
        1,3,0   103) *
        1,4,0   104) *
        1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
        1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
        1,7,0   107) *</screen>

      <para>Benutzen Sie die drei durch Kommas separierten Zahlen, die
	für den <acronym>CD</acronym>-Brenner angegeben sind, als
	Argument für <option>dev</option>.  Im Beispiel ist das
	Yamaha-Gerät <literal>1,5,0</literal>, so dass die passende
	Eingabe <option>dev=1,5,0</option> ist.  Einfachere Wege das
	Argument anzugeben, sowie Informationen über Audiospuren und
	das Einstellen der Geschwindigkeit, sind in der Manualpage von
	<command>cdrecord</command> beschrieben.</para>

      <para>Alternativ können Sie den folgenden Befehl ausführen, um
	die Geräteadresse des Brenners zu ermitteln:</para>

      <screen>&prompt.root; <userinput>camcontrol devlist</userinput>
&lt;MATSHITA CDRW/DVD UJDA740 1.00&gt;   at scbus1 target 0 lun 0 (cd0,pass0)</screen>

      <para>Verwenden Sie die numerischen Werte für
	<literal>scbus</literal>, <literal>target</literal> und
	<literal>lun</literal>.  Für dieses Beispiel wäre
	<literal>1,0,0</literal> als Gerätename zu verwenden.</para>
    </sect2>

    <sect2 xml:id="mkisofs">
      <title>Daten auf <acronym>ISO</acronym>-Dateisystem
	schreiben</title>

      <para>Die Datendateien müssen vorbereitet sein, bevor sie auf
	eine <acronym>CD</acronym> gebrannt werden.  In &os; wird
	<command>mkisofs</command> vom Paket oder Port
	<package>sysutils/cdrtools</package> installiert.  Dieses
	Programm kann aus einem &unix; Verzeichnisbaum ein
	<acronym>ISO</acronym> 9660-Dateisystem erzeugen.  Im
	einfachsten Fall müssen Sie lediglich den Namen der zu
	erzeugenden <acronym>ISO</acronym>-Datei und den Pfad zu den
	Dateien angeben, die auf dem <acronym>ISO</acronym>
	9660-Dateisystem platziert werden:</para>

      <screen>&prompt.root; <userinput>mkisofs -o <replaceable>imagefile.iso</replaceable> <replaceable>/path/to/tree</replaceable></userinput></screen>

      <indexterm>
	<primary>Dateisysteme</primary>
	<secondary>ISO 9660</secondary>
      </indexterm>

      <para>Bei diesem Kommando werden die Dateinamen auf Namen
	abgebildet, die den Restriktionen des <acronym>ISO</acronym>
	9660-Dateisystem entsprechen.  Dateien, die diesem Standard
	nicht entsprechen bleiben unberücksichtigt.</para>

      <indexterm>
	<primary>Dateisysteme</primary>
	<secondary>Joliet</secondary>
      </indexterm>

      <para>Es gibt einige Optionen, um die Beschränkungen dieses
	Standards zu überwinden.  Die unter &unix; Systemen üblichen
	Rock-Ridge-Erweiterungen werden durch <option>-R</option>
	aktiviert und <option>-J</option> aktiviert die von
	&microsoft; Systemen benutzten Joliet-Erweiterungen.</para>

      <para>Für <acronym>CD</acronym>s, die nur auf &os;-Systemen
	verwendet werden sollen, kann <option>-U</option> genutzt
	werden, um alle Beschränkungen für Dateinamen aufzuheben.
	Zusammen mit <option>-R</option> wird ein Abbild des
	Dateisystems, identisch zu angegebenen &os;-Dateibaum
	erstellt, selbst wenn dies den <acronym>ISO</acronym> 9660
	Standard verletzt.</para>

      <indexterm>
	<primary><acronym>CD-ROM</acronym></primary>
	<secondary>bootbare erstellen</secondary>
      </indexterm>

      <para>Die letzte übliche Option ist <option>-b</option>.
	Sie wird benutzt, um den Ort eines Bootimages einer
	<quote>El Torito</quote> bootbaren <acronym>CD</acronym>
	anzugeben.  Das Argument zu dieser Option ist der Pfad zu
	einem Bootimage ausgehend von der Wurzel des Baumes, der auf
	die <acronym>CD</acronym> geschrieben werden soll.  In der
	Voreinstellung erzeugt <command>mkisofs</command> ein
	<acronym>ISO</acronym>-Image im
	<quote>Diskettenemulations</quote>-Modus.  Dabei muss das
	Image genau 1200, 1440 oder 2880&nbsp;KB groß sein.  Einige
	Bootloader, darunter der auf den &os; Installationsmedien
	verwendete, kennen keinen Emulationsmodus.  Daher sollte in
	diesen Fällen <option>-no-emul-boot</option> verwendet werden.
	Wenn <filename>/tmp/myboot</filename> ein bootbares
	&os;-System enthält, dessen Bootimage sich in
	<filename>/tmp/myboot/boot/cdboot</filename> befindet, dann
	würde folgendes Kommando
	<filename>/tmp/bootable.iso</filename> erstellen:</para>

      <screen>&prompt.root; <userinput>mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot</userinput></screen>

      <para>Das resultierende <acronym>ISO</acronym>-Abbild kann als
	speicherbasiertes Laufwerk eingehängt werden:</para>

      <screen>&prompt.root; <userinput>mdconfig -a -t vnode -f /tmp/bootable.iso -u 0</userinput>
&prompt.root; <userinput>mount -t cd9660 /dev/md0 /mnt</userinput></screen>

      <para>Jetzt können Sie überprüfen, dass
	<filename>/mnt</filename> und <filename>/tmp/myboot</filename>
	identisch sind.</para>

      <para>Sie können das Verhalten von <command>mkisofs</command>
	mit einer Vielzahl von Optionen beeinflussen.  Details dazu
	entnehmen Sie bitte &man.mkisofs.8;.</para>

      <note>
	<para>Es ist möglich eine Daten-<acronym>CD</acronym> in eine
	  Datei zu kopieren, die einem Image entspricht, das mit
	  <command>mkisofs</command> erstellt wurde.  Verwenden Sie
	  dazu <command>dd</command> mit dem Gerätenamen als
	  Eingabedatei und den Namen der <acronym>ISO</acronym> als
	  Ausgabedatei:</para>

	<screen>&prompt.root; <userinput>dd if=/dev/<replaceable>cd0</replaceable> of=<replaceable>file.iso</replaceable> bs=2048</userinput></screen>

	<para>Das resultierende Abbild kann auf eine
	  <acronym>CD</acronym> gebrannt werden, wie in <xref
	    linkend="cdrecord"/> beschrieben.</para>
      </note>
    </sect2>

    <sect2 xml:id="mounting-cd">
      <title>Einhängen von Daten-<acronym>CD</acronym>s</title>

      <para>Sobald ein Abbild auf eine <acronym>CD</acronym> gebrannt
	wurde, kann es durch Angabe des Dateisystemtyp, des
	<acronym>CD</acronym>-Laufwerks und des Mountpunktes
	eingehangen werden:</para>

      <screen>&prompt.root; <userinput>mount -t cd9660 <replaceable>/dev/cd0</replaceable> <replaceable>/mnt</replaceable></userinput></screen>

      <para>Da <command>mount</command> davon ausgeht, dass ein
	Dateisystem vom Typ <literal>ufs</literal> ist, würde die
	Fehlermeldung <errorname>Incorrect super block</errorname>
	erscheinen, wenn Sie beim Einhängen einer
	Daten-<acronym>CD</acronym> auf die Angabe
	<literal>-t cd9660</literal> verzichten.</para>

      <para>Auf diese Weise können Daten-<acronym>CD</acronym>s
	von jedem Hersteller verwendet werden.  Es kann allerdings zu
	Problemen mit <acronym>CD</acronym>s kommen, die verschiedene
	<acronym>ISO</acronym> 9660-Erweiterungen benutzen.  So
	speichern Joliet-<acronym>CD</acronym>s alle Dateinamen unter
	Verwendung von zwei Byte langen Unicode-Zeichen.  Tauchen
	statt bestimmter Zeichen nur Fragezeichen auf, so
	muss über die Option <option>-C</option> der benötigte
	Zeichensatz angegeben werden.  Weitere Informationen zu
	diesem Problem finden Sie in &man.mount.cd9660.8;.</para>

      <note>
	<para>Damit der Kernel diese Zeichenkonvertierung (festgelegt
	  durch die Option <option>-C</option>) erkennt, müssen Sie
	  das Kernelmodul <filename>cd9660_iconv.ko</filename> laden.
	  Dazu fügen Sie folgende Zeile in
	  <filename>loader.conf</filename> ein:</para>

	<programlisting>cd9660_iconv_load="YES"</programlisting>

	<para>Danach müssen Sie allerdings Ihr System neu starten.
	  Alternativ können Sie das Kernelmodul auch direkt
	  über <command>kldload</command> laden.</para>
      </note>

      <para>Manchmal werden Sie die Meldung
	<errorname>Device not configured</errorname> erhalten, wenn
	Sie versuchen, eine Daten-<acronym>CD</acronym> einzuhängen.
	Für gewöhnlich liegt das daran, dass das Laufwerk keine
	<acronym>CD</acronym> erkannt hat, oder dass das Laufwerk
	auf dem Bus nicht erkannt wird.  Es kann einige Sekunden
	dauern, bevor das Laufwerk die <acronym>CD</acronym> erkennt.
	Seien Sie also geduldig.</para>

      <para>Manchmal wird ein
	<acronym>SCSI</acronym>-<acronym>CD</acronym> nicht
	erkannt, weil es keine Zeit hatte, auf das Zurücksetzen des
	Busses zu antworten.  Um dieses Problem zu lösen, fügen Sie
	die folgende Zeile in die Kernelkonfiguration ein und
	erstellen Sie einen angepassten Kernel nach den Anweisungen in
	<xref linkend="kernelconfig-building"/>:</para>

      <programlisting>options SCSI_DELAY=15000</programlisting>

      <para>Die Zeile bewirkt, dass nach dem Zurücksetzen des
	<acronym>SCSI</acronym>-Busses beim Booten 15 Sekunden
	gewartet wird, um dem
	<acronym>CD</acronym>-Laufwerk genügend Zeit zu geben,
	darauf zu antworten.</para>

      <note>
	<para>Es ist möglich eine Datei auch direkt auf eine
	  <acronym>CD</acronym> zu brennen, ohne vorher auf ihr ein
	  <acronym>ISO</acronym> 9660-Dateisystem einzurichten.  Man
	  sagt auch, Daten werden roh auf die <acronym>CD</acronym>
	  gebrannt.  Einige Leute nutzen dies, um Datensicherungen
	  durchzuführen.</para>

	<para>Eine auf diese Weise gefertigte
	  Daten-<acronym>CD</acronym> kann nicht in das Dateisystem
	  eingehangen werden.  Um auf die Daten einer solchen
	  <acronym>CD</acronym> zuzugreifen, müssen die Daten vom
	  rohen Gerät gelesen werden.  Beispielsweise würde dieser
	  Befehl eine komprimierte tar-Datei auf dem zweiten
	  <acronym>CD</acronym>-Laufwerk in das aktuelle Verzeichnis
	  extrahieren:</para>

	<screen>&prompt.root; <userinput>tar xzvf /dev/<replaceable>cd1</replaceable></userinput></screen>

	<para>Um eine Daten-<acronym>CD</acronym> in das System
	  einzuhängen, müssen die Daten mit <command>mkisofs</command>
	  geschrieben werden.</para>
      </note>
    </sect2>

    <sect2 xml:id="duplicating-audiocds">
      <title>Kopieren von Audio-<acronym>CD</acronym>s</title>

      <para>Um eine Kopie einer Audio-<acronym>CD</acronym> zu
	erstellen, kopieren Sie die Stücke der <acronym>CD</acronym>
	in einzelne Dateien und brennen diese Dateien dann auf eine
	leere <acronym>CD</acronym>.</para>

      <para><xref linkend="using-cdrecord"/> beschreibt, wie eine
	Audio-<acronym>CD</acronym> kopiert und gebrannt wird.  Wenn
	die Version älter als &os; 10.0 ist und ein
	<acronym>ATAPI</acronym>-Gerät verwendet wird, muss zunächst
	das Modul <option>atapicam</option> nach den Anweisungen in
	<xref linkend="atapicam"/> geladen werden.</para>

      <procedure xml:id="using-cdrecord">
	<title>Eine Audio-<acronym>CD</acronym> kopieren</title>

	<step>
	  <para>Der Port oder das Paket
	    <package>sysutils/cdrtools</package> installiert
	    <command>cdda2wav</command>.  Mit diesem Kommando können
	    Audiodaten in das aktuelle Verzeichnis extrahiert werden,
	    wobei jede Datei in eine separate
	    <acronym>WAV</acronym>-Datei geschrieben wird:</para>

	  <screen>&prompt.user; <userinput>cdda2wav -vall -B -Owav</userinput></screen>

	  <para>Wenn das System nur über ein
	    <acronym>CD</acronym>-Laufwerk verfügt, muss der
	    Gerätename nicht angegeben werden.  Lesen Sie die
	    Manualpage von <command>cdda2wav</command> für
	    Anweisungen, wie ein Gerät spezifiziert wird und weitere
	    verfügbare Optionen für dieses Kommando.</para>
	</step>

	<step>
	  <para>Die erzeugten <filename>.wav</filename> Dateien
	    schreiben Sie mit <command>cdrecord</command> auf eine
	    leere <acronym>CD</acronym>:</para>

	  <screen>&prompt.user; <userinput>cdrecord -v dev=<replaceable>2,0</replaceable> -dao -useinfo *.wav</userinput></screen>

	  <para>Das Argument von <option>dev</option> gibt das
	    verwendete Gerät an, das wie in <xref linkend="cdrecord"/>
	    ermittelt werden kann.</para>
	</step>
      </procedure>
    </sect2>
  </sect1>

  <sect1 xml:id="creating-dvds">
    <info>
      <title><acronym>DVD</acronym>s benutzen</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Marc</firstname>
	    <surname>Fonvieille</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <personname>
	    <firstname>Andy</firstname>
	    <surname>Polyakov</surname>
	  </personname>
	  <contrib>Mit Beiträgen von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary><acronym>DVD</acronym></primary>
      <secondary>brennen</secondary>
    </indexterm>

    <para>Nach der <acronym>CD</acronym> ist die
      <acronym>DVD</acronym> die nächste Generation optischer
      Speichermedien.  Auf einer <acronym>DVD</acronym> können
      mehr Daten als auf einer <acronym>CD</acronym> gespeichert
      werden.  <acronym>DVD</acronym>s werden als Standardmedium für
      Videos verwendet.</para>

    <para>Für beschreibbare <acronym>DVD</acronym>s existieren fünf
      Medienformate:</para>

    <itemizedlist>
      <listitem>
	<para>DVD-R:  Dies war das erste verfügbare Format.  Das
	  Format wurde vom <link
	    xlink:href="http://www.dvdforum.com/forum.shtml">
	    DVD-Forum</link> festgelegt.  Die Medien sind nur einmal
	  beschreibbar.</para>
      </listitem>

      <listitem>
	<para><acronym>DVD-RW</acronym>:  Dies ist die
	  wiederbeschreibbare Version des DVD-R Standards.  Eine
	  <acronym>DVD-RW</acronym> kann ungefähr
	  1000&nbsp;Mal beschrieben werden.</para>
      </listitem>

      <listitem>
	<para><acronym>DVD-RAM</acronym>:  Dies ist ein
	  wiederbeschreibbares Format, das wie ein Wechsellaufwerk
	  betrachtet werden kann.  Allerdings sind die Medien nicht
	  kompatibel zu den meisten
	  <acronym>DVD-ROM</acronym>-Laufwerken und
	  DVD-Video-Spielern, da das
	  <acronym>DVD-RAM-Format</acronym> nur von wenigen Brennern
	  unterstützt wird.  Informationen zur Nutzung von
	  <acronym>DVD-RAM</acronym> finden Sie in
	  <xref linkend="creating-dvd-ram"/>.</para>
      </listitem>

      <listitem>
	<para><acronym>DVD+RW</acronym>:  Ist ein
	  wiederbeschreibbares Format, das von der <link
	    xlink:href="http://www.dvdrw.com/">
	    <acronym>DVD+RW</acronym> Alliance</link> festgelegt
	  wurde.  Eine <acronym>DVD+RW</acronym> kann ungefähr
	  1000&nbsp;Mal beschrieben werden.</para>
      </listitem>

      <listitem>
	<para>DVD+R:  Dieses Format ist die nur einmal beschreibbare
	  Variante des <acronym>DVD+RW</acronym> Formats.</para>
      </listitem>
    </itemizedlist>

    <para>Auf einer einfach beschichteten <acronym>DVD</acronym>
      können 4.700.000.000&nbsp;Bytes gespeichert werden.  Das
      sind 4,38&nbsp;GB oder 4485&nbsp;MB (1&nbsp;Kilobyte
      sind 1024&nbsp;Bytes).</para>

    <note>
      <para>Die physischen Medien sind unabhängig von der Anwendung.
	Ein DVD-Video ist eine spezielle Anordnung von Dateien, die
	auf irgendein Medium, beispielsweise DVD-R, DVD+R oder
	<acronym>DVD-RW</acronym> geschrieben werden kann.  Bevor Sie
	ein Medium auswählen, müssen Sie sicherstellen, dass der
	Brenner und der DVD-Spieler mit dem Medium umgehen
	können.</para>
    </note>

    <sect2>
      <title>Konfiguration</title>

      <para>Benutzen Sie &man.growisofs.1;, um <acronym>DVD</acronym>s
	zu beschreiben.  Das Kommando ist Bestandteil von
	<package>sysutils/dvd+rw-tools</package>, und kann mit allen
	<acronym>DVD</acronym>-Medien umgehen.</para>

      <para>Diese Werkzeuge verwenden das
	<acronym>SCSI</acronym>-Subsystem, um auf die Geräte
	zuzugreifen.  Daher muss <link
	  linkend="atapicam">ATAPI/CAM-Unterstützung</link>
	geladen, oder statisch in den Kernel kompiliert werden.
	Sollte der Brenner jedoch die
	<acronym>USB</acronym>-Schnittstelle nutzen, wird diese
	Unterstützung nicht benötigt.  Weitere Informationen zur
	Konfiguration von <acronym>USB</acronym>-Geräten finden Sie in
	<xref linkend="usb-disks"/>.</para>

      <para>Für <acronym>ATAPI</acronym>-Geräte müssen ebenfalls
	DMA-Zugriffe aktiviert werden.  Dazu wird die folgende Zeile
	in <filename>/boot/loader.conf</filename> eingefügt:</para>

      <programlisting>hw.ata.atapi_dma="1"</programlisting>

      <para>Bevor Sie <application>dvd+rw-tools</application>
	benutzen, lesen Sie bitte die
	Hardware-Informationen auf der Seite <link
	  xlink:href="http://fy.chalmers.se/~appro/linux/DVD+RW/hcn.html">Hardware
	  Compatibility Notes</link>.</para>

      <note>
	<para>Für eine grafische Oberfläche sollten Sie sich
	  <package>sysutils/k3b</package> ansehen, das eine
	  benutzerfreundliche Schnittstelle zu &man.growisofs.1; und
	  vielen anderen Werkzeugen bietet.</para>
      </note>
    </sect2>

    <sect2>
      <title>Daten-<acronym>DVD</acronym>s brennen</title>

      <para>&man.growisofs.1; erstellt mit dem Programm
	<link linkend="mkisofs">mkisofs</link> das Dateisystem
	und brennt anschließend die <acronym>DVD</acronym>.  Vor dem
	Brennen braucht daher kein Abbild der Daten erstellt zu
	werden.</para>

      <para>Wenn Sie von den Daten im Verzeichnis
	<filename>/path/to/data</filename> eine
	DVD+R oder eine DVD-R brennen wollen, benutzen Sie
	das nachstehende Kommando:</para>

      <screen>&prompt.root; <userinput>growisofs -dvd-compat -Z <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/data</replaceable></userinput></screen>

      <para>In diesem Beispiel wird <option>-J -R</option> an
	&man.mkisofs.8; durchgereicht und dient zum Erstellen
	des Dateisystems (hier:  ein ISO-9660-Dateisystem mit
	Joliet- und Rock-Ridge-Erweiterungen).  Weiteres
	entnehmen Sie bitte der Hilfeseite &man.mkisofs.8;.</para>

      <para>Die Option <option>-Z</option> wird für die erste
	Aufnahme einer Single- oder Multisession benötigt.  Ersetzen
	Sie <replaceable>/dev/cd0</replaceable> mit dem Gerätenamen
	des <acronym>DVD</acronym>-Gerätes.  Die Nutzung von
	<option>-dvd-compat</option> schließt das Medium, weitere
	Daten können danach nicht mehr angehängt werden.  Dies sollte
	auch eine bessere Kompatibilität mit anderen
	<acronym>DVD-ROM</acronym>-Laufwerken bieten.</para>

      <para>Um ein vorher erstelltes Abbild der Daten zu brennen,
	beispielsweise <replaceable>imagefile.iso</replaceable>,
	verwenden Sie:</para>

      <screen>&prompt.root; <userinput>growisofs -dvd-compat -Z <replaceable>/dev/cd0</replaceable>=<replaceable>imagefile.iso</replaceable></userinput></screen>

      <para>Die Schreibgeschwindigkeit hängt von den
	verwendeten Medium sowie dem verwendeten Gerät ab
	und sollte automatisch gesetzt werden.  Um die
	Schreibgeschwindigkeit vorzugeben, verwenden Sie
	<option>-speed=</option>.  Beispiele finden Sie in
	&man.growisofs.1;.</para>

      <note>
	<para>Um größere Dateien als 4.38GB zu unterstützen, ist es
	  notwendig ein UDF/ISO-9660 Hybrid-Dateisystem zu erstellen.
	  Dieses Dateisystem muss mit zusätzlichen Parametern
	  <option>-udf -iso-level 3</option> bei &man.mkisofs.8; und
	  allen relevanten Programmen, wie beispielsweise
	  &man.growisofs.1;) erzeugt werden.  Dies ist nur notwendig,
	  wenn Sie ein ISO-Image erstellen oder direkt auf eine DVD
	  schreiben wollen.  DVDs, die in dieser Weise hergestellt
	  worden sind, müssen als UDF-Dateisystem mit
	  &man.mount.udf.8; eingehangen werden.  Sie sind nur auf
	  Betriebssystemen, die UDF unterstützen brauchbar, ansonsten
	  sieht es so aus, als ob sie kaputte Dateien enthalten
	  würden.</para>

	<para>Um diese Art von ISO-Datei zu erstellen:</para>

	<screen>&prompt.user; <userinput>mkisofs -R -J -udf -iso-level 3 -o <replaceable>imagefile.iso</replaceable> <replaceable>/path/to/data</replaceable>
</userinput></screen>

	<para>Um Daten direkt auf eine DVD zu brennen, geben Sie den
	  folgenden Befehl ein:</para>

	<screen>&prompt.root; <userinput>growisofs -dvd-compat -udf -iso-level 3 -Z <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/data</replaceable>
</userinput></screen>

	<para>Wenn ein ISO-Abbild bereits große Dateien enthält, sind
	  keine weiteren Optionen für &man.growisofs.1; notwendig, um
	  das Abbild auf die DVD zu brennen.</para>

	<para>Achten Sie darauf, eine aktuelle Version von
	  <package>sysutils/cdrtools</package> zu verwenden, welche
	  &man.mkisofs.8; enthält, da ältere Versionen keinen Support
	  für große Dateien enthalten.  Falls die neueste Version
	  nicht funktioniert, installieren Sie
	  <package>sysutils/cdrtools-devel</package> und lesen Sie
	  &man.mkisofs.8;.</para>
      </note>
    </sect2>

    <sect2>
      <title><acronym>DVD</acronym>-Videos brennen</title>

      <indexterm>
	<primary><acronym>DVD</acronym></primary>
	<secondary>DVD-Video</secondary>
      </indexterm>

      <para>Ein DVD-Video ist eine spezielle Anordnung von Dateien,
	die auf den ISO-9660 und den micro-UDF (M-UDF) Spezifikationen
	beruht.  Da DVD-Video auf eine bestimmte Datei-Hierarchie
	angewiesen ist, müssen <acronym>DVD</acronym>s mit speziellen
	Programmen wie <package>multimedia/dvdauthor</package>
	erstellt werden.</para>

      <para>Ist bereits ein Abbild des Dateisystems eines
	DVD-Videos vorhanden, kann es auf die gleiche Weise wie jedes
	andere Abbild gebrannt werden.  Wenn
	<command>dvdauthor</command> verwendet wurde, um die
	<acronym>DVD</acronym> zu erstellen und die Resultate in
	<filename>/path/to/video</filename> liegen, kann das folgende
	Kommando verwendet werden, um ein DVD-Video zu brennen:</para>

      <screen>&prompt.root; <userinput>growisofs -Z <replaceable>/dev/cd0</replaceable> -dvd-video <replaceable>/path/to/video</replaceable></userinput></screen>

      <para><option>-dvd-video</option> wird an &man.mkisofs.8;
	weitergereicht, um die Datei-Hierarchie für ein DVD-Video zu
	erstellen.  Weiterhin bewirkt diese Option, dass
	&man.growisofs.1; mit <option>-dvd-compat</option> aufgerufen
	wird.</para>
    </sect2>

    <sect2>
      <title><acronym>DVD+RW</acronym>-Medien benutzen</title>

      <indexterm>
	<primary><acronym>DVD</acronym></primary>
	<secondary><acronym>DVD+RW</acronym></secondary>
      </indexterm>

      <para>Im Gegensatz zu CD-RW-Medien müssen
	<acronym>DVD+RW</acronym>-Medien
	erst formatiert werden, bevor sie benutzt werden können.
	Es wird <emphasis>empfohlen</emphasis> &man.growisofs.1;
	einzusetzen, da das Programm Medien automatisch formatiert,
	wenn es erforderlich ist.  Es ist jedoch möglich, auch
	<command>dvd+rw-format</command> zu nutzen, um die
	<acronym>DVD+RW</acronym> zu formatieren:</para>

      <screen>&prompt.root; <userinput>dvd+rw-format <replaceable>/dev/cd0</replaceable></userinput></screen>

      <para>Dieser Vorgang muss nur einmal durchgeführt werden.
	Denken Sie daran, dass nur neue DVD+RWs formatiert werden
	müssen.  Anschließend können <acronym>DVD+RW</acronym>s, wie
	gewohnt gebrannt werden.</para>

      <para>Wenn Sie auf einer <acronym>DVD+RW</acronym> ein neues
	Dateisystem erstellen wollen, brauchen Sie die
	<acronym>DVD+RW</acronym> vorher nicht zu
	löschen.  Überschreiben Sie einfach das vorige Dateisystem
	indem Sie eine neue Session anlegen:</para>

      <screen>&prompt.root; <userinput>growisofs -Z <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/newdata</replaceable></userinput></screen>

      <para>Das <acronym>DVD+RW</acronym>-Format erlaubt es, Daten an
	eine vorherige Aufnahme anzuhängen.  Dazu wird eine neue
	Session mit der schon bestehenden zusammengeführt.
	Es wird keine Multi-Session geschrieben, sondern
	&man.growisofs.1; <emphasis>vergrößert</emphasis>
	das ISO-9660-Dateisystem auf dem Medium.</para>

      <para>Das folgende Kommando fügt weitere Daten zu
	einer vorher erstellten <acronym>DVD+RW</acronym>
	hinzu:</para>

      <screen>&prompt.root; <userinput>growisofs -M <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/nextdata</replaceable></userinput></screen>

      <para>Wenn Sie eine <acronym>DVD+RW</acronym> erweitern,
	verwenden Sie dieselben &man.mkisofs.8;-Optionen wie beim
	Erstellen der <acronym>DVD+RW</acronym>.</para>

      <note>
	<para>Verwenden Sie <option>-dvd-compat</option>, um bessere
	  Kompatibilität mit <acronym>DVD-ROM</acronym>-Laufwerken zu
	  gewährleisten.  Zu einem <acronym>DVD+RW</acronym>-Medium
	  können Sie mit dieser Option auch weiterhin Daten
	  hinzufügen.</para>
      </note>

      <para>Um das Medium zu löschen, verwenden Sie:</para>

      <screen>&prompt.root; <userinput>growisofs -Z <replaceable>/dev/cd0</replaceable>=<replaceable>/dev/zero</replaceable></userinput></screen>
    </sect2>

    <sect2>
      <title><acronym>DVD-RW</acronym>-Medien benutzen</title>

      <indexterm>
	<primary><acronym>DVD</acronym></primary>
	<secondary><acronym>DVD-RW</acronym></secondary>
      </indexterm>

      <para>Eine <acronym>DVD-RW</acronym> kann mit zwei Methoden
	beschrieben werden:
	<firstterm>Sequential-Recording</firstterm> oder
	<firstterm>Restricted-Overwrite</firstterm>.  Voreingestellt
	ist Sequential-Recording.</para>

      <para>Eine neue <acronym>DVD-RW</acronym> kann direkt
	beschrieben werden; sie muss nicht vorher formatiert werden.
	Allerdings muss eine <acronym>DVD-RW</acronym>, die mit
	Sequential-Recording aufgenommen wurde, zuerst gelöscht
	werden, bevor eine neue Session aufgenommen werden
	kann.</para>

      <para>Der folgende Befehl löscht eine <acronym>DVD-RW</acronym>
	im Sequential-Recording-Modus:</para>

      <screen>&prompt.root; <userinput>dvd+rw-format -blank=full <replaceable>/dev/cd0</replaceable></userinput></screen>

      <note>
	<para>Das vollständige Löschen mit
	  <option>-blank=full</option> dauert mit einem
	  1x&nbsp;Medium ungefähr eine Stunde.  Wenn die
	  <acronym>DVD-RW</acronym> im Disk-At-Once-Modus (DAO)
	  aufgenommen wurde, kann sie mit <option>-blank</option>
	  schneller gelöscht werden.  Um eine
	  <acronym>DVD-RW</acronym> im DAO-Modus zu brennen, benutzen
	  Sie das folgende Kommando:</para>

	<screen>&prompt.root; <userinput>growisofs -use-the-force-luke=dao -Z <replaceable>/dev/cd0</replaceable>=<replaceable>imagefile.iso</replaceable>
</userinput></screen>

	<para>Die Option <option>-use-the-force-luke=dao</option>
	  sollte nicht erforderlich sein, da &man.growisofs.1;
	  den DAO-Modus automatisch erkennt.</para>

	<para>Der Restricted-Overwrite-Modus sollte mit jeder
	  <acronym>DVD-RW</acronym> verwendet werden, da er flexibler
	  als der voreingestellte Sequential-Recording-Modus
	  ist.</para>
      </note>

      <para>Um Daten auf eine <acronym>DVD-RW</acronym> im
	Sequential-Recording-Modus zu schreiben, benutzen Sie dasselbe
	Kommando wie für die anderen
	<acronym>DVD</acronym>-Formate:</para>

      <screen>&prompt.root; <userinput>growisofs -Z <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/data</replaceable></userinput></screen>

      <para>Um weitere Daten zu einer Aufnahme hinzuzufügen, benutzen
	Sie <option>-M</option> mit &man.growisofs.1;.  Werden die
	Daten im Sequential-Recording-Modus hinzugefügt, wird eine
	neue Session erstellt.  Das Ergebnis ist ein
	Multi-Session-Medium.</para>

      <para>Eine <acronym>DVD-RW</acronym> im
	Restricted-Overwrite-Modus muss nicht gelöscht werden, um eine
	neue Session aufzunehmen.  Das Medium kann einfach mit
	<option>-Z</option> überschrieben werden.  Mit
	<option>-M</option> kann das ISO-9660-Dateisystem, wie mit
	einer <acronym>DVD+RW</acronym>, vergrößert werden.
	Die <acronym>DVD</acronym> enthält danach eine Session.</para>

      <para>Benutzen sie das nachstehende Kommando, um den
	Restricted-Overwrite-Modus einzustellen:</para>

      <screen>&prompt.root; <userinput>dvd+rw-format <replaceable>/dev/cd0</replaceable></userinput></screen>

      <para>Das folgende Kommando stellt den Modus wieder auf
	Sequential-Recording zurück:</para>

      <screen>&prompt.root; <userinput>dvd+rw-format -blank=full <replaceable>/dev/cd0</replaceable></userinput></screen>
    </sect2>

    <sect2>
      <title>Multi-Session</title>

      <para>Nur wenige <acronym>DVD-ROM</acronym>-Laufwerke
	unterstützen Multi-Session-DVDs und lesen meist nur die erste
	Session.  Mehrere Sessions werden von DVD+R, DVD-R und
	<acronym>DVD-RW</acronym> im Sequential-Recording-Modus
	unterstützt.  Im Modus Restricted-Overwrite gibt nur eine
	Session.</para>

      <para>Wenn das Medium noch nicht geschlossen ist, erstellt das
	nachstehende Kommando eine neue Session auf einer DVD+R, DVD-R
	oder <acronym>DVD-RW</acronym> im
	Sequential-Recording-Modus:</para>

      <screen>&prompt.root; <userinput>growisofs -M <replaceable>/dev/cd0</replaceable> -J -R <replaceable>/path/to/nextdata</replaceable></userinput></screen>

      <para>Wird dieses Kommando mit <acronym>DVD+RW</acronym>- oder
	<acronym>DVD-RW</acronym>-Medien im Restricted-Overwrite-Modus
	benutzt, werden die neuen Daten mit
	den Daten der bestehenden Session zusammengeführt.  Das Medium
	enthält danach eine Session.  Nutzen Sie diese Methode, um
	neue Daten zu einer bestehenden Session hinzuzufügen.</para>

      <note>
	<para>Für den Anfang und das Ende einer Session wird auf dem
	  Medium zusätzlicher Platz verbraucht.  Um den Speicherplatz
	  auf dem Medium optimal auszunutzen, sollten Sie daher
	  Sessions mit vielen Daten hinzufügen.  Auf ein DVD+R-Medium
	  passen maximal 154&nbsp;Sessions, 2000&nbsp;Sessions auf ein
	  DVD-R-Medium und 127&nbsp;Sessions auf eine DVD+R Double
	  Layer.</para>
      </note>
    </sect2>

    <sect2>
      <title>Weiterführendes</title>

      <para><command>dvd+rw-mediainfo
	  <replaceable>/dev/cd0</replaceable></command> zeigt
	Informationen über eine im Laufwerk liegende
	<acronym>DVD</acronym> an.</para>

      <para>Weiteres zu <application>dvd+rw-tools</application>
	finden Sie in &man.growisofs.1;, auf der <link
	  xlink:href="http://fy.chalmers.se/~appro/linux/DVD+RW/">
	  dvd+rw-tools Web-Seite</link> und in den Archiven
	der <link xlink:href="http://lists.debian.org/cdwrite/">
	  cdwrite-Mailingliste</link>.</para>

      <note>
	<para>Wenn Sie einen Problembericht zur Nutzung der
	  <application>dvd+rw-tools</application> erstellen, fügen Sie
	  immer die Ausgabe von <command>dvd+rw-mediainfo</command>
	  hinzu.</para>
      </note>
    </sect2>

    <sect2 xml:id="creating-dvd-ram">
      <title><acronym>DVD-RAM</acronym></title>

      <indexterm>
	<primary><acronym>DVD</acronym></primary>
	<secondary><acronym>DVD-RAM</acronym></secondary>
      </indexterm>

      <para><acronym>DVD-RAM</acronym>-fähige Brenner nutzten die
	<acronym>SCSI</acronym>- oder
	<acronym>ATAPI</acronym>-Schnittstelle.  Für
	<acronym>ATAPI</acronym>-Geräte muss der DMA-Modus aktiviert
	werden, indem die folgende Zeile in
	<filename>/boot/loader.conf</filename> hinzugefügt
	wird:</para>

      <programlisting>hw.ata.atapi_dma="1"</programlisting>

      <para>Eine <acronym>DVD-RAM</acronym> kann mit einer
	Wechselplatte verglichen werden.  Wie diese, muss auch eine
	<acronym>DVD-RAM</acronym> vor dem ersten
	Einsatz formatiert werden.  In diesem Beispiel wird das
	gesamte Medium mit dem Standard-UFS2-Dateisystem
	formatiert:</para>

      <screen>&prompt.root; <userinput>dd if=/dev/zero of=<replaceable>/dev/acd0</replaceable> bs=2k count=1</userinput>
&prompt.root; <userinput>bsdlabel -Bw <replaceable>acd0</replaceable></userinput>
&prompt.root; <userinput>newfs <replaceable>/dev/acd0</replaceable></userinput></screen>

      <para>Denken Sie dabei daran, dass Sie gegebenenfalls die
	Gerätedatei (hier <filename>acd0</filename>) an
	Ihre Konfiguration anpassen müssen.</para>

      <para>Nachdem die <acronym>DVD-RAM</acronym> formatiert ist,
	kann sie wie eine normale Festplatte gemountet
	werden:</para>

      <screen>&prompt.root; <userinput>mount <replaceable>/dev/acd0</replaceable> <replaceable>/mnt</replaceable></userinput></screen>

      <para>Danach kann schreibend und lesend auf das
	<acronym>DVD-RAM</acronym> Medium zugegriffen werden.</para>
    </sect2>
  </sect1>

  <sect1 xml:id="floppies">
    <title>Disketten benutzen</title>

<!--
      <authorgroup>
	<author>
	  <personname>
	    <firstname>Julio</firstname>
	    <surname>Merino</surname>
	  </personname>
	  <contrib>Original von </contrib>
	</author>
      </authorgroup>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Martin</firstname>
	    <surname>Karlsson</surname>
	  </personname>
	  <contrib>Umgeschrieben von </contrib>
	</author>
      </authorgroup>
-->

    <para>Dieser Abschnitt beschreibt die Formatierung
      von 3,5&nbsp;Zoll Disketten in &os;.</para>

    <procedure>
      <title>Disketten formatieren</title>

      <para>Bevor eine Diskette benutzt werden kann, muss sie
	(low-level) formatiert werden, was normalerweise der
	Hersteller schon gemacht hat.  Sie können die Diskette
	allerdings noch einmal formatieren, um das Medium zu
	überprüfen.  Benutzen Sie &man.fdformat.1;, um Disketten
	unter &os; zu formatieren.  Achten Sie dabei auf
	Fehlermeldungen, die schlechte Speichermedien
	anzeigen.</para>

      <step>
	<para>Um eine Diskette zu formatieren, legen Sie eine
	  3,5&nbsp;Zoll Diskette in das erste Diskettenlaufwerk ein
	  und führen das folgende Kommando aus:</para>

	<screen>&prompt.root; <userinput>/usr/sbin/fdformat -f 1440 /dev/fd0</userinput></screen>
      </step>

      <step>
	<para>Nach dem Formatieren muss auf der Diskette ein
	  Disklabel erstellt werden, um die Größe und Geometrie der
	  Diskette zu erkennen.  Eine Liste der unterstützten
	  Geometrien finden Sie in
	  <filename>/etc/disktab</filename>.</para>

	<para>Erstellen Sie nun das Label mit &man.bsdlabel.8;:</para>

	<screen>&prompt.root; <userinput>/sbin/bsdlabel -B -w /dev/fd0 fd1440</userinput></screen>
      </step>

      <step>
	<para>Auf der Diskette kann nun ein Dateisystem erstellt
	  werden (high-level Formatierung).  Das Dateisystem der
	  Diskette kann entweder UFS oder FAT sein, wobei FAT für
	  Disketten in der Regel die bessere Wahl ist.</para>

	<para>Um die Diskette mit FAT zu formatieren, geben Sie
	  folgendes Kommando ein:</para>

	<screen>&prompt.root; <userinput>/sbin/newfs_msdos /dev/fd0</userinput></screen>
      </step>
    </procedure>

    <para>Die Diskette kann nun benutzt werden.  Um die Diskette
      zu verwenden, kann sie mit &man.mount.msdosfs.8; eingehängt
      werden.  Man kann auch <package>emulators/mtools</package> aus
      der Ports-Sammlung installieren, um mit der Diskette zu
      arbeiten.</para>
  </sect1>

  <sect1 xml:id="backup-basics">
    <title>Datensicherung</title>

    <!--
      <authorgroup>
	<author>
	  <personname>
	    <firstname>Lowell</firstname>
	    <surname>Gilbert</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
      -->

    <para>Die Planung und Umsetzung einer Backup-Strategie ist
      unerlässlich, um Daten in bestimmten Situationen
      wiederherstellen zu können, zum Beispiel bei Plattendefekten,
      versehentlichem Löschen von Dateien, willkürlicher Korrumpierung
      von Dateien oder der vollständigen Zerstörung des Systems und
      der Backups, die am gleichen Ort aufbewahrt werden.</para>

    <para>Die Art und der Zeitplan des Backups kann variieren,
      abhängig von der Wichtigkeit der Daten, der benötigten
      Granularität zur Wiederherstellung von Dateien und der
      Dauer einer akzeptablen Ausfallzeit.  Zu den möglichen
      Backup-Strategien gehören unter anderem:</para>

    <itemizedlist>
      <listitem>
	<para>Die Archivierung des kompletten Systems auf externen
	  Datenträgern.  Dieser Ansatz schützt zwar vor allen oben
	  aufgeführten Problemen, ist aber zeitaufwändig und unbequem
	  bei der Wiederherstellung, insbesondere für nicht
	  privilegierte Benutzer.</para>
      </listitem>

      <listitem>
	<para>Dateisystem-Snapshots sind nützlich bei der
	  Wiederherstellung von gelöschten Dateien, bzw. früheren
	  Versionen von Dateien.</para>
      </listitem>

      <listitem>
	<para>Kopien ganzer Dateisysteme oder Festplatten, die mit
	  einem anderen System im Netzwerk mittels
	  <package>net/rsync</package> synchronisiert werden.</para>
      </listitem>

      <listitem>
	<para>Hardware oder Software <acronym>RAID</acronym>, was im
	  Falle von Plattendefekten die Ausfallzeit minimiert oder
	  vermeidet.</para>
      </listitem>
    </itemizedlist>

    <para>Üblicherweise wird eine Mischung aus verschiedenen
      Strategien verwendet.  Es kann zum Beispiel ein Sicherungsplan
      erstellt und automatisiert werden,  um eine wöchentliche,
      vollständige Systemsicherung, ergänzt mit stündlichen
      ZFS-Snapshots, zu erstellen.  Darüber hinaus könnte man
      eine manuelle Sicherung einzelner Verzeichnisse oder Dateien
      machen, bevor diese bearbeitet oder gelöscht werden.</para>

    <para>Dieser Abschnitt beschreibt einige Programme, die zur
      Erstellung und Verwaltung von Sicherungen unter &os; verwendet
      werden können.</para>

    <sect2>
      <title>Sicherung von Dateisystemen</title>

      <indexterm>
	<primary>Backup-Software</primary>
	<secondary>dump / restore</secondary>
      </indexterm>
      <indexterm>
	<primary><command>dump</command></primary>
      </indexterm>
      <indexterm>
	<primary><command>restore</command></primary>
      </indexterm>

      <para>Die traditionellen &unix;-Programme zum Sichern und
	Wiederherstellen von Dateisystemen sind &man.dump.8; und
	&man.restore.8;.  Diese Programme arbeiten auf der Block-Ebene
	der Festplatte, also unterhalb des Abstraktionslevels von
	Dateien, Links und Verzeichnissen, die die Grundlage des
	Dateisystemkonzepts bilden.  Im Gegensatz zu anderen
	Backup-Programmen sichert <command>dump</command> ein ganzes
	Dateisystem und nicht nur einen Teil des Dateisystems, oder
	einen Verzeichnisbaum, der mehr als ein Dateisystem umfasst.
	Anstatt Dateien oder Verzeichnisse zu schreiben, schreibt
	<command>dump</command> die Blöcke, aus denen die Dateien und
	Verzeichnisse bestehen.</para>

      <note>
	<para>Wird <command>dump</command> benutzt, um das
	  Root-Verzeichnis zu sichern, werden
	  <filename>/home</filename>, <filename>/usr</filename> und
	  viele andere Verzeichnisse nicht gesichert, da dies
	  normalerweise Mountpunkte für andere Dateisysteme oder
	  symbolische Links zu diesen Dateisystemen sind.</para>
      </note>

      <para>Wenn <command>restore</command> zum Extrahieren von Daten
	verwendet wird, werden temporäre Dateien standardmäßig in
	<filename>/tmp</filename> abgelegt.  Wenn Sie von einer Platte
	mit einem kleinen <filename>/tmp</filename>-Verzeichnis
	zurücksichern, setzen Sie die Umgebungsvariable
	<envar>TMPDIR</envar> auf ein Verzeichnis mit mehr freiem
	Speicherplatz, damit die Wiederherstellung gelingt.</para>

      <para>Beachten Sie bei der Verwendung von
	<command>dump</command>, dass es einige Eigenarten aus den
	frühen Tagen der Version 6 von AT&amp;T &unix; (ca. 1975)
	beibehalten hat.  Die Standardparameter gehen davon aus, dass
	auf einem 9-Spur-Band gesichert wird, und nicht auf ein
	anderes Medium oder auf Sicherungsbänder mit hoher Dichte.
	Diese Standardwerte müssen auf der Kommandozeile überschrieben
	werden.</para>

      <indexterm>
	<primary><filename>.rhosts</filename></primary>
      </indexterm>

      <para>Es ist möglich, das Dateisystem über das Netzwerk auf
	einem anderen Rechner zu sichern, oder auf einem Bandlaufwerk
	eines anderen Rechners.  Obwohl die Programme &man.rdump.8;
	und &man.rrestore.8; für diese Zwecke benutzt werden können,
	gelten sie als nicht sicher.</para>

      <para>Verwenden Sie stattdessen <command>dump</command> und
	<command>restore</command> in einer sichereren Weise über eine
	<acronym>SSH</acronym>-Verbindung.  In diesem Beispiel wird
	eine vollständige, komprimierte Sicherung von
	<filename>/usr</filename> erstellt, das
	anschließend an einen bestimmten Host über eine
	<acronym>SSH</acronym>-Verbindung gesendet wird.</para>

      <example>
	<title><command>dump</command> mit
	  <application>ssh</application> benutzen</title>

	<screen>&prompt.root; <userinput>/sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
	  targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz</userinput></screen>
      </example>

      <para>In diesem Beispiel wird <envar>RSH</envar> gesetzt, um
	über eine <acronym>SSH</acronym>-Verbindung eine Sicherung auf
	ein Bandlaufwerk eines entfernten Systems zu schreiben:</para>

      <example>
	<title><command>dump</command> über
	  <application>ssh</application> mit gesetzter
	  <envar>RSH</envar> benutzen</title>

	<screen>&prompt.root; <userinput>env RSH=/usr/bin/ssh /sbin/dump -0uan -f tatargetuser@targetmachine.example.com:/dev/sa0 /usr</userinput></screen>
      </example>
    </sect2>

    <sect2>
      <title>Sicherung von Verzeichnissen</title>

      <indexterm>
	<primary>Backup-Software</primary>
	<secondary><command>tar</command></secondary>
      </indexterm>

      <para>Einige integrierte Werkzeuge stehen zur Sicherung
	und Wiederherstellung von bestimmten Dateien und
	Verzeichnissen bei Bedarf zur Verfügung.</para>

      <para>Wenn es um die Sicherung von Dateien in einem Verzeichnis
	geht, ist &man.tar.1; eine gute Wahl.  Dieses Werkzeug stammt
	aus Version 6 von AT&amp;T &unix; und erwartet standardmäßig
	eine rekursive Sicherung auf ein lokales Band.  Es können
	jedoch Optionen angegeben werden, um den Namen einer
	Sicherungsdatei zu bestimmen.</para>

      <indexterm><primary><command>tar</command></primary></indexterm>

      <para>In diesem Beispiel wird eine komprimierte Sicherung des
	aktuellen Verzeichnisses nach
	<filename>/tmp/mybackup.tgz</filename> gespeichert.  Achten
	Sie bei der Sicherungsdatei darauf, dass sie nicht in dem
	Verzeichnis gespeichert wird, welches gesichert werden
	soll.</para>

      <example>
	<title>Das aktuelle Verzeichnis mit <command>tar</command>
	  sichern</title>

	<screen>&prompt.root; <userinput>tar czvf <replaceable>/tmp/mybackup.tgz</replaceable> .</userinput></screen>
      </example>

      <para>Um eine komplette Sicherung wiederherzustellen, wechseln
	Sie mit <command>cd</command> in das Verzeichnis, in dem Sie
	die Daten wiederherstellen möchten und geben Sie den Namen der
	Sicherungsdatei an.  Beachten Sie, dass dabei alle Dateien in
	dem Verzeichnis überschrieben werden.  Im Zweifel sichern Sie
	besser in einem temporären Verzeichnis, oder geben Sie den
	Verzeichnisnamen bei der Wiederherstellung an.</para>

      <example>
	<title>Wiederherstellung mit <command>tar</command> in das
	  aktuelle Verzeichnis</title>

	<screen>&prompt.root; <userinput>tar xzvf <replaceable>/tmp/mybackup.tgz</replaceable></userinput></screen>
      </example>

      <para>Es gibt dutzende Optionen, die in &man.tar.1; beschrieben
	werden.  Das Programm unterstützt auch die Verwendung von
	Ausschlußmustern, um bestimmte Dateien von der Sicherung oder
	Wiederherstellung von Verzeichnissen auszuschließen.</para>

      <indexterm>
	<primary>Backup-Software</primary>
	<secondary><command>cpio</command></secondary>
      </indexterm>

      <para>Um bestimmte, aufgelistete Dateien und Verzeichnisse zu
	sichern, ist &man.cpio.1; eine gute Wahl.  Im Gegensatz zu
	<command>tar</command> weiß <command>cpio</command> nicht
	wie ein Verzeichnisbaum durchlaufen wird.  Daher ist es auf
	eine Liste von zu sichernden Dateien angewiesen.</para>

      <para>So kann beispielsweise eine Liste von Dateien mit
	<command>ls</command> oder <command>find</command> erzeugt
	werden.  Dieses Beispiel erstellt eine rekursive Liste des
	aktuellen Verzeichnisses, die dann über eine Pipe an
	<command>cpio</command> übergeben wird, um eine Sicherung
	namens <filename>/tmp/mybackup.cpio</filename> zu
	erstellen.</para>

      <example>
	<title>Rekursive Sicherung des aktuellen Verzeichnisses mit
	  <command>ls</command> und <command>cpio</command></title>

	<screen>&prompt.root; <userinput>ls -R | cpio -ovF /tmp/mybackup.cpio</userinput></screen>
      </example>

      <indexterm>
	<primary>Backup-Software</primary>
	<secondary><command>pax</command></secondary>
      </indexterm>
      <indexterm><primary><command>pax</command></primary></indexterm>
      <indexterm><primary>POSIX</primary></indexterm>
      <indexterm><primary>IEEE</primary></indexterm>

      <para>&man.pax.1; ist ein Programm, welches versucht die
	Funktionen von <command>tar</command> und
	<command>cpio</command> zu kombinieren.  Über die Jahre
	hinweg sind die verschiedenen Versionen von
	<command>tar</command> und <command>cpio</command> leicht
	inkompatibel geworden.  Daher hat &posix;
	<command>pax</command> geschaffen, welches versucht viele
	der unterschiedlichen <command>cpio</command>- und
	<command>tar</command>-Formate zu lesen und zu schreiben,
	außerdem einige neue, eigene Formate.</para>

      <para>Für die vorangegangenen Beispiele wäre ein äquivalenter
	Aufruf von <command>pax</command>:</para>

      <example>
	<title>Das aktuelle Verzeichnis mit <command>pax</command>
	  sichern</title>

	<screen>&prompt.root; <userinput>pax -wf <replaceable>/tmp/mybackup.pax</replaceable> .</userinput></screen>
      </example>
    </sect2>

    <sect2 xml:id="backups-tapebackups">
      <title>Bandmedien benutzen</title>

      <indexterm><primary>Bandmedien</primary></indexterm>

      <para>Obwohl sich Bandmedien mit der Zeit weiterentwickelt
	haben, verwenden moderne Backup-Systeme in der Regel
	<foreignphrase>Offsite-Backups</foreignphrase> in Verbindung
	mit lokalen Wechseldatenträgern.  &os; unterstützt alle
	<acronym>SCSI</acronym>-Bandlaufwerke, wie etwa
	<acronym>LTO</acronym> und <acronym>DAT</acronym>.  Zusätzlich
	gibt es begrenzte Unterstützung für <acronym>SATA</acronym>-
	und <acronym>USB</acronym>-Bandlaufwerke.</para>

      <para>Für <acronym>SCSI</acronym>-Bandlaufwerke nutzt &os; den
	&man.sa.4; Treiber, der die Schnittstellen
	<filename>/dev/sa0</filename>, <filename>/dev/nsa0</filename>
	und <filename>/dev/esa0</filename> bereitstellt.  Der Name des
	physikalischen Geräts ist <filename>/dev/sa0</filename>.
	Wird <filename>/dev/nsa0</filename> benutzt, dann wird die
	Backup-Anwendung nach dem Schreibvorgang das Band nicht
	zurückspulen, was es ermöglicht, mehr als eine Datei auf das
	Band zu schreiben.  Die Verwendung von
	<filename>/dev/esa0</filename> wirft das Band aus, nachdem das
	Gerät geschlossen wurde.</para>

      <para>&os; nutzt <command>mt</command> für die Steuerung der
	Operationen des Bandlaufwerks, wie die Suche nach Dateien auf
	einem Band, oder um Kontrollmarkierungen auf ein Band zu
	schreiben.  Beispielsweise können die ersten drei Dateien auf
	einem Band erhalten bleiben, indem sie übersprungen werden,
	bevor eine neue Datei auf das Band geschrieben wird</para>

      <screen>&prompt.root; <userinput>mt -f /dev/nsa0 fsf 3</userinput></screen>

      <para>Dieses Werkzeug unterstützt viele Operationen.  Weitere
	Einzelheiten finden Sie in &man.mt.1;.</para>

      <para>Um eine Datei mit <command>tar</command> auf ein Band zu
	schreiben, geben Sie den Namen des Bandlaufwerks und den
	Dateinamen an:</para>

      <screen>&prompt.root; <userinput>tar cvf /dev/sa0 <replaceable>file</replaceable></userinput></screen>

      <para>Wiederherstellung von Dateien aus dem
	<command>tar</command>-Archiv von Band in das aktuelle
	Verzeichnis:</para>

      <screen>&prompt.root; <userinput>tar xvf /dev/sa0</userinput></screen>

      <para>Benutzen Sie <command>dump</command>, um ein
	<acronym>UFS</acronym>-Dateisystem zu sichern.  Dieses
	Beispiel sichert <filename>/usr</filename>, ohne danach das
	Band zurückzuspulen:</para>

      <screen>&prompt.root; <userinput>dump -0aL -b64 -f /dev/nsa0 /usr</userinput></screen>

      <para>Interaktive Wiederherstellung von Dateien aus einer
	&man.dump.8;-Datei von Band in das aktuelle
	Verzeichnis:</para>

      <screen>&prompt.root; <userinput>restore -i -f /dev/nsa0</userinput></screen>
    </sect2>

    <sect2 xml:id="backups-programs-amanda">
      <title>Backup-Software von Drittanbietern</title>

      <indexterm>
	<primary>Backup-Software</primary>
      </indexterm>

      <para>Die &os; Ports-Sammlung enthält viele Programme von
	Drittanbietern, die verwendet werden können um die zeitliche
	Erstellung von Sicherungen zu planen, zu vereinfachen und
	bequemer zu machen.  Viele dieser Programme basieren auf dem
	Client-Server-Modell und können benutzt werden, um die
	Sicherung von einzelnen Systemen oder allen Rechnern in einem
	Netzwerk zu automatisieren.</para>

      <para>Zu den bekannten Programmen gehören
	<application>Amanda</application>,
	<application>Bacula</application>,
	<application>rsync</application> und
	<application>duplicity</application>.</para>
    </sect2>

    <sect2>
      <title>Die Wiederherstellung in einem Notfall</title>

      <para>Zusätzlich zu den regelmäßigen Sicherungen empfiehlt es
	sich, die folgenden Schritte im Rahmen eines Notfallplans
	durchzuführen.</para>

      <indexterm>
	<primary><command>bsdlabel</command></primary>
      </indexterm>

      <para>Erstellen Sie einen Ausdruck der Ausgabe der folgenden
	Kommandos:</para>

      <itemizedlist>
	<listitem>
	  <para><command>gpart show</command></para>
	</listitem>

	<listitem>
	  <para><command>more /etc/fstab</command></para>
	</listitem>

	<listitem>
	  <para><command>dmesg</command></para>
	</listitem>
      </itemizedlist>

      <indexterm><primary>Live-CD</primary></indexterm>

      <para>Bewahren Sie diesen Ausdruck und eine Kopie des
	Installationsmediums an einem sicheren Ort auf.  Im Falle
	einer Wiederherstellung im Notfall, starten Sie von dem
	Installationsmedium und wählen Sie <literal>Live CD</literal>,
	um eine Rettungs-Shell zu starten.  Dieser Rettungsmodus kann
	verwendet werden, um den aktuellen Stand des Systems
	anzuzeigen, und wenn nötig, Festplatten zu formatieren und
	Daten aus den Sicherungen wiederherzustellen.</para>

      <note>
	<para>Das Installationsmedium für
	  &os;/&arch.i386;&nbsp;&rel2.current;-RELEASE enthält
	  keine Rettungs-Shell.  Laden Sie für diese Version ein
	  Abbild der Livefs <acronym>CD</acronym> von <uri
	    xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/&arch.i386;/ISO-IMAGES/&rel2.current;/&os;-&rel2.current;-RELEASE-&arch.i386;-livefs.iso">ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/&arch.i386;/ISO-IMAGES/&rel2.current;/&os;-&rel2.current;-RELEASE-&arch.i386;-livefs.iso</uri>.</para>
      </note>

      <para>Als nächstes testen Sie die Rettungs-Shell und die
	Sicherungen.  Dokumentieren Sie diesen Ablauf.  Bewahren Sie
	diese Notizen zusammen mit den Medien, den Ausdrucken und den
	Sicherungen auf.  Diese Notizen können Ihnen im Notfall helfen
	eine versehentliche Zerstörung der Sicherungen zu verhindern,
	während Sie unter Stress eine Wiederherstellung
	durchführen.</para>

      <para>Als zusätzliche Sicherheitsvorkehrung kann jeweils die
	letzte Sicherung an einem entfernten Standort aufbewahrt
	werden.  Dieser Standort sollte räumlich von den Computern und
	Festplatten durch eine erhebliche Entfernung getrennt
	sein.</para>
    </sect2>
  </sect1>

  <sect1 xml:id="disks-virtual">
    <info>
      <title>Speicherbasierte Laufwerke</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Marc</firstname>
	    <surname>Fonvieille</surname>
	  </personname>
	  <contrib>Verbessert und neu strukturiert von </contrib>
	</author>
      </authorgroup>
    </info>

    <para>Neben physikalischen Laufwerken unterstützt &os;
      auch speicherbasierte Laufwerke.  Eine mögliche Verwendung für
      ein speicherbasiertes Laufwerk ist der Zugriff auf ein
      <acronym>ISO</acronym>-Dateisystem, jedoch ohne vorher
      die Daten auf eine <acronym>CD</acronym> oder
      <acronym>DVD</acronym> zu brennen und dann das Medium
      einzuhängen.</para>

    <para>&os; verwendet den &man.md.4; Treiber um Unterstützung für
      speicherbasierte Laufwerke bereitzustellen.  Dieser Treiber ist
      bereits im <filename>GENERIC</filename>-Kernel enthalten.  Wenn
      Sie eine angepasste Kernelkonfigurationsdatei verwenden, stellen
      Sie sicher, dass folgende Zeile enthalten ist:</para>

    <programlisting>device md</programlisting>

    <sect2 xml:id="disks-mdconfig">
      <title>Ein- und Aushängen von bestehenden Abbildern</title>

      <indexterm>
	<primary>Laufwerke</primary>
	<secondary>speicherbasierte</secondary>
      </indexterm>

      <para>Um ein bestehendes Abbild eines Dateisystems einzuhängen,
	verwenden Sie <command>mdconfig</command> zusammen mit dem
	Namen der <acronym>ISO</acronym>-Datei und einer freien
	Gerätenummer.  Benutzen Sie dann diese Gerätenummer, um das
	Abbild in einen existierenden Mountpunkt einzuhängen.  Sobald
	dies erledigt ist, erscheinen die Dateien des Abbildes
	unterhalb des Mountpunktes.  Dieses Beispiel wird
	<filename>diskimage.iso</filename> an das speicherbasierte
	Laufwerk <filename>/dev/md0</filename> binden und dann in
	<filename>/mnt</filename> einhängen:</para>

      <screen>&prompt.root; <userinput>mdconfig -f <replaceable>diskimage.iso</replaceable> -u <replaceable>0</replaceable></userinput>
&prompt.root; <userinput>mount /dev/md<replaceable>0</replaceable> <replaceable>/mnt</replaceable></userinput></screen>

      <para>Wenn keine Gerätenummer mit <option>-u</option> angegeben
	ist, wird von &man.md.4; automatisch eine
	ungenutzte Gerätenummer zugewiesen.  Das zugewiesene Gerät
	wird auf der Standardausgabe ausgegeben (zum Beispiel
	<filename>md4</filename>).  Weitere Informationen zu diesem
	Kommando und dessen Optionen finden Sie in
	&man.mdconfig.8;.</para>

      <indexterm>
	<primary>Laufwerke</primary>
	<secondary>speicherbasiertes Laufwerk aushängen</secondary>
      </indexterm>

      <para>Wenn ein speicherbasiertes Laufwerk nicht mehr in Gebrauch
	ist, sollten seine belegten Ressourcen wieder an das System
	zurückgegeben werden.  Hängen Sie zuerst das Dateisystem aus,
	dann verwenden Sie <command>mdconfig</command>, um die Platte
	vom System zu trennen und die Ressourcen freizugeben.</para>

      <screen>&prompt.root; <userinput>umount /mnt</userinput>
&prompt.root; <userinput>mdconfig -d -u <replaceable>0</replaceable></userinput></screen>

      <para>Um festzustellen, ob noch irgendwelche speicherbasierten
	Laufwerke am System angeschlossen sind, benutzen Sie
	<command>mdconfig -l</command>.</para>
    </sect2>

    <sect2 xml:id="disks-md-freebsd5">
      <title>Ein datei- oder speicherbasiertes Laufwerk
	erzeugen</title>

      <indexterm>
	<primary>Laufwerke</primary>
	<secondary>speicherbasierte</secondary>
      </indexterm>

      <para>&os; unterstützt auch speicherbasierte Laufwerke, bei
	denen der verwendete Speicher entweder einer Festplatte, oder
	einem Bereich im Arbeitsspeicher zugewiesen wird.  Die erste
	Methode ist gemeinhin als dateibasiertes Dateisystem, die
	zweite als speicherbasiertes Dateisystem bekannt.  Beide Typen
	können mit <command>mdconfig</command> erzeugt werden.</para>

      <para>Um ein speicherbasiertes Dateisystem zu erstellen, geben
	Sie den Typ <literal>swap</literal> sowie die gewünschte Größe
	des Laufwerks an.  Dieses Beispiel erzeugt ein 5&nbsp;MB
	großes Laufwerk an der Gerätenummer <literal>1</literal>.  Das
	Laufwerk wird mit dem <acronym>UFS</acronym>-Dateisystem
	formatiert, bevor es eingehängt wird:</para>

      <screen>&prompt.root; <userinput>mdconfig -a -t swap -s <replaceable>5</replaceable>m -u <replaceable>1</replaceable></userinput>
&prompt.root; <userinput>newfs -U md1</userinput>
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
        with soft updates
super-block backups (for fsck -b #) at:
 160, 2752, 5344, 7936
&prompt.root; <userinput>mount /dev/md<replaceable>1</replaceable> <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md1        4718    4  4338     0%    /mnt</screen>

      <para>Um ein dateibasiertes Dateisystem zu erstellen,
	muss zunächst ein Stück Speicher auf der Festplatte reserviert
	werden.  Dieses Beispiel erzeugt eine 5&nbsp;KB große Datei
	namens <filename>newimage</filename>:</para>

      <screen>&prompt.root; <userinput>dd if=/dev/zero of=<replaceable>newimage</replaceable> bs=1k count=<replaceable>5</replaceable>k</userinput>
5120+0 records in
5120+0 records out</screen>

      <para>Als nächstes muss diese Datei an ein speicherbasiertes
	Laufwerk gebunden, gelabelt und mit dem
	<acronym>UFS</acronym>-Dateisystem formatiert werden.  Danach
	können Sie das Laufwerk einhängen und die Größe
	überprüfen:</para>

      <screen>&prompt.root; <userinput>mdconfig -f <replaceable>newimage</replaceable> -u <replaceable>0</replaceable></userinput>
&prompt.root; <userinput>bsdlabel -w md<replaceable>0</replaceable> auto</userinput>
&prompt.root; <userinput>newfs md<replaceable>0</replaceable>a</userinput>
/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
super-block backups (for fsck -b #) at:
 160, 2720, 5280, 7840
&prompt.root; <userinput>mount /dev/md<replaceable>0</replaceable>a <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0a       4710    4  4330     0%    /mnt</screen>

      <para>Es benötigt mehrere Befehle, um ein datei- oder
	speicherbasiertes Dateisystem mit <command>mdconfig</command>
	zu erstellen.  &os; enthält auch <command>mdmfs</command>, das
	ein speicherbasiertes Laufwerk automatisch konfigurieren,
	formatieren und einhängen kann.  Nachdem beispielsweise
	<filename>newimage</filename> mit <command>dd</command>
	erstellt wurde, hätte auch der folgende Befehl benutzt werden
	können, anstelle der oben verwendeten Kommandos
	<command>bsdlabel</command>, <command>newfs</command> und
	<command>mount</command>:</para>

      <screen>&prompt.root; <userinput>mdmfs -F <replaceable>newimage</replaceable> -s <replaceable>5</replaceable>m md<replaceable>0</replaceable> <replaceable>/mnt</replaceable></userinput></screen>

      <para>Um hingegen ein speicherbasiertes Laufwerk mit
	<command>mdmfs</command> zu erstellen, wird dieser Befehl
	benutzt:</para>

      <screen>&prompt.root; <userinput>mdmfs -s <replaceable>5</replaceable>m md<replaceable>1</replaceable> <replaceable>/mnt</replaceable></userinput></screen>

      <para>Wenn die Gerätenummer nicht angegeben wird, wählt
	<command>mdmfs</command> automatisch ein ungenutztes
	Gerät aus.  Weitere Einzelheiten über <command>mdmfs</command>
	finden Sie in &man.mdmfs.8;.</para>
    </sect2>
  </sect1>

  <sect1 xml:id="snapshots">
    <info>
      <title>Schnappschüsse von Dateisystemen</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Tom</firstname>
	    <surname>Rhodes</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>Schnappschüsse</primary>
      <secondary>von Dateisystemen</secondary>
    </indexterm>

    <para>Zusammen mit
      <link linkend="soft-updates">Soft Updates</link> bietet &os;
      eine weitere Funktion: Schnappschüsse von Dateisystemen.</para>

    <para>UFS-Schnappschüsse sind Dateien, die ein Abbild eines
      Dateisystems enthalten und müssen auf dem jeweiligen Dateisystem
      erstellt werden.  Pro Dateisystem darf es maximal
      20&nbsp;Schnappschüsse, die im Superblock vermerkt werden,
      geben.  Schnappschüsse bleiben erhalten, wenn das Dateisystem
      abgehangen, neu eingehangen oder das System neu gestartet wird.
      Wenn ein Schnappschuss nicht mehr benötigt wird, kann er
      mit &man.rm.1; gelöscht werden.  Es ist egal, in welcher
      Reihenfolge Schnappschüsse gelöscht werden.  Es kann allerdings
      vorkommen, dass nicht der gesamte Speicherplatz wieder
      freigegeben wird, da ein anderer Schnappschuss einen Teil der
      entfernten Blöcke für sich beanspruchen kann.</para>

    <para>Das unveränderliche <option>Snapshot</option>-Dateiflag
      wird nach der Erstellung des Snapshots von &man.mksnap.ffs.8;
      gesetzt.  Durch die Verwendung von &man.unlink.1; ist es
      allerdings möglich, einen Schnappschuss zu löschen.</para>

    <para>Schnappschüsse werden mit &man.mount.8; erstellt.  Das
      folgende Kommando legt einen Schnappschuss von
      <filename>/var</filename> in
      <filename>/var/snapshot/snap</filename> ab:</para>

    <screen>&prompt.root; <userinput>mount -u -o snapshot /var/snapshot/snap /var</userinput></screen>

    <para>Alternativ kann der Schnappschuss auch mit
      &man.mksnap.ffs.8; erstellt werden.</para>

    <screen>&prompt.root; <userinput>mksnap_ffs /var /var/snapshot/snap</userinput></screen>

    <para>Um Schnappschüsse auf einem Dateisystem, beispielsweise
      <filename>/var</filename> zu finden, kann man &man.find.1;
      verwenden:</para>

    <screen>&prompt.root; <userinput>find /var -flags snapshot</userinput></screen>

    <para>Nachdem ein Schnappschuss erstellt wurde, können Sie
      ihn für verschiedene Zwecke benutzen:</para>

    <itemizedlist>
      <listitem>
	<para>Sie können den Schnappschuss für die
	  Datensicherung benutzen und ihn auf eine
	  <acronym>CD</acronym> oder ein Band schreiben.</para>
      </listitem>

      <listitem>
	<para>Die Integrität des Schnappschusses kann mit &man.fsck.8;
	  geprüft werden.  Wenn das Dateisystem zum Zeitpunkt der
	  Erstellung des Schnappschusses in Ordnung war, sollte
	  &man.fsck.8; immer erfolgreich durchlaufen.</para>
      </listitem>

      <listitem>
	<para>Sie können den Schnappschuss mit &man.dump.8;
	  sichern.  Sie erhalten dann eine konsistente Sicherung des
	  Dateisystems zu dem Zeitpunkt, der durch den Zeitstempel des
	  Schnappschusses gegeben ist.  Der Schalter
	  <option>-L</option> von &man.dump.8; erstellt für die
	  Sicherung einen Schnappschuss und entfernt diesen am Ende
	  der Sicherung wieder.</para>
      </listitem>

      <listitem>
	<para>Sie können einen Schnappschuss in den
	  Verzeichnisbaum einhängen und sich dann den Zustand des
	  Dateisystems zu dem Zeitpunkt ansehen, an dem der
	  Schnappschuss erstellt wurde.  Der folgende Befehl
	  hängt den Schnappschuss
	  <filename>/var/snapshot/snap</filename> ein:</para>

	<screen>&prompt.root; <userinput>mdconfig -a -t vnode -o readonly -f /var/snapshot/snap -u 4</userinput>
&prompt.root; <userinput>mount -r /dev/md4 /mnt</userinput></screen>

      </listitem>
    </itemizedlist>

    <para>Der eingefrorene Stand des
      <filename>/var</filename>-Dateisystems ist nun unterhalb von
      <filename>/mnt</filename> verfügbar.  Mit Ausnahme der früheren
      Schnappschüsse, die als leere Dateien auftauchen, wird zu
      Beginn alles so aussehen, wie zum Zeitpunkt der Erstellung des
      Schnappschusses.  Der Schnappschuss kann wie folgt abgehängt
      werden:</para>

    <screen>&prompt.root; <userinput>umount /mnt</userinput>
&prompt.root; <userinput>mdconfig -d -u 4</userinput></screen>

    <para>Weitere Informationen über Soft Updates und
      Schnappschüsse von Dateisystemen sowie technische Artikel finden
      Sie auf der <link xlink:href="http://www.mckusick.com/">
	Webseite von Marshall Kirk McKusick</link>.</para>
  </sect1>

  <sect1 xml:id="quotas">
    <title>Disk Quotas</title>

    <indexterm>
      <primary>Accounting</primary>
      <secondary>Plattenplatz</secondary>
    </indexterm>
    <indexterm><primary>Disk Quotas</primary></indexterm>

    <para>Disk Quotas erlauben dem Administrator, den Plattenplatz
      und/oder die Anzahl der Dateien eines Benutzers oder der
      Mitglieder einer Gruppe, auf Dateisystemebene zu beschränken.
      Dadurch wird verhindert, dass ein Benutzer oder eine Gruppe von
      Benutzern den ganzen verfügbaren Plattenplatz belegt.</para>

    <para>Dieser Abschnitt beschreibt die Konfiguration von Disk
      Quotas für <acronym>UFS</acronym>-Dateisysteme.  Lesen Sie
      <xref linkend="zfs-zfs-quota"/>, wenn Sie Disk Quotas auf einem
      <acronym>ZFS</acronym>-Dateisystem einrichten möchten.</para>

    <sect2>
      <title>Disk Quotas aktivieren</title>

      <para>Prüfen Sie zunächst, ob der &os;-Kernel Disk Quotas
	unterstützt:</para>

      <screen>&prompt.user; <userinput>sysctl kern.features.ufs_quota</userinput>
kern.features.ufs_quota: 1</screen>

      <para>In diesem Beispiel zeigt die <literal>1</literal> an, das
	Quotas unterstützt werden.  Falls <literal>0</literal>
	ausgegeben wird, fügen Sie folgende Zeile in die
	Kernelkonfigurationsdatei ein, und folgen Sie den Anweisungen
	in <xref linkend="kernelconfig"/> um den Kernel zu
	aktualisieren:</para>

      <programlisting>options QUOTA</programlisting>

      <para>Als nächstes aktivieren Sie Disk Quotas in
	<filename>/etc/rc.conf</filename>:</para>

      <programlisting>quota_enable="YES"</programlisting>

      <indexterm>
	<primary>Disk Quotas</primary>
	<secondary>überprüfen</secondary>
      </indexterm>

      <para>Normalerweise wird beim Booten die Integrität der Quotas
	auf allen Dateisystemen mit &man.quotacheck.8;
	überprüft.  Dieses Programm stellt sicher, dass die
	Quota-Datenbank mit den Daten auf einem Dateisystem
	übereinstimmt.  Dies ist allerdings ein zeitraubender Prozess,
	der die Zeit, die das System zum Booten braucht, signifikant
	beeinflusst.  Eine Variable in
	<filename>/etc/rc.config</filename> erlaubt es, diesen Schritt
	zu überspringen:</para>

      <programlisting>check_quotas="NO"</programlisting>

      <para>Zuletzt muss noch <filename>/etc/fstab</filename>
	bearbeitet werden, um die Plattenquotas auf Dateisystemebene
	zu aktivieren.  Um Quotas pro Benutzer für ein Dateisystem zu
	aktivieren, geben Sie für dieses Dateisystem
	<option>userquota</option> im Feld Optionen von
	<filename>/etc/fstab</filename> an.  Zum Beispiel:</para>

      <programlisting>/dev/da1s2g   /home    ufs rw,userquota 1 2</programlisting>

      <para>Um Quotas für Gruppen einzurichten, verwenden
	Sie <option>groupquota</option>.  Um Quotas für Benutzer
	und Gruppen einzurichten, trennen Sie die Optionen durch
	Kommata:</para>

      <programlisting>/dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2</programlisting>

      <para>Quota-Dateien werden standardmäßig im Rootverzeichnis
	des Dateisystems unter <filename>quota.user</filename> und
	<filename>quota.group</filename> abgelegt.  Weitere
	Informationen finden Sie in &man.fstab.5;.  Es wird nicht
	empfohlen, Quota-Dateien an anderen Stellen zu
	speichern.</para>

      <para>Sobald die Konfiguration abgeschlossen ist, starten Sie
	das System neu.
	<filename>/etc/rc</filename> wird dann automatisch die
	richtigen Kommandos aufrufen, um die Quota-Dateien für
	alle in <filename>/etc/rc.conf</filename> definierten Quotas
	anzulegen.</para>

      <para>Normalerweise brauchen die Kommandos
	&man.quotacheck.8;, &man.quotaon.8; oder
	&man.quotaoff.8; nicht von Hand aufgerufen werden,
	obwohl man die entsprechenden Seiten im
	Manual lesen sollte, um sich mit ihnen vertraut
	zu machen.</para>
    </sect2>

    <sect2>
      <title>Setzen von Quota-Limits</title>

      <indexterm>
	<primary>Disk Quotas</primary>
	<secondary>Limits</secondary>
      </indexterm>

      <para>Stellen Sie sicher, dass Quotas auch tatsächlich
	aktiviert sind:</para>

      <screen>&prompt.root; <userinput>quota -v</userinput></screen>

      <para>Für jedes Dateisystem, auf dem Quotas aktiviert sind,
	sollte eine Zeile mit der Plattenauslastung und den
	aktuellen Quota-Limits zu sehen sein.</para>

      <para>Mit <command>edquota</command> können nun
	Quota-Limits zugewiesen werden.</para>

      <para>Mehrere Möglichkeiten stehen zur Verfügung, um Limits für
	den Plattenplatz, den ein Benutzer oder eine Gruppe
	verbrauchen kann, oder die Anzahl der Dateien, die angelegt
	werden dürfen, festzulegen.  Die Limits können auf dem
	Plattenplatz (Block-Quotas), der Anzahl der Dateien
	(Inode-Quotas) oder einer Kombination von beiden basieren.
	Jedes Limit wird weiterhin in zwei Kategorien geteilt:
	Hardlimits und Softlimits.</para>

      <indexterm><primary>Hardlimit</primary></indexterm>
      <para>Ein Hardlimit kann nicht überschritten werden.
	Hat der Benutzer einmal ein Hardlimit erreicht, so kann er
	auf dem betreffenden Dateisystem keinen weiteren Platz mehr
	beanspruchen.  Hat ein Benutzer beispielsweise ein Hardlimit
	von 500 Kilobytes auf einem Dateisystem und benutzt davon
	490 Kilobyte, so kann er nur noch 10 weitere Kilobytes
	beanspruchen.  Der Versuch, weitere 11 Kilobytes zu
	beanspruchen, wird fehlschlagen.</para>

      <indexterm><primary>Softlimit</primary></indexterm>

      <para>Softlimits können für eine befristete Zeit überschritten
	werden.  Diese Frist beträgt in der Grundeinstellung eine
	Woche.  Hat der Benutzer das Softlimit über die Frist hinaus
	überschritten, so wird das Softlimit in ein Hardlimit
	umgewandelt und der Benutzer kann keinen weiteren Platz mehr
	beanspruchen.  Wenn er einmal das Softlimit unterschreitet,
	wird die Frist wieder zurückgesetzt.</para>

      <para>Im folgenden Beispiel wird das Quota des Benutzerkonto
	<systemitem class="username">test</systemitem> bearbeitet.
	Wenn <command>edquota</command> aufgerufen wird,
	wird der in <envar>EDITOR</envar> definierte Editor
	aufgerufen, um die Quota-Limts zu konfigurieren.  Der
	Standard-Editor ist <application>vi</application>.</para>

      <screen>&prompt.root; <userinput>edquota -u test</userinput>

Quotas for user test:

/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)</screen>

      <para>Für jedes Dateisystem, auf dem Quotas aktiv sind,
	sind zwei Zeilen zu sehen.  Eine repräsentiert die
	Block-Quotas und die andere die Inode-Quotas.  Um ein Limit zu
	modifizieren, ändern Sie einfach den angezeigten Wert.  Um
	beispielsweise das Blocklimit von <filename>/usr</filename>
	auf ein Softlimit von <literal>500</literal> und ein Hardlimit
	von <literal>600</literal> zu erhöhen, ändern Sie die Zeile
	wie folgt:</para>

      <programlisting>/usr: kbytes in use: 65, limits (soft = 500, hard = 600)</programlisting>

      <para>Die neuen Limits sind wirksam, sobald der Editor verlassen
	wird.</para>

      <para>Manchmal ist es wünschenswert, die Limits für eine Reihe
	von Benutzern zu setzen.  Dazu weisen Sie zunächst einem
	Benutzer das gewünschte Quota-Limit zu.  Anschließend benutzen
	Sie <option>-p</option>, um das Quota auf einen bestimmten
	Bereich von Benutzer-IDs (<acronym>UID</acronym>) zu
	duplizieren.  Der folgende Befehl dupliziert die Quota-Limits
	auf die <acronym>UID</acronym>s <literal>10000</literal> bis
	<literal>19999</literal>:</para>

      <screen>&prompt.root; <userinput>edquota -p test 10000-19999</userinput></screen>

      <para>Weitere Informationen finden Sie in
	&man.edquota.8;.</para>
    </sect2>

    <sect2>
      <title>Überprüfen von Quota-Limits und Plattennutzung</title>

      <indexterm>
	<primary>Disk Quotas</primary>
	<secondary>überprüfen</secondary>
      </indexterm>

      <para>Um die Limits oder die Plattennutzung individueller
	Benutzer und Gruppen zu überprüfen, kann &man.quota.1; benutzt
	werden.  Ein Benutzer kann nur die eigenen Quotas und die
	Quotas der Gruppe, der er angehört untersuchen.  Nur der
	Superuser darf sich alle Limits ansehen.  Mit &man.repquota.8;
	erhalten Sie eine Zusammenfassung von allen Limits und der
	Plattenausnutzung für alle Dateisysteme, auf denen Quotas
	aktiv sind.</para>

      <para>In der Ausgabe von &man.quota.1; werden Dateisysteme, auf
	denen ein Benutzer keinen Platz verbraucht, nicht angezeigt,
	auch wenn diesem Quotas zugewiesen wurden.  Benutzen Sie
	<option>-v</option> um solche Dateisysteme ebenfalls
	anzuzeigen.  Das folgende Beispiel zeigt die Ausgabe von
	<command>quota -v</command> für einen Benutzer, der
	Quota-Limits auf zwei Dateisystemen besitzt:</para>

      <programlisting>Disk quotas for user test (uid 1002):
     Filesystem  usage   quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60</programlisting>

      <indexterm><primary>grace period</primary></indexterm>

      <para>Im Dateisystem <filename>/usr</filename> liegt der
	Benutzer momentan 15 Kilobytes über dem Softlimit von 50
	Kilobytes und hat noch 5 Tage seiner Frist übrig.  Der Stern
	<literal>*</literal> zeigt an, dass der Benutzer sein Limit
	überschritten hat.</para>
    </sect2>

    <sect2>
      <title>Quotas über NFS</title>

      <indexterm><primary>NFS</primary></indexterm>

      <para>Quotas werden von dem Quota-Subsystem auf dem
	<acronym>NFS</acronym>-Server erzwungen.  Der
	&man.rpc.rquotad.8; Daemon stellt <command>quota</command> die
	Quota Informationen auf dem <acronym>NFS</acronym>-Client
	zur Verfügung, so dass Benutzer auf diesen Systemen ihre
	Quotas abfragen können.</para>

      <para>Sie aktivieren <command>rpc.rquotad</command> auf dem
	<acronym>NFS</acronym>-Server, indem Sie das Zeichen
	<literal>#</literal> auf folgender Zeile in
	<filename>/etc/inetd.conf</filename> entfernen:</para>

      <programlisting>rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad</programlisting>

      <para>Anschließend starten Sie <command>inetd</command>
	neu:</para>

      <screen>&prompt.root; <userinput>service inetd restart</userinput></screen>
    </sect2>
  </sect1>

  <sect1 xml:id="disks-encrypting">
    <info>
      <title>Partitionen verschlüsseln</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Lucky</firstname>
	    <surname>Green</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	  <affiliation>
	    <address>
	      <email>shamrock@cypherpunks.to</email>
	    </address>
	  </affiliation>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>Partitionen</primary>
      <secondary>verschlüsseln</secondary>
    </indexterm>

    <para>&os; bietet ausgezeichnete Möglichkeiten, Daten vor
      unberechtigten Zugriffen zu schützen.  Wenn das Betriebssystem
      läuft, schützen Zugriffsrechte und vorgeschriebene
      Zugriffskontrollen (MAC) (siehe <xref linkend="mac"/>) die
      Daten.  Die Zugriffskontrollen des Betriebssystems schützen
      allerdings nicht vor einem Angreifer, der Zugriff auf den
      Rechner hat.  Der Angreifer kann eine Festplatte in ein anderes
      System einbauen und dort die Daten analysieren.</para>

    <para>Die für &os; verfügbaren kryptografischen Subsysteme,
      <acronym>GEOM</acronym> Based Disk Encryption
      (<command>gbde</command>) und <command>geli</command> sind in
      der Lage, Daten auf Dateisystemen auch vor hoch motivierten
      Angreifern zu schützen,  die über erhebliche Mittel verfügen.
      Dieser Schutz ist unabhängig von der Art und Weise, durch die
      ein Angreifer Zugang zu einer Festplatte oder zu einem Rechner
      erlangt hat.  Im Gegensatz zu anderen Verschlüsselungsmethoden,
      bei denen einzelne Dateien verschlüsselt werden, verschlüsseln
      <application>gbde</application> und <command>geli</command>
      transparent ganze Dateisysteme.  Auf der Festplatte werden dabei
      keine Daten im Klartext gespeichert.</para>

    <para>Dieses Kapitel zeigt, wie ein verschlüsseltes Dateisystem
      unter &os; erstellt wird.  Zunächst wird der Ablauf für
      <application>gbde</application> beschrieben und anschließend
      das gleiche Beispiel für <application>geli</application>.</para>

    <sect2>
      <title>Plattenverschlüsselung mit
	<application>gbde</application></title>

      <para>Das Ziel von &man.gbde.4; ist es, einen Angreifer vor eine
	große Herausforderung zu stellen, um an die Daten einer
	Festplatte zu gelangen.  Falls jedoch der Rechner
	kompromittiert wurde, während er im Betrieb war und das
	Speichergerät aktiv verbunden war, oder wenn der Angreifer
	eine gültige Passphrase kennt, bietet dieses System keinen
	Schutz für die Daten der Festplatte.  Daher ist es wichtig,
	für die physische Sicherheit zu sorgen, während das System im
	Betrieb ist.  Außerdem muss die Passphrase für den
	Verschlüsselungsmechanismus geschützt werden.</para>

      <para>&man.gbde.4; besitzt einige Funktionen um die Daten,
	die in einem Sektor gespeichert sind, zu schützen.  Es benutzt
	128-Bit <acronym>AES</acronym> im
	<acronym>CBC</acronym>-Modus, um die Daten eines Sektors zu
	verschlüsseln.  Jeder Sektor einer Festplatte wird mit einem
	anderen <acronym>AES</acronym>-Schlüssel verschlüsselt.
	Weitere Informationen zum kryptographischen Design und wie die
	Schlüssel für einen Sektor aus der gegebenen Passphrase
	ermittelt werden, finden Sie in &man.gbde.4;.</para>

      <para>&os; enthält ein Kernelmodul für
	<application>gbde</application>, das wie folgt geladen werden
	kann:</para>

      <screen>&prompt.root; <userinput>kldload geom_bde</userinput></screen>

      <para>Wenn Sie einen angepassten Kernel verwenden, stellen Sie
	sicher, dass folgende Zeile in der Kernelkonfigurationsdatei
	enthalten ist:</para>

      <para><literal>options GEOM_BDE</literal></para>

      <para>Das folgende Beispiel beschreibt, wie eine Partition
	auf einer neuen Festplatte verschlüsselt wird.  Die
	Partition wird in <filename>/private</filename>
	eingehangen.</para>

      <procedure>
	<title>Eine Partition mit <application>gbde</application>
	  verschlüsseln</title>

	<step>
	  <title>Installieren der Festplatte</title>

	  <para>Installieren Sie die Festplatte wie in
	    <xref linkend="disks-adding"/> beschrieben.  Im Beispiel
	    wird die Partition <filename>/dev/ad4s1c</filename>
	    verwendet.  Die Gerätedateien
	    <filename>/dev/ad0s1<replaceable>*</replaceable></filename>
	    sind Standard-Partitionen des &os;-Systems.</para>

	  <screen>&prompt.root; <userinput>ls /dev/ad*</userinput>
/dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
/dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
/dev/ad0s1a     /dev/ad0s1d     /dev/ad4</screen>
	</step>

	<step>
	  <title>Verzeichnis für gbde-Lock-Dateien anlegen</title>

	  <screen>&prompt.root; <userinput>mkdir /etc/gbde</userinput></screen>

	  <para>Die Lock-Dateien sind für den Zugriff von
	    <application>gbde</application> auf verschlüsselte
	    Partitionen notwendig.  Ohne die Lock-Dateien können
	    die Daten nur mit erheblichem manuellen Aufwand wieder
	    entschlüsselt werden (dies wird auch von der Software
	    nicht unterstützt).  Jede verschlüsselte
	    Partition benötigt eine gesonderte Lock-Datei.</para>
	</step>

	<step>
	  <title>Vorbereiten der gbde-Partition</title>

	  <para>Eine von <application>gbde</application> benutzte
	    Partition muss einmalig initialisiert werden, bevor
	    sie benutzt werden kann.  Das Programm öffnet eine Vorlage
	    im Standard-Editor, um verschiedene Optionen zu
	    konfigurieren.  Setzen Sie <varname>sector_size</varname>
	    auf <literal>2048</literal>, wenn Sie
	    <acronym>UFS</acronym> benutzen:</para>

	  <screen>&prompt.root; <userinput>gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock</userinput>
<phrase its:translate="no">&dollar;FreeBSD: src/sbin/gbde/template.txt,v 1.1.36.1 2009/08/03 08:13:06 kensmith Exp $</phrase>
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working.  512 is the
# minimum and always safe.  For UFS, use the fragment size
#
sector_size     =       2048
[...]</screen>

	  <para>Sobald die Änderungen gespeichert werden, wird der
	    Benutzer zweimal aufgefordert, die zum Schutz der Daten
	    verwendete Passphrase einzugeben.  Die Passphrase muss
	    beide Mal gleich eingegeben werden.  Die Sicherheit der
	    Daten hängt allein von der Qualität der gewählten
	    Passphrase ab.  Die Auswahl einer sicheren und leicht zu
	    merkenden Passphrase wird auf der Webseite <link
	      xlink:href="http://world.std.com/~reinhold/diceware.html">
	      http://world.std.com/~reinhold/diceware.html</link>
	    beschrieben.</para>

	  <para>Bei der Initialisierung wird eine Lock-Datei für die
	    <application>gbde</application>-Partition erstellt.  In
	    diesem Beispiel
	    <filename>/etc/gbde/ad4s1c.lock</filename>.  Lock-Dateien
	    müssen die Dateiendung <quote>.lock</quote> aufweisen,
	    damit sie von <filename>/etc/rc.d/gbde</filename>, dem
	    Startskript von <application>gbde</application>, erkannt
	    werden.</para>

	  <caution>
	    <para>Lock-Dateien müssen immer zusammen mit den
	      verschlüsselten Dateisystemen gesichert werden.  Ohne
	      die Lock-Datei können Sie allerdings nicht auf die
	      verschlüsselten Daten zugreifen.</para>
	  </caution>
	</step>

	<step>
	  <title>Einbinden der verschlüsselten Partition
	    in den Kernel</title>

	  <screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock</userinput></screen>

	  <para>Dieses Kommando fragt die Passphrase ab, die bei der
	    Initialisierung der verschlüsselten Partition eingegeben
	    wurde.  Das neue verschlüsselte Gerät erscheint danach in
	    <filename>/dev</filename> als
	    <filename>/dev/device_name.bde</filename>:</para>

	  <screen>&prompt.root; <userinput>ls /dev/ad*</userinput>
/dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
/dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
/dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/ad4s1c.bde</screen>
	</step>

	<step>
	  <title>Dateisystem auf dem verschlüsselten Gerät
	    anlegen</title>

	  <para>Nachdem die verschlüsselte Partition im Kernel
	    eingebunden ist, kann ein Dateisystem erstellt werden.
	    Dieses Beispiel erstellt ein
	    <acronym>UFS</acronym>-Dateisystem mit aktivierten Soft
	    Updates.  Achten Sie darauf, die Partition mit der
	    Erweiterung
	    <filename><replaceable>*</replaceable>.bde</filename>
	    zu benutzen:</para>

	  <screen>&prompt.root; <userinput>newfs -U -O2 /dev/ad4s1c.bde</userinput></screen>
	</step>

	<step>
	  <title>Einhängen der verschlüsselten Partition</title>

	  <para>Legen Sie einen Mountpunkt für das
	    verschlüsselte Dateisystem an.  Hängen Sie anschließend
	    das Dateisystem ein:</para>

	  <screen>&prompt.root; <userinput>mkdir /private</userinput>
&prompt.root; <userinput>mount /dev/ad4s1c.bde /private</userinput></screen>
	</step>

	<step>
	  <title>Überprüfen des verschlüsselten
	    Dateisystems</title>

	  <para>Das verschlüsselte Dateisystem sollte jetzt erkannt
	    und benutzt werden können:</para>

	  <screen>&prompt.user; <userinput>df -H</userinput>
Filesystem        Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a      1037M    72M   883M     8%    /
/devfs            1.0K   1.0K     0B   100%    /dev
/dev/ad0s1f       8.1G    55K   7.5G     0%    /home
/dev/ad0s1e      1037M   1.1M   953M     0%    /tmp
/dev/ad0s1d       6.1G   1.9G   3.7G    35%    /usr
/dev/ad4s1c.bde   150G   4.1K   138G     0%    /private</screen>
	</step>
      </procedure>

      <para>Nach jedem Neustart müssen verschlüsselte
	Dateisysteme dem Kernel wieder bekannt gemacht werden,
	auf Fehler überprüft werden und eingehangen
	werden.  Für die dazu nötigen Schritte fügen Sie folgende
	Zeilen in <filename>/etc/rc.conf</filename> hinzu:</para>

      <programlisting>gbde_autoattach_all="YES"
gbde_devices="<replaceable>ad4s1c</replaceable>"
gbde_lockdir="/etc/gbde"</programlisting>

      <para>Durch diese Argumente muss beim Systemstart auf der
	Konsole die Passphrase eingegeben werden.  Erst nach Eingabe
	der korrekten Passphrase wird die verschlüsselte Partition
	automatisch in den Verzeichnisbaum eingehängt.  Weitere
	Bootoptionen von <application>gbde</application> finden Sie
	in &man.rc.conf.5;.</para>

<!--
What about bsdinstall?
-->

      <note>
	<para><application>sysinstall</application> ist nicht
	  kompatibel mit
	  <application>gbde</application>-verschlüsselten Geräten.
	  Bevor <application>sysinstall</application> gestartet
	  wird, müssen alle <filename>*.bde</filename> Geräte vom
	  Kernel getrennt werden, da sonst der Kernel bei der
	  ersten Suche nach Geräten abstürzt.  Um das verschlüsselte
	  Gerät aus dem Beispiel zu trennen, benutzen Sie das
	  folgende Kommando:</para>

	<screen>&prompt.root; <userinput>gbde detach /dev/<replaceable>ad4s1c</replaceable></userinput></screen>
      </note>
    </sect2>

    <sect2 xml:id="disks-encrypting-geli">
      <info>
	<title>Plattenverschlüsselung mit
	  <command>geli</command></title>

	<authorgroup>
	  <author>
	    <personname>
	      <firstname>Daniel</firstname>
	      <surname>Gerzo</surname>
	    </personname>
	    <contrib>Beigetragen von </contrib>
	  </author>
	</authorgroup>
      </info>

      <para>Mit <command>geli</command> steht eine alternative
	kryptografische <acronym>GEOM</acronym>-Klasse zur Verfügung.
	Dieses Werkzeug unterstützt unterschiedliche Fähigkeiten und
	verfolgt einen anderen Ansatz für die Verschlüsselung.
	<application>geli</application> bietet die folgenden
	Funktionen:</para>

      <itemizedlist>
	<listitem>
	  <para>Die Nutzung des &man.crypto.9;-Frameworks.  Wenn das
	    System über kryptografische Hardware verfügt, wird diese
	    von <command>geli</command> automatisch verwendet.</para>
	</listitem>

	<listitem>
	  <para>Die Unterstützung verschiedener kryptografischer
	    Algorithmen, wie <acronym>AES</acronym>, Blowfish, und
	    <acronym>3DES</acronym>.</para>
	</listitem>

	<listitem>
	  <para>Die Möglichkeit, die root-Partition zu
	    verschlüsseln.  Um auf die verschlüsselte
	    root-Partition zugreifen zu können, muss beim
	    Systemstart die Passphrase eingegeben werden.</para>
	</listitem>

	<listitem>
	  <para>Erlaubt den Einsatz von zwei voneinander unabhängigen
	    Schlüsseln.</para>
	</listitem>

	<listitem>
	  <para>Es ist durch einfache Sektor-zu-Sektor-Verschlüsselung
	    sehr schnell.</para>
	</listitem>

	<listitem>
	  <para>Die Möglichkeit, Master-Keys zu sichern und
	    wiederherzustellen.  Wenn ein Benutzer seinen Schlüssel
	    zerstört, kann er über seinen zuvor gesicherten
	    Schlüssel wieder auf seine Daten zugreifen.</para>
	</listitem>

	<listitem>
	  <para><command>geli</command> erlaubt es, Platten mit
	    einem zufälligen Einmal-Schlüssel einzusetzen,
	    was für Swap-Partitionen und
	    temporäre Dateisysteme interessant ist.</para>
	</listitem>
      </itemizedlist>

      <para>Weitere Funktionen und Anwendungsbeispiele finden Sie in
	&man.geli.8;.</para>

      <para>Das folgende Beispiel beschreibt, wie eine
	Schlüsseldatei erzeugt wird, die als Teil des Master-Keys für
	den Verschlüsselungs-Provider verwendet wird, der unter
	<filename>/private</filename> in den Verzeichnisbaum
	eingehängt wird.  Die Schlüsseldatei liefert zufällige Daten,
	die für die Verschlüsselung des Master-Keys benutzt werden.
	Zusätzlich wird der Master-Key durch eine Passphrase
	geschützt.  Die Sektorgröße des Providers beträgt 4&nbsp;KB.
	Das Beispiel beschreibt, wie Sie einen
	<command>geli</command>-Provider aktivieren, ein vom ihm
	verwaltetes Dateisystem erzeugen, es mounten, mit ihm arbeiten
	und wie Sie es schließlich wieder unmounten und den Provider
	deaktivieren.</para>

      <procedure>
	<title>Eine Partition mit <command>geli</command>
	  verschlüsseln</title>

	<step>
	  <title>Laden der
	    <command>geli</command>-Unterstützung</title>

	  <para>Die Unterstützung für <command>geli</command> wird
	    über ein ladbares Kernelmodul zur Verfügung gestellt.
	    Damit das Modul automatisch beim Booten geladen wird,
	    fügen Sie folgende Zeile in
	    <filename>/boot/loader.conf</filename> ein:</para>

	  <programlisting>geom_eli_load="YES"</programlisting>

	  <para>Um das Modul direkt zu laden:</para>

	  <screen>&prompt.root; <userinput>kldload geom_eli</userinput></screen>

	  <para>Stellen Sie bei einer angepassten
	    Kernelkonfigurationsdatei sicher, dass diese Zeilen
	    enthalten sind:</para>

	  <programlisting>options GEOM_ELI
device crypto</programlisting>
	</step>

	<step>
	  <title>Erzeugen des Master-Keys</title>

	  <para>Die folgenden Befehle erzeugen einen Master-Key
	    (<filename>/root/da2.key</filename>), der durch eine
	    Passphrase geschützt ist.  Die Datenquelle für die
	    Schlüsseldatei ist <filename>/dev/random</filename>.  Um
	    eine bessere Leistung zu erzielen beträgt die Sektorgröße
	    des Providers (<filename>/dev/da2.eli</filename>)
	    4&nbsp;KB:</para>

	  <screen>&prompt.root; <userinput>dd if=/dev/random of=/root/da2.key bs=64 count=1</userinput>
&prompt.root; <userinput>geli init -s 4096 -K /root/da2.key /dev/da2</userinput>
Enter new passphrase:
Reenter new passphrase:</screen>

	  <para>Es ist nicht zwingend nötig, sowohl eine Passphrase
	    als auch eine Schlüsseldatei zu verwenden.  Die
	    einzelnen Methoden können auch unabhängig
	    voneinander eingesetzt werden.</para>

	  <para>Wird für die Schlüsseldatei
	    <quote>-</quote> angegeben, wird dafür die
	    Standardeingabe verwendet.  Das folgende Kommando erzeugt
	    beispielsweise drei Schlüsseldateien:</para>

	  <screen>&prompt.root; <userinput>cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2</userinput></screen>
	</step>

	<step>
	  <title>Aktivieren des Providers mit dem erzeugten
	    Schlüssel</title>

	  <para>Um den Provider zu aktivieren, geben Sie die
	    Schlüsseldatei, den Namen des Laufwerks und die Passphrase
	    an:</para>

	  <screen>&prompt.root; <userinput>geli attach -k /root/da2.key /dev/da2</userinput>
Enter passphrase:</screen>

	  <para>Dadurch wird ein neues Gerät mit der Erweiterung
	    <filename>.eli</filename> angelegt:</para>

	  <screen>&prompt.root; <userinput>ls /dev/da2*</userinput>
/dev/da2  /dev/da2.eli</screen>
	</step>

	<step>
	  <title>Das neue Dateisystem erzeugen</title>

	  <para>Als nächstes muss das Gerät mit dem
	    <acronym>UFS</acronym>-Dateisystem formatiert und an einen
	    vorhandenen Mountpunkt eingehängt werden:</para>

	  <screen>&prompt.root; <userinput>dd if=/dev/random of=/dev/da2.eli bs=1m</userinput>
&prompt.root; <userinput>newfs /dev/da2.eli</userinput>
&prompt.root; <userinput>mount /dev/da2.eli <replaceable>/private</replaceable></userinput></screen>

	  <para>Das verschlüsselte Dateisystem sollte jetzt erkannt
	    und benutzt werden können:</para>

	  <screen>&prompt.root; <userinput>df -H</userinput>
Filesystem     Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a    248M    89M   139M    38%    /
/devfs         1.0K   1.0K     0B   100%    /dev
/dev/ad0s1f    7.7G   2.3G   4.9G    32%    /usr
/dev/ad0s1d    989M   1.5M   909M     0%    /tmp
/dev/ad0s1e    3.9G   1.3G   2.3G    35%    /var
/dev/da2.eli   150G   4.1K   138G     0%    /private</screen>
	</step>
      </procedure>

      <para>Wenn Sie nicht mehr mit dem verschlüsselten Dateisystem
	arbeiten und die unter <filename>/private</filename>
	eingehängte Partition daher nicht mehr benötigen,  sollten Sie
	diese unmounten und den
	<command>geli</command>-Verschlüsselungs-Provider wieder
	deaktivieren:</para>

      <screen>&prompt.root; <userinput>umount /private</userinput>
&prompt.root; <userinput>geli detach da2.eli</userinput></screen>

      <para>&os; verfügt über ein <filename>rc.d</filename>-Skript,
	das dass Einhängen von verschlüsselten Geräten beim Booten
	deutlich vereinfacht.  Für dieses Beispiel, fügen Sie
	folgende Zeilen in <filename>/etc/rc.conf</filename>
	hinzu:</para>

      <programlisting>geli_devices="<replaceable>da2</replaceable>"
geli_da2_flags="-p -k /root/<replaceable>da2.key</replaceable>"</programlisting>

      <para>Dies konfiguriert <filename>/dev/da2</filename> als
	<command>geli</command>-Provider mit dem Master-Key
	<filename>/root/da2.key</filename>.  Das System wird den
	Provider automatisch deaktivieren, bevor es heruntergefahren
	wird.  Während des Startvorgangs fordert das Skript die
	Passphrase an, bevor der Provider aktiviert wird.  Vor und
	nach der Eingabeaufforderung für die Passphrase werden noch
	weitere Kernelmeldungen angezeigt.  Achten Sie sorgfältig
	auf die Eingabeaufforderung zwischen den anderen Meldungen,
	falls es zu Problemen beim Startvorgang kommt.  Sobald die
	richtige Passphrase eingegeben wurde, wird der Provider
	aktiviert.  Anschließend werden die Dateisysteme gemäß
	<filename>/etc/fstab</filename> eingehängt.  Lesen Sie
	<xref linkend="mount-unmount"/> wenn Sie wissen möchten,
	wie Sie ein Dateisystem konfigurieren, sodass es beim
	booten automatisch gestartet wird.</para>
    </sect2>
  </sect1>

  <sect1 xml:id="swap-encrypting">
    <info>
      <title>Den Auslagerungsspeicher verschlüsseln</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Christian</firstname>
	    <surname>Brueffer</surname>
	  </personname>
	  <contrib>Geschrieben von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>Auslagerungsspeicher</primary>
      <secondary>verschlüsseln</secondary>
    </indexterm>

    <para>Wie die Verschlüsselung von Partitionen, wird auch der
      Auslagerungsspeicher verschlüsselt, um sensible Informationen
      zu schützen.  Stellen Sie sich eine Anwendung vor, die mit
      Passwörtern umgeht.  Solange sich diese Passwörter im
      Arbeitsspeicher befinden, werden sie nicht auf die Festplatte
      geschrieben und nach einem Neustart gelöscht.  Falls &os; jedoch
      damit beginnt Speicher auszulagern, um Platz für andere
      Anwendungen zu schaffen, können die Passwörter unverschlüsselt
      auf die Festplatte geschrieben werden.  Die Verschlüsselung des
      Auslagerungsspeichers kann in solchen Situationen Abhilfe
      schaffen.</para>

    <para>Dieser Abschnitt zeigt die Konfiguration eines
      verschlüsselten Auslagerungsspeichers mittels &man.gbde.8; oder
      &man.geli.8;.  In den Beispielen repräsentiert
      <filename>/dev/ada0s1b</filename> die Swap-Partition.</para>

    <sect2>
      <title>Konfiguration eines verschlüsselten
	Auslagerungsspeichers</title>

      <para>Swap-Partitionen werden standardmäßig nicht verschlüsselt.
	Sie sollten daher alle sensiblen Daten im Auslagerungsspeicher
	löschen, bevor Sie fortfahren.  Führen Sie folgenden Befehl
	aus, um die Swap-Partition mit Zufallsdaten zu
	überschreiben:</para>

      <screen>&prompt.root; <userinput>dd if=/dev/random of=/dev/<replaceable>ada0s1b</replaceable> bs=1m</userinput></screen>

      <para>Um den Auslagerungsspeicher mit &man.gbde.8; zu
	verschlüsseln, fügen Sie in <filename>/etc/fstab</filename>
	das Suffix <literal>.bde</literal> an den Gerätenamen der
	Swap-Partition hinzu:</para>

      <programlisting># Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ada0s1b.bde         none            swap    sw              0       0</programlisting>

      <para>Wenn Sie &man.geli.8; benutzen, verwenden Sie stattdessen
	das Suffix <literal>.eli</literal>, um den
	Auslagerungsspeicher zu verschlüsseln:</para>

      <programlisting># Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ada0s1b.eli         none            swap    sw              0       0</programlisting>

      <para>In der Voreinstellung verschlüsselt &man.geli.8; mit
	dem <acronym>AES</acronym>-Algorithmus und einer
	Schlüssellänge von 128 Bit.  Diese Voreinstellungen sind in
	der Regel ausreichend, können jedoch im Options-Feld in
	<filename>/etc/fstab</filename> angepasst werden.  Mögliche
	Optionen sind:</para>

      <variablelist>
	<varlistentry>
	  <term>aalgo</term>
	  <listitem>
	    <para>Der Algorithmus für die Prüfung der
	      Datenintegrität.  Dieser wird benutzt um
	      sicherzustellen, dass die verschlüsselten Daten nicht
	      manipuliert wurden.  Eine Liste der unterstützten
	      Algorithmen finden Sie in &man.geli.8;.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>ealgo</term>
	  <listitem>
	    <para>Der Verschlüsselungsalgorithmus, der verwendet wird
	      um die Daten zu schützen.  Eine Liste der unterstützten
	      Algorithmen finden Sie in &man.geli.8;.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>keylen</term>
	  <listitem>
	    <para>Die Länge des Schlüssels für den
	      Verschlüsselungsalgorithmus.  In &man.geli.8; können Sie
	      lesen, welche Schlüssellängen von welchem Algorithmus
	      unterstützt werden.</para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term>sectorsize</term>
	  <listitem>
	    <para>Die Größe, in der die Datenblöcke aufgeteilt werden,
	      bevor sie verschlüsselt werden.  Größere Blöcke erhöhen
	      die Leistung auf Kosten des Speicherverbrauchs.  Die
	      empfohlene Größe beträgt 4096 Byte.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <para>Dieses Beispiel konfiguriert eine verschlüsselte
	Swap-Partition mit dem Blowfish-Algorithmus, einer
	Schlüssellänge von 128 Bit und einer Sektorgröße von
	4&nbsp;KB:</para>

      <programlisting># Device		Mountpoint	FStype	Options				Dump	Pass#
/dev/ada0s1b.eli	none		swap	sw,ealgo=blowfish,keylen=128,sectorsize=4096	0	0</programlisting>
    </sect2>

    <sect2>
      <title>Überprüfung des verschlüsselten
	Auslagerungsspeichers</title>

      <para>Nachdem das System neu gestartet wurde, kann die korrekte
	Funktion des verschlüsselten Auslagerungsspeichers mit
	<command>swapinfo</command> geprüft werden.</para>

      <para>Wenn Sie &man.gbde.8; einsetzen, erhalten Sie eine
	Meldung ähnlich der folgenden:</para>

      <screen>&prompt.user; <userinput>swapinfo</userinput>
Device          1K-blocks     Used    Avail Capacity
/dev/ada0s1b.bde    542720        0   542720     0%</screen>

      <para>Wenn Sie &man.geli.8; einsetzen, erhalten Sie hingegen
	eine Ausgabe ähnlich der folgenden:</para>

      <screen>&prompt.user; <userinput>swapinfo</userinput>
Device          1K-blocks     Used    Avail Capacity
/dev/ada0s1b.eli    542720        0   542720     0%</screen>
    </sect2>
  </sect1>

  <sect1 xml:id="disks-hast">
    <info>
      <title>Highly Available Storage
	(<acronym>HAST</acronym>)</title>

      <authorgroup>
	<author>
	  <personname>
	    <firstname>Daniel</firstname>
	    <surname>Gerzo</surname>
	  </personname>
	  <contrib>Beigetragen von </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <personname>
	    <firstname>Freddie</firstname>
	    <surname>Cash</surname>
	  </personname>
	  <contrib>Mit Beiträgen von </contrib>
	</author>
	<author>
	  <personname>
	    <firstname>Pawel Jakub</firstname>
	    <surname>Dawidek</surname>
	  </personname>
	</author>
	<author>
	  <personname>
	    <firstname>Michael W.</firstname>
	    <surname>Lucas</surname>
	  </personname>
	</author>
	<author>
	  <personname>
	    <firstname>Viktor</firstname>
	    <surname>Petersson</surname>
	  </personname>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <personname>
	    <firstname>Benedict</firstname>
	    <surname>Reuschling</surname>
	  </personname>
	  <contrib>Übersetzt von </contrib>
	</author>
      </authorgroup>
    </info>

    <indexterm>
      <primary>HAST</primary>
      <secondary>high availability</secondary>
    </indexterm>

    <para>Hochverfügbarkeit ist eine der Hauptanforderungen von
      ernsthaften Geschäftsanwendungen und hochverfügbarer Speicher
      ist eine Schlüsselkomponente in solchen Umgebungen.  Highly
      Available STorage (<acronym>HAST</acronym>) ist ein Framework
      in &os;, welches die transparente Speicherung der gleichen
      Daten über mehrere physikalisch getrennte Maschinen ermöglicht,
      die über ein <acronym>TCP/IP</acronym>-Netzwerk verbunden sind.
      <acronym>HAST</acronym> kann als ein netzbasiertes RAID1
      (Spiegel) verstanden werden und ist dem DRBD&reg;-Speichersystem
      der GNU/&linux;-Plattform ähnlich.  In Kombination mit anderen
      Hochverfügbarkeitseigenschaften von &os; wie
      <acronym>CARP</acronym>, ermöglicht es <acronym>HAST</acronym>,
      hochverfügbare Speichercluster zu bauen, die in der Lage sind,
      Hardwareausfällen zu widerstehen.</para>

    <para>Die Hauptmerkmale von <acronym>HAST</acronym> sind:</para>

    <itemizedlist>
      <listitem>
	<para>Es kann zur Maskierung von
	  <acronym>I/O</acronym>-Fehlern auf lokalen Festplatten
	  eingesetzt werden.</para>
      </listitem>

      <listitem>
	<para>Dateisystem-unabhängig, was es erlaubt, jedes von &os;
	  unterstützte Dateisystem zu verwenden.</para>
      </listitem>

      <listitem>
	<para>Effiziente und schnelle Resynchronisation: es werden
	  nur die Blöcke synchronisiert, die während der Ausfallzeit
	  eines Knotens geändert wurden.</para>
      </listitem>

<!--
      <listitem>
	<para>Besitzt mehrere Synchronisationsmodi, um eine schnelle
	  Übergabe an einen anderen Knoten (sog. failover) zu
	  ermöglichen.</para>
      </listitem>
-->

      <listitem>
	<para>Es kann in einer bereits bestehenden Umgebung
	  eingesetzt werden, um zusätzliche Redundanz zu
	  erreichen.</para>
      </listitem>

      <listitem>
	<para>Zusammen mit <acronym>CARP</acronym>,
	  <application>Heartbeat</application>, oder anderen
	  Werkzeugen, ist es möglich, ein robustes und dauerhaftes
	  Speichersystem zu bauen.</para>
      </listitem>
    </itemizedlist>

    <para>Nachdem Sie diesen Abschnitt gelesen haben, werden Sie
      folgendes wissen:</para>

    <itemizedlist>
      <listitem>
	<para>Was <acronym>HAST</acronym> ist, wie es funktioniert und
	  welche Eigenschaften es besitzt.</para>
      </listitem>
      <listitem>
	<para>Wie man <acronym>HAST</acronym> unter &os; aufsetzt und
	  verwendet.</para>
      </listitem>
      <listitem>
	<para>Wie man <acronym>CARP</acronym> und &man.devd.8;
	  kombiniert, um ein robustes Speichersystem zu bauen.</para>
      </listitem>
    </itemizedlist>

    <para>Bevor Sie diesen Abschnitt lesen, sollten Sie:</para>

    <itemizedlist>
      <listitem>
	<para>die Grundlagen von &unix; und &os; verstanden haben
	  (<xref linkend="basics"/>).</para>
      </listitem>
      <listitem>
	<para>wissen, wie man Netzwerkschnittstellen und andere
	  Kernsysteme von &os; konfiguriert (<xref
	    linkend="config-tuning"/>).</para>
      </listitem>
      <listitem>
	<para>ein gutes Verständnis der &os;-Netzwerkfunktionalität
	  besitzen (<xref linkend="network-communication"/>).</para>
      </listitem>
    </itemizedlist>

    <para>Das <acronym>HAST</acronym>-Projekt wurde von der &os;
      Foundation mit Unterstützung der <link
	xlink:href="http://www.omc.net/">
	OMCnet Internet Service GmbH</link> und <link
	xlink:href="http://www.transip.nl/">TransIP BV</link>
      gesponsert.</para>

    <sect2>
      <title>HAST im Einsatz</title>

      <para><acronym>HAST</acronym> bietet eine synchrone Replikation
	auf Blockebene zwischen zwei Maschinen: einem
	<literal>primary</literal>, auch bekannt als
	<literal>master</literal> Knoten, sowie dem
	<literal>secondary</literal>, oder <literal>slave</literal>
	Knoten.  Diese beiden Maschinen zusammen werden als Cluster
	bezeichnet.</para>

      <para>Da <acronym>HAST</acronym> in einer
	primär-sekundär-Konfiguration funktioniert, ist immer nur ein
	Knoten des Clusters zu jeder Zeit aktiv.  Der primäre Knoten,
	auch <emphasis>active</emphasis> genannt, ist derjenige, der
	alle <acronym>I/O</acronym>-Anfragen verarbeitet, die an die
	<acronym>HAST</acronym>-Schnittstelle gesendet werden.  Der
	sekundäre Knoten wird automatisch vom primären Knoten aus
	synchronisiert.</para>

      <para>Die physischen Komponenten des
	<acronym>HAST</acronym>-Systems sind die lokale Platte am
	Primärknoten und die entfernte Platte am
	Sekundärknoten.</para>

      <para><acronym>HAST</acronym> arbeitet synchron auf Blockebene,
	was es für Dateisysteme und Anwendungen transparent macht.
	<acronym>HAST</acronym> stellt gewöhnliche
	<acronym>GEOM</acronym>-Provider in
	<filename>/dev/hast/</filename> für die Verwendung durch
	andere Werkzeuge oder Anwendungen zur Verfügung.  Es gibt
	keinen Unterschied zwischen dem Einsatz von
	<acronym>HAST</acronym> bereitgestellten Geräten und
	herkömmlichen Platten oder Partitionen.</para>

      <para>Jede Schreib-, Lösch- oder Entleerungsoperation wird an
	die lokale und über <acronym>TCP/IP</acronym> zu der entfernt
	liegenden Platte gesendet.  Jede Leseoperation wird von der
	lokalen Platte durchgeführt, es sei denn, die lokale Platte
	ist nicht aktuell oder es tritt ein
	<acronym>I/O</acronym>-Fehler auf.  In solchen Fällen wird die
	Leseoperation an den Sekundärknoten geschickt.</para>

      <para><acronym>HAST</acronym> versucht, eine schnelle
	Fehlerbereinigung zu gewährleisten.  Aus diesem Grund ist es
	wichtig, die Synchronisationszeit nach dem Ausfall eines
	Knotens zu reduzieren.  Um eine schnelle Synchronisation zu
	ermöglichen, verwaltet <acronym>HAST</acronym> eine Bitmap von
	unsauberen Bereichen auf der Platte und synchronisiert nur
	diese während einer regulären Synchronisation (mit Ausnahme
	der initialen Synchronisation).</para>

      <para>Es gibt viele Wege, diese Synchronisation zu behandeln.
	<acronym>HAST</acronym> implementiert mehrere
	Replikationsarten, um unterschiedliche Methoden der
	Synchronisation zu realisieren:</para>

      <itemizedlist>
	<listitem>
	  <para><emphasis>memsync</emphasis>: Dieser Modus meldet
	    Schreiboperationen als vollständig, wenn die lokale
	    Schreiboperation beendet ist und der entfernt liegende
	    Knoten die Ankunft der Daten bestätigt hat, jedoch bevor
	    die Daten wirklich gespeichert wurden.  Die Daten werden
	    auf dem entfernt liegenden Knoten direkt nach dem Senden
	    der Bestätigung gespeichert.  Dieser Modus ist dafür
	    gedacht, Latenzen zu verringern und zusätzlich eine gute
	    Verlässlichkeit zu bieten.  In der Voreinstellung wird
	    dieser Modus benutzt.</para>
	</listitem>

	<listitem>
	  <para><emphasis>fullsync</emphasis>: Dieser Modus meldet
	    Schreiboperationen als vollständig, wenn sowohl die
	    lokale, als auch die entfernte Schreiboperation
	    abgeschlossen wurde.  Dies ist der sicherste und
	    zugleich der langsamste Replikationsmodus.</para>
	</listitem>

	<listitem>
	  <para><emphasis>async</emphasis>: Dieser Modus meldet
	    Schreiboperationen als vollständig, wenn lokale
	    Schreibvorgänge abgeschlossen wurden.  Dies ist der
	    schnellste und gefährlichste Replikationsmodus.  Er
	    sollte nur verwendet werden, wenn die Latenz zu einem
	    entfernten Knoten bei einer Replikation zu hoch ist
	    für andere Modi.</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>HAST-Konfiguration</title>

      <para>Das <acronym>HAST</acronym>-Framework besteht aus mehreren
	Komponenten:</para>

      <itemizedlist>
	<listitem>
	  <para>Dem &man.hastd.8;-Daemon, welcher für
	    Datensynchronisation verantwortlich ist.  Wenn dieser
	    Daemon gestartet wird, wird automatisch
	    <varname>geom_gate.ko</varname> geladen.</para>
	</listitem>
	<listitem>
	  <para>Dem &man.hastctl.8; Management-Werkzeug.</para>
	</listitem>
	<listitem>
	  <para>Der Konfigurationsdatei &man.hast.conf.5;.  Diese
	    Datei muss vorhanden sein, bevor
	    <application>hastd</application> gestartet wird.</para>
	</listitem>
      </itemizedlist>

      <para>Alternativ lässt sich die
	<literal>GEOM_GATE</literal>-Unterstützung in den Kernel
	statisch einbauen, indem folgende Zeile zur
	Kernelkonfigurationsdatei hinzugefügt wird.  Anschließend muss
	der Kernel, wie in <xref linkend="kernelconfig"/> beschrieben,
	neu gebaut werden:</para>

      <programlisting>options	GEOM_GATE</programlisting>

      <para>Das folgende Beispiel beschreibt, wie man zwei Knoten als
	master-slave / primary-secondary mittels
	<acronym>HAST</acronym> konfiguriert, um Daten zwischen diesen
	beiden auszutauschen.  Die Knoten werden als
	<literal>hasta</literal> mit der <acronym>IP</acronym>-Adresse
	<literal>172.16.0.1</literal> und <literal>hastb</literal> mit
	der <acronym>IP</acronym>-Adresse
	<literal>172.16.0.2</literal> bezeichnet.  Beide Knoten
	besitzen eine dedizierte Festplatte
	<filename>/dev/ad6</filename> mit der gleichen Größe für den
	<acronym>HAST</acronym>-Betrieb.  Der
	<acronym>HAST</acronym>-Pool, manchmal auch Ressource genannt,
	oder der <acronym>GEOM</acronym>-Provider in
	<filename>/dev/hast/</filename> wird als
	<filename>test</filename> bezeichnet.</para>

      <para>Die Konfiguration von <acronym>HAST</acronym> wird in
	<filename>/etc/hast.conf</filename> vorgenommen.  Diese Datei
	sollte auf beiden Knoten gleich sein.  Die einfachste
	Konfiguration ist folgende:</para>

      <programlisting>resource <replaceable>test</replaceable> {
	on <replaceable>hasta</replaceable> {
		local <replaceable>/dev/ad6</replaceable>
		remote <replaceable>172.16.0.2</replaceable>
	}
	on <replaceable>hastb</replaceable> {
		local <replaceable>/dev/ad6</replaceable>
		remote <replaceable>172.16.0.1</replaceable>
	}
}</programlisting>

      <para>Fortgeschrittene Konfigurationsmöglichkeiten finden Sie in
	&man.hast.conf.5;.</para>

      <tip>
	<para>Es ist ebenfalls möglich, den Hostnamen in den
	  <literal>remote</literal>-Anweisungen zu verwenden, falls
	  die Rechner aufgelöst werden können und in
	  <filename>/etc/hosts</filename>, oder im lokalen
	  <acronym>DNS</acronym> definiert sind.</para>
      </tip>

      <para>Sobald die Konfiguration auf beiden Rechnern vorhanden
	ist, kann ein <acronym>HAST</acronym>-Pool erstellt werden.
	Lassen Sie diese Kommandos auf beiden Knoten ablaufen, um die
	initialen Metadaten auf die lokale Platte zu schreiben und
	starten Sie anschließend &man.hastd.8;:</para>

      <screen>&prompt.root; <userinput>hastctl create <replaceable>test</replaceable></userinput>
&prompt.root; <userinput>service hastd onestart</userinput></screen>

      <note>
	<para>Es ist <emphasis>nicht</emphasis> möglich,
	  <acronym>GEOM</acronym>-Provider
	  mit einem bereits bestehenden Dateisystem zu verwenden, um
	  beispielsweise einen bestehenden Speicher in einen von
	  <acronym>HAST</acronym> verwalteten Pool zu konvertieren.
	  Dieses Verfahren muss einige Metadaten auf den Provider
	  schreiben und dafür würde nicht genug freier Platz zur
	  Verfügung stehen.</para>
      </note>

      <para>Die Rolle eines HAST Knotens, <literal>primary</literal>
	oder <literal>secondary</literal>, wird vom einem
	Administrator, oder einer Software wie
	<application>Heartbeat</application>, mittels
	&man.hastctl.8; festgelegt.  Auf dem primären Knoten
	<literal>hasta</literal> geben Sie diesen Befehl ein:</para>

      <screen>&prompt.root; <userinput>hastctl role primary <replaceable>test</replaceable></userinput></screen>

      <para>Geben Sie folgendes Kommando auf dem sekundären Knoten
	<literal>hastb</literal> ein:</para>

      <screen>&prompt.root; <userinput>hastctl role secondary <replaceable>test</replaceable></userinput></screen>

      <para>Überprüfen Sie das Ergebnis mit <command>hastctl</command>
	auf beiden Knoten:</para>

      <screen>&prompt.root; <userinput>hastctl status <replaceable>test</replaceable></userinput></screen>

      <para>Überprüfen Sie die <literal>status</literal>-Zeile.  Wird
	hier <literal>degraded</literal> angezeigt, dann ist etwas mit
	der Konfigurationsdatei nicht in Ordnung.  Auf jedem Konten
	sollte <literal>complete</literal> angezeigt werden, was
	bedeutet, dass die Synchronisation zwischen den beiden Knoten
	gestartet wurde.  Die Synchronisierung ist abgeschlossen, wenn
	<command>hastctl status</command> meldet, dass die
	<literal>dirty</literal>-Bereiche 0 Bytes betragen.</para>

      <para>Der nächste Schritt ist, ein Dateisystem auf dem
	<acronym>GEOM</acronym>-Provider anzulegen und dieses ins
	System einzuhängen.  Dies muss auf dem
	<literal>primary</literal>-Knoten durchgeführt werden.
	Die Erstellung des Dateisystems kann ein paar Minuten dauern,
	abhängig von der Größe der Festplatte.  Dieses Beispiel
	erstellt ein <acronym>UFS</acronym>-Dateisystem auf
	<filename>/dev/hast/test</filename>:</para>

      <screen>&prompt.root; <userinput>newfs -U /dev/hast/<replaceable>test</replaceable></userinput>
&prompt.root; <userinput>mkdir /hast/<replaceable>test</replaceable></userinput>
&prompt.root; <userinput>mount /dev/hast/<replaceable>test</replaceable> <replaceable>/hast/test</replaceable></userinput></screen>

      <para>Sobald das <acronym>HAST</acronym>-Framework richtig
	konfiguriert wurde, besteht der letzte Schritt nun darin,
	sicherzustellen, dass <acronym>HAST</acronym> während des
	Systemstarts automatisch gestartet wird.  Fügen Sie diese
	Zeile in <filename>/etc/rc.conf</filename> hinzu:</para>

      <programlisting>hastd_enable="YES"</programlisting>

      <sect3>
	<title>Failover-Konfiguration</title>

	<para>Das Ziel dieses Beispiels ist, ein robustes
	  Speichersystem zu bauen, welches Fehlern auf einem
	  beliebigen Knoten widerstehen kann.  Wenn der
	  <literal>primary</literal>-Knoten ausfällt, ist der
	  <literal>secondary</literal>-Knoten da, um nahtlos
	  einzuspringen, das Dateisystem zu prüfen, einzuhängen und
	  mit der Arbeit fortzufahren, ohne dass auch nur ein
	  einzelnes Bit an Daten verloren geht.</para>

	<para>Um diese Aufgabe zu bewerkstelligen, wird das
	  <foreignphrase>Common Address Redundancy
	    Protocol</foreignphrase> (<acronym>CARP</acronym>)
	  benutzt,  welches ein automatisches Failover auf der
	  <acronym>IP</acronym>-Schicht ermöglicht.
	  <acronym>CARP</acronym> erlaubt es mehreren Rechnern im
	  gleichen Netzsegment, die gleiche
	  <acronym>IP</acronym>-Adresse zu verwenden.  Setzen Sie
	  <acronym>CARP</acronym> auf beiden Knoten des Clusters
	  anhand der Dokumentation in <xref linkend="carp"/> auf.
	  In diesem Beispiel hat jeder Knoten seine eigene
	  Management <acronym>IP</acronym>-Adresse und die geteilte
	  <acronym>IP</acronym>-Adresse
	  <replaceable>172.16.0.254</replaceable>.  Der primäre
	  <acronym>HAST</acronym>-Knoten des Clusters muss der
	  <acronym>CARP</acronym>-Masterknoten sein.</para>

	<para>Der <acronym>HAST</acronym>-Pool, welcher im vorherigen
	  Abschnitt erstellt wurde, ist nun bereit für den Export über
	  das Netzwerk auf den anderen Rechner.  Dies kann durch den
	  Export über <acronym>NFS</acronym> oder
	  <application>Samba</application> erreicht werden, indem die
	  geteilte <acronym>IP</acronym>-Adresse
	  <replaceable>172.16.0.254</replaceable> verwendet wird.  Das
	  einzige ungelöste Problem ist der automatische Failover,
	  sollte der primäre Knoten einmal ausfallen.</para>

	<para>Falls die <acronym>CARP</acronym>-Schnittstelle
	  aktiviert oder deaktiviert wird, generiert das
	  &os;-Betriebssystem ein &man.devd.8;-Ereignis, was es
	  ermöglicht, Zustandsänderungen auf den
	  <acronym>CARP</acronym>-Schnittstellen zu überwachen.  Eine
	  Zustandsänderung auf der
	  <acronym>CARP</acronym>-Schnittstelle ist ein Indiz dafür,
	  dass einer der Knoten gerade ausgefallen oder wieder
	  verfügbar ist.  Diese Zustandsänderungen machen es möglich,
	  ein Skript zu starten, welches automatisch den HAST-Failover
	  durchführt.</para>

	<para>Um  Zustandsänderungen auf der
	  <acronym>CARP</acronym>-Schnittstelle abzufangen, müssen
	  diese Zeilen in <filename>/etc/devd.conf</filename> auf
	  jedem Knoten hinzugefügt werden:</para>

	<programlisting>notify 30 {
	match "system" "IFNET";
	match "subsystem" "carp0";
	match "type" "LINK_UP";
	action "/usr/local/sbin/carp-hast-switch master";
};

notify 30 {
	match "system" "IFNET";
	match "subsystem" "carp0";
	match "type" "LINK_DOWN";
	action "/usr/local/sbin/carp-hast-switch slave";
};</programlisting>

	<note>
	  <para>Wenn auf dem System &os;&nbsp;10 oder höher eingesetzt
	    wird, ersetzen Sie <filename>carp0</filename> durch den
	    Namen der konfigurierten Schnittstelle für
	    <acronym>CARP</acronym>.</para>
	</note>

	<para>Starten Sie &man.devd.8; auf beiden Knoten neu, um
	  die neue Konfiguration wirksam werden zu lassen:</para>

	<screen>&prompt.root; <userinput>service devd restart</userinput></screen>

	<para>Wenn die Schnittstelle
	  aktiviert oder deaktiviert wird, erzeugt das System eine
	  Meldung, was es dem &man.devd.8;-Subsystem ermöglicht, ein
	  automatisches Failover-Skript zu starten,
	  <filename>/usr/local/sbin/carp-hast-switch</filename>.
	  Weitere Informationen zu dieser Konfiguration finden Sie in
	  &man.devd.conf.5;.</para>

	<para>Es folgt ein Beispiel für ein automatisches
	  Failover-Skript:</para>

	<programlisting>#!/bin/sh

# Original script by Freddie Cash &lt;fjwcash@gmail.com&gt;
# Modified by Michael W. Lucas &lt;mwlucas@BlackHelicopters.org&gt;
# and Viktor Petersson &lt;vpetersson@wireload.net&gt;

# The names of the HAST resources, as listed in /etc/hast.conf
resources="<replaceable>test</replaceable>"

# delay in mounting HAST resource after becoming master
# make your best guess
delay=3

# logging
log="local0.debug"
name="carp-hast"

# end of user configurable stuff

case "$1" in
	master)
		logger -p $log -t $name "Switching to primary provider for ${resources}."
		sleep ${delay}

		# Wait for any "hastd secondary" processes to stop
		for disk in ${resources}; do
			while $( pgrep -lf "hastd: ${disk} \(secondary\)" &gt; /dev/null 2&gt;&amp;1 ); do
				sleep 1
			done

			# Switch role for each disk
			hastctl role primary ${disk}
			if [ $? -ne 0 ]; then
				logger -p $log -t $name "Unable to change role to primary for resource ${disk}."
				exit 1
			fi
		done

		# Wait for the /dev/hast/* devices to appear
		for disk in ${resources}; do
			for I in $( jot 60 ); do
				[ -c "/dev/hast/${disk}" ] &amp;&amp; break
				sleep 0.5
			done

			if [ ! -c "/dev/hast/${disk}" ]; then
				logger -p $log -t $name "GEOM provider /dev/hast/${disk} did not appear."
				exit 1
			fi
		done

		logger -p $log -t $name "Role for HAST resources ${resources} switched to primary."


		logger -p $log -t $name "Mounting disks."
		for disk in ${resources}; do
			mkdir -p /hast/${disk}
			fsck -p -y -t ufs /dev/hast/${disk}
			mount /dev/hast/${disk} /hast/${disk}
		done

	;;

	slave)
		logger -p $log -t $name "Switching to secondary provider for ${resources}."

		# Switch roles for the HAST resources
		for disk in ${resources}; do
			if ! mount | grep -q "^/dev/hast/${disk} on "
			then
			else
				umount -f /hast/${disk}
			fi
			sleep $delay
			hastctl role secondary ${disk} 2&gt;&amp;1
			if [ $? -ne 0 ]; then
				logger -p $log -t $name "Unable to switch role to secondary for resource ${disk}."
				exit 1
			fi
			logger -p $log -t $name "Role switched to secondary for resource ${disk}."
		done
	;;
esac</programlisting>

	<para>Im Kern führt das Skript die folgenden Aktionen durch,
	  sobald ein Knoten zum Master wird:</para>

	<itemizedlist>
	  <listitem>
	    <para>Es ernennt den <acronym>HAST</acronym>-Pool als den
	      primären für einen gegebenen Knoten.</para>
	  </listitem>
	  <listitem>
	    <para>Es prüft das Dateisystem, dass auf dem
	      <acronym>HAST</acronym>-Pool erstellt wurde.</para>
	  </listitem>
	  <listitem>
	    <para>Es hängt den Pool ins System ein.</para>
	  </listitem>
	</itemizedlist>

	<para>Wenn ein Knoten zum Sekundären ernannt wird:</para>

	<itemizedlist>
	  <listitem>
	    <para>Hängt es den <acronym>HAST</acronym>-Pool aus dem
	      Dateisystem aus.</para>
	  </listitem>
	  <listitem>
	    <para>Degradiert es den <acronym>HAST</acronym>-Pool zum
	      sekundären.</para>
	  </listitem>
	</itemizedlist>

	<caution>
	  <para>Dieses Skript ist nur ein Beispiel für eine mögliche
	    Lösung.  Es behandelt
	    nicht alle möglichen Szenarien, die auftreten können und
	    sollte erweitert bzw. abgeändert werden, so dass z.B.
	    benötigte Dienste gestartet oder gestoppt werden.</para>
	</caution>

	<tip>
	  <para>Für dieses Beispiel wurde ein
	    <acronym>UFS</acronym>-Dateisystem verwendet.  Um die Zeit
	    für die Wiederherstellung zu verringern, kann ein
	    <acronym>UFS</acronym> mit Journal oder ein
	    <acronym>ZFS</acronym>-Dateisystem benutzt werden.</para>
	</tip>

	<para>Weitere detaillierte Informationen mit zusätzlichen
	  Beispielen können unter <link
	    xlink:href="http://wiki.FreeBSD.org/HAST">
	    http://wiki.FreeBSD.org/HAST</link> abgerufen
	  werden.</para>
      </sect3>
    </sect2>

    <sect2>
      <title>Fehlerbehebung</title>

      <para><acronym>HAST</acronym> sollte generell ohne Probleme
	funktionieren.  Jedoch kann es, wie bei jeder anderen
	Software auch, zu gewissen Zeiten sein, dass sie sich nicht
	so verhält wie angegeben.  Die Quelle dieser Probleme kann
	unterschiedlich sein, jedoch sollte als Faustregel
	gewährleistet werden, dass die Zeit für alle Knoten im
	Cluster synchron läuft.</para>

      <para>Für die Fehlersuche bei <acronym>HAST</acronym> sollte
	die Anzahl an Debugging-Meldungen von &man.hastd.8; erhöht
	werden.  Dies kann durch das Starten von
	<command>hastd</command> mit <literal>-d</literal> erreicht
	werden.  Diese Option kann mehrfach angegeben werden, um die
	Anzahl an Meldungen weiter zu erhöhen.  Sie sollten ebenfalls
	die Verwendung von <literal>-F</literal> in Erwägung ziehen,
	was <command>hastd</command> im Vordergrund startet.</para>

      <sect3 xml:id="disks-hast-sb">
	<title>Auflösung des Split-brain-Zustands</title>

	<para><literal>split-brain</literal> bezeichnet eine
	  Situation, in der beide Knoten des Clusters nicht in der
	  Lage sind, miteinander zu kommunizieren und dadurch beide
	  als primäre Knoten fungieren.  Dies ist ein
	  gefährlicher Zustand, weil es beiden Knoten erlaubt ist,
	  Änderungen an den Daten vorzunehmen, die miteinander nicht
	  in Einklang gebracht werden können.  Diese Situation muss
	  vom Systemadministrator manuell bereinigt werden.</para>

	<para>Der Administrator muss entscheiden, welcher Knoten die
	  wichtigeren Änderungen besitzt, oder die Zusammenführung
	  manuell durchführen.  Anschließend kann
	  <acronym>HAST</acronym> die volle Synchronisation mit
	  dem Knoten durchführen, der die beschädigten Daten enthält.
	  Um dies zu tun, geben Sie folgende Befehle auf dem Knoten
	  ein, der neu synchronisiert werden muss:</para>

	<screen>&prompt.root; <userinput>hastctl role init <replaceable>test</replaceable></userinput>
&prompt.root; <userinput>hastctl create <replaceable>test</replaceable></userinput>
&prompt.root; <userinput>hastctl role secondary <replaceable>test</replaceable></userinput></screen>
      </sect3>
    </sect2>
  </sect1>
</chapter>