Zum Inhalt springen

Disk und I/O

Terminal-Fenster
# Alle eingehängten Dateisysteme
df -h
# Nur echte Dateisysteme (keine tmpfs usw.)
df -h -x tmpfs -x devtmpfs
# Inodes anzeigen (wenn viele kleine Dateien das Problem sind)
df -i

Beispiel:

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 23G 25G 48% /
/dev/sda2 200G 180G 20G 90% /var
tmpfs 7.8G 0 7.8G 0% /dev/shm

Bei Use% über 90% wird es eng. Über 95% können Dienste nicht mehr schreiben.

Terminal-Fenster
# Größe eines Verzeichnisses
du -sh /var/log/
# Top 10 größte Verzeichnisse unter /var
du -h /var/* 2>/dev/null | sort -rh | head -10
# Rekursive Übersicht, eine Ebene
du -h --max-depth=1 /var/
# Größte Dateien finden
find /var -type f -printf '%s %p\n' 2>/dev/null | sort -rn | head -20

iotop zeigt, welcher Prozess gerade die Festplatte belastet:

Terminal-Fenster
sudo dnf install iotop # RHEL
sudo apt install iotop # Debian
sudo iotop
sudo iotop -o # nur aktive Prozesse anzeigen

Spalten: DISK READ, DISK WRITE — welcher Prozess schreibt/liest wie viel.

iostat aus dem Paket sysstat liefert detaillierte I/O-Statistiken pro Gerät:

Terminal-Fenster
sudo dnf install sysstat
# Einmaliger Snapshot
iostat -h
# Alle 2 Sekunden
iostat -h 2
# Erweiterter Modus mit mehr Details
iostat -xh 2

Wichtige Spalten in iostat -x:

SpalteBedeutung
r/sLeseanfragen pro Sekunde
w/sSchreibanfragen pro Sekunde
rkB/sGelesene kB pro Sekunde
wkB/sGeschriebene kB pro Sekunde
awaitDurchschnittliche Wartezeit (ms)
%utilAuslastung des Geräts — nahe 100% = Engpass

lsof (List Open Files) zeigt, welche Prozesse welche Dateien geöffnet haben:

Terminal-Fenster
# Alle offenen Dateien (viel Output)
sudo lsof | head -20
# Offene Dateien eines Prozesses
sudo lsof -p 1234
# Welcher Prozess hält eine Datei offen?
sudo lsof /var/log/syslog
# Offene Netzwerkverbindungen (wie ss/netstat)
sudo lsof -i
# Dateien eines Benutzers
sudo lsof -u apache

Besonders nützlich: Wenn ein Dateisystem nicht auszuhängen ist, weil “device is busy”:

Terminal-Fenster
sudo lsof /mount/punkt

zeigt, welcher Prozess das Verzeichnis noch geöffnet hat.

Terminal-Fenster
sudo dnf install smartmontools
# Status einer Festplatte
sudo smartctl -a /dev/sda
# Kurztest
sudo smartctl -t short /dev/sda
sudo smartctl -a /dev/sda # Ergebnis nach ~2 min
# Alle Festplatten überprüfen
for disk in /dev/sd?; do
echo "=== $disk ==="
sudo smartctl -H "$disk"
done

SMART overall-health self-assessment test result: PASSED — alles in Ordnung. FAILED! — Festplatte ersetzen, sofort Backup erstellen.