記憶域スペースで使うPowerShellのコマンドレットをメモしておきます

Winodws 10の記憶域プールを使おうといろいろ試しています。
"記憶域の管理"画面だけでは操作できない事があるため、時々PowerShellのコマンドレットを使います。
すぐに忘れるのでメモしておきます。不定期に加筆するかもしれません。
GUIでできるものはGUIを使った方が間違えが少なく良いでしょう。


記憶域スペースで使うPowerShellのコマンドレット

物理ディスクのプロパティを表示するコマンドレット

接続されている物理ディスクを表示する

Get-Physicaldisk
出力例
FriendlyName           SerialNumber         MediaType CanPool OperationalStatus HealthStatus Usage            Size
------------           ------------         --------- ------- ----------------- ------------ -----            ----
ST3000DM001-1CH166     xxxxxxxxxx             HDD       False   OK                Healthy      Auto-Select   2.73 TB
Crucial_CT512MX100SSD1 xxxxxxxxxxxxxx         SSD       False   OK                Healthy      Auto-Select 476.94 GB
WDC WDS120G1G0A-00SS50 xxxxxxxxxxxxxx         SSD       False   OK                Healthy      Auto-Select 111.75 GB

指定したプロパティだけを表示する

Get-Physicaldisk | Select-Object FriendlyName, Size
出力例
FriendlyName                    Size
------------                    ----
ST3000DM001-1CH166     3000571527168
Crucial_CT512MX100SSD1  512110190592
WDC WDS120G1G0A-00SS50  119990648832

物理ディスクとそのプロパティを全て表示する

Get-Physicaldisk | Format-List

フレンドリーネームで指定した物理ディスクを表示する

Get-Physicaldisk -FriendlyName "<フレンドリーネーム>"

指定したプロパティの値を持つ物理ディスクを表示する

Get-Physicaldisk | Where-Object { $_.<プロパティ名>  -eq "<値>" }

シリアルナンバーを指定して表示する

例1
Get-Physicaldisk –SerialNumber "<シリアルナンバー>"
例2
Get-Physicaldisk | Where-Object { $_.SerialNumber -eq "<シリアルナンバー>" }

物理ディスクのプロパティを設定するコマンドレット

フレンドリーネームで指定した物理ディスクのメディアタイプを設定する

Set-PhysicalDisk -FriendlyName "<フレンドリーネーム>" -MediaType <メディアタイプ>
メディアタイプには HDD, SSDなどを指定します。
記憶域プールに追加していないと設定できません。
MediaTypeがUnspecifiedとなっている場合があります。記憶域プールが適切に動作できない原因になるので設定し明示しておきましょう。

シリアルナンバーで指定した物理ディスクのメディアタイプを設定する

Get-Physicaldisk –SerialNumber "<シリアルナンバー>"  | Set-PhysicalDisk -MediaType <メディアタイプ>
同じフレンドリーネームのドライブがある場合にはシリアルナンバーで指定します。

物理ディスクのステータスをリセットする

Get-Physicaldisk –SerialNumber "<シリアルナンバー>" | Reset-PhysicalDisk
記憶域プールへ物理ディスクを追加しようとしても物理ディスクが一覧に出てこない、追加できない場合に試します。記憶域プールから削除するとCanPoolプロパティがFalseになる時があります。CanPoolプロパティがTrueではない物理ディスクは記憶域プールへ追加できません。
リセットする物理ディスクはフレンドリーネームでも指定できますが、重複したドライブがあると困るのでシリアルナンバーを使って指定する方が良いでしょう。

記憶域プールに関するコマンドレット

記憶域プールで使われている物理ディスクを表示する

Get-StoragePool -friendlyname "<記憶域プールのフレンドリーネーム>" | get-physicaldisk

記憶域プールで使われていない物理ディスクを表示する

get-physicaldisk | Where-Object { $_.CannotPoolReason -ne "In a Pool" }

記憶域に関するコマンドレット

記憶域をパリティで作成する

