Ein Dateisystem verwaltet baumartig organisierte Verzeichnisse und Dateien sowie deren Metadaten (Eigentümer, Zugriffsrechte und Zeitstempel) innerhalb einer Partition oder eines anderen Blockgeräts. Die Dateisystemtabelle legt fest, welche Partition wo im Verzeichnisbaum montiert wird. Das Beispiel für die oben dargestellte Konfiguration sieht so aus:
/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
:
Systemd generiert aus diesen Einträgen Mount-Units.
Unix organisiert Dateisysteme in einer globalen Baumstruktur.
Eine besondere Bedeutung kommt dem Wurzeldateisystem zu,
welches beim Systemstart an den Pfad /
montiert wird.
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 | |
---|---|---|---|
Systemdaten | |||
/usr | Statische Daten des Betriebssystems | ||
/var | Persistente Daten (Protokolle, Druckjobs) | ||
/etc | Konfigurationsdateien | ||
/run | tmpfs | Volatile Daten (PID-Dateien, Sockets) | |
/tmp | tmpfs | Transiente Daten | |
Benutzerdaten | |||
/home | Benutzerverzeichnisse der Anwender | ||
/root | Benutzerverzeichnis des Administrators | ||
/srv | Reserviert für selbst administrierte Daten | ||
/opt | Reserviert für Programme von Drittanbietern | ||
Einhängepunkte | |||
/boot/efi | vfat | Kernel und ESP | |
/media | Mobile Datenträger | ||
/mnt | Temporäre Dateisysteme | ||
/dev | devfs | Gerätedateien | |
/proc | procfs | Prozesse | |
/sys | sysfs | Kernelstrukturen |
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 |
Es ist möglich, getrennte Subvolumen für das Wurzeldateisystems und die Benutzerverzeichnisse anzulegen.
btrfs subvolume snapshot / /@root btrfs subvolume create /@home mount -o subvol=@root /dev/mapper/sda2_crypt /mnt mount -o bind /dev /mnt/dev mount -o bind /sys /mnt/sys mount -o bind /proc /mnt/proc cp /boot/vmlinuz* /mnt/boot cp /boot/initrd* /mnt/boot chroot /mnt
In dieser Umgebung passen wir die Dateisystemtabelle an…
/etc/fstab# What Where Type Options Dump Pass /dev/sda1 /boot/efi vfat umask=0077 0 0 /dev/sda2 / btrfs noatime,subvol=@root 0 0 /dev/sda2 /hone btrfs noatime,subvol=@home 0 0 /dev/sda3 none swap sw 0 0
…und teilen dem Bootloader die neuen Optionen mit.
mkdir /boot/efi mount /boot/efi mount -t efivarfs efivarfs /sys/firmware/efi/efivars /etc/kernel/postinst.d/zz-update-secureboot exit
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 overlay -o lowerdir=Path,upperdir=Path,workdir=Path Target
lowerdir
upperdir
workdir
target