Festplatten & Partitionen
linux disks lvm partitions filesystem
Festplatten & Partitionen unter Linux
Dieses Guide erklärt die Verwaltung von Festplatten, Partitionen und Dateisystemen unter Linux.
Grundbegriffe
| Begriff | Beschreibung |
|---|---|
| Block Device | Festplatte, SSD, USB-Stick (/dev/sda, /dev/nvme0n1) |
| Partition | Logische Aufteilung einer Festplatte |
| Dateisystem | Struktur zur Datenspeicherung (ext4, xfs, btrfs) |
| Mount | Einbinden eines Dateisystems in die Verzeichnisstruktur |
| MBR | Master Boot Record (max. 2TB, 4 primäre Partitionen) |
| GPT | GUID Partition Table (>2TB, 128 Partitionen) |
Geräte-Namensschema
/dev/sda → Erste SATA/SCSI-Festplatte
/dev/sda1 → Erste Partition auf sda
/dev/sda2 → Zweite Partition auf sda
/dev/nvme0n1 → Erste NVMe-SSD
/dev/nvme0n1p1 → Erste Partition auf nvme0n1
/dev/vda → Erste virtuelle Festplatte (KVM)
Festplatten-Informationen
Alle Geräte anzeigen
# Blockgeräte mit Größe und Mountpoints
lsblk
# Detaillierter
lsblk -f # Mit Dateisystem
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID
# Alle Festplatten
fdisk -l
sudo fdisk -l
Festplatten-Details
# Partitionstabelle
sudo fdisk -l /dev/sda
# GPT-Partitionen
sudo gdisk -l /dev/sda
# SMART-Daten (Gesundheit)
sudo smartctl -a /dev/sda
sudo smartctl -H /dev/sda # Quick Health Check
# Hersteller/Modell
sudo hdparm -I /dev/sda | head -20
Speicherplatz
# Dateisystem-Auslastung
df -h
# Bestimmtes Dateisystem
df -h /home
# Inodes
df -i
# Verzeichnisgröße
du -sh /var/log
du -sh /home/*
# Top 10 größte Verzeichnisse
du -h /var | sort -rh | head -10
# Größte Dateien finden
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
Partitionen verwalten
fdisk (MBR & GPT)
# Interaktiv starten
sudo fdisk /dev/sdb
# Wichtige Befehle in fdisk:
# m - Hilfe
# p - Partitionen anzeigen
# n - Neue Partition
# d - Partition löschen
# t - Partitionstyp ändern
# w - Schreiben und beenden
# q - Beenden ohne Speichern
Neue Partition erstellen:
sudo fdisk /dev/sdb
# n → Neue Partition
# p → Primary (oder e für Extended)
# 1 → Partitionsnummer
# Enter → Erster Sektor (Standard)
# +10G → Größe (oder Enter für Rest)
# w → Schreiben
parted (GPT empfohlen)
# Interaktiv
sudo parted /dev/sdb
# Befehle:
# print - Partitionen anzeigen
# mklabel gpt - GPT-Tabelle erstellen
# mkpart primary ext4 0% 50%
# rm 1 - Partition 1 löschen
# quit
# Nicht-interaktiv
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%
gdisk (GPT)
sudo gdisk /dev/sdb
# Ähnlich wie fdisk, aber für GPT
Dateisysteme
Dateisystem erstellen (formatieren)
# ext4 (Standard für Linux)
sudo mkfs.ext4 /dev/sdb1
# Mit Label
sudo mkfs.ext4 -L "Daten" /dev/sdb1
# xfs (gut für große Dateien)
sudo mkfs.xfs /dev/sdb1
# btrfs (mit Snapshots)
sudo mkfs.btrfs /dev/sdb1
# FAT32 (USB-Sticks, Windows-kompatibel)
sudo mkfs.vfat -F 32 /dev/sdb1
# NTFS
sudo mkfs.ntfs /dev/sdb1
# exFAT (große Dateien, USB)
sudo mkfs.exfat /dev/sdb1
Dateisystem prüfen & reparieren
# ext4 (Partition muss unmounted sein!)
sudo fsck /dev/sdb1
sudo fsck -y /dev/sdb1 # Automatisch reparieren
sudo e2fsck -f /dev/sdb1 # Force check
# xfs (kann gemountet sein)
sudo xfs_repair /dev/sdb1
# btrfs
sudo btrfs check /dev/sdb1
Dateisystem-Informationen
# ext4
sudo tune2fs -l /dev/sdb1
sudo dumpe2fs /dev/sdb1 | head -50
# xfs
xfs_info /dev/sdb1
# Allgemein
blkid /dev/sdb1
lsblk -f /dev/sdb1
Mounten
Manuell mounten
# Mount-Point erstellen
sudo mkdir -p /mnt/daten
# Mounten
sudo mount /dev/sdb1 /mnt/daten
# Mit Optionen
sudo mount -o rw,noatime /dev/sdb1 /mnt/daten
# Read-only
sudo mount -o ro /dev/sdb1 /mnt/daten
# Bestimmtes Dateisystem
sudo mount -t ext4 /dev/sdb1 /mnt/daten
# ISO mounten
sudo mount -o loop image.iso /mnt/iso
# Unmounten
sudo umount /mnt/daten
sudo umount /dev/sdb1
# Lazy unmount (wenn busy)
sudo umount -l /mnt/daten
# Force unmount
sudo umount -f /mnt/daten
Gemountete Dateisysteme anzeigen
mount
findmnt
cat /proc/mounts
Automatisch mounten (/etc/fstab)
# UUID ermitteln
sudo blkid /dev/sdb1
# /etc/fstab bearbeiten
sudo nano /etc/fstab
fstab-Syntax:
# <device> <mountpoint> <type> <options> <dump> <pass>
UUID=xxx-xxx-xxx /mnt/daten ext4 defaults 0 2
/dev/sdb1 /mnt/backup ext4 defaults,noatime 0 2
Wichtige Mount-Optionen:
| Option | Beschreibung |
|---|---|
defaults |
rw, suid, dev, exec, auto, nouser, async |
noatime |
Zugriffszeit nicht aktualisieren (schneller) |
ro |
Read-only |
rw |
Read-write |
noexec |
Keine Programme ausführen |
nosuid |
SUID ignorieren |
nodev |
Keine Gerätedateien |
nofail |
Boot nicht blockieren wenn Fehler |
x-systemd.automount |
Bei Zugriff mounten |
fstab testen:
# Alles aus fstab mounten
sudo mount -a
# Prüfen ohne mounten
sudo mount -fav
LVM (Logical Volume Manager)
LVM ermöglicht flexible Partitionsgrößen.
Konzept
Physical Volumes (PV) → Volume Groups (VG) → Logical Volumes (LV)
/dev/sdb1, /dev/sdc1 → vg_data → lv_home, lv_var
LVM erstellen
# 1. Physical Volume erstellen
sudo pvcreate /dev/sdb1 /dev/sdc1
# 2. Volume Group erstellen
sudo vgcreate vg_data /dev/sdb1 /dev/sdc1
# 3. Logical Volume erstellen
sudo lvcreate -L 50G -n lv_home vg_data
sudo lvcreate -l 100%FREE -n lv_var vg_data # Rest
# 4. Dateisystem erstellen
sudo mkfs.ext4 /dev/vg_data/lv_home
# 5. Mounten
sudo mount /dev/vg_data/lv_home /home
LVM verwalten
# Anzeigen
sudo pvs # Physical Volumes
sudo vgs # Volume Groups
sudo lvs # Logical Volumes
sudo pvdisplay
sudo vgdisplay
sudo lvdisplay
# LV vergrößern
sudo lvextend -L +10G /dev/vg_data/lv_home
sudo resize2fs /dev/vg_data/lv_home # ext4
sudo xfs_growfs /dev/vg_data/lv_home # xfs
# LV verkleinern (ext4, vorsichtig!)
sudo umount /home
sudo e2fsck -f /dev/vg_data/lv_home
sudo resize2fs /dev/vg_data/lv_home 40G
sudo lvreduce -L 40G /dev/vg_data/lv_home
sudo mount /home
# VG erweitern
sudo pvcreate /dev/sdd1
sudo vgextend vg_data /dev/sdd1
RAID
Software-RAID mit mdadm
# RAID1 (Mirror) erstellen
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# RAID5 erstellen
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
# Status
cat /proc/mdstat
sudo mdadm --detail /dev/md0
# Konfiguration speichern
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
sudo update-initramfs -u
Swap
# Swap-Datei erstellen
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# In fstab eintragen
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Swap-Partition
sudo mkswap /dev/sdb2
sudo swapon /dev/sdb2
# Status
swapon --show
free -h
Praktische Beispiele
Neue Festplatte einrichten
# 1. Gerät identifizieren
lsblk
sudo fdisk -l /dev/sdb
# 2. Partitionieren (GPT)
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%
# 3. Formatieren
sudo mkfs.ext4 -L "Backup" /dev/sdb1
# 4. Mount-Point erstellen
sudo mkdir /mnt/backup
# 5. Mounten
sudo mount /dev/sdb1 /mnt/backup
# 6. fstab-Eintrag
echo "UUID=$(blkid -s UUID -o value /dev/sdb1) /mnt/backup ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
USB-Stick sicher entfernen
# Sync ausführen
sync
# Unmounten
sudo umount /media/user/stick
# Optional: Gerät auswerfen
sudo eject /dev/sdb