← Zurück

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