5.  第5章 ext3ファイルシステム

Linux 2.2系ではext2fsが主流でしたが、 Linux 2.4系ではext3fsが主流になりつつある。ext3と同じくジャーナリングシステムが採用されているファイルシステムとしては,ReiserFSやIRIX(SGI)で採用されているXFS,ほかにもJFSなどがある。実は,ReiserFSなどのほうがext3よりもディスクへのアクセス性能の点で優れている。しかし,ext3はext2と上位互換性を持っているという点が大きな特徴だ。ext3はext3に対応していないカーネルやユーティリティなどからはext2のように扱えるのだ。この場合,ジャーナリング機能が動作しないだけであり,アクセスそのものは通常と同じように読み書きできる。

5.1  ext3の特長

基本的にはext2の強化版。
ext3ファイルシステムの動作には,「writeback」,「ordered」,「journal」という3つのモードがある。標準はorderedモードで動作し,メタデータ(ディレクトリ構造など中枢部分)のみをジャーナリングし,ファイルそのものはジャーナリングされない。このモードは標準で設定されるということもあり,速度面と堅牢性の面から最もバランスが考えられている。
一方,writebackモードに設定すれば,堅牢性の面が犠牲となるがアクセス速度が向上する。さらにjournalモードであれば,速度は犠牲となるが堅牢性が増す。

5.1.1  常備能力

ジャーナリングにより、回復は数秒ですむ。e2fsckが不要。

5.1.2  データの一貫性

より強力な一貫性を提供する。

5.1.3  速度

ジャーナリングがハードドライブのヘッドの動作を効率化する。

5.1.4  簡単な移行

ext2 -> ext3へは再フォーマット不要。> 5.3参照

5.2  ext3ファイルシステムの作成

5.2.1  fdiskでパーティション作成

fdiskの使用は、”root”でシェルから行う。たとえば、IDEのセカンダリのデバイスに行う場合、
[1.]#  /sbin/fdisk /dev/hdb
fdiskコマンド
m =ヘルプ表示。
p =現在の(設定をしようとしている)パーティションを表示。
d =パーティションの削除。
n =新しいパーティションを作成。
   サイズの指定は +sizeM (M=メガバイト)。
w =ディスクにパーティションテーブルを書き込む。
t =ファイルシステムを用意。
    linux swap      <- 82
    linux ext2 or ext3    <- 83
l =ファイルシステムタイプの一覧表示。
q =ディスクを変更しないで、終了。

5.2.2  ext3ファイルシステムのフォーマット

fdisk等でパーティションを作成した後、フォーマットを行う。たとえば、
[1.]#  /sbin/mkfs –t ext3 /dev/hdbXX
これにより、指定されたドライブの、それまで存在するデータをすべて永久に破壊します。
[2.]#  /sbin/mke2fs –j /dev/hdXX :これでもフォーマットできる。
[-j] [-J journal-options] 

5.2.3  e2labelを使用してラベルを割り当てる

ドライブのパス名を使用しないで、/etc/fstabにラベルで指定出来る。
[1.]#  /sbin/e2label /dev/hdaXX /mount/point
各パーティションにラベルを割り当て、/etc/fstabに追加する
[2.]#  pico –w /etc/fstab
そして、各ラベル付パーティションを以下のように付け加える。
[3.]#  LABEL=/mount/point /mountpoint ext3 defaults 1 2

5.2.4  不明なラベルのパーティションがある場合

次のコマンドで調べる。
[1.]#  /sbin/tune2fs –l /dev/hdaXX |grep volume以上のように、ラベルでマウントポイントを指定することが出来る。

5.3  ext3ファイルシステムへの変換

tune2fsプログラムは、パーティションのデータを変更せずにジャーナルを既存のext2ファイルシステムに追加することができる。
マウントされているとrootディレクトリに”.journal”としてみえる。
[1.]#  /sbin/tume2fs –j /dev/hdXX
実行後ext3に変換される。
実行後は、/etc/fstabの中でパーティションタイプを
ext2 -> ext3に変更をしておくこと。

5.3.1  rootファイルシステムの変換の場合

ブートするためにはinitrdイメージ(or RAM disk)を使用する必要がある。この作成には、
[1.]#  mkinitrd
man mkinitrd参照。さらに、LILO or GRUBの設定が、initrdをロードするので確認。>変換がうまくできていない場合、/rootはext3でなくext2でマウントされる。

5.4  ext2ファイルシステムへ戻す

ext3は、最近(2年ぐらい)のものなので、一部のディスクユーティリティはサポートしていない。たとえば、
[1.]# resize2fs
:パーティションの縮小等に使用。
ext3未サポートなので、一時的にext2に戻して使用しなければならない。
パーティションをext2にもどすには、rootでログインして、アンマウントする。
[2.]#  umount /dev/hdbXX
ファイルシステムをext2に変更。
[3.]#  /sbin/tune2fs –o ^has_jounal /dev/hdbXX
has_jounal = -j オプション を使った場合と同様に ext3ジャーナルをセットまたはクリアできる。
パーティションのエラーチェック
[4.]#  /sbin/e2fsck –y /dev/hdxx
パーティションを再度ext2としてマウント
[5.]#  mount –t ext2 ./dev/hdbXX /mount/point
パーティションのrootレベルでマウントディレクトリに移動して、不要な”.jounal”を削除する。
[6.]#  rm –f .jounal
基本的に、ext3はext2でもマウントできる。ただし、その場合はジャーナルは使用しない。

第5章おわり