物理ストレージディスクへの接続プロトコルについて関心を持ってしまった

サーバやストレージ機器にて用いられるプロトコルについて考えてみたい。

これらにおけるプロトコルでまず最初に話に上がっていくのはフロントエンドのネットワークポートを使ったプロトコルだ。

専用ストレージ複数台と規模の大きな環境下での接続を考えるならばFC(Fibre Channel)、小規模環境でサーバと専用ストレージを直接的にDAS接続したいならばiSCSI、SASなどが候補に上がるだろう。

ただプロトコルはそういった機器同士の接続の時だけで使用されるものではない(当たり前だが)。サーバやストレージなど機器単体の内部でも使用されるプロトコルはある。

今回のお話は、機器内のCPUから内蔵物理ディスクへの接続で使われるプロトコルについてだ。よくDellのPowerEdgeの構成を組んだりしていると、ハードドライブの選択においてプロトコルの選定次第で容量・性能・価格に大きく影響することがある。

利用用途によっては性能は出せなくていいから価格を安く抑えるような構成を求められたり、大容量でなおかつそれなりの性能を担保できる構成を求められたり、と。それが面白くて今回のテーマの着想に至った。


## 目次
- パラレルデータ転送とシリアルデータ転送
- 各機器における求められる物理ドライブ接続の性能
- 今後のプロトコルの主流は何になるか
- M.2スロットから見るSSDのSASとSATAの違い


## パラレルデータ転送とシリアルデータ転送

まず最初はコンピュータ機器において、CPUから内蔵ディスクへのデータ転送方法の歴史について見ていく。

かつてディスクへの接続にはパラレルなデータ転送を行なうプロトコルが使われていた。よく用いられていたプロトコルはSCSI。歴史的に見ていくなら古くから使われていたのはIDEと言われている。

パラレルと言えば並列の意。1回の接続で並列の処理ができるのだから、文字だけ読んだら最も性能が出せそうな手法に思える。
それなのに物理ディスクへの接続プロトコルはこのパラレルからシリアル(一列)なデータ転送プロトコルの利用が主流になった。このあたりの経緯にも触れていきたい。

パラレルな形でのデータ転送では、複数のデータラインからビットが同時に送信される。この同時に放たれたビットが全て同じタイミングで届いて受信できるのであれば、パラレルデータ転送方式が最も優れているのだが、そう簡単ではない。
クロック周波数を高くして、より高速化を進めていけばいくほど信号のタイミングのズレなどで同時送信されたはずのビットがデータラインごとで遅延が発生するようになる。こうなるとデータ整合性についても影響が出て思うようなデータ転送が実現されなくなる。

そうなるとたった一線のデータラインで、送信されたビットの受信のズレなどを一切気にしなくてよいシリアルデータ転送方式を採用して、クロック周波数を高めて、一度に転送できるビットを増やしていった方がパラレル方式よりも性能を出せることがわかったのである。


## 各機器における求められる物理ドライブ接続の性能

コンピュータ機器には基本的にCPU、メモリ、物理ディスク(ストレージドライブ)が搭載されている。その中でも物理ディスクに関しては、その機器の利用用途によってどんなタイプのものを搭載する決めていく。

では各機器で、物理ディスクにどのようなものが採用されやすいかを見ていきたい。

**サーバ**：HDD、SSD
ネットワーク内の接続で速度や性能を求められることが多く、専用ストレージを置かない利用用途では内蔵の物理ディスクに容量と性能を求められるケースもある。そのため、HDDやSSDなどがしばしば使用される。

**ネットワークスイッチ**：フラッシュメモリ
ネットワーク内の接続で速度や性能を求められることが多いが、スイッチ機器内での接続性能についてはそこまで多くを求められない。
L2スイッチで例えるならば、スイッチ内蔵の保存対象となるデータはMACアドレステーブルやOSの設定情報くらいで、容量が少なく、書き込み更新が多いタイプのデータでもないため、コスト効率の高いフラッシュメモリを採用されるケースが多い。

