ファイルシステムとは
本記事の対象者
LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。
今回の内容
今回は、ファイルシステムについて解説します。
ハードディスクを使用するための過程(再掲)
「パーティションについて」で説明した通り、Linuxでハードディスクを使用するには以下の過程が必要です。
①デバイスファイルを作成する。(基本的には自動で作成される。)
②ディスク内にパーティションを作成する。
③パーティション内にファイルシステムを構築する。
④ファイルシステムをマウントする。
今回の記事では、③で登場する、「ファイルシステム」とは何かについて解説します。
なお、ファイルシステムの実際の作成方法等は別記事で解説します。
ファイルシステムとは
皆さんはデータがハードディスクに物理的にどのように格納されているか意識したことはありますか。
操作したいデータがハードディスクのどの区画からどの区画に格納されているか把握し、その区画を「●●セクタから●●セクタ」と指定し、そのうえでその区画からとってきたデータをメモリ上に読み込んで使用していますか。
恐らくそのようなデータ操作は行っていないでしょう。
皆さんにとって、「データを操作する」とは「ファイルを操作する」のと同義ではないでしょうか。
そう思うのは「ファイルシステム」が存在しているからです。
「ファイルシステム」とは、データという人間には物理的に認識しづらく扱いづらいものを、抽象化し、可視化し、保持し、扱いやすくするためのシステムのことです。
これがあることによって、皆さんは「HDD上の●●セクタから●●セクタのデータを取り出す」という指示ではなく、「/etc/sample.txtを開く」という指示でそのデータを扱えるようになっているのです。
「セクタ」はディスク上の区画を表します。ファイルシステムでは「ブロック」という単位でデータを保存し管理しています。
Linuxではすべてのデータやプログラムをファイルとして階層構造で扱い、その階層構造の頂点にルートディレクトリが存在しています。
inode
Linuxのファイルシステムでは、「ファイルの実際の中身」と「ファイルの属性や管理情報」は別々で保持されています。
そのうち後者の「ファイルの属性や管理情報」を保存しているのが「inode」と呼ばれる領域です。(inodeは「index node」の略)
具体的には以下のような情報を保持しています。
- inode番号
- ファイルサイズ
- ファイル所有者のユーザーID
- ファイルのグループID
- ファイルモード(ファイルパーミッション)
- 最終inode更新時(ctime)、最終ファイル更新時(mtime)、最終参照時(atime) を示すタイムスタンプ群
- そのinodeを指すハードリンクがいくつあるかを示す参照カウント
- 実際のデータの位置(ディスク上の物理的な場所)
inode番号は、すべてのファイルやディレクトリに割り振られる、重複しない番号です。
そのinode番号に対応するinodeがひとつだけ存在します。
※inodeは、ファイル名は管理していません。ディレクトリがinode番号を用いて管理しています。
ファイルシステムの種類
ファイルシステムには種類があります。
主に以下の点において違いがあります。
- ジャーナリング機能の有無
- アクセス速度
- ディスク使用効率
- 作成可能なinode数
主なファイルシステムの種類一覧
名称 | 特徴 | ジャーナリング機能の有無 |
---|---|---|
ext2 | 以前のLinuxの標準ファイルシステム。 | 無 |
ext3 | ext2にジャーナリング機能を加えたもの。ext2との高い互換性があり、ext2をext3に変換することも可能。 | 有 |
ext4 | 現在のLinuxの標準ファイルシステム。最大ファイルサイズは16TiBと拡張され、ext3としてマウントすることも可能。 | 有 |
XFS | SGI社が開発したファイルシステム。大規模ファイルシステムを効率的に扱うことが可能。 | 有 |
JFS | IBM社が開発したファイルシステム。 | 有 |
Btrfs | 高度な機能を備えた、Linux用の新しいファイルシステム。 | 有 |
iso9660 | CD-ROMのファイルシステム。 | 無 |
まとめ
今回は、ファイルシステムについて解説しました。ファイルシステムのおかげで、私たちはデータという認識しにくい存在をファイルという実体として扱えています。
ファイルシステムの実際の作成方法については、別記事で解説します。
最後に確認問題で今回学習した内容を確かめてください。
確認問題
ext4ファイルシステムでのrootユーザの予約スペースのデフォルトの割合はどれか。
A) 3%
B) 8%
C) 10%
D) 5%
次のLinuxファイルシステムのうち、新しいファイルシステムを作成する際、固定数のinodeを事前に割り当てるものはどれか。(2つ選択)
A) JFS
B) ext3
C) XFS
D) ext2