文書の過去の版を表示しています。
Windows Storage Server 2016の起動SSDの空き領域を使って記憶域階層を作る
手順
現在のディスクを確認
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
ベンチマーク
以下の環境でベンチマークを取った。
- HP ProLiant ML150 Gen9
- Xeon E5-2620v3 (6C12T/2.4GHz)
- DDR4-2133 16GB (8GBx2)
- B140i/ZM
- SSD層
- Intel DC S3500 800GB×2
- システム:100GiB
- 記憶域用:640GiB
- HDD層
- WD Red 4TB×6
- 記憶域用:10.9TiB
ライトキャッシュが8GBなので、テーストデータ4GB/16GB/32GBでCrystalDiskMarkを実行した。
データがキャッシュに全部載るかどうかで違いが出ると予想していたが、殆ど同じ結果となった。16GB以上でも全部SSDに大して書き込まれてるように見える…。記憶域階層の最適化でSSDが良く使われるデータで一杯になれば、また違いがでるのかしら?


