トップ回答者
ミラーリングによって高速化されたパリティの読み込み動作について

質問
-
こんにちは。
以下のページを参考にミラーリングによって高速化されたパリティの導入を検討しています。
https://docs.microsoft.com/ja-jp/windows-server/storage/refs/mirror-accelerated-parity
それにあたり、可能であれば、ミラーリングによって高速化されたパリティをまず単一のサーバで使用したいと考えています。
作成時に利用するコマンドを見る限り、記憶域スペースダイレクトでない通常の記憶域でも作成は出来るように見えます。
一方、「IOパフォーマンス」の項目には、以下の記載があります。
> 読み取り: パリティから読み取っても、パフォーマンスに大きな悪影響はありません。
また、通常の記憶域階層では、タスクスケジューラの「Storage Tiers Optimization」から実行される deflag /G によって記憶域階層の最適化が行われるものと理解しています。
> ミラーおよびパリティが同じメディアの種類で構築されている場合、読み取りのパフォーマンスは同じになります。
> ミラーおよびパリティが異なるメディアの種類で構築されている場合 (ミラーリング SSD とパリティ HDD など)、記憶域スペース ダイレクトのキャッシュにホット データをキャッシュしてパリティからの読み取りを高速化できます。
これらの記載より、
1. 一度HDD層に配置されたデータはSSD層に再配置されない
2. 読み込み時の高速化はS2Dの機能により行う
3. S2Dのキャッシュはミラーとは別のSSDを利用する
4. 通常の記憶域にはこのキャッシュ機能はない
というように読み取りましたが、この認識で合っているかどうかを教えて頂けますでしょうか。
この処理は、ミラーリングによって高速化されたパリティ の環境下でも有効でしょうか。- 編集済み edaat 2019年1月22日 3:18
回答
-
S2Dでない記憶域スペース(SS)でMirror accelerated parityを用いる場合かつ、SSD+HDDで階層を構築した場合に読み込みキャッシュが利用される点は、断定的に書いてしまいましたが私の理解です。
繰り返しになりますが、そもそもMirror accelerated parityはS2Dで提供されている機能で、SSでの利用については公式ドキュメントには明確には記載されていません。私も実機で挙動を確認仕切れているわけではないので必ずしも正しくないかもしれませんが、以下のように理解しています。
- S2Dが利用できるWindows Server 2016以降では、SSでもMirror accelerated parityを構成することができる
Storage Spaces Tiers in Windows Server 2016 configuration question - その際の挙動は、S2Dで解説されている挙動と基本的には同じ
Mirror accelerated parityはReFSの機能強化により実現されているところが大きく、このあたりのReFSの挙動はS2DでもSSでも同じではないかと思います。 - (ドキュメントにはS2Dの記載しかないが)おそらくSSD+HDDでの構成時は読み込みキャッシュも利用可能
根拠としては、手元の環境で異なるメディアタイプを利用した記憶域階層を構築すると、SSでもS2Dのキャッシュの振る舞いとしてドキュメントで解説されている動作をしていることがあります。メディアタイプによるキャッシュの振る舞いはS2DでもSSでも同様と思います。
米国のフォーラムでも同様のことが報告されています。
Is 3-tier Storage on Single Windows 2016 Server Possible?
上述の通り、またリンクを貼った米国のTechNetフォーラムでのMS社員回答にもある通り、SSでの動作について明確な記載は公式ドキュメントには記載がありませんので、正確な回答をお求めの場合はサポートを利用されることをお勧めします。
よろしくお願いします。
Masahiko Sada
Microsoft MVP for Cloud and Datacenter Management https://satsumahomeserver.com
# 参考となった回答には"投票"を、回答に相応しい回答には"回答としてマーク"を!- 回答としてマーク edaat 2019年1月23日 22:17
- S2Dが利用できるWindows Server 2016以降では、SSでもMirror accelerated parityを構成することができる
すべての返信
-
こんにちは。
それにあたり、可能であれば、ミラーリングによって高速化されたパリティをまず単一のサーバで使用したいと考えています。
作成時に利用するコマンドを見る限り、記憶域スペースダイレクトでない通常の記憶域でも作成は出来るように見えます。オフィシャルにはサポートされていませんが、ご認識の通りシングルサーバーでも作成可能です。
1. 一度HDD層に配置されたデータはSSD層に再配置されない
一度HDD層に配置されたデータでも、データの変更が生じて書き込みが発生した場合には、SSD階層に十分な空きがある場合はSSD層に書き込まれます。これは、参照されているサイトの「IOの動作:1.ミラーに書き込み、パリティから再割り当て」の動作によります。
2. 読み込み時の高速化はS2Dの機能により行う
パリティスペースに保存されたデータの読み込みは、S2Dのキャッシュを活用して高速化されます。
3. S2Dのキャッシュはミラーとは別のSSDを利用する
S2Dのキャッシュは、記憶域プール内に高速なメディアと低速なメディアが混在している場合に、高速なメディア上に作成されます。SSDとHDDの組み合わせでミラー(SSD)+パリティ(HDD)の構成をとる場合、キャッシュとミラースペースは同じSSD上の領域を利用します。
4. 通常の記憶域にはこのキャッシュ機能はない
通常の記憶域スペース(Storage Spaces)には、書き込みキャッシュ(Write-back Cache)が存在しますが、書き込みキャッシュですが読み込みの高速化はされません。読み込みが高速化されるのは、S2Dのキャッシュの特徴です。
記憶域スペースでも、Mirror accelerated Parityを用いる場合は、読み込みもキャッシュが利用されます。
S2Dのキャッシュについては、記憶域スペース ダイレクトのキャッシュについてがご参考になると思います。
また、通常の記憶域階層では、タスクスケジューラの「Storage Tiers Optimization」から実行される deflag /G によって記憶域階層の最適化が行われるものと理解しています。
この処理は、ミラーリングによって高速化されたパリティ の環境下でも有効でしょうか。Mirror accelerated Parityでは通常の記憶域階層とは異なり、階層間のデータローテーションはリアルタイムで行われます。
Masahiko Sada
Microsoft MVP for Cloud and Datacenter Management https://satsumahomeserver.com
# 参考となった回答には"投票"を、回答に相応しい回答には"回答としてマーク"を!- 編集済み Masahiko SadaMVP 2019年1月23日 0:32 訂正
- 回答としてマーク edaat 2019年1月23日 2:43
- 回答としてマークされていない edaat 2019年1月23日 2:43
-
回答ありがとうございます。
S2D周りの挙動があまり把握できていなかったのですが、おかげさまで疑問がクリアになりました。
実際に通常の記憶域上で作成してみたところ、シングルサーバでも作成が行えました。
ただ、S2Dでない記憶域の場合は、リアルタイムではなくdefragタスクにより階層間のローテーションが行われるものと予想していたのですが、イベントログにはdefragのエラーが出力されていました。
イベント 257 defrag
エラーが発生したため、ボリューム Data (D:) は最適化されませんでした: 要求された操作は、ボリュームを配置したハードウェアではサポートされていません。 (0x8900002A)
defrag /G の具体的な処理や仕様についての記載を見つけることが出来なかったのですが、
デフラグによる階層間のローテートは、列数が揃っている通常の記憶域階層でしか利用できないなどの制約があるのでしょうか。
-
誤解を抱かせてしまって申し訳ありません。
S2Dではなく、Mirror accelerated ParityではReFSのmeta dataを通じてリアルタイムでローテーションが行われますというのが正しいので、元の投稿も修正をさせていただきました。ご確認のほどよろしくお願いいたします、
Masahiko Sada
Microsoft MVP for Cloud and Datacenter Management https://satsumahomeserver.com
# 参考となった回答には"投票"を、回答に相応しい回答には"回答としてマーク"を! -
回答ありがとうございます。
https://docs.microsoft.com/ja-jp/windows-server/storage/refs/mirror-accelerated-parity
IO behaviorのWrites to Parityの項に以下の記載がありました。(日本語だとS2Dが普通の記憶域スペースとして書かれていて翻訳が変なので英語版です)
Reads: ReFS will read directly from the tier containing the relevant data. If parity is constructed with HDDs, the cache in Storage Spaces Direct will cache this data to accelerate future reads.
Reads never cause ReFS to rotate data back into the mirror tier.
S2Dでない記憶域において、パリティ上に配置されたデータが単に読み込みだけされる際にSSDを利用して高速化されることがあるのかどうかが気になっております。
以下のように解釈しましたが認識合っておりますでしょうか。
1.リアルタイムでのローテートは書き込み時のみに行われる
2.パリティ上のデータは直接読み込まれる
3.Storage Tiers OptimizationはMirror accelerated Parityでは利用されない
4.パリティ上のデータの読み込みは、パリティ上のデータの変更に伴いミラー側に書き込まれる場合を除きミラーに再配置されない
5.パリティからの読み込み時に特にSSDを利用する高速化は発生しない
-
リンク先に書かれている通りです。記載されている文書を引用します。
5は貴殿のご認識が異なります。1,4.
- Reads never cause ReFS to rotate data back into the mirror tier.
- If the incoming write modifies data that’s in parity, and ReFS can successfully find enough free space in mirror to service the incoming write, ReFS will first invalidate the previous data in parity and then write to mirror.
2.
- ReFS will read directly from the tier containing the relevant data.
3.
- ReFS actively rotates data between mirror and parity, in real-time.
5. Mirror がSSD, ParityがHDDですと、読み込みの際に参照されたパリティ上のデータはSSD上のキャッシュ領域にキャッシュされます。これにより(キャッシュが存在する限り)次回以降の読取パフォーマンスが向上します。
- If parity is constructed with HDDs, the cache in Storage Spaces Direct will cache this data to accelerate future reads.
Masahiko Sada
Microsoft MVP for Cloud and Datacenter Management https://satsumahomeserver.com
# 参考となった回答には"投票"を、回答に相応しい回答には"回答としてマーク"を! -
回答ありがとうございます。
あまり書き方がよくありませんでしたが、上記1~5はすべてS2Dではない記憶域を前提としておりました。
> 5. Mirror がSSD, ParityがHDDですと、読み込みの際に参照されたパリティ上のデータはSSD上のキャッシュ領域にキャッシュされます。これにより(キャッシュが存在する限り)次回以降の読取パフォーマンスが向上します。
> If parity is constructed with HDDs, the cache in Storage Spaces Direct will cache this data to accelerate future reads.
> 通常の記憶域スペース(Storage Spaces)には、書き込みキャッシュ(Write-back Cache)が存在しますが、書き込みキャッシュですが読み込みの高速化はされません。読み込みが高速化されるのは、S2Dのキャッシュの特徴です。
"the cache in Storage Spaces Direct"は、通常の記憶域の場合には存在しないため利用できないということでしょうか。
その場合、かつ4が正であるなら、通常の記憶域上で構築した場合において、一旦パリティに配置されたデータの読み取りパフォーマンスを向上する手段が特に用意されていないように思いました。
一方、最初に頂いた回答に以下の文がありました。
> 記憶域スペースでも、Mirror accelerated Parityを用いる場合は、読み込みもキャッシュが利用されます。
これは、「読み込みが高速化されるのはS2Dのキャッシュの特徴だが、記憶域スペースかつMirror accelerated Parityの場合は例外的に読み込みキャッシュが用意される」という意味でしょうか。その場合はキャッシュを利用して高速化出来るということになるかと思います。
こちらはドキュメント中のどの内容にあたる処理になりますでしょうか。
-
S2Dでない記憶域スペース(SS)でMirror accelerated parityを用いる場合かつ、SSD+HDDで階層を構築した場合に読み込みキャッシュが利用される点は、断定的に書いてしまいましたが私の理解です。
繰り返しになりますが、そもそもMirror accelerated parityはS2Dで提供されている機能で、SSでの利用については公式ドキュメントには明確には記載されていません。私も実機で挙動を確認仕切れているわけではないので必ずしも正しくないかもしれませんが、以下のように理解しています。
- S2Dが利用できるWindows Server 2016以降では、SSでもMirror accelerated parityを構成することができる
Storage Spaces Tiers in Windows Server 2016 configuration question - その際の挙動は、S2Dで解説されている挙動と基本的には同じ
Mirror accelerated parityはReFSの機能強化により実現されているところが大きく、このあたりのReFSの挙動はS2DでもSSでも同じではないかと思います。 - (ドキュメントにはS2Dの記載しかないが)おそらくSSD+HDDでの構成時は読み込みキャッシュも利用可能
根拠としては、手元の環境で異なるメディアタイプを利用した記憶域階層を構築すると、SSでもS2Dのキャッシュの振る舞いとしてドキュメントで解説されている動作をしていることがあります。メディアタイプによるキャッシュの振る舞いはS2DでもSSでも同様と思います。
米国のフォーラムでも同様のことが報告されています。
Is 3-tier Storage on Single Windows 2016 Server Possible?
上述の通り、またリンクを貼った米国のTechNetフォーラムでのMS社員回答にもある通り、SSでの動作について明確な記載は公式ドキュメントには記載がありませんので、正確な回答をお求めの場合はサポートを利用されることをお勧めします。
よろしくお願いします。
Masahiko Sada
Microsoft MVP for Cloud and Datacenter Management https://satsumahomeserver.com
# 参考となった回答には"投票"を、回答に相応しい回答には"回答としてマーク"を!- 回答としてマーク edaat 2019年1月23日 22:17
- S2Dが利用できるWindows Server 2016以降では、SSでもMirror accelerated parityを構成することができる