Skip to main content

7.13 Datenträger oder Dateisystem ist voll

7.13.1 Ziel dieser Seite

Diese Seite beschreibt die systematische Diagnose, wenn ein System, Datenträger, Volume, Dateisystem, Speicherpool, Container oder eine Anwendung keinen weiteren Speicherplatz verwenden kann.

Ziele der Diagnose:

  • den tatsächlich betroffenen Pfad bestimmen;
  • logische und physische Speicherebenen unterscheiden;
  • belegte Datenblöcke, Inodes und Quotas getrennt prüfen;
  • plötzliches und kontinuierliches Wachstum unterscheiden;
  • versteckte Speicherverbraucher erkennen;
  • eine kurzfristige Entlastung kontrolliert durchführen;
  • die eigentliche Ursache nachweisen;
  • einen erneuten Kapazitätsengpass verhindern.

Ein gemeldetes „Dateisystem voll“ bedeutet nicht zwangsläufig, dass die physische Festplatte vollständig belegt ist.


7.13.2 Sicherheitskennzeichnungen

KennzeichnungBedeutung
LESENDerfasst ausschließlich Zustände und Messwerte
LASTERZEUGENDkann CPU, Arbeitsspeicher oder Datenträger-I/O deutlich belasten
ÄNDERNDverändert Konfigurationen oder Systemzustände
LÖSCHENDentfernt Daten und kann Informationen unwiederbringlich zerstören
AUSFALLRISIKOkann Dienste, Dateisysteme oder ganze Systeme unterbrechen

Grundregeln:

  • Zuerst den exakten Zustand und den Zeitpunkt dokumentieren.
  • Keine Dateien aufgrund ihres Namens löschen.
  • Aktive Datenbanken, Container-Volumes und Anwendungsdateien nicht manuell bereinigen.
  • Protokolle vor dem Löschen auswerten und bei Bedarf sichern.
  • Snapshots nicht ohne Kenntnis ihrer Abhängigkeiten entfernen.
  • Dateisystemprüfungen nicht ungeprüft auf produktiv eingebundenen Dateisystemen ausführen.
  • Speicherpools und Thin-Provisioning-Metadaten besonders vorsichtig behandeln.
  • Vor jeder Änderung müssen Risiko, Freigabe, Rückweg und Erfolgskriterium feststehen.

7.13.3 Mögliche Fehlerklassen

FehlerklasseBeschreibungTypischer Nachweis
Datenblöcke vollnutzbare Speicherkapazität ist erschöpftdf, Get-Volume, diskutil info
Inodes erschöpftzu viele Dateien, obwohl noch Datenblöcke frei sinddf -i
Benutzer- oder Gruppenquota erreichteinzelner Benutzer oder Dienst darf nichts mehr speichernquota, FSRM, Dateisystemquota
Projekt- oder Verzeichnisquota erreichtbestimmter Pfad besitzt ein eigenes LimitXFS-Projektquota, FSRM
Anwendungsquota erreichtAnwendung begrenzt Speicher unabhängig vom DateisystemAnwendungskonfiguration und Protokolle
Snapshot-Speicher vollSnapshots oder Shadow Copies belegen den freien BereichVSS-, APFS-, Btrfs- oder ZFS-Auswertung
Thin Pool vollzugrunde liegender Thin-Provisioning-Pool besitzt keinen freien PlatzLVM-, SAN- oder Hypervisoranzeige
Thin-Pool-Metadaten vollVerwaltungsbereich des Thin Pools ist erschöpftlvs mit metadata_percent
Container-Layer vollbeschreibbare Container-Schicht oder Containerhost ist vollDocker- oder Runtime-Auswertung
Kubernetes-Ephemeralspeicher vollNode oder Pod überschreitet Ephemeral-Storage-GrenzenDiskPressure, Eviction-Ereignisse
Dateisystem schreibgeschütztDateisystem wurde wegen Fehlern nur lesbar eingebundenMountoptionen, Kernel- und Systemprotokolle
Physischer DatenträgerfehlerSchreibvorgänge scheitern durch Hardware- oder I/O-FehlerSMART, Ereignisse, Kernelmeldungen
Gelöschte Datei noch geöffnetVerzeichniseintrag ist gelöscht, Prozess hält Datei weiterhin geöffnetlsof +L1
Reservierter Speicherfreier Bereich steht normalen Benutzern nicht zur VerfügungDateisystem- und Reservierungsdaten
Versteckte Daten unter MountpointDateien liegen unterhalb eines später darüber eingebundenen DateisystemsMountstruktur und Wartungsprüfung
Kapazität des Backends volllokaler Client zeigt nur einen vorgelagerten NAS-, SAN- oder CloudspeicherBackend-, Pool- und Quotaauswertung

7.13.4 Typische Symptome und Fehlermeldungen

Mögliche Symptome:

  • Dateien können nicht mehr gespeichert werden.
  • Anwendungen starten nicht oder stürzen ab.
  • Datenbanken wechseln in einen Fehlerzustand.
  • Updates und Paketinstallationen schlagen fehl.
  • Benutzerprofile können nicht geladen werden.
  • Protokolle werden nicht mehr geschrieben.
  • Backupjobs brechen ab.
  • Temporäre Dateien können nicht angelegt werden.
  • Container starten wiederholt neu.
  • Kubernetes-Pods werden wegen DiskPressure beendet.
  • Ein Dateisystem wird plötzlich schreibgeschützt.
  • Ein Volume wird mit 100 % Belegung angezeigt.
  • Ein Benutzer kann nicht schreiben, andere Benutzer jedoch schon.
  • Eine Freigabe meldet „voll“, obwohl der Server noch freien Gesamtspeicher besitzt.

Typische Meldungen:

No space left on device
ENOSPC
Disk full
There is not enough space on the disk
Not enough disk space
Quota exceeded
EDQUOT
Read-only file system
EROFS
I/O error
DiskPressure
Evicted
ephemeral-storage
Thin pool is full
Metadata space exhausted

No space left on device kann sowohl auf erschöpfte Datenblöcke als auch auf erschöpfte Inodes oder interne Dateisystemreserven hinweisen.

Quota exceeded betrifft dagegen gewöhnlich ein festgelegtes Speicherlimit und nicht zwingend das gesamte Dateisystem.


7.13.5 Sofortmaßnahmen ohne unkontrolliertes Löschen

  1. Exakte Fehlermeldung und Uhrzeit erfassen.
  2. Betroffenen Host, Dienst, Benutzer, Container und Pfad bestimmen.
  3. Kritikalität und Auswirkung bewerten.
  4. Aktuelle Kapazität, Inodes, Quotas und Speicherpools dokumentieren.
  5. Schreibintensive Prozesse und aktuelle Wachstumsrate identifizieren.
  6. Bei akutem Wachstum eine kontrollierte Drosselung oder Beendigung des verursachenden Dienstes prüfen.
  7. Keine unnötigen Neustarts durchführen.
  8. Keine Protokolle, Datenbanken oder Container-Volumes spontan löschen.
  9. Nur eindeutig entbehrliche und freigegebene Daten kontrolliert entfernen.
  10. Nach jeder Maßnahme denselben Speichertest wiederholen.

Ein Neustart kann die Situation verschärfen, wenn ein Dienst beim Start temporären Speicher benötigt oder eine Datenbank wegen fehlenden Speicherplatzes keine Wiederherstellung durchführen kann.


7.13.6 Speicherpfad vollständig abbilden

