根据 ZFS,我有一个用户已达到配额。但是,我找不到他们如何使用所有空间。此文件系统没有后代文件系统,并且根据手册页,the userquota space calculation does not include space that is used by descendent datasets, such as snapshots and clones.
为什么 zfs 和 find&du 的差异如此之大?
# zfs get -H userquota@user1 zpool/zfs1 && zfs get -H userused@user1 zppol/zfs1
zpool/zfs1 userquota@user1 20G local
zpool/zfs1 userused@user1 20.0G local
# find $(zfs get -H -o value mountpoint zpool/zfs1) -user user1 -print0 | du -hc --files0-from=- | tail -n 1
5.9G total
此外,还有另一个用户似乎遇到了相反的问题。
# zfs get -H userquota@user2 zpool/zfs1 && zfs get -H userused@user2 zpool/zfs1
zpool/zfs1 userquota@user2 50G local
zpool/zfs1 userused@user2 14.9G local
# find $(zfs get -H -o value mountpoint zpool/zfs1) -user user2 -print0 | du -hc --files0-from=- | tail -n 1
81G total
答案1
在第一种情况下,也许 user1 的某些文件无法被 find(1) 发现,因为它们被安装在其上的某些 fs 隐藏了?
在第二种情况下,也许某些东西安装在 zfs1 挂载点下的某个地方,而您将其包含在空间计算中?
顺便,
zfs get -H -o value mountpoint zpool/zfs1
将仅打印挂载点,因此您不需要 cut(1)。