第8回 WindowsのストレージアーキテクチャWindows OS入門

ちょっと複雑な構成のストレージをWindowsで利用しようとすると、普段は目にしないWindows固有のストレージ用語に出くわすことがよくある。Windowsのストレージシステムの概要を学んで、こうしたストレージ用語にも慣れておこう。

» 2015年06月11日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
Windows OS入門
Windows Server Insider


「Windows OS入門」のインデックス

連載目次

 前回は、管理者アカウントの特権を制限するUAC(ユーザーアクセス制御)について説明した。今回はWindowsのストレージの仕組み(管理アーキテクチャ)について概要をまとめつつ、管理・運用に必須のストレージ関連の用語も説明する。

Windowsのストレージ管理アーキテクチャ

 Windows OSでハードディスクやSSDのようなストレージデバイスを利用する場合、通常はデバイス上にNTFSやFATなどの論理的な「ファイルシステム」を構築して、その中にデータを保存する。ディスクの物理的な構造やサイズ、形態などとは独立したファイルシステムを使うことにより、デバイスに依存せず、柔軟でポータビリティのある形でデータを保存したり、他のシステムとデータを交換したりできる。

 ストレージデバイスにはさまざまな種類があるが、Windows OSでは全てランダムアクセス可能なブロック型のストレージ(一定サイズのブロックを単位としてデータの読み書きを行うタイプのストレージデバイス)として扱う。これにより、OSから見るとどれも同じ手段でアクセス、管理できるようになる。

 Windows OSにおけるストレージやファイルシステム関連の内部アーキテクチャを図にすると次のようになる。

Windowsストレージアーキテクチャ Windowsストレージアーキテクチャ

 この内容を簡単に説明すると次の通りである。

  • I/Oサブシステム
    これはユーザーのアプリケーションプログラムなどから発行されたファイルアクセス要求を、適切な下位のファイルシステムドライバーへ送信する。
  • ファイルシステム
    NTFSやFAT、CDFS、UDFなど、ファイルシステムごとの処理を行う。
  • ボリュームスナップショット
    ボリュームのスナップショット(ボリュームシャドウコピー)を管理する。
  • ボリュームマネージャー
    C:やD:のようなボリュームの管理や、ベーシックディスク、ダイナミックディスク(ストライプやRAIDなど)の管理を行う。
  • パーティションマネージャー
    ディスクのパーティションを管理する。
  • クラスドライバー
    ハードディスクや光学ドライブ、テープドライブ、メモリカードなど、ストレージ全般を取り扱うデバイスドライバー。
  • ポートドライバー
    RAIDやSAS(SCSI)、ATAPI、SATA(IDE)、VHD/VHDXなど、ストレージデバイスとの接続インターフェースに応じたデバイスドライバー。
  • ミニポートドライバー
    ベンダー固有の処理を行うデバイスドライバー。通常、サードパーティベンダーは自社製品に対して、この部分さえ用意すればWindows OSで利用できるようになる。

 実際にどのようにファイルへのアクセス処理が行われるのかについては、次回解説する。

Column:ハードディスクのセクターサイズについて

 ストレージデバイスは通常、「セクター」と呼ばれる固定長のブロックを単位としてデータを読み書きする。セクターサイズはこれまで伝統的に「512bytes」であることが多かった。しかしストレージ容量の大容量化に伴い、現在ではもっと大きなセクターサイズが使われることも増えてきた。詳細は省略するが、セクターサイズを拡大させると内部でのみ必要な管理用領域のサイズを削減でき、その分ユーザー領域をいくらか増やすことができるからだ。

 ハードディスクのセクターサイズも長い間512bytesが使われていた。だが昨今では、従来の8倍の4Kbytesにしたディスクが普及し始めている。ただしいきなり4Kbytesにすると、セクターサイズ=512bytesを想定しているシステムやツールなどが誤動作する可能性があるし(このようなツールは非常に多い)、そのようなツールで間違ってシステムを操作すると、データやシステムを破壊してしまう可能性がある。

 そこでWindows OSではこのような新しい形式のディスク(よく「アドバンスドフォーマット、AFT」と呼ばれる)に対して、段階的にサポートを強化してきた。

タイプ 論理セクターサイズ 物理セクターサイズ サポートOS
512bytesネイティブ(従来のディスク) 512bytes/td> 512bytes Windows 7/Windows Server 2008 R2(SPなし)およびそれ以前のWindows OS
アドバンスドフォーマット/512e(512bytesエミュレーション) 512bytes 4Kbytes Windows 7 SP1/Windows Server 2008 R2以降
4Kbytesネイティブ 4Kbytes 4Kbytes Windows 8/Windows Server 2012以降
Windows OSにおける4Kbytesセクターのディスクのサポート状況

 4Kbytesセクターをサポートしていない古いWindows OSでは、セクターサイズが512bytesのディスクしか扱うことができない(表の一番上の行)。そのようなシステムで利用するために、セクターサイズが512bytesであるかのように見せるためのジャンパースイッチなどを装備したハードディスクが販売されている。古いWindows OSでは、そのような互換機能を持ったハードディスクを利用するのがよいだろう。

 Windows 7 SP1/Windows Server 2008 R2 SP1では、512bytesのセクターサイズをエミュレーションして利用する機能が追加された。これは、実際のセクターサイズが4Kbytesであっても、内部的には512bytesの論理セクターが8つあるように扱う機能である。1論理セクター分だけデータを書き換えたい場合は、まず4Kbytesの物理セクターを1つ読み出してから1論理セクター分だけ更新し、最後に4Kbytesをまとめて書き戻す。このような処理により、ややオーバーヘッドは生じるが、4Kbytesセクターのディスクでも正しく取り扱えるようになっている。

アドバンスドフォーマット(512e)によるディスクアクセス アドバンスドフォーマット(512e)によるディスクアクセス
物理セクターサイズが4Kbytesのディスクを、512bytesの論理セクターが8つあるようにエミュレーションして処理する方法をアドバンスドフォーマット(512e)という。一部の論理セクターの内容を更新する場合は、物理セクター全体を読み出してから上書き更新し、物理セクター全体をディスクへ書き戻す。OSやアプリケーション側の対応が最小限で済むが、パーティションやクラスターがこの物理セクターサイズの境界に合うように配置されていないと、パフォーマンスが低下する恐れがある。

 より新しいWindows OSでは4Kbytesネイティブのセクターに対応している。エミュレーションではなく、論理的にも物理的にも4Kbytesのセクター単位でデータを取り扱うことができる。

 現在使用しているディスクがどの方式でアクセスされているかは、「fsutil fsinfo ntfsinfo 」コマンドなどで確認できる(Windows 8以降なら「fsutil fsinfo sectorinfo 」コマンドも利用可能)。

C:\>fsutil fsinfo ntfsinfo g: ……管理者権限のあるコマンドプロンプト上でこれを実行する。ここでG:は対象となるドライブ上にあるNTFSボリューム(これはWindows 8.1上での実行例)
NTFS ボリューム シリアル番号            : 0xe23ecdbb3ece784d
NTFS バージョン                         : 3.1
LFS バージョン                          : 2.0
セクター数                              : 0x0000000022ee07ff
総クラスター数                          : 0x00000000045dc0ff
空きクラスター数                        : 0x00000000045d3e8a
総予約数                                : 0x0000000000000000
セクターあたりのバイト数                : 512 ……論理セクターサイズ
物理セクターあたりのバイト数            : 4096 ……物理セクターサイズ
クラスターあたりのバイト数              : 4096
ファイル セグメントあたりのバイト数     : 1024
ファイル セグメントあたりのクラスター数 : 0
……(以下省略)……



 上の結果の「セクターあたりのバイト数」と「物理セクターあたりのバイト数」に注目する。これが「512」「512」なら512bytesネイティブ対応(従来のディスク)、「512」「4096」ならアドバンスドモード(512e)対応、「4096」「4096」なら4Kbytesネイティブ対応ということになる。詳細は以下のリンクを参照していただきたい。

 以下、Windows OSのストレージ関連の用語についてまとめておく。Windows OSで使えるファイルシステムやNTFSの詳細については、次回解説する。

パーティションとボリューム

 Windows OSでハードディスクやSSDストレージなどを利用する場合、あらかじめディスク上に「パーティション」と「ボリューム」を作成しておく必要がある。パーティションとは、ディスクをあらかじめ分割、区画分けしたものであり、その区画の中に作成したファイルシステム空間のことをボリュームという。ユーザーがエクスプローラーなどで実際に目にするC:やD:などがボリュームである。

 バーティションとボリュームについては以下の記事も参照のこと。

パーティションとボリュームの関係 パーティションとボリュームの関係
ディスクに上に作成した論理的な区画のことを「パーティション」という。パーティションの中にファイルシステムを作成すると(フォーマットすると)、それが「ボリューム」となる。ユーザーがエクスプローラーなどで目にするのはこのボリュームの中に作成されたファイルやフォルダーである。

MBRディスクとGPTディスク(ディスクのパーティション形式)

 システムにディスクを接続して使用する場合、事前にパーティションを確保する必要がある。実は、さらにその前に「MBRディスク」と「GPTディスク」のうち、どちらにするかを決めなければならない。どちらを使うかでパーティションの確保方法が違ってくるからだ。

 一般的には容量が2Tbytes超のディスクを使う場合やUEFI方式でブートしたい場合はGTP形式にし、そうでなければデフォルトのままの形式(OSの初期化ウィザードが指示する形式)を使用すればよいだろう(詳細は先のTIPS記事を参照していただきたい)。両者の違いは次の通りである。

パーティション形式 MBR形式(FDISK形式ともいう) GPT形式
最大ディスクサイズ 2Tbytes未満:○
2Tbytes超:×
2Tbytes超のディスクをMBR形式にすると、ディスクの先頭の2Tbytes分しかアクセスできず、残りの領域へはアクセスできない
2Tbytes未満:○
2Tbytes超:○
サイズに関係なく利用できる
作成できるパーティションの種類 ・プライマリパーティション(最大4つ。拡張パーティションを作成する場合は最大3つ)
・拡張パーティション(最大1つ)
・論理ドライブ(任意数)
・パーティションの種類は1つのみ(種別はない)
・(デフォルトでは)最大で128個のパーティションを作成可能
ブート方法 ・MBRブート(BIOSブートともいう)
・セキュアブートは不可能
・「アクティブパーティション」からしかブートできない
・UEFIブート
・セキュアブートが可能
・どのディスクのどのパーティションからブートするかなどは柔軟に対応できる
ディスクのパーティション形式
MBR形式は古くからある形式で互換性が高い半面、制約も多い。GPT形式は新しい形式で柔軟性が高く、2Tbytes超のディスクを利用したい場合はGPT形式の利用が必須だ。

 MBR形式は、MS-DOSやWindows 9xなどの昔から使われているディスク形式であるため、どのシステムでも利用できるなど互換性が高い。だがこの方式は2Tbytes以上のディスクに対応できない、UEFIブートができないなど、今となっては制約の多い形式である。そのため、今後はGPT形式が主流になるであろう。

ベーシックディスクとダイナミックディスク

 パーティション形式とは別に、Windows OSで利用するディスクには「ベーシックディスク」と「ダイナミックディスク」という区別もある(これはMBR形式やGPT形式のいずれとも組み合わせ可能)。この違いは次の通りである。

