Rsync

rsync-ing 後 ZFS 池大小差異

  • November 7, 2018

我正在嘗試將rsyncZFS 池中的一個卷數據傳輸到 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正在發送您卷中所有未寫入的塊,即使它們都已清零(因為它們從未被寫入)。嘗試使用--sparseto 的參數rsync(如本答案中所述)來解決此問題,然後--in-place用於後續同步以避免重新同步整個文件,而不僅僅是重新同步已更改的部分。

引用自:https://serverfault.com/questions/938780