iSCSI とは
ストレージは大きく分けて 2 種類あります。
1 つは『ファイルストレージ』で、一般的には『NAS (Network Attached Storage)』と呼ばれています。
もう 1 つは『ブロックストレージ』で、これはさらに SAS ケーブル等の専用ケーブルでサーバと直結する 『DAS (Direct Attached Storage)』と、SAN (Storage Area Network) というネットワークでサーバと接続する『SAN ストレージ』の 2 つに分かれます。
これらの違いについて分からない場合は以下ページを参考にしてみて下さい。
iSCSI は上記でいうところの『SANストレージ』との接続方式に該当します。
つまり、iSCSI とは SAN の一種です。
SAN の種類とメリット・デメリット
SAN とは『Fibre Channel (ファイバチャネル,略称FC)』や『FC over Ethernet (読み方:エフシーオーイー, 略称FCoE)』、『iSCSI (読み方:アイスカジー)』といったプロトコルを使って ブロックアクセスを行わせる、ストレージ専用ネットワークのことです。
そして SAN ストレージは、SAN を介してサーバと接続される、ブロックストレージの一種です。
FC/FCoE/iSCSI のいづれのプロトコルも SCSI コマンドをカプセル化するものですので、基本的には DASと同様のブロックアクセスを行います。
つまり、SAN ストレージはファイルシステムを理解せず、接続元であるサーバ OS がファイルシステムを理解した上で SAN ストレージに SCSI コマンドによるブロックレベルでのアクセスを行います。
FC のメリットはオーバーヘッドが少なくパフォーマンスが良いことです。
一方デメリットは、インタフェース (HBA = ホストバスアダプタ) や (冗長化のための) ファイバチャネルスイッチ等が独自規格のため高価であることです。
なお、ケーブル自体は 10GBase-LR 等で使う一般的なシングルモード/マルチモードの光ケーブル、LC 等の一般的なコネクタのものが利用可能です。
一方、FCoE や iSCSI は大量生産が可能な Ethernet インタフェースを使うためコスト削減ができるのがメリットです。
FCoE は SCSI コマンドを Ethernet にカプセル化するため、オーバーヘッドは Ethernet ヘッダ分だけで済みますが、サーバと同一ブロードキャストドメインに存在する必要があります。
iSCSI は SCSI コマンドを Ethernet および IP にカプセル化しますので、ルーティングによりIPネットワークを横断できますが、オーバーヘッドは Ethernet ヘッダ+IPヘッダになります。
iSCSI を使う条件は IP 通信さえ使えれば良いので、他の用途 (例えば DNS サーバ等) で使っている NIC にその役割を担わせてもよいです。
ただし、ディスクアクセスはシステム全体のボトルネックなので、NIC は 専有が望ましく、さらには Teaming を使った方が良いでしょう。
NAS (CIFS, NFS接続) との違い、メリット・デメリット
NAS とはファイルストレージのことで、IP アドレスを持ち、IP ネットワークに接続して使われます。
特徴としては、競合を気にすることなく、複数のサーバ OS が同時に NAS を利用できます。
よく使われるプロトコルは CIFS/SMB と NFS の 2 種類です。
NAS は SAN ストレージと異なり、NAS 自体がファイルシステムを構成し、認識します。そのため、要求はブロック単位ではなくファイル/フォルダ単位で処理されます。
具体的には、サーバ OS は NAS に対し『資格情報 (ユーザ ID 等)』と『アクセスしたいファイル』と『ファイルに対する操作 (Read/Write等)』を送信します。
NAS はアクセス権に問題が無いことを確認した上で、処理を実行し、結果をサーバ OS に返します。上図では CIFS の例を示していますが、NFS でも同じです。
iSCSI のメリット (=NAS のデメリット)
iSCSI はブロックレベルでのアクセスを行う低レイヤの要求であるため、NAS と比べて処理が高速です。つまりパフォーマンスが良いのです。
NAS のメリット (= iSCSI のデメリット)
NAS は複数サーバ OS からの同時アクセスに対しては待ち行列を使って順に処理をしていきます。必要に応じてロック(排他)するため、基本的に競合を起こしません。
なお、このように NAS は高次元な処理を行うOSが必要となり、このような OS を一般的に『NAS ヘッド』と呼びます。
NAS ヘッドは Windows や Linux 等の一般的な OS であったり、ストレージメーカ独自 OS だったりします。
一方 、iSCSI 等のブロックアクセスは一般的に、ストレージがファイルシステム全体像を理解していないため、複数のホストが互いに相手領域に侵食する (競合する) ことを防げません。
例えば複数仮想ホストから SAS ケーブルで 1 つの DAS に接続したり、iSCSI で複数イニシエータから 1 つのターゲットにログインしたり等で、LUN を複数ホストから共有する場合、何もしないとお互いの領域を破壊し合うシナリオも起こりえます。
iSCSI のデメリットに対する解決策
サーバ仮想化において、ブロックストレージを共有ストレージとして利用するのはごく一般的であり、ソフトウェアベンダの考慮が行き届いていたりもします。
例えば VMware では VMFS というクラスタファイルシステムを使うため『オンディスクロック』という機能により排他を行い、安全性を確保できます。
KVM では virtlockd による排他処理や、クラスタ LVM による排他処理など、実装がいくつかあるようで、実際にどのようにするか検討・設計する必要があります。
コメント