ファイルシステムのモデル
理解のために小咄形式でまとめました。
システムパフォーマンス関連記事の目次
登場人物
- 太郎(後輩):入社1年目の若手エンジニア。
- 花子(先輩):システムエンジニア歴3年の先輩。
場面:オフィスの会議室
太郎が ファイルシステムの動作モデル
に関する資料を見ながら、花子に質問する。
太郎:「花子先輩、ファイルシステムの動作モデル
について調べているんですが、 具体的にどのような構成になっているのか
がいまいちピンときません。」
花子:「いい質問ね! ファイルシステムのパフォーマンス
を理解するためには、 どうやってデータがやり取りされるのか
という モデル
を押さえておくことが重要よ。 ファイルシステムの基本的な 3 つの要素
を説明するわね。」
ファイルシステムの動作モデル
花子:「ファイルシステムには、 基本的な 3 つのコンポーネント
があるの。」
- ファイルシステムインターフェイス
- ファイルシステムキャッシュ
- 2次キャッシュ
1. ファイルシステムインターフェイス
花子:「ファイルシステムインターフェイス
は、 アプリケーションとファイルシステムの間のやり取りの仕組み
のことよ。」
-
アプリケーション →
ファイルを開く、読む、書く、閉じる
-
カーネル →
要求を処理し、適切なストレージデバイスへ指示
-
ストレージデバイス →
物理ディスクへのアクセス(HDD、SSD など)
「この関係を レストランのオーダーシステム
に例えると、 お客さん(アプリケーション)
が ウェイター(カーネル)
に注文を伝えて、 シェフ(ディスク)
が料理を作るのと同じね。」
太郎:「なるほど、 アプリケーションが直接ディスクにアクセスするわけじゃなくて、間にカーネルが介在してる
んですね!」
2. ファイルシステムキャッシュ
花子:「ファイルシステムキャッシュ
は、 頻繁にアクセスするデータを一時的にメモリに保存
する仕組みよ。」
- リードキャッシュ(Read Cache): よく使うデータをキャッシュし、高速な再利用を可能にする。
- ライトキャッシュ(Write Cache): データを書き込む前に一時的にキャッシュし、後でまとめてディスクに書き込む。
「たとえば、 本棚に並べられた参考書
みたいなもので、 毎回図書館に行かなくても、よく使う本が手元にあると素早く読める
のと同じよ。」
太郎:「ってことは、 キャッシュをうまく活用すると I/O の負荷を減らせる
んですね!」
3. 2次キャッシュ
花子:「2次キャッシュ
は、 OS のキャッシュとは別に、ストレージデバイスや専用ハードウェアで追加されるキャッシュ
のことよ。」
-
HDD のキャッシュ →
ディスク内部のバッファ(数 MB~数 GB)
-
SSD のキャッシュ →
フラッシュメモリ上のキャッシュ
-
RAID コントローラのキャッシュ →
RAID カード上に搭載されたキャッシュメモリ
「これを コンビニの冷蔵庫
に例えると分かりやすいわ。 家の冷蔵庫(OSのキャッシュ)
にない商品でも、 コンビニの冷蔵庫(2次キャッシュ)
にあれば、すぐに取り出せるのと同じよ。」
太郎:「なるほど、 複数のキャッシュのレイヤー
があることで、 ストレージアクセスの高速化
ができるんですね!」
花子:「これらの ファイルシステムの動作モデル
を 会社の文書管理システム
に例えると、こんな感じね。」
-
ファイルシステムインターフェイス →
社員が会社の書類を閲覧・編集するシステム
-
ファイルシステムキャッシュ →
よく使う書類をデスクに置いておく
-
2次キャッシュ →
オフィスの倉庫にある古い書類のストック
太郎:「なるほど! キャッシュを適切に活用すれば、無駄な I/O を減らせる
ってことですね!」
まとめ
花子:「ファイルシステムの 3 つの要素
を理解すると、 なぜ I/O が遅くなるのか
や どこを改善すればよいのか
が見えてくるわ。」
太郎:「ありがとうございます! ファイルシステムキャッシュの効果
を確認するために、 free
コマンドで メモリのキャッシュ状況
を調べてみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。