ZFS 相當於 lvdisplay snap_percent

ZFS 相當於 lvdisplay snap_percent

我一直在使用 LVM 快照來備份 MySQL 資料庫。

FLUSH TABLES WITH READ LOCKlvcreate --snapshot --size 4G由於在快照處於活動狀態時資料庫處於活動狀態,因此(snap_percent用於追蹤拍攝快照時檔案系統原始狀態的增量的快照儲存量)開始增加。snap_percent每天對此進行監控,如果--size達到 80%,則增加。

我的問題是是否存在等效的統計數據或屬性ZFS用於決定快照消耗的空間佔池中剩餘空間的百分比?顯然,我不需要傳遞--size參數,zfs snapshot但如何確定基於該快照的克隆是否接近池的限制。

希望這是有道理的,現在我讀到它時,這聽起來確實是一個令人費解的問題。

答案1

ZFS 快照空間反映在檔案系統的消耗中。您可以透過監控下面最合適的欄位來得出您所要求的內容。

最後,您將觀察檔案系統的「可用」空間...看看「已使用」+「可用」如何小於「大小」?

root@deore:~# df -h /volumes/vol1/LA_Specialty
Filesystem             size   used  avail capacity  Mounted on
vol1/LA_Specialty      800G   391G   254G    61%    /volumes/vol1/LA_Specialty

我已經過濾了下面的輸出zfs get all pool/filesystem以顯示相關屬性。下面,我有一個 800GB 的檔案系統(配額),其中使用了 545GB。 391GB 是引用的,這意味著這是真實數據的大小。 154GB 用於快照。

root@deore:/volumes# zfs get all vol1/LA_Specialty
NAME               PROPERTY              VALUE                       SOURCE
vol1/LA_Specialty  type                  filesystem                  -
vol1/LA_Specialty  creation              Sat Sep 24 18:44 2011       -
vol1/LA_Specialty  used                  545G                        -
vol1/LA_Specialty  available             255G                        -
vol1/LA_Specialty  referenced            391G                        -
vol1/LA_Specialty  compressratio         2.96x                       -
vol1/LA_Specialty  quota                 800G                        local
vol1/LA_Specialty  reservation           none                        default
vol1/LA_Specialty  recordsize            16K                         local
vol1/LA_Specialty  mountpoint            /volumes/vol1/LA_Specialty  inherited from vol1
vol1/LA_Specialty  usedbysnapshots       154G                        -
vol1/LA_Specialty  usedbydataset         391G                        -
vol1/LA_Specialty  usedbychildren        0                           -
vol1/LA_Specialty  usedbyrefreservation  0                           -

然後查看快照...可以看到快照的單一大小以及它們引用的總資料大小。

root@deore:/volumes# zfs list -t snapshot      
NAME                                               USED  AVAIL  REFER  MOUNTPOINT
vol1/LA_Specialty@snap-daily-1-2013-09-07-020003  57.6G      -   389G  -
vol1/LA_Specialty@snap-daily-1-2013-09-08-020003  1.95G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-09-020008  3.42G      -   392G  -
vol1/LA_Specialty@snap-daily-1-2013-09-10-020003  3.05G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-11-020003  2.81G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-12-020004  2.65G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-13-020003  2.70G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-14-020003    25K      -   391G  -
vol1/LA_Specialty@snap-daily-1-latest               25K      -   391G  -

以及du快照目錄的列表......

root@deore:/volumes/vol1/LA_Specialty/.zfs/snapshot# du -skh *
 389G   snap-daily-1-2013-09-07-020003
 391G   snap-daily-1-2013-09-08-020003
 392G   snap-daily-1-2013-09-09-020008
 391G   snap-daily-1-2013-09-10-020003
 391G   snap-daily-1-2013-09-11-020003
 391G   snap-daily-1-2013-09-12-020004
 391G   snap-daily-1-2013-09-13-020003
 391G   snap-daily-1-2013-09-14-020003
 391G   snap-daily-1-latest

答案2

ZFS 快照中包含大量隱藏資料。一般來說我會推薦你

zfs list -ro space

其中顯示的輸出類似:

NAME                                 AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rootpool/export/home                 6.37G  11.7G     2.80G   8.87G              0          0
rootpool/export/[email protected]            -   134M         -       -              -          -
rootpool/export/[email protected]            -   320M         -       -              -          -
rootpool/export/[email protected]            -   251M         -       -              -          -
rootpool/export/[email protected]             -  1.02M         -       -              -          -
rootpool/export/[email protected]             -  1.04M         -       -              -          -
rootpool/export/[email protected]             -   850K         -       -              -          -
rootpool/export/[email protected]             -   747K         -       -              -          -
rootpool/export/[email protected]             -   326K         -       -              -          -
rootpool/export/[email protected]             -   454K         -       -              -          -
rootpool/export/[email protected]             -   319K         -       -              -          -

這將告訴您,我在此特定資料集上總共使用了 11.7G,快照使用了 2.8G,實際檔案系統(活動資料)使用了 8.87G。然而,每個快照旁邊的已使用大小非常具有誤導性。

如果您將快照的「已使用」欄位中的所有數字相加,您將發現它們與「USEDSNAP」總數相差甚遠。這是因為USED值是多少獨特的每個快照所佔的空間。

例如:

如果我有一個名為「newpool」的池,並且它有 2 個 1G 檔案(fileA 和 fileB):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     0.00G   2.0G              0          0

現在我斷言:

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     0.00G   2.0G              0          0
 newpool@snap1              11.0G    0.0G     0.00G   2.0G              0          0

現在我刪除1個1G檔(fileA):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     1.00G   1.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -

現在我建立一個新的1G檔案(fileC):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     1.00G   2.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -

現在我又拍了一遍

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     1.00G   2.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -
 newpool@snap2                  -    0.0G         -      -              -          -

現在我刪除 fileB(在兩個快照中):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     2.00G   1.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -
 newpool@snap2                  -    0.0G         -      -              -          -

注意快照 USED 欄位的表現不是反映變化?這是因為 fileB 被兩個快照引用,並且由於它不是唯一的,因此不會顯示在任何特定快照的已使用計數中。 USED​​SNAP 欄位反映該空間已被快照使用,但它不會將其與任何特定的快照關聯。

現在,如果您要刪除 snap1:

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     1.00G   1.0G              0          0
 newpool@snap2                  -    1.0G         -      -              -          -

snap2 現在顯示它已使用 1.0G,因為該資料現在對於該快照是唯一的。

USED​​ 欄位將顯示如果刪除該單一快照可以回收多少空間,但不會真正顯示該快照保留了多少空間。

既然我已經說了這一切——

如果您打算僅保留任何特定資料集的一個快照,那麼zfs 列表 -ro 空間命令應該會給你你正在尋找的東西。

如果您要同時擁有多個快照,則此數據可能會產生誤導。在處理多個快照時,不要自然而然地假設 USED 列具有任何意義。也,在快照目錄上是一個糟糕的選擇,因為它只顯示快照引用的內容,而不是快照實際使用的空間。

zfs 線上說明頁介紹了其中的一些內容,但它並不能很好地顯示這些關係。

答案3

ZFS 中沒有直接等效的東西。最接近的等價物是池中的可用空間,您可以從 獲得zfs list。在 ZFS 上,您的快照可以成長,直到整個池空間耗盡。

相關內容