Ubuntu freak(ファイルシステム)

ファイルシステム

 ファイルシステムとは、ファイルというデータのまとまりをディスクに入出力するための機能です。

 Linuxの場合、ファイルシステムの仕組みはLinuxカーネルが提供します。

 ファイルシステムは、ディスク上に番号で管理しているデータ領域と対応付ける仕組みを用意します。 また、ディスク管理もしています。

 Linuxは、Windowsとは違い「ドライブ」の概念が存在しません。

 Linuxは、周辺機器(デバイス)やあらゆるものをファイルとして扱います。 つまり、プリンターやUSBメモリー等もファイルとして扱います。

Linuxのファイルシステムは1本のツリー構造

 Linuxのファイルシステムは、ディレクトリ構造です。

 Linuxの場合、システムに1つだけある「ルート」(/)ディレクトリを頂点として、 その下にあらゆるディレクトリやファイルがぶらさがる構造になっています。

/(ルート)→

あらゆるものをファイルとして扱う

マウント・アンマウント

 Linuxでは、USBメモリーをPCに挿入した時に自動認識されますが、 「/media」や「/mnt」ディレクトリの下に置かれます。 これらの下にUSBメモリー内のディレクトリやファイルが「接ぎ木」される形になります。

 この「接ぎ木」の形を「マウント」と呼びます。 ディレクトリ構造の中のディレクトリに、もう一つのディレクトリツリーを一時的に接続します。

 Linuxの場合、「マウント」という操作をしなければ、ハードディスクや外部メディアをPCにつないで使えません。

ほぼ全装置をファイルで扱う

 Linuxではシステムにつながるほぼすべてのデバイスを、 ファイルとして扱う仕組みになっています。 これらのデバイスは、「デバイスファイル」という特殊なファイルとして扱います。

 Linuxの起動時に、カーネルがデバイスを認識して、デバイスファイルとして/devディレクトリに配置されます。

ページトップへ

iノードでファイルを管理

 UbuntuやFedoraなどのLinuxディストリビューションでは、 標準のファイルシステムとして「ext4」が採用されています。 ファイルシステムは独自に設計されていて、ファイルのデータをどのようなフォーマットでディスクに書き込むかなどは、 ファイルシステムごとに異なります。

 重要なのは、ファイルシステムがファイルをどのように識別したり管理したりしているかです。 どのファイルシステムも「iノード」と「ディレクトリエントリー」で実現しています。

 「iノード」とは、すべてのファイルに設定されている属性情報のことです。

 「iノード」には、個々のファイルを識別するための「iノード番号」をはじめ、 ユーザー/グループID、ファイルサイズ、作成時刻などの情報が含まれています。

 Linuxでは、ディレクトリは「ファイル名とiノード番号の対応付けリストを格納した特殊なファイル」 という位置付けになっています。 この対応付けリストをまとめたデータが「ディレクトリエントリー」です。

 ファイルシステムがファイルを探す際、ファイル名を基にこの「ディレクトリエントリー」を検索して、 該当する「iノード番号」を見つけます。

ページトップへ