以前、イベントの際に記憶域スペースの概要についてセッションする機会があったのですが、その際に記憶域スペースを利用していてOS再インストールした場合にはどうなるのかという質問を頂いていました。
TechNetフォーラムでも同様の質問がありましたので、改めて記事として掲載しておきます。
記憶域スペース、記憶域プールの構成に関する情報は、全て物理HDDに保存されています。従って、ある環境で利用していた記憶域プールの物理HDDを他の(記憶域プール対応OSが動作している)環境に差し替えた場合、記憶域プールや記憶域スペースの情報はそのまま引き継がれます。
参考:Storage Spaces Frequently Asked Questions (FAQ)
What happens to Storage Spaces when moving physical disks between servers?
Storage Spaces records information about pools and storage spaces on the physical disks that compose the storage pool. Therefore, your pool and storage spaces are preserved when you move an entire storage pool and its physical disks from one computer to another.
Windows Server 2012 starts storage that could potentially be shared with a cluster in a safe state. For Storage Spaces, that means the first time Windows connects to a storage pool, the pool starts as read-only and the storage spaces will start in a detached state. To access your data, you must set the storage pool to read-write and then attach the storage spaces.
These steps do not apply to Windows 8 – storage pools start as read-write and storage spaces start as attached.
その際、移行先のOSによって挙動が異なります。これは物理HDDを差し替えた場合、OSを再インストールした場合の両方に共通の事項となります。
(1)クライアントOSの場合
クライアントOSの場合は、自動で記憶域スペースがアタッチされますので、OSから記憶域スペース内のフォルダーが見える状態になります。NTFSアクセス権を適切に設定しなおすことで、移行先のOS環境からもファイルへのアクセスが可能になります。
(2)サーバーOSの場合
サーバーOSの場合、以下の2点について対処が必要になります。
1.記憶域プールが読取専用となっている場合
サーバーOSに記憶域プールで利用していた物理HDDを接続すると、記憶域プールを認識しますが、プールが読み取り専用になっている場合があります。
記憶域プールが読み取り専用になっているかどうかを確認するには、PowerShellで以下のcmdletを実行してください。
Get-StoragePool {記憶域プールのフレンドリーネーム}
例えば、記憶域プールに「記憶域プール」という名前を付けている場合、以下のようになります。 (フレンドリーネームを省略すると、全ての記憶域プールの一覧が表示されます)
Get-StoragePool | Where-Object {$_.IsReadonly –eq $True } | Set-StoragePool –IsReadonly $False
2.記憶域スペースが手動アタッチになっている
PowerShellのから以下のcmdletを実行して、仮想ディスクの IsManualattach の値を確認してください。
Get-VirtualDisk {記憶域のフレンドリーネーム}
(記憶域のフレンドリーネームは省略可能です。省略すると、全ての記憶域の一覧が表示されます。)
IsManualAttachの値がTrueの場合、自動アタッチするように設定を変更する必要があります。PowerShellを管理者権限で実行し、以下のcmdletを実行してください。
Get-VirtualDisk | Where-Object {$_.IsManualAttach –eq $True} | Set-VirtualDisk –IsManualAttach $False
このコマンドを実行しないと、手動アタッチが有効のままとなり、OSを起動する都度記憶域スペースがデタッチされた状態で起動することになります。なお、このコマンドは手動アタッチになっている記憶域全てを自動アタッチに変更します。特定の記憶域のみを自動アタッチにしたい場合は、
Set-VirtualDisk {記憶域のフレンドリーネーム} -IsManualAttach $False
を実行します。
※ サーバーマネージャーを通じて手動で「仮想ディスクのアタッチ」や「仮想ディスクのデタッチ」を実行すると、 IsManualAttachのパラメーターが True となってしまいます。この場合もPowerShell(管理者権限)から上記のcmdletを実行することで、自動アタッチに変更することが可能になります。
以上が完了したら、フォルダー/ファイルへのアクセス権を再度設定しなおすことで、ファイルへのアクセスが可能になります。
Windows Server Essentialsエディションの場合
WSEの場合は必ずダッシュボードから共有フォルダーへのアクセス権を設定しなおしてください。