NixOS und Konfiguration

Garbage Collection gibt weniger Platz frei als erwartet

Der Nix-Store bleibt nach GC groß, weil Wurzeln Inhalte halten. Prüfe Generationen und result-Links vor dem Entfernen von Rückwegen oder Store-Dateien.

Auf dieser Seite
  1. Symptome und Geltungsbereich
  2. Mögliche Ursachen
  3. Sicher prüfen
  4. Nächste Schritte nach Befund
  5. Quellen und Prüfung
  6. Verwandte Probleme

Symptome und Geltungsbereich

  • GC gibt trotz großem /nix/store wenig frei.
  • Bauten verlieren Dateisystemplatz, während viele alte Ausgaben referenziert bleiben.

Betroffene Umgebung

Nix-Store-Garbage-Collection, Profilgenerationen und direkte oder indirekte GC-Wurzeln.

Mögliche Ursachen

Das sind mögliche Erklärungen, keine bestätigte Diagnose. Mehrere unabhängige Fehler können gleichzeitig vorliegen.

  • Profile, frühere Systemgenerationen oder result-Links können große Abhängigkeitsmengen halten.
  • Dateisystemverbrauch kann Daten außerhalb des Stores enthalten; Store-Größe ist nicht gleich freigebbarer Platz.

Sicher prüfen

Führe jeweils einen Befehl in der passenden Sitzung aus. Lies zuerst die Erklärung. Großgeschriebene Platzhalter brauchen deine Werte; Werkzeuge und Rechte unterscheiden sich je nach Distribution. Die Website zeigt Befehle an und führt sie niemals aus.

Prüfschritt 1

Die Unteroperation --print-roots listet Wurzeln statt zu löschen; lasse diese Option nicht weg.

nix-store --gc --print-roots

Ergebnis einordnen: Profil- und result-Wurzeln erklären gehaltene Inhalte. Wurzeln können indirekt sein und anderen Benutzern oder Projekten gehören.

Prüfschritt 2

Listet Systemprofilgenerationen ohne Wechsel oder Löschen; Profilzugriff kann eingeschränkt sein.

nix-env --profile /nix/var/nix/profiles/system --list-generations

Ergebnis einordnen: Vergleiche ältere Generationen mit bewusst behaltenen Rückwegen. Benutzerprofilgenerationen sind eine eigene Wurzelmenge.

Prüfschritt 3

Liest Dateisystemplatz ohne Store-Dateien zu durchsuchen oder zu verändern.

df -h /nix/store

Ergebnis einordnen: Wenig freier Platz kann auch von anderen Verzeichnissen dieses Dateisystems stammen. Prüfe Inodes bei Allokationsfehlern trotz freier Bytes.

Nächste Schritte nach Befund

Nur veraltete Wurzeln gezielt aufgeben

Wenn ein result-Link oder eine Profilgeneration bestätigt veraltet ist, entferne sie durch den vorgesehenen Projekt- oder Profilablauf und sammle dann unreferenzierte Pfade. Behalte aktuelle, gestartete und eine funktionierende Rückkehrgeneration.

Vorsicht: Ohne Wurzeln können Ausgaben dauerhaft eingesammelt werden. Lösche nie beliebige /nix/store-Dateien oder das gesamte gcroots-Verzeichnis.

Wiederherstellung / Rücknahme: Stelle vor GC entfernte Links bei vorhandenen Zielen zurück. Nach GC braucht die Erholung einen Neubau oder einen verfügbaren geprüften Cache.

Hat dir dieser Hinweis geholfen?

Hinweis teilen#

Aufbewahrung und Kapazität bewusst planen

Wenn regelmäßige Bauten den Speicher übersteigen, plane endliche Generationserhaltung und passende GC oder erweitere das Dateisystem. Prüfe alle Benutzerwurzeln vor der Annahme ausreichender Systembereinigung.

Vorsicht: Eine entfernte Generation wird nicht durch Zurückwechseln wiederhergestellt. Store-Bereinigung sichert keine veränderlichen Anwendungsdaten.

Wiederherstellung / Rücknahme: Deaktiviere die neue Automatik und stelle Links bei vorhandenen Zielen zurück; baue eingesammelte Ausgaben nötigenfalls aus gesicherten Pins neu.

Hat dir dieser Hinweis geholfen?

Hinweis teilen#

Quellen und Prüfung

Diese Anleitung basiert auf Originalquellen von Projekten oder Distributionen und wurde am genannten Datum redaktionell geprüft. Das ist eine Quellenprüfung, kein Nachweis einer auf deiner Hardware reproduzierten Lösung. Log-Beispiele sind synthetische Testdaten. Versionsabhängige Details müssen zur installierten Ausgabe passen.