ディスク I/O のアーキテクチャ
理解のために小咄形式でまとめました。
システムパフォーマンス関連記事の目次
登場人物
- 太郎(後輩):入社1年目の若手エンジニア。
- 花子(先輩):システムエンジニア歴3年の先輩。
場面:オフィスの昼休み
太郎が花子とランチを食べながら質問する
太郎:「花子先輩、ディスク I/O のアーキテクチャ についての資料を読んだのですが、まだイメージがつかめなくて…。」
花子:「なるほど、じゃあ今回は ディスク I/O のアーキテクチャ を整理してみようか。大きく分けると、以下の4つのポイントがあるわね。」
- ディスクのタイプ
- インターフェイス
- ストレージの種類
- OS のディスク I/O スタック
1. ディスクのタイプ
花子:「まず ディスクのタイプ について説明するわね。現在、よく使われているディスクには大きく2種類あるの。」
-
回転磁気ディスク(HDD)
- プラッター(円盤)が回転し、磁気ヘッドがデータを読み書きする。
- ランダムアクセスは遅いが、大容量で安価。
- 主に
バックアップやコールドストレージに適している。
-
フラッシュメモリ(SSD)
- 機械的な可動部分がなく、電子的にデータを保存する。
- 高速なランダムアクセスが可能で、
OSやデータベースに適している。 - ただし、書き込み回数に制限がある(寿命問題)。
太郎:「SSD は速いけど、コストと寿命を考えると、HDD もまだまだ使いどころがあるんですね。」
2. インターフェイス
花子:「次に インターフェイス の話ね。ディスクとコンピュータの接続にはいろんな規格があるの。」
-
SATA(シリアル ATA)
- 主に HDD や安価な SSD に使われる。
- 転送速度は
6Gbpsくらいで、接続は簡単。
-
SAS(シリアルアタッチド SCSI)
- エンタープライズ向けの HDD や SSD に使われる。
-
SATA より信頼性が高く、高速。
-
NVMe(Non-Volatile Memory Express)
- フラッシュメモリ用に最適化された
PCIe ベースのインターフェイス。 -
超高速で低遅延。 - 例:最新のゲーミングPC や 高速データ処理システム。
- フラッシュメモリ用に最適化された
太郎:「じゃあ、普段の業務でデータベースのパフォーマンスを改善したいなら、 NVMe の SSD を選ぶのが良さそうですね!」
3. ストレージの種類
花子:「ディスクの 物理的な種類 だけじゃなく、 ストレージの運用方法 も重要よ。」
-
ローカルストレージ
- PC やサーバーに
直接取り付けられたディスク。 - 高速だが、
スケールしにくい。
- PC やサーバーに
-
SAN(Storage Area Network)
-
ネットワークを介して接続されたストレージ。 -
大規模システム向け(データセンターなど)。 -
Fibre ChannelやiSCSIが使われる。
-
-
NAS(Network Attached Storage)
-
ファイルベースのストレージを提供するデバイス。 -
小規模なオフィスや家庭用によく使われる。
-
太郎:「なるほど、 SAN は 大規模なサーバー環境 で、 NAS は 小規模な共有ストレージ って感じですね。」
4. OS のディスク I/O スタック
花子:「最後に OS のディスク I/O スタック について説明するわね。これを理解すると、 どこでボトルネックが発生しているのか を特定しやすくなるわ。」
-
アプリケーション層
-
データベースやファイルシステムなどが I/O を要求。
-
-
ファイルシステム層
-
ext4, XFS, ZFSなどのファイルシステムがデータを管理。
-
-
ブロックデバイス層
-
RAID コントローラやバッファキャッシュでパフォーマンスを最適化。
-
-
デバイスドライバ層
-
HDD や SSDへ実際にデータを転送。
-
太郎:「ファイルシステムの最適化や RAID の設定も、ディスク I/O のパフォーマンスに影響するんですね!」
花子:「ここまでの話を現実の 物流システム に例えてみると、こんな感じよ。」
-
ディスクのタイプ → 倉庫の種類
-
HDD は
巨大な倉庫(広いが、物を探すのに時間がかかる)。 -
SSD は
コンビニの在庫棚(小さいが、すぐ取り出せる)。
-
HDD は
-
インターフェイス → 輸送手段
-
SATA は
普通のトラック輸送(遅いが、安定)。 -
SAS は
高速バス輸送(エンタープライズ向け)。 -
NVMe は
新幹線輸送(超高速 & 低遅延)。
-
SATA は
-
ストレージの種類 → 物流の仕組み
-
ローカルストレージ は
社内倉庫(高速だけど、拡張性がない)。 -
SAN は
大規模物流センター(複数拠点で利用)。 -
NAS は
町の宅配ボックス(手軽に共有)。
-
ローカルストレージ は
-
OS のディスク I/O スタック → 物流プロセス
- アプリケーション層:お客様が商品を注文。
- ファイルシステム層:在庫管理システムがデータを整理。
- ブロックデバイス層:トラックが倉庫から商品を運ぶ。
- デバイスドライバ層:倉庫の作業員が商品をピックアップ。
太郎:「なるほど!ディスク I/O の構造が、 物流の流れ に例えられるとわかりやすいですね!」
まとめ
花子:「ディスク I/O のアーキテクチャは、 どの部分がボトルネックになっているか を見極めるのに役立つわよ。」
太郎:「ありがとうございます!今度、 つーrを使ってパフォーマンスを測定してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。