Linuxのファイルシステムとは?データ管理構造と仕組みを初心者向けに解説
生徒
「Linuxのファイルシステムって、ファイルを保存する場所のことですか?」
先生
「保存場所そのものではなく、HDDやSSDにあるデータをファイルやディレクトリとして整理し、名前や場所、容量などを管理するための仕組みです。」
生徒
「Windowsのフォルダのような仕組みと関係がありますか?」
先生
「関係があります。Linuxではルートディレクトリを頂点にした階層構造を使い、パーティションやストレージをマウントして一つの大きなファイル構造として利用します。基本から順番に見ていきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. Linuxのファイルシステムとは?
Linuxの読み方はLinux(リナックス)です。ファイルシステムの読み方はfile system(ファイルシステム)です。ファイルシステムとは、HDDやSSDなどのストレージに保存されたデータを、ファイルやディレクトリとして整理して管理するための仕組みです。
パソコンの中には、文書、画像、動画、プログラム、設定ファイル、ログなど多くのデータがあります。もしデータを保存する場所だけがあり、どこに何が入っているのかを管理するルールがなければ、目的のファイルを探すことが難しくなります。そこで、ファイル名、保存場所、容量、所有者、アクセス権限、更新日時などを管理する仕組みとしてファイルシステムが使われます。
初心者の方は、大きな図書館をイメージするとわかりやすいでしょう。ストレージが建物だとすると、ファイルシステムは本を分類し、棚へ並べ、どこに何があるのかを管理するルールです。ファイルが本、ディレクトリが本棚のような役割になります。
Linuxではファイルシステムの考え方が非常に重要です。コマンドでファイルを探すとき、ストレージを追加するとき、空き容量を確認するとき、バックアップするときなど、さまざまな場面で関係します。
2. ルートディレクトリを頂点にした階層構造
Linuxのファイルシステムは、一般にルートディレクトリを頂点とする階層構造で表されます。ルートディレクトリの読み方はroot directory(ルートディレクトリ)です。Linuxでは/で表します。
Windowsでは複数のドライブ文字を意識することがありますが、Linuxでは基本的に/から始まる一つのディレクトリツリーとしてファイルやストレージを扱います。ツリーの読み方はtree(ツリー)で、木の枝のように下へ分かれていく構造を意味します。
たとえば/homeには一般ユーザーのホームディレクトリ、/etcには多くのシステム設定、/varにはログなど変化しやすいデータ、/tmpには一時ファイルが置かれることがあります。実際の用途はLinuxディストリビューションや設定によって異なる場合があります。
現在いるディレクトリはpwdコマンドで確認できます。pwdの読み方はpwd(ピーダブリューディー)です。
pwd
/home/user
この例では、現在の作業場所が/home/userであることがわかります。Linuxのファイル操作では、現在位置とルートからの階層を意識すると、コマンドの意味を理解しやすくなります。
3. ext4やXFSなどLinuxで使われるファイルシステム
Linuxでは一種類だけでなく、用途に応じて複数のファイルシステムを利用できます。代表的なものにext4やXFSがあります。ext4の読み方はext4(イーエックスティーフォー)、XFSの読み方はXFS(エックスエフエス)です。
ext4はLinuxで広く利用されているファイルシステムの一つで、デスクトップ環境やサーバーなどさまざまな用途で使われています。XFSもLinuxサーバーなどで利用されることがあるファイルシステムで、大きなファイルや大容量ストレージを扱う環境でも使われています。
ほかにもBtrfsなどのファイルシステムがあります。Btrfsの読み方はBtrfs(ビートゥリーエフエス)です。ファイルシステムによって、管理方法、対応する機能、得意な用途などに違いがあります。
初心者の段階では、すべての種類や内部構造を暗記する必要はありません。まずLinuxではストレージ上のデータを管理する方式として複数のファイルシステムがあり、環境によってext4やXFSなどが選ばれると理解しておけば十分です。
ファイルシステムの種類は、Linuxをインストールした方法やディストリビューション、ストレージ構成によって異なります。自分の環境をコマンドで確認することが大切です。
4. lsblk -fでファイルシステムの種類を確認する
Linuxでストレージやパーティションにどのファイルシステムが使われているか確認するときは、lsblk -fが便利です。lsblkの読み方はlsblk(エルエスブロック)です。ブロックデバイスの構成とファイルシステムの情報を一覧で確認できます。
lsblk -f
NAME FSTYPE FSVER LABEL UUID MOUNTPOINTS
sda
sda1 ext4 1.0 11112222-3333-4444-5555-666677778888 /boot
sda2 xfs aaaabbbb-cccc-dddd-eeee-ffff00001111 /
FSTYPEにはファイルシステムの種類が表示されます。この例ではsda1にext4、sda2にXFSが使われています。MOUNTPOINTSを見ると、それぞれがLinuxのどのディレクトリへ接続されているかも確認できます。
UUIDの読み方はUUID(ユーユーアイディー)です。Universally Unique Identifier(ユニバーサリーユニークアイデンティファイア)の略で、ファイルシステムなどを識別するために使われる値です。Linuxではストレージを安定して識別するためにUUIDが設定やマウントで利用されることがあります。
表示結果は環境によって異なります。NVMe SSDや仮想ディスクを利用している場合は、デバイス名もこの例とは違うことがあります。
5. パーティションとファイルシステムとマウントの関係
Linuxのストレージ管理では、パーティション、ファイルシステム、マウントという三つの用語がよく登場します。パーティションの読み方はpartition(パーティション)です。一台のHDDやSSDを複数の領域へ分割して利用する仕組みです。
パーティションを用意しただけでは、通常はファイルやディレクトリを整理して保存するための管理構造がありません。そこでext4やXFSなどのファイルシステムを作成します。さらに、そのファイルシステムをLinuxのディレクトリ構造から利用できるように接続することをマウントといいます。マウントの読み方はmount(マウント)です。
初心者の方は、ストレージが土地、パーティションが土地を分けた区画、ファイルシステムが区画内の住所や整理方法、マウントがLinuxの道路からその区画へつながる入口だと考えるとわかりやすいでしょう。
現在どのファイルシステムがどこへマウントされているか確認するときは、findmntコマンドも便利です。findmntの読み方はfindmnt(ファインドマウント)です。
findmnt -T /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda2 xfs rw,relatime
この例ではルートディレクトリが/dev/sda2にあるXFSファイルシステムから提供されていることがわかります。実際のSOURCEやFSTYPEは利用しているLinux環境によって異なります。
6. inodeとデータブロックでファイルを管理する仕組み
Linuxのファイルシステムをもう少し詳しく理解するときに登場するのがinodeです。inodeの読み方はinode(アイノード)です。inodeは、ファイルの種類、アクセス権限、所有者、ファイルサイズ、更新日時、データの場所に関係する情報などを管理します。
ファイル名とinodeは同じものではありません。一般的なLinuxのファイルシステムでは、ディレクトリがファイル名とinode番号の対応を持ち、そのinodeを通してファイルの情報やデータへたどります。この仕組みはハードリンクを理解するときにも重要です。
データそのものは、ファイルシステムが管理するブロックなどの単位に保存されます。ブロックの読み方はblock(ブロック)です。初心者の方は、inodeが本の管理カードで、データブロックが本の本文を置いている棚のようなものだと考えるとわかりやすいでしょう。
ファイルのinode番号はls -iで確認できます。
touch sample.txt
ls -i sample.txt
123456 sample.txt
左側に表示される数字がinode番号です。実際の番号は環境によって異なります。普段のファイル操作でinodeを毎回意識する必要はありませんが、ハードリンク、ファイル削除、ファイルシステム障害などを学ぶときに役立つ基礎知識です。
7. dfコマンドでファイルシステムの容量を確認する
Linuxでファイルシステムの容量や空き容量を確認するときは、dfコマンドがよく使われます。dfの読み方はdf(ディーエフ)です。マウントされているファイルシステムごとの容量、使用量、空き容量、使用率などを確認できます。
さらにdf -Thとすると、ファイルシステムの種類も合わせて読みやすい容量単位で確認できます。
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 119G 28G 91G 24% /
/dev/sda1 ext4 974M 210M 697M 24% /boot
Typeにはファイルシステムの種類、Sizeには全体容量、Usedには使用済み容量、Availには利用可能な容量、Useには使用率、Mounted onにはマウント先が表示されます。
Linuxサーバーでは、ファイルシステムの空き容量が不足するとログを書き込めなくなったり、アプリケーションがデータを保存できなくなったりする場合があります。そのためdf -hやdf -Thによる容量確認は、Linuxのシステム管理でよく使われる基本操作です。
なお、ディスク全体に空き容量があることと、目的のファイルシステムに空き容量があることは同じではありません。複数のパーティションやファイルシステムへ分かれている場合は、それぞれの使用状況を確認する必要があります。
8. Linuxのファイルシステムではアクセス権限も管理される
Linuxのファイルシステムでは、データの場所だけではなく、誰がファイルを読み、書き、実行できるのかというアクセス権限も重要です。アクセス権限の読み方はアクセス権限(アクセスケンゲン)です。
Linuxではユーザーやグループという考え方を使ってファイルを管理します。ファイルごとに所有者やグループが設定され、読み取り、書き込み、実行といった権限を設定できます。そのため複数のユーザーが同じLinuxサーバーを利用していても、必要のないファイルへ自由にアクセスできないよう制御できます。
ファイルの詳しい情報を確認するときはstatコマンドも利用できます。statの読み方はstat(スタット)です。
stat -c '%n %s %U %G %a' sample.txt
sample.txt 0 user user 644
この例ではファイル名、サイズ、所有ユーザー、所有グループ、アクセス権限に関係する値を表示しています。実際の値は作成したユーザーや設定によって異なります。
Linuxではファイルシステムが単にデータを並べるだけではなく、所有者、権限、時刻など多くの情報を一緒に管理していることを理解すると、ファイルシステムの役割がよりわかりやすくなります。
9. Linux初心者がファイルシステムで覚えておきたいポイント
Linuxのファイルシステムを理解するときは、まず「データを整理して保存し、必要なファイルへたどり着けるようにする管理構造」と考えるとよいでしょう。HDDやSSDはデータを保存するストレージ装置ですが、その上でファイルやディレクトリを扱えるようにする仕組みがファイルシステムです。
Linuxではルートディレクトリを頂点とした一つの階層構造が基本です。追加したストレージや別のパーティションも、マウントすることでその階層の一部として利用できます。この考え方を理解すると、なぜ別のHDDを追加してもLinuxでは/dataなどのディレクトリから利用できるのかがわかります。
ファイルシステムの種類としてはext4やXFSなどがあり、lsblk -fを使うと現在の環境で使われている種類を確認できます。findmntではマウント関係、df -Thではファイルシステムの種類と容量、ls -iではinode番号を確認できます。
また、ファイルシステムはファイル名や保存データだけでなく、所有者、アクセス権限、更新日時なども管理しています。Linuxでファイルを安全に共有したり、サーバーを安定して運用したりするためにも、この管理情報は重要です。
ファイルシステムの歴史を振り返ると、UNIX系の考え方を受け継ぎながら、より大きなストレージや障害への強さ、新しい管理機能などに対応するため、さまざまな方式が登場してきました。現在のLinuxでも用途に合わせて複数のファイルシステムが利用されています。
Linux初心者は、最初から内部構造を細かく暗記するよりも、ストレージ、パーティション、ファイルシステム、マウント、ディレクトリという流れを一つにつなげて理解することが大切です。この基本がわかると、Linuxのファイル操作、ディスク管理、容量確認、バックアップ、サーバー管理などの学習へ進みやすくなります。
Linuxのファイルシステムは、ストレージ上のデータをファイルやディレクトリとして整理し、名前、場所、容量、所有者、アクセス権限などを管理する仕組みです。ext4、XFS、inode、パーティション、マウント、lsblk、dfなどの関連用語を一緒に学ぶと、Linuxのファイルシステムとストレージ管理を理解しやすくなります。