レベル: 中級 Roderick W. Smith (rodsmith@rodsbooks.com), Consultant and author
2008年 4月 30日 歴代の Linux® ファイルシステムのなかで最新の Ext4 は、今までのファイルシステムと同じように重要かつ人気のファイルシステムになりそうです。Linux システム管理者としては、その利点と欠点、そして ext4 にマイグレーションする際の基本手順を認識しておかなければなりません。この記事では、ext4 を導入するタイミング、従来のファイルシステム・メンテナンス・ツールの使い方を ext4 に適応させる方法、さらにこのファイルシステムを最大限利用する方法を説明します。
Ext4 の特徴
Linux は各種のファイルシステムをサポートします。なかには特殊化したネットワーク・ファイルシステムや、他のオペレーティング・システムを対象に開発されたファイルシステムもありますが、Linux のネイティブ・ファイルシステム、つまり Linux のルート (/) とシステム・ディレクトリーを配置できるファイルシステムは驚くほどたくさんあります。現在、このカテゴリーのファイルシステムとしては ext2、ext3、ReiserFS、XFS、JFS (Journaled File System) が挙げられます。その一方、ファイルシステムの設計と開発が進むにつれ、新しいファイルシステムの登場も間近に迫っています。
Linux を対象に現在開発中のファイルシステムのなかで最も重要なのは、おそらく ext4 でしょう。これは、Linux 専用に最初に開発された拡張ファイルシステム (ext または extfs) の後継となる 4 番目のファイルシステムです。そこに継承された内容から、ext4 が Linux にとって重要な標準ファイルシステム (おそらくは真の標準ファイルシステム) になる日もそう遠くはないと思います。
ext3 と比較した ext4
この 4 番目の拡張ファイルシステム (ext4 または ext4fs) が登場した理由は、開発者たちが ext3 に新しい高度な機能を組み込もうと推し進めたからです。このように推し進めることで、以下の問題が生じてきました。
- 一部の新規機能によって後方互換性が失われることになる。
- ext3 コードがより複雑になり、管理しにくくなる。
- 変更によって ext3 の極めて高い信頼性が損なわれる恐れがある。
開発者たちは上記の理由から、2006年6月、ext3 を離れて ext4 の開発に乗り出しました。それ以降、ext4 の開発は進められましたが、単なる一時的な Linux ユーザーや管理者にはほとんど知られていません。2006年11月、2.6.19 カーネルのリリースにより、ext4 は主流のカーネルのなかで初めてその姿を現しましたが、当時は (そして現在も同じく) 実験的ファイルシステムとして位置づけられていたため、ほとんどの人々は目を向けませんでした。
ext4 は今でも開発中であるため (2.6.24.4 カーネルの時点)、その機能リストは流動的です。ext3 と比較した場合、現在および予定されている機能には表 1 に記載した利点があります。
表 1. ext3 と比較した ext4 の現在および予定されている機能の利点
| 機能 | 利点 |
|---|
| ファイルシステムのサイズ拡大 | ext3 のファイルシステムおよびファイルの最大サイズはそれぞれ 32 テビバイト (TiB) と 2 TiB となっていますが、実際の最大許容サイズはアーキテクチャーとシステム設定に応じてこれよりも少なくなります。おそらくファイルシステムに関しては 2 TiB、ファイルに関しては 16 ギビバイト (GiB) 程度でしょう。それとは対照的に、ext4 は最大 1024 ペビバイト (PiB)、つまり 1 エクスビバイト (EiB) のファイルシステムと最大 16 TiB のファイルを許容します。この数字は平均的なデスクトップ・コンピューターやサーバーには (今のところは) 重要でないかもしれませんが、大規模なディスク・アレイを使用するユーザーには大きな意味を持ちます。 |
|---|
| エクステント | エクステントとはオンディスクのファイル記述子の効率性を向上させる方法で、その利点は何よりも、大きなファイルの削除時間が短縮されることです。 |
|---|
| 永続的事前割り当て | 実際に使用する前にあらかじめディスク・スペースを割り当てておかなければならないアプリケーションの場合、ほとんどのファイルシステムでは未使用ディスク・スペースに 0 を書き込むという方法を取ります。ext4 ではこの方法を使わずに事前にディスク・スペースを割り当てられるため、一部のデータベースおよびマルチメディア・ツールのパフォーマンスが向上します。 |
|---|
| 遅延割り当て | ext4 は最後の瞬間までディスク・スペースの割り当てを遅らせることができるので、パフォーマンスが向上します。 |
|---|
| サブディレクトリー数の増加 | ext3 でディレクトリーが保持できるサブディレクトリーはわずか 32,000 であることに限界を感じた経験がある方は、ext4 でこの制限が取り除かれていることに安堵感を覚えるはずです。 |
|---|
| ジャーナル・チェックサム | ext4 がジャーナル・データに追加するチェックサムにより、信頼性とパフォーマンスが向上します。 |
|---|
| オンライン・デフラグ | ext3 が断片化しやすいというわけではありませんが、そこに保存されたファイルは多少なりとも断片化される傾向があります。ext4 ではオンライン・デフラグのサポートを追加しているため、パフォーマンス全体が向上します。 |
|---|
| 削除の取り消し | まだ実装されてはいませんが、ext4 は削除の取り消しをサポートする可能性があります。この機能は当然、誰かが誤ってファイルを削除してしまった場合に重宝します。 |
|---|
| ファイルシステム・チェックの高速化 | ext4 が追加するデータ構造では、fsck がデータ・チェックの際にディスクの未使用部分をスキップできるようになっているため、ファイルシステム・チェックが高速化します。 |
|---|
| ナノ秒のタイムスタンプ | ext3 を含めた大抵のファイルシステムは秒単位で正確なタイムスタンプ・データを組み込みますが、ext4 はこのデータの精度をナノ秒単位にまで拡張します。一部の情報源でも、ext3 タイムスタンプがサポートする日付が 2038年1月18日までなのに対し、ext4 タイムスタンプは 2514年4月25日までサポートすると示しています。 |
|---|
ext4 は現在進行中の作業であるため、この機能リストは変更される可能性があります。これらの機能の一部を使用した場合、ext3 との後方互換性がなくなります。すなわち、ext3 というファイルシステムのタイプ・コードを使用して ext4 ファイルシステムをマウントできなくなるかもしれないということです。ただし、ext4 は前方互換性については維持します。したがって、ext3 ファイルシステムを ext4 ファイルシステムであるかのようにマウントすることはできるはずです。
ext4 を使うとよいユーザー
ext4 で何よりも劇的に改善されている点は、ファイルとファイルシステムのサイズです。このことから、ext4 が必要になるユーザーとして最も可能性が高いのは、数テラバイトを超えるディスク・スペースを持つユーザーです。その一方、表 1 の機能リストに記載したその他の改善点が、ext4 を使用する動機となることも考えられます。例えば、膨大な数のサブディレクトリーを持つディレクトリーがある場合や、秒よりも細かい精度のタイムスタンプが必要な場合は、ext4 を試してみる理由となります。
ext4 は現時点では実験版なので、使用するにはほぼ間違いなく、カーネルを再コンパイルしなければならなくなります。この作業に不慣れだと、ext4 を使うのに苦労するかもしれません。実際、ext4 が持つ実験的性質が意味していることは、ext4 の開発に貢献したいという場合、あるいは ext4 にどうしても必要な機能があるという場合以外には ext4 を使用すべきではないということです。信頼性の高い大規模ディスクのサポートが必要で、ext4 の安定版リリースまでは待てないというのであれば、代わりに XFS または JFS を使用することを検討した方がよいかもしれません。
もちろん、ext4 はいつまでも実験版ではありません。やがて ext4 は安定したファイルシステムであると宣言されるでしょう。その暁には、ほとんどすべての人にとって ext4 は ext3 と並ぶ有力候補となるはずですが、注意事項もいくつかあります。まず、ext4 ならではのバグが存在することが考えられるため、ext4 の安定性が初めて宣言されたときには慎重を期してください。さらに、ext4 を使用すると以前のツールがディスクにアクセスできなくなる可能性があります。このことは緊急時のリカバリー・ツールに影響するため、お使いのツールが ext4 をサポートするようになるまでアップグレードは見送ったほうがよいかもしれません。その場合のプラス面は、ext3 から ext4 のマイグレーションは問題なく行えるということです。そのため、残しておきたい既存のデータがあっても容易に移行することができます。
コンパイルして ext4 サポートを有効にする
ここまで読めば、ext4 を喜んで試してみたいという気になっていることでしょう。それには、カーネルを再コンパイルして必要なサポートを追加する必要があります。手始めとしてお勧めするのは、入手可能な最新のカーネル (この記事の執筆時点では 2.6.24.4) です。カーネル・ソースを解凍した後、すべてのオプションを手動で設定するか、または以前のカーネルの .config ファイルをコピーし、make oldconfig と入力して古い設定をコピーしてください。それからお好きな構成コマンド (make xconfig など) を入力してカーネル・オプションを表示します。ext4 オプションはメインの File Systems 領域にあり、Ext4dev/ext4 extended fs support development (EXPERIMENTAL) となっています (この名前は、ext4 の安定性が宣言されるまでには変更されるはずです)。また、General 領域の Prompt for development and/or incomplete code/drivers オプションにチェックマークを付けないと、ext4 オプションは表示すらされませんので注意してください。
ext4 サポートが選択された状態でカーネルの変更内容を保存し、make と入力してカーネルを再コンパイルした後、 root として make modules_install と入力してモジュールをインストールします。次に、コンパイル済みカーネル (arch/i386/boot またはその他のディレクトリーにあります) を適切なロケーション (/boot など) にコピーし、GRUB (GRand Unified Bootloader) または LILO (Linux Loader) 構成を編集してからコンピューターをリブートしてください。ブート RAM ディスクを使用する場合は、mkinitrd ユーティリティーも備えたディスクを準備する必要があります。
カーネル・モジュールに加え、ext4 ファイルシステムの機能をサポートする e2fsprogs のバージョンを調べてみてください。バージョンを調べるには、tarball (「参考文献」セクションに該当するサイトを記載) をダウンロードするか、あるいはリスト 1 に示すように git を使用するという方法があります。
リスト 1. git を使用して最新の e2fsprogs を取得する場合のコマンド
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
$ cd e2fsprogs
$ git checkout -b pu
Switched to a new branch "pu"
$ git branch
master
* pu
$ git pull git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git pu
|
git のインストールにはディストリビューションのパッケージ・マネージャーを使うことになるかもしれませんが、これらのツールはまだ十分にテストされていないため、本番システムで使用することはお勧めしません。また、現時点では ext4 を使用するために本当に必要なものを追加してくれるというわけでもなさそうです。したがって、ディストリビューションに付属の e2fsprogs パッケージを引き続き使用して構いません。
e2fsprogs のコンパイル・プロセスは至って標準的なものです。つまり、パッケージを解凍し、その結果生成されたディレクトリーに cd で移り、それから ./configure、make、(root として) make install の順に実行します。このプロセスはディストリビューションの標準 e2fsprogs パッケージを上書きするので、ツールの最新バージョン (まだ不安定かもしれませんが) を使用すると決めた場合にのみ実行してください。
ext3 から ext4 にマイグレーションする方法
システムがブートして ext4 をサポートしているカーネルが有効になったら、この新しいファイルシステムの使用を開始する準備は万端です。ファイルシステムを使用するには、パーティション、RAID (Redundant Array of Independent Ddisks)、またはその他のストレージ・スペースを用意してください。ストレージ・スペースの用意ができたら、ext4 ファイルシステムとしての使用を開始して、ファイルシステム・オプションの調整に取り掛かることができます。
デバイスを準備する
まったく新しいところから始めたい場合は、新旧 e2fsprogs パッケージに付属しているツール、つまり mkfs.ext3 または mkfs.ext4 を使ってパーティションまたはその他のデバイスをフォーマットします。例えば、mkfs.ext4 -j /dev/sda6 を実行すると /dev/sda6 パーティションが使用できるようになります。mkfs.ext4 を使うことにより、より ext4 に固有の機能がアクティブにされたファイルシステムを作成することができます。
目下、e2fsprogs プログラムはカーネル・ファイルシステムの最新の変更を完全に盛り込んでいるわけではありませんが、幸いなことに、カーネル・ドライバーのほとんどの機能には mkfs.ext4 やその他のユーティリティーを使った特別な準備は必要ありません。ext4 機能はファイルシステムをマウントすればアクティブになります。ext4 を大規模な媒体で使用する場合、それは大胆にも今まで経験した人がほとんどいない領域に足を踏み入れるということです。したがって、発生した問題は必ずすべて文書化し、報告してください。
既存の ext2 または ext3 ファイルシステムを ext4 ファイルシステムとして使用することもできます。それには、これから説明するようにデバイスをマウントすればいいだけの話です。ただし、エクステントといった特定の新規機能を使用すると、再び ext2 ドライバーや ext3 ドライバーでファイルシステムを使用することが不可能になります。
ext4 を使用する
デバイスを ext4 ファイルシステムとして使用するには、ext4dev というファイルシステムのタイプ・コードでデバイスをマウントします (ext4 が安定版になると、ファイルシステムのタイプ・コードは ext4 に変更される予定です)。一例として、mount -t ext4dev /dev/sda6 /mnt/point は /dev/sda6 を ext4 ファイルシステムとして /mnt/point にマウントします。ext4 として使用する基本的な方法はこれだけです。注意しなければらないのは、デフォルトのマウント・オプションはエクステントを有効にするため、ファイルシステムを ext3 ファイルシステムとして使用できなくなるということです。ext4 を試す一方で ext3 に戻せるようにもしておきたい場合は、-o noextents オプションを使用してエクステントの使用を無効にしてください。
ext4 をマウントした後の実際的な使い方は、他のあらゆるファイルシステムとまったく同じです。ファイルをコピーすることも、直接ファイルを作成することもできます。バグに出くわしたり、ベンチマーク・テストを実行したりしない限り、何の違いにも気付かないはずです。
ext4 パフォーマンスのオプションを調整する
ext4 ファイルシステムを調整するには、tune2fs プログラムを ext2 または ext3 ファイルシステムを調整する場合と同じように使用できます。現在、tune2fs には ext4 固有のオプションは 1 つもありませんが、標準の -O パラメーターを使用すれば、extents をはじめとする ext4 のオプションを設定することができます。
ファイルシステムを ext4 としてマウントすると、カーネルはこのファイルシステム固有の機能 (エクステントなど) を使用するようになります。そのため、ファイルシステムを再び ext3 ファイルシステムとしてマウントするのは不可能になるか、少なくともかなりの苦難を乗り越えなければならないことになります。
ext3 ファイルシステムを ext4 としてマウントすると ext4 ならではの機能が有効になるものの、マウントするだけでは古いデータ構造が新しいフォーマットに変換されないため、例えば既存のファイルはエクステントを使用せずにブロック単位で割り当てられたままになります。これはつまり、古いファイルが新しい機能の恩恵を得られないということです。ext4 の開発者たちはこの点を考慮し、先手を打ちました。その方法とは、(まさに実験的な) e4defrag ツール (この後、説明) によって、エクステントを使用するように割り当てを変換することです。i ノード・サイズは、別の新しいツール (まだ利用可能になっていません) によって新規フォーマットに変更されることになります。
ext4 ファイルシステムの保守の方法
ext4 ファイルシステムの保守に使用できる標準 e2fsprogs ツールには、ファイルシステムを作成した後にオプションを調整するための tune2fs、ファイルシステムのチェックを実行するための fsck.ext4 などがあります。これらのプログラムを、ext4 と ext3 で比較してもたいした違いはほとんどありません。しかし前述したように、ext4 に含まれるいくつかの拡張機能によって、fsck のパフォーマンスは向上するはずです。
以上のツールに加え、e4defrag という特筆すべき新しいツールがあります。このプログラムはマウントされた ext4 ファイルシステムをデフラグします。ファイルシステムがほとんど満杯になっている場合をはじめ、このデフラグによってパフォーマンスは向上するはずです。さらにこのツールには ext2/3 形式の割り当てを ext4 形式のエクステントをベースとした割り当てに変換するという利点があり、今まで ext3 ファイルシステムとして使われていたファイルシステムのパフォーマンスを向上させます。しかし残念ながら、この e4defrag はまだ標準 e2fsprogs パッケージには含まれていません。そのため、「そのまま」のコピーを手に入れる必要があります (「参考文献」セクションにリンクを記載しています)。
参考文献 学ぶために
製品や技術を入手するために
- ftp.kernel.org から ext4 サポートを備えた
e2fsprogs
を入手してください。
-
ext4defrag はメイン
e2fsprogs パッケージにはまだ含まれていませんが、このユーティリティーのソース・コードのコピーを調べてみてください。
-
SEK for Linux を注文してください。この 2 枚組 DVD セットには、Linux 対応の DB2®、Lotus®、Rational®、Tivoli®、そして WebSphere® の最新 IBM トライアル・ソフトウェアが収録されています。
- developerWorks から直接ダウンロードできる IBM トライアル・ソフトウェアを使用して、Linux で次の開発プロジェクトを構築してください。
議論するために
著者について  | 
|  | Rod Smith は長年の経験を積んだ Linux コンサルタントです。Linux、UNIX、およびネットワークに関する数々の著作もあります。 |
記事の評価
|