如何解釋 ZFS 的快照報告「WRITTEN」為 4.26GB,但傳輸大小實際上是 31.4GB?

如何解釋 ZFS 的快照報告「WRITTEN」為 4.26GB,但傳輸大小實際上是 31.4GB?

當我在資料集上執行此查詢時

zfs list -d 1 -t all -o name,used,refer,written,compressratio sfg-backup/mx

我看到以下統計數據:

zfs list -d 1 -t all -o name,used,refer,written,compressratio sfg-backup/mx
NAME                                           USED     REFER  WRITTEN  RATIO
sfg-backup/mx                                  300G      276G        0  1.80x
sfg-backup/mx@madcow_2023-04-15_23:15:00_UTC  4.04G      275G     275G  1.28x
...
sfg-backup/mx@madcow_2023-04-21_01:15:00_UTC     0B      276G        0  1.28x
sfg-backup/mx@madcow_2023-04-21_02:15:00_UTC     0B      276G    4.26G  1.28x
sfg-backup/mx@madcow_2023-04-21_03:15:00_UTC     0B      276G        0  1.28x

但是,當我執行備份時,它具有最後一個快照,因為madcow_2023-04-21_01:15:00_UTC備份的大小不是 4.26GB 而是 31.4GB

syncoid --no-sync-snap 10.0.1.2:sfg-backup/mx work/sfg/mx
NEWEST SNAPSHOT: madcow_2023-04-21_03:15:00_UTC
Sending incremental sfg-backup/mx@madcow_2023-04-21_01:15:00_UTC ... madcow_2023-04-21_03:15:00_UTC (~ 31.4 GB):
31.5GiB 0:03:16 [ 163MiB/s] [==================================================================================================>] 100%

添加-c壓縮後,大小達到 4.3G(這些快照略有不同,但內容或多或少相同。

zfs send -nv -c -I sfg-backup/mx@madcow\_2023-04-24\_00:15:00\_UTC sfg-backup/mx@madcow\_2023-04-24\_03:15:00\_UTC
send from @madcow_2023-04-24_00:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_01:15:00_UTC estimated size is 215M
send from @madcow_2023-04-24_01:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_02:15:00_UTC estimated size is 4.09G
send from @madcow_2023-04-24_02:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_03:15:00_UTC estimated size is 624B
total estimated size is 4.30G

# without -c flag:
zfs send -nv  -I sfg-backup/mx@madcow\_2023-04-24\_00:15:00\_UTC sfg-backup/mx@madcow\_2023-04-24\_03:15:00\_UTC
send from @madcow_2023-04-24_00:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_01:15:00_UTC estimated size is 216M
send from @madcow_2023-04-24_01:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_02:15:00_UTC estimated size is 31.3G
send from @madcow_2023-04-24_02:15:00_UTC to sfg-backup/mx@madcow_2023-04-24_03:15:00_UTC estimated size is 624B
total estimated size is 31.5G

您能幫我了解是什麼原因導致尺寸差異如此之大嗎?為什麼ZFS會報告壓縮率為1.28,而傳輸壓縮率為31.5/4.3=7.3?

答案1

WRITTEN節目壓縮的實際寫入資料集/快照的資料。在sfg-backup/mx@madcow_2023-04-21_01:15:00_UTC和之間,madcow_2023-04-21_03:15:00_UTC您在先前的不可壓縮數據之上寫入了高度可壓縮的數據,而無需取消引用整個文件。

我假設您有一些可以隨機覆蓋的大檔案(即:虛擬磁碟映像檔、資料庫等),而您恰好寫入了 32G 的原始數據,這些資料變成了 4G 的壓縮資料。

zfs send -c按原樣發送壓縮記錄,僅傳輸壓縮的 4G 增量。另一方面,zfs send(不含-c)解壓縮磁碟上的數據,將它們擴展到完整的 32G 大小。

相關內容