Kapitel 8. Festplatten, Dateisysteme und Boot Loader

8.1. Wie kann ich meine neue Festplatte in mein FreeBSD-System einbinden?
8.2. Wie verschiebe ich mein System auf meine neue, große Platte?
8.3. Auf welchen Partitionen kann ich gefahrlos Soft Updates einsetzen? Ich habe gehört, dass der Einsatz von Soft Updates auf / Probleme verursachen kann. Was ist mit Journaled Soft Updates?
8.4. Kann ich andere fremde Dateisysteme unter FreeBSD mounten?
8.5. Wie mounte ich eine erweiterte DOS-Partition?
8.6. Gibt es ein verschlüsselndes Dateisystem für FreeBSD?
8.7. Wie boote ich FreeBSD und Linux® mit GRUB?
8.8. Wie boote ich FreeBSD und Linux® mit BootEasy?
8.9. Wie kann ich das ??? des Boot-Managers durch etwas Sinnvolles ersetzen?
8.10. Wie verwende ich einen neuen Wechseldatenträger?
8.11. Wieso erhalte ich die Meldung Incorrect super block beim Mounten einer CD?
8.12. Wieso erhalte ich die Meldung Device not configured, wenn ich eine CD mounte?
8.13. Wieso werden alle Sonderzeichen in den Dateinamen auf meinen CDs durch „?“ ersetzt, wenn ich die CD unter FreeBSD benutze?
8.14. Ich habe eine CD mit FreeBSD gebrannt und kann sie nicht mit anderen Betriebssystemen lesen. Warum?
8.15. Wie kann ich ein Image einer Daten-CD erzeugen?
8.16. Wieso kommt mount nicht mit einer Audio-CD zurecht?
8.17. Wie mounte ich eine Multi-Session CD?
8.18. Wie lasse ich normale Benutzer Disketten, CD-ROMs und andere Wechseldatenträger mounten?
8.19. Wieso geben die Befehle du und df unterschiedliche Werte für den freien Plattenplatz aus?
8.20. Wie kann ich den Swap-Bereich vergrößern?
8.21. Warum ist meine Festplatte unter FreeBSD kleiner, als sie laut Hersteller sein soll?
8.22. Warum kann eine Partition zu mehr als 100% gefüllt sein?
8.23. Warum pausiert FreeBSD beim Booten so lange, wenn das System große Mengen RAM hat?

8.1.

Wie kann ich meine neue Festplatte in mein FreeBSD-System einbinden?

Lesen Sie den Abschnitt Hinzufügen von Laufwerken im Handbuch.

8.2.

Wie verschiebe ich mein System auf meine neue, große Platte?

Die beste Methode ist, das Betriebssystem auf der neuen Platte zu installieren und danach die Daten zu verschieben. Diese Methode ist sehr empfehlenswert, wenn Sie -STABLE über ein Release hinaus genutzt haben oder ein Release aktualisiert haben. Sie können boot0cfg(8) auf beiden Platten installieren und die beiden Versionen so lange parallel betreiben, bis Ihnen die neue Konfiguration gefällt. Wenn Sie dies tun wollen, können Sie im übernächsten Absatz erfahren, wie sie Ihre Daten verschieben können.

Alternativ können Sie die neue Platte entweder mit sade(8) oder gpart(8) partitionieren und labeln. Wenn die Festplatten mit MBR formatiert sind, kann booteasy auf beiden Festplatten mit boot0cfg(8) installiert werden, damit der Rechner nach dem Kopieren das alte oder neue System booten kann.

Sobald die neue Festplatte eingerichtet ist, können die Daten nicht einfach kopiert werden. Verwenden Sie stattdessen Werkzeuge, die Gerätedateien und Dateiattribute verstehen, z. B. dump(8). Obwohl empfohlen wird, die Daten im Einzelbenutzermodus zu verschieben, ist dies nicht zwingend erforderlich.

Wenn die Festplatten mit UFS formatiert sind, verwenden Sie ausschließlich dump(8) und restore(8), um das Root-Dateisystem zu verschieben. Diese Befehle sollten auch beim Verschieben einer einzelnen Partition in eine andere, leere Partition verwendet werden. Um die Daten einer UFS-Partition auf eine andere Partition zu verschieben, müssen Sie die folgenden Schritte ausführen:

  1. Richten Sie in der neuen Partition mit newfs ein Dateisystem ein.

  2. mounten Sie die Partition temporär an einer geeigneten Stelle.

  3. Wechseln Sie mit cd in dieses Verzeichnis.

  4. Lesen Sie die alte Partition mit dump aus und lenken Sie die Ausgabe auf die neue Partition um.

