ユーザー向けのサイト、記憶域スペース、記憶域プールも。記憶域スペース記憶域スペースから記憶域ディスクへの書き込みまず、仮想論理ドライブである記憶域スペースにデータを書き込みする場合、仮想物理ディスクである記憶域プールならびに実際の物理ディスクへの書き込みがどのように行われるかを理解します。理解を促進するため、まず単純に記憶域スペースのNumberOfDataCopies=1の場合(Simple,Parity)の場合を、以下のような概念図を用いて説明します。記憶域スペースにデータを保存します。図ではExcelファイルを記憶域スペースに保存する流れを示しています。NumberofDataCopiesの値は1のため、記憶域スペースは1ファイルを記憶域プールに対して保存します。データを保存していく際に、以下の2~4を繰り返します。1つのデータを、実際にディスクに書き込む1トランザクションの単位であるストライプに分割します。デフォルトで256kbとなります。言い換えると、記憶域スペースに保存されるデータは、データサイズ/ストライプサイズに分割されます。ストライプを記憶域スペースの属性として指定されているNumberOfColumnsで分割します。図では3Columnsになります。それぞれのColumnを、物理ディスクに書込みます。これをストライプの数だけ繰り返していきます。このケースでは、NumberOfDataCopies=1,NumberOfColumns=3、ですので、保存したデータは1×3=3台の物理ディスクに跨って書込まれていきます。この絵では、記憶域プール内の物理ディスク数とNumberOfColumnsが一致していますが、例えばNumberOfColumnsは3で記憶域プールに物理ディスクが4つある場合、明示的にPhysicalDisksToUse属性が指定されていない限りは4つの物理ディスクに対してランダムに各Columnを書込んでいくことになります。次に、NumberOfDataCopies=2、すなわち双方向ミラーの場合を示します。記憶域スペースにデータを保存します。図ではExcelファイルを記憶域スペースに保存する流れを示しています。NumberofDataCopiesの値は2のため、記憶域スペースは2ファイルを記憶域プールに対して保存します。図ではデータの四角が2つあるのはこの2ファイルを意味しています。データを保存していく際に、以下の2~4を繰り返します。1つのデータを、実際にディスクに書き込む1トランザクションの単位であるストライプに分割します。ストライプを記憶域スペースの属性として指定されているNumberOfColumnsで分割します。図では3Columnsになります。それぞれのColumnを、物理ディスクに書込みます。これをストライプの数だけ繰り返していきます。このケースでは、NumberOfDataCopies=2,NumberOfColumns=3、ですので、保存したデータは2×3=6台の物理ディスクに跨って書込まれていきます。これは双方向ミラーの例ですが、NumberOfDataCopies=3すなわち3方向ミラーの場合も同様の考え方になり、図の記憶域スペースに保存されるデータが3つになります。記憶域スペースのパフォーマンスNumberOfDataCopiesとNumberOfColumnsによって、最低限必要な物理ディスク数が決まるここまで示してきたように、記憶域スペースに1つのファイルを保存する際に必要な物理ディスクの最低数は、(NumberOfDataCopies)×(NumberOfColumns)で決定されます。記憶域スペースにはクォーラムの考え方がありますので、3方向ミラーの場合はこれに関わらず最低5台の物理ディスクが必要となります。複数の物理ディスクに跨ってデータが記録されますのでディスクIOのスループットが向上しますが、物理ディスクに1つでも障害が起こるとデータは消失します。Mirror:データは2つまたは3つの物理ディスク(NumberOfColumnsが1の場合)に複製されて保存されます。1つまたは2つの物理ディスク障害からもデータは保護されますが、ディスクの使用可能領域は1/2または1/3になります。パリティ:データとパリティ情報が物理ディスクを跨って保存されます。ディスクIOの都度パリティ計算が行われるため、パフォーマンス的には不利ですが、1台の物理ディスクからの障害からデータは保護され、信頼性は向上します。ディスクの使用可能領域は1/3~1/8になります(NumberOfColumnsによる)。記憶域スペースのパフォーマンスに影響を及ぼす要素として、ディスクIOとCPUリソースがあります。ディスクIOの際にパリティ演算が走るパリティはCPUリソースの面からパフォーマンスが低下する傾向にあります。同じ回復性の場合に、記憶域スペースのパフォーマンスを向上させるには、ディスクIOの1単位となるInterleaveのサイズ(デフォルトは256kb)と、書込み先のディスク数であるNumberOfColumnsを適切に設定することで、パフォーマンスの最適化が行えます(ネットワークで例えれば、MTUサイズの調整と、NICチーミングなどによる経路の分散をすることでスループットがあがるということと同じです)。Interleaveのサイズはアプリケーションの特徴等を考慮して適切に設定しないと逆にボトルネックとなる可能性があるため、よく分からない場合はデフォルトの256kbのままで利用することをお勧めします。記憶域スペースは、その属する記憶域プール内の物理ディスクに対してデータを保存していきます。その際の保存先ディスク数はNumberOfColumnsで定められた数になります。1ストライプの書込み毎に、記憶域プール内のディスクからある一定の法則に従ってNumberOfColumns数分のディスクを選び出し、そのディスクに対して書き込みを行っていきます。ここで問題となるのが、同一記憶域プールの中に、パフォーマンスの異なる物理ディスクが存在している場合です。HDDとSSDが存在している場合、HDDの性能がボトルネックとなる場合があります。このような場合は、予めHDDとSSDで記憶域プール自体を分けてしまうか、もしくは記憶域スペース毎に利用する記憶域プール内の物理ディスクを明示的に指定することで、パフォーマンスの調整が出来ます。“FNStorageSpace”の記憶域スペースが利用する物理ディスクをSSD1,SSD2に限定したい場合は、PowerShellから例えば以下のようなコマンドを利用して記憶域スペースを作成します。以下のようなコマンドを実行して確認します。SSD1,SSD2に限定されていることが確認出来ます。同じ事を概念的に絵で示すと、通常は右側のFNStorageSpace2のように、記憶域プール内の物理ディスクをまんべんなく利用するが、PhysicalDiskToUse属性の指定により、左側のFNStorageSpaceのようにSSD1,SSD2しか利用しないよう指定も出来るということになります。PowerShellで記憶域スペースを作成したら、後は通常PowerShellで記憶域スペースを作成するのと同じ手順です。Get-Diskコマンドを実行して、ディスク番号を確認します。-AssignDriveLetterを実行し、パーティションを作成してドライブレターを割り当てます。最後に、割り振られたドライブレターを指定して、フォーマットを実行して完了です。記憶域プールの中で利用する物理ディスクを指定して作成した記憶域スペースが利用出来るようになります。TechNetやMSDNサブスクリプションで公開されました。記憶域スペースでは、複数のディスクを束ねて1つの物理ディスクであるかのように取扱うことができます。