从 zfs 驱动器移动或删除的文件不会释放驱动器上的空间

从 zfs 驱动器移动或删除的文件不会释放驱动器上的空间

我正在使用 ubuntu 21.10,使用 zfs 文件系统重新安装。如果我删除一些文件,然后清空垃圾箱,或将它们移动到另一个(外部)驱动器),这不会释放驱动器上的空间。实际上 df 显示:rpool/ROOT/ubuntu_zooqq5 35G 4,5G 31G 13% / 其中 35GB 是驱动器大小。

每次我向磁盘添加一些文件时,驱动器大小就会减小。

我通过使用脚本删除 zfs 快照来恢复空间(并且驱动器大小增加),但这怎么可能正确呢?

也许这是一个错误?

答案1

已删除的文件仍被过去的快照引用,因此您所描述的是预期的行为。

正如您已经观察到的,由于快照,空间仍然被使用;只有删除引用已删除文件的最后一个快照后,相应的空间才可再次用于新文件。

注意df没有提供 ZFS 文件系统中可用空间的准确值。ZFS 使用一个或多个磁盘(或分区)来存储池,池中可以包含一个或多个数据集(解释为df文件系统),所有这些数据集共享池的可用空间。快照也会填满池(作为数据集的一部分),从而进一步影响df单个文件系统的“大小”报告。ZFS 既是文件系统,又是卷管理器,还可以选择管理 RAID 阵列;它类似于 LVM 上的 ext4(可选 RAID)。

要查看池如何与磁盘或分区对应,可以使用zpool status。在 Ubuntu 中,您可以分别在/dev/disk/by-uuid/和下找到列出的磁盘或分区。要查看池中的可用空间,您可以通过 列出所有池。您可以通过 列出所有 ZFS 数据集(“文件系统”),其中列表示数据集使用的空间,其中包括属于特定数据集的文件、子数据集和快照;表示池中的剩余空间,表示特定于此文件系统的文件的大小,即不是快照或子文件系统。/dev/disk/by-partuuid/zpool listzfs listUSEDAVAILREFER

相关内容