【図解】ファイルストレージとブロックストレージの仕組みと違い ~接続方法やメリット/デメリット~ | SEの道標
サーバアーキテクチャ

【図解】ファイルストレージとブロックストレージの仕組みと違い ~接続方法やメリット/デメリット~

ファイルストレージとブロックストレージ

ストレージは大きく分けて 2 種類あります。

1 つは『ファイルストレージ』で、一般的には『NAS (Network Attached Storage)』と呼ばれています。

もう 1 つは『ブロックストレージ』と呼ばれ、これはさらに SAS ケーブル等の専用ケーブルでサーバと直結する 『DAS (Direct Attached Storage)』と、SAN (Storage Area Network) というネットワークでサーバと接続する『SAN ストレージ』の 2 つに分かれます。

この記事ではこれらの違いを分かり易く説明していきます。

なお、ストレージ製品によっては全てを兼ね備えていたり、1 つしか使えなかったりと、カバーする範囲は異なります。

DAS とは

DAS とはブロックストレージの 1 種で、主に SAS ケーブルを使ってサーバと直接 (Direct) に接続されます。構成としてはエンクロージャと呼ばれる筐体が中心となり、エンクロージャに HDD (玉) を詰めていきます。

ストレージの種類によって搭載できるHDDの数利用できる HDD の種類RAID コントローラの種類などが決まっています。

例えば DELL の『PowerVault MD1000』という DAS だと 1 つのエンクロージャに SAS/SATA のいづれかを 15 個搭載でき、エンクロージャを 6 つ拡張でき、RAID は 0,1,5,6,10,50,60 が使えます。

DAS (ストレージ機器) 自体はファイルシステムを理解しません。フォーマットも自らは行いませんし、行われてもそれを理解しません。サーバに 0/1 の bit を読み書きするスペースを貸し出すだけです

一方、サーバ OS は DAS の領域をファイルシステムとして認識します (認識しない場合はフォーマットする)。その上で、(SAS接続の場合は) SCSI コマンドによりブロックレベルでのアクセスを行います

最近の OS ではブロックサイズ = 4KB 程度ですので、1 アクセスにつき 4KB の Read or Write を行います。

上図の例では LBA (Logical Block Address:論理ブロックアドレス) の 25 番を指定して 4KB の書き込みを SCSI コマンドで命令しています。

DAS 側では LBA を物理アドレスに変換して書き込みを行います。

NAS (ファイルストレージ) とは

NAS とはファイルストレージのことで、IPアドレスを持ち、IPネットワークに接続して使われます。特徴としては、競合を気にすることなく、複数のサーバ OS が同時に NAS を利用できます

プロトコルは主に CIFS (SMB) と NFS の2 種類です。

NAS も DAS と同様、種類によってHDD 搭載数、扱える HDD/RAID コントローラの種類が決まっています。

DASと異なり、NAS 自体がファイルシステムを構成し、認識します。そのため、DAS と異なり、要求はファイル/フォルダ単位で処理されます

具体的には、サーバ OS は NAS に対し『資格情報 (ユーザ ID 等)』と『アクセスしたいファイル』と『ファイルに対する操作 (Read/Write 等)』を送信します。

NAS はアクセス権に問題が無いことを確認した上で、処理を実行し、結果をサーバ OS に返します。

複数サーバ OS からの同時アクセスに対しては待ち行列を使って順に処理をしていきます。必要に応じてロック (排他) するため、基本的に競合を起こしません。

なお、このように NAS は高次元な処理を行うOSが必要となり、このような OS を一般的に『NAS ヘッド』と呼びます。NAS ヘッドは Windows や Linux 等の一般的な OS であったり、ストレージメーカ独自 OS だったりします。

SAN ストレージとは

SAN とは『Fibre Channel (ファイバチャネル,略称 FC)』や『FC over Ethernet (読み方:エフシーオーイー, 略称 FCoE)』、『iSCSI (読み方:アイスカジー)』といったプロトコルを使って DAS と同じようにブロックアクセスを行わせる、ストレージ専用ネットワークのことです。

そして 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 ヘッダになります。

ブロックストレージを共有ストレージとして扱う場合の注意点

一般的にブロックレベルのアクセスは、ストレージが全体像を理解していないため、複数のホストが互いに相手領域に侵食する (競合する) ことを防げません

例えば複数仮想ホストから SAS ケーブルで 1 つの DAS に接続したり、iSCSI で複数イニシエータから 1 つのターゲットにログインしたり等で、LUN を複数ホストから共有する場合、何もしないとお互いの領域を破壊し合うシナリオも起こりえます。

ですがサーバ仮想化において、ブロックストレージを共有ストレージとして利用するのはごく一般的であり、ソフトウェアベンダの考慮が行き届いていたりもします。

例えば VMware では VMFS というクラスタファイルシステムを使うため『オンディスクロック』という機能により排他を行い、安全性を確保できます。

KVM では virtlockd による排他処理や、クラスタ LVM による排他処理など、実装がいくつかあるようで、実際にどのようにするか検討・設計する必要があります。

コメント

タイトルとURLをコピーしました