ZFS 解釋 zdb -S Tank 的輸出

ZFS 解釋 zdb -S Tank 的輸出

我想知道啟動 zfs 重複資料刪除是否會支付我的費用,因此我運行了該命令, zdb -S tank但知道我需要一些幫助來解釋輸出。

Simulated DDT histogram:

bucket              allocated                       referenced
______   ______________________________   ______________________________
refcnt   blocks   LSIZE   PSIZE   DSIZE   blocks   LSIZE   PSIZE   DSIZE
------   ------   -----   -----   -----   ------   -----   -----   -----
     1    49.2M   6.15T   6.15T   6.14T    49.2M   6.15T   6.15T   6.14T
     2     352K   42.0G   42.0G   42.0G     725K   86.3G   86.3G   86.4G
     4    7.99K    913M    913M    916M    37.7K   4.20G   4.20G   4.21G
     8    1.43K    161M    161M    161M    14.6K   1.58G   1.58G   1.58G
    16      623   67.1M   67.1M   67.4M    12.2K   1.32G   1.32G   1.33G
    32       73   7.37M   7.37M   7.43M    2.65K    268M    268M    270M
    64      717   4.23M   4.23M   7.46M    48.3K    392M    392M    611M
   128        4    257K    257K    266K      689   40.9M   40.9M   42.6M
   256        2    128K    128K    133K      802   57.8M   57.8M   59.3M
   512        2      1K      1K   10.7K    1.37K    703K    703K   7.32M
    4K        1    128K    128K    128K    7.31K    935M    935M    934M
   16K        1    512B    512B   5.33K    20.0K   10.0M   10.0M    107M
   64K        1    128K    128K    128K    93.0K   11.6G   11.6G   11.6G
  512K        1    128K    128K    128K     712K   89.0G   89.0G   88.9G
 Total    49.6M   6.19T   6.19T   6.18T    50.9M   6.34T   6.34T   6.33T

dedup = 1.02, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.03

提前致謝。

答案1

您應該查看此直方圖的兩件事。第一個也是最明顯的一個是dedup它結尾的表達式。沒有什麼好說的,因為它是簡單的數學。在您的情況下,重複資料刪除只會節省2% 的空間,而且由於您不使用壓縮(您應該先使用壓縮,因為它可以節省空間並為您提供效能,因為I/O 比CPU 時間成本更高)像 LZ4 這樣的高效演算法),這就是啟用重複資料刪除後您將獲得的邊際增益:2~3%。

當有效空間節省高於 2.0 並且您的儲存子系統非常昂貴,以至於可以浪費記憶體和 CPU 來處理重複資料刪除時,重複資料刪除就開始變得有價值。例如,我們正在討論企業 NVMe 池。

但這要付出什麼代價呢?

這是我提到的第二件事。第一個命中將在您的 RAM 中。您需要將重複資料刪除表儲存在 RAM 上。如果沒有 RAM 來容納它,系統就會崩潰,並且您將無法安裝該池。新版本的 ZFS(如 OpenZFS 2.0)有一些進步,但我不知道這方面是否有任何變化。

考慮到這一點,您只需獲得區塊的總數,即第一列的最後一行:49.6M

由於每個重複資料刪除表需要 320 字節,因此您只需將區塊數乘以給定重複資料刪除表所需的空間,即可獲得所需的 RAM 量:

49.6M * 320 bytes = 15.872MB ~ 15.5GB

所以你幾乎會浪費16 GB系統 RAM 只是為了對非重複資料刪除友善的資料進行重複資料刪除。這 16GB 將從系統的重要部分(例如 ARC)中刪除,這只會加速您的池。

所以不行。重複資料刪除不值得,除非:

  • 您擁有極為昂貴的儲存子系統
  • 您的資料可以輕鬆地進行重複資料刪除

相關內容