
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, dassdf
liefert 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 df
Dateisysteme) 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 USED
Spalte den vom Dataset verwendeten Speicherplatz angibt, der die Dateien, untergeordneten Datasets und Snapshots umfasst, die zu einem bestimmten Dataset gehören; AVAIL
gibt den verbleibenden Speicherplatz im Pool an und REFER
gibt die Größe der Dateien an, die für dieses Dateisystem spezifisch sind, d. h. keine Snapshots oder untergeordneten Dateisysteme.