====== 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 [[linux:ZFS]] hat viele Anhänger. Eine genaue Übersicht findet sich bei [[wp>Comparison_of_file_systems|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 ((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'')) ^ 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 ((8 KiB block size ist nur auf Architekturen verfügbar die 8 KiB pages unterstützen, wie Alpha, jedoch nicht auf Intel x86.)) | 2 TiB | 32 TiB |
* **ext4** ist der Nachfolger von ext3 und seit [[linux: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
((extents: verwendet "extents" statt "bitmap mapping" für Dateien; "uninit_bg" reduziert die Dateisystemcheckzeit und "dir_index" erlaubt htree für schnelleren Zugriff in Verzeichnissen mit vielen Dateien.)) 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 [[http://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.42|1.42 von e2fsprogs]] ist diese Hürde entfallen, für Online-Resizing ist aber ein [[linux:Kernel]] ab Version 3.2 erforderlich ((beides bei [[debian:Debian]] Wheezy enthalten)), offline funktioniert es immer noch nicht. **Siehe auch**: [[http://www.tecchannel.de/server/linux/402485/|ext3 und reiserfs im Detail]], [[https://events.linuxfoundation.org/images/stories/pdf/lceu11_czerner1.pdf|The Ongoing Evolution of Ext4 le system]] und [[https://events.linuxfoundation.org/images/stories/pdf/lceu11_seidel.pdf|Quo vadis Linux File Systems: An operations point of view on EXT4 and BTRFS]].
* **ReiserFS** ist in der Version 3 seit einiger Zeit im [[linux: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 [[http://www.heise.de/newsticker/meldung/79035|OpenSuse nicht mehr (ab der 10.2-Version)]]. Die Gründe lassen sich in [[http://lists.opensuse.org/opensuse-factory/2006-09/msg00542.html|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.
* **[[wpde>XFS_(Dateisystem)|XFS]]** ist ein Dateisystem das ursprünglich von SGI für deren kommerzielles Unix Irix entwickelt wurde und von SGI auf Linux portiert wurde. Es hat Journaling und arbeitet insbesondere bei sehr großen Dateien schnell. Siehe [[http://oss.sgi.com/projects/xfs/faq.html|XFS Faq]].
Wer konservativ ist, oder sich nicht entscheiden kann, wählt einfach mit einem aktuellen [[linux: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 =====
* [[http://www.enterprisestorageforum.com/technology/features/article.php/1500621|Choosing a File System or Volume Manager]]
* [[http://kris.koehntopp.de/artikel/dateisysteme/|UNIX Dateisysteme]]
* [[http://www.linuxplanet.com/linuxplanet/reports/4361/1/|Modern Distributed Filesystems For Linux: An Introduction]]
* [[http://www.hermann-uwe.de/blog/resizing-ext3-partitions-with-parted|Resizing ext3 partitions with parted]]
* [[http://freshmeat.net/articles/view/1387|Virtual Filesystem: Building A Linux Filesystem From An Ordinary File]]
* **[[http://www.heise.de/open/artikel/80823|Ab dem Kernel 2.6.19 kommen drei Dateisysteme dazu:ext4, GFS2 und eCryptfs]]**
* [[festplatten daten#Dateisystemparameter bei ext2/3 (tune2fs)]]
* [[http://www.howtoforge.com/linux_resizing_ext3_partitions|How To Resize ext3 Partitions Without Losing Data]]
* **[[http://linux-magazin.de/heft_abo/sonderheft/2006/04/beschraenktes_schreiben?special=Storage&category=13791| Journaling-Dateisysteme unter Linux]]**
===== 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:
* https://github.com/ahouston/setblocksize/wiki
* https://forum.level1techs.com/t/how-to-reformat-520-byte-drives-to-512-bytes-usually/133021
* https://forum.level1techs.com/t/netapp-ssd-520-512-fail-possible-firmware-issue-solved/176318/3
===== Linux-Dateisystemzugriff von Windows =====
* [[http://p-nand-q.com/download/rfstool.html|ReiserFS]]
* [[http://www.chrysocome.net/explore2fs|explore2fs für ext2/3]]
* [[http://uranus.it.swin.edu.au/~jn/linux/ext2ifs.htm|ext2ifs (läuft aber nicht unter XP SP2!)]]
* [[http://www.fs-driver.org/|Ext2 installable File System Driver]]