Vom ZFS-Laufwerk verschobene oder gelöschte Dateien geben keinen Speicherplatz auf dem Laufwerk frei

Vom ZFS-Laufwerk verschobene oder gelöschte Dateien geben keinen Speicherplatz auf dem Laufwerk frei

Ich verwende Ubuntu 21.10, neu installiert mit ZFS-Dateisystem. Wenn ich einige Dateien lösche und dann den Papierkorb leere oder sie auf ein anderes (externes) Laufwerk verschiebe, wird dadurch kein Speicherplatz auf dem Laufwerk freigegeben. Tatsächlich zeigt df: rpool/ROOT/ubuntu_zooqq5 35G 4,5G 31G 13% / wobei 35 GB die Laufwerksgröße ist.

Jedes Mal, wenn ich der Festplatte eine Datei hinzufüge, verringert sich die Laufwerksgröße.

Ich stelle Speicherplatz frei (und die Laufwerksgröße steigt), indem ich ZFS-Snapshots mit einem Skript lösche, aber wie kann das richtig sein?

Vielleicht ist es ein Fehler?

Antwort1

Auf entfernte Dateien wird immer noch durch frühere Snapshots verwiesen. Das von Ihnen beschriebene Verhalten ist also erwartungsgemäß.

Wie Sie bereits bemerkt haben, bleibt der Speicherplatz durch die Snapshots belegt; erst nach dem Löschen des letzten Snapshots, der die gelöschten Dateien referenziert, steht der entsprechende Speicherplatz wieder für neue Dateien zur Verfügung.

Beachten Sie, dassdfliefert keine genauen Werte für den freien Speicherplatz in ZFS-Dateisystemen. ZFS verwendet eine oder mehrere Festplatten (oder Partitionen), um Pools zu speichern, die ein oder mehrere Datasets (interpretiert als dfDateisysteme) enthalten können, die sich alle den freien Speicherplatz des Pools teilen. Snapshots füllen den Pool ebenfalls (als Teil von Datasets), was sich weiter auf die „Größen“ df-Berichte für ein einzelnes Dateisystem auswirkt. ZFS ist sowohl ein Dateisystem als auch ein Volume-Manager und verwaltet optional RAID-Arrays; es wäre beispielsweise analog zu ext4 auf LVM optional auf RAID.

Um zu sehen, wie Pools Festplatten oder Partitionen entsprechen, können Sie verwenden zpool status. In Ubuntu finden Sie die aufgelisteten Festplatten oder Partitionen unter /dev/disk/by-uuid/bzw. /dev/disk/by-partuuid/Um den freien Speicherplatz in Pools anzuzeigen, können Sie alle Pools über auflisten zpool list. Sie können alle ZFS-Datasets („Dateisysteme“) über auflisten zfs list, wobei die USEDSpalte den vom Dataset verwendeten Speicherplatz angibt, der die Dateien, untergeordneten Datasets und Snapshots umfasst, die zu einem bestimmten Dataset gehören; AVAILgibt den verbleibenden Speicherplatz im Pool an und REFERgibt die Größe der Dateien an, die für dieses Dateisystem spezifisch sind, d. h. keine Snapshots oder untergeordneten Dateisysteme.

verwandte Informationen