GNU/Linux >> Linux の 問題 >  >> Linux

基本的な Linux ファイル システムのチュートリアル – ext2、ext3、ext4、JFS、および XFS

オリジナルの Linux システムは、Unix ファイル システムの機能を模倣した単純なファイル システムを使用していました。このチュートリアルでは、Linux で使用される基本的なファイル システムについて説明します。

ext ファイル システム

Linux オペレーティング システムで導入された元のファイル システムは、拡張ファイル システム (または略して ext) と呼ばれます。仮想ディレクトリを使用して物理デバイスを処理し、物理デバイス上の固定長ブロックにデータを格納する、Linux 用の基本的な Unix ライクなファイル システムを提供します。

ext ファイル システムは、inode と呼ばれるシステムを使用して、仮想ディレクトリに格納されているファイルに関する情報を追跡します。 inode システムは、ファイル情報を格納するために、inode テーブルと呼ばれる個別のテーブルを各物理デバイスに作成します。仮想ディレクトリに格納された各ファイルには、inode テーブルにエントリがあります。名前の拡張部分は、各ファイルで追跡する追加データに由来します。これは以下で構成されます:

  • ファイル名
  • ファイルサイズ
  • ファイルの所有者
  • ファイルが属するグループ
  • ファイルへのアクセス許可
  • ファイルからのデータを含む各ディスク ブロックへのポインタ

Linux は、データ ファイルが作成されるときにファイル システムによって割り当てられる一意の番号 (inode 番号と呼ばれる) を使用して、inode テーブル内の各 inode を参照します。ファイル システムは、完全なファイル名とパスを使用するのではなく、inode 番号を使用してファイルを識別します。

ext2 ファイル システム

元の ext ファイル システムには、ファイルのサイズを 2GB に制限するなど、かなりの制限がありました。 Linux が最初に導入されてから間もなく、ext ファイル システムがアップグレードされ、ext2 と呼ばれる 2 番目の拡張ファイル システムが作成されました。ご想像のとおり、ext2 ファイル システムは、ext ファイル システムの基本的な機能を拡張したものですが、同じ構造を維持しています。 ext2 ファイル システムは、inode テーブル形式を拡張して、システム上の各ファイルに関する追加情報を追跡します。

ext2 inode テーブルは、ファイルの作成時間、変更時間、および最終アクセス時間の値を追加して、システム管理者がシステム上のファイル アクセスを追跡するのに役立ちます。また、ext2 ファイル システムでは、最大ファイル サイズが 2 TB に増加し (ext2 の新しいバージョンでは 32 TB に増加)、データベース サーバーで一般的に見られる大きなファイルに対応できるようになります。

ext2 ファイル システムでは、inode テーブルの拡張に加えて、ファイルをデータ ブロックに格納する方法も変更されました。 ext ファイル システムの一般的な問題は、ファイルが物理デバイスに書き込まれるときに、データを格納するために使用されるブロックがデバイス全体に散在する傾向があることでした (フラグメンテーション と呼ばれます)。データ ブロックの断片化により、ストレージ デバイスを検索して特定のファイルのすべてのブロックにアクセスするのに時間がかかるため、ファイル システムのパフォーマンスが低下する可能性があります。

ext2 ファイル システムは、ファイルを保存するときにディスク ブロックをグループに割り当てることにより、断片化を減らすのに役立ちます。ファイルのデータ ブロックをグループ化することにより、ファイル システムは、ファイルを読み取るためにデータ ブロックを物理デバイス全体で検索する必要がなくなります。 ext2 ファイル システムは、Linux ディストリビューションで長年使用されているデフォルトのファイル システムでしたが、これにも限界がありました。 inode テーブルは、ファイル システムがファイルに関する追加情報を追跡できるようにする便利な機能ですが、システムにとって致命的な問題を引き起こす可能性があります。ファイル システムがファイルを保存または更新するたびに、新しい情報で i ノード テーブルを変更する必要があります。問題は、これが常に流動的な行動ではないことです.

格納されているファイルと更新されている inode テーブルの間でコンピュータ システムに何かが発生した場合、2 つのファイルは同期しなくなります。 ext2 ファイル システムは、システム クラッシュや停電により破損しやすいことで有名です。ファイル データが物理デバイスに正常に保存されていても、inode テーブル エントリが完成していなければ、ext2 ファイル システムはファイルの存在さえ認識できません。開発者が Linux ファイル システムの別の道を模索するのにそう時間はかかりませんでした。

