我正在使用 ZFS 快照来维护对备份文件系统的历史版本的访问。
fadedbee@backup:/backups$ sudo zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
bpool/backups@2018-06-01 96.8M - 18.3G -
bpool/backups@2018-06-18 96.8M - 18.3G -
bpool/backups@2018-06-19 96.8M - 18.3G -
bpool/backups@2018-06-20 96.4M - 18.3G -
bpool/backups@2018-06-21 96.2M - 18.3G -
bpool/backups@2018-06-22 63.3M - 18.3G -
bpool/backups@2018-06-23 62.1M - 18.3G -
bpool/backups@2018-06-24 62.1M - 18.3G -
bpool/backups@2018-06-25 96.1M - 18.3G -
bpool/backups@2018-06-26 96.0M - 18.3G -
bpool/backups@2018-06-27 97.1M - 18.3G -
bpool/backups@2018-06-28 96.2M - 18.3G -
bpool/backups@2018-06-29 62.7M - 18.3G -
bpool/backups@2018-06-30 63.4M - 18.3G -
bpool/backups@2018-07-01 63.0M - 18.3G -
bpool/backups@2018-07-02 96.5M - 18.3G -
bpool/backups@2018-07-03 96.6M - 18.3G -
bpool/backups@2018-07-04 96.2M - 18.3G -
bpool/backups@2018-07-05 96.7M - 18.3G -
bpool/backups@2018-07-06 62.5M - 18.3G -
bpool/backups@2018-07-07 62.8M - 18.3G -
bpool/backups@2018-07-08 63.9M - 18.3G -
bpool/backups@2018-07-09 97.3M - 18.3G -
bpool/backups@2018-07-10 96.3M - 18.3G -
bpool/backups@2018-07-11 97.6M - 18.3G -
bpool/backups@2018-07-12 98.3M - 18.3G -
bpool/backups@2018-07-13 63.1M - 18.3G -
bpool/backups@2018-07-14 62.6M - 18.3G -
bpool/backups@2018-07-15 63.3M - 18.3G -
bpool/backups@2018-07-16 97.5M - 18.3G -
bpool/backups@2018-07-17 0 - 18.3G -
fadedbee@backup:/backups$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
bpool 21.0G 3.49T 96K /bpool
bpool/backups 21.0G 3.49T 18.3G /backups
这些快照的 USED 大小是每次快照与现在的差异大小吗?还是快照之间的差异大小?
我知道我可以通过删除快照来测试这一点,但这个问题不够重要,不值得这样做或设置测试场景。
答案1
来自 zfs 手册页:
创建快照(请参阅“快照”部分)时,其空间最初在快照和文件系统之间共享,并且可能与以前的快照共享。随着文件系统的变化,以前共享的空间变为快照独有的,并计入快照的使用空间中。此外,删除快照可以增加其他快照独有的(并被其他快照使用)空间量。
因此,USED
zfs list 输出中的列并不反映该快照与某些其他快照或数据集之间的差异,而是具体反映该快照唯一引用的数据。
这意味着,例如,如果两个快照引用同一个 100MB 文件,而该文件已从主数据集中删除,则这不会反映在USED
任一快照的列中。如果其中一个快照被删除,它将显示在USED
另一个快照的列中;因为它现在是唯一引用该文件的快照。
一个简单的思考方法是,该USED
列显示如果删除该数据集或快照,将释放多少空间。