記憶域スペースを管理するPowerShellのCmdlet

記憶域スペースの管理方法には、以下の3通りがあります。

  • コントロールパネル(Windows 8 のみ)
    ※但しWindows Server 2012 Essentials は例外的にコントロールパネルからも管理可能
    121125010
  • サーバーマネージャーのファイルサービスと記憶域サービス(Windows Server 2012 のみ)
    121125011
  • PowerShell (Windows 8 と Windows Server 2012)
    121125013

コントロールパネルやサーバーマネージャーのGUIからは設定出来ない属性等もあり、実際に記憶域スペースを意図する通りに使いこなすには、PowerShellのCmdletを利用する必要があります。

PowerShellの利用方法

  1. リモートデスクトップまたはローカルコンソールからWindows Server 2012 (Essentials含む)のデスクトップを開きます。
  2. タスクバーにある Windows PowerShellのアイコンをクリックします。
    121124100
    管理者権限で起動するときは、Windows PowerShellのアイコンを右クリックして、[管理者として実行する]を押下します。UACの警告が表示された場合は、[はい]を押下します。 特に Set 系の Cmdlet を実行する場合は管理者権限が必要になります。
    121124101
  3. PowerShellのコマンドプロンプトが起動します。
    121124103
  4. 実行したいCmdletを入力します。

Cmdletのヘルプを表示する方法

Get-Help <Cmdlet>

<Cmdlet>はヘルプを確認したいCmdletの名称

例: Get-Help Get-VirtualDisk

と入力してエンターを押下すると、指定したCmdletのヘルプを確認出来ます。

記憶域スペースをPowerShellで作成、管理するCmdlet

利用出来る詳細なCmdletはDeploy and Manage Storage Spaces with PowerShellStorage Cmdlets in Windows PowerShellを参照してください。

記憶域スペースの管理に利用出来るPowerShellのモジュール

例えば、記憶域スペースを作成するには通常、

  1. 記憶域プールに追加するディスクの選定
  2. 記憶域プールの作成
  3. 記憶域スペースの作成
  4. 仮想ディスクの初期化
  5. パーティションの作成
  6. フォーマット

といった手順を踏み、それぞれをCmdletで行う必要がありますが、これを1つのCmdletで行うことが出来るなど、記憶域スペースの管理を容易にするPowerShellのモジュールがリリースされています。

Storage Spaces module for Windows PowerShellからモジュールをダウンロードし、StorageSpaces module for Windows PowerShell.docxに従って導入、利用出来るCmdletの確認をしてください。

記憶域スペースから物理ディスクを取り外すCmdlet

記憶域スペースから物理ディスクを取り外す場合、以下の手順を実行します。

  • 記憶域スペースの空き容量、利用可能ディスクを確認し、不足している場合は新たな物理ディスクを記憶域プールに追加する。
  • 取り外したい物理ディスクの Usage 属性を、retired に変更する。
  • 物理ディスクが属していた全ての記憶域スペースに対して、Repair-VirtualDisk コマンドを実行して記憶域スペースの修復を行う。
  • 記憶域プールから削除する物理ディスクに対して、 Remove-PhysicalDisk コマンドを実行する。

Set-PhysicalDisk –FriendlyName PhysicalDisk1 –Usage Retired
Get-PhysicalDisk –FriendlyName PhysicalDisk1 | Get-VirtualDisk | Repair-VirtualDisk

PhysicalDisk1 は取り外す物理ディスクのフレンドリーネーム

このコマンドを実行後、記憶域スペースの状態が「正常」になったことを確認して、以下のコマンドを実行します。

$PDToRemove = Get-PhysicalDisk -Friendlyname “PhysicalDisk1”
Remove-PhysicalDisk -PhysicalDisks $PDToRemove -StoragePoolFriendlyName “記憶域プール”

記憶域プール は取り外す記憶域スペースのフレンドリーネーム

記憶域スペースのTroubleShootに利用するその他のPowerShellのCmdlet

Understand and Troubleshoot Storage Spaces in Windows Server “8” Betaに掲載されているCmdletの例です。

正常でない記憶域スペースをリストアップする

Get-VirtualDisk | Where-Object {$_.HealthStatus –ne “Healthy”}

仮想ディスクを修復する

Repair-VirtualDisk –FriendlyName

正常でない記憶域プールの一覧をリストアップする

Get-StoragePool | Where-Object {$_.HealthStatus –ne “Healthy”}

正常でない物理ディスクの一覧をリストアップする

Get-PhysicalDisk | Where-object {$_.HealthStatus –ne “Healthy”}

記憶域プールから取り除いた物理ディスクから記憶域プールの情報を削除する

物理HDDには記憶域プールの管理情報が書込まれているため、他のOSに接続しても、ディスクの管理からドライブレターを割り当てることが出来ません。それを防ぐために、ディスク内の記憶域プールに関する情報を削除します。

Reset-PhysicalDisk -FriendlyName

Windowsの再インストール後、または別のWindowsに物理ディスクを接続した場合に、記憶域スペースと記憶域プールを利用可能にする

Get-StoragePool | Where-Object {$_.IsReadonly –eq $True } | Set-StoragePool –IsReadonly $False
Get-VirtualDisk | Where-Object {$_.IsManualAttach –eq $True} | Set-VirtualDisk –IsManualAttach $False

このコマンドは非常に重要です。Windows のディスクに関する新しいポリシー(及びフェールオーバークラスタをサポートしたこと)によって、Windows の新規インストールを実行した場合、接続されている記憶域プールは読取専用モードで認識され、記憶域スペースはデタッチされた状態となります。記憶域スペースを利用可能にするには、上記の2つのコマンドを実行して、記憶域プールの読取専用属性を解除し、記憶域スペースの手動アタッチ属性も解除する必要があります。
PowerShellからこのコマンドを実行せずにGUIから記憶域プールをアタッチしても、次回のOS再起動後には再びデタッチ状態となります。

手動アタッチ属性解除後に、デタッチ状態の仮想ディスクをGUIではなくPowerShellでアタッチするには、以下のコマンドを実行します。

Microsoft Public Affiliate Program (JP)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする