FreeBSD:如何知道启用压缩的zfs上的实际文件大小?


18

我在FreeBSD 9.0 x64上使用zfs并对此感到满意,但是我发现很难计算目录的真实大小,而不是压缩大小。

当然,我可以遍历目录并使用ls来计算每个文件的大小,但是我希望为此使用一些额外的密钥。

因此,如何确定压缩在zfs上的dir的目录大小

提前感谢您的建议,我简单地记得没有“查找./ -type d -exec ls -l'{}'\“这样的“简单”方法。| 糟糕...'!


4
请参阅以下答案以获取一些解决方案:serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey 2012年

3
如果使用重复数据删除,您会认为“实际”大小是多少?
ryandenki

Answers:


23

du与其-A标志一起使用:

root@pg78:/usr/local/pgsql/data/base/218204 # du -A -h 221350.219
1.0G    221350.219
root@pg78:/usr/local/pgsql/data/base/218204 # du -h 221350.219
501M    221350.219

非常便利。它甚至可以与-d递归相关:

root@pg78:/usr/local/pgsql/data/base # du -h -c -d0 .
387G    .
387G    total
root@pg78:/usr/local/pgsql/data/base # du  -A -h -c -d0 .
518G    .
518G    total

真的很好的解决方案!最好的地方就是“从盒子里直接出来”!
亚历山大

5
请注意,如果您的的版本du没有-A选项,则-A代表“表观尺寸”,可通过来使用--apparent-size。Ubuntu 16.04 / du 8.25似乎没有-A,因此似乎其他人可能会遇到该问题。
Jim Rubenstein

12

您可以安装GNU版本的du(1)

cd /usr/ports/sysutils/coreutils && make install clean

然后可以使用--apparent-size标志:

/space# zfs create space/comptest
/space# zfs set compression=on space/comptest
/space# dd if=/dev/zero of=/space/comptest/zerofile bs=1M count=40
/space/comptest# gdu
2K      .
/space/comptest# gdu --apparent-size
40961K  .

4
理由使用一个端口这一点。将基本操作系统du及其-A标志一起使用。
肖恩(Sean)

10
这对于Linux上的ZFS非常有用。GNU du没有-A选择。
雅加尔2014年

1
在Linux上的ZFS du具有--apparent-size从接受的解决方案在这里评论:serverfault.com/a/434655/145009
罗布佩斯利

0

尝试使用zpool命令:

zpool list
NAME      SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
storage  8.93T  6.59T  2.34T         -    60%    73%  2.13x  ONLINE  -

但df -sh显示结果(未重复数据删除的大小)

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
storage        zfs        16T   14T  1.9T  89% /storage
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.