久しぶりに記憶域プールについて触れます。
我が家のWindows Server 2016 Essentialsは、いまだに子供たちの小さなころの写真データなど、大事なデータを保存し、デジタルフォトフレームにSMB共有で写真を投影するなど大活躍してくれています。
そんな我が家の自宅サーバーに構築していた記憶域スペース(記憶域プール)が、いよいよ容量が足りなくなってきたようで、アラートをあげてきました。このブログでは、過去記憶域スペースについてさんざん書いてきましたが、ほぼ検証環境を使って書いたものでした。
いよいよ自分の消えてはならない大事なデータの入った記憶域スペースで、物理ディスクの交換をするときがやってきました。ドキドキですねぇ…。
記憶域プールの容量が足りなくなったとき、どう表示されるのか
サーバーダッシュボードにはこのような感じで、「状態」欄に「空き容量が少なくなっています」と表示されています。
コントロールパネルでみるとこのような感じ。「容量低下」と表示されています。
サーバーマネージャーはこうですね。
割り当て済みの割合が黄色くなっていてやばそうです。
御覧いただいてお分かりの通り、
- 2TBの物理ディスク×3台で構築した記憶域プール
- 双方向ミラー、シンプロビジョニングで16TBの記憶域スペース(仮想ディスク)
となっています。双方向ミラーなので本来は2の倍数の物理ディスクを用意するのが最も効率的な使い方なのですが、4つの物理ディスクベイに対して1つのスロットをWindows Serverバックアップ用のスロットとして利用しているためです。そのうち、Windodws Serverバックアップ用の物理ディスクはUSB外付けにして、4台の物理ディスク構成にしたいと思っています。それはまたの機会に。
それでは早速、物理ディスクの交換をしていきます。
新しい物理ディスクを挿入して、記憶域プールに追加する
早速交換用の物理ディスクを手配しました。これまでが2TBだったので、今回は3倍の6TBのHDDを3つ購入しました。Amazonプライムデーでポイント還元も考慮すると実質9,600円くらいで買えたので、お得でした。
普段Windows Serverバックアップ用のディスクが刺さっているスロットから物理ディスクを外し、早新しいディスクを追加します。新しい物理ディスクは、サーバーマネージャーで見るとPrimordialプールの物理ディスクとして認識されます。
記憶域プールの管理方法は、以下の4通りがありますが、今回はコントロールパネルを利用する方法でいこうと思います。
- コントロールパネル(クライアントOSか2016までのEssentialsサーバーのみ)
- サーバーマネージャー
- サーバーダッシュボード(2016までのEssentials絵サーバーのみ)
- Powershell
コントロールパネルの記憶域の管理を開き、「設定の変更」を押下したあと、「ドライブの追加」を押下します。
記憶域プールに追加する物理ディスクを選択する画面がでてきますので、新たに追加した物理ディスク(今回は6TB)にチェックがついていることを確認します。
今回は、新たに追加したディスクを既存のディスクと交換していきますので、「ドライブ使用率を最適化して、既存のデータをすべてのドライブに分散させます」のチェックを外しておきます。
新しい物理ディスクを記憶域プールに無事追加できました。
取り外し対象の物理ディスクを記憶域プールから削除する準備
次は、退役してもらう物理ディスク(今回はDisk3)の「削除の準備」を押下します。
確認画面がでてきますので、「削除の準備」を押下します。
物理ディスクに「削除の準備中」と表示されました。
この間に何が行われているのか、PowerShellで確認してみましょう。
まずは出力結果を先にお示します。
実際のコマンドは以下の通りです。まず、以下のコマンドレットで記憶域プールの一覧を取得します。
Get-StoragePool
次に、今回物理ディスクを追加した記憶域プールの名称(ここでは「記憶域プール」)を指定して、当該の記憶域プールに所属している物理ディスクの一覧を取得します。
Get-StoragePool -FriendlyName "記憶域プール" | Get-PhysicalDisk
上の出力結果から、取り外した物理ディスク(Disk3)のUsageが「Retired」になっていることがわかります。そして、動いているジョブを確認するために、以下のコマンドを実行します。
Get-StorageJob
すると、Repairジョブがバックグラウンドで動いていることが確認できます。
以上のことからも、コントロールパネルから「削除の準備」を押下して行われたのは、
- 削除対象リスクの物理ディスクに対して、Usage属性を「Retired」に変更
- 記憶域スペースの修復を実行
の2つのことだということがお分かりいただけるかと思います。これは、以下の過去記事で解説した手順の、「(2)HDDは正常だが、他のHDDと入れ替えたい場合」の手順そのものです。
上記と同じく、記憶域プールの名称は「記憶域プール」、記憶域スペースの名前が「記憶域」、削除対象の物理ディスク名称は「Disk3」の場合、一連の動作を直接PowerShellで実行したい場合は、たとえば以下のようになります。
(上のブログ記事は古くて、今見ると恥ずかしいくらい回りくどく書いていますが…)
$PDToAdd = Get-PhysicalDisk -CanPool $True
Add-PhysicalDisk -StoragePoolFriendlyName "記憶域プール" -PhysicalDisks $PDToAdd
Set-PhysicalDisk –FeiendlyName Disk3 –Usage Retired
Repair-VirtualDisk -FriendlyName "記憶域" -Asjob
進行状況を確認するには、Get-StorageJobを実行すると、「PercentComplete」が増えていきます。2TBの物理ディスクが85%程度の使用率だった場合に、約30分で15%の進捗です。
僕は気が短いので、また10分後にGet-StorageJobをたたいていたら、40分経過時点で20%でした。
ということは、100%完了するのに200分、3時間半近くかかる計算ですね。気長に待ちましょう。
物理ディスクの削除と取り外し
実際には4時間ちょっとかかって、jobが完了しました。
「削除の準備完了」と表示されました。ディスクの使用領域もほぼゼロになっています。この状態になったら、「削除」を押下して完了です。
削除が完了したら、物理的にHDDを取り外してしまいます。
記憶域プールの名称が「記憶域プール」、物理ディスクの名称が「Disk3」の場合、この操作をPowershellで表現すると、以下のようになります。
$PDToRemove = Get-PhysicalDisk -Friendlyname “Disk3”
Remove-PhysicalDisk -PhysicalDisks $PDToRemove -StoragePoolFriendlyName “記憶域プール”
複数台の物理ディスクを交換する場合は繰り返す
ほかにも交換するディスクがある場合は以降、上記のように
- 記憶域プールへの物理ディスクの追加
- 古いディスクの記憶域プールからの削除の準備(Usage属性をRetiredにし、仮想ディスクを修復)
- 古いディスクの記憶域プールからの削除
を繰り返していきます。この流れは、物理ディスクが故障し、接続が確認できない場合も同様になります。
記憶域プールのタイトル欄の見出しの色も注意を示す黄色から正常を示すブルーに
我が家のサーバーの記憶域プールも、2台の交換が完了し3台目の交換のための「削除の準備」が進んでいます。あと数時間で無事完了するでしょう。これでまた数年大事なデータを守ってくれそうです。
余談
プールや仮想ディスクの正常性に問題がない場合は、削除の準備中もデータにアクセスができる
仮想ディスクが使用する記憶域プールの物理ディスクにおいて、いくつの物理ディスクに障害が発生した場合でもあっても、データアクセスができるかを示すパラメーター、”PhysicalDiskRedundancy”があります。物理ディスクの障害がこの台数以下に収まっている場合は、仮想ディスクのデータにアクセスをし続けることが可能です。
これは、上記の物理ディスク交換のための手順を実行している間も同様で、障害が発生しているディスクの数が”PhysicalDiskRedundancy”の値以下であれば、物理ディスクの削除の準備中であってもデータにアクセスすることができます。
USBケースには気を付けよう
記憶域プールの要件として一番大事なことがあるのですが、おうちサーバーで利用する人が意外と見落としがちなんです。それは、「OSに物理ディスクが直接認識されること」です。
物理ディスクを複数台接続できる、USB接続の外付エンクロージャーなどお手軽で使いたくなるのはよくわかるのですが、物理ディスクを直接素で認識させる(エンクロージャーのコントローラーがディスクを一切抽象化しない)タイプのエンクロージャーでないと、データ消失のもととなります。お気を付けください。
直接接続したときと同様に、Get-Physicaldiskの結果を取得した場合に、Model名やシリアルナンバー、ファームウェアバージョンが正しく表示されているかが目安になるかと思います。
直接接続するか、記憶域プールをサポートするHBAを介して接続する以外の使い方は危ないのでご注意を。
Windowsであれば、ほかのマシンに物理ディスクを接続しても記憶域プールは利用できる
万が一、記憶域プールを利用するWindowsマシンに障害が発生してOSが起動しない場合など、記憶域プールを構成していた物理ディスクをほかの物理マシンに接続しても、記憶域プールのデータにはアクセスすることができます。
1つだけ注意点があります。
記憶域プールにも実はバージョンがあります。
記憶域プールをホストしていた物理マシンのWindows OSと異なるバージョンのOSの環境にに接続する場合、記憶域プールのバージョンが更新されてしまったりする場合があるようなので、留意してください。