Wenn Sie zum Beispiel das Root-Dateisystem auf /dev/ad1s1a verschieben wollen und diese derzeit auf /mnt gemountet ist, geben Sie folgendes ein:

# newfs /dev/ada1s1a
# mount /dev/ada1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -

Wenn Sie Partitionen mit dump umorganisieren wollen, bedeutet dies etwas mehr Arbeit. Wenn Sie eine Partition wie /var in die übergeordnete Partition verschieben wollen, müssen Sie zunächst eine neue Partition erzeugen, die die beiden alten Partitionen aufnehmen kann. Der zweite Schritt ist, wie oben beschrieben die übergeordnete Partition in die neue Partition zu verschieben. Im dritten und letzten Schritt verschieben Sie dann die untergeordnete Partition in das leere Verzeichnis, das im zweiten Schritt entstanden ist:

# newfs /dev/ada1s1a
# mount /dev/ada1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -
# cd var
# dump 0af - /var | restore rf -

Wenn Sie ein Verzeichnis aus einer Partition herauslösen wollen, also z.B. /var auf eine eigene Partition verlegen wollen, dann müssen Sie zunächst beide Partitionen anlegen. Danach müssen Sie die untergeordnete Partition im passenden Verzeichnis unterhalb des temporären mount points mounten und zum Abschluß die alte Partition verschieben:

# newfs /dev/ada1s1a
# newfs /dev/ada1s1d
# mount /dev/ada1s1a /mnt
# mkdir /mnt/var
# mount /dev/ada1s1d /mnt/var
# cd /mnt
# dump 0af - / | restore rf -

Zum Verschieben von Benutzerdaten stehen Werkzeuge wie cpio(1) und pax(1) zur Verfügung. Allerdings sind diese Programme dafür bekannt, dass sie die erweiterten Dateiattribute nicht verstehen, daher sollten Sie bei ihrem Einsatz aufpassen.

8.3.

Auf welchen Partitionen kann ich gefahrlos Soft Updates einsetzen? Ich habe gehört, dass der Einsatz von Soft Updates auf / Probleme verursachen kann. Was ist mit Journaled Soft Updates?

Die schnelle Antwort: Sie können Soft Updates bedenkenlos auf alle Partitionen benutzen.

Die ausführliche Antwort: Soft Updates besitzen zwei Eigenschaften, die auf bestimmten Partitionen unerwünscht sein können. Zum einen kann es bei einem Absturz des System auf einer Partition mit Soft Updates zum Datenverlust kommen. Die Partition ist zwar noch brauchbar, aber die Daten sind verloren. Weiterhin kann es durch Soft Updates zu einem zeitweisen Mangel an Plattenplatz kommen.

Bei der Benutzung von Soft Updates kann es bis zu dreißig Sekunden dauern, bis der Kernel Änderungen auf das physikalische Speichermedium schreibt. Wenn Sie eine große Datei löschen, ist diese Datei noch auf der Platte vorhanden, bis der Kernel die Löschoperation tatsächlich durchführt. Das kann zu einem sehr einfachen Problem führen: Stellen Sie sich vor, Sie löschen eine große Datei und legen gleich darauf eine andere große Datei an. Da die erste Datei noch nicht wirklich gelöscht wurde, ist eventuell nicht genug Platz für die zweite große Datei. Sie erhalten die Fehlermeldung, dass nicht genug freier Platz vorhanden ist, obwohl Sie gerade eben ausreichend Platz freigegeben haben. Ein paar Sekunden später funktioniert die Erstellung der Datei wie erwartet.

Wenn der Kernel ein Datenpaket annimmt und das System abstürzt, bevor die Daten auf die Platte geschrieben wurden, kann es zum Verlust oder zur Zerstörung von Daten kommen. Dieses Risiko ist nur sehr gering und normalerweise überschaubar.

Diese beiden Probleme betreffen alle Partitionen, die Soft Updates verwenden. Was bedeutet das für die Root-Partition?

Die wichtigen Daten auf der Root-Partition ändern sich nur sehr selten. Wenn das System in den 30 Sekunden nach einer solchen Änderung abstürzt, ist es möglich, das Daten verloren gehen. Dieses Risiko ist in den meisten Fällen unerheblich, aber es ist vorhanden. Wenn das zu viel Risiko ist, dann sollten Sie Soft Updates nicht auf der Root-Partition einsetzen.

/ war schon immer eine der kleinsten Partitionen. Wenn /tmp direkt auf / liegt, kann es zeitweise zu den oben beschriebenen Platzproblemen kommen. Um das Problem zu lösen, sollten sie einen symbolischen Link von /tmp nach /var/tmp legen.

