これまでの投稿ではサーバ(仮想マシンを含む)とストレージのデータのやりとりの仕様について取り上げてきた。
今回は専用ストレージ機器の物理的な内部構造について記述していきたい。いつものようにかなりスタンダードなお話になる。
目次
- ストレージ機器の4要素
- フロントエンドの仕組み
- キャッシュの仕組み
- バックエンドの仕組み
- 物理ディスクの仕組み
ストレージ機器の4要素
・フロントエンド(ポート&コントローラ)
・キャッシュ
・バックエンド(ポート&コントローラ)
・物理ディスク
この4要素の構造、何かに似ていないだろうか。サーバ機器である。
物理ディスクはもちろん、キャッシュはメモリが使われ、フロントエンドとバックエンドの両コントローラの中の人はCPUである。
専用ストレージ機器は、データの読み書きだけに特化したサーバ、ということができる(細かい箇所を見ていけば明確に異なる部分は多々あるが今回の投稿においてはそういうことにしておく)。
ではこれからこのストレージ機器の4要素を各々見ていきたい。
フロントエンドの仕組み
こちらはホストとストレージの橋渡しをするインターフェースである。ポートとコントローラ、この2つの要素で構成されており、可用性を高めるためにコントローラ複数搭載されていて、各コントローラは複数のポートを備えている。
たくさんのホストからの接続を想定しているため汎用的なサーバ機器よりもストレージ機器の方がフロントエンドポートの数は多く搭載できる仕様になっている。
※例:サーバ5台で仮想化クラスタを形成して、1台の大容量ストレージ機器を共有ストレージとして活用するケースなど
フロントエンドポートでネットワーク接続されたホスト、またはDAS方式による直接接続されたホストからアクセスされる。そのアクセスされる際に利用されるプロトコルとしてFCやiSCSIなどがある。
フロントエンドポートで受け取ったアクセス、データはまずフロントエンドコントローラにて処理される。フロントエンドでポートからコントローラへ渡されるものは基本的に書き込みデータである。
フロントエンドコントローラはこの書き込みデータを内部のデータバスを通じてキャッシュとやりとりをする。書き込みデータはキャッシュに渡される。それが完了するとフロントエンドコントローラからホストへ確認応答メッセージが送信される。
以上のように、フロントエンドは接続されたホストとキャッシュの間でデータのやりとりを行なう箇所である。
キャッシュの仕組み
ここではホストからのI/Oリクエストにかかる処理の時間を短縮するため、データを一時的に格納する場所である。このキャッシュがあることでストレージ機器のパフォーマンス向上に寄与する。
物理ディスクにHDDを置いたと仮定する。HDDはストレージシステムのドライブの中では低速な部類に入るためデータアクセスには数ミリ秒かかる。一方、キャッシュでのデータアクセスは非常に高速で1ミリ秒もかからないケースが多い。
キャッシュを置いた専用ストレージでは、書き込みデータをいったんキャッシュに配置されてその後にディスクに書き込みがされる。
キャッシュはフロントエンドとバックエンドに挟まれており、前述した書き込みデータに配置だけでなく受け渡すための読み取りデータも配置される。
このキャッシュは仕様に見るべき点が数多くあり、これはまた別の機会の投稿で詳細に触れていきたい。今回はストレージ機器の要素の一つとしての紹介に留めておく。
バックエンドの仕組み
こちらはキャッシュと物理ディスクとの橋渡しをするインターフェースである。フロントエンドと同様にポートとコントローラ、この2つの要素で構成されている。
可用性確保のため、バックエンド側のコントローラも複数搭載しているのが基本仕様のはずだが、ベンダーによって様々である。複数搭載の場合はコントローラやポートに障害が発生した場合に物理ディスクへの代替パスの提供がある。負荷分散という効果も併せ持った仕様だ。
バックエンドはキャッシュと物理ディスク間でデータ転送する役割を持つ。フロンドエンドからキャッシュに渡った書き込みデータは、そこからバックエンドに転送されて更に物理ディスクに転送される。
このバックエンドコントローラと物理ディスクの間で使用されているプロトコル、インターフェースは主なものとしてSAS、SATA、NVMeなどがあり、まれにFCでの接続も見られる。
物理ディスクと接続するプロトコル、インターフェースについては以下の過去投稿で題材にしているのでよろしければ。
また仮想メモリ(物理ディスクの一部領域を一時的なメモリの領域として活用する機能)の制御もこのバックエンドコントローラで処理することもできる。
物理ディスクの仕組み
バックエンドコントローラに接続されたストレージ機器の要素の中では最終目的地となる。
ディスクの種類は様々なものがあるが、基本的にHDDとSSDでバックエンド側で記載したインターフェースがサポートされている。ディスクを複数本束ねてRAID構成を作成したり、また種類の違うドライブ同士を混在に組み合わせて利用することもできる。SSDをキャッシュとして使い、HDDを実際のデータ格納として利用できる機能としてNetAppのflashpoolが代表的なものとして紹介した。
以上が、ストレージ機器を構成する4要素のそれぞれの役割・仕組みについて記述した。見れば見るほど仕組み自体はサーバそのものである。
ストレージ機器に使われるインターフェースやプロトコルについて、フロントエンドで使われているものとバックエンドで使われているものの区別がつかなかった時期があったので、同じことで苦しんでいる人のサポートができれば幸いだ。
ひとりごと
プロ野球が開幕した。
学生時代の友人や仕事仲間とは雑談の中でプロ野球の話で盛り上がることが多く、今年もいろいろなネタを提供されるはず。
自分は特に贔屓のチームを作らずにどの球団のファンとも話せるので、気楽な立場で雑談ができるのが強み?である。
本当は観戦しに球場に足を運びたい気持ちもあるが、今年は忙しいから無理そうかな。テレビやネット中継で楽しむことにする。