Update to r44485:

Editorial review of first 1/2 of HAST chapter.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D5641
This commit is contained in:
Bjoern Heidotting 2016-03-15 16:03:04 +00:00
parent 7730db9d8b
commit 6fc272280f
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48416

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/disks/chapter.xml,v 1.187 2012/04/26 19:32:48 bcr Exp $
basiert auf: r44473
basiert auf: r44485
-->
<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>
@ -3460,7 +3460,10 @@ Device 1K-blocks Used Avail Capacity
</sect1>
<sect1 xml:id="disks-hast">
<info><title>Highly Available Storage (HAST)</title>
<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>
@ -3482,69 +3485,27 @@ Device 1K-blocks Used Avail Capacity
<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, oder <acronym>HAST<remark role="acronym">Highly Available STorage</remark></acronym>, wurde von
&a.pjd.email; als ein Framework entwickelt, welches die transparente
Speicherung der gleichen Daten über mehrere physikalisch getrennte
Maschinen ermöglicht, die über ein TCP/IP-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>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>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> auf &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-Merkmale</title>
<para>Die Hauptmerkmale des <acronym>HAST</acronym>-Systems sind:</para>
<para>Die Hauptmerkmale von <acronym>HAST</acronym> sind:</para>
<itemizedlist>
<listitem>
<para>Es kann zur Maskierung von I/O-Fehlern auf lokalen Festplatten
<para>Es kann zur Maskierung von
<acronym>I/O</acronym>-Fehlern auf lokalen Festplatten
eingesetzt werden.</para>
</listitem>
<listitem>
@ -3574,70 +3535,100 @@ Device 1K-blocks Used Avail Capacity
bauen.</para>
</listitem>
</itemizedlist>
</sect2>
<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> stellt auf Block-Ebene eine synchrone
Replikation eines beliebigen Speichermediums auf mehreren Maschinen zur
Verfügung. Daher werden mindestens zwei physikalische
Maschinen benötigt: der <literal>primary</literal>, auch
bekannt als <literal>master</literal> Knoten, sowie der
<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>
<note>
<para>HAST ist momentan auf insgesamt zwei Knoten im Cluster
beschränkt.</para>
</note>
<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
<literal>primäre</literal> Knoten, auch
<literal>active</literal> genannt, ist derjenige, der alle I/O-Anfragen
verarbeitet, die an die <acronym>HAST</acronym>-Schnittstelle gesendet
werden. Der <literal>secondary</literal>-Knoten wird automatisch vom
<literal>primary</literal>-Knoten aus synchronisiert.</para>
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:</para>
<itemizedlist>
<listitem>
<para>lokale Platte am Primärknoten</para>
</listitem>
<listitem>
<para>entfernte Platte am Sekundärknoten</para>
</listitem>
</itemizedlist>
<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 GEOM-Provider in
<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. Somit gibt
es keinen Unterschied zwischen dem Einsatz von
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, Partitionen, etc.</para>
herkömmlichen Platten oder Partitionen.</para>
<para>Jede Schreib-, Lösch- oder Entleerungsoperation wird an die
lokale und über TCP/IP 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 I/O-Fehler auf. In solchen Fällen wird die
Leseoperation an den Sekundärknoten geschickt.</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 sehr 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><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
@ -3645,7 +3636,7 @@ Device 1K-blocks Used Avail Capacity
<itemizedlist>
<listitem>
<para><emphasis>memsync</emphasis>: meldet Schreiboperationen als
<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
@ -3655,19 +3646,20 @@ Device 1K-blocks Used Avail Capacity
zusätzlich eine gute Verlässlichkeit zu bieten.</para>
</listitem>
<listitem>
<para><emphasis>fullsync</emphasis>: meldet Schreiboperationen als
vollständig, wenn die lokale Schreiboperation beendet ist
und die entfernte Schreiboperation ebenfalls abgeschlossen wurde.
Dies ist der sicherste und zugleich der langsamste
Replikationsmodus. Er stellt den momentanen Standardmodus
dar.</para>
<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. Er stellt
den momentanen Standardmodus dar.</para>
</listitem>
<listitem>
<para><emphasis>async</emphasis>: meldet Schreiboperationen als
vollständig, wenn lokale Schreibvorgänge abgeschlossen
wurden. Dies ist der schnellste und gefährlichste
Replikationsmodus. Er sollte verwendet werden, wenn die Latenz
zu einem entfernten Knoten bei einer Replikation zu hoch ist
<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>
@ -3676,64 +3668,64 @@ Device 1K-blocks Used Avail Capacity
<sect2>
<title>HAST-Konfiguration</title>
<para><acronym>HAST</acronym> benötigt
<literal>GEOM_GATE</literal>-Unterstützung, welche
standardmäßig nicht im <literal>GENERIC</literal>-Kernel
enthalten ist. Jedoch ist in der Standardinstallation von
&os; <filename>geom_gate.ko</filename> als ladbares Modul
vorhanden. Alternativ lässt sich die
<literal>GEOM_GATE</literal>-Unterstützung in den Kernel
statisch einbauen, indem folgende Zeile zur
Kernelkonfigurationsdatei hinzugefügt wird:</para>
<programlisting>options GEOM_GATE</programlisting>
<para>Das <acronym>HAST</acronym>-Framework besteht aus Sicht des
Betriebssystems aus mehreren Bestandteilen:</para>
<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,</para>
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>
<para>Dem &man.hastctl.8; Management-Werkzeug.</para>
</listitem>
<listitem>
<para>Der Konfigurationsdatei &man.hast.conf.5;.</para>
<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
<literal>master</literal>-<literal>slave</literal> /
<literal>primary</literal>-<literal>secondary</literal> mittels
<acronym>HAST</acronym> konfiguriert, um Daten zwischen diesen beiden
auszutauschen. Die Knoten werden als
<literal><replaceable>hasta</replaceable></literal> mit der IP-Adresse
<replaceable>172.16.0.1</replaceable> und
<literal><replaceable>hastb</replaceable></literal> mit der IP-Adresse
<replaceable>172.16.0.2</replaceable> bezeichnet. Beide Knoten
besitzen eine dedizierte Festplatte
<filename>/dev/<replaceable>ad6</replaceable></filename> mit der
gleichen Grösse für den <acronym>HAST</acronym>-Betrieb.
Der <acronym>HAST</acronym>-Pool, manchmal auch Ressource
genannt, oder der GEOM-Provider in
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><replaceable>test</replaceable></filename> bezeichnet.</para>
<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 denkbar einfachste Konfiguration
<filename>/etc/hast.conf</filename> vorgenommen. Diese Datei
sollte auf beiden Knoten gleich sein. Die einfachste Konfiguration
ist folgende:</para>
<programlisting>resource test {
on hasta {
local /dev/ad6
remote 172.16.0.2
<programlisting>resource <replaceable>test</replaceable> {
on <replaceable>hasta</replaceable> {
local <replaceable>/dev/ad6</replaceable>
remote <replaceable>172.16.0.2</replaceable>
}
on hastb {
local /dev/ad6
remote 172.16.0.1
on <replaceable>hastb</replaceable> {
local <replaceable>/dev/ad6</replaceable>
remote <replaceable>172.16.0.1</replaceable>
}
}</programlisting>
@ -3742,19 +3734,19 @@ Device 1K-blocks Used Avail Capacity
<tip>
<para>Es ist ebenfalls möglich, den Hostnamen in den
<literal>remote</literal>-Anweisungen zu verwenden. Stellen Sie in
solchen Fällen sicher, dass diese Rechner auch aufgelöst
werden können und in <filename>/etc/hosts</filename>, oder
im lokalen <acronym>DNS</acronym> definiert sind.</para>
<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>Da nun die Konfiguration auf beiden Rechnern vorhanden
<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 anschliessend &man.hastd.8;:</para>
<screen>&prompt.root; <userinput>hastctl create test</userinput>
<screen>&prompt.root; <userinput>hastctl create <replaceable>test</replaceable></userinput>
&prompt.root; <userinput>service hastd onestart</userinput></screen>
<note>
@ -3771,54 +3763,42 @@ Device 1K-blocks Used Avail Capacity
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><replaceable>hasta</replaceable></literal>
geben Sie diesen Befehl ein:</para>
&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 test</userinput></screen>
<screen>&prompt.root; <userinput>hastctl role primary <replaceable>test</replaceable></userinput></screen>
<para>Geben Sie folgendes Kommando auf dem sekundären
Knoten <literal><replaceable>hastb</replaceable></literal>
ein:</para>
<para>Geben Sie folgendes Kommando auf dem sekundären Knoten
<literal>hastb</literal> ein:</para>
<screen>&prompt.root; <userinput>hastctl role secondary test</userinput></screen>
<screen>&prompt.root; <userinput>hastctl role secondary <replaceable>test</replaceable></userinput></screen>
<caution>
<para>Es kann passieren, dass beide Knoten nicht in der Lage
sind, miteinander zu kommunizieren und dadurch beide als
primäre Knoten konfiguriert sind; die Konsequenz daraus wird
als <literal>split-brain</literal> bezeichnet. Um diese
Situation zu bereinigen, folgen Sie den Schritten, die
in <xref linkend="disks-hast-sb"/> beschrieben sind.</para>
</caution>
<para>Überprüfen Sie das Ergebnis mit <command>hastctl</command>
auf beiden Knoten:</para>
<para>Überprüfen Sie das Ergebnis mit &man.hastctl.8; auf beiden
Knoten:</para>
<screen>&prompt.root; <userinput>hastctl status <replaceable>test</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>hastctl status test</userinput></screen>
<para>Der wichtigste Teil ist die
<literal>status</literal>-Textzeile, die auf jedem Knoten
<literal>complete</literal> lauten sollte. Falls der Status
als <literal>degraded</literal> zurückgemeldet wird, ist etwas
schief gegangen. Zu diesem Zeitpunkt hat die Synchronisation
zwischen den beiden Knoten bereits begonnen. Die
Synchronisation ist beendet, wenn
<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> angezeit 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
<filename>/dev/hast/<replaceable>test</replaceable></filename> GEOM-Provider anzulegen
und dieses ins System einzuhängen. Dies muss auf dem
<literal>primary</literal>-Knoten durchgeführt werden, da
<filename>/dev/hast/<replaceable>test</replaceable></filename> nur auf dem
<literal>primary</literal>-Knoten erscheint. Die Erstellung
des Dateisystems kann ein paar Minuten dauern, abhängig von
der Größe der Festplatte:</para>
<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/test</userinput>
&prompt.root; <userinput>mkdir /hast/test</userinput>
&prompt.root; <userinput>mount /dev/hast/test /hast/test</userinput></screen>
<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,