0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】ファイルシステムの基本概念(コンセプト)【5分で読める】

Last updated at Posted at 2025-02-17

ファイルシステムの基本概念(コンセプト)

理解のために小咄形式でまとめました。

登場人物

  • 太郎(後輩):入社1年目の若手エンジニア。
  • 花子(先輩):システムエンジニア歴3年の先輩。

登場人物

  • 花子(先輩):システムエンジニア歴10年の経験豊富な技術者。
  • 太郎(後輩):入社2年目の若手エンジニア。システムパフォーマンスについて学び中。

場面:オフィスの開発ルーム
太郎が ファイルシステムのコンセプト に関する資料を見ながら、花子に質問する。

太郎:「花子先輩、ファイルシステムの基本概念 について学んでるんですが、 レイテンシやキャッシング などの仕組みがいまいち分かりません…。」

花子:「ファイルシステムのパフォーマンスを理解するには、 基本概念 を押さえておくことが重要よ。 ファイルシステムの動作に影響する 7 つの要素 を説明するわね。」


ファイルシステムの基本概念(コンセプト)

花子:「ファイルシステムの 基本概念 には、大きく 7 つのポイントがあるの。」

  1. ファイルシステムレイテンシ
  2. キャッシング
  3. ランダム I/O と シーケンシャル I/O
  4. プリフェッチ
  5. 先読み
  6. ライトバックキャッシング
  7. 同期書き込み

1. ファイルシステムレイテンシ

花子:「ファイルシステムレイテンシ とは、 アプリケーションが I/O をリクエストしてから処理が完了するまでの時間 のことよ。」

  • レイテンシ(遅延)が高いと、アプリケーションのパフォーマンスに直接影響する。
  • OS はレイテンシの影響を抑えるためにキャッシュや非同期 I/O を活用する。
  • レイテンシの原因には ディスク I/O の遅延ファイルメタデータの処理時間 などがある。

「これを 宅配便の配達時間 に例えると、 注文(I/O リクエスト)してから届くまでの時間 みたいなものね。」

太郎:「なるほど! レイテンシを短くする ために キャッシュや高速ストレージを使う ってことですね!」


2. キャッシング

花子:「キャッシング頻繁に使うデータをメモリ上に保存して、高速アクセスを実現する仕組み のことよ。」

  • リードキャッシュ(Read Cache): よくアクセスするデータをキャッシュし、ディスク I/O を減らす。
  • ライトキャッシュ(Write Cache): 書き込みデータをキャッシュし、ディスクへの書き込み頻度を減らす。

「これを 冷蔵庫のドリンク に例えると、 よく飲むジュースを手元に置いておくことで、わざわざスーパーに買いに行く手間を減らせる のと同じね。」

太郎:「確かに! キャッシュをうまく活用 すれば 無駄な I/O を減らせる んですね!」


3. ランダム I/O と シーケンシャル I/O

花子:「ランダム I/Oシーケンシャル I/O では、ディスクアクセスの特性が違うの。」

  • ランダム I/Oデータがディスク上のバラバラの場所にある ため、遅い。
  • シーケンシャル I/Oデータが連続して並んでいる ため、高速。

「例えば、 図書館で本を探す のと 本棚にある本を順番に読む の違いに似てるわ。」

太郎:「つまり、 シーケンシャル I/O の方が効率がいい んですね!」


4. プリフェッチ

花子:「プリフェッチ とは、 今後使われそうなデータをあらかじめ読み込んでおく技術 のことよ。」

  • 予測してデータを先にメモリに読み込むことで、I/O 待ち時間を減らす。
  • 動画ストリーミングの バッファリング も、プリフェッチの一種。

「例えば 電車の時刻表を事前に確認する のと同じで、 次に必要なデータを予測して準備する のがポイントね。」

太郎:「確かに 無駄な待ち時間を減らせる 仕組みですね!」


5. 先読み

花子:「先読み とは、 シーケンシャル I/O の場合に、次のデータを事前に読み込む技術 ね。」

  • HDD では、ディスクの回転に合わせて次のブロックを事前に取得することで、待ち時間を削減できる。
  • SSD でも、リードキャッシュを活用して先読みを最適化することが多い。

「例えば 映画の字幕を事前にダウンロードする のと同じで、 スムーズにデータを取得できる ようになるわ。」


6. ライトバックキャッシング

花子:「ライトバックキャッシング書き込みデータを一時的にキャッシュし、後でまとめて書き込む手法 ね。」

  • 書き込みのたびにディスクにアクセスすると遅くなるため、一時的にキャッシュしてまとめて書き込む。
  • データの一貫性を保つため、 一定の条件でキャッシュをフラッシュ(ディスクに書き出し)する。

「例えば メールの下書きをまとめて送信する のと同じで、 無駄な作業を減らして効率化する のが目的よ。」


7. 同期書き込み

花子:「同期書き込みデータを書き込んだことを OS が確認するまで処理を待つ方式 よ。」

  • データの一貫性を重視する場合に重要(例: データベース)。
  • fsync() を使うと、書き込みがディスクに反映されるまで待つ。

「例えば 銀行の ATM みたいなもので、 処理が完了するまで確実にデータを記録する のと同じね。」

太郎:「ってことは データの整合性を重視する場合同期書き込みを使う のが重要なんですね!」


まとめ

花子:「ファイルシステムの 基本概念 を理解すると、 パフォーマンスの最適化システムのボトルネック解決 に役立つわ。」

太郎:「ありがとうございます! ランダム I/O と シーケンシャル I/O の速度差fio でテストしてみます!」

参考リンク

システムパフォーマンス関連記事の目次

システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?