Der sichtbare Pfad kann mehrere Speicherebenen durchlaufen:

Anwendung
→ Anwendungspfad
→ Container oder virtuelle Maschine
→ Mountpoint oder Laufwerksbuchstabe
→ Dateisystem
→ Partition oder logisches Volume
→ Thin Pool, RAID oder Storage Pool
→ physischer Datenträger, NAS oder SAN

Jede Ebene kann ein eigenes Limit besitzen.

Beispiel:

Anwendung schreibt nach /var/lib/app
→ Docker-Bind-Mount
→ /srv/containers/app
→ ext4-Dateisystem
→ LVM Logical Volume
→ LVM Thin Pool
→ RAID-Verbund
→ physische SSDs

Freier Speicher auf einer Ebene beweist nicht, dass alle anderen Ebenen ebenfalls freien Speicher besitzen.


7.13.7 Grundfragen der Diagnose

Zu klären sind:

  • Welcher genaue Pfad kann nicht beschrieben werden?
  • Welches Dateisystem enthält diesen Pfad?
  • Ist das gesamte Dateisystem oder nur ein Benutzer betroffen?
  • Sind Datenblöcke, Inodes oder eine Quota erschöpft?
  • Ist das Dateisystem beschreibbar eingebunden?
  • Welche Daten sind zuletzt gewachsen?
  • Trat das Wachstum plötzlich oder kontinuierlich auf?
  • Existieren Snapshots, Shadow Copies oder Container-Layer?
  • Gibt es einen Thin-Provisioning-Pool?
  • Liegt das eigentliche Speichersystem auf einem NAS oder SAN?
  • Sind gelöschte Dateien weiterhin geöffnet?
  • Sind Protokolle, Caches, Dumps, Backups oder temporäre Dateien beteiligt?
  • Liegt zusätzlich ein Hardware- oder Dateisystemfehler vor?
  • Welche Mindestkapazität benötigt der betroffene Dienst zur Wiederaufnahme?

7.13.8 Windows – Volumeauslastung erfassen

LESEND

Get-Volume |
  Select-Object `
    DriveLetter,
    FileSystemLabel,
    FileSystem,
    HealthStatus,
    OperationalStatus,
    @{
      Name = "SizeGiB"
      Expression = {
        [math]::Round($_.Size / 1GB, 2)
      }
    },
    @{
      Name = "FreeGiB"
      Expression = {
        [math]::Round($_.SizeRemaining / 1GB, 2)
      }
    },
    @{
      Name = "FreePercent"
      Expression = {
        if ($_.Size -gt 0) {
          [math]::Round(
            100 * $_.SizeRemaining / $_.Size,
            1
          )
        }
      }
    }

Dateisystemlaufwerke der aktuellen PowerShell-Sitzung:

Get-PSDrive `
  -PSProvider FileSystem

Lokale logische Laufwerke:

Get-CimInstance `
  -ClassName Win32_LogicalDisk `
  -Filter "DriveType=3" |
  Select-Object `
    DeviceID,
    VolumeName,
    FileSystem,
    Size,
    FreeSpace

Get-PSDrive kann auch eingebundene Dateisystemlaufwerke anzeigen. Bei Netzwerkfreigaben können Quotas oder serverseitige Einschränkungen dazu führen, dass die gemeldete Verfügbarkeit nicht der gesamten Backendkapazität entspricht.


7.13.9 Windows – Datenträger, Partition und Volume zuordnen

LESEND

Get-Disk |
  Select-Object `
    Number,
    FriendlyName,
    PartitionStyle,
    OperationalStatus,
    HealthStatus,
    Size
Get-Partition |
  Select-Object `
    DiskNumber,
    PartitionNumber,
    DriveLetter,
    Type,
    Size
Get-Partition |
  Get-Volume |
  Select-Object `
    DriveLetter,
    FileSystemLabel,
    FileSystem,
    Size,
    SizeRemaining

Von Speicherverwaltungsanbietern gemeldete physische Datenträger:

Get-PhysicalDisk |
  Select-Object `
    FriendlyName,
    MediaType,
    OperationalStatus,
    HealthStatus,
    Size

Zu beachten:

  • Get-Disk bildet nicht jede mögliche Storage-Architektur vollständig ab.
  • Hardware-RAID-Controller können nur ein virtuelles Laufwerk anzeigen.
  • SAN-LUNs erscheinen als Datenträger, obwohl die physische Kapazität extern verwaltet wird.
  • Storage Spaces, Cluster Shared Volumes und herstellerspezifische Pools müssen zusätzlich in ihrer jeweiligen Verwaltung geprüft werden.

7.13.10 Windows – große Verzeichnisse und Dateien eingrenzen

Eine rekursive Suche kann auf großen Dateisystemen erhebliche I/O-Last verursachen. Der Suchpfad muss deshalb möglichst eng begrenzt werden.

LESEND, LASTERZEUGEND

Größe der direkten Unterverzeichnisse eines bekannten Pfades:

$ScanRoot = "C:\Data"

Get-ChildItem `
  -LiteralPath $ScanRoot `
  -Directory `
  -Force `
  -ErrorAction SilentlyContinue |
ForEach-Object {
  $Measurement = Get-ChildItem `
    -LiteralPath $_.FullName `
    -File `
    -Force `
    -Recurse `
    -ErrorAction SilentlyContinue |
  Measure-Object `
    -Property Length `
    -Sum

  [pscustomobject]@{
    Path = $_.FullName
    SizeGiB = [math]::Round(
      $Measurement.Sum / 1GB,
      2
    )
  }
} |
Sort-Object `
  -Property SizeGiB `
  -Descending

Größte Dateien unter einem begrenzten Pfad:

Get-ChildItem `
  -LiteralPath "C:\Data" `
  -File `
  -Force `
  -Recurse `
  -ErrorAction SilentlyContinue |
Sort-Object `
  -Property Length `
  -Descending |
Select-Object `
  -First 20 `
  FullName,
  Length,
  LastWriteTime

Einschränkungen:

  • fehlende Berechtigungen können Ergebnisse unvollständig machen;
  • rekursive Suchen können produktive Datenträger belasten;
  • Dateisystemmetadaten, Snapshots und geöffnete gelöschte Dateien erscheinen nicht zwingend in der Summe;
  • Hardlinks und Deduplizierung können die Auswertung beeinflussen;
  • ein vollständiger Lauf über ein großes Servervolume darf nicht unkontrolliert gestartet werden.

7.13.11 Windows – versteckte und reservierte Speicherverbraucher prüfen

VSS und Shadow Copies

LESEND

vssadmin list shadowstorage
vssadmin list shadows

Zu prüfen sind:

  • verwendeter Shadow-Copy-Speicher;
  • maximal erlaubter Speicher;
  • betroffene Quell- und Speicher-Volumes;
  • ungewöhnlich viele Snapshots;
  • fehlgeschlagene Bereinigungen;
  • Backupsoftware mit VSS-Nutzung.

Shadow Copies dürfen nicht spontan gelöscht oder verkleinert werden. Sie können für Wiederherstellungen, offene Backups oder andere Dienste benötigt werden.

Windows-Komponentenspeicher analysieren

LESEND, LASTERZEUGEND

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Die im Explorer angezeigte Größe von WinSxS darf nicht durch manuelles Löschen von Dateien korrigiert werden. Hardlinks können die scheinbare Verzeichnisgröße beeinflussen.

Systemdateien und weitere Bereiche

Zu prüfen sind:

  • Papierkorb;
  • temporäre Benutzer- und Systemdateien;
  • Windows-Update-Dateien;
  • Speicherabbilder;
  • Ruhezustandsdatei;
  • Auslagerungsdatei;
  • VSS-Speicher;
  • Anwendungsprotokolle;
  • Installationspakete;
  • Datenbank- und Transaktionsprotokolle;
  • Benutzerprofile;
  • Synchronisationsordner;
  • lokale Cloudkopien;
  • Backup- und Exportverzeichnisse.

Diese Dateien dürfen nicht allein aufgrund ihrer Größe entfernt werden.


7.13.12 Windows – Quotas prüfen

NTFS-Quota

LESEND, administrative Berechtigung erforderlich

fsutil quota query C:

File Server Resource Manager

Get-FsrmQuota |
  Select-Object `
    Path,
    Size,
    Usage,
    SoftLimit,
    Status,
    Template

