差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
blog:2020:2020-12-13 [2020-12-14 17:14]
Decomo
blog:2020:2020-12-13 [2022-03-30 10:34] (現在)
Decomo
行 1: 行 1:
 ====== ZFSのSpecial Allocation ClassのSpecial VDEVの容量を見積もる ====== ====== ZFSのSpecial Allocation ClassのSpecial VDEVの容量を見積もる ======
 +
 +<WRAP info>(2022-03-30 追記)
 +
 +実際にテストしてみた→[[blog:2022:2022-02-24]]
 +</WRAP>
  
 SSDをSpecial VDEVとしてZFSプールに追加すれば[[blog:2020:2020-12-08|性能向上が見込めそう]]なのは分かった。続いてSpecial VDEVに必要な容量を見積もってみる。 SSDをSpecial VDEVとしてZFSプールに追加すれば[[blog:2020:2020-12-08|性能向上が見込めそう]]なのは分かった。続いてSpecial VDEVに必要な容量を見積もってみる。
行 28: 行 33:
 メタデータの使用量は簡単に確認できる。 メタデータの使用量は簡単に確認できる。
  
-Allocation Classにおける「メタデータ」とは、ファイルデータとzvolデータを除いたデータである。正確に言うと、レベル0のZFS plain file(いわゆる普通のファイルのデータ)とレベル0のzvol object(zvolのデータブロック)を除いた全てのデータがSpecial VDEVに載るとのこと。+Allocation Classにおける「メタデータ」とは、ファイルデータとzvolデータを除いたデータである。正確に言うと、レベル0のZFS plain file(いわゆる普通のファイルのデータ)とレベル0のzvol object(zvolのデータブロック)を除いたがメタデータとなり、それら全てがSpecial VDEVに載るとのこと。
  
 ''zdb -bbb プール名''を実行するとプールの詳細情報がズラズラ出るが、このうちTypeがTotalのASIZEからL0 ZFS plain fileとL0 zvol objectのASIZEを引いた値がメタデータサイズとなる。 ''zdb -bbb プール名''を実行するとプールの詳細情報がズラズラ出るが、このうちTypeがTotalのASIZEからL0 ZFS plain fileとL0 zvol objectのASIZEを引いた値がメタデータサイズとなる。
行 94: 行 99:
 0:, 1:, ..., 256: はブロックサイズを、その後ろはブロック数を表す。1ブロック512バイトなので、上記の8:の行は4096バイトブロックが158789個で約620MiBと読める。 0:, 1:, ..., 256: はブロックサイズを、その後ろはブロック数を表す。1ブロック512バイトなので、上記の8:の行は4096バイトブロックが158789個で約620MiBと読める。
  
-このプルの64KiB以下のレコードは7.9GiBだった。+各レコドサイズ以下のデータ量は下表の通りだった。 
 + 
 +^  レコードサイズ  ^  データ量 
 +|  4KiB以下 | 1.69GiB | 
 +|  8KiB以下 | 2.53GiB | 
 +|  16KiB以下 | 3.40GiB | 
 +|  32KiB以下 | 4.60GiB | 
 +|  64KiB以下 | 7.9GiB | 
 + 
 +ここでSpecial VDEVをフル活用するとして、全部盛りの7.9GiBを採用する。 
 + 
 +<WRAP info>(2021-12-14追記) 
 + 
 +FreeBSD 13.0 (OpenZFS 2.0)の''zdb -bbb''でBlock Size Histogramという、まんまの情報が出ることに気づいた。ご丁寧に対象ブロック以下の合計バイト数まで出してくれるので、一撃で見積もることができる。 
 +<code> 
 +Block Size Histogram 
 + 
 +  block   psize                lsize                asize 
 +   size   Count   Size   Cum.  Count   Size   Cum.  Count   Size   Cum. 
 +    512:   310K   155M   155M   218K   109M   109M      0      0      0 
 +     1K:   353K   394M   549M   190K   225M   334M      0      0      0 
 +     2K:   149K   402M   951M   150K   392M   726M      0      0      0 
 +     4K:   346K  1.42G  2.35G   139K   747M  1.44G      0      0      0 
 +     8K:   303K  2.96G  5.31G   113K  1.24G  2.67G   773K  9.06G  9.06G 
 +    16K:   391K  8.17G  13.5G   183K  3.49G  6.16G   613K  14.4G  23.4G 
 +    32K:   528K  23.7G  37.2G   138K  6.11G  12.3G   553K  25.4G  48.8G 
 +    64K:   945K  83.4G   121G   137K  11.6G  23.8G   592K  57.7G   107G 
 +   128K:  19.5M  2.44T  2.56T  21.3M  2.66T  2.68T  20.2M  4.22T  4.32T 
 +   256K:   198K  70.1G  2.63T  11.2K  4.00G  2.69T   125K  47.3G  4.37T 
 +   512K:  39.6M  19.8T  22.4T  40.0M  20.0T  22.7T  39.7M  33.5T  37.9T 
 +     1M:   602K   602G  23.0T   602K   602G  23.3T   602K  1009G  38.8T 
 +     2M:      0      0  23.0T      0      0  23.3T      0      0  38.8T 
 +     4M:      0      0  23.0T      0      0  23.3T      0      0  38.8T 
 +     8M:      0      0  23.0T      0      0  23.3T      0      0  38.8T 
 +    16M:      0      0  23.0T      0      0  23.3T      0      0  38.8T 
 +</code> 
 + 
 +上記は26TBのプール(使用量は23TB)で、64KB以下のブロックが121GBだからプールに占める割合は0.46%となる。Special VDEVの容量は、一般的な用途ではプールの1~2%を確保しておけば十分なのかも。 
 +</WRAP> 
  
 ===== Special VDEVサイズの見積もり ===== ===== Special VDEVサイズの見積もり =====
  • blog/2020/2020-12-13.1607933665.txt.gz
  • 最終更新: 2020-12-14 17:14
  • by Decomo