ファイルシステム
*画像をクリックすると拡大します。 |
ファイルシステムとは、ファイルというデータのまとまりをディスクに入出力するための機能です。
Linuxの場合、ファイルシステムの仕組みはLinuxカーネルが提供します。
ファイルシステムは、ディスク上に番号で管理しているデータ領域と対応付ける仕組みを用意します。 また、ディスク管理もしています。
Linuxは、Windowsとは違い「ドライブ」の概念が存在しません。
Linuxは、周辺機器(デバイス)やあらゆるものをファイルとして扱います。 つまり、プリンターやUSBメモリー等もファイルとして扱います。
Linuxのファイルシステムは1本のツリー構造
Linuxのファイルシステムは、ディレクトリ構造です。
Linuxの場合、システムに1つだけある「ルート」(/)ディレクトリを頂点として、 その下にあらゆるディレクトリやファイルがぶらさがる構造になっています。
/(ルート)→ |
---|
bin | 一般ユーザー権限で実行できる基本コマンドを格納 |
---|---|
boot | Linux起動時に必要なファイルを格納 |
dev | デバイスファイルを格納 |
etc | 設定ファイルを格納 |
home | ユーザーのホームディレクトリ |
lib | /binや/sbin置かれた実行ファイルの共有ライブラリー |
lost+found | 破損したファイルなどを格納 |
media | CDやDVDなどを自動的に接続するマウントポイント |
mnt | ファイルシステムの一時的なマウントポイント |
opt | パッケージ管理システムがパッケージなどを格納 |
proc | カーネルとの間で情報をやり取りするための特殊ファイルを格納 |
root | rootユーザー用のホームディレクトリ |
sbin | システム管理用の基本コマンドを格納 |
srv | サーバーなどが使うサイト固定のデータを格納 |
sys | ホットプラグ可能なデバイスの情報などを格納 |
tmp | 作業用の一時的なディレクトリ |
usr | ユーザーが共有する読み出し專用データを格納 |
var | ログファイルや作業用ファイルなどを格納 |
あらゆるものをファイルとして扱う
マウント・アンマウント
Linuxでは、USBメモリーをPCに挿入した時に自動認識されますが、 「/media」や「/mnt」ディレクトリの下に置かれます。 これらの下にUSBメモリー内のディレクトリやファイルが「接ぎ木」される形になります。
この「接ぎ木」の形を「マウント」と呼びます。 ディレクトリ構造の中のディレクトリに、もう一つのディレクトリツリーを一時的に接続します。
Linuxの場合、「マウント」という操作をしなければ、ハードディスクや外部メディアをPCにつないで使えません。
ほぼ全装置をファイルで扱う
Linuxではシステムにつながるほぼすべてのデバイスを、 ファイルとして扱う仕組みになっています。 これらのデバイスは、「デバイスファイル」という特殊なファイルとして扱います。
Linuxの起動時に、カーネルがデバイスを認識して、デバイスファイルとして/devディレクトリに配置されます。
iノードでファイルを管理
*画像をクリックすると拡大します。 |
*画像をクリックすると拡大します。 |
UbuntuやFedoraなどのLinuxディストリビューションでは、 標準のファイルシステムとして「ext4」が採用されています。 ファイルシステムは独自に設計されていて、ファイルのデータをどのようなフォーマットでディスクに書き込むかなどは、 ファイルシステムごとに異なります。
重要なのは、ファイルシステムがファイルをどのように識別したり管理したりしているかです。 どのファイルシステムも「iノード」と「ディレクトリエントリー」で実現しています。
「iノード」とは、すべてのファイルに設定されている属性情報のことです。
「iノード」には、個々のファイルを識別するための「iノード番号」をはじめ、 ユーザー/グループID、ファイルサイズ、作成時刻などの情報が含まれています。
Linuxでは、ディレクトリは「ファイル名とiノード番号の対応付けリストを格納した特殊なファイル」 という位置付けになっています。 この対応付けリストをまとめたデータが「ディレクトリエントリー」です。
ファイルシステムがファイルを探す際、ファイル名を基にこの「ディレクトリエントリー」を検索して、 該当する「iノード番号」を見つけます。