Linuxのext2とは?初期の標準ファイルシステムからストレージ管理の基礎を学ぼう
生徒
「Linuxの勉強を始めたのですが、ext2(イーエックスティー・ツー)という言葉が出てきました。これは何ですか?」
先生
「ext2は、Linuxで使われてきた歴史あるファイルシステム(ファイルシステム)の一つですよ。Windowsでいう『NTFS(エヌティーエフエス)』のような、データの保存ルールですね。」
生徒
「ファイルシステム?データを保存するのにそんな決まりがあるんですね。昔のものだと、今は使われないんですか?」
先生
「現在は後継のext4(イーエックスティー・フォー)が主流ですが、ext2を知ることはLinuxのストレージ管理(ストレージカンリ)の仕組みを理解する上でとても大切です。基本から一緒に見ていきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. ext2とは?Linuxの伝統的なファイルシステムの役割
ext2(読み方はイーエックスティー・ツー)は、「second extended file system(セカンド・エクステンデッド・ファイルシステム)」の略称です。Linuxカーネル(リナックス・カーネル)のために設計された、非常にシンプルで高速なファイルシステム(読み方はファイルシステム)です。
ファイルシステムとは、ハードディスクやSSDなどの記憶装置(読み方はキオクソウチ)の中に、どのようにファイルを並べ、どのように名前を付けて管理するかを決める「棚卸し(たなおろし)のルール」のようなものです。これがないと、コンピュータはどこにどのデータがあるのか分からなくなってしまいます。
ext2は、1993年に登場して以来、長年Linuxの標準的なシステムとして愛用されてきました。現在は新しい規格に取って代わられていますが、その無駄のない構造は、SDカードやUSBメモリなどのフラッシュメモリメディアで今でも利用されることがあります。
2. ファイルシステムの歴史とext2の登場背景
Linuxが誕生した当初は、Minix(ミニックス)というOSのファイルシステムを借りていました。しかし、Minixのシステムには「ファイル名が14文字まで」や「最大サイズが64MBまで」といった厳しい制限がありました。これを解消するために作られたのが、最初の拡張ファイルシステムであるext(イーエックスティー)です。
しかし、初代extにも欠点があったため、より堅牢で高機能な後継版として開発されたのがext2です。ext2が登場したことで、Linuxは本格的なサーバー用途や開発環境として実用性を高めることができました。
ストレージ(読み方はストレージ)の容量がメガバイト単位だった時代からギガバイト単位へと進化する過程で、ext2は大きな役割を果たしました。当時のエンジニアにとっては、データの信頼性と速度を両立させた画期的な仕組みだったのです。
3. ext2の大きな特徴とメリット・デメリット
ext2の最大の特徴は、「ジャーナリング機能(ジャーナリング・キノウ)」を持っていないことです。ジャーナリングとは、データの書き込み中にトラブルが起きた際、復旧を助けるために「操作ログ」を残す仕組みのことです。
メリットとしては、ログを記録する手間がない分、読み書きの動作が非常に軽量で、処理速度が速い点が挙げられます。特に書き込み回数に制限がある古いフラッシュメモリなどでは、余計な書き込み(ログ保存)を減らせるため、寿命を延ばす効果があります。
一方でデメリットは、コンピュータが突然の停電やフリーズで強制終了した際に、ファイルが壊れやすいことです。再起動時に「fsck(エフエスシーケー)」というファイルシステムのチェックコマンドを走らせる必要があり、大容量のディスクだとこの確認作業に非常に長い時間がかかってしまいます。
4. ストレージ情報の確認方法とコマンド操作
実際に自分のLinux環境で、どのようなファイルシステムが使われているかを確認してみましょう。初心者でも安全に使えるdfコマンド(読み方はディーエフ・コマンド)を使います。
このコマンドは、ディスクの空き容量や種類を表示するために使用されます。オプションの-Tを付けることで、ファイルシステムのタイプを確認できます。
df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 20145664 4521320 14578132 24% /
tmpfs tmpfs 502444 0 502444 0% /dev/shm
上記の実行結果を見ると、現在は「ext4」が使われていることが分かります。もし古いシステムや特定のパーティションであれば、ここに「ext2」と表示されます。このように、Linuxでは複数のファイルシステムを場所によって使い分けることが可能です。
5. ファイルシステムの作成と初期化の手順
新しいパーティションをext2形式で利用可能にするには、フォーマット(読み方はフォーマット)という作業が必要です。Linuxではmkfsコマンド(読み方はマークエフエス・コマンド)を使います。
この操作はシステムに変更を加えるため、管理者権限(ルートユーザー)で行う必要があります。ここでは仮想的なデバイス名 /dev/sdb1 を例に解説します。
mkfs -t ext2 /dev/sdb1
mke2fs 1.46.2 (28-Feb-2021)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
コマンドを実行すると、指定したデバイスがext2形式で初期化されます。内部では「iノード(アイ・ノード)」と呼ばれる管理領域などが作成され、ファイルを保存する準備が整います。iノードは、ファイルの名前以外の属性情報(サイズや作成日など)を記録する重要なデータ構造です。
6. ファイルシステムの整合性をチェックする仕組み
先ほど「ext2は壊れやすい」と説明しましたが、万が一異常が発生したときはfsck(読み方はファイルシステム・チェック)というコマンドで修復を試みます。
これは、ファイルシステムの一貫性を検査し、不整合(矛盾)が見つかった場合にそれを修正するツールです。以下の例では、チェックを行う様子を再現しています。
fsck.ext2 -f /dev/sdb1
e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 11/65536 files (0.0% non-contiguous), 12654/262144 blocks
ext2はジャーナリング(ログ)がないため、ディスクの隅から隅までを順番にスキャンしていきます。ディスク容量が数テラバイト(TB)もある現代では、この作業が数時間終わらないこともあります。これが、ext2から新しい規格へ移行が進んだ最大の理由です。
7. ext2とext3、ext4の違いを比較しよう
Linuxを学ぶ上で、ext2の後継である「ext3(イーエックスティー・スリー)」と「ext4(イーエックスティー・フォー)」の違いを知っておくと、より理解が深まります。これらは進化の過程で、互換性を保ちながら機能が追加されてきました。
| 名称 | 登場時期 | ジャーナリング | 主な特徴 |
|---|---|---|---|
| ext2 | 1993年 | なし | 軽量・高速だが、強制終了に弱い。 |
| ext3 | 2001年 | あり | ext2にログ機能を追加。修復が早くなった。 |
| ext4 | 2008年 | あり | 大容量対応。現在のLinux標準システム。 |
現在、特別な理由がない限りはext4が使われますが、ext2の基本設計はこれらのベースになっています。土台となる技術を学ぶことは、応用技術を理解する近道です。
8. 初心者が知っておきたいマウントの概念
Linuxでは、ファイルシステムを作成しただけでは使えません。作成した領域を、特定のディレクトリ(フォルダ)に結びつける「マウント(読み方はマウント)」という操作が必要です。
例えば、/mnt/data という場所にext2のディスクを繋いで、読み書きできるようにしてみましょう。
sudo mount -t ext2 /dev/sdb1 /mnt/data
ls -l /mnt/data
total 16
drwx------ 2 root root 16384 Apr 4 15:00 lost+found
マウントが成功すると、lost+found(読み方はロスト・アンド・ファウンド)という特別なディレクトリが表示されます。これは、ファイルが壊れた際に救出したデータを一時的に置く場所で、ext2系のファイルシステムには必ず存在するディレクトリです。
9. ext2が現代でも使われるケースとは?
「古いシステムならもう使わなくていいのでは?」と思うかもしれませんが、ext2には現代でも使い道があります。それは、容量が極端に少ない組み込み機器(読み方はクミコミキキ)や、SDカードなどのリムーバブルメディアです。
ジャーナリング機能は便利ですが、頻繁にメタデータ(データのデータ)を書き換えるため、フラッシュメモリの劣化を早める側面があります。また、メモリ消費量も少ないため、リソースが限られた環境では、あえてext2を選択することがあります。
また、古いLinuxマシンのレスキュー作業や、ブートローダー(OSを起動するプログラム)が配置される「/boot」パーティションで、シンプルさを優先して採用されることもあります。枯れた技術だからこその「安定性」と「予測のしやすさ」がext2の武器なのです。
10. ファイルシステム管理の学習を深めるために
Linuxのファイルシステム管理は、非常に奥が深い分野です。今回はext2を中心に解説しましたが、他にもxfs(エックスエフエス)やbtrfs(バターエフエス)など、現代のサーバー環境で活躍するシステムはたくさんあります。
まずは、自分の使っているパソコンのディスク構成を覗いてみることから始めてみましょう。以下のコマンドで、接続されているすべてのディスクの状態をリスト表示できます。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
└─sda1 ext4 550e8400-e29b-41d4-a716-446655440000 /
sdb
└─sdb1 ext2 a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data
コマンドを通じてシステムの中身を見る癖をつけると、OSがどのようにストレージ(記憶装置)を扱っているのかが直感的に理解できるようになります。エラーメッセージが出たときも、ファイルシステムの知識があれば、落ち着いて対処できるようになるはずです。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
Linuxの歴史を支えてきたext2(セカンド・エクステンデッド・ファイルシステム)について、その定義から特徴、現代における役割まで詳しく解説してきました。ext2は、1990年代初頭にMinixファイルシステムの制約を打破するために誕生し、長らくLinuxの標準的なストレージ管理システムとして君臨しました。その最大の特徴は、「ジャーナリング機能を持たない」という極めてシンプルな構造にあります。このシンプルさゆえに、データの読み書きにおけるオーバーヘッドが少なく、リソースが限られた環境や、書き込み回数に制限があるフラッシュメモリメディアにおいては、現在でも有効な選択肢となります。
ファイルシステム管理の重要キーワード
Linuxシステムを管理する上で、以下のキーワードを理解しておくことは非常に重要です。これらはext2だけでなく、現代のext4や他のファイルシステムでも共通の概念として登場します。
- iノード(inode): ファイル名以外の属性情報(所有者、権限、サイズ、ディスク上の位置)を管理するデータ構造。
- スーパーブロック: ファイルシステム全体のサイズ、空きブロック数、マウント回数などの基本情報を保持する領域。
- マウント: ストレージデバイスをLinuxのディレクトリツリーの特定の場所に接続し、アクセス可能にすること。
- fsck: 不整合が発生したファイルシステムをチェックし、修復を試みるためのコマンド。
ext2から現代のext4への進化
ストレージ技術の進歩に伴い、ファイルシステムも進化を遂げました。ext2の軽量さを引き継ぎつつ、データの安全性を高めるために「ジャーナリング(操作ログの記録)」を追加したのがext3です。そして、テラバイト単位の大容量ディスクや数億個のファイルを効率的に扱うために開発されたのが、現在の標準であるext4です。私たちが普段意識せずに高速で安全なデータの保存ができているのは、ext2という強固な土台があったからこそと言えるでしょう。
実務で役立つ!ファイルシステム操作の応用コード例
エンジニアとしてLinuxを扱う際、特定の用途に合わせてファイルシステムを作成したり、詳細情報を確認したりする機会があります。ここでは、ext2形式でフォーマットしたデバイスの「詳細な管理情報」を確認するコマンドを紹介します。
# tune2fsコマンドを使用して、ファイルシステムの詳細パラメータを表示する
sudo tune2fs -l /dev/sdb1
tune2fs 1.46.2 (28-Feb-2021)
Filesystem volume name: <none>
Last mounted on: /mnt/data
Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 65536
Block count: 262144
Reserved block count: 13107
Free blocks: 249490
Free inodes: 65525
First block: 0
Block size: 4096
Reserved GDT blocks: 63
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
この tune2fs コマンド(チューン・イー・ツー・エフエス)の結果を見ることで、ブロックサイズが4096バイトであることや、管理領域であるiノードの総数などが把握できます。インフラ構築やトラブルシューティングの現場では、こうした情報の読み解きが解決の糸口になることが多々あります。
学習のステップアップに向けて
Linuxのファイルシステムを学ぶことは、コンピュータが「記憶」をどのように整理しているかを理解することと同義です。ext2のシンプルな構造を学んだ皆さんは、次に「なぜ今の主流はext4なのか」「クラウド環境でよく使われるXFSとは何が違うのか」といった疑問を持つようになるでしょう。その探究心こそが、エンジニアとしての成長の源泉です。まずは手元の環境で df -h や lsblk コマンドを実行し、身近なストレージの仕組みを観察することから一歩を踏み出してみましょう。
生徒
「先生、ext2について詳しく教えていただきありがとうございました!ジャーナリングがない分、余計な書き込みが少なくて軽いというのは、意外なメリットですね。昔の技術だからといって、完全に使われなくなったわけじゃないんだと分かりました。」
先生
「その通りです。技術には常に『適材適所』があります。最新のものが常に最高というわけではなく、目的(リソースの節約や書き込み寿命の延長など)によっては、ext2のような枯れた技術が選ばれることもあるんですよ。古いものの仕組みを知ることで、新しい技術がなぜ必要なのかもより深く理解できます。」
生徒
「たしかに!『なぜext4にはログ機能が必要だったのか』という理由も、ext2の『強制終了後の修復に時間がかかる』という弱点を知ったからこそ納得できました。コマンドで lost+found ディレクトリを見たときも、あ、これが救出場所なんだ!と感動しました。」
先生
「いい気づきですね。その lost+found は、ファイルシステムの整合性が崩れたときに fsck が見つけた『迷子』のデータを格納する場所です。Linuxを触っていると必ず出会うディレクトリですから、意味を知っていると安心でしょう。次は実際に、仮想環境などでext2からext3へ変換する操作などにも挑戦してみると面白いですよ。」
生徒
「はい!自分でパーティションを作って、フォーマットしたりマウントしたりする練習をしてみます。ストレージ管理ができるようになると、いよいよLinuxを自由に操っている感じがしてワクワクしますね!」
先生
「その調子で頑張りましょう。コマンド一つでデータを消去してしまう可能性もある操作ですから、バックアップを忘れずに、慎重かつ大胆に学習を進めていってくださいね。」