Armoris日記 Windows 10 記憶域プール編

このブログは、N高等学校に潜んでいる株式会社Armorisのアルバイトが書いています。

あるもりすぶろぐの内容は個人の意見です。

今回のArmoris日記はWindows 10のRAIDである記憶域プールについて検証と解説を行います。

RAIDとは

RAIDとは、複数の物理ディスクを一個の論理ドライブとして扱い、データの冗長性を確保し安全性を高めたり高速化を目的とした技術です。 RAIDにはいくつかのモードがあり、モードによってデータの安全性、高速性など特徴が異なります。

f:id:Armoris:20210128163840p:plain

RAIDを実現するには、ハードウェアRAIDソフトウェアRAIDの2種類の方法があります。 ソフトウェアRAIDでは、OSなどのソフトウェアが、複数のディスクを管理しRAIDを構築します。 これに対してハードウェアRAIDでは、RAIDコントローラなど専用ハードウェアが、複数のディスクを管理しRAIDを構築します。

f:id:Armoris:20210128164744p:plain

ハードウェアRAIDソフトウェアRAIDは、いずれもメリット・デメリットがあります。

ハードウェアRAID ソフトウェアRAID
導入コスト
性能
復旧の容易さ
OS Disk

Windows 10の記憶域プール

今回の本題であるWindows 10の記憶域プールは、ソフトウェアRAIDに分類されます。Windows 8.x以降で提供されています。 他のソフトウェアRAIDと比べて柔軟性があり、サイズの異なるディスクの組み合わせで構築が可能となることや、RAIDを構築してるディスクを他のWIndowsマシンに搭載することでそのままRAIDが使えるなどの特徴があります。 Windows 10の記憶域プールでは以下の3つのモードが用意されています。

モード 類似するRAID 詳細
シンプルな記憶域プール RAID 0 パフォーマンスの向上を目的とした記憶域プールです。ドライブ障害発生に備えた冗長性確保はできません。構築には2つ以上のドライブが必要です。
ミラー記憶域プール RAID 1 冗長性の確保を目的とした記憶域プールです。複数のディスクにファイルをコピーすることで冗長性を確保し障害に備えます。双方向のミラーと3方向のミラーの2種類があり、双方向では2つのドライブにコピー、3方向では3つのドライブにコピーします。構築には双方向では2つ、3方向では3つ以上のドライブが必要になります。
パリティ記憶域プール RIAD 5 高い効率を目的とした記憶域プールです。パリティと呼ばれるデータを生成し複数のドライブに分散して保存することで高効率と冗長性を確保しています。構築には3つ以上のドライブが必要になります。

Windows 10の記憶域プールの構築方法

記憶域の管理から構築を行います。 1. 記憶域の管理から "新しい記憶域とプール" を作成をクリック

f:id:Armoris:20210128173628p:plain

  1. 記憶域プールで使用するディスクを選択し "プールの作成" をクリック

f:id:Armoris:20210128173647p:plain

  1. 記憶域プールの名前と使用したいドライブ文字を設定し、回復の種類で使用したいモードを選択する。設定したら "記憶域の作成" をクリック

f:id:Armoris:20210128173700p:plain

  1. 自動でフォーマットなどが行われ構築完了

f:id:Armoris:20210128173727p:plain

検証環境

PC1、PC2にそれぞれWindows 10 Pro 1903を導入した仮想環境を用いて検証を行います。 検証に用いる環境は以下の環境を用います。

Name Version
Debian 10
QEMU 3.1.0
virt-manager 2.0

VMの環境は以下になります。

Name Value
CPU 8 Core
Memory 8192 MiB
OS Disk 40GiB

また、 PC1に追加で20GiBのディスクを3つ接続しWindows10の記憶域プールでパリティ( RAID5 )を構築します。

検証内容

障害発生や復旧の際にありそうなシナリオを試してみました。

  • 環境移行1 PC1で記憶域プールを構成しているディスク3つをPC2に移行します。 移行するディスクはPC1と "同じ接続順" でPC2に接続しPC2で記憶域プールが問題なく移行出来るかを検証します。
  • 環境移行2 PC1で記憶域プールを構築しているディスク3つをPC2に移行します。 移行するディスクはPC1と "異なる接続順" で接続しPC2で記憶域プールが問題なく移行出来るかを検証します。
  • 記憶域プールに障害発生 記憶域プールを構築してるディスクの1つに障害を発生させ、普及までにかかる手順を確認します。

