====== 既存の記憶域階層にHDDを追加してディスク容量を拡張する ======
Windows Storage Server 2016で、SSDとHDDの記憶域階層に確保している仮想ドライブの容量が不足してきたので、HDDを追加して容量を増やしてみたメモ。
===== 試した環境 =====
* Windows Storage Server 2016 バージョン1607
* SSD層640GB, HDD層10TBの記憶域階層に確保した10TBのNTFS仮想ディスク
* SSD層:HP Dynamic Smart Array B140iで構築したSSD×2のRAID-1から切り出した論理ドライブ
* HDD層:同じくHDD×2×3のRAID-10から切り出した論理ドライブ
B140iは既存の論理ドライブを拡張することができない。幸い、HDD交換で増えた領域に論理ドライブを作ることはできるので、新たな論理ドライブを記憶域プールに追加するという方法を取った。
ハードウェアRAIDの論理ドライブで記憶域プールを作成するのは非推奨なのに加え、ハードウェアRAIDで1つにまとめたボリュームから作った2つの論理ドライブを記憶域プールで再度1つにまとめている。下図の通り、かなりキモい構成である。
{{ :windows:expand_virtual_disk_on_tiered_storage.png |}}
===== 手順 =====
大まかな手順は以下のとおりである。
- 記憶域プールにHDDを追加
- 記憶域階層のHDD層の容量を拡大
- 仮想ドライブの容量を拡大
==== 現状の確認 ====
まずは現状の確認。
対象の記憶域プールは「TieredPool」で、その上に載っている仮想ディスク「TieredDisk」を最終的に拡張する。
TieredPoolはHDDとSSDからなる記憶域階層プール、TieredDiskは同プールを丸ごと使った約11TBの仮想ディスクである。
PS C:\Users\Administrator> Get-StoragePool TieredPool | Get-PhysicalDisk | FT DeviceId, FriendlyName, Size, MediaType
DeviceId FriendlyName Size MediaType
-------- ------------ ---- ---------
0 HP LOGICAL VOLUME 799937658880 SSD
1 HP LOGICAL VOLUME 12002017673216 HDD
PS C:\Users\Administrator> Get-VirtualDisk
FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
TieredDisk OK Healthy False 11.52 TB
エクスプローラから見ると↓こんな感じ。
{{ :windows:before_expand_virtual_disk_on_tiered_pool.png |}}
既存のHDD層の残り容量(TierSizeMax/仮想ディスクを拡張できる容量)は約15GBである。
PS C:\Users\Administrator> Get-StorageTierSupportedSize TieredDisk_HDDtier
SupportedSizes TierSizeMin TierSizeMax TierSizeDivisor
-------------- ----------- ----------- ---------------
{} 268435456 16374562816 268435456
==== 物理HDDの追加 ====
まずは追加すべきドライブを確認。
PS C:\Users\Administrator> Get-PhysicalDisk | ft FriendlyName,SerialNumber,CanPool,BusType,DeviceId,MediaType,Size
FriendlyName SerialNumber CanPool BusType DeviceId MediaType Size
------------ ------------ ------- ------- -------- --------- ----
HP LOGICAL VOLUME True RAID 4 Unspecified 18000133136384
HP LOGICAL VOLUME False RAID 0 SSD 799937658880
HP LOGICAL VOLUME False RAID 1 HDD 12002017673216
リストの最初、DeviceIdが4のデバイスが今回追加するドライブである。さくっと追加。
PS C:\Users\Administrator> $adddisk = Get-PhysicalDisk | WHERE DeviceId -eq 4
PS C:\Users\Administrator> echo $adddisk
FriendlyName SerialNumber CanPool OperationalStatus HealthStatus Usage Size
------------ ------------ ------- ----------------- ------------ ----- ----
HP LOGICAL VOLUME True OK Healthy Auto-Select 16.37 TB
PS C:\Users\Administrator> Add-PhysicalDisk -PhysicalDisks $adddisk -StoragePoolFriendlyName TieredPool
PS C:\Users\Administrator> Get-StoragePool TieredPool | Get-PhysicalDisk | FT DeviceId, FriendlyName, Size, MediaType
DeviceId FriendlyName Size MediaType
-------- ------------ ---- ---------
4 HP LOGICAL VOLUME 17999939502080 Unspecified
0 HP LOGICAL VOLUME 799937658880 SSD
1 HP LOGICAL VOLUME 12002017673216 HDD
実のところ、本デバイスはハードウェアRAID上に構築された論理ドライブなので、メディアタイプがUnspecifiedになってしまっている。こいつをHDDに変えると、HDD層として使えるようになる。
PS C:\Users\Administrator> Get-StoragePool TieredPool | Get-PhysicalDisk | WHERE DeviceId -eq 4 | Set-PhysicalDisk -MediaType HDD
PS C:\Users\Administrator> Get-StoragePool TieredPool | Get-PhysicalDisk | FT DeviceId, FriendlyName, Size, MediaType
DeviceId FriendlyName Size MediaType
-------- ------------ ---- ---------
4 HP LOGICAL VOLUME 17999939502080 HDD
0 HP LOGICAL VOLUME 799937658880 SSD
1 HP LOGICAL VOLUME 12002017673216 HDD
==== HDD層の拡張 ====
現在の記憶域階層の状況を確認。
PS C:\Users\Administrator> Get-StorageTier | FT FriendlyName, Size, MediaType
FriendlyName Size MediaType
------------ ---- ---------
SSDtier 0 SSD
TieredDisk_SSDtier 678604832768 SSD
TieredDisk_HDDtier 11984837804032 HDD
HDDtier 0 HDD
SSDtier, HDDtierは記憶域階層プールTieredPool作成時に割り当てた各階層、TieredDisk_SSDtier, TieredDisk_HDDtierは仮想ディスクTieredDiskに割り当てられた各階層を表す。プールの全領域がTieredDiskに割り当てられていることがわかる。
TieredDisk_HDDtierの拡張可能サイズを調べる。
PS C:\Users\Administrator> Get-StorageTierSupportedSize TieredDisk_HDDtier
SupportedSizes TierSizeMin TierSizeMax TierSizeDivisor
-------------- ----------- ----------- ---------------
{} 268435456 18015508758528 268435456
冒頭の''Get-StorageTierSupportedSize''結果と比べて16TBほど増えたことが分かる。拡張対象であるTieredDiskのHDD層TieredDisk_HDDtierを27.2TB(≒既存10.9TB+増設分16TBーマージン)に拡張する。
PS C:\Users\Administrator> Resize-StorageTier TieredDisk_HDDtier -Size 27.2TB
拡張可能容量を調べると、減っている事が分かる。
PS C:\Users\Administrator> Get-StorageTierSupportedSize TieredDisk_HDDtier
SupportedSizes TierSizeMin TierSizeMax TierSizeDivisor
-------------- ----------- ----------- ---------------
{} 268435456 93415538688 268435456
==== 仮想ディスクの拡張 ====
無事にHDD層の拡張ができると、WindowsからはHDDを拡張したように見える。
{{ :windows:after_expand_virtual_disk_on_tiered_pool.png |}}
あとはパーティション(上図で言う所のDドライブ)を広げてやれば、仮想ディスクの容量が増える。
……ハズだったんだけど、[[blog:2020:2020-02-18|NTFSの最大クラスタ数制限]]に引っかかって拡張できないというオチがついた/(^o^)\
{{ :windows:failed_to_expand_ntfs_volume_due_to_max_cluster_count_limit.png |}}
結局、RAID-10ボリュームを作り直して真っ当な構成で記憶域を再構築し、10TBのデータをバックアップから復元する羽目になった…。
でもまぁ、記憶域階層の拡張が出来ることは実証できたのでヨシとしよう。
===== 参考サイト =====
* [[https://charbelnemnom.com/2015/03/step-by-step-how-to-extend-and-resize-a-two-way-mirrored-storage-tiered-space-storagespaces-ws2012r2/|Step By Step: How To Extend and Resize A Two-Way Mirrored Storage Tiered Space? #StorageSpaces #WS2012R2 - CHARBEL NEMNOM MVP - Microsoft Azure & More]]
* [[https://redmondmag.com/articles/2017/08/11/delete-a-corrupt-storage-pool.aspx|How To Delete a Corrupt Windows Server Storage Pool -- Redmondmag.com]]