657 lines
27 KiB
XML
657 lines
27 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/filesystems/chapter.sgml,v 1.7 2011/05/25 20:31:26 jkois Exp $
|
|
basiert auf: 1.10
|
|
-->
|
|
|
|
<chapter id="filesystems">
|
|
<chapterinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Benedict</firstname>
|
|
<surname>Reuschling</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
<author>
|
|
<firstname>Daniel</firstname>
|
|
<surname>Seuffert</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</chapterinfo>
|
|
|
|
<title>Dateisystemunterstützung</title>
|
|
|
|
<sect1 id="filesystems-synopsis">
|
|
<title>Übersicht</title>
|
|
|
|
<indexterm><primary>File Systems</primary></indexterm>
|
|
<indexterm>
|
|
<primary>File Systems Support</primary>
|
|
<see>File Systems</see>
|
|
</indexterm>
|
|
|
|
<para>Dateisysteme sind ein wesentlicher Bestandteil von Betriebssystemen.
|
|
Sie erlauben es den Benutzern Dateien zu laden und zu speichern,
|
|
ermöglichen den Zugriff auf die Daten und machen Festplatten
|
|
überhaupt erst nützlich. Unterschiedliche Betriebssysteme
|
|
besitzen normalerweise eine Gemeinsamkeit, nämlich deren
|
|
mitgeliefertes Dateisystem. Bei &os; ist dieses Dateisystem bekannt
|
|
unter dem Namen Fast File System <acronym>FFS</acronym>, das direkt auf
|
|
dem Original-Unix™ Dateisystem, <acronym>UFS</acronym> genannt,
|
|
basiert. Dieses ist das von &os; mitgelieferte Dateisystem, das auf
|
|
Festplatten für den Dateizugriff verwendet wird.</para>
|
|
|
|
<para>&os; unterstützt auch eine Vielzahl von anderen Dateisystemen,
|
|
um auf Daten von anderen Betriebssystemen lokal zuzugreifen, wie z.B.
|
|
Daten auf <acronym>USB</acronym>-Speichermedien, Flash-Speichern und
|
|
Festplatten. Es gibt auch Unterstützung für fremde
|
|
Dateisysteme. Dabei handelt es sich um Dateisysteme, die auf anderen
|
|
Betriebssystemen entwickelt wurden, wie beispielsweise das &linux;
|
|
Extended File System (<acronym>EXT</acronym>) und das Z-Dateisystem
|
|
(<acronym>ZFS</acronym>) von &sun;.</para>
|
|
|
|
<para>Es gibt verschiedene Stufen der Unterstützung in &os;
|
|
für diese unterschiedlichen Dateisysteme. Manche benötigen ein
|
|
geladenes Kernelmodul, andere die Installation bestimmter Werkzeuge.
|
|
Dieses Kapitel dient dazu, den Benutzern von &os; dazu helfen, auf andere
|
|
Dateisysteme zuzugreifen, beginnend mit &sun;s Z-Dateisystem (ZFS).</para>
|
|
|
|
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie die folgenden
|
|
Dinge wissen:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Den Unterschied zwischen eingebauten und unterstützten
|
|
Dateisystemen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Welche Dateisysteme von &os; unterstützt werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wie man fremde Dateisysteme aktiviert, konfiguriert, darauf
|
|
zugreift und diese verwendet.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Bevor Sie dieses Kapitel lesen, sollten Sie:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Grundlagen von &unix; und &os; verstehen
|
|
(<xref linkend="basics"/>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mit den Grundlagen der Konfiguration und dem Bauen des Kernels
|
|
vertraut sein (<xref linkend="kernelconfig"/>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Problemlos Software von Drittherstellern in &os; installieren
|
|
können (<xref linkend="ports"/>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>sich ein wenig mit Festplatten, Speicher und Gerätenamen
|
|
in &os; auskennen (<xref linkend="disks"/>).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="filesystems-zfs">
|
|
<title>Das Z-Dateisystem (ZFS)</title>
|
|
|
|
<para>Das Z-Dateisystem ist eine neue von &sun; entwickelte Technologie,
|
|
mit dem Konzept einer gepoolten Speichermethodik. Das bedeutet, dass
|
|
Speicher nur verwendet wird, wenn dieser als Datenspeicher benutzt wird.
|
|
ZFS wurde auch für maximale Datenintegrität entwickelt und
|
|
unterstützt dabei mehrfache Kopien, Schnappschüsse und
|
|
Prüfsummen für Daten. Ein neues Datenreplikationsmodell,
|
|
bekannt als <acronym>RAID</acronym>-Z, wurde ebenfalls hinzugefügt.
|
|
Das <acronym>RAID</acronym>-Z-Modell ist ähnlich zu
|
|
<acronym>RAID</acronym>5, wurde aber mit dem Ziel entworfen,
|
|
Datenverfälschung beim Schreiben zu verhindern.</para>
|
|
|
|
<sect2>
|
|
<title>ZFS Einstellungen</title>
|
|
|
|
<para>Das <acronym>ZFS</acronym>-Teilsystem benötigt viele
|
|
Systemressourcen, weshalb gewisse Einstellungen notwendig sind, um
|
|
maximale Effizienz während des täglichen Gebrauchs zu
|
|
gewährleisten. Da es sich um eine experimentelle Funktion in &os;
|
|
handelt, wird sich das in naher Zukunft ändern. Wie dem auch sei,
|
|
zum gegenwärtigen Zeitpunkt wird die Anwendung der folgenden
|
|
Schritte empfohlen.</para>
|
|
|
|
<sect3>
|
|
<title>Hauptspeicher</title>
|
|
|
|
<para>Der verfügbare Hauptspeicher im System sollte mindestens
|
|
1 Gigabyte betragen, jedoch werden 2 Gigabyte oder mehr
|
|
empfohlen. In allen gezeigten Beispielen in diesem Abschnitt
|
|
verwendet das System 1 Gigabyte Hauptspeicher mit mehreren
|
|
anderen Einstellungen.</para>
|
|
|
|
<para>Manche Nutzer hatten Erfolg bei der Verwendung von weniger
|
|
als 1 GB Hauptspeicher, aber mit dieser begrenzten Menge an RAM
|
|
ist es sehr wahrscheinlich, dass &os; eine Panic wegen
|
|
erschöpftem Hauptspeicher erleiden wird, wenn es hohen
|
|
Belastungen ausgesetzt ist.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Kernelkonfiguration</title>
|
|
|
|
<para>Es wird vorgeschlagen, nicht benötigte Treiber und Optionen
|
|
aus der Kernelkonfigurationsdatei zu entfernen. Da die meisten
|
|
Geräte als Module verfügbar sind, können diese einfach
|
|
mittels der Datei <filename>/boot/loader.conf</filename> geladen
|
|
werden.</para>
|
|
|
|
<para>Nutzer der &i386;-Architektur sollten die folgende Option in
|
|
ihrer Kernelkonfigurationsdatei hinzufügen, den Kernel neu
|
|
erstellen und anschliessend das System neustarten:</para>
|
|
|
|
<programlisting>options KVA_PAGES=512</programlisting>
|
|
|
|
<para>Diese Option wird den Adressraum des Kernels vergrössern,
|
|
was es ermöglicht, die Einstellung <varname>vm.kvm_size</varname>
|
|
über die momentan verhängte Grenze von 1 GB
|
|
(2 GB für <acronym>PAE</acronym>) zu erhöhen. Um den
|
|
passenden Wert dieser Option zu ermitteln, teilen Sie den
|
|
gewünschten Adressraum in Megabyte durch vier. In diesem Fall
|
|
beträgt er <literal>512</literal> für 2 GB.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Einstellungen des Loaders</title>
|
|
|
|
<para>Der <devicename>kmem</devicename>-Addressraum sollte auf allen
|
|
&os;-Architekturen erhöht werden. Die folgende Option, die dem
|
|
Testsystem mit einem Gigabyte Hauptspeicher der Datei
|
|
<filename>/boot/loader.conf</filename> hinzugefügt und welches
|
|
anschliessend neu gestartet wurde, war erfolgreich:</para>
|
|
|
|
<programlisting>vm.kmem_size="330M"
|
|
vm.kmem_size_max="330M"
|
|
vfs.zfs.arc_max="40M"
|
|
vfs.zfs.vdev.cache.size="5M"</programlisting>
|
|
|
|
<para>Eine detailliertere Liste von Vorschlägen zu ZFS-verwandten
|
|
Einstellungen finden Sie unter <ulink
|
|
url="http://wiki.freebsd.org/ZFSTuningGuide"></ulink>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Verwenden von <acronym>ZFS</acronym></title>
|
|
|
|
<para>Es existiert ein Startmechanismus, der es &os; erlaubt,
|
|
<acronym>ZFS</acronym> als Pool während des Systemstarts
|
|
zu initialisieren. Um das zu tun, geben Sie die folgenden Befehle
|
|
ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' >> /etc/rc.conf</userinput>
|
|
&prompt.root; <userinput>/etc/rc.d/zfs start</userinput></screen>
|
|
|
|
<para>Für den Rest dieses Dokuments wird angenommen, dass drei
|
|
<acronym>SCSI</acronym>-Platten im System verfügbar sind und
|
|
dass deren Gerätenamen
|
|
<devicename><replaceable>da0</replaceable></devicename>,
|
|
<devicename><replaceable>da1</replaceable></devicename> und
|
|
<devicename><replaceable>da2</replaceable></devicename> lauten.
|
|
Benutzer von <acronym>IDE</acronym>-Hardware können
|
|
<devicename><replaceable>ad</replaceable></devicename>-Geräte
|
|
an Stelle von <acronym>SCSI</acronym>-Hardware einsetzen.</para>
|
|
|
|
<sect3>
|
|
<title>Pool mit nur einer Platte</title>
|
|
|
|
<para>Um ein einfaches, nicht-redundantes <acronym>ZFS</acronym> auf
|
|
einer einzelnen Festplatte zu erstellen, benutzen Sie das
|
|
<command>zpool</command>-Kommando:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool create example /dev/da0</userinput></screen>
|
|
|
|
<para>Um den neuen Pool anzusehen, überprüfen Sie die
|
|
Ausgabe von <command>df</command>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>df</userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/ad0s1a 2026030 235230 1628718 13% /
|
|
devfs 1 1 0 100% /dev
|
|
/dev/ad0s1d 54098308 1032846 48737598 2% /usr
|
|
example 17547136 0 17547136 0% /example</screen>
|
|
|
|
<para>Diese Ausgabe zeigt deutlich, dass der
|
|
<literal>example</literal>-Pool nicht nur erstellt, sondern auch
|
|
<emphasis>gemountet</emphasis> wurde. Er ist genau wie andere
|
|
Dateisysteme verfügbar, Dateien können darin erstellt und
|
|
von den Benutzern aufgelistet werden, wie im folgenden Beispiel
|
|
gezeigt wird:</para>
|
|
|
|
<screen>&prompt.root <userinput>cd /example</userinput>
|
|
&prompt.root; <userinput>ls</userinput>
|
|
&prompt.root; <userinput>touch testfile</userinput>
|
|
&prompt.root; <userinput>ls -al</userinput>
|
|
total 4
|
|
drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .
|
|
drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
|
|
-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile</screen>
|
|
|
|
<para>Leider verwendet dieser Pool keine der Vorteile der
|
|
<acronym>ZFS</acronym>-Eigenschaften. Erstellen Sie ein Dateisystem
|
|
auf diesem Pool und aktivieren Sie die Komprimierung darauf:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs create example/compressed</userinput>
|
|
&prompt.root; <userinput>zfs set compression=gzip example/compressed</userinput></screen>
|
|
|
|
<para>Jetzt ist <literal>example/compressed</literal> ein von
|
|
<acronym>ZFS</acronym> komprimiertes Dateisystem. Versuchen Sie, ein
|
|
paar grosse Dateien in das Verzeichnis <filename
|
|
class="directory">/example/compressed</filename> zu kopieren.</para>
|
|
|
|
<para>Die Komprimierung kann jetzt deaktiviert werden mittels:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs set compression=off example/compressed</userinput></screen>
|
|
|
|
<para>Um das Dateisystem aus dem Verzeichnisbaum abzuhängen, geben
|
|
Sie den folgenden Befehl ein und vergewissern Sie sich über
|
|
<command>df</command> vom Erfolg dieser Aktion:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs umount example/compressed</userinput>
|
|
&prompt.root; <userinput>df</userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/ad0s1a 2026030 235232 1628716 13% /
|
|
devfs 1 1 0 100% /dev
|
|
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
|
|
example 17547008 0 17547008 0% /example</screen>
|
|
|
|
<para>Mounten Sie das Dateisystem erneut, um es wieder verfügbar
|
|
zu machen und bestätigen Sie mit <command>df</command>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs mount example/compressed</userinput>
|
|
&prompt.root; <userinput>df</userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/ad0s1a 2026030 235234 1628714 13% /
|
|
devfs 1 1 0 100% /dev
|
|
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
|
|
example 17547008 0 17547008 0% /example
|
|
example/compressed 17547008 0 17547008 0% /example/compressed</screen>
|
|
|
|
<para>Der Pool und das Dateisystem können genausogut über die
|
|
Ausgabe von <command>mount</command> überwacht werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount</userinput>
|
|
/dev/ad0s1a on / (ufs, local)
|
|
devfs on /dev (devfs, local)
|
|
/dev/ad0s1d on /usr (ufs, local, soft-updates)
|
|
example on /example (zfs, local)
|
|
example/data on /example/data (zfs, local)
|
|
example/compressed on /example/compressed (zfs, local)</screen>
|
|
|
|
<para>Wie zu beobachten ist, können
|
|
<acronym>ZFS</acronym>-Dateisysteme nach deren Erstellung genauso
|
|
wie normale Dateisysteme verwendet werden, jedoch sind auch noch viele
|
|
andere Eigenschaften verfügbar. Im folgenden Beispiel wird ein
|
|
neues Dateisystem, <literal>data</literal>, erstellt. Wichtige
|
|
Dateien sollen hier gespeichert werden, weshalb das Dateisystem
|
|
angewiesen wird, jeweils zwei Kopien jedes Datenblocks zu
|
|
unterhalten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs create example/data</userinput>
|
|
&prompt.root; <userinput>zfs set copies=2 example/data</userinput></screen>
|
|
|
|
<para>Es ist nun möglich, den Speicherplatzverbrauch der Daten
|
|
mittels <command>df</command> erneut zu betrachten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>df</userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/ad0s1a 2026030 235234 1628714 13% /
|
|
devfs 1 1 0 100% /dev
|
|
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
|
|
example 17547008 0 17547008 0% /example
|
|
example/compressed 17547008 0 17547008 0% /example/compressed
|
|
example/data 17547008 0 17547008 0% /example/data</screen>
|
|
|
|
<para>Beachten Sie, dass jedem Dateisystem des Pools die gleiche Menge
|
|
an Speicher zur Verfügung steht. Das ist der Grund für die
|
|
Verwendung von <command>df</command> in all diesen Beispielen, da es
|
|
zeigt, dass das Dateisystem nur den Speicher belegt, den es auch
|
|
benötigt und alles wird von dem gleichen Pool abgezogen.
|
|
<acronym>ZFS</acronym> macht Konzepte wie Volumen und Partitionen
|
|
überflüssig und erlaubt mehrere Dateisysteme auf demselben
|
|
Pool. Zerstören Sie die Datensysteme und anschliessend den Pool,
|
|
da sie nicht länger gebraucht werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs destroy example/compressed</userinput>
|
|
&prompt.root; <userinput>zfs destroy example/data</userinput>
|
|
&prompt.root; <userinput>zpool destroy example</userinput></screen>
|
|
|
|
<para>Festplatten werden mit der Zeit schlechter und fallen aus, eine
|
|
unvermeidliche Tatsache. Wenn diese Platte ausfällt, sind die
|
|
Daten verloren. Eine Möglichkeit, diesen Datenverlust beim
|
|
Plattenausfall zu vermeiden, ist die Verwendung von
|
|
<acronym>RAID</acronym>. <acronym>ZFS</acronym> unterstützt
|
|
diese Eigenschaft im Entwurf seiner Pools und wird im nächsten
|
|
Abschnitt behandelt.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><acronym>ZFS</acronym> RAID-Z</title>
|
|
|
|
<para>Wie zuvor bereits erwähnt, wird in diesem Abschnitt
|
|
angenommen, dass drei <acronym>SCSI</acronym>-Geräte vorhanden
|
|
sind (<devicename>da0</devicename>, <devicename>da1</devicename>
|
|
und <devicename>da1</devicename> bzw. <devicename>ad0</devicename>
|
|
und so weiter, falls IDE-Platten verwendet werden). Um einen
|
|
<acronym>RAID</acronym>-Z Pool zu erstellen, geben Sie das
|
|
folgende Kommando ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool create storage raidz da0 da1 da2</userinput></screen>
|
|
|
|
<note>
|
|
<para>&sun; empfiehlt, dass die Anzahl von Geräten in einer
|
|
<acronym>RAID</acronym>-Z Konfiguration drei bis neun beträgt.
|
|
Falls Ihre Anforderungen unbedingt einen einzelnen Pool, bestehend
|
|
aus zehn oder mehr Platten, erfordern, sollten Sie überlegen,
|
|
diesen in kleinere <acronym>RAID</acronym>-Z Gruppen aufzuteilen.
|
|
Sollten Sie nur zwei Platten zur Verfügung haben und trotzdem
|
|
Redundanz benötigen, ziehen Sie den Einsatz der
|
|
<acronym>ZFS</acronym>-Mirror (Spiegel) Fähigkeiten in
|
|
Betracht. Lesen Sie die &man.zpool.8; Manualpage, um mehr
|
|
darüber zu erfahren.</para>
|
|
</note>
|
|
|
|
<para>Der <literal>storage</literal>-zPool sollte jetzt erstellt worden
|
|
sein. Sie können das überprüfen, indem Sie die Befehle
|
|
&man.mount.8; und &man.df.1; wie zuvor verwenden. Weitere
|
|
Plattenspeicher können an das Ende der oben stehenden Liste
|
|
hinzugefügt werden. Erstellen Sie ein neues Dateisystem in dem
|
|
Pool, <literal>home</literal> genannt, in dem später Dateien von
|
|
Benutzern platziert werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs create storage/home</userinput></screen>
|
|
|
|
<para>Nun kann die Komprimierung aktiviert und zusätzliche
|
|
Kopien der Benutzerverzeichnisse und der darin enthaltenen Dateien
|
|
angelegt werden. Dies geschieht über die gleichen Befehle
|
|
wie bereits zuvor:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs set copies=2 storage/home</userinput>
|
|
&prompt.root; <userinput>zfs set compression=gzip storage/home</userinput></screen>
|
|
|
|
<para>Um dieses Verzeichnis als neues Benutzerverzeichnis zu verwenden,
|
|
kopieren Sie die Nutzerdaten dort hin und erstellen Sie die
|
|
entsprechenden Symlinks:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp -rp /home/* /storage/home</userinput>
|
|
&prompt.root; <userinput>rm -rf /home /usr/home</userinput>
|
|
&prompt.root; <userinput>ln -s /storage/home /home</userinput>
|
|
&prompt.root; <userinput>ln -s /storage/home /usr/home</userinput></screen>
|
|
|
|
<para>Anwender sollten jetzt ihre Daten in dem neu angelegten <filename
|
|
class="directory">/storage/home</filename> Dateisystem auffinden.
|
|
Prüfen Sie das, indem Sie einen neuen Benutzer hinzufügen
|
|
und sich als dieser Benutzer am System anmelden.</para>
|
|
|
|
<para>Versuchen Sie, einen Schnappschuss anzulegen, der später
|
|
wieder zurückgerollt werden kann:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs snapshot storage/home@08-30-08</userinput></screen>
|
|
|
|
<para>Beachten Sie, dass die Schnappschuss-Option nur auf echte
|
|
Dateisysteme, jedoch nicht auf Verzeichnisse oder eine Datei
|
|
angewendet werden kann. Das <literal>@</literal>-Zeichen dient als
|
|
Begrenzer zwischen dem Dateisystem- oder Volumenamen. Wenn ein
|
|
Benutzerverzeichnis zerstört wird, können Sie es über
|
|
den folgenden Befehl wieder herstellen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs rollback storage/home@08-30-08</userinput></screen>
|
|
|
|
<para>Um eine Liste von allen verfügbaren Schnappschüssen zu
|
|
erhalten, starten Sie das <command>ls</command>-Kommando in
|
|
Verzeichnis <filename
|
|
class="directory">.zfs/snapshot</filename> des entsprechenden
|
|
Dateisystems. Beispielsweise können Sie den vorhin angelegten
|
|
Schnappschuss mit dem folgenden Befehl auflisten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ls /storage/home/.zfs/snapshot</userinput></screen>
|
|
|
|
<para>Es ist möglich ein Skript zu schreiben, dass monatliche
|
|
Schnappschüsse der Nutzerdaten anlegt. Allerdings werden die
|
|
Schnappschüsse mit der Zeit eine grosse Menge an Speicherplatz
|
|
einnehmen. Den vorherigen Schnappschuss können Sie über
|
|
das folgende Kommando löschen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs destroy storage/home@08-30-08</userinput></screen>
|
|
|
|
<para>Nach all diesen Tests gibt es keinen Grund, das Verzeichnis
|
|
<filename
|
|
class="directory">/storage/home</filename> noch länger in seinem
|
|
momentanen Zustand zu belassen. Ernennen Sie es zum echten <filename
|
|
class="directory">/home</filename>-Dateisystem:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs set mountpoint=/home storage/home</userinput></screen>
|
|
|
|
<para>Die Eingabe der Befehle <command>df</command> und
|
|
<command>mount</command> zeigt, dass das System das Dateisystem nun
|
|
als das echte <filename class="directory">/home</filename>
|
|
behandelt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount</userinput>
|
|
/dev/ad0s1a on / (ufs, local)
|
|
devfs on /dev (devfs, local)
|
|
/dev/ad0s1d on /usr (ufs, local, soft-updates)
|
|
storage on /storage (zfs, local)
|
|
storage/home on /home (zfs, local)
|
|
&prompt.root; <userinput>df</userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/ad0s1a 2026030 235240 1628708 13% /
|
|
devfs 1 1 0 100% /dev
|
|
/dev/ad0s1d 54098308 1032826 48737618 2% /usr
|
|
storage 26320512 0 26320512 0% /storage
|
|
storage/home 26320512 0 26320512 0% /home</screen>
|
|
|
|
<para>Damit ist die <acronym>RAID</acronym>-Z-Konfiguration
|
|
abgeschlossen. Um über den Status des Dateisystems mittels des
|
|
nächtlichen &man.periodic.8;-Skripts auf dem Laufenden gehalten
|
|
zu werden, geben Sie das folgende Kommando ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf</userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Wiederherstellung von <acronym>RAID</acronym>-Z</title>
|
|
|
|
<para>Jedes Software-<acronym>RAID</acronym> besitzt Verfahren, um
|
|
dessen <literal>Zustand</literal> zu überwachen.
|
|
<acronym>ZFS</acronym> ist da keine Ausnahme. Der Status von
|
|
<acronym>RAID</acronym>-Z Geräten kann mittels des folgenden
|
|
Kommandos betrachtet werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool status -x</userinput></screen>
|
|
|
|
<para>Wenn alle Pools gesund sind und alles normal ist, wird die
|
|
folgende Nachricht zurückgegeben:</para>
|
|
|
|
<screen>all pools are healthy</screen>
|
|
|
|
<para>Wenn ein Problem existiert (möglicherweise ist eine Platte
|
|
ausgefallen), wird der Zustand des Pools ähnlich dem Folgenden
|
|
ausgegeben:</para>
|
|
|
|
<screen> pool: storage
|
|
state: DEGRADED
|
|
status: One or more devices has been taken offline by the administrator.
|
|
Sufficient replicas exist for the pool to continue functioning in a
|
|
degraded state.
|
|
action: Online the device using 'zpool online' or replace the device with
|
|
'zpool replace'.
|
|
scrub: none requested
|
|
config:
|
|
|
|
NAME STATE READ WRITE CKSUM
|
|
storage DEGRADED 0 0 0
|
|
raidz1 DEGRADED 0 0 0
|
|
da0 ONLINE 0 0 0
|
|
da1 OFFLINE 0 0 0
|
|
da2 ONLINE 0 0 0
|
|
|
|
errors: No known data errors</screen>
|
|
|
|
<para>Das bedeutet, dass das Gerät vom Systemadministrator
|
|
abgeschaltet wurde. In diesem Fall trifft das zu. Um eine Platte
|
|
abzuschalten, wurde das folgende Kommando eingegeben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool offline storage da1</userinput></screen>
|
|
|
|
<para>Es ist jetzt möglich, <devicename>da1</devicename> zu
|
|
ersetzen, nachdem das System ausgeschaltet wurde. Wenn das System
|
|
wieder läuft, kann der folgende Befehl benutzt werden, um die
|
|
Platte zu ersetzen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool replace storage da1</userinput></screen>
|
|
|
|
<para>Von da an kann der Status erneut überprüft werden,
|
|
jedoch dieses Mal ohne die Option <option>-x</option>, um die
|
|
Zustandsinformation zu bekommen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool status storage</userinput>
|
|
pool: storage
|
|
state: ONLINE
|
|
scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
|
|
config:
|
|
|
|
NAME STATE READ WRITE CKSUM
|
|
storage ONLINE 0 0 0
|
|
raidz1 ONLINE 0 0 0
|
|
da0 ONLINE 0 0 0
|
|
da1 ONLINE 0 0 0
|
|
da2 ONLINE 0 0 0
|
|
|
|
errors: No known data errors</screen>
|
|
|
|
<para>Wie in diesem Beispiel gezeigt, scheint alles wieder normal zu
|
|
sein.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Datenüberprüfung</title>
|
|
|
|
<para>Wie bereits erwähnt, verwendet <acronym>ZFS</acronym>
|
|
<literal>Prüfsummen</literal>, um die Integrität der
|
|
gespeicherten Daten zu verifizieren. Die Prüfsummen werden
|
|
automatisch beim Erstellen des Dateisystem aktiviert und können
|
|
über den folgenden Befehl deaktiviert werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs set checksum=off storage/home</userinput></screen>
|
|
|
|
<para>Das ist jedoch kein schlauer Einfall, da die Prüfsummen nur
|
|
ganz wenig Speicherplatz einnehmen und viel nützlicher sind,
|
|
wenn Sie aktiviert bleiben. Es scheint auch kein nennenswerter
|
|
Ressourcenverbrauch mit deren Aktivierung verbunden zu sein. Wenn die
|
|
Prüfsummen aktiv sind, kann <acronym>ZFS</acronym> die
|
|
Datenintegrität über den Vergleich der Prüfsummen
|
|
gewährleisten. Dieser Prozess wird als <quote>reinigen</quote>
|
|
bezeichnet. Um die Datenintegrität des
|
|
<literal>storage</literal>-Pools zu überprüfen, geben Sie
|
|
den folgenden Befehl ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool scrub storage</userinput></screen>
|
|
|
|
<para>Dieser Prozess kann einige Zeit in Anspruch nehmen, abhängig
|
|
davon, wieviele Daten gespeichert sind. Es handelt sich dabei auch
|
|
um eine <acronym>I/O</acronym>-intensive Aktion, weshalb auch jeweils
|
|
nur eine dieser Operationen durchgeführt werden darf. Nachdem
|
|
die Reinigung abgeschlossen ist, wird der Status aktualisiert und
|
|
kann über eine Statusabfrage eingesehen werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zpool status storage</userinput>
|
|
pool: storage
|
|
state: ONLINE
|
|
scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
|
|
config:
|
|
|
|
NAME STATE READ WRITE CKSUM
|
|
storage ONLINE 0 0 0
|
|
raidz1 ONLINE 0 0 0
|
|
da0 ONLINE 0 0 0
|
|
da1 ONLINE 0 0 0
|
|
da2 ONLINE 0 0 0
|
|
|
|
errors: No known data errors</screen>
|
|
|
|
<para>Die Zeit des Abschlusses der Aktion kann in diesem Beispiel direkt
|
|
abgelesen werden. Die Prüfsummen helfen dabei, sicherzustellen,
|
|
dass die Datenintegrität über einen langen Zeitraum hinaus
|
|
erhalten bleibt.</para>
|
|
|
|
<para>Es gibt viele weitere Optionen für das Z-Dateisystem, lesen
|
|
Sie dazu die Manualpage &man.zfs.8; und &man.zpool.8;.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!--
|
|
XXXTR: stub sections (added later, as needed, as desire,
|
|
after I get opinions from -doc people):
|
|
|
|
Still need to discuss native and foreign file systems.
|
|
|
|
<sect1>
|
|
<title>Device File System</title>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>DOS and NTFS File Systems</title>
|
|
<para>This is a good section for those who transfer files, using
|
|
USB devices, from Windows to FreeBSD and vice-versa. My camera,
|
|
and many other cameras I have seen default to using FAT16. There
|
|
is (was?) a kde utility, I think called kamera, that could be used
|
|
to access camera devices. A section on this would be useful.</para>
|
|
|
|
<para>XXXTR: Though! The disks chapter, covers a bit of this and
|
|
devfs under it's USB devices. It leaves a lot to be desired though,
|
|
see:
|
|
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/usb-disks.html
|
|
It may be better to flesh out that section a bit more. Add the
|
|
word "camera" to it so that others can easily notice.</para>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>Linux EXT File System</title>
|
|
|
|
<para>Probably NOT as useful as the other two, but it requires
|
|
knowledge of the existence of the tools. Which are hidden in
|
|
the ports collection. Most Linux guys would probably only use
|
|
Linux, BSD guys would be smarter and use NFS.</para>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>HFS</title>
|
|
|
|
<para>I think this is the file system used on Apple OSX. There are
|
|
tools in the ports collection, and with Apple being a big
|
|
FreeBSD supporter and user of our technologies, surely there
|
|
is enough cross over to cover this?</para>
|
|
</sect1>
|
|
-->
|
|
|
|
|
|
</chapter>
|