Das FSRM-Modul ist nur vorhanden, wenn die entsprechende Windows-Server-Rolle beziehungsweise Verwaltungsfunktion installiert ist.

Zu unterscheiden sind:

  • physisch freier Speicher des Volumes;
  • NTFS-Benutzerquota;
  • FSRM-Verzeichnisquota;
  • Freigabe- oder Anwendungsquota;
  • Cloud- oder Storage-Backendlimit.

Wenn nur ein Benutzer oder ein bestimmtes Verzeichnis betroffen ist, muss zuerst die wirksame Quota geprüft werden.


7.13.13 Windows – Storageereignisse auswerten

LESEND

Get-WinEvent `
  -FilterHashtable @{
    LogName = "System"
    StartTime = (Get-Date).AddHours(-6)
  } |
Where-Object {
  $_.ProviderName -in @(
    "disk",
    "Ntfs",
    "ReFS",
    "volsnap",
    "storport"
  )
} |
Select-Object `
  TimeCreated,
  ProviderName,
  Id,
  LevelDisplayName,
  Message

Zu korrelieren sind:

  • Zeitpunkt des ersten Speicherfehlers;
  • Volume oder Gerätename;
  • Dateisystemfehler;
  • I/O-Timeouts;
  • zurückgesetzte Storageverbindungen;
  • Shadow-Copy-Fehler;
  • unerwartet entfernte Datenträger;
  • RAID-, SAN- oder Multipath-Ereignisse;
  • Anwendungs- und Datenbankfehler zum selben Zeitpunkt.

Ein Volume kann gleichzeitig nahezu voll und technisch fehlerhaft sein. Die Freigabe von Speicher behebt dann nicht zwangsläufig die eigentliche Ursache.


7.13.14 Linux – Dateisystembelegung erfassen

LESEND

df -hT

Wichtige Felder:

FeldBedeutung
Filesystemzugrunde liegendes Gerät oder logischer Speicher
TypeDateisystemtyp
SizeGesamtkapazität
Usedbelegter Speicher
Availverfügbarer Speicher
Use%prozentuale Auslastung
Mounted onMountpoint

Bestimmten Pfad prüfen:

df -hT /var/lib/app

Exakte Blockwerte:

df -B1 /var/lib/app

df wertet das Dateisystem aus, in dem der angegebene Pfad liegt. Das ist zuverlässiger, als den Mountpoint nur anhand einer angenommenen Verzeichnisstruktur zu erraten.


7.13.15 Linux – Inodes prüfen

LESEND

df -i

Bestimmten Pfad prüfen:

df -i /var/lib/app

Eine mögliche Einordnung:

BlockbelegungInodebelegungEinordnung
hochnormalgroße Dateien oder große Datenmengen
normalhochsehr viele kleine Dateien
hochhochKombination aus Datenmenge und Dateianzahl
normalnormalQuota, Reservierung, anderer Mountpoint oder anderer Fehler

Bei erschöpften Inodes können keine neuen Dateien angelegt werden, obwohl noch Datenblöcke frei sind.

Typische Verursacher:

  • Cachedateien;
  • Sitzungsdateien;
  • Mailqueues;
  • kleine temporäre Dateien;
  • extrahierte Paketbestände;
  • Container-Layer;
  • Build-Artefakte;
  • nicht rotierte Protokolle mit sehr vielen Einzeldateien;
  • Monitoring- oder Metrikdateien;
  • Anwendungen mit fehlerhafter Dateibereinigung.

7.13.16 Linux – Mounts und Speichergeräte zuordnen

LESEND

findmnt

Gezielte Ausgabe:

findmnt \
  -o TARGET,SOURCE,FSTYPE,OPTIONS

Bestimmten Pfad zuordnen:

findmnt \
  --target /var/lib/app

Blockgeräte:

lsblk \
  -o NAME,TYPE,FSTYPE,SIZE,FSAVAIL,FSUSE%,MOUNTPOINTS

Zu prüfen sind:

  • tatsächlicher Mountpoint;
  • zugrunde liegendes Gerät;
  • Dateisystemtyp;
  • Read-only-Option ro;
  • Bind-Mount;
  • Overlay-Dateisystem;
  • LVM;
  • verschlüsseltes Volume;
  • Netzwerkdateisystem;
  • Container-Mount;
  • unerwartet nicht eingebundenes Ziel.

Wenn ein vorgesehenes Dateisystem nicht eingebunden ist, kann eine Anwendung unbemerkt in das darunterliegende Root-Dateisystem schreiben.


7.13.17 Linux – große Verzeichnisse und Dateien finden

Die Suche sollte auf das betroffene Dateisystem begrenzt werden.

LESEND, LASTERZEUGEND

Direkte Unterverzeichnisse:

du \
  -x \
  -h \
  --max-depth=1 \
  /var |
sort -h

Zusammenfassung eines bestimmten Pfades:

du \
  -x \
  -s \
  -h \
  /var/lib/app

Größte Dateien mit GNU find:

find \
  /var/lib/app \
  -xdev \
  -type f \
  -printf '%s\t%p\n' |
sort -nr |
head -n 20

Wichtige Optionen:

OptionBedeutung
-x bei dubleibt im selben Dateisystem
-xdev bei findüberschreitet keine Dateisystemgrenze
--max-depth=1wertet nur die direkte Verzeichnisebene aus
-type fbeschränkt die Suche auf reguläre Dateien

Die Option -printf ist eine GNU-find-Funktion und steht nicht auf jedem Unix-System zur Verfügung.


7.13.18 Unterschied zwischen df und du untersuchen

df und du messen unterschiedliche Dinge:

  • df fragt die Belegung des gesamten Dateisystems ab.
  • du summiert erreichbare Dateien und Verzeichnisse.

Wenn df eine hohe Belegung zeigt, du aber deutlich weniger Daten findet, sind insbesondere zu prüfen:

  • gelöschte, weiterhin geöffnete Dateien;
  • fehlende Berechtigungen bei der du-Auswertung;
  • Snapshots;
  • Dateisystemmetadaten;
  • reservierte Blöcke;
  • Daten unterhalb eines Mountpoints;
  • Copy-on-Write- und Reflink-Daten;
  • Deduplizierung;
  • Container-Overlay-Layer;
  • unterschiedliche Dateisystemgrenzen;
  • Sparse Files;
  • Quotadaten;
  • beschädigte Dateisystemmetadaten.

Sparse Files vergleichen:

du -h /pfad/datei
du \
  -h \
  --apparent-size \
  /pfad/datei

