![rsync 后 ZFS 池大小出现差异](https://linux22.com/image/729330/rsync%20%E5%90%8E%20ZFS%20%E6%B1%A0%E5%A4%A7%E5%B0%8F%E5%87%BA%E7%8E%B0%E5%B7%AE%E5%BC%82.png)
我正在尝试将rsync
ZFS 池中的一个卷的数据复制到 exfat 格式的驱动器。该卷只有 1.3 TB,但最多rsync
可以同步 3+ TB 的数据。我关闭了它,rsync
以便找出问题所在。
ZFS 池:
ubuntu@ubuntu:~$ zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup 7.25T 3.59T 3.66T - 0% 49% 1.00x ONLINE -
卷及其挂载点:
ubuntu@ubuntu:~$ zfs list
NAME USED AVAIL REFER MOUNTPOINT
backup 2.61T 2.49T 35.4M /backup
backup/.system 1.97M 2.49T 140K legacy
backup/.system/configs-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 593K 2.49T 593K legacy
backup/.system/cores 692K 2.49T 692K legacy
backup/.system/rrd-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 128K 2.49T 128K legacy
backup/.system/samba4 337K 2.49T 337K legacy
backup/.system/syslog-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 128K 2.49T 128K legacy
backup/vol1 1.26T 2.49T 1.26T /backup/vol1
backup/vol2 128K 2.49T 128K /backup/vol2
backup/vol3 1.78G 2.49T 1.78G /backup/vol3
backup/vol4 1.34T 2.49T 1.34T /backup/vol4
backup/vol5 4.51G 2.49T 4.51G /backup/vol5
磁盘大小/backup/vol1
:
ubuntu@ubuntu:~$ du -sh /backup/vol1
1.3T /backup/vol1
rsync
经过几天的操作后复制了多少数据:
ubuntu@ubuntu:~$ rsync -avzh --progress --no-o --no-g /backup/vol1 /media/ubuntu/external_drive/freenas/
...
...
ubuntu@ubuntu:~$ du -sh /media/ubuntu/external_drive/freenas/vol1
3.2T /media/ubuntu/external_drive/freenas/vol1
在看到转移了多少之后,我将其杀了。
答案1
为了扩展我上面的评论,我会想到在两种情况下会发生这种情况:
- 您发送的文件/卷正在使用块保存技术(压缩、重复数据删除或快照/克隆)。ZFS 在内部为您节省了一些空间,因此 ZFS 属性
used
很小,但仍然必须读取所有逻辑(未压缩、未重复、未快照共享)数据,因为它不知道这些功能。您可以通过运行(或如果您有快照)来rsync
确定有多少逻辑数据。zfs list -o logicalused
logicalreferenced
- 您尝试发送的文件/卷很稀疏。从上面的评论来看,我相信您遇到的情况就是这样。
rsync
正在发送卷中所有未写入的块,即使它们都被清零(因为它们从未被写入过)。尝试使用 参数--sparse
,rsync
如中所述这个答案,来解决此行为,然后用于--in-place
后续同步,以避免重新同步整个文件而不仅仅是已更改的部分。