ジャーナリング ファイル システム

ジャーナリング ファイル システムは、Linux システムに新しいレベルの安全性を提供します。ストレージ デバイスに直接データを書き込んでから inode テーブルを更新する代わりに、ジャーナリング ファイル システムは、最初にファイルの変更を一時ファイル (ジャーナルと呼ばれる) に書き込みます。データがストレージ デバイスと inode テーブルに正常に書き込まれた後、ジャーナル エントリは削除されます。

データがストレージ デバイスに書き込まれる前にシステムがクラッシュしたり、停電が発生したりした場合、ジャーナリング ファイル システムはジャーナル ファイルを読み取り、コミットされていない残りのデータを処理します。 Linux で一般的に使用されるジャーナリングには 3 つの異なる方法があり、それぞれ保護レベルが異なります。これらは下の表に示されています。

ジャーナリング ファイル システム メソッド:

方法 説明
データ モード inode データとファイル データの両方がジャーナル処理されます。データを失うリスクは低いが、パフォーマンスは低い。
オーダーモード inode データのみがジャーナルに書き込まれますが、ファイル データが正常に書き込まれるまで削除されません。パフォーマンスと安全性のバランスが取れています。
書き戻しモード ジャーナルに書き込まれるのは inode データのみで、いつファイル データが書き込まれるかは制御されません。データを失うリスクが高くなりますが、ジャーナリングを使用しないよりはましです。

制限

データ モードのジャーナリング方法は、データを保護する上で最も安全ですが、最も低速でもあります。ストレージ デバイスに書き込まれるすべてのデータは、ジャーナルに 1 回、次に実際のストレージ デバイスに 2 回書き込まれる必要があります。これにより、特に大量のデータ書き込みを行うシステムの場合、パフォーマンスが低下する可能性があります。何年にもわたって、いくつかの異なるジャーナリング ファイル システムが Linux に登場してきました。次のセクションでは、利用可能な一般的な Linux ジャーナリング ファイル システムについて説明します。

拡張 Linux ジャーナリング ファイルシステム

Linux プロジェクトの一部として ext および ext2 ファイル システムを開発した同じグループが、ファイル システムのジャーナリング バージョンも作成しました。これらのジャーナリング ファイル システムは ext2 ファイル システムと互換性があり、相互に簡単に変換できます。現在、ext2 ファイル システムに基づく 2 つの個別のジャーナリング ファイル システムがあります。

ext3 ファイル システム

ext3 ファイル システムは 2001 年に Linux カーネルに追加され、最近までほぼすべての Linux ディストリビューションで使用されるデフォルトのファイル システムでした。 ext2 ファイルシステムと同じ inode テーブル構造を使用しますが、各ストレージ デバイスにジャーナル ファイルを追加して、ストレージ デバイスに書き込まれたデータをジャーナルします。

デフォルトでは、ext3 ファイル システムは順序付きモードのジャーナリング方法を使用し、inode 情報をジャーナル ファイルに書き込むだけで、データ ブロックがストレージ デバイスに正常に書き込まれるまで削除しません。ファイル システムの作成時に、簡単なコマンド ライン オプションを使用して、ext3 ファイル システムで使用されるジャーナリング方法をデータ モードまたはライトバック モードに変更できます。

ext3 ファイル システムは、基本的なジャーナリングを Linux ファイル システムに追加しましたが、まだ不足しているものもいくつかありました。たとえば、ext3 ファイル システムは、誤ってファイルを削除した場合の回復機能を提供せず、利用可能な組み込みのデータ圧縮はありません (ただし、この機能を提供する個別にインストールできるパッチがあります)。ファイルの暗号化をサポートしていません。これらの理由から、Linux プロジェクトの開発者は、ext3 ファイル システムの改善に引き続き取り組むことを選択しています。

ext4 ファイル システム

ext3 ファイル システムを拡張した結果、(おそらくご想像のとおり) ext4 ファイル システムになりました。 ext4 ファイル システムは、2008 年に Linux カーネルで公式にサポートされ、現在、Fedora や Ubuntu などの最も一般的な Linux ディストリビューションで使用されるデフォルトのファイル システムです。

さらに、圧縮と暗号化をサポートするために、ext4 ファイル システムはエクステントと呼ばれる機能もサポートしています。エクステントはストレージ デバイスの領域をブロック単位で割り当て、開始ブロックの場所のみを inode テーブルに格納します。これにより、ファイルからのデータを格納するために使用されるすべてのデータ ブロックを一覧表示する必要がなくなるため、inode テーブルのスペースを節約できます。