Die scheinbare Dateigröße kann größer als der tatsächlich belegte Speicher sein.


7.13.19 Gelöschte, aber weiterhin geöffnete Dateien prüfen

Unter Unix-ähnlichen Systemen wird der belegte Speicher einer gelöschten Datei erst freigegeben, wenn kein Prozess mehr einen offenen Dateideskriptor auf sie hält.

LESEND

sudo lsof +L1

Zu prüfen sind:

  • Prozessname;
  • Prozess-ID;
  • Dateisystem;
  • Dateigröße;
  • gelöschter Dateipfad;
  • Dienstabhängigkeiten;
  • Möglichkeit eines kontrollierten Reloads oder Neustarts.

Ein Neustart des gesamten Systems ist nicht die erste Maßnahme. Wenn die Ursache bestätigt ist, sollte der betroffene Dienst kontrolliert neu geladen oder neu gestartet werden. Dabei sind Auswirkung und Wiederanlaufbedingungen zu prüfen.


7.13.20 Linux – Journald und Protokollwachstum prüfen

Aktuelle Journalbelegung:

LESEND

journalctl --disk-usage

Journaldateien und Protokollverzeichnisse:

du \
  -x \
  -h \
  --max-depth=1 \
  /var/log |
sort -h

Logrotate-Konfiguration im Debugmodus prüfen:

sudo logrotate \
  -d \
  /etc/logrotate.conf

logrotate -d führt keine Rotation aus, zeigt aber die geplante Verarbeitung.

Zu prüfen sind:

  • ungewöhnlich hohe Fehlerrate;
  • wiederholte identische Meldungen;
  • deaktivierte oder fehlerhafte Rotation;
  • Anwendungen mit eigener Logverwaltung;
  • Debug- oder Trace-Level;
  • fehlende Aufbewahrungsgrenze;
  • gelöschte, noch geöffnete Protokolldateien;
  • Komprimierungsfehler;
  • falsche Dateiberechtigungen;
  • voller Zielpfad der Rotation.

Das Löschen eines Protokolls behebt nicht den Prozess, der es unkontrolliert erzeugt.


7.13.21 Linux – Benutzer-, Gruppen- und Projektquotas prüfen

Quota des aktuellen Benutzers:

LESEND

quota -s

Quotaübersicht vorhandener quota-fähiger Dateisysteme:

sudo repquota -a

XFS-Quotaauswertung:

sudo xfs_quota \
  -x \
  -c 'report -h' \
  /mountpoint

Zu unterscheiden sind:

  • Soft Limit;
  • Hard Limit;
  • Grace Period;
  • Blockquota;
  • Inodequota;
  • Benutzerquota;
  • Gruppenquota;
  • XFS-Projektquota.

Eine noch laufende Grace Period kann erklären, warum Schreiben zunächst möglich war und später ohne sichtbare Änderung der Gesamtkapazität fehlschlägt.


7.13.22 LVM und Thin Provisioning prüfen

LESEND

sudo pvs
sudo vgs
sudo lvs \
  -a \
  -o lv_name,vg_name,lv_size,pool_lv,origin,data_percent,metadata_percent

Besonders kritisch sind:

  • data_percent nahe der Poolkapazität;
  • metadata_percent nahe der Metadatenkapazität;
  • erschöpfter freier Bereich der Volume Group;
  • viele oder stark gewachsene Snapshots;
  • ein Logical Volume, das kleiner als der zugrunde liegende Pool ist;
  • ein vergrößertes Blockgerät, dessen Partition, Logical Volume oder Dateisystem nicht mitgewachsen ist.

Ein Thin Pool kann voll sein, obwohl ein Gastbetriebssystem oder Logical Volume scheinbar noch freien logischen Speicher anzeigt.

Das Erweitern eines Speichers muss in der richtigen Reihenfolge erfolgen:

Backend oder physischer Datenträger
→ Partition oder PV
→ Volume Group oder Pool
→ Logical Volume
→ Dateisystem
→ Anwendung

Nicht jede Ebene ist in jeder Architektur vorhanden.


7.13.23 Btrfs und ZFS prüfen

Btrfs

LESEND

sudo btrfs filesystem usage -T /mountpoint
sudo btrfs subvolume list /mountpoint

Zu prüfen sind:

  • Datenbelegung;
  • Metadatenbelegung;
  • Systembereich;
  • Global Reserve;
  • RAID- oder Redundanzprofil;
  • fehlende Geräte;
  • Snapshots und Subvolumes;
  • geschätzter freier Speicher.

Bei Btrfs können Daten- und Metadatenbereiche unterschiedlich ausgelastet sein. Eine einfache df-Ausgabe reicht deshalb nicht immer für die vollständige Einordnung.

ZFS

zpool list
zfs list -o space

Snapshots:

zfs list \
  -t snapshot \
  -o name,used,refer,creation

Zu prüfen sind:

  • Poolkapazität;
  • Dataset-Quota;
  • Reservation und Refreservation;
  • Snapshotbelegung;
  • Kinder-Datasets;
  • tatsächlich verfügbarer Speicher;
  • Poolzustand.

Snapshots und Copy-on-Write-Daten können Speicher belegen, obwohl aktuelle Dateien bereits gelöscht wurden.


7.13.24 macOS – Speicherzustand prüfen

LESEND

df -h

Bestimmten Pfad prüfen:

df -h /System/Volumes/Data

Datenträger und Partitionen:

diskutil list

Informationen zum Startvolume:

diskutil info /

APFS-Struktur:

diskutil apfs list

APFS-Snapshots:

diskutil apfs listSnapshots /

Lokale Time-Machine-Snapshots:

tmutil listlocalsnapshots /

Große Verzeichnisse unterhalb des Datenvolumes:

LESEND, LASTERZEUGEND

sudo du \
  -x \
  -h \
  -d 1 \
  /System/Volumes/Data \
  2>/dev/null |
sort -h

Gelöschte, noch geöffnete Dateien:

sudo lsof +L1

Bei APFS teilen sich mehrere Volumes den freien Speicher eines gemeinsamen Containers. Daher müssen Volume, Container, Quotas, Reservierungen und Snapshots gemeinsam betrachtet werden.

Die macOS-Anzeige „verfügbar“ kann zusätzlich löschbaren Speicher enthalten. Dieser ist nicht mit unmittelbar freiem Speicher in jeder konkreten Betriebssituation gleichzusetzen.


7.13.25 Docker – Speicherverbrauch prüfen

Docker-Root-Verzeichnis:

LESEND

docker info \
  --format '{{.DockerRootDir}}'

Docker-Speicherübersicht:

docker system df

Detaillierte Übersicht:

docker system df -v

Containergrößen:

docker ps \
  -a \
  --size

Volumes:

docker volume ls

Logpfade der Container:

docker ps -aq |
xargs -r docker inspect \
  --format '{{.Name}} {{.LogPath}}'

Mounts eines bestimmten Containers:

docker inspect \
  --format '{{json .Mounts}}' \
  <Containername>

Zu prüfen sind:

  • Docker-Root-Dateisystem;
  • beschreibbare Container-Layer;
  • Images;
  • gestoppte Container;
  • Build-Cache;
  • benannte und anonyme Volumes;
  • Bind-Mounts;
  • Containerprotokolle;
  • Anwendungscaches;
  • Datenbanken in Volumes;
  • fehlende Logrotation.

Nicht zulässig als spontane Diagnosemaßnahme:

