ZFS ドライブから移動または削除されたファイルはドライブのスペースを解放しません

ZFS ドライブから移動または削除されたファイルはドライブのスペースを解放しません

私は、zfs ファイルシステムで新しくインストールした ubuntu 21.10 を使用しています。いくつかのファイルを削除してゴミ箱を空にしたり、別の (外部) ドライブに移動したりしても、ドライブのスペースは解放されません。実際に df を実行すると、次のように表示されます: rpool/ROOT/ubuntu_zooqq5 35G 4,5G 31G 13% / ここで、35GB はドライブ サイズです。

ディスクにファイルを追加するたびに、ドライブのサイズが減少します。

スクリプトを使用して zfs スナップショットを削除することでスペースを回復します (ドライブ サイズが増加します) が、これはどのように正しいのでしょうか?

バグでしょうか?

答え1

削除されたファイルは過去のスナップショットによって引き続き参照されるため、説明されている動作は想定どおりです。

すでにお気づきのとおり、スナップショットによりスペースは使用済みのままになります。削除されたファイルを参照する最後のスナップショットを削除した後にのみ、対応するスペースが新しいファイルに再び使用可能になります。

ご了承くださいdfZFSファイルシステムの空き容量の正確な値を提供しないZFS は、1 つ以上のディスク (またはパーティション) を使用してプールを保存します。プールには、1 つ以上のデータセット (dfファイルシステムとして解釈されます) を含めることができ、それらはすべてプールの空き領域を共有します。スナップショットもプールを埋めます (データセットの一部として)。これにより、df個々のファイルシステムの「サイズ」レポートにさらに影響します。ZFS は、ファイルシステムとボリューム マネージャーの両方であり、オプションで RAID アレイを管理します。これは、たとえば、オプションで RAID 上の LVM 上の ext4 に似ています。

プールがディスクやパーティションとどのように対応しているかを確認するには、 を使用しますzpool status。Ubuntu では、一覧表示されているディスクまたはパーティションは、それぞれ と の下にあります/dev/disk/by-uuid//dev/disk/by-partuuid/プールの空き容量を確認するには、 を使用してすべてのプールを一覧表示できますzpool list。 を使用して、すべての ZFS データセット (「ファイル システム」) を一覧表示できます。ここでzfs listUSED列はデータセットによって使用されている容量 (特定のデータセットに属するファイル、子データセット、スナップショットを含む) を示します。はAVAILプールの残りの容量を示し、は、REFERこのファイル システムに固有のファイル (スナップショットや子ファイル システムではない) のサイズを示します。

関連情報