ドライブアピアランス

現代のコンピューティングにおいて、よく知られていながらも理解が難しい基本概念の一つがドライブアピアランス、すなわちハードドライブのように見えるものという概念です。単純に聞こえるかもしれませんし、大部分はそうなのですが、複雑な側面もあります。
まず、ハードドライブとは何でしょうか。これは単純なはずです。私たちが通常指すのは、何十年も前から作られている標準的な3.5インチおよび2.5インチのフォームファクターのウィンチェスタースピニングディスクデバイスです。これらはプラッターが回転し、ドライブヘッドが前後に動き、ATAやSCSIなどのコネクターで接続されます。私たちのほとんどはハードドライブを手に取れば、それがハードドライブだとわかります。これをドライブの物理的な形として呼びます。
しかしコンピューターからすると、ドライブの外装やコネクターは見えません。コンピューターは電子回路を通してドライブをデジタル的に「認識」しなければなりません。これは人間がドライブを物理的に見るのとは全く異なります。コンピューターにとって、ハードドライブは最も基本的な物理レベルではATA、SCSI、またはファイバーチャネルデバイスとして現れ、通常はより高いレベルでブロックデバイスとして抽象化されます。これを物理的な形ではなく論理的な形と呼びます。ここでの目的のために、これらすべてのドライブインターフェースをブロックデバイスとして考えましょう。それらは異なりますが、わずかな違いであり、この議論には影響しません。重要なのは、コンピューターがハードドライブとして認識する標準インターフェースまたは密接に関連するインターフェースのセットが存在するということです。
論理ドライブアピアランスの別の考え方として、コンピューターにとってハードドライブのように見えるものはすべて、コンピューターがファイルシステムでフォーマットできるものだということです。ファイルシステムはドライブ自体ではなく、配置するためのドライブを必要とします。
ここで最も重要な概念はインターフェースです。コンピューターにとって、「ハードドライブインターフェースを実装するもの」こそが本当の意味でハードドライブとして認識されます。これはシンプルでありながら強力な概念です。
標準インターフェースを使用するからこそ、フラッシュメモリーを取り上げ、それを標準プロトコル(現在はSATAおよびSAS実装のATAとSCSIが一般的)で提示するディスクコントローラーに接続し、コンピューターにとって従来のウィンチェスタードライブとまったく同じように見えて動作するSSDを作ることができました。それでいて物理的には何も共通点がありません。馴染みのある物理的なフォームファクターに収まる場合もあれば、そうでない場合もありますが、確実にプラッターもドライブヘッドも持ちません。従来のハードドライブとモダンなSSDの仕組みを比べると、同じ目的を持っているとは到底思えないでしょう。
この概念は多くのデバイスに適用されます。SDカードやUSBメモリースティックも同様に機能します。重要なのは、これがハードドライブ上のパーティションの仕組みでもあるということです。パーティションシステムは一方でドライブインプレッションインターフェースの概念を使用してデバイスに適用され、もう一方でそれを使用するもの(通常はファイルシステム)にドライブインプレッションインターフェースを提示します。両側でドライブインプレッションインターフェースを使用するという考え方は非常に重要です。これにより、複雑なストレージシステムを構築するための均一かつ普遍的なビルディングブロックシステムが実現します。
この「ドライブイン、ドライブアウト」の概念は多くの場面で見られます。最もよく知られているのはRAIDです。RAIDシステムはハードドライブのアレイを受け取り、複数のアルゴリズムの1つを適用してドライブをチームとして機能させ、それを上位の「スタック」にある次のシステムへの単一のドライブインプレッションとして提示します。このカプセル化がRAIDに力を与えます。スタックの上位でRAIDアレイを見るシステムは文字通りハードドライブしか見えません。ドライブのアレイは見えず、RAIDの下に何があるかも知りません。RAIDシステムが提示する結果のドライブだけが見えます。
RAIDシステムは任意の数のドライブを受け取り、標準ドライブとして提示するため、理論的にはRAIDを何層でも重ねることができます。もちろん、それを大きく行うことは非常に非現実的です。しかし、この概念によってネストされたRAIDアレイが可能になります。例えば、多くの物理ハードドライブをペアに分け、各ペアをRAID 1アレイにしたとします。それぞれのアレイは単一のドライブとして提示されます。それぞれの結果として得られる論理ドライブは、RAID 0などの別のRAIDアレイに組み合わせることができます。これがRAID 10の構築方法です。さらに進んで、複数のRAID 10アレイを取り上げ、それらをすべて別のRAIDシステムに提示して再びRAID 0に組み込むことで、RAID 100が得られ、以降も同様に続きます。
同様に、論理ボリュームレイヤーはRAIDと同じカプセル化を使用してその機能を発揮します。Linux上のLVMやWindowsのダイナミックディスクなどの論理ボリュームマネージャーは論理ディスクの上に位置し、デバイスの柔軟な拡張やスナップショットの有効化などの強力な管理を行うレイヤーを提供し、スタックの次のレイヤーに論理ディスク(ドライブインプレッションインターフェース)を提示します。
ドライブインプレッションの均一な性質により、スタックは任意の順序で構成できます。論理ボリュームマネージャーをRAIDの上に置くことも、RAIDを論理ボリュームマネージャーの上に置くことも可能ですし、どちらか一方または両方を省略することも当然できます。
ドライブインプレッションまたは論理ハードドライブの概念は、そのシンプルさの中に力があり、必要に応じてストレージシステムをカスタマイズするための大きな可能性を与えてくれます。
もちろん、論理ドライブ概念には他の用途もあります。最も普及していながら最も理解されていないものの一つがSANです。SANとは、1つ以上の物理ディスクを取り上げてネットワーク経由で論理ドライブ(SANからのこの論理ドライブの提示はLUNと呼ばれます)として提示するデバイスに過ぎません。これが文字通りSANのすべてです。ほとんどのSANは最終的なLUN(ディスクインプレッション)をネットワークに提示する前にRAIDレイヤーと論理ボリュームマネージャーレイヤーを組み込みますが、それはSANである必要条件ではありません。
これはもちろん、複数のSAN LUNを単一のRAIDで組み合わせたり、論理ボリュームレイヤーで制御したりできることを意味します。そして当然、SAN LUN、物理ハードドライブ、RAIDアレイ、論理ボリューム、パーティション…はすべてファイルシステムでフォーマットできます。これらはすべて同じ結果を達成するための異なる手段です。すべてが同じように動作します。すべてがドライブアピアランスインターフェースを共有しています。
これらすべての要素がどのように組み合わさるかの実際の例として、エンタープライズ環境でよく見られる最も一般的な「ストレージスタック」の一つを見てみましょう。もちろんストレージスタックの構築方法は多数あるため、あなたのものが異なっていても驚かないでください。スタックの最下部にはほぼ必ず物理ハードドライブがあり、ソリッドステートドライブが含まれる場合もあります。これらはSAN内に物理的に配置されます。SANを出る前に、スタックにはドライブの実際のストレージレイヤー、それらのドライブを単一のエンティティに統合するRAIDレイヤー、成長やスナップショットなどの機能を可能にする論理ボリュームレイヤーが含まれます。次にSANとサーバーの間の物理的な境界があり、LUNとして提示されます。LUNはサーバー・オペレーティングシステム側の境界点で論理ボリュームマネージャーが適用されます。その上にファイルシステムがあり、これが最終ステップです。ファイルシステムはドライブアピアランスインターフェースではなく、ファイルインターフェースを提示するからです。
ドライブアピアランス(論理ドライブ)の理解と、これらがどのようにコンポーネントどうしを接続して複雑なストレージサブシステムを構築するかは、ITを理解するための重要なビルディングブロックであり、多くのIT活動に幅広く応用できます。