docker system prune -a --volumes

Dieser Befehl kann gestoppte Container, ungenutzte Images, Netzwerke, Build-Cache und anonyme Volumes entfernen. Vor einer Bereinigung müssen alle betroffenen Objekte einzeln geprüft werden.

Das manuelle Löschen innerhalb von /var/lib/docker kann die Docker-Metadaten und Containerdaten beschädigen.


7.13.26 Kubernetes – Ephemeral Storage und DiskPressure prüfen

Nodezustand:

LESEND

kubectl get nodes

Bestimmten Node untersuchen:

kubectl describe node <Node>

Zu prüfen sind insbesondere:

DiskPressure
NodeHasDiskPressure
ephemeral-storage
imagefs.available
imagefs.inodesFree
nodefs.available
nodefs.inodesFree

Ereignisse:

kubectl get events \
  --all-namespaces \
  --sort-by=.metadata.creationTimestamp

Betroffenen Pod untersuchen:

kubectl describe pod \
  <Pod> \
  -n <Namespace>

Persistente Volumes:

kubectl get pvc \
  --all-namespaces

Die angezeigte PVC-Kapazität ist nicht automatisch der aktuell freie Speicher innerhalb des eingebundenen Dateisystems.

Lokaler Ephemeral Storage kann unter anderem umfassen:

  • beschreibbare Container-Layer;
  • emptyDir-Volumes;
  • Node- und Containerprotokolle;
  • Image-Speicher;
  • temporäre Anwendungsdaten.

Bei Node-Druck kann der Kubelet Pods beenden, um Ressourcen zurückzugewinnen. Das Löschen einzelner Pods behebt die Ursache nicht, wenn Logs, Images oder Anwendungen sofort erneut denselben Speicherverbrauch erzeugen.


7.13.27 Anwendungen und Dienste als Verursacher prüfen

Häufige Speicherverbraucher:

BereichMögliche Ursache
Protokollefehlende Rotation, Debugmodus, Fehlerschleife
DatenbankTransaktionslog, WAL, Temp-Bereich, Replikationsverzug
Backupfehlende Retention, doppelte Sicherungen, abgebrochene Jobs
Containerunbeschränkte Logs, alte Images, beschreibbare Layer
Monitoringhochauflösende Metriken, zu lange Aufbewahrung
MailQueue, Anhänge, Quarantäne
Druckblockierte Spooldateien
AnwendungCache, Sitzungen, Uploads, Exporte
BetriebssystemUpdates, Dumps, temporäre Dateien
EntwicklungBuild-Artefakte, Paketcache, Testdaten
VirtualisierungSnapshots, virtuelle Festplatten, Replikation
DateidienstBenutzerdateien, Papierkorb, Versionierung
SecurityEDR-Quarantäne, Scanprotokolle, Forensikdaten

Zu prüfen sind:

  • Besitzer der Daten;
  • Erstellungs- und Änderungszeit;
  • Wachstum pro Stunde oder Tag;
  • vorgesehene Retention;
  • aktive Prozesse;
  • Abhängigkeit zu laufenden Diensten;
  • Backupstatus;
  • Replikationsstatus;
  • Wiederherstellungsbedarf;
  • Datenschutz und Aufbewahrungspflichten.

7.13.28 Netzwerkfreigaben, NAS und SAN prüfen

Bei SMB, NFS, iSCSI, Fibre Channel oder Cloudspeicher müssen Client und Backend getrennt geprüft werden.

Zu erfassen sind:

  • eingebundener Pfad;
  • verwendetes Protokoll;
  • Server oder Storageziel;
  • Share- oder Exportname;
  • LUN;
  • Dateisystem;
  • Storage Pool;
  • Volume;
  • Snapshotbestand;
  • Benutzer- oder Verzeichnisquota;
  • Thin-Provisioning-Kapazität;
  • Replikations- und Reservebereiche;
  • tatsächlich freier physischer Speicher.

Mögliche Sonderfälle:

  • nur eine Freigabequota ist erreicht;
  • ein einzelner Benutzer hat sein Limit erreicht;
  • das NAS-Volume ist voll, der Storage Pool aber nicht;
  • der Pool ist voll, obwohl das Volume noch logischen Speicher meldet;
  • Snapshots verhindern die Freigabe gelöschter Daten;
  • eine Thin-LUN ist logisch größer als der physisch verfügbare Pool;
  • das Dateisystem wurde wegen Backendfehlern schreibgeschützt;
  • ein nicht eingebundenes Netzwerkziel führte zu lokalen Schreibvorgängen.

Herstellerspezifische Lösch-, Snapshot- und Poolbefehle dürfen erst nach Prüfung der jeweiligen Dokumentation verwendet werden.


7.13.29 Schreibgeschütztes Dateisystem und Hardwarefehler abgrenzen

Linux-Mountstatus:

LESEND

findmnt \
  -o TARGET,SOURCE,FSTYPE,OPTIONS

Aktuelle Kernelmeldungen:

sudo dmesg \
  --ctime |
grep -Ei \
  'error|i/o|filesystem|read-only|corrupt|nvme|ata|scsi|ext4|xfs|btrfs'

Systemprotokolle:

journalctl \
  -k \
  --since "-2 hours"

Falls smartctl installiert und für das Gerät geeignet ist:

sudo smartctl \
  -a \
  /dev/<Gerät>

macOS-Verifikation:

diskutil verifyVolume /

Ein Dateisystem kann wegen erkannter Fehler auf read-only wechseln. In diesem Fall ist das Löschen von Dateien weder möglich noch die richtige Erstmaßnahme.

Offline-Dateisystemprüfungen wie fsck dürfen nicht ungeprüft auf einem produktiv eingebundenen Dateisystem ausgeführt werden.

Wenn ein Datenträger einen bevorstehenden Ausfall meldet, haben Datensicherung, kontrollierte Außerbetriebnahme und Austausch Vorrang vor einer reinen Speicherbereinigung.


7.13.30 Hypothese und Gegenbeweis formulieren

Beispiel:

Hypothese:
Das Root-Dateisystem ist voll, weil ein Dienst ein
Protokoll ohne funktionierende Rotation erzeugt.

Erwarteter Befund:
df zeigt eine hohe Blockbelegung.
Das Protokollverzeichnis enthält eine stark gewachsene Datei.
Die Änderungszeit und die Dienstmeldungen passen zum Fehlerzeitpunkt.

Gegenbeweis:
Das Protokoll ist klein oder wächst nicht.
Die Belegung bleibt auch nach kontrolliertem Stoppen
des Dienstes unverändert.

Testmethode:
Dateisystembelegung, Verzeichnisgröße, Änderungszeit,
offene Dateien und Dienstprotokolle vergleichen.

Erfolgskriterium:
Der verursachende Schreibpfad ist eindeutig nachgewiesen.

Eine belastbare Hypothese enthält:

  • vermutete Ursache;
  • betroffene Speicherebene;
  • erwarteten Messwert;
  • möglichen Gegenbeweis;
  • sichere Testmethode;
  • Risiko;
  • Erfolgskriterium.

7.13.31 Kontrollierte Maßnahmen

