今回はストレージについてのまとめを書きます。
これを読むと、NASやSAN、NFSやiSCSI、FCの違いが分かるようになります。
それだけではなく、NVMeとは何かや、NVMe-oF (NVMe over Fabrics)の違いとは何かを説明していきます。
まずはファイルストレージが何か、ブロックストレージが何かの概要を書きます。
ストレージの概要
ファイルストレージとブロックストレージの違いを簡単に書きます。
ファイルストレージはその名の通りファイル単位で読み書きができます。
一方でブロックストレージのブロックというのは、ファイルよりもっと狭いブロック単位で読み書きします。
例えば、『abc.txt』というテキストファイルがあったとします。
ファイルストレージは『abc.txt』を認識して読み書きしますが、ブロックストレージはそもそも『abc.txt』は認識していません(厳密に言うと認識しているかもしれませんが)。
ブロックストレージは、例えばUSBや外付けHDDを差した際に見える容量の丸ごとを指しており、その中からボリューム(記憶領域)を切り分けます。
マトリョーシカの様に、そのボリュームを細かく分割したのがブロックです。
もっと簡単に書くと、ファイルストレージは上記の『abc.txt』ファイルを認識して読み書きしています。
ブロックストレージは『abc.txt』ファイル自体を認識するのではなく、『abc.txt』の中身を分解し一つ一つのブロックとして扱っているのです。
そのためデータを変更する際は、ブロックストレージの方が該当するブロックだけ変更するのみなので、ファイルストレージよりも処理が早くなります。
私も完ぺきに理解してはいませんが、おおよそ上記の説明の認識で問題ありません。
気が向いたらまた記事にするかもしれません笑
NAS(Network Attached Storage)
NAS(Network Attached Storage)とは、『LANケーブルを使用し、ネットワークを介してファイルを共有しているファイルストレージ』です。
共有ネットワークをしているため、後述するSANとは違ってデータの読み書きが劣る代わりに安価ということが挙げられます。
ただデータの読み書き速度はネットワークの帯域によって変わります。
またSANと違ってNASは共有ネットワークを使用してサーバとストレージを繋ぐので、サーバとストレージを繋ぐ専用のスイッチが必要ないのも特徴です。
NASのプロトコルは主に下記2つがあります。
・SMB(CIFS)
→こちらは主にWindowsで使用されます。
・NFS
→こちらは主にUnixやLinuxで使用されます。
SAN
SAN(Storage Area Network)とは、『LANケーブル又は光ファイバーを使用し、ストレージ専用ネットワークを介してブロックを表示させるブロックストレージ』です。
共有ネットワークを使用しているNASとは違い、SANはストレージ専用ネットワークを使用しているため、誰でもSANを見えるわけではありません。
極論言い変えるならNASは同じネットワークに属している相手なら見ることが出来ますが、SANは外付けHDDを使用しているようなものなので、外付けHDDを差している対象のPCしか見ることが出来ません。
SANには下記2種類の構成があります。
・IP-SAN
→IP-SANはストレージ専用ネットワークをIPで構築したものです。使用するケーブルは主に光ファイバーケーブルやメタルケーブルとなります。
主なプロトコルはiSCSIです。その他にはFCIPやiFCPもあります。いずれもIETFで標準化されているものです。
サーバとストレージを繋ぐスイッチは一般的なもので問題なく、FC-SANのようにFCスイッチは必要ありません。
NICに関しても特別なアダプタは必要ありません。
SANの中で一番コストを抑えることが可能の代わりに、速度はFC-SANに劣ります。
・FC-SAN
→FC-SANはストレージ専用ネットワークをFiber Channel(FC)で構築したものです。
Fiber Channel(FC)とは、光ファイバーケーブルや同軸ケーブルの中のデータ転送方式(接続規格)のことで、最大転送速度32Gbit/s、最大伝送距離 10kmを誇ります。
プロトコルはFCP(Fibre Channel Protocol)です。
FC-SANの場合、サーバとストレージを繋ぐFCスイッチが必要になります。
他にも、サーバ側にHBAを用意しないといけない場合があります。HBAというのは、簡単に書くと変換アダプタみたいなものです。
基本的にサーバはLANケーブルを挿すので、光ケーブルを挿す用には作られていません。
HBAを使用することにより、光ケーブルを挿すことが出来るのです。
・FCoE
FCoE(Fibre Channel over Ethernet)は、ストレージ専用ネットワークをFiber Channel(FC)とIPで構築することが出来るプロトコルです。
一般的にFCを使用するなら、FC-SANで構築しなければなりません。
しかしFCoEを使用すると、IP-SANのようにIPでストレージ専用ネットワークを構築し、尚且つFC-SANのようにFCを使用することが出来るのです。
IP-SANとFC-SANのいいところを組み合わせたという感じです。
メリットとしてはFC-SANのようにFC専用のFCスイッチが必要ないことです。
FCスイッチが必要ないので、ネットワークをシンプルにすることが出来ます。
ただしFCoE対応のスイッチは必要なので、その点は注意してください。
ちなみにFCoEのEはEthernetの略なのですが、Ethernetとは有線ネットワークの規格の一種です。
種別としては下記が存在あします。
・ツイステッドペアケーブル(LANケーブル)
・光ファイバーケーブル
・同軸ケーブル。
FC-SANのようにHBAは必要ありませんが、FCoEではFCoE対応のCAN(Converged Network Adapter)が必要です。
CNAはNIC(ネットワークアダプタ)に使用します。変換アダプタと考えてください。
NVMe
※ここではNVMeの説明をするつもりでしたが、色々書いていたら『SSD』や『HDD』についても書いてしまいました。ご了承ください。
NVMe(Non-Volatile Memory Express)とは、『SSDなどのフラッシュストレージに最適化された通信プロトコル』です。
SSDは別名で不揮発性メモリと呼ばれており、フラッシュメモリと呼ばれる技術を使用しています。
SSDと同じレイヤにあるのはHDDです。
よくHDDやSSDという言葉を目にしたことはないでしょうか。
例を挙げると、最近のノートPCのストレージはSSDです。よく皆さんが使われるであろうUSBもSSDです。
HDDは外付けHDDなどで使用されます。
用途の違いを簡潔に書くと、SSDはHDDよりもデータの読み書きが高速の代わりに、高価で保存できる容量も少ないです(今では1TB以上のSSDもありますが、同じ1TBだとHDDの方が格段に安いです)。
HDDはSSDよりもデータの読み込みが遅い代わりに、安価で大容量のデータを保存することが出来ます。
SSDの通信プロトコルはNVMeですが、HDDの通信プロトコルはAHCI(Advanced Host Controller Interface)です。
SSDはPCIe (Peripheral Component Interconnect-Express)や下記に記載するSATAを通して、フラッシュストレージ/不揮発性メモリと接続しています。
PCIeはPCI-eやPCI Expressなどと呼ぶこともあり、インターフェイスの拡張スロットや接続規格と考えて頂いて問題ありません。
つまり、SSD(製品本体)→PCIe(の出入り口)→NVMe(データ自体の中身)という感じです。間違っていたらごめんなさい。
SATA(シリアルATA)もよく耳にするかもしれませんが、SATAと同じレイヤにあるのはPCIeです。
こちらもPCIeと同様に、SSDやHDDなどに接続するための規格となります。
基本的にSSDはPCIeを使用することが多いです。理由としては、SATAはPCIeが主流になる前の規格であり、PCIeよりデータの送受信の速度が遅いからです。
NVMe/FC
NVMe/FC(Non-Volatile Memory Express over Fibre Channel)とは、『NVMeをFiber Channel(FC)で繋げたもの』となります。
IP-SANやFC-SANは基本的にHDDでしたが、このNVMe/FC(別名、「NVMe over FC」、「FC-NVMe」)はSSDをFiber Channel(FC)で繋ぐものと考えたら分かりやすいと思います。
その他はFC-SANと変わりありません。光ファイバーケーブルで繋ぎ、FCスイッチが必要となります。
プロトコルはNVMe over Fabric(NVMe-oF)となります。