Das Dateisystem verwaltet eine Hierarchie von Verzeichnissen und Dateien sowie deren Metadaten (Name, Eigentümer, Zugriffsrechte, Zeitstempel) und bildet die Operationen Erzeugen, Schreiben, Lesen und Löschen auf das zu Grunde liegende Blockgerät ab.
Unix ordnet Dateisysteme in einer globalen Baumstruktur an.
Eine besondere Bedeutung kommt dem Wurzeldateisystem zu,
welches beim Systemstart an den Pfad /
montiert wird.
Die Dateisystemtabelle legt fest,
welche Partition wo im Verzeichnisbaum montiert wird.
/etc/fstab# What Where Type Options Dump Pass /dev/sda1 /boot/efi vfat umask=0077 0 0 /dev/sda2 / ext4 noatime 0 0 /dev/sda3 none swap sw 0 0
/dev/… | Physischer Gerätename |
/dev/mapper/Name | Virtueller Gerätename |
LABEL=Name | Etikett in den Metadaten des Dateisystems |
UUID=Uuid | Identifikator des GPT-Eintrags |
PARTLABEL=Name | Etikett im GPT-Eintrag |
vfat
,ext4
oderbtrfs
für lokale Dateisysteme undnfs
,cifs
oderceph
für verteilte Dateisystemenoatime
setzt keine Zugriffszeit und Verbessert damit die Performancenofail
setzt den Startvorgang auch bei Fehlern fortnoauto
ignoriert das Dateisystem für das Ziel local-fs.target
subvol
montiert ein Btrfs-Subvolumenuser
erlaubt unprivilegierten Benutzern, das Dateisystem zur montierensoft
setzt Timout und verhindert, dass Programme einfrierenusername=
setzt Benutzername für verteiltes Dateisystempassword=
setzt Passwort für verteiltes Dateisystemdump
(obsolet, immer 0)
fsck
:
Grundsätzlich lassen sich die gespeicherten Dateien zwischen Benutzer- und Anwendungsdaten trennen und ob es sich im statische (nur lesbare) oder veränderliche (schreibbare) Daten handelt. Siehe auch hier(7).
Pfad | Typ | Beschreibung | |
---|---|---|---|
boot | Bootloader | ||
dev | devfs | Gerätedateien | |
etc | Konfigurationsdateien | ||
home | Benutzerverzeichnisse | ||
media | Einhängepunkt für mobile Datenträger | ||
mnt | Einhängepunkt für temporäre Dateisysteme | ||
opt | Reserviert für Programme von Drittanbietern | ||
proc | procfs | Prozessinformationen | |
root | Benutzerverzeichnis des Administrators | ||
run | tmpfs | Volatile Daten (PID-Dateien, Sockets) | |
srv | Reserviert für selbst administrierte Daten | ||
sys | sysfs | Kernelstrukturen | |
tmp | tmpfs | Transiente Daten | |
usr | Statische Daten des Betriebssystems | ||
var | Persistente Daten (Protokolle, Druckjobs) |
Durch das Überlagern mehrerer Verzeichnisse lassen sich eine oder mehrere nur lesbare Schichten und eine schreibare Schicht zu einer Gesamtansicht vereinigen. Container nutzen diese Technik, um ein veränderbares Dateisystem auf einer unveränderlichen Basis zu simulieren.
mount -t overlay -o lowerdir=Path,upperdir=Path,workdir=Path Target
lowerdir
upperdir
workdir
target
Linux kann einzelne Verzeichnisse mit Hilfe von
fscrypt
verschlüsseln. Allerdgins muss man
die Option beim Anlegen des Dateisystems oder nachträglich
per tune2fs
aktivieren.
Das gleichnamige Hilfsprogramm legt globale Einstellungen in
/etc/fscrypt.conf
und gerätespezifische
Schlüssel unter /.fscrypt
ab.
apt install fscrypt libpam-fscrypt tune2fs -O encrypt /dev/sda2 fscrypt setup fscrypt setup /
Sobald das Dateisystem vorbereitet ist, kann jeder Benutzer verschlüsselte Verzeichnisse anlegen. Eine nachträgliche Verschlüsselung ist nicht vorgesehen.
mkdir ~/private fscrypt encrypt ~/private fscrypt unlock ~/private fscrypt lock ~/private
Um ein Benutzerverzeichnis vollständig zu verschlüsseln,
muss man die Daten umkopieren.
Das Modul pam_fscrypt.so
entsperrt das Verzeichnis
bei der Anmeldung, sperrt es wieder beim Abmelden und berücksichtigt
auch Änderungen des Passworts.
mkdir /home/tmp chown User /home/tmp fscrypt encrypt /home/tmp --user User cp -aT /home/User /home/tmp rm -r /home/User mv /home/tmp /home/User
Btrfs gilt noch als
experimentell und sollte daher nicht für produktive Zwecke eingesetzt
werden. Dafür vereint es mit Subvolumen, Momentaufnahmen, Kompression und
RAID
die Fähigkeiten von mdadm
und lvm2
.
Objekt | Kommando | Parameter | Beschreibung |
---|---|---|---|
help | Command | Hilfe zu einem Kommando ausgeben | |
version | Command | Hilfe zu einem Kommando ausgeben | |
Subvolumen | |||
subvolume | list | Path | Subvolumen innerhalb eines Dateisystems auflisten |
create | Path | Neues Subvolumen anlegen | |
delete | Path … | Subvolumen löschen | |
snapshot | Source Dest | Momentaufnahme eines Subvolumens erstellen | |
get-default | Path | Standardvolumen eines Dateisystems anzeigen | |
set-default | Id Path | Standardvolumen ändern | |
find-new | Path Id | Geänderten Dateien ab einer Generation auflisten | |
show | Path | Metainformationen zu einem Subvolumen ausgeben | |
sync | Path [Id …] | Löschvorgang abwarten | |
send | Path … | Subvolumen auf die Standardausgabe serialisieren | |
receive | Path | Subvolumen aus einer Serialisierung anlegen | |
Wartung | |||
filesystem | df | Path | Informiert über den Speicherverbrauch |
show | [Path|Uuid|Device|Label] | Gibt Metainformationen zu einem Dateisystem aus | |
sync | Path | Erzwingt das Schreiben auf Festplatte | |
defragment | File|Dir … | Ordnet Blöcke fortlaufend an | |
resize | [DevId:]Size Path | Ändert die Größe des Dateisystems | |
label | [Device|Path] [Label] | Zeigt an oder ändert den Namen eines Dateisystems | |
scrub | start | Path|Device | Verifiziert Prüfsummen aller Dateien |
cancel | Path|Device | Bricht die Prüfung ab | |
resume | Path|Device | Setzt eine abgebrochene Prüfung fort | |
status | Path|Device | Informiert über Fortschritt der Prüfung | |
check | Device | Prüft und repariert ein ausgehängtes Dateisystem | |
rescue | chunk-recover | Device | Repariert defekte Blöcke |
super-recover | Device | Repariert defekten Superblock | |
restore | Device Path | Restauriert Dateien in ein anderes Verzeichnis | |
Blockgerät | |||
device | add | Device … Path | Fügt ein Blockgerät in einen Verbund ein |
delete | Device … Path | Entfernt ein Blockgerät aus einem Verbund | |
scan | Device … | Sucht Btrfs-Dateisysteme auf Blockgeräten | |
ready | Device | Prüft, ob ein Blockgerät bereit zum montieren ist | |
stats | Path|Device | Gibt Fehlerstatistiken aus | |
replace | start | Device Target Path | Repliziert Daten auf ein anderes Blockgerät |
cancel | Path | Bricht die Replizierung ab | |
status | Path | Informiert über den Fortschritt der Replizierung | |
balance | start | Path | Verteilt Blöcke gleichmäßig auf Blockgeräte |
cancel | Path | Bricht die Umverteilung ab | |
pause | Path | Pausiert eine laufende Umverteilung | |
resume | Path | Setzt eine pausierte Umverteilung fort | |
status | Path | Informiert über den Fortschritt der Umverteilung | |
Speicherplatz | |||
quota | enable | Path | Aktiviert die Verwaltung von Speicherkontingenten |
disable | Path | Deaktiviert Speicherkontingente | |
rescan | Path | Liest Metadaten neu ein | |
qgroup | assign | Source Dest Path | Weist eine Untergruppe zu |
remove | Source Dest Path | Entfernt eine Untergruppe | |
create | Qgroupid Path | Erzeugt eine Gruppe | |
destroy | Qgroupid Path | Löscht eine Gruppe | |
show | Path | Gibt alle Gruppen aus | |
limit | Size [Qgroupid] Path | Legt Größe einer Gruppe fest |
k | Kilobyte |
m | Megabyte |
g | Gigabyte |
max | Maximal |
Jahr | Anbieter | Name | Max. | Größe | Änderbar | Moment- aufnahme | Verschlüs- selung | Dedupli- kation | Verbund |
1993 | Microsoft | NTFS | 264 | 16 Exa | ☑ | ☐ | ☑ | ☑ | ☑ |
1994 | SGI | XFS | 263 | 8 Exa | ☐ wachsen | ☐ | ☐ | ☐ | ☐ |
1996 | Microsoft | FAT32 | 243 | 8 Tera | ☐ | ☐ | ☐ | ☐ | ☐ |
2001 | Sun | ZFS | 278 | 256 Zetta | ☑ | ☑ | ☑ | ☑ | ☑ |
2006 | Linux | Ext4 | 260 | 1 Exa | ☑ | ☐ | ☑ | ☐ | ☐ |
2007 | Oracle | Btrfs | 264 | 16 Exa | ☑ | ☑ | ☐ | ☑ | ☑ |
2016 | Apple | APFS | ? | ? | ☑ | ☑ | ☑ | ☑ | ☑ |