MaßnahmeVoraussetzungRisiko
unnötige temporäre Daten entfernenEigentümer und Entbehrlichkeit bestätigtbenötigte Sitzungs- oder Arbeitsdaten können verloren gehen
Protokollrotation korrigierenLogwachstum nachgewiesenlaufender Dienst kann Logdatei weiter offen halten
Journald begrenzenJournal als Ursache bestätigtältere Diagnoseinformationen gehen verloren
Anwendungscache bereinigenCache ist dokumentiert wiederherstellbarLastspitze beim Neuaufbau
Backupretention korrigierenabgelaufene Sicherungen eindeutig bestimmtWiederherstellungspunkte gehen verloren
Containerobjekte bereinigenjedes Objekt auf Nutzung geprüftDaten oder Rollbackimages können fehlen
Quota anpassenQuota als Ursache und Kapazität vorhandenunkontrolliertes weiteres Wachstum
Volume erweiternBackendkapazität und korrekte Ebenen bestätigtPartitions- oder Dateisystemschaden bei Fehlern
Thin Pool erweiternPoolgrenze nachgewiesenfalsche Erweiterungsebene bleibt wirkungslos
Snapshot entfernenAbhängigkeiten und Retention geprüftWiederherstellungspunkt geht verloren
Dienst kontrolliert neu startengelöschte offene Datei nachgewiesenDienstunterbrechung
fehlerhaften Schreibprozess stoppenakutes Wachstum bestätigtAnwendungs- oder Datenverlust
Storage austauschenHardwarefehler bestätigtBetriebsunterbrechung und Migrationsrisiko

Vor der Maßnahme sind zu dokumentieren:

  • Ausgangszustand;
  • betroffener Pfad;
  • aktuelle Belegung;
  • erwartete Freigabe;
  • Datenverantwortlicher;
  • Backupstatus;
  • Freigabe;
  • Risiko;
  • Rückweg;
  • Erfolgskriterium.

7.13.32 Beispiele für verändernde Bereinigungen

Die folgenden Befehle sind keine Erstdiagnose und dürfen nur nach Prüfung und Freigabe verwendet werden.

Systemd-Journal kontrolliert begrenzen

LÖSCHEND

sudo journalctl \
  --rotate \
  --vacuum-size=<Zielgröße>

Dabei werden archivierte Journaldateien bis zur angegebenen Zielgröße bereinigt. Relevante Protokolle müssen vorher ausgewertet oder gesichert werden.

Windows-Komponentenspeicher bereinigen

ÄNDERND

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

Dieser Befehl darf nur nach der vorherigen Analyse mit /AnalyzeComponentStore und unter Berücksichtigung laufender Wartungs- oder Updatevorgänge verwendet werden.

Docker-Bereinigung

Vor jedem Prune-Befehl müssen mindestens folgende Ausgaben geprüft werden:

docker system df -v
docker ps -a
docker image ls
docker volume ls

Prune-Befehle sind löschend. Insbesondere --volumes darf nicht verwendet werden, ohne jedes betroffene Volume und dessen Datenverantwortung geprüft zu haben.


7.13.33 Maßnahmen, die nicht spontan ausgeführt werden dürfen

rm -rf auf unbekannten Verzeichnissen
Löschen unter /var/lib/docker
docker system prune -a --volumes
Löschen aktiver Datenbankdateien
Löschen von WAL- oder Transaktionslogs
Löschen aller Snapshots
vssadmin delete shadows
unkontrolliertes Verkleinern des VSS-Speichers
manuelles Löschen aus WinSxS
Leeren produktiver Protokolle ohne Sicherung
fsck auf einem schreibend eingebundenen Dateisystem
Ändern reservierter ext4-Blöcke ohne Kapazitätsplanung
Vergrößern einer Partition ohne Backup und Ebenenprüfung
Entfernen von Kubernetes-PVCs
Löschen unbekannter Container-Volumes
Deaktivieren von Quotas ohne Ursachenanalyse
Neustart des gesamten Hosts als erste Maßnahme

Eine Datei mit der Endung .log, .tmp, .bak oder .old ist nicht automatisch entbehrlich.


7.13.34 Vollständiger Diagnoseablauf

  1. Fehlermeldung vollständig aufnehmen
    Wortlaut, Anwendung, Benutzer und Zeitpunkt dokumentieren.

  2. Betroffenen Pfad bestimmen
    Exakten Datei-, Volume-, Mount- oder Containerpfad erfassen.

  3. Auswirkung bestimmen
    Einzelne Anwendung, Benutzer, Host oder Standort unterscheiden.

  4. Schreibtest nicht unkontrolliert wiederholen
    Zusätzliche Schreibvorgänge können die Lage verschärfen.

  5. Speicherebene bestimmen
    Anwendung, Container, Dateisystem, Volume, Pool und Backend zuordnen.

  6. Gesamtkapazität und freien Speicher erfassen
    Werte in Prozent und absoluten Größen dokumentieren.

  7. Inodes prüfen
    Besonders bei vielen kleinen Dateien.

  8. Quotas prüfen
    Benutzer-, Gruppen-, Projekt-, Verzeichnis- und Anwendungsquotas unterscheiden.

  9. Schreibschutz prüfen
    Read-only-Mount oder Dateisystemfehler ausschließen.

  10. Speicherpool prüfen
    RAID, LVM, Thin Pool, Storage Spaces, NAS oder SAN berücksichtigen.

  11. Snapshots prüfen
    VSS, APFS, Btrfs, ZFS, Hypervisor und Storage-Snapshots erfassen.

  12. Wachstumsrate bestimmen
    Aktuelle Werte mit Monitoring oder früheren Messungen vergleichen.

  13. Große Verzeichnisse eingrenzen
    Suche auf das betroffene Dateisystem beschränken.

  14. Große Dateien bestimmen
    Besitzer, Zweck und Änderungszeit dokumentieren.

  15. Viele kleine Dateien berücksichtigen
    Inodeverbrauch und Dateianzahl untersuchen.

  16. Gelöschte offene Dateien prüfen
    Besonders nach manueller Loglöschung.

  17. Protokolle und Rotation prüfen
    Fehlerschleifen, Debugmodus und Retention untersuchen.

  18. Datenbanken prüfen
    Daten-, Transaktions-, WAL- und Temp-Bereiche unterscheiden.

  19. Backupdaten prüfen
    Retention, abgebrochene Jobs und doppelte Sicherungen untersuchen.

  20. Containerdaten prüfen
    Images, Layer, Volumes, Bind-Mounts und Logs unterscheiden.

  21. Kubernetes-Ephemeralspeicher prüfen
    Nodefs, Imagefs, Inodes, Limits und Evictions auswerten.

  22. Betriebssystembereiche prüfen
    Updates, Dumps, Cache, temporäre Dateien und Papierkorb untersuchen.

  23. Hardware- und I/O-Fehler prüfen
    Ereignisse, Kernelmeldungen und Storagezustand korrelieren.

  24. Hypothese und Gegenbeweis formulieren
    Ursache vor jeder Änderung messbar beschreiben.

  25. Akutes Wachstum kontrollieren
    Verursachenden Schreibprozess nur mit Freigabe drosseln oder stoppen.

  26. Minimale sichere Entlastung planen
    Nur bestätigte, entbehrliche Daten auswählen.

  27. Eine Maßnahme durchführen
    Nicht mehrere Variablen gleichzeitig verändern.

  28. Freien Speicher erneut messen
    Absoluten Wert und Prozentwert dokumentieren.

  29. Ursprünglichen Schreibvorgang testen
    Anwendung und nicht nur Diagnosewerkzeug prüfen.

  30. Weitere Ebenen verifizieren
    Pool, Volume, Dateisystem und Anwendung erneut kontrollieren.

  31. Wachstum weiter beobachten
    Prüfen, ob der Speicher sofort wieder abnimmt.

  32. Dauerhafte Ursache beheben
    Rotation, Retention, Quota, Kapazität oder Anwendung korrigieren.

  33. Monitoring verbessern
    Prozentwert, freien Absolutwert, Inodes und Wachstumsrate überwachen.

  34. Vorgang dokumentieren
    Ursache, Maßnahme, Risiko, Ergebnis und Prävention festhalten.


