サルでもわかる、ストレージ周りの用語整理整頓(HDDとSSD、IOPSとスループット、SATAとPCIe、AHCIとNVMe、他)
ストレージ周りの用語を調べると、どのページも難しく書かれているので、
ざっくり理解できるレベルで、ストレージ周りの用語を整理した
(自分も調べながらなので、間違っていたらごめんなさい)
HDDとSSD(ドライブの種類)
HDDは「Hard Disk Drive」の略
文字通り、ディスクがガタガタ回転して、針がデータを書き込んでいく
ガタガタ回転するので、音がする(なので物理的に壊れやすい)
HDDはディスクが回転すればするほど性能が良いと言えるので、HDDのスペックは回転数(krpm)で表される
SSDは「Solid State Drive」の略(Solid State Diskじゃないよ)
SSDはHDDより新しく、一般的に性能が良い
SSDはディスクではなく、「セル」と呼ばれる領域に電子的にデータを書き込む
SSDのスペックは、セルにどれだけ書き込めるか(SLC, MLC, TLC)で表す
ただしSSDは、HDDと違って書き込み上限あるので、長く使いたいなら1つのセルに1bitしか書き込めないSLCが向いていたり、単純に判断はできない
参考:SSDの選び方:SLC、MLC、TLC、QLC、PLCの違いを解説
IOPSとスループット(ストレージ性能)
上で言及したHDDやSSD特有のスペックとは別に、
HDDかSSDかを気にせず、ストレージ自体の性能を判断するために、「IOPS」とか「スループット」がある
IOPSは「Input Output Per Second」の略で、データの塊(ブロック)を1秒間にどれだけストレージに出し入れできるか
IOPSは、高ければ高いほど良いが、数値はブロックサイズ(だいたい、4KBとか32KBとか数KB単位)に左右される
ブロックサイズは、ストレージやアプリケーションの状況によって変わってくる
大きいブロックであればIOPSが低くても多くの情報を運べるが、1ブロックが重たいのでIOPSが伸びなかったりする
ブロックサイズも考慮して判断できるのが「スループット」で、1秒間でどれだけの量のデータを運べるかの指標
以下の式で表される(IOPSの値が大きければMBなどで表してもOK)
スループット(KB/s) = ブロックサイズ(KB) * IOPS
一般的にHDDよりSSDの方が性能が良いが、まだHDDの方が安価なのでHDDも人気がある
(もっと安い「テープ」も、同じ理由で、現役で使っているシステムもあるはず)
SSDをより効率的に使うための技術たち(SATAとPCIe、AHCIとNVMe)
HDDやSSDの接続規格としては、HDD用には「SATA」や「SAS」、SSD用には「PCIe」と呼ばれる規格がある
(SSDをSATAやSASで繋ぐことも可能ではあるが、SATAやSASはあくまでHDD用)
コントローラのプロトコルとしては、元々AHCIが主流だったが、PCIe-SSDのスペックを十分発揮できない問題があり、そこで「NVMe」というプロトコルが登場した
なので「NVMeと言えばSSD」と覚えておけば良い
NVMeは、元々ストレージの中(或いはDAS)の話だったのが、
NVMe over Fabric(NVMe over FC/NVMe over Ethernet)と言って、コントローラのプロトコルだけでなく、サーバストレージ間の通信にもNVMeが使われるようになった
さらにNVMe over Fabricをより速く使うために、「RDMA(Remote Direct Memory Access)」という技術と合わせて使うようにもなってきている
(RDMA自体は前からある技術でInfinibandという通信プロトコルで使われていたが、これを新しくEthernetやFCで使えるようにした = RoCEなど)
NVMeの仕組みについては著者も勉強中なのでググってください、、
参考
最初に学ぶ人が見るサイト
以上、ここまで。