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年の先輩。

場面:オフィスの会議室
太郎が ファイルシステムのアーキテクチャ に関する資料を見ながら、花子に質問する。

太郎:「花子先輩、ファイルシステムのアーキテクチャ について調べてるんですが、 どの部分がどんな役割をしているのか が整理しきれません。」

花子:「なるほど。 ファイルシステムのアーキテクチャ は、 I/O スタックキャッシュ などの 複数のレイヤー で構成されているわ。それぞれの役割を 6 つの要素 に分けて説明するわね。」


ファイルシステムのアーキテクチャ

花子:「ファイルシステムのアーキテクチャ は、大きく 6 つのコンポーネント で構成されるの。」

  1. ファイルシステム I/O スタック
  2. VFS(Virtual File System)
  3. ファイルシステムキャッシュ
  4. ファイルシステムのパフォーマンスに関わるその他の機能
  5. ファイルシステムタイプ
  6. ボリュームとプール

1. ファイルシステム I/O スタック

花子:「ファイルシステム I/O スタック とは、 アプリケーションがファイルを操作するときに通る処理の流れ のことよ。」

  • アプリケーションファイルを開いたり、データを読み書きする
  • カーネル(システムコール層)アプリケーションからの I/O リクエストを受け取る
  • VFS(仮想ファイルシステム)どのファイルシステムを使っているかに関わらず、共通の操作を提供
  • ファイルシステムext4, XFS, ZFS などの実際のファイルシステムが処理
  • ブロックデバイスディスクデバイスに I/O を転送し、実際にデータを読み書き

「これは 工場の生産ライン みたいなもので、 注文(I/O リクエスト)原料(データ)完成品(ファイルの読み書き) に変えるまでのプロセスね。」

太郎:「なるほど! `I/O がどのレイヤーで処理されるのかを理解すれば、どこで遅延が発生しているのかが分かりやすくなりますね!」」


2. VFS(Virtual File System)

花子:「VFS(仮想ファイルシステム) は、 異なるファイルシステム間の共通インターフェース を提供するの。」

  • OS にとっての抽象化レイヤー であり、 ext4, XFS, NFS などを統一的に扱える。
  • アプリケーションは VFS を通じて操作し、特定のファイルシステムに依存しない。
  • Linux の VFS は i ノードスーパーブロック などの概念を利用する。

「これは 翻訳機 みたいなもので、 アプリケーションの指示を各ファイルシステムに合わせて変換している のよ。」

太郎:「つまり、 VFS があるおかげで、異なるファイルシステムでも統一的にファイル操作ができる ってことですね!」


3. ファイルシステムキャッシュ

花子:「ファイルシステムキャッシュ は、 I/O のパフォーマンス向上 に欠かせない仕組みよ。」

  • ページキャッシュよく使うデータをメモリに保持し、ディスクアクセスを減らす。
  • ディレクトリキャッシュディレクトリ情報をキャッシュし、ファイル検索を高速化。
  • バッファキャッシュ書き込みデータを一時的に保持し、後でまとめてディスクに書き込む。

「たとえば ノートの付箋 みたいなもので、 頻繁に使う情報をメモに残しておけば、いちいち本を開かなくても済む のと同じね。」

太郎:「確かに! キャッシュを有効活用すれば、ディスクへのアクセスを減らして I/O を高速化できる んですね!」


4. ファイルシステムのパフォーマンスに関わるその他の機能

花子:「ファイルシステムのパフォーマンス には、 さまざまな機能 が影響を与えるわ。」

  • ジャーナリング障害時のデータ保護(ext4, XFS)
  • スナップショット過去の状態を保存(ZFS, Btrfs)
  • データ圧縮ディスク使用量の削減(ZFS, Btrfs)
  • データ重複排除同じデータを一度だけ保存(ZFS, Btrfs)

「これは データ管理の工夫 みたいなもので、 バックアップやデータ整理を自動でやってくれる機能 よ。」


5. ファイルシステムタイプ

花子:「ファイルシステムには、さまざまな種類 があるわ。」

  • ext4Linux で一般的に使われる標準的なファイルシステム。
  • XFS大規模なファイルに強い。高スループット。
  • ZFSデータ整合性、スナップショット、圧縮などの高度な機能を持つ。
  • BtrfsZFS に似た機能を持つが、Linux カーネルに統合されている。
  • FAT32互換性が高く、Windows・macOS・Linux で利用可能。4GB以上のファイルを扱えない。
  • exFATFAT32 の制限を克服したファイルシステム。4GB以上のファイルに対応し、Windows・macOS・Linux で使える。
  • NTFSWindows の標準ファイルシステム。大容量ファイルやアクセス制御をサポートし、ジャーナリング機能も備える。
  • APFSmacOS・iOS向けの最新ファイルシステム。高速でスナップショットや暗号化をサポート。

「これは 収納ボックスの種類 みたいなもので、 用途に応じて適したものを選ぶ必要がある のよ。」


6. ボリュームとプール

花子:「ボリュームとプール は、 ファイルシステムを格納するストレージの管理単位 ね。」

  • ボリュームストレージの一部を切り出した単位(パーティション、LVM など)
  • プール複数のストレージをまとめた管理単位(ZFS, Btrfs)

「これは 貯水タンク みたいなもので、 一つの大きなタンクから水(データ)を取り出せる のよ。」


まとめ

花子:「ファイルシステムの アーキテクチャ を理解すると、 どの層で問題が発生しているのか を分析しやすくなるわ。」

太郎:「ありがとうございます! `VFS の影響を調べるために、strace コマンドでシステムコールの流れを見てみます!」

参考リンク

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

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

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?