ZFS는 zdb -S 탱크의 출력을 해석합니다.

ZFS는 zdb -S 탱크의 출력을 해석합니다.

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를 낭비해도 괜찮을 때 가치가 있습니다. 예를 들어 Enterprise NVMe 풀에 대해 이야기하고 있습니다.

그러나 이것이 어떤 대가를 치르게 됩니까?

이것이 제가 언급한 두 번째 사항입니다. 첫 번째 히트는 RAM에 있습니다. RAM에 중복 제거 테이블을 저장해야 합니다. 이를 저장할 RAM이 없으면 시스템이 충돌하여 풀을 마운트할 수 없게 됩니다. 최신 버전의 ZFS(OpenZFS 2.0 등)에는 몇 가지 개선 사항이 있지만 이와 관련하여 변경된 사항이 있는지는 알 수 없습니다.

이를 염두에 두고 첫 번째 열의 마지막 줄인 총 블록 수를 얻으면 됩니다.49.6M

각 중복 제거 테이블에는 320바이트가 필요하므로 블록 수에 지정된 중복 제거 테이블에 필요한 공간을 곱하면 필요한 양의 RAM을 얻을 수 있습니다.

49.6M * 320 bytes = 15.872MB ~ 15.5GB

그래서 당신은 거의 낭비하게 될 것입니다16 기가 바이트중복 제거가 불가능한 데이터를 중복 제거하기 위한 시스템 RAM의 용량입니다. 해당 16GB는 ARC와 같은 시스템의 중요한 부분에서 제거되어 풀 속도를 향상시킵니다.

그래서 아니야. 다음과 같은 경우를 제외하고 중복 제거는 가치가 없습니다.

  • 매우 비싼 스토리지 하위 시스템을 보유하고 있습니다.
  • 귀하의 데이터는 쉽게 중복 제거될 수 있습니다

관련 정보