X

Windows Server 2012 R2 の記憶域スペースは、Write-Back Cache と 記憶域階層 をサポート

Write-Back Cache

Windows Server 2012 R2 Preview&System Center 2012 R2 Preview 評価ガイドでは、ライト バック キャッシュ と記載されています。

ライトバックキャッシュでは、記憶域プールに属しているSSDのある一部を、キャッシュとして書込キャッシュとして指定出来るようになります。

SSDが記憶域プールに含まれていると、その上に作成する記憶域スペースではデフォルトで1GBのライトバックキャッシュが作成されます。ライトバックキャッシュのサイズは、記憶域スペースのプロパティで、WriteCacheSize から確認出来ます。 WriteCacheSize は最大でも16GB(クラスター記憶域の場合は10GB)以内とすることが推奨されており、それ以上の大きなサイズのキャッシュを用いることは推奨されていません(参考:Performance Tuning for Subsystems)。

WriteCacheSize は、PowerShellのcmdletからのみ指定可能です。New-VirtualDisk で記憶域スペースを作成する際に、-WriteCacheSize で指定可能です。
(help で引いても出てこないのですが、山市良のえぬなんとかわーるど: ちょっと訂正しました: R2 Preview 評価ガイドと TechNet 記事や、Creating tiered Storage Spaces in Server 2012 R2 | DR.MIRU’s Blogを参考にさせて頂きました)

これまでの記憶域スペースでは、パリティを作成する場合に、Journal ディスクとしてSSDを指定することでパフォーマンス調整が出来ました(記憶域スペースに関する理解を深める(パラメーター設定と振る舞い):(4) | 薩摩藩中仙道蕨宿別邸)が、今後は他の回復性を指定した場合でも、SSDを利用した書込キャッシュを利用することでパフォーマンスの向上が望めます。

記憶域階層

記憶域階層 では、高速階層(SSD)と標準階層(HDD)の2種類の階層を構成し、頻繁に利用するファイル(正確には1MB単位のセグメント)は高速階層に、そうでないファイルは標準階層に配置します。物理ディスクがこの階層のどちらに属するかはOSが認識したメディアタイプ(HDD/SSD)を元に、自動的に構成されます。

標準の設定では、セグメント単位にどちらの階層に配置すべきかの判定は、毎日1時に実施され、セグメントは移動されます。また、管理者の指定により手動で実行することも出来ます。

記憶域階層を有効にした場合、1つのファイルは

  • OSの判断により、ファイル全体が高速階層上に配置される
  • OSの判断により、ファイル全体が標準階層上に配置される
  • OSの判断により、1つのファイルのあるセグメントは高速階層上に、あるセグメントは標準階層上に配置される

といったことが起こりえます。また、これに加えて 管理者がファイルの保存先を明示的に指定することで、

  • 管理者の指定に基づき、ファイル全体が高速階層上に配置される
  • 管理者の指定に基づき、ファイル全体が標準階層上に配置される

ということも可能になります。

記憶域階層 の作成

試しに、VHDXを接続した仮想マシン上で、記憶域階層を作成してみました。

手元の環境では、VHDXが全てSSDとして認識されていたため、記憶域プールを作成後にまず、

Set-PhysicalDisk –FriendlyName Physicaldisk –MediaType HDD

を利用して、メディアタイプをHDDに変更します。通常は物理HDDとSSDを利用して記憶域を作成するでしょうから、メディアタイプは正しく認識されていれば変更不要です。

次に、仮想ディスクの作成ウィザードで、[この仮想ディスクに記憶域階層を作成する]にチェックを付けて[次へ]を押下します。

サイズの指定画面で、高速階層と標準階層のサイズを指定します。たとえば、1つのSSDを複数の記憶域スペースの高速階層として割り当てるような場合は、記憶域スペース毎にサイズを指定して割り当てるということも出来ます。

作成された高速階層と標準階層は、記憶域スペースのプロパティでも確認出来ます。

記憶域階層の最適化スケジュールはタスクスケジューラーの、Storage Tiers Management配下に、Storage Tiers Optimization として登録されています。必要であれば、スケジュールを変更することが出来ます。また、すぐに最適化したい場合は、このタスクを実行すればよいでしょう。

または、PowerShellのcmdletでも実行出来ます。

Optimize-Volume -DriveLetter E -TierOptimize

ファイル単位で保存先記憶域階層を明示的に指定する

ファイル単位で、保存すす記憶域階層を指定したい場合は、PowerShellのcmdletを利用します。

まず、PowerShellのcmdletから、予め記憶域階層のFriendlyNameを確認します。

Get-StorageTier

引数に、 –MediaType SSDを指定すると高速階層、 –MediaType HDD を指定すると標準階層に限定することも出来ます。

MediaTypeやサイズから、対象の階層のFriendyNameを確認します。ここでは、StorageSpace_Microsoft_SSD_Template が高速階層のFriendlyNameであることが分かりました。

ここで、例えば記憶域スペース(E:\)上に、 E:\テスト\test.iso を作成し、このファイルを高速階層上に保存するよう明示的に指定するには、

Set-FileStorageTier -FilePath E:\テスト\test.iso -DesiredStorageTierFriendlyName StorageSpace_Microsoft_SSD_Template

を PowerShell から実行します。

手動で指定したファイルの状態を確認するには、

Get-FileStorageTier –VolumeDriveLetter E

を実行します。

参考:

山市良のえぬなんとかわーるど: ちょっと訂正しました: R2 Preview 評価ガイドと TechNet 記事

Creating tiered Storage Spaces in Server 2012 R2 | DR.MIRU’s Blog

TechEd NA 2013–Storage Spaces Performance

ださっち: