gpt4 book ai didi

linux - ZFS 显示可用空间,无法删除

转载 作者:太空狗 更新时间:2023-10-29 12:25:22 24 4
gpt4 key购买 nike

我有一个旧的 zfs 池(创建于 05-2012 年),它在 debian 7.6 上运行并且有 26GB 的空闲空间(58TB 中的),如 df 所报告的。我刚刚重新安装了操作系统(debian 8.7),现在池在 df 中显示为 0 字节可用,但在 zpool 列表中显示为 1.04Tbyte“免费”。

我有两个问题:

1) zpool list (=1.04Tbytes) 中的 FREE 和 zfs list (=0) 中的 AVAIL 有什么区别?

2) 我可以做些什么来使用这个 1TB 的可用空间?我已经删除了所有快照,这没有任何区别...

提前致谢。

% df -h /contentA
Filesystem Size Used Avail Use% Mounted on
contentA 58T 58T 0 100% /contentA

% zpool list contentA
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
contentA 65T 64.0T 1.04T 16.0E - 98% 1.00x ONLINE -

% zfs list contentA
NAME USED AVAIL REFER MOUNTPOINT
contentA 58.0T 0 58.0T /contentA

% uname -a
Linux myserver 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux

% cat /etc/debian_version
8.7

最佳答案

zfs(8) 手册页中,available 表示:

The amount of space available to the dataset and all its children,
assuming that there is no other activity in the pool. Because space
is shared within a pool, availability can be limited by any number of
factors, including physical pool size, quotas, reservations, or other
datasets within the pool.

一般来说,首先要寻找差异的地方是该数据集之外的东西,例如同一池中不同数据集上的预留集。

但是,从您的帖子看来,您针对 list 运行的数据集可能是您的池的根数据集,它应该考虑那里的所有其他子数据集。在某些情况下,您的池配置可能会导致这样的差异,详见 Oracle docs .

但是(再一次),这些通常适用于在您的逻辑数据大小扩展时冗余和元数据存储所需的空间(即镜像池显示的可用空间是free 空间,因为你写入数据集的每个字节都必须复制到两个地方)。由于您的数据集的 available 为零,显然这不仅仅是考虑 future 写入的预测开销。

这让我想到了最后的解释。 ZFS 在其空间核算中内置了一个安全机制,以防止用户填充超过 63/64 满的池(这让我感到非常接近你的情况的比例,因此几乎可以肯定你正在达到的限制)。因为 ZFS 总是需要新的空间来修改磁盘上的状态(因为写时复制),如果你超出了这个限制,池可能不再能够删除东西来为新的写入释放空间,导致它变为只读 - 永久。尽管可以通过修补 ZFS 或更改可调参数来绕过限制,但我不推荐这样做!

关于linux - ZFS 显示可用空间,无法删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43236920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com