タイプ 意味
ベーシックディスク ・デフォルトの形式
・Windows OS以外でも利用可能(他のOSとも共存可能)
・MBR形式やGPT形式で作成されたパーティションをそのままボリュームとして利用する形式
・1パーティション=1ボリュームという、「シンプルボリューム」のみが作成できる
ダイナミックディスク ・Windows OS独自の形式
・パーティションの配置などに関する制約を取り除いた、柔軟性の高いボリューム管理機能
・MBR形式やGPT形式で作成された領域を組み合わせてボリュームを作成できる
・複数パーティション=1ボリュームという、「マルチパーティションボリューム」を作成できる
・離れた場所にある領域をまとめて1つのボリュームにできる
・複数のディスクの領域をまとめて1つのボリュームにできる
・ミラーやRAID-5などの耐障害性に優れたボリュームを構築できる(RAID-5はサーバー系のWindows OSでのみ利用可能)
ディスクのタイプ
デフォルトではベーシックディスクになっているが、複数のディスクや領域をまとめて1つのボリュームにしたり、ミラーリングやRAID-5の機能を使ったりしたければダイナミックディスクを利用する。ディスクのタイプはディスクの管理ツールで変更できる。

 Windows OSにディスクを接続すると、デフォルトではベーシックディスクとなる。これは「シンプルボリューム」を作成するために使われる。シンプルボリュームとは、1パーティションが常に1ボリュームとなるような形式であり、考え方としては分かりやすい。

 これに対して、複数のパーティションをまとめて1つのボリュームにすることもできる。これを「マルチパーティションボリューム」といい、このために使われるのがダイナミックディスクである。

 もともとWindows OSにはベーシックディスクしかなかったが、マルチパーティションボリュームをサポートするためにWindows 2000でダイナミックディスクが導入された。ダイナミックディスクを使うと、次のようなボリュームタイプが利用できるようになる。

ボリュームタイプ 機能
シンプルボリューム ・1台のディスク内だけで閉じているボリューム
・同じディスク上の別の領域と連結することも可能(不連続な領域でもよい)
・別のディスク上の領域とは連結できない(それはスパンボリュームになる)
・単一領域のみによるシンプルボリュームはベーシックディスクでもよいが、複数領域を結合する場合はダイナミックディスクが必要
スパンボリューム ・2台以上のディスクにまたがっているボリューム
・各領域のサイズは同じでなくても構わないし、場所も連続していなくてもよい
ストライプボリューム ・いわゆるRAID 0ディスク
・複数台のディスクへ同時にアクセスして、入出力性能を高める
・各ディスクから同じサイズだけ領域を確保する
・冗長性はなく、どれか1台のディスクが故障するとボリューム全体が失われる
ミラーボリューム ・いわゆるRAID 1
・2台のディスクへ分散してデータを書き込み、1台故障してもデータが失われないようにする
・2台のディスク上に、それぞれ同じサイズの領域を確保する
RAID-5ボリューム ・いわゆるRAID 5
・3台以上のディスクへ分散してデータを書き込み、1台故障してもデータが失われないようにする
・複数のディスク上に、それぞれ同じサイズの領域を確保する
ダイナミックディスクのボリュームタイプ

 ダイナミックディスクでは、複数のディスクにまたがった領域を管理するために、「LDM(Logical Disk Manager)」という独自のパーティション/ボリューム管理テーブルが利用されている。ベーシックディスクをダイナミックディスクに変換すると、元のMBRやGPTのパーティションテーブルの代わりにLDMが利用されるようになる。LDMにはトランザクションログの機能もあり、システムクラッシュや電源断などが起こってもデータが破壊されないようにする保護機能が含まれている。

 ダイナミックディスクで可能になる機能やその制限などについては、以下の記事も参照していただきたい。

記憶域プール

 「記憶域プール」とは、ダイナミックボリュームに代わる、新しいディスク管理機能である。Windows 8やWindows Server 2012から導入された。ダイナミックディスクのマルチパーティションボリューム機能と比較すると、ディスクの組み合わせ方法の柔軟性、シンプロビジョニング、耐障害性、管理機能などが強化されている。主な機能を次に示しておく。詳細については以下の記事も参照していただきたい。

