最近の変更サイトマップ

Windows Storage Server 2016の起動SSDの空き領域で記憶域階層を構築

前書き

Windowsの記憶域プールでは、構成するドライブを丸ごと割り当てている事例が多く、またそうしなければならない印象がある。実際には別用途で使っているドライブを組み込み、既存データと記憶域プールでドライブを共有することも出来るようだ。

というわけで、Windows Storage Server 2016が入っているRAID-1なSSDアレイを既存のOS領域はそのままに、記憶域プールに組み込み記憶域階層として使えるか試してみた。

1つのRAIDアレイをOS用と記憶域用で共有するなら、RAIDカードの機能で以てそれぞれ論理ドライブとするのがふつー(?)だと思うが、HP B140iでは論理ドライブが使えなかったため、已む無く今回の構成&実験を行ったというのが実情だったりする。

試した環境

  • HP ProLiant ML150 Gen9
    • Xeon E5-2620v3 (6C12T/2.4GHz)
    • DDR4-2133 16GB (8GBx2)
    • B140i/ZM
      • SSDアレイ (RAID-1)
        • Intel DC S3500 800GB×2
          • システム:100GiB
          • 記憶域用:640GiB
      • HDDアレイ (RAID-10)
        • WD Red 4TB×6
          • 記憶域用:10.9TiB
    • Windows Storage Server 2016 Standard

手順

現在のディスクを確認

PS C:\> Get-PhysicalDisk | ft FriendlyName,SerialNumber,CanPool,BusType,DeviceId,MediaType,Size

FriendlyName      SerialNumber CanPool BusType DeviceId MediaType             Size
------------      ------------ ------- ------- -------- ---------             ----
HP LOGICAL VOLUME                 True RAID    0        SSD           800132521984
HP LOGICAL VOLUME                 True RAID    1        Unspecified 12002258673664

対象のディスクはRAIDアレイになっている。DeviceIdの0番がRAID-1のSSDアレイ、1番がRAID-10のHDDアレイである。本来はデバイスを直接記憶域システムで管理するのが望ましいとされている。

プールを構成するディスクを列挙&確認

PS C:\> $Disks = Get-PhysicalDisk -CanPool $true
PS C:\> $Disks

FriendlyName      SerialNumber CanPool OperationalStatus HealthStatus Usage            Size
------------      ------------ ------- ----------------- ------------ -----            ----
HP LOGICAL VOLUME              True    OK                Healthy      Auto-Select 745.18 GB
HP LOGICAL VOLUME              True    OK                Healthy      Auto-Select  10.92 TB

記憶域プールを作成

ここがミソ、といってもふつーにOSが入っているSSD含めてPhsicalDisksに含めて渡してるだけなんだけど、なかなか気づかないよねっていう。

PS C:\Users\Administrator> New-StoragePool -FriendlyName TieredPool -PhysicalDisks $Disks -StorageSubSystemUniqueId (Get
-StorageSubSystem).UniqueId -LogicalSectorSizeDefault 4096

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly
------------ ----------------- ------------ ------------ ----------
TieredPool   OK                Healthy      False        False

物理ディスクとして渡したら、既存のデータ全消去されてディスク全体が使われそうに思うじゃん…

記憶域プールを確認

PS C:\> Get-StoragePool TieredPool | Get-PhysicalDisk

FriendlyName      SerialNumber CanPool OperationalStatus HealthStatus Usage           Size
------------      ------------ ------- ----------------- ------------ -----           ----
HP LOGICAL VOLUME              False   OK                Healthy      Auto-Select   745 GB
HP LOGICAL VOLUME              False   OK                Healthy      Auto-Select 10.92 TB

メディアタイプの強制設定

記憶域階層を作るには、プールにSSDとHDDが最低1つずつ必要である。デバイスの種類は自動的に識別されるが、今回のようにデバイスが直接露出してない場合は往々にして識別できないので、手動で設定してやる。

メディアタイプを確認。

