由于我的备份设备空间不足,我在备份 ZFS 文件系统时遇到了问题。
我第一次忘记启用了压缩。但是,对于第二次尝试,我得到了文件系统的压缩比,还得到了du返回的表观大小。
它们就尺寸达成一致:
louis@watson:~$ sudo zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
watson 3.62T 2.74T 904G 75% 1.00x ONLINE -
louis@watson:~$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
watson 2.74T 846G 30K none
watson/gelato 2.73T 846G 2.67T /data/gelato
louis@watson:~$ sudo zfs get compressratio watson/gelato
NAME PROPERTY VALUE SOURCE
watson/gelato compressratio 1.64x -
正如du重申的那样,我预计 2.67 TB 压缩后可节省 1.64 倍以适应 6 TB 驱动器:
louis@watson:~$ cd /data/gelato/
louis@watson:/data/gelato$ sudo du -hs --apparent-size
4.6T .
但我在备份期间再次用完了空间,我不知道为什么。当 6 TB 驱动器空间不足时,剩余的复制空间可能不到 1 TB。这仍然超出了我认为可以解释差异的任何事情。
快照:
louis@watson:~$ sudo zfs list -o space
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
watson 846G 2.74T 0 30K 0 2.74T
watson/gelato 846G 2.73T 53.6G 2.67T 0 0
watson/home 846G 15.8G 57.3M 15.8G 0 0
有没有更好的方法来获取存储在压缩 ZFS 文件系统上的数据的实际大小?
我应该提到我使用 rsync -avh 来备份。在目标驱动器上,我看不到快照(...../.zfs/snapshot)。这是否意味着没有复制快照?
需要考虑的一些事项:
zfs list -o recsize watson/gelato
)。如果您有很多小数据但记录很大,那么空间就会被浪费。反过来,由于标题和元数据,空间也被浪费了,但通常效果并不明显。如果您通过 SMB/CIFS 共享文件系统,您可以使用 Windows 资源管理器文件夹属性窗口查看差异。copies
属性是否曾被设置为 1 或更大的值(过去可能已设置和禁用,并且在此期间会为任何新写入的数据创建副本)。usedbychildren
、usedbydataset
、usedbyrefreservation
和获取有关如何使用空间的更多详细信息usedbysnapshots
。他们总结为used
,所以这不是什么新鲜事,但可以帮助识别旧快照等。logicalused
和logicalreferenced
我建议
zpool list
。我还会检查快照的使用情况。您的环境中有快照吗?