連載
» 2008年06月30日 00時00分 公開

実践でも役立つLPICドリル(3):ファイルシステムの管理と保守 (1/4)

本連載は、Linux 認定試験 LPICに対応しています。一般的なLinuxユーザーレベルのトピックは省略し、システム管理とサーバ管理の内容を取り上げています。また、LPIC対策だけでなく、関連するトピックについて系統的な理解を問う問題も出題しています。連載の特徴は、対象となるプログラムのバージョンを可能な限り明記していること、比較的新しくまとまった解説がまだ少ないトピック、重要だが理解しにくいトピックを優先して取り上げていることです。問題を解き、その解説を読むことにより実践でLinuxを活用できる力を身に付けます。

[大竹龍史,ナレッジデザイン]

今回のディストリビューション: Fedora 8

問題を解く鍵【1】〜【3】

 今回のトピックは「ファイルシステムの管理と保守」です。管理と保守の手順や試験問題を解くに当たって理解しておくべきポイントなどを6つご紹介します。

【1】ファイルシステムとはどのようなものか、その概要を把握しておく

 ファイルシステムは、ディスクやCD-ROM/DVDなどの記憶装置の中で木構造に格納されるデータと、それを検索して読み書きを行うカーネルモジュールから構成されます。ファイルシステムの木は、1つのディスクパーティションの中に1つだけ作ることができます。扱えるファイルのファイル名、ファイルサイズ、ファイルの個数、ファイルシステムのサイズ、パフォーマンス、セキュリティ機能などが異なった、さまざまファイルシステムがあります。

 LinuxではEXT2、EXT3ファイルシステムが標準ですが、サン・マイクロシステムズのSolarisやマイクロソフトのWindowsなど、ほかのOSで標準となっているファイルシステムにアクセスすることもできます。

【2】ファイルシステムが作られるデバイスの種類やデバイス名、ファイルシステムの種類を把握しておく

 ファイルシステムは、ハードディスクなどのランダムアクセス可能なデバイス(ブロックデバイス)に作成することができます。ファイルシステムを作成できるデバイスとして次のようなものがあります。

  • ATA/IDE ハードディスク(/dev/hda)、
  • USB CD-ROM、USB DVD、SCSI CD-ROM、SCSI DVD(/dev/sr0, /dev/scd0)、
  • USB ハードディスク、USB メモリ、SATA ハードディスク、SCSI ハードディスク(/dev/sda)、
  • フロッピーディスク(/dev/fd0)
(注)括弧内は、1台目の一般的なデバイス名です。

 Linuxで使用されている主なファイルシステムには次のようなものがあります。

Linuxのファイルシステム EXT2、EXT3、ReiserFS、JFS、XFS
Solarisのファイルシステム UFS
MS Windowsのファイルシステム NTFS、VFAT、HPFS(OS2)
CD-ROM/DVDのファイルシステム ISO9660、Rock Ridge拡張、Joliet拡張、UDF
疑似ファイルシステム proc、tmpfs、sysfs、devpts
(注)疑似ファイルシステムは、カーネルがシステム資源やシステム情報を管理する目的で、カーネルメモリ中に作られます。

分散ファイルシステム NFS、CIFS、NCPFS
(注)ネットワーク上で複数のホストがファイルを共有するためのファイルシステムです。

 ほかにもLinuxが利用するファイルシステムはいろいろあります。

【3】ファイルシステムの構造を把握しておく

 ファイルシステムは、データ(ファイルの中身)を格納するデータ領域と、データを管理するための管理領域(メタデータ領域)から構成されます。Linuxの標準のファイルシステムであるEXT2/EXT3では、次の要素から構成されます。

(注)EXT3はEXT2にジャーナル機能(メタデータの更新を記録し、その記録を基にメタデータの不整合を修復する機能)を追加したものです。ジャーナル機能はEXT2の予約領域を使用して実装されているので、以下に説明する構成については、EXT2もEXT3も同じです。tune2fsコマンドでジャーナル機能の追加や取り外しができます。


■管理領域

●スーパーブロック

 inodeの個数、データブロックのサイズと個数、inodeの使用/未使用を示すビットマップ、データブロックの使用/未使用を示すビットマップなどから構成されます。

●inode

 1つのinodeが1つのファイルを管理します。従って、ファイルシステムにはinodeの個数分のファイルを作ることができます。

 inodeにはファイルタイプ、パーミッション、リンク数、オーナー/グループ、ファイルサイズ、変更時刻、アクセス時刻、ファイルの中身を格納するデータブロック番号などが格納されます。

 ls -lで表示される情報のうち、ファイル名以外の情報はそのファイルを管理するinodeに格納されています。ファイル名はディレクトリファイルに格納されています。

 inodeはinodeテーブルの中に、順番に番号付けされて配置されています。

■データ領域

 データ領域は、データブロックから構成されます。

図1 EXT2ファイルシステムの構成要素 図1 EXT2ファイルシステムの構成要素

●ブロックグループ

 ファイルシステムは複数のブロックグループに分割されています。1つのファイルの複数のデータブロックを同じブロックグループ内のデータブロックに割り当てることで、ディスクヘッドのシーク時間を減らして、アクセス速度を向上させることができます。

●ディレクトリファイルとリンク数

 ディレクトリファイルには、ファイル名とinodeの対応情報が格納されています。ファイルを管理するinodeがいくつのディレクトリエントリから参照されているかを示す数がリンク数です。

●バッファキャッシュ

 ファイルは次のようにしてアクセスされます。

ファイル名の指定 -> ディレクトリエントリ -> inode -> データブロック

 ファイルへのアクセスパフォーマンスを向上させるため、ディレクトリとinodeの情報はカーネルが管理するメモリ内にキャッシュされます。このキャッシュの情報は最終的にはディスクに書き込まれます。

 この仕組み上、shutdownコマンドなど正しい停止手順を実行せずに電源を切るなどした場合、あるいはディスクの障害でディレクトリエントリやinodeが消失した場合など、ファイル名のない(ディレクトリエントリから参照されない)inodeができてしまいます。また、スーパーブロック内のinodeやブロックのビットマップと、inodeのリンク数やデータブロック番号との情報に不整合が生じます。fsckコマンドは、この不整合性を検査、修復してくれます(後述)。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。