Zudem sei noch angemerkt, dass dump(8) nicht im Live-Modus (-L) auf einem Dateisystem mit Journaled Soft Updates (SU+J) funktioniert.

8.4.

Kann ich andere fremde Dateisysteme unter FreeBSD mounten?

FreeBSD unterstützt verschiedene fremde Dateisysteme:

UFS

UFS-CD-ROMs können unter FreeBSD direkt gemountet werden. Das Mounten von Partitionen von Digital UNIX und anderen Systemen, die UFS unterstützen, könnte schwieriger sein, abhängig von den Details der Plattenpartitionierung des betreffenden Betriebssystems.

ext2/ext3

FreeBSD unterstützt ext2fs und ext3fs-Partitionen. Unter ext2fs(5) finden Sie weitere Informationen.

NTFS

FUSE basierte NTFS-Unterstützung ist über einen Port verfügbar (sysutils/fuse-ntfs). Weitere Informationen finden Sie unter ntfs-3g.

FAT

FreeBSD enthält ein FAT-Treiber, der Lese- und Schreibzugriffe ermöglicht. Weitere Informationen finden Sie in mount_msdosfs(8).

ZFS

FreeBSD enthält eine Portierung von Sun™s ZFS Treiber. Die aktuelle Empfehlung ist, es nur auf amd64 Plattformen mit ausreichend Hauptspeicher zu verwenden. Mehr Informationen finden Sie in zfs(8).

FreeBSD unterstützt auch das Netzwerk-Dateisystem NFS. Die FreeBSD Ports-Sammlung bietet zudem einige FUSE-Anwendungen um weitere Dateisysteme zu unterstützen.

8.5.

Wie mounte ich eine erweiterte DOS-Partition?

Die erweiterten DOS-Partitionen befinden sich hinter allen primären Partitionen. Wenn sich zum Beispiel eine Partition E als sekundäre DOS-Partition auf einem zweiten SCSI-Laufwerk befindet, wird eine Gerätedatei für Slice 5 in /dev erstellt. Um diese zu mounten:

# mount -t msdosfs /dev/da1s5 /dos/e

8.6.

Gibt es ein verschlüsselndes Dateisystem für FreeBSD?

Ja. gbde(8) und geli(8). Lesen Sie dazu auch den Abschnitt Partitionen verschlüsseln im FreeBSD Handbuch.

8.7.

Wie boote ich FreeBSD und Linux® mit GRUB?

Um FreeBSD mit GRUB zu booten, müssen Sie die folgenden Zeilen in Abhängigkeit der verwendeten Linux®-Distribution in /boot/grub/menu.lst oder /boot/grub/grub.conf aufnehmen.

title FreeBSD 9.1
	root (hd0,a)
	kernel /boot/loader

Dabei steht hd0,a für die Root-Partition der ersten Festplatte. Benötigen Sie auch die Slice-Nummer, so verwenden Sie einen Eintrag der Form hd0,2,a. In der Voreinstellung ist die Angabe der Slice-Nummer aber nicht nötig, da GRUB automatisch das erste Slice (das die Bezeichnung a hat) nutzt.

8.8.

Wie boote ich FreeBSD und Linux® mit BootEasy?

Installieren Sie LILO am Anfang der Linux®-Bootpartition, anstatt im Master Boot Record. Sie können LILO dann von BootEasy aus booten.

Wenn Sie Windows® und Linux® benutzen, wird dies ohnehin empfohlen, um es einfacher zu machen, Linux® wieder zu booten, wenn es nötig werden sollte, dass Sie Windows® neu installieren.

8.9.

Wie kann ich das ??? des Boot-Managers durch etwas Sinnvolles ersetzen?

Ohne den Boot-Manager neu zu schreiben, gar nicht. Allerdings gibt es in der Kategorie sysutils der Ports-Sammlung diverse Boot-Manager, die diese Funktionalität bieten.

8.10.

Wie verwende ich einen neuen Wechseldatenträger?

Wenn auf dem Laufwerk bereits ein Dateisystem existiert, können Sie folgendes Kommando benutzen:

# mount -t msdosfs /dev/da0s1 /mnt

Wenn das Laufwerk nur mit FreeBSD-Systemen verwendet wird, partitionieren Sie es mit UFS oder ZFS. Dies bietet Unterstützung für lange Dateinamen, eine verbesserte Leistung und Stabilität. Wenn das Laufwerk von anderen Betriebssystemen verwendet wird, ist bspw. msdosfs die bessere Wahl.

# dd if=/dev/zero of=/dev/da0 count=2
# gpart create -s GPT /dev/da0
# gpart add -t freebsd-ufs /dev/da0