7.13.35 Befundmatrix

BefundMögliche EinordnungNächster Nachweis
df zeigt 100 %, du ebenfalls sehr hochsichtbare Dateien belegen das Dateisystemgrößte Verzeichnisse bestimmen
df zeigt 100 %, du deutlich wenigeroffene gelöschte Dateien, Snapshots oder Metadatenlsof +L1 und Snapshotprüfung
Blöcke frei, Inodes 100 %zu viele DateienVerzeichnisse mit vielen kleinen Dateien bestimmen
nur ein Benutzer betroffenBenutzerquotaQuota des Benutzers prüfen
nur ein Verzeichnis betroffenFSRM-, Projekt- oder Anwendungsquotawirksames Verzeichnislimit prüfen
Dateisystem ist read-onlyDateisystem- oder StoragefehlerKernel- und Ereignisprotokolle
Root-Dateisystem vollLogs, Cache, Container oder fehlender Mount/var, /tmp, Docker und Mounts prüfen
nach Loglöschung keine FreigabeDatei wird noch geöffnet gehaltenlsof +L1
Dockerhost vollImages, Layer, Volumes oder Logsdocker system df -v
Container meldet voll, Host nichtContainer-Layer, Volume oder QuotaMounts und beschreibbaren Layer prüfen
Kubernetes-Node zeigt DiskPressureNodefs, Imagefs oder Inodes knappNodebeschreibung und Ereignisse
PVC vorhanden, Anwendung meldet vollDateisystem innerhalb des PVC oder StoragequotaVolume im Pod und Backend prüfen
Logical Volume hat Platz, Thin Pool ist vollThin Provisioning erschöpftlvs mit Daten- und Metadatenprozent
Dateien wurden gelöscht, Snapshotgröße steigtCopy-on-Write hält alte BlöckeSnapshotbelegung prüfen
Windows-Volume voll, Verzeichnissumme kleinerVSS, Systemdateien oder unzugängliche BereicheVSS und Systembereiche prüfen
macOS zeigt widersprüchliche WerteAPFS-Container, Snapshots oder löschbarer SpeicherAPFS-Container und Snapshots prüfen
NAS-Freigabe voll, NAS-Pool hat PlatzShare-, Benutzer- oder VolumequotaBackendquota prüfen
Speicher wächst sehr schnellFehlerschleife oder unkontrollierter JobÄnderungszeit und aktive Prozesse
nach Bereinigung sofort wieder vollUrsache weiterhin aktivWachstumsquelle erneut messen
I/O-Fehler zusätzlich zu wenig SpeicherHardware- oder PfadfehlerStoragezustand und Ereignisse

7.13.36 Typische Diagnosefehler

  • Nur den prozentualen Wert betrachten.
  • Den absolut freien Speicher nicht dokumentieren.
  • Inodes nicht prüfen.
  • Quotas nicht berücksichtigen.
  • Anwendungspfad und tatsächliches Dateisystem verwechseln.
  • Ein nicht eingebundenes Ziel übersehen.
  • df und du als identische Messungen behandeln.
  • Fehlende Berechtigungen bei rekursiven Suchen ignorieren.
  • Gelöschte offene Dateien übersehen.
  • Snapshots und Shadow Copies ignorieren.
  • Thin Provisioning nur im Gastbetriebssystem prüfen.
  • Container-Layer und Volume verwechseln.
  • PVC-Größe mit freiem Speicher gleichsetzen.
  • Protokolldatei löschen, ohne den schreibenden Prozess zu prüfen.
  • Aktive Datenbankprotokolle manuell löschen.
  • Docker-Volumes pauschal bereinigen.
  • Alle Snapshots vorsorglich entfernen.
  • Storagepool und Dateisystem gleichzeitig verändern.
  • Mehrere Bereinigungen gleichzeitig ausführen.
  • Keine Messung vor und nach der Maßnahme durchführen.
  • Einen Neustart als Speicherbereinigung verwenden.
  • Schreibschutz als reinen Kapazitätsfehler behandeln.
  • Hardwarefehler nach einer kurzfristigen Speicherfreigabe ignorieren.
  • Nur Platz freigeben, aber die Wachstumsursache nicht beheben.
  • Keine zukünftige Kapazitäts- und Retentionsplanung festlegen.

7.13.37 Verifikation

Nach der Maßnahme müssen mindestens folgende Punkte geprüft werden:

  • betroffener Pfad liegt auf dem erwarteten Dateisystem;
  • Dateisystem ist schreibbar;
  • ausreichender absoluter Speicher ist verfügbar;
  • prozentuale Auslastung liegt im vorgesehenen Bereich;
  • Inodes sind verfügbar;
  • wirksame Quotas sind korrekt;
  • Thin Pool besitzt freie Daten- und Metadatenkapazität;
  • Storage Pool und Backend besitzen Reserve;
  • Snapshots entsprechen der vorgesehenen Retention;
  • keine gelöschten großen Dateien werden weiterhin offengehalten;
  • Logrotation funktioniert;
  • Anwendung erzeugt keine unkontrollierte Datenmenge mehr;
  • Container startet ohne Neustartschleife;
  • Kubernetes-Node zeigt keinen DiskPressure;
  • Datenbank schreibt fehlerfrei;
  • Backup- und Replikationsdienste funktionieren;
  • keine neuen Dateisystem- oder I/O-Fehler erscheinen;
  • ursprünglicher Schreibvorgang funktioniert;
  • Wachstumsrate bleibt nach der Maßnahme kontrolliert;
  • Monitoring löst korrekt aus;
  • temporäre Änderungen wurden zurückgenommen;
  • Ursache und Prävention wurden dokumentiert.

Ein einzelner erfolgreicher Schreibtest reicht nicht aus, wenn der Speicher weiterhin unkontrolliert wächst.


7.13.38 Prävention und Monitoring

Zu überwachen sind:

  • prozentuale Dateisystembelegung;
  • absolut freier Speicher;
  • Inodebelegung;
  • Wachstum pro Stunde und Tag;
  • Quotaauslastung;
  • Snapshotbelegung;
  • Thin-Pool-Datenbereich;
  • Thin-Pool-Metadatenbereich;
  • Container- und Imagebelegung;
  • Kubernetes nodefs und imagefs;
  • Backuprepository;
  • Datenbank- und Transaktionslogs;
  • Protokollverzeichnisse;
  • Storagepoolkapazität;
  • Hardware- und I/O-Fehler.

Ein sinnvoller Alarm berücksichtigt nicht nur einen festen Prozentwert.

Beispiel:

Warnung:
Auslastung über organisationsspezifischem Grenzwert
UND weniger als definierter absoluter Freispeicher

Kritisch:
Kapazität reicht bei aktueller Wachstumsrate
nicht bis zum nächsten geplanten Eingriff

