Festplatte in Linux einbinden: lsblk, Partitionierung, mkfs, mount und fstab
Eine Festplatte in Linux zu mounten heißt, das Dateisystem einer Partition an ein Verzeichnis im Verzeichnisbaum anzuhängen, zum Beispiel /data. Die neue Platte finden Sie mit lsblk, partitionieren mit fdisk oder parted, formatieren mit mkfs.ext4 und mounten mit mount /dev/sdb1 /data. Damit die Partition nach einem Neustart wieder eingebunden wird, tragen Sie sie mit ihrer UUID in /etc/fstab ein und prüfen den Eintrag mit mount -a.
Unter Linux gibt es keine Laufwerksbuchstaben: Alle Speichergeräte werden in einen einzigen Verzeichnisbaum eingehängt, der bei / beginnt. Eine Festplatte zu mounten bedeutet, das Dateisystem einer Partition an ein leeres Verzeichnis zu hängen, den sogenannten Einhängepunkt. Der Weg für eine neue Platte ist immer derselbe: Gerät finden (lsblk), partitionieren (fdisk oder parted), Dateisystem anlegen (mkfs), einhängen (mount) und dauerhaft in /etc/fstab eintragen. Dazu zeigen wir, wie Sie mit df und du herausfinden, wohin der Speicherplatz verschwunden ist.
Wie Festplatten und Partitionen unter Linux aufgebaut sind
Der Kernel stellt jede Festplatte als Gerätedatei in /dev dar. Der Name hängt von der Anschlussart ab:
| Name | Was es ist | Partitionen |
|---|---|---|
/dev/sda, /dev/sdb | SATA-/SAS-/USB-Festplatten, viele virtuelle Platten | /dev/sda1, /dev/sda2 |
/dev/vda | virtio-Platten in KVM-VMs | /dev/vda1 |
/dev/nvme0n1 | NVMe-SSD | /dev/nvme0n1p1 |
/dev/mapper/... | logische LVM-Volumes, verschlüsselte Volumes | — |
Eine Festplatte wird in Partitionen aufgeteilt, auf jeder Partition legen Sie ein Dateisystem an (ext4, xfs, btrfs) und hängen dieses dann in ein Verzeichnis ein. Solange die Partition nicht eingehängt ist, sind ihre Dateien nicht erreichbar, auch wenn die Platte physisch angeschlossen ist.
Festplatten anzeigen: lsblk und blkid
Der erste Befehl bei der Arbeit mit Festplatten ist lsblk. Er zeigt die Gerätestruktur, die Größen und die Einhängepunkte:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part /
sdb 8:16 0 100G 0 disk
Hier sehen Sie, dass sdb eine neue Platte mit 100 GB ist, ohne Partitionen und ohne Einhängepunkt. Nützliche Varianten:
lsblk -f— Dateisystemtyp, Bezeichnung und UUID jeder Partition.lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL— nur die gewünschten Spalten.sudo blkid— UUID und Dateisystemtyp aller Partitionen.sudo fdisk -l— Partitionstabellen aller Platten mit Sektoren.
Wurde die Platte im laufenden Betrieb an eine virtuelle Maschine angeschlossen und lsblk zeigt sie nicht, bitten Sie den Kernel, den Bus neu abzusuchen: echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan.
Partitionierung: fdisk und parted
Prüfen Sie vor dem Partitionieren noch einmal das richtige Gerät: Das Schreiben einer Partitionstabelle auf die Systemplatte löscht alle Daten. Orientieren Sie sich an der Größe und daran, dass das Gerät keinen Einhängepunkt hat.
GPT oder MBR
Für neue Platten nehmen Sie GPT: Die Tabelle unterstützt Platten größer als 2 TB und bis zu 128 Partitionen. MBR (dos) brauchen Sie nur für alte Systeme mit BIOS-Start, wenn der Bootloader es verlangt.
Partitionieren mit fdisk
Das moderne fdisk beherrscht sowohl GPT als auch MBR. Gearbeitet wird interaktiv:
$ sudo fdisk /dev/sdb
Command (m for help): g # leere GPT-Tabelle anlegen
Command (m for help): n # neue Partition
Partition number (1-128, default 1): Enter
First sector: Enter
Last sector, +/-sectors or +/-size{K,M,G,T,P}: Enter # ganze Platte
Command (m for help): w # Änderungen schreiben und beenden
Solange Sie w nicht eingeben, wird nichts auf die Platte geschrieben. Mit q beenden Sie das Programm ohne Änderungen.
Partitionieren mit parted in einer Zeile
In Skripten ist parted praktischer, weil es ohne Dialog läuft:
$ sudo parted -s /dev/sdb mklabel gpt
$ sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
Die Grenzen in Prozent sorgen für eine korrekte Ausrichtung der Partition. Erscheint die neue Partition nicht, führen Sie sudo partprobe /dev/sdb aus, damit der Kernel die Tabelle neu einliest.
Dateisystem anlegen: mkfs
Eine Partition ist nur ein Bereich von Blöcken. Um Dateien zu speichern, brauchen Sie darauf ein Dateisystem:
$ sudo mkfs.ext4 -L data /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 26214144 4k blocks and 6553600 inodes
...
Writing superblocks and filesystem accounting information: done
Mit -L vergeben Sie eine Bezeichnung, über die Sie die Partition später leicht wiederfinden. Welches Dateisystem passt:
| Dateisystem | Befehl | Wann es passt |
|---|---|---|
| ext4 | mkfs.ext4 | universelle Standardwahl, lässt sich verkleinern |
| XFS | mkfs.xfs | große Dateien und Volumes, Standard bei RHEL; lässt sich nur vergrößern |
| Btrfs | mkfs.btrfs | Snapshots, Komprimierung, Subvolumes |
| vfat/exFAT | mkfs.vfat, mkfs.exfat | USB-Sticks für den Austausch mit Windows und macOS |
mkfs löscht alles, was auf der Partition war. Bei einer leeren Partition fragt der Befehl nicht nach, deshalb prüfen Sie den Gerätenamen unbedingt noch einmal.
Festplatte mit mount einhängen
Legen Sie ein Verzeichnis an, den Einhängepunkt, und hängen Sie die Partition dort ein:
$ sudo mkdir -p /data
$ sudo mount /dev/sdb1 /data
$ df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 98G 24K 93G 1% /data
Den Dateisystemtyp erkennt mount selbst, Sie können ihn aber auch angeben: mount -t xfs. Lagen im Verzeichnis /data schon Dateien, werden sie beim Einhängen nicht gelöscht. Sie sind nur verdeckt, solange das neue Dateisystem darüber liegt, und erscheinen wieder, sobald Sie es aushängen.
Mount-Optionen
Optionen übergeben Sie mit -o, getrennt durch Kommas:
ro/rw— nur Lesen oder Lesen und Schreiben.noatime— Zugriffszeit bei jedem Lesen nicht aktualisieren, dadurch weniger unnötige Schreibvorgänge.noexec— das Starten von Programmen von dieser Partition verbieten (sinnvoll für/tmpund Download-Verzeichnisse).nosuid,nodev— SUID-Bits und Gerätedateien ignorieren.remount— Optionen ändern, ohne auszuhängen:sudo mount -o remount,ro /data.
Welche Dateisysteme mit welchen Optionen eingehängt sind, zeigt findmnt: findmnt /data oder findmnt -t ext4.
Rechte auf der eingehängten Platte
Das Wurzelverzeichnis eines neuen ext4-Dateisystems gehört root, deshalb kann ein normaler Benutzer dort nicht schreiben. Übergeben Sie das Verzeichnis nach dem Einhängen dem richtigen Benutzer: sudo chown alice:alice /data. Bei vfat und exFAT gibt es keine Unix-Rechte; Besitzer legen Sie beim Einhängen mit den Optionen uid=, gid= und umask= fest.
Festplatte aushängen: umount und die Meldung target is busy
Zum Aushängen verwenden Sie umount (ohne das n) mit dem Gerät oder dem Verzeichnis:
$ sudo umount /data
umount: /data: target is busy.
Die Meldung bedeutet, dass ein Prozess Dateien auf diesem Dateisystem offen hält oder sein aktuelles Verzeichnis darin hat. Oft ist es Ihr eigenes Terminal nach cd /data. Bei der Suche helfen:
$ sudo lsof +f -- /data
$ sudo fuser -vm /data
Beenden Sie den Prozess oder verlassen Sie das Verzeichnis und versuchen Sie es erneut. Als letzte Lösung dient umount -l (lazy): Das Dateisystem wird sofort aus dem Baum entfernt und endgültig freigegeben, sobald die Prozesse ihre Dateien schließen.
Automatisches Einbinden beim Start: /etc/fstab
Der Befehl mount gilt nur bis zum nächsten Neustart. Damit die Platte automatisch eingebunden wird, tragen Sie eine Zeile in /etc/fstab ein. Geben Sie die Partition über die UUID an und nicht über den Namen /dev/sdb1: Namen können sich beim Hinzufügen von Platten verschieben, die UUID dagegen bleibt gleich.
$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="data" UUID="3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77" TYPE="ext4" PARTUUID="..."
Eine Zeile besteht aus sechs Feldern:
# <Gerät> <Ziel> <Typ> <Optionen> <dump> <fsck>
UUID=3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77 /data ext4 defaults,noatime 0 2
| Feld | Bedeutung |
|---|---|
| Gerät | UUID=..., LABEL=... oder ein Pfad |
| Ziel | Verzeichnis für die Einhängung (muss existieren) |
| Typ | ext4, xfs, swap, nfs usw. |
| Optionen | defaults plus die gewünschten, etwa noatime, nofail |
| dump | fast immer 0 |
| fsck | Prüfreihenfolge: 1 für die Wurzel, 2 für die übrigen, 0 — nicht prüfen |
Die fstab unbedingt vor dem Neustart prüfen
Ein Fehler in /etc/fstab kann den Server beim Start in den Notfallmodus schicken. Auf einer Cloud-Maschine ohne Konsole ist das besonders ärgerlich. Führen Sie direkt nach der Änderung aus:
$ sudo findmnt --verify
$ sudo systemctl daemon-reload
$ sudo mount -a
$ findmnt /data
mount -a hängt alles aus der fstab ein, was noch nicht eingehängt ist, und zeigt Fehler sofort an. Bei Wechsel- und Netzwerkdatenträgern ergänzen Sie die Option nofail: Fehlt das Gerät, startet das System trotzdem weiter. In systemd wird jede Zeile der fstab zu einer Unit .mount, zum Beispiel data.mount. Ihren Status sehen Sie mit systemctl status data.mount.
Freien Speicher prüfen: df
df zeigt, wie voll die eingehängten Dateisysteme sind:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 39G 37G 1.1G 98% /
/dev/sda1 974M 180M 727M 20% /boot
/dev/sdb1 98G 24K 93G 1% /data
-h— Größen in gut lesbaren Einheiten.-T— zusätzliche Spalte mit dem Dateisystemtyp.-i— Inodes anzeigen: Eine Platte kann „voll“ sein, obwohl noch Gigabytes frei sind, wenn sehr viele kleine Dateien angelegt wurden.-x tmpfs -x devtmpfs— virtuelle Dateisysteme ausblenden.
Warum Size nicht gleich Used + Avail ist: ext4 reserviert etwa 5 % des Platzes für root, damit das System auch bei vollem Datenträger arbeiten kann. Auf einer Datenpartition lässt sich die Reserve verkleinern: sudo tune2fs -m 1 /dev/sdb1.
Wohin der Speicherplatz verschwunden ist: du
df sagt, dass die Platte voll ist, aber nicht, womit. Dafür gibt es du, das die Größe der Dateien in Verzeichnissen addiert:
$ sudo du -sh /var/log
4.2G /var/log
$ sudo du -xh --max-depth=1 / 2>/dev/null | sort -rh | head
37G /
21G /var
9.8G /home
3.1G /usr
-s— nur die Summe pro Verzeichnis,-a— jede Datei einzeln.--max-depth=1(oder-d 1) — eine Verschachtelungsebene; steigen Sie in das größte Verzeichnis hinab.-x— nicht auf andere Dateisysteme wechseln, sonst zählen/data,/procund Netzlaufwerke mit.sort -rh— nach lesbaren Größen sortieren, das größte Verzeichnis steht oben.
Einzelne große Dateien finden Sie bequemer mit find: sudo find / -xdev -type f -size +1G -exec ls -lh {} +.
df zeigt eine volle Platte, du nicht
Ein klassischer Fall: Sie haben ein riesiges Logfile gelöscht, aber der Speicherplatz kommt nicht zurück. Die Datei ist aus dem Verzeichnis entfernt, doch ein Prozess (zum Beispiel der Webserver) hält sie noch offen, und die Blöcke werden nicht freigegeben. Solche Dateien finden Sie so:
$ sudo lsof +L1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
nginx 812 www 5w REG 8,2 8589934592 0 13054 /var/log/nginx/access.log (deleted)
Starten Sie den Prozess neu oder bitten Sie ihn, die Logs neu zu öffnen, dann kommt der Platz zurück. Für die Zukunft leeren Sie ein aktives Log, ohne es zu löschen: sudo truncate -s 0 /var/log/nginx/access.log. Eine zweite Ursache für Abweichungen sind Dateien unter einem Einhängepunkt: Sie belegen Platz auf der Wurzelpartition, aber du sieht sie nicht, solange darüber ein Dateisystem eingehängt ist.
Typische Fehler und ihre Behebung
| Meldung | Ursache | Was tun |
|---|---|---|
mount point /data does not exist | das Verzeichnis fehlt | sudo mkdir -p /data |
wrong fs type, bad option, bad superblock | auf der Partition gibt es kein Dateisystem, der Typ stimmt nicht oder der Treiber fehlt | lsblk -f prüfen; für exFAT/NTFS die Pakete exfatprogs bzw. ntfs-3g installieren |
only root can do that | Einhängen ohne sudo | mit sudo starten oder die Option user in der fstab setzen |
target is busy | das Verzeichnis wird von einem Prozess belegt | lsof/fuser, das Verzeichnis verlassen |
| Start im Notfallmodus (emergency mode) | Fehler in der fstab oder fehlende Platte | als root anmelden, fstab korrigieren, nofail ergänzen |
Schritt für Schritt: neue Platte für Daten
lsblk— die neue Platte finden, zum Beispiel/dev/sdb.sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%— partitionieren.sudo mkfs.ext4 -L data /dev/sdb1— Dateisystem anlegen.sudo mkdir -p /data— Einhängepunkt anlegen.sudo blkid /dev/sdb1— UUID ermitteln und die Zeile in/etc/fstabergänzen.sudo mount -a && df -h /data— einhängen und prüfen.sudo chown benutzer: /data— Rechte vergeben.
Muss der Speicher ohne Dienstunterbrechung wachsen oder sollen mehrere Platten zusammengefasst werden, nutzen Sie statt einer normalen Partition LVM: Die Platte wird zum physischen Volume, daraus werden logische Volumes geschnitten, die sich mit lvextend -r vergrößern lassen.
Fazit
Eine Festplatte in Linux einzubinden folgt der Kette lsblk → Partitionierung → mkfs → mount → /etc/fstab. Geben Sie Partitionen über die UUID an, prüfen Sie die fstab mit mount -a vor dem Neustart und verwenden Sie nofail für optionale Platten. Wird der Platz knapp, zeigt df -h, welche Partition voll ist, und du -xh --max-depth=1 | sort -rh sowie lsof +L1 verraten, was sie belegt. Festplatten, Partitionen, Swap, LVM und RAID behandeln wir im Linux-Kurs praxisnah.
Häufige Fragen
Wie binde ich einen USB-Stick in Linux ein?
Finden Sie ihn mit lsblk (meist /dev/sdb1), legen Sie ein Verzeichnis an und führen Sie sudo mount /dev/sdb1 /mnt/usb aus. In grafischen Oberflächen werden Sticks meist automatisch unter /media/benutzername oder /run/media eingehängt.
Wie binde ich ein ISO-Image ein?
Mit sudo mount -o loop,ro image.iso /mnt/iso: Die Option loop hängt die Datei als Blockgerät ein. Ausgehängt wird das Image mit dem üblichen umount.
Wie binde ich einen Netzwerkordner über die fstab ein?
Für NFS sieht die Zeile so aus: server:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0, für SMB: //server/freigabe /mnt/smb cifs credentials=/root/.smbcred,_netdev,nofail 0 0. Die Option _netdev wartet, bis das Netzwerk aktiv ist.
Worin unterscheidet sich die UUID von der PARTUUID?
Die UUID gehört dem Dateisystem und ändert sich bei einem erneuten mkfs, die PARTUUID gehört der Partition in der GPT-Tabelle und bleibt bei einer Neuformatierung erhalten. In der fstab verwendet man meist die UUID.
Wie prüfe ich ein Dateisystem auf Fehler?
Hängen Sie die Partition aus und starten Sie sudo fsck -f /dev/sdb1 für ext4 oder sudo xfs_repair /dev/sdb1 für XFS. Ein eingehängtes Dateisystem mit Schreibzugriff zu prüfen, kann Daten beschädigen.
Dieses Thema wird im Kurs „Linux: с нуля до уверенного администрирования“ ausführlich mit Praxis behandelt.
Zum Kurs