Anschließend erstellen Sie ein neues Dateisystem:

# newfs /dev/da0p1

und mounten es:

# mount /dev/da0s1 /mnt

Es ist eine gute Idee einen Eintrag in /etc/fstab hinzuzufügen (siehe fstab(5)), sodass Sie in Zukunft einfach nur mount /mnt eingeben müssen:

/dev/da0p1 /mnt ufs rw,noauto 0 0

8.11.

Wieso erhalte ich die Meldung Incorrect super block beim Mounten einer CD?

Sie müssen mount(8) mitteilen, was für ein Gerät Sie mounten wollen. Genauere Informationen dazu finden Sie im Abschnitt Einhängen von Daten-CDs des Handbuchs.

8.12.

Wieso erhalte ich die Meldung Device not configured, wenn ich eine CD mounte?

Das bedeutet im allgemeinen, dass sich keine CD im Laufwerk befindet, oder dass das Laufwerk auf dem Bus nicht sichtbar ist. Dieses Problem wird im Kapitel Einhängen von Daten-CDs des Handbuchs ausführlich diskutiert.

8.13.

Wieso werden alle Sonderzeichen in den Dateinamen auf meinen CDs durch ? ersetzt, wenn ich die CD unter FreeBSD benutze?

Wahrscheinlich werden auf der CD-ROM die Joliet Erweiterungen für die Speicherung von Datei- und Verzeichnisnamen benutzt. Werfen Sie einen Blick in das Kapitel Einhängen von Daten-CDs im Handbuch.

8.14.

Ich habe eine CD mit FreeBSD gebrannt und kann sie nicht mit anderen Betriebssystemen lesen. Warum?

Sie haben wahrscheinlich eine Datei direkt auf CD geschrieben, statt ein ISO 9660-Dateisystem erzeugt zu haben. Werfen Sie einen Blick in das Kapitel Einhängen von Daten-CDs im Handbuch.

8.15.

Wie kann ich ein Image einer Daten-CD erzeugen?

Diese Information finden Sie im Abschnitt Daten auf ein ISO-Dateisystem schreiben des Handbuchs. Weitere Informationen über die Arbeit mit CD-ROMs finden Sie im Abschnitt Erstellen und Verwenden von CDs im Kapitel Speichermedien des Handbuchs.

8.16.

Wieso kommt mount nicht mit einer Audio-CD zurecht?

Wenn Sie versuchen eine Audio-CD zu mounten, erhalten Sie die Meldung cd9660: /dev/acd0c: Invalid argument. Der Grund dafür ist, dass mount nur mit Dateisystemen arbeitet. Audio-CDs haben kein Dateisystem, sondern nur Daten. Wenn Sie eine Audio-CD auslesen wollen, brauchen Sie ein entsprechendes Programm wie z.B. den Port oder das Paket audio/xmcd.

8.17.

Wie mounte ich eine Multi-Session CD?

Standardmäßig benutzt mount(8) den letzten (aktuellsten) Daten-Track der CD. Wenn Sie eine ältere Session benutzen wollen, müssen Sie diese mit der Option -s definieren. Weitere Informationen und Beispiele finden Sie in mount_cd9660(8).

8.18.

Wie lasse ich normale Benutzer Disketten, CD-ROMs und andere Wechseldatenträger mounten?

Setzen Sie als root die sysctl-Variable vfs.usermount auf 1:

# sysctl vfs.usermount=1

Fügen Sie den Eintrag vfs.usermount=1 in /etc/sysctl.conf hinzu, damit die Einstellung beim nächsten Systemstart erneut gesetzt wird.

Benutzer dürfen nur Geräte mounten, auf die sie Leserechte haben. Um es Benutzern zu gestatten Geräte zu mounten, müssen die entsprechenden Berechtigungen in /etc/sysctl.conf gesetzt werden.

Wenn Sie zum Beispiel den Benutzern den Zugriff auf das erste USB-Laufwerk zu erlauben wollen:

# Allow all users to mount a USB drive.
	    own       /dev/da0       root:operator
	    perm      /dev/da0       0666

Alle Benutzer können nun Geräte, die sie lesen können, in ein Verzeichnis einbinden, das sie besitzen:

% mkdir ~/my-mount-point
% mount -t msdosfs /dev/da0 ~/my-mount-point

Das Aushängen eines Gerätes ist einfach:

% umount ~/my-mount-point

Die Aktivierung von vfs.usermount hat jedoch negative Auswirkungen auf Sicherheitsaspekte. Ein besserer Weg, um auf MS-DOS®-formatierte Datenträger zuzugreifen, ist die Benutzung des Pakets oder Ports emulators/mtools.