Zusätzliche Präventionsmaßnahmen:

  • Kapazitätsprognosen erstellen;
  • Retention verbindlich dokumentieren;
  • Logrotation regelmäßig testen;
  • Quotas mit Warnschwellen verwenden;
  • Snapshotlebenszyklen überwachen;
  • Thin Provisioning nicht überbuchen, ohne das Backend zu überwachen;
  • Containerlogs begrenzen;
  • Ephemeral-Storage-Requests und -Limits planen;
  • Backuprepository und Produktionsdaten getrennt überwachen;
  • Restore- und Bereinigungsvorgänge testen;
  • Eigentümer für speicherintensive Pfade festlegen.

7.13.39 Dokumentationsvorlage

Störung:
<exakte Fehlermeldung>

Zeitpunkt:
<Datum und Uhrzeit>

Betroffenes System:
<Hostname, VM, Container oder Node>

Betroffene Anwendung:
<Dienst oder Anwendung>

Betroffener Pfad:
<Laufwerksbuchstabe, Mountpoint oder Dateipfad>

Speicherebenen:
<Anwendung, Dateisystem, Volume, Pool und Backend>

Dateisystem:
<Typ und Mountoptionen>

Gesamtkapazität:
<Wert>

Freier Speicher vor der Maßnahme:
<Wert und Prozent>

Inodebelegung:
<Wert und Prozent>

Wirksame Quota:
<Typ, Limit und Nutzung>

Snapshotbelegung:
<Wert und Bestand>

Thin-Pool-Auslastung:
<Daten- und Metadatenprozent>

Wachstumsrate:
<Wert pro Stunde oder Tag>

Größte Verbraucher:
<Pfade, Größen und Besitzer>

Gelöschte offene Dateien:
<Befund>

Storage- und Hardwarezustand:
<Befund>

Nachgewiesene Ursache:
<technischer Nachweis>

Gegenbeweis ausgeschlossen durch:
<Test und Ergebnis>

Durchgeführte Maßnahme:
<genau beschriebene Änderung>

Risiko und Rückweg:
<Beschreibung>

Freier Speicher nach der Maßnahme:
<Wert und Prozent>

Verifikation:
<Schreibtest, Anwendungstest und Monitoring>

Prävention:
<Rotation, Retention, Quota, Kapazität oder Monitoring>

7.13.40 Checkliste

  •  exakte Fehlermeldung dokumentiert
  •  Datum und Uhrzeit erfasst
  •  betroffenen Host erfasst
  •  betroffene Anwendung erfasst
  •  betroffenen Benutzer erfasst
  •  exakten Schreibpfad bestimmt
  •  Dateisystem des Pfades bestimmt
  •  Mountpoint oder Laufwerksbuchstabe bestätigt
  •  Gesamtkapazität dokumentiert
  •  absolut freien Speicher dokumentiert
  •  prozentuale Auslastung dokumentiert
  •  Inodes geprüft
  •  Benutzerquota geprüft
  •  Gruppenquota geprüft
  •  Projekt- oder Verzeichnisquota geprüft
  •  Anwendungsquota geprüft
  •  Schreibschutz geprüft
  •  Mountoptionen geprüft
  •  Partition oder Logical Volume geprüft
  •  Volume Group oder Speicherpool geprüft
  •  Thin-Pool-Datenbereich geprüft
  •  Thin-Pool-Metadatenbereich geprüft
  •  RAID-, NAS- oder SAN-Kapazität geprüft
  •  Snapshots geprüft
  •  Shadow Copies geprüft
  •  größte Verzeichnisse bestimmt
  •  größte Dateien bestimmt
  •  Änderungszeiten geprüft
  •  Datenbesitzer bestimmt
  •  Wachstumsrate bestimmt
  •  viele kleine Dateien berücksichtigt
  •  df und du verglichen
  •  gelöschte offene Dateien geprüft
  •  Protokollwachstum geprüft
  •  Logrotation geprüft
  •  Datenbanklogs geprüft
  •  Backupretention geprüft
  •  Container-Layer geprüft
  •  Container-Volumes geprüft
  •  Containerlogs geprüft
  •  Kubernetes DiskPressure geprüft
  •  Ephemeral Storage geprüft
  •  PVC und Backend getrennt geprüft
  •  System- und Kernelprotokolle geprüft
  •  Hardware- und I/O-Fehler geprüft
  •  Hypothese formuliert
  •  Gegenbeweis festgelegt
  •  Risiko und Rückweg dokumentiert
  •  Datenverantwortlicher einbezogen
  •  nur eine kontrollierte Maßnahme durchgeführt
  •  freien Speicher erneut gemessen
  •  Inodes erneut geprüft
  •  Quota erneut geprüft
  •  ursprünglichen Schreibvorgang getestet
  •  ursprüngliche Anwendung getestet
  •  Wachstumsrate nachkontrolliert
  •  Monitoring geprüft
  •  temporäre Änderungen zurückgenommen
  •  Ursache dokumentiert
  •  Präventionsmaßnahme festgelegt

7.13.41 Schnellreferenz

AufgabeBefehl
Windows-VolumesGet-Volume
PowerShell-DateisystemlaufwerkeGet-PSDrive -PSProvider FileSystem
Windows-DatenträgerGet-Disk
Windows-PartitionenGet-Partition
physische Windows-SpeicherobjekteGet-PhysicalDisk
NTFS-Quotafsutil quota query C:
FSRM-QuotasGet-FsrmQuota
VSS-Speichervssadmin list shadowstorage
Shadow Copiesvssadmin list shadows
Windows-KomponentenspeicherDism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Linux-Dateisystembelegungdf -hT
Linux-Pfad prüfendf -hT <Pfad>
Linux-Inodesdf -i
Mountsfindmnt
Mount eines Pfadesfindmnt --target <Pfad>
Blockgerätelsblk -o NAME,TYPE,FSTYPE,SIZE,FSAVAIL,FSUSE%,MOUNTPOINTS
Verzeichnisgrößendu -x -h --max-depth=1 <Pfad>
gelöschte offene Dateienlsof +L1
Journalbelegungjournalctl --disk-usage
Benutzerquotaquota -s
Quotaübersichtrepquota -a
XFS-Quotaxfs_quota -x -c 'report -h' <Mountpoint>
LVM Physical Volumespvs
LVM Volume Groupsvgs
LVM und Thin Poolslvs -a -o lv_name,vg_name,lv_size,pool_lv,origin,data_percent,metadata_percent
Btrfs-Auslastungbtrfs filesystem usage -T <Mountpoint>
ZFS-Poolauslastungzpool list
ZFS-Datasetbelegungzfs list -o space
macOS-Dateisystembelegungdf -h
macOS-Datenträgerdiskutil list
APFS-Strukturdiskutil apfs list
APFS-Snapshotsdiskutil apfs listSnapshots /
lokale Time-Machine-Snapshotstmutil listlocalsnapshots /
Docker-Speicherübersichtdocker system df -v
Docker-Containergrößendocker ps -a --size
Kubernetes-Nodeskubectl get nodes
Kubernetes-Nodezustandkubectl describe node <Node>
Kubernetes-PVCskubectl get pvc --all-namespaces

7.13.42 Quellen

Offizielle Microsoft-Dokumentation

Offizielle Linux- und Projektdokumentation

Offizielle Docker-Dokumentation

Offizielle Kubernetes-Dokumentation

Offizielle Apple-Dokumentation

Für diese Seite wurden keine Community-Berichte, Hersteller-Social-Media-Aussagen oder eigenen Laborergebnisse als Nachweis verwendet.