スーパーブロック()とはファイルシステムの論理パーティションを管理するためのメタデータである。主にUnix系OSなどで利用される。以下の通り、スーパーブロックはシステム起動時にブロックデバイスのファイルシステムを認識するための重要な手がかりとなる。

Linux 例としてLinuxを挙げる。Linuxのファイルシステムは、スーパーブロック、inodeブロック、「ディレクトリ管理ブロック」など階層的なブロック構造を持っている。これらはファイルシステム全体が持つinodeの総数やinodeの残数やファイルシステムのサイズなどファイルシステムの基本的情報が格納されている。また仮想ファイルシステム(VFS)はユーザが使用するファイルシステムとは別個に先述のブロック情報を保持している。のファイルシステムマウント(コマンド)やファイルシステムからのファイル読み出しのためには、まずルートディレクトリ("/")の inode情報が必要となるが、その情報はスーパーブロックに書かれている。ルートディレクトリ以下のディレクトリはその一つ上のディレクトリにinodeブロックが存在するので、順次それを呼び出してゆけば、最後には目的のファイルのinodeが発見できアクセス可能となる。ソフトウェアRAIDをストレージに持つシステムの場合、上記と同様ファイルシステムのマウントのためマルチデバイスに関する情報が必要となる。その情報はRAIDに使用するブロックデバイスのスーパーブロックに書き込まれる。とりわけこのようなスーパーブロックをパーシステント・スーパーブロック(、永続的スーパーブロック)という。RAIDアレイを初期化した場合はこの情報は全てのアレイ構成ディスクのスーパーブロックから消去される。

ファイルシステムが破損した場合は通常fsckコマンドを使い、スーパーブロックの(inodeやディレクトリの)情報とファイルシステム自体の情報とが比較され、整合性が保たれるように自動修復もしくは手動で修復できる。しかしこの修復処理はディスク容量が大きくなった場合にかかる時間が大きくなる。このため近年ではファイルシステムの修復にはジャーナルが使用される。ジャーナリングファイルシステムはファイルシステムの修復処理を高速化する仕組みであり、簡単に述べるとスーパーブロック等のメタデータの更新の際に事前にジャーナルのログを更新する。これによりファイルシステム破損時に直接スーパーブロックと実データを比較する必要はなくなる。しかし、ジャーナリングファイルシステムでもメタデータの破損を回避できるわけではない。万が一スーパーブロックが破壊されたまたは読み出し不能となった場合、予備のスーパブロックを保持している場合はext3やext4の場合、"-n"オプションとファイルシステムを引数に実行するとスーパーブロックのバックアップが存在するブロックアドレスとブロックサイズが分かる。とfsckext3やext4では"-b"オプションでスーパーブロックのブロックアドレスを指定するとそのスーパブロックを読んでからファイルシステムのチェックが可能となる。コマンドを組み合わせて復旧させることが可能である。仮にスーパーブロックが存在しなかった場合でも即時作成することが可能である。

OSはファイルシステムのスーパーブロックを常時更新する(よってなんらかの障害が発生した場合、スーパーブロックが破損する可能性がある)。メモリ上に更新したスーパーブロックのデータバッファが存在する場合は、コマンドで即座に書き込める。

その他 その他Unix系OSでも実装は異なるが、同様の方針でファイルシステムにスーパーブロックを構成しているものがあるSolaris, UFSの例。AIX, JFSの例。。

脚注

注釈

出典

関連項目 ファイルシステム fsck

メタデータ

外部リンク Linux ファイルシステムの徹底調査 Solaris のシステム管理 (第 1 巻) - スーパーブロック