ストレージサブシステムのサイジング

 

サイジングでよく出てくる言葉
iops 「input output per second」

ディスクが1秒間に処理できるI/O要求数。(プラッターをシークし移動する平均時間+ディスクを書き込み位置へ回転させるための平均時間+ディスクに書き込む時間)

ここでミソとなるのがプラッターなどの移動時間がすべての処理で含まれているということ。

180iopsならその180すべての処理にプラッターの移動時間が含まれている。

ということはシーケンシャル、ランダム、read、writeやキャッシュのことを考慮しなくとも、
単純に最低でもこのくらいの処理はできるという数字と見て取れる。

この数字さえわかればサイジングは簡単

DBなら秒間どのくらいのトランザクションを処理したいのかを確認する。

500トランザクション/秒がほしいと回答がくれば、

HDDのiopsは180前後と言われているので、HDDを4玉使ったraid5を構築すれば仕様は満たされる。

そして、この例だと180*3で540iopsが期待でき500のトランザクションが同時に実行されても最大で1秒以内の応答時間で完結する。ほんとに同時実行なら最大で1秒待たされるトランザクションがいるはず。

ここで新しく応答時間という言葉が出てきました。

応答時間1秒以内というのが、これまたポイントになります。

iopsだけの設計だと確かに仕様は満たします。

だけど、

当然、応答時間が考慮されていないので開発者側としては、「いやいや1秒もかかってるんだけどディスクが遅いんじゃないの?」という話になる。しかも早いもの遅いものが混在して一定の速度がでない状況。

そこで応答時間を使ったサイジングの登場ということになります。

こちらもどのくらいの時間を想定しているのか確認する必要があります。

もし、応答時間が0.1秒以内でということなら

iopsが500で0.1秒以内の応答時間という要件に対してiopsを設計するという形になります。

となると、iops5000をクリアできる設計とすれば余裕を持ったサイジングになると思います
※ライトやリードキャッシュなどを使うことになるので余裕があると考えられそうです。

なので、このケースではssdを利用することになるのかなと。

とりあえず、これだけ押さえておけば大丈夫なんじゃないかと思いますが、
みなさんいかがでしょうかね?ご意見お願いします。

今後は各社のクラウド環境やローカルディスク、シェアードディスク、infiniband、ethernet、fc、iscsi、hdd、ssd、iodriveなどいろんな環境が出てきます。そのどの環境においても適切なサイジングでプロビジョニングしていく必要があるかと思います。

そうであっても、上記の二つを考慮してベンチマークを取ることである程度の対応は可能と考えます

そもそもディスク周りを考慮するのはDBかファイルサーバ系だけで、その他は何も考えずに投入できると思っています。

そういえば、

ssdやiodriveはiops数千~数百万ですが、

これらNANDフラッシュと呼ばれる機器はなぜiopsがずば抜けているのか。

プラッターが移動する時間がないからです。
HDDのiopsの1秒間、プラッターが移動で使っている時間は0.8秒と思えばわかりやすいかも。

それがほとんどないわけですから早い

ただ、HDDもシーケンシャルリードやらリードライトキャッシュやらで速度改善は行われています。

 

最後に超解釈というカテゴリを作りました。

自分がいろん文献を読み漁り、いままでの経験から、
ここだけは押さえときましょうという部分を超簡単に解釈してみるカテゴリです。

「これは抑えとかなだめだろ?」というものや、
間違ってるものがあれば指摘いただけると助かります。

みなさんの解釈を掛け合わせてコネコネして、もっと面白い情報にしたいと思います。

まだまだもっと知りたいスーパーインフラエンジニアを目指す方は
ここを入口にもっと奥まで入り込んで、いろんな発見してみてください。そして教えてくださいね。

超解釈

Posted by Akira


PAGE TOP