Rsync
rsync-ing 後 ZFS 池大小差異
我正在嘗試將
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
在看到轉移了多少後,我將其殺死。
只是為了擴展我上面的評論,這將在我能想到的兩種情況下發生:
- 您發送的文件/卷正在使用塊保存技術(壓縮、重複數據刪除或快照/複製)。ZFS 在內部為您節省了一些空間,因此 ZFS 屬性
used
很小,但rsync
仍然必須讀取所有邏輯(未壓縮、未重複數據、未快照共享)數據,因為它不知道這些功能。zfs list -o logicalused
您可以通過執行(或者logicalreferenced
如果您有快照)來計算出有多少邏輯數據。- 您嘗試發送的文件/卷很少。從您上面的評論中,我相信您就是這種情況。
rsync
正在發送您卷中所有未寫入的塊,即使它們都已清零(因為它們從未被寫入)。嘗試使用--sparse
to 的參數rsync
(如本答案中所述)來解決此問題,然後--in-place
用於後續同步以避免重新同步整個文件,而不僅僅是重新同步已更改的部分。