Anmerkung:

Der Gerätename in diesen Beispielen muss an die Konfiguration angepasst werden.

8.19.

Wieso geben die Befehle du und df unterschiedliche Werte für den freien Plattenplatz aus?

Der Grund liegt in der unterschiedlichen Funktionsweise der beiden Befehle. du durchläuft einen Dateibaum, ermittelt die Größe jeder einzelnen Datei, und gibt die Summe aus. df fragt lediglich das Dateisystem wie viel Platz noch frei ist. Das scheint zwar auf den ersten Blick sehr ähnlich zu sein; allerdings wird sich ein leeres Verzeichnis auf die Ausgabe von df auswirken, während es auf das Ergebnis von du keinen Einfluss hat.

Wenn Sie eine Datei löschen, während sie von einem Programm genutzt wird, wird diese Datei erst gelöscht, wenn sie vom Programm freigegeben wird. Allerdings wird die Datei sofort aus dem Verzeichnis entfernt. Sie können dieses Verhalten sehr einfach nachvollziehen. Dazu brauchen Sie nur eine Datei, die groß genug ist, um die Ausgabe von du und df zu beeinflussen. Bei der Größe aktueller Platten muss diese Datei schon sehr groß sein! Wenn Sie diese Datei löschen, während Sie sie sich in more anzeigen lassen, hat more kein Problem. Der Eintrag für die Datei wird lediglich aus dem Verzeichnis entfernt, damit kein anderes Programm mehr darauf zugreifen kann. Laut du ist die Datei verschwunden – es hat das Verzeichnis untersucht und die Datei nicht gefunden. Laut df ist die Datei aber vorhanden, da sie im Dateisystem immer noch Platz belegt. Sobald Sie more beenden, werden die Ergebnisse von du und df wieder übereinstimmen.

Die oben beschriebene Situation tritt sehr häufig auf Webservern auf. Viele Anwender installieren einen FreeBSD Webserver und vergessen die Rotation der Logdateien, bis irgendwann die Partition /var überläuft. Der Administrator löscht die Datei, aber das System beschwert sich immer noch über fehlenden Plattenplatz. Die Datei wird erst freigegeben, wenn der Webserver beendet und neu gestartet wird; dadurch kann das System den Plattenplatz freigeben. Um dies zu verhindern, sollten Sie newsyslog(8) einsetzen.

Bitte beachten Sie, dass die Freigabe des Plattenplatzes durch Soft Updates um bis zu 30 Sekunden verzögert werden kann.

8.20.

Wie kann ich den Swap-Bereich vergrößern?

Der Abschnitt Hinzufügen von Swap-Bereichen im Handbuch enthält hierzu eine Schritt-für-Schritt Anleitung.

8.21.

Warum ist meine Festplatte unter FreeBSD kleiner, als sie laut Hersteller sein soll?

Festplattenhersteller definieren ein Gigabyte als eine Milliarde Bytes, für FreeBSD ist ein Gigabyte hingegen 1.073.741.824 Bytes groß. Aus diesem Grund wird für eine Platte, die laut Herstellerangaben 80 GB groß ist, während des Bootvorgangs eine Größe von 76.319 MB angezeigt.

Beachten Sie auch, dass FreeBSD (in der Voreinstellung) 8 % des Plattenplatzes für sich reserviert.

8.22.

Warum kann eine Partition zu mehr als 100% gefüllt sein?

Ein Teil jeder UFS Partition (8% in der Voreinstellung) ist für das Betriebssystem und den Benutzer root reserviert. df(1) rechnet diesen Teil bei der Ausgabe der Spalte Capacity nicht ein, so dass dort Werte über 100% angezeigt werden können. Die Anzahl der Blöcke in der Spalte Blocks ist ebenfalls um 8% größer als die Summe der benutzten und verfügbaren Blöcke (die Spalten Used und Avail).

Wie viel Platz reserviert wird, können Sie mit der Option -m von tunefs(8) einstellen.

8.23.

Warum pausiert FreeBSD beim Booten so lange, wenn das System große Mengen RAM hat?

FreeBSD 10.1 und ältere Versionen führen zu Beginn des Bootens einen Speichertest aus. Wenn das System wenig Arbeitsspeicher hat, dauert dieser Test nur wenige Sekunden. Systeme mit zehn oder hunderten von Gigabytes Arbeitsspeicher benötigen mehrere Minuten. Durch Hinzufügen von hw.memtest.tests=0 in /boot/loader.conf können Sie diesen Test deaktivieren.

Für weitere Informationen, lesen Sie loader.conf(5).

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.