Anleitung

Festplatte in Linux einbinden: lsblk, Partitionierung, mkfs, mount und fstab

Aktualisiert: · Skillaria.Top

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:

NameWas es istPartitionen
/dev/sda, /dev/sdbSATA-/SAS-/USB-Festplatten, viele virtuelle Platten/dev/sda1, /dev/sda2
/dev/vdavirtio-Platten in KVM-VMs/dev/vda1
/dev/nvme0n1NVMe-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:

DateisystemBefehlWann es passt
ext4mkfs.ext4universelle Standardwahl, lässt sich verkleinern
XFSmkfs.xfsgroße Dateien und Volumes, Standard bei RHEL; lässt sich nur vergrößern
Btrfsmkfs.btrfsSnapshots, Komprimierung, Subvolumes
vfat/exFATmkfs.vfat, mkfs.exfatUSB-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 /tmp und 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
FeldBedeutung
GerätUUID=..., LABEL=... oder ein Pfad
ZielVerzeichnis für die Einhängung (muss existieren)
Typext4, xfs, swap, nfs usw.
Optionendefaults plus die gewünschten, etwa noatime, nofail
dumpfast immer 0
fsckPrü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, /proc und 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

MeldungUrsacheWas tun
mount point /data does not existdas Verzeichnis fehltsudo mkdir -p /data
wrong fs type, bad option, bad superblockauf der Partition gibt es kein Dateisystem, der Typ stimmt nicht oder der Treiber fehltlsblk -f prüfen; für exFAT/NTFS die Pakete exfatprogs bzw. ntfs-3g installieren
only root can do thatEinhängen ohne sudomit sudo starten oder die Option user in der fstab setzen
target is busydas Verzeichnis wird von einem Prozess belegtlsof/fuser, das Verzeichnis verlassen
Start im Notfallmodus (emergency mode)Fehler in der fstab oder fehlende Platteals root anmelden, fstab korrigieren, nofail ergänzen

Schritt für Schritt: neue Platte für Daten

  1. lsblk — die neue Platte finden, zum Beispiel /dev/sdb.
  2. sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100% — partitionieren.
  3. sudo mkfs.ext4 -L data /dev/sdb1 — Dateisystem anlegen.
  4. sudo mkdir -p /data — Einhängepunkt anlegen.
  5. sudo blkid /dev/sdb1 — UUID ermitteln und die Zeile in /etc/fstab ergänzen.
  6. sudo mount -a && df -h /data — einhängen und prüfen.
  7. 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.

Das Thema im Video lernen

Dieses Thema wird im Kurs „Linux: с нуля до уверенного администрирования“ ausführlich mit Praxis behandelt.

Zum Kurs