blog:2021:2021-08-06

差分

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

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

次のリビジョン
前のリビジョン
blog:2021:2021-08-06 [2021-08-06 15:21]
Decomo 作成
blog:2021:2021-08-06 [2021-08-10 10:59] (現在)
Decomo
行 1: 行 1:
-====== OpenZFSにRAIDZ Expansionのプルリクがられ! ======+====== OpenZFSにRAIDZ Expansionのプルリクができてた ======
  
 今まで気づかなかったが、2か月ほど前の6/11に、待望の[[https://github.com/openzfs/zfs/pull/12225|RAIDZ Expansionのプルリク]]がOpenZFSに立てられていた!![[blog:2019:2019-05-14|2018年のプリアルファコード]]以来目立った動きがなく、どうなっとんじゃーいって感じだったが、[[https://wiki.freebsd.org/DevSummit/202106|June 2021 FreeBSD Developer Summit]]での報告の翌日、PRが作られた模様。 今まで気づかなかったが、2か月ほど前の6/11に、待望の[[https://github.com/openzfs/zfs/pull/12225|RAIDZ Expansionのプルリク]]がOpenZFSに立てられていた!![[blog:2019:2019-05-14|2018年のプリアルファコード]]以来目立った動きがなく、どうなっとんじゃーいって感じだったが、[[https://wiki.freebsd.org/DevSummit/202106|June 2021 FreeBSD Developer Summit]]での報告の翌日、PRが作られた模様。
行 5: 行 5:
 コードレビューは始まったばかり、というかまだ進んでない?ようでリリースはまだまだ先っぽい。OpenZFSプロジェクトの状況としては、現在は2.1リリース作業の真っただ中で、取り込まれるのはどんなに早くとも来年リリースのOpenZFS 2.2あたりと見込まれている。まぁ、かなり大きい変更なのでレビューもテストも時間がかかるだろうしね、仕方ないね。 コードレビューは始まったばかり、というかまだ進んでない?ようでリリースはまだまだ先っぽい。OpenZFSプロジェクトの状況としては、現在は2.1リリース作業の真っただ中で、取り込まれるのはどんなに早くとも来年リリースのOpenZFS 2.2あたりと見込まれている。まぁ、かなり大きい変更なのでレビューもテストも時間がかかるだろうしね、仕方ないね。
  
-PRの議論を見るに、拡張時の動である「既存データのストライプサイズは変更しない=データ/パリティ比率は変わらない」という点が、結構引っかかってるっぽい雰囲気。+PRの議論を見るに、拡張時の動である「既存データのストライプサイズは変更しない=データ/パリティ比率は変わらない」という点が、結構引っかかってるっぽい雰囲気。
  
-RAIDZ ExpansionでRAIDZにストレージを追加した場合、RAIDの物理ストライプ幅は拡張後のサイズとなる。対する論理ストライプ幅については、既存のデータは拡張前のサイズ、再書き込みを含む新規データは拡張後のサイズとなる。具体的な数値を当てはめると、HDD 5本のRAIDZ2プールをHDD 6本に拡張した場合、既存データは論理5ストライプ(データ/パリティ比=3:2)のままで、新規データは論理6ストライプ(データ/パリティ比=4:2)が割り当てられる。データによってストライプ幅が異なること自体は、RAIDZの元からの仕様なので問題ないらしい。+RAIDZ ExpansionでRAIDZ vdevにストレージを追加した場合、vdevの物理ストライプ幅は拡張後のサイズとなる。対する論理ストライプ幅については、既存のデータは拡張前の、再書き込みを含む新規データは拡張後のとなる。具体的な数値を当てはめると、HDD 5本のRAIDZ2プールをHDD 6本に拡張した場合、既存データは論理5ストライプ(データ/パリティ比=3:2)のままで、新規データは論理6ストライプ(データ/パリティ比=4:2)で記録される。データによってストライプ幅が異なること自体は、RAIDZの元からの仕様なので問題ないらしい。
  
-一方で、この仕様のため既存RAIDZプールの使用率が高ければ高いほど、RAIDZ Expansionでプール拡張しても見かけの空き容量は増えにくくなる。例えば、1TB×4のRAIDZ1プールに1TB書き込むとプール使用率は33%なのに対し、1TB×3のRAIDZ1プールに1TB書き込んだあと(この時点での使用率は66%)で1TBのHDDを追加しても使用率は66%のままとなる。既存データのデータ/パリティ比が変わらない以上、この容量オーバーヘッドは避けられない。+一方で、この仕様のため既存RAIDZプールの使用率が高いほど、RAIDZ Expansionでプール拡張実効空き容量は増えにくくなる。例えば、1TB×4のRAIDZ1プールに1TB書き込むとプール使用率は33%なのに対し、1TB×3のRAIDZ1プールに1TB書き込んだあと(この時点での使用率は66%)で1TBのHDDを追加しても使用率は66%のままとなる。既存データのデータ/パリティ比が変わらない以上、この容量オーバーヘッドは避けられない。
  
-使ってくうちに既存デ新しいストライプ幅置き換わっいくので、徐々効率は改善されいく。このあたりの挙動は他のプロパテと一緒でZFSの思想っぽいというかなんというか。可及的速やかプール容量を最大効率で増やした!という場合には厳しいだろうが、現実的にそんなケースがどれだけあるだろうか?そもそもZFS的にそんカツカツ運用するなよって感じ?+RAIDZ ExpansionでRAIDZプルは何度で拡張可能だが、こんな感じゆえ、最小構成で始め必要応じ後からデスクを追加する、という戦略は取りいのは否めい。
  
-拡張時に全データの再配置を行ってるにもかかわらず、既存データの論理ストライプ幅を変えないは、実装容易性RAIDZ1/2/3の冗長性担保のためらしい+使っていく中で既存データも新しいストライプ幅に置き換わり、このオーバーヘッドは徐々に解消されてく。このあたりの挙動プロパティ一緒で、ZFS思想っぽいというかなんというか。可及的速やかにプール容量を最大効率で増やしい!という場合には厳しいだろうが、現実的にそんなケースがどれだけあるのだろうか?そもそもZFS的にはそんなカツカツ運用するなよって感じ?
  
-このまま無事マージされて欲しいところ+拡張時に全データの再配置を行ってるにもかかわらず、既存データの論理ストライプ幅を変えないは、実装の簡便さと拡張中のRAIDZ1/2/3の冗長性担保が理由とのこと。 
 + 
 +このまま無事マージされて欲しい。
  
 ===== 参考サイト ===== ===== 参考サイト =====
行 23: 行 25:
   * [[https://wiki.freebsd.org/DevSummit/202106|DevSummit/202106 - FreeBSD Wiki]]   * [[https://wiki.freebsd.org/DevSummit/202106|DevSummit/202106 - FreeBSD Wiki]]
   * [[https://louwrentius.com/zfs-raidz-expansion-is-awesome-but-has-a-small-caveat.html|ZFS RAIDZ expansion is awesome but has a small caveat]]   * [[https://louwrentius.com/zfs-raidz-expansion-is-awesome-but-has-a-small-caveat.html|ZFS RAIDZ expansion is awesome but has a small caveat]]
 +  * [[http://storagegaga.com/raidz-expansion-and-draid-excellent-openzfs-adventure/|RAIDZ expansion and dRAID excellent OpenZFS adventure - Storage Gaga]]
  • blog/2021/2021-08-06.1628230886.txt.gz
  • 最終更新: 2021-08-06 15:21
  • by Decomo