機能 概要
記憶域プール 複数の物理ディスクをまとめて1つの大きな仮想ディスクストレージとして扱う機能。ディスクの実容量や組み合わせ方法、接続インターフェース(SATA、USB、SAS、IDEなど)によらず、ユーザー側からは1つのディスクに見える。一度作成したプールに対して、後から動的に物理ディスクを追加したり、故障したディスクを取り外して交換したりすることも可能
シンプロビジョニング シンプロビジョニングとは、ドライブサイズを仮想化し、実際の容量よりも大きなサイズとして見せる技術。ディスクシステムに対する初期投資コストを抑えながらも、実際に使用しているディスクサイズの需要に応じて物理ディスクを順次追加できるようになる。ディスクを追加してもシステム構成の変更作業などは不要。反対はシックプロビジョニング
耐障害性の向上 記憶域プールから仮想ディスクを作成する場合、「双方向(2ウェイ)ミラーリング」「3方向(3ウェイ)ミラーリング」「パリティ」のいずれかの冗長性/復元機能と組み合わせられる。バックグラウンドでのインテリジェントな障害からの復旧やドライブのホットスペアなどにより、サービスの可用性を維持できる。プールを構成するディスクの過半数が正常に動作していればプールは正常に機能し、冗長構成の仮想ディスクは適切に代替処理などが行われる
ストライピングによる性能向上 記憶域プールに複数の物理ディスクがある場合、それらのディスク全体に分散して記録する。2台だけでなく、3台以上組み合わせたストライピングも可能で、パフォーマンス向上が期待できる
PowerShellによる管理 記憶域プールに関する機能は全てPowerShellから操作できる他、PowerShellでのみ可能な操作もいくつかある
Windows 8/Windows Server 2012以降で利用戒能な記憶域プールなどの概要
Windows 8/Windows Server 2012以降では、ダイナミックディスクよりも高機能な記憶域プールやシンプロビジョニング機能などが利用できる。

 これらの機能を使う場合は、ダイナミックディスクの場合と違い、まずパーティションを切ることなくシステムに接続されたディスクを記憶域プールに追加しておく(記憶域プールに参加させたディスクは、通常のディスク管理ツールからは見えなくなる)。そして記憶域プールから必要なディスクサイズだけを取り出して、新しい(仮想的な)ディスクを作成する。

記憶域プールの概念 記憶域プールの概念
物理ディスクを複数台まとめて「プール」とする。そして作成した論理的な仮想ディスクに対して、プールを構成する物理ディスクからブロック(実際のディスク領域)を割り当てる。実際に使用する領域の分しか消費しないので、仮想ディスクのサイズは将来を見越してあらかじめ大きく割り当てておくと、以後の管理が楽である。このような管理方式を「シンプロビジョニング」という。ただし物理ディスクの最大合計サイズを超えてデータを記録することはできないので、必要に応じて物理ディスクを追加する。

 記憶域プールで作成可能なボリュームのタイプとしては次のような種類がある。

記憶域プールで作成できるボリュームのタイプ 記憶域プールで作成できるボリュームのタイプ
ディスクの障害からデータを守るには、あらかじめ余分にディスクを割り当てておき、ミラーデータやパリティデータを保存しておく必要がある。記憶域プールでは、これらのいずれかの方法と組み合わせて仮想ディスクを作成できる。「シンプル(回復性なし)」は、冗長ディスクを用意しない方式。双方向ミラーは冗長データを1台分、3方向ミラーは冗長データを2台分用意しておく方式。パリティはRAID 5方式。なお、プールディスクとしてこの図に描いてあるディスクの台数は、それぞれに最低限必要な台数である。これよりも多くのディスクがプール内に存在する場合は、同時に読み書きできるディスク数が増加し、結果的にディスクの読み書き速度が向上する可能性がある。


 今回はWindows OSのストレージ管理アーキテクチャについてみてきた。次回はFATやNTFSなどのファイルシステムについて解説する予定である。


「Windows OS入門」のインデックス

Windows OS入門

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。