Stay Safe!!

果たしてIOPSの値はどの程度あると安心なのか

ストレージ性能を示すIOPS。もちろん高ければ高いほどよいのですが、一般的にPCがストレスなく利用できるIOPSの値はどの程度なのか、また、PCではなく、サーバの場合にはどの程度必要になるのかを調べてみました。

IOPSって?

IOPSは “Input Output Per Second”の略称です。つまり1秒あたりのInput Outputです。Inputは書き込み、Outputは読み込みですので、IOPSはストレージが”1秒あたりにどのくらいの読み込み、書き込みを処理できるか”を示した値となります。IOPSの値が50000なら、1秒間に50000回読み書きができるストレージとなりますし、2なら、1秒間に2回しか読み書きできないストレージとなります。値が大きければ大きいほど、処理回数も多いので、つまりそれは性能が高いストレージ、ということになります。
名高いストレージベンダであるNetApp社の記事(最後にリンクをまとめています)にもある通り、IOPSはその条件(読み込み書き込み、転送するデータ量)によって値が変化するので、どの値にも、「8KBランダムライトIOPS」などといった注釈が付きます。
実はこの注釈が非常に大事です。ここでいう8KBと64KBはブロックサイズと呼ばれるデータの塊を示しますが、8KBと64KBではIOPS値に大きな違いが見られ、値が大きくなればなるほど、IOPS値は低くなります。

HDD、SSDはそれぞれどのくらいのIOPSとなるのか

先の通り条件にもよりますが、結論から申し上げると、HDDはどんなに優れていても単体では210IOPS程度が限界、SSDは50000IOPS以上の値が出るようです。これも先のNetApp社のブログからの情報です。
つまり、ざっくりSSDにするだけで、ディスクの性能は100倍以上になる、というのが結論です。
もちろんビジネス領域ではこれらのディスクをRAIDなどを用いて1まとめにして管理するため、選択するRAID構成によりディスク全体のIOPSは上がります。(並列に書き込んだり読み込んだりができるようになるためです)

つまりどれくらいのIOPSがあれば安心できるのか

さて本題です。まず前提としてPCやServerをどのように使うのか。が大事になってきます。データベースのようなガリガリにStorageHeavyなソフトウェアを動かすのであればHDDでは心もとないですが、ブラウザを使うだけのPCなら問題はありません。
一般的な個人利用のPCなどについて結論を言うと、SSDを買っておけばたいてい問題ありません。つまり50000IOPSあれば起動から終了まで大抵の処理はストレスなく行えるものと思います。(ゴリゴリにディスク性能が必要な方もいると思いますが、そういった方は勝手に自分で調べて自分に適したディスクを構成できるかただsと思うので割愛します)
さてサーバのIOPSです。これも結局は何サーバか、が大事になりますが、OS領域を動かすだけなら、SSD1つで問題なく動作します。仮想化する際の目安は500IOPS程度あれば大丈夫なイメージ。あとは、アプリケーションの特性やアクセス頻度を加味したプラスアルファの設計が必要となりそうです。なお、ブロックサイズが64KBであることに注意を払う必要がありますが、AzureやAWS上で用意されるインスタンスも120IOPSからラインナップがあるようです。

おまけ:ディスクのスループット

スループットは、「IOPS x 1回で読み書きができるデータ量」で計算されます。つまり1秒間にどれだけのデータを扱えるかです。例えばストリーミングのようなデータ配信サービスなどで重要視されます。
4KB単位のブロックをIOPS100のHDDが処理した場合、スループットは400KB/sとなります。

参考文献

*1 ストレージチャンネル Powered by NetApp https://www.storage-channel.jp/blog/iops.html
*2 ネットワールドらぼ https://blogs.networld.co.jp/entry/post-17fa
*3 Azure マネージドディスクの種類 https://learn.microsoft.com/ja-jp/azure/virtual-machines/disks-types
*4 PURESTORAGE イマドキのストレージ設計-容量・性能はどう決める? https://www.networld.co.jp/sp/purestorage_flasharray-x/