検証1

移行するディスクはPC1と "同じ接続順" でPC2に接続しPC2で記憶域プールが問題なく移行出来るかを検証します。

f:id:Armoris:20210128164921p:plain

手順

  1. PC1の記憶域プールに検証用のファイルとして"Test"と書かれたテキストファイルを設置する。
  2. PC1で記憶域プールを構築している仮想ディスク3つをPC2にPC1と同じ接続順で接続を行う。
  3. PC2で記憶域プールの設定画面を確認し問題なく記憶域プールが構築されていることの確認とPC1で設置した"Test"と書かれたテキストファイルが問題なく閲覧出来ることを確認する。

結果

問題なくPC1からPC2へ移行が完了しました。 特別な操作は一切必要なくディスクを接続するだけで記憶域プールとして認識されたため、ディスク側に構成情報が書き込まれていることが確認できました。

f:id:Armoris:20210128174610p:plain

検証2

移行するディスクはPC1と "異なる接続順" で接続しPC2で記憶域プールが問題なく移行出来るかを検証します。

f:id:Armoris:20210128165018p:plain

手順

  1. PC1の記憶域プールに検証用のファイルとして"Test"と書かれたテキストファイルを設置する。
  2. PC1で記憶域プールを構築している仮想ディスク3つをPC2にPC1と異なる接続順で接続を行う。
  3. PC2で記憶域プールの設定画面を確認し問題なく記憶域プールが構築されていることの確認とPC1で設置した"Test"と書かれたテキストファイルが問題なく閲覧出来ることを確認する。

結果

記憶域を構成しているディスクの順番が異なると記憶域プールが正常に構成できませんでした。 このことから環境には依存しないが接続順には依存すると思われます。

f:id:Armoris:20210128182458p:plain

検証3

記憶域プールを構築してるディスクの1つに障害を発生させ、普及までにかかる手順を確認します。

f:id:Armoris:20210128165114p:plain

手順

  1. PC1の記憶域プールに検証用のファイルとして"Test"と書かれたテキストファイルを設置する。
  2. 記憶域プールを構築しているディスクのうち1つの接続を解除し擬似的に記憶域プール環境に障害を発生した状況を作る。
  3. 記憶域プール修復用のディスク20GiBを用意し、PC1に接続し復旧を試みる
  4. 記憶域プールの設定画面を確認し問題なく記憶域プールが構築されていることの確認と記憶域プールに設置した"Test"と書かれたテキストファイルが問題なく閲覧出来ることを確認する。

結果

障害発生時は障害が発生しているドライブがエラーと表示されます。

f:id:Armoris:20210128183321p:plain

復旧には以下のような手順が必要となりました。

  1. "ドライブの追加" から修復用のドライブを追加します。

f:id:Armoris:20210128183600p:plain

  1. エラーの原因となっているドライブの "削除の準備" をクリックします。

f:id:Armoris:20210128183821p:plain

  1. 最後にエラーの原因となっているドライブの "取り出し" をクリックし修復完了です。

f:id:Armoris:20210128184012p:plain

記憶域プールに保存していたファイルも問題なく閲覧できることが確認できます。

f:id:Armoris:20210128184124p:plain

検証の結果、障害発生時は代わりとなるディスクを用意するだけで容易に修復が可能であることが確認できました。 また、障害発生中も記憶域自体は使用可能容量は減りますが通常通り使用できることが確認できました。

最後に

これらの検証から、Windowsの記憶域プールはディスクの接続順番のみ注意しておけば環境依存はなく簡単に移行でき、障害発生に関してもGUIで比較的容易に復旧できることが分かりました。 RAID機能を使うときはこのように移行や障害発生時の復旧手順など予め確認しておくことがデータの安全な保存ができることに繋がります。

ぜひ大切なデータの保管に役立ててください。