**ストレージ**：HDD、SSD
ネットワーク内の接続で速度や性能を求められることが多く、サーバからのアクセスでも速度や性能を求められることが多い。サーバ内蔵の物理ディスクとの比較においては、サーバ内のCPUからの距離がサーバ内蔵ディスクよりも遥かに遠い位置にあるため、利用用途によってはそこを埋め合わせるような性能を求められることがある。
サーバと同様にHDDやSSDが使われ、サーバよりもSSDを使うケースが多いかな、という印象を持っている。

今後、スイッチ内部でも物理ディスクへの接続に速度を求められるような未来の到来があるのかは考えづらいが、サーバやストレージに関しては現代よりももっと性能アップが期待されている。


## 今後のプロトコルの主流は何になるか

ではCPUから物理ディスクとなるHDDやSSDへの接続プロトコルにはどういったものがあるのか、を見ていきたい。

- **SATA(Serial ATA)**：HDDとSSD両方で使えるプロトコル。文字通り、シリアルなインターフェースであるため、信号の干渉が少ない中で処理ができる。
- **SAS(Serial Attached SCSI)**：SATAよりも高い速度が提供されるプロトコル。HDDとSSDの両方で使える。
- **NL-SAS(NearLine SAS)**：HDDとSSD両方で使えるプロトコル(SSDでは見たことないけど、、、)。SASプロトコルが搭載されて、3.5インチ規格を持つ。
- **NVMe(Non-Volatile Memory Express)**：SSD専用のプロトコル。PCIeバスが利用されており、非常に高速なデータ転送が可能となっている。パラレルな処理で行なうプロトコルでもある。

上記4つのプロトコルが主に使われている。
サイズに関してはHDDがSASは2.5インチで、SATAとNL-SASは3.5インチとなっており、SSDはSASとSATAともに2.5インチで提供される(SATAの場合はベイ装着で3.5インチの利用を想定)。

性能や容量を考慮する(価格はいったん棚に上げておいて)と、今後はNVMeプロトコルのSSDが特に専用ストレージ機器では利用されていくケースが増えるだろう。

NVMeプロトコルのSSDはU.2規格であれば2.5インチのサイズになるが、通常のSSDよりも厚みが大きなサイズ感となっている。
そのため、このNVMeプロトコルのSSDはSAS、SATAでのSSDとは異なるサイズで通常使用される、という認識で間違いないはず。ただ、サイズは違えども同じスロットで搭載できるような規格も用意はしてある。


## M.2スロットから見るSSDのSASとSATAの違い

Dell製のサーバである、PowerEdgeシリーズではOSの保存領域の選択肢として、内蔵のストレージ領域だけでなく、BOSS(Dell Boot Optimized Storage Solution)と呼ばれる領域も提供している。

このBOSSではM.2スロットの規格となっており、SATAとPCIeに対応している。そのためこのBOSSではNVMeプロトコルのSSDとSATA SSDのどちらかが搭載でき、ユーザは(製品にもよるが)NVMeかSATAか、どちらかを使用できる。
最新モデル(BOSS-N1)ではNVMeの一択になっているようだ。NVMeとSATAではサイズも多少異なるが、同じM.2スロットで両者は稼働できる仕様にはなっている。

ちなみにSASのSSDはM.2スロットでは不適用の規格となっている。SASプロトコルとは電気的な互換性がない、というのが理由の一つである。

こういった要素からSASとSATAの違いが明確にわかる部分だ。


## ひとりごと

先ほど終わったアカデミー賞授賞式は「Anora(アノーラ)」の大勝。授賞式前に鑑賞できて良かった。めちゃくちゃ素晴らしかったから。

監督賞を獲得したショーン・ベイカー監督のようにたった1つのテーマでいくつもの傑作を生みだせる奇才がいて、主演女優賞を獲得したマイキー・マディソンのように強固な覚悟をここぞのタイミングで発揮して一気にトップまで登り詰めた若者もいる。

野心溢れるギラギラ感をたぎらせた人たちを見るのは気持ちいい。