PS C:\> Get-StoragePool TieredPool | Get-PhysicalDisk | ft FriendlyName,DeviceId,MediaType,Size

FriendlyName      DeviceId MediaType             Size
------------      -------- ---------             ----
HP LOGICAL VOLUME 0        SSD           799937658880
HP LOGICAL VOLUME 1        Unspecified 12002017673216
<code>

なぜかSSDの方は正しく見えている(RAIDの設定ツール側でSSDは別扱いになっているので、そのせいもあるかも。)

よってDeviceID 1の方にHDDと指定してやる。

<code>
PS C:\> Get-StoragePool TieredPool | Get-PhysicalDisk | where DeviceId -eq 1 | Set-PhysicalDisk -MediaType HDD
PS C:\> Get-StoragePool TieredPool | Get-PhysicalDisk | ft FriendlyName,DeviceId,MediaType,Size

FriendlyName      DeviceId MediaType           Size
------------      -------- ---------           ----
HP LOGICAL VOLUME 0        SSD         799937658880
HP LOGICAL VOLUME 1        HDD       12002017673216

SSD層とHDD層の設定

PS C:\> Get-StoragePool TieredPool | New-StorageTier -FriendlyName SSDtier -MediaType SSD


ObjectId               : {1}\\WIN-JCFBFMM4427\root/Microsoft/Windows/Storage/Providers_v2\SPACES_StorageTier.ObjectId="
                         {fd905169-74f9-11e8-9d72-806e6f6e6963}:ST:{f1f261c1-646f-4ff3-90a2-985826bc72ca}{2305468e-37dc
                         -4b4a-87c8-770d886dba14}"
PassThroughClass       :
PassThroughIds         :
PassThroughNamespace   :
PassThroughServer      :
UniqueId               : {2305468e-37dc-4b4a-87c8-770d886dba14}
AllocatedSize          : 0
AllocationUnitSize     : Auto
ColumnIsolation        : PhysicalDisk
Description            :
FaultDomainAwareness   : PhysicalDisk
FootprintOnPool        : 0
FriendlyName           : SSDtier
Interleave             : 262144
MediaType              : SSD
NumberOfColumns        : Auto
NumberOfDataCopies     : 2
NumberOfGroups         : 1
ParityLayout           :
PhysicalDiskRedundancy : 1
ProvisioningType       : Fixed
ResiliencySettingName  : Mirror
Size                   : 0
Usage                  : Data
PSComputerName         :
PS C:\> Get-StoragePool TieredPool | New-StorageTier -FriendlyName HDDtier -MediaType HDD


ObjectId               : {1}\\WIN-JCFBFMM4427\root/Microsoft/Windows/Storage/Providers_v2\SPACES_StorageTier.ObjectId="
                         {fd905169-74f9-11e8-9d72-806e6f6e6963}:ST:{f1f261c1-646f-4ff3-90a2-985826bc72ca}{9811c7f1-a66e
                         -45e9-af52-9269998e5bda}"
PassThroughClass       :
PassThroughIds         :
PassThroughNamespace   :
PassThroughServer      :
UniqueId               : {9811c7f1-a66e-45e9-af52-9269998e5bda}
AllocatedSize          : 0
AllocationUnitSize     : Auto
ColumnIsolation        : PhysicalDisk
Description            :
FaultDomainAwareness   : PhysicalDisk
FootprintOnPool        : 0
FriendlyName           : HDDtier
Interleave             : 262144
MediaType              : HDD
NumberOfColumns        : Auto
NumberOfDataCopies     : 2
NumberOfGroups         : 1
ParityLayout           :
PhysicalDiskRedundancy : 1
ProvisioningType       : Fixed
ResiliencySettingName  : Mirror
Size                   : 0
Usage                  : Data
PSComputerName         :

記憶域階層に仮想ディスクを作成

SSD, HDDそれぞれのティアを取得

PS C:\> $SSD = Get-StorageTier -FriendlyName SSDtier
PS C:\> $HDD = Get-StorageTier -FriendlyName HDDtier

記憶域階層に仮想ディスクを作成

PS C:\> Get-StoragePool TieredPool | New-VirtualDisk -FriendlyName TieredDisk -ResiliencySettingName Simple -StorageTiers $SSD,$HDD -WriteCacheSize 8GB -StorageTierSizes 632GB,10.9TB

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size ———— ——————— —————– ———— ————– —- TieredDisk OK Healthy False 11.52 TB </code>

ライトキャッシュは8GBにしてみた(デフォルトでは1GB)。この指定はSSD層を構成するSSD毎のキャッシュ量らしいので注意。

セクタサイズとライトキャッシュを確認してみる。

PS C:\> Get-VirtualDisk -FriendlyName TieredDisk | ft LogicalSectorSize,PhysicalSectorSize,WriteCacheSize

LogicalSectorSize PhysicalSectorSize WriteCacheSize
----------------- ------------------ --------------
             4096               4096     8589934592

ベンチマーク

ライトキャッシュが8GBなので、テーストデータ4GB/16GB/32GBでCrystalDiskMarkを実行した。

データがキャッシュに全部載るかどうかで違いが出ると予想していたが、殆ど同じ結果となった。16GB以上でも全部SSDに大して書き込まれてるように見える…。記憶域階層の最適化でSSDが良く使われるデータで一杯になれば、また違いがでるのかしら?

4GB
CrystalDiskMark 6.0.1 x64 (C) 2007-2018 hiyohiyo

   Sequential Read (Q= 32,T= 1) :   954.489 MB/s
  Sequential Write (Q= 32,T= 1) :   456.697 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   611.536 MB/s [ 149300.8 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   245.631 MB/s [  59968.5 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   251.855 MB/s [  61488.0 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   176.885 MB/s [  43184.8 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    23.101 MB/s [   5639.9 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    45.986 MB/s [  11227.1 IOPS]

  Test : 4096 MiB [D: 0.0% (0.5/11383.9 GiB)] (x3)  [Interval=5 sec]
    OS : Windows Server 2016 Storage Server Standard [10.0 Build 14393] (x64)
    WSS2016 記憶域階層(SSD 640G/書込キャッシュ 8G)
16GB
CrystalDiskMark 6.0.1 x64 (C) 2007-2018 hiyohiyo

   Sequential Read (Q= 32,T= 1) :   945.471 MB/s
  Sequential Write (Q= 32,T= 1) :   431.246 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   616.567 MB/s [ 150529.1 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   238.002 MB/s [  58106.0 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   251.890 MB/s [  61496.6 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   152.648 MB/s [  37267.6 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    23.280 MB/s [   5683.6 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    45.708 MB/s [  11159.2 IOPS]

  Test : 16384 MiB [D: 0.0% (0.5/11383.9 GiB)] (x3)  [Interval=5 sec]
    OS : Windows Server 2016 Storage Server Standard [10.0 Build 14393] (x64)
    WSS2016 記憶域階層(SSD 640G/書込キャッシュ 8G)
32GB
CrystalDiskMark 6.0.1 x64 (C) 2007-2018 hiyohiyo

   Sequential Read (Q= 32,T= 1) :   959.648 MB/s
  Sequential Write (Q= 32,T= 1) :   436.868 MB/s
  Random Read 4KiB (Q=  8,T= 8) :   612.621 MB/s [ 149565.7 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :   235.406 MB/s [  57472.2 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :   250.300 MB/s [  61108.4 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :   161.983 MB/s [  39546.6 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :    23.406 MB/s [   5714.4 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :    45.752 MB/s [  11169.9 IOPS]

  Test : 32768 MiB [D: 0.0% (0.6/11383.9 GiB)] (x3)  [Interval=5 sec]
    OS : Windows Server 2016 Storage Server Standard [10.0 Build 14393] (x64)
    WSS2016 記憶域階層(SSD 640G/書込キャッシュ 8G)

参考サイト

windows/create_storage_tier_on_wss2016_boot_ssd.txt · 最終更新: 2018-06-25 21:43 by decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0