Dateisysteme und Formatierung
Bevor man Datenträger verwenden kann, muß auf den Partitionen auch noch ein Dateisystem angelegt werden, oder wie man (eigentlich nicht ganz korrekt) sagt, formatiert werden.
Linux kennt nicht nur ein Dateisystem, sondern sehr viele (50+) teile sehr spezielle Dateisysteme. Diese werden lokal, remote und im cluster eingesetzt und haben deshalb unterschiedliche Vor- und Nachteile.
Oft verwendet werden ext4 und XFS. Aber auch das von Solaris stammende ZFS hat viele Anhänger. Eine genaue Übersicht findet sich bei Wikipedia (Eng).
- ext2 ist das älteste dieser Systeme und gilt daher als am stabilsten und ausgereiftesten. Es hat jedoch den entscheidenden Nachteil das es kein sogenanntes Journal führt. Bei einem journalisierenden Dateisystem muß nach einem Absturz kein zeitaufwendiger Dateisystemcheck beim nächsten Booten durchgeführt werden.
- Aus diesem Grund ist der Nachfolger ext3 entstanden, welcher nichts weiter als ein ext2-System mit Journal ist. Zu beachten ist das mit 4k-Block size (standard auf x86/amd64) schon bei 2TiB-Dateigröße Schluss ist:
Block-größe 1) | maximale Dateigröße | maximale Dateisystemgröße |
---|---|---|
1 KiB | 16 GiB | 2 TiB |
2 KiB | 256 GiB | 8 TiB |
4 KiB | 2 TiB | 16 TiB |
8 KiB 2) | 2 TiB | 32 TiB |
- ext4 ist der Nachfolger von ext3 und seit kernel-Version 2.6.28 als stabil markiert. Vorhandene ext3-Dateisysteme können mit diesem Befehl konvertiert werden:
tune2fs -O extents,uninit_bg,dir_index /dev/sda1
3) Anschließend ein Dateisystemcheck:
fsck -fCVD /dev/sda1
Von da an kann das neue Dateisystem nicht mehr als ext3 gemountet werden, eine Konvertierung zurück ist ausgeschlossen. Ein ext3-Dateisystem kann jedoch als ext4 gemountet werden Es bleibt dennoch ein ext3-System, bis es explizit konvertiert wird. Die maximale Dateigröße steigt bei 4k Blöcken auf 16TiB. Bis 29.11.2011 limitierten die e2fsprogs die maximale Volumegröße auf 16 TB, mit der Version 1.42 von e2fsprogs ist diese Hürde entfallen, für Online-Resizing ist aber ein Kernel ab Version 3.2 erforderlich 4), offline funktioniert es immer noch nicht. Siehe auch: ext3 und reiserfs im Detail, The Ongoing Evolution of Ext4 le system und Quo vadis Linux File Systems: An operations point of view on EXT4 and BTRFS.
- ReiserFS ist in der Version 3 seit einiger Zeit im Kernel enthalten. Es sticht bei Festplattenbenchmarks vor allem hervor wenn es um das schreiben sehr vieler kleiner Dateien, bzw. um sehr viele Dateien pro Verzeichnis geht. Allerdings haben (fast?) alle große Distributionen nicht (mehr) Reiserfs als Standarddateisystem, auch OpenSuse nicht mehr (ab der 10.2-Version). Die Gründe lassen sich in der entsprechenden Ankündigungs-mail ablesen. Mit der Version4 sind weitere Neuerungen eingeführt worden, bisher ist diese Version allerdings nur bei der Distribution Linspire enthalten und nicht im Standard-kernel. Da keine treibende Programmierekraft hinter Reiser4 steht sieht dessen Zukunft nicht allzu gut aus.
Wer konservativ ist, oder sich nicht entscheiden kann, wählt einfach mit einem aktuellen Kernel einfach ext4.
Formatieren
Ein Dateisystem wird mit dem Befehl mkfs angelegt. mkfs
ist dabei eigentlich nur eine Art Verteiler, welcher dann das eigentliche Pogramm aufruft, da jedes Dateisystem seinen eigenen Befehl zum erzeugen hat. Der Parameter -t sagt mkfs
welches Dateisystem wir anlegen wollen. Dann muß mkfs
natürlich auch noch wissen, welche Partition wir formatieren wollen, daher muß auch noch der Gerätename mit Partitionsnummer angegeben werden:
mkfs -t reiserfs /dev/hda1
legt z. B. eine ReiserFS-Partition auf hda1 an. mkfs
ruft dabei in Wirklichkeit mkreiserfs
auf welches das ReiserFS anlegt. Der direkte Befehl um ext2/ext3 Partitionen anzulegen, lautet mke2fs
, wobei der Parameter -j zusätzlich ein Journal anlegt (also aus dem ext2 ein ext3 Dateisystem macht).
- Handelt es sich jedoch um eine Swap-Partition, wird diese mit
mkswap
gefolgt vom Gerätenamen mit Partitionsnummer formatiert. - Wer eine Fat-Partition möchte, kann diese mit
mkdosfs
gefolgt von der Gerätebezeichnung anlegen.
Links zu Dateisystemen
Dateisystemcheck
Dateisysteme mit Journaling enthalten ein Journal (eine Art Logbuch) für Datenverändernde Transaktionen. Bei Störungen (Strom weg etc.) fällt das beim nächsten Check des Journals auf und der Fehler kann behoben werden.
Daher benötigen Dateisysteme mit Journalen nicht nach jedem Absturz des Systems einen kompletten Dateisystemcheck und man spart Bootzeit und sichert dennoch Datenkonsistenz. Vertreter sind z.B. ext3 und ReiserFS.
Die meisten Distributionen checken standardmäßig nach einer bestimmten Zeit oder einer bestimmten Anzahl von mounts die Dateisysteme durch. Wenn man dennoch auf solchen Datenträgern von Zeit zu Zeit ein Dateisystemcheck durch führen will gibt es dazu das Kommando fsck
das mit root-Rechten ausgeführt werden muss und bei einem nicht eingehängten Dateisystem angewendet werden kann.
Bei (automatisch beim booten) gemounteten Datenträgern wird ein eventueller Dateisystemcheck vorgenommen, wenn der letzte Parameter der /etc/fstab
eine 1 oder 2 ist, wobei Partitionen mit einer 1 zuerst gecheckt werden, dann die mit einer 2. Dieser Check wird von Zeit zu Zeit ausgeführt, was man dann an einer längeren Bootzeit bemerkt. Mit fsck -t Dateisystemtyp Gerätename kann dieser Check auch manuell vorgenommen werden. Dabei darf der Datenträger nicht gemountet oder allenfalls nur read only gemountet sein.
Dateisystemparameter bei ext2/3 (tune2fs)
mit tune2fs kann man u.A. folgende Dateisystemparameter bei ext2/3 einstellen:
Möglichkeiten | Welcher Parameter |
---|---|
Die Anzahl der mounts nach dem das Dateisystem mal wieder komplett gecheckt wird | -c [Zahl] |
Den Speicherplatz (prozentual) der für root reservierten ist | -m [Zahl] |
Den Speicherplatz (Blöcke) die für root reservierten ist | -r [Zahl] |
Fehlerverhalten (continue, remount-ro, panic) | -e |
Datenträgerbezeichnung (Volume-Label) setzen | -L [Bezeichnung] |
Der Befehl
sudo tune2fs -c 40 -i 60 -m 0 -L filme1 /dev/sda1
würde also beim 40 mounts oder nach 60 Tagen (was eher zutrifft) wieder das Dateisystem komplett checken, für root keinen Speicherplatz reservieren und die Bezichnung/das Label „filme1“ vergeben. Genaueres liefert der Befehl man tune2fs
.
Datenträger von 4k auf 512B formatieren
Datenträger von 4k oder 520B auf 512B formatieren
Einige Hersteller (Netapp, …) formatieren Datenträger auf 520B Sektorgröße, die muss man wieder zeitaufwendig umformatieren:
smartctl -i /dev/$Disk [...] Logical block size: 520 bytes
apt install sg3-utils
--format zerstört alle Daten!
sg_format -v --format --size=512 /dev/$Disk
bei 4k protection ist u.U. fmtpinfo nötig:
sg_format --format --size=512 --fmtpinfo=0 /dev/sda
Quellen:
Linux-Dateisystemzugriff von Windows
tune2fs -l /dev/sda1 | grep -i 'block size'bzw. mit
tune2fs -l UUID=a806826e-99be-4515-bfb6-1b965e3c774e | grep -i 'block size'alternativ geht auch:
dumpe2fs -h