Journaled File System

JFS (Journaled File System) について



JFS(Journaled File System)は、IBMが開発した64ビットジャーナリングファイルシステムです。当初はIBMの商用UNIXであるAIX v3.1に実装されました。その後、OS/2、eComStationにも採用され、オープンソース化を経てLinuxにも移植されました。HP-UXにもJFSという名称のファイルシステムが存在しますが、これはVxFSのOEM提供によるものです。

AIXのJFSには、JFS(JFS1)とJFS2の2つの世代があります。他のOSでは、第2世代のJFSが実装され、単にJFSと呼ばれています。AIXにおけるJFSは、特にJFS1を指すことがあります。

歴史



1990年2月、IBMAIX 3.1向けにJFSをリリースしました。これが現在のJFS1 on AIXです。JFSはその後10年間、AIXのメインファイルシステムとして広く利用されました。JFS1はAIXのメモリ管理と密接に統合されており、これはプロプライエタリOSにおける典型的な設計です。

1995年、マルチプロセッサのサポート、性能向上、および移植性を高めるための改良が開始されました。1999年4月には、新しいJFSがOS/2 Warp Server for e-businessに、2000年10月にはOS/2 Warpクライアント向けにリリースされました。

1999年12月、OS/2版JFSのソースコードがオープンソースコミュニティに提供され、Linuxへの移植が始まりました。2001年6月には、JFS for Linuxの最初の安定版がリリースされました。この並行して、1997年には、JFS開発チームの一部がAIX OS開発チームに戻り、新しいJFS(JFS2)をAIXに移植する作業を開始しました。2001年5月には、改良されたJFS(JFS2)がAIX 5Lで利用可能となりました。

2008年初頭には、JFSのメンテナンスに対するIBMの関心が薄れているという噂が流れましたが、IBMLinuxテクノロジーセンターのメンバーでありJFSコアチームのメンバーでもあるDave Kleikamp氏は、JFSのLinuxカーネル変更への追従、バグ修正に尽力しており、いくつかのディストリビューションはさらなるコミットメントを期待していると述べました。

特徴



JFSは、以下の特徴を持つファイルシステムです。

ジャーナリング


JFSは初期からジャーナリングファイルシステムとして実装されています。ジャーナルデータの最大サイズは128MiBです。JFSのジャーナリングはinodeの一部をジャーナルする点でXFSに似ています。ただし、JFSはメタデータのみを保護するため、クラッシュ後のユーザーデータの整合性は保証されません。

B+木


ディレクトリ参照の高速化のためにB+木を使用しています。ディレクトリのエントリは、inode内に8個まで格納された後、B+木に移動されます。エクステントもB+木でインデックス化されています。

動的inode割り当て


JFSはinodeを保存するディスクスペースとinodeの数を静的に割り当てるのではなく、必要に応じて動的に割り当てます。各inodeは512バイトの大きさで、16KBのエクステントに32個のinodeを割り当てることができます。

エクステント


JFSはディスク割り当てにエクステントを使用します。エクステントは可変長のブロック管理により、連続したブロック割り当てを少ないメタデータで管理できます。エクステントは複数のアロケーショングループに跨って割り当てられる場合があり、エクステントの配置検索性能向上のため、B+木でインデックス化されます。

圧縮


AIXのJFS1のみがLZ77による圧縮をサポートしています。ただし、CPU使用率の増加や断片化の増加を理由に、シングルユーザーでの使用やオフラインバックアップ以外での使用は推奨されていません。

コンカレントI/O (CIO)


コンカレントI/Oは、ファイルの書き込みロックを緩和するオプションです。通常のJFSのファイルロックは、読み込みは共有ロック、書き込みは排他ロックであるため、ファイルレベルの一貫性は保たれますが、書き込みは直列化されます。CIOオプションを使用することで、アプリケーションレベルで一貫性を管理するRDBなどのアプリケーションにおいて、ロックによるオーバーヘッドを削減できます。

アロケーショングループ (AG)


アロケーショングループは、複数のディスク領域からなる集合体であるアグリゲートを分割する単位です。JFSはAGに対してリソースアロケーションポリシーを適用し、I/O性能の向上に利用します。リソースアロケーションポリシーには、ディスクブロックを分割して、ファイルのディスクinodeを同じAGに所属させようとするものと、関連のないデータを同じAGに割り当てるものがあります。ファイルが開かれているとき、JFSはそのファイルが所属するAGをロックし、ファイルの拡大のみを許可します。これにより、ファイルのフラグメンテーションを抑制します。

JFS スーパーブロック


スーパーブロックはファイルシステム全体に関する情報を保持し、以下のフィールドが含まれています。

ファイルシステムのサイズ
ファイルシステムに含まれるブロック数
ファイルシステムの状態
アロケーショングループのサイズ
* ファイルシステムのブロックサイズ

Linuxでの利用



カーネルバージョン2.4.18pre9-ac4以降のカーネルモジュールと、ユーザーランドのファイルシステムメンテナンスツール(JFSutils)によってサポートされ、主要なLinuxディストリビューションで利用可能です。

ベンチマークでは、様々な負荷や使用パターン、ファイルの大小に関わらず、一貫して安定した性能と信頼性を示し、高負荷下でもCPU使用率は低く、システムリソースを有効活用できるとされています。

JFS for Linux プロジェクトは、JFSコアチームによってメンテナンスされています。

脚注



JFS for Linux project website

JFS1 File System Layout, IBM.

JFS2 File System Layout, IBM.

JFSRec: 損傷したJFSファイルシステムからファイルとディレクトリを読み取り専用で抽出するコンソールプログラム


もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。