ext4 ファイル システムには、ブロックの事前割り当ても組み込まれています。サイズが大きくなることがわかっているファイル用にストレージ デバイスにスペースを確保したい場合、ext4 ファイル システムを使用すると、物理的に存在するブロックだけでなく、予想されるすべてのブロックをファイルに割り当てることができます。 ext4 ファイル システムは、予約済みのデータ ブロックをゼロで埋め、それらを他のファイルに割り当てないようにします。

ライザー ファイル システム

2001 年、Hans Reiser は、ReiserFS と呼ばれる、Linux 用の最初のジャーナリング ファイル システムを作成しました。 ReiserFS ファイル システムは、inode テーブル データのみをジャーナル ファイルに書き込む、ライトバック ジャーナリング モードのみをサポートします。 inode テーブル データのみをジャーナルに書き込むため、ReiserFS ファイル システムは、Linux で最速のジャーナリング ファイル システムの 1 つです。

ReiserFS ファイル システムに組み込まれている 2 つの興味深い機能は、既存のファイル システムがまだアクティブな状態でサイズを変更できることと、あるファイルのデータを別のファイルのデータ ブロック内の空きスペースに詰め込むテールパッキングと呼ばれる手法を使用することです。アクティブなファイル システムのサイズ変更機能は、より多くのデータを収容するために既に作成されたファイル システムを拡張する必要がある場合に最適です。

ジャーナリングされたファイル システム (JFS)

おそらく最も古いジャーナリング ファイル システムの 1 つである Journaled File System (JFS) は、1990 年に IBM によって AIX フレーバーの Unix 用に開発されました。ただし、Linux 環境に移植されたのは 2 番目のバージョンまでではありませんでした。

注意 – JFS ファイル システムの 2 番目のバージョンの正式な IBM 名は JFS2 ですが、ほとんどの Linux システムでは単に JFS と呼ばれています。

JFS ファイル システムは順序付けられたジャーナリング方式を使用し、inode テーブル データのみをジャーナルに格納しますが、実際のファイル データがストレージ デバイスに書き込まれるまで削除しません。この方法は、ReiserFS の速度とデータ モード ジャーナリング方法の完全性との間の妥協点です。

JFS ファイル システムは、エクステント ベースのファイル割り当てを使用して、ストレージ デバイスに書き込まれるファイルごとにブロックのグループを割り当てます。この方法では、ストレージ デバイスの断片化が少なくなります。 IBM Linux オファリング以外では、JFS ファイル システムは一般的に使用されていませんが、Linux の旅で JFS ファイル システムに出くわす可能性があります。

xfs ファイル システム

XFS ジャーナリング ファイル システムは、もともと商用 Unix システム用に作成され、Linux の世界に進出したもう 1 つのファイル システムです。 Silicon Graphics Incorporated (SGI) は、1994 年に自社の商用 IRIX Unix システム用に最初に XFS を作成しました。 2002 年に一般的な使用のために Linux 環境にリリースされました。

XFS ファイル システムはジャーナリングのライトバック モードを使用します。これは高いパフォーマンスを提供しますが、実際のデータはジャーナル ファイルに保存されないため、ある程度のリスクが生じます。 XFS ファイル システムでは、ReiserFS ファイル システムと同様に、ファイル システムのオンライン サイズ変更も可能ですが、XFS ファイル システムは拡張のみ可能で、縮小はできません。


Linux
  1. LinuxでExt2/Ext3ファイルシステムをExt4に移行する方法

  2. ファイル システムの ext4 と ext3 の選択でスタックする

  3. Windows で ext2/ext3/ext4/btrfs/jfs/xfs ファイルシステムを表示するツールはありますか?

  1. EXT4 / EXT3/EXT2およびスワップでLinuxパーティションラベル名を変更する方法

  2. Linuxインタビューの質問と回答のトップ25

  3. パーティションが ext2、ext3、または ext4 であるかどうかはどうすればわかりますか?

  1. Ext2、Ext3、Ext4Linuxファイルシステムの機能と違い

  2. Linux ファイル システム:Ext2 vs Ext3 vs Ext4

  3. Linux ファイル システムの種類 (Ext2 または Ext3 または Ext4) を識別する 5 つの方法