new-virtualdisk -storagepoolfriendlyname "<記憶域プールのフレンドリーネーム>" -friendlyname "<作成する記憶域のフレンドリーネーム>" -provisioningtype Thin -numberofcolumns 3 -resiliencysettingname Parity -size <確保する容量> -WriteCacheSize <キャッシュサイズ>
-WriteCacheSize はキャッシュサイズを指定します。1GB100MBと指定します。指定しなければ自動的に決まります。SSDが無い場合は32MB、SSDがあると1GBになります。
-numberofcolumnsで使う物理ディスクの数を指定します。GUIで作ると3です。

記憶域をシンプルで作成する

new-virtualdisk -storagepoolfriendlyname "<記憶域プールのフレンドリーネーム>" -friendlyname "<作成する記憶域のフレンドリーネーム>" -provisioningtype Thin -numberofcolumns 1 -resiliencysettingname Simple -size <確保する容量> -WriteCacheSize <キャッシュサイズ>
-WriteCacheSize はキャッシュサイズを指定します。1GB100MBと指定します。指定しなければ自動的に決まります。SSDが無い場合は0MB、SSDがあると1GBになります。SSDを使っている場合はライトキャッシュがあると十分なパフォーマンスが出ない可能性があります。その時は0としてみてください。小さいファイルはキャッシュがある方が良く、大きなファイルはキャッシュが無い方が良いようです。
-numberofcolumnsで使う物理ディスクの数を指定します。GUIで作ると1です。

記憶域を双方向ミラーで作成する

new-virtualdisk -storagepoolfriendlyname "<記憶域プールのフレンドリーネーム>" -friendlyname "<作成する記憶域のフレンドリーネーム>" -provisioningtype Thin -resiliencysettingname Mirror -size <確保する容量> -WriteCacheSize <キャッシュサイズ>
-WriteCacheSize はキャッシュサイズを指定します。1GB100MBと指定します。指定しなければ自動的に決まります。SSDが無い場合は0MB、SSDがあると1GBになります。SSDを使っている場合はライトキャッシュがあると十分なパフォーマンスが出ない可能性があります。その時は0としてみてください。小さいファイルはキャッシュがある方が良く、大きなファイルはキャッシュが無い方が良いようです。
-numberofcolumnsは指定しません。物理ディスクが3台以下なら1です。

記憶域の一覧を表示する

Get-VirtualDisk
出力例

FriendlyName   Usage MediaType   ResiliencySettingName PhysicalDiskRedundancy OperationalStatus HealthStatus IsManualAt
                                                                                                             tach
------------   ----- ---------   --------------------- ---------------------- ----------------- ------------ ----------
記憶域パリティ Data  Unspecified Parity                1                      OK                Healthy      False
記憶域ミラー   Data  Unspecified Mirror                1                      OK                Healthy      False

記憶域とそのプロパティを全て表示する

Get-VirtualDisk | Format-List

記憶域のライトキャッシュサイズを表示する

Get-VirtualDisk | Select-Object FriendlyName, Size,  WriteCacheSize

便利なコマンドレット

記憶域の主要なプロパティを見やすく表示する

Get-VirtualDisk | ft FriendlyName, ResiliencySettingName, NumberOfColumns, NumberOfDataCopies, @{Expression={$_.WriteCacheSize / 1MB}; Label="Cache(MB)"}, @{Expression={$_.Size / 1GB}; Label="Size(GB)"}, @{Expression={$_.FootprintOnPool / 1GB}; Label="PoolFootprint(GB)"} -AutoSize
出力例
FriendlyName   ResiliencySettingName NumberOfColumns NumberOfDataCopies Cache(MB) Size(GB) PoolFootprint(GB)
------------   --------------------- --------------- ------------------ --------- -------- -----------------
記憶域パリティ Parity                              3                  1      1024    16384               260
記憶域ミラー   Mirror                              2                  2         0     1024             319.5
列数、キャッシュサイズや記憶域プールで使われている容量等を表示します。
ここで紹介されていたコマンドレットにキャッシュを追加しました。
(Storage Spaces) How to get the number of columns?
"It was described here: http://blogs.technet.com/b/wincat/archive/2012/05/21/optimizing-windows-server-2012-storage-management-via-powershell-for-both-performance-and-resiliency.aspx"
TechNet | Microsoft
Optimizing Windows Server 2012 storage management via PowerShell for both performance and resiliency

コメント

最近のコメント

Threaded Recent Comments will be here.