ディスク 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を使ってパフォーマンスを測定してみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。