| 開発者 | IBM等 |
|---|---|
| フルネーム | IBM ジャーナル ファイル システム |
| 紹介された | 1990 年と 1999 年、AIX 3.1 の JFS1 とOS/2 4.5の JFS |
| パーティションID | 0x35 (マスタービット) |
| 構造 | |
| ディレクトリの内容 | B+ツリー |
| ファイルの割り当て | ビットマップ/範囲 |
| 制限 | |
| 最大ボリュームサイズ | 32 × 2 50バイト(32 PiB ) |
| 最大ファイルサイズ | 4 × 2 50バイト(4 PiB) |
| 最大ファイル数 | 制限は定義されていません |
| ファイル名の最大長 | 255 バイト |
| ファイル名に使用できる 文字 | NUL以外のUnicode |
| 特徴 | |
| 記録された日付 | 変更 (mtime)、属性変更 (ctime)、アクセス (atime) |
| 日付解決 | 1ナノ秒 |
| フォーク | はい |
| ファイルシステムの 権限 | Unix パーミッション、ACL |
| 透過的な 圧縮 | AIX上のJFS1のみ |
| 透過的な 暗号化 | いいえ(ブロックデバイスレベルで提供) |
| データ重複排除 | いいえ |
| 他の | |
| サポートされている オペレーティングシステム | AIX、OS/2、Linux、eComStation、ArcaOS |
Journaled File System ( JFS ) は、IBMが作成した64 ビットの ジャーナリング ファイル システムです。AIX 、OS/2、eComStation、ArcaOS、Linux の各オペレーティング システム用のバージョンがあります。Linux は、GNU General Public License (GPL)の条件に従ってフリー ソフトウェアとして利用できます。HP -UXには、JFS という別のファイル システムがありますが、これは実際にはVeritas SoftwareのVxFSの OEM バージョンです。
AIXオペレーティングシステムには、JFS(JFS1)とJFS2と呼ばれる2つの世代のJFSが存在します。[1]
IBMのJFSはもともと32ビットシステム用に設計されました。JFS2は64ビットシステム用に設計されました。[2]
OS/2やLinuxなどの他のオペレーティングシステムでは、第2世代のみが存在し、単にJFSと呼ばれています。[3]これは、実際にはJFS1を指すAIXのJFSと混同しないでください。
歴史
IBM は、1990 年 2 月の AIX バージョン 3.1 の最初のリリースで JFS を導入しました。現在AIX 上の JFS1と呼ばれるこのファイル システムは、その後 10 年間 AIX の主要なファイル システムであり、何千、何百万もの顧客の AIX システムにインストールされました。歴史的に、JFS1 ファイル システムは AIX のメモリ マネージャーと非常に密接に結びついており、[1]これは 1 つのオペレーティング システムのみをサポートするファイル システムの典型的な設計です。JFS は、ジャーナリングをサポートする最初のファイル システムの 1 つでした。
1995年、ファイルシステムの拡張性を高め、複数のプロセッサを搭載したマシンをサポートする作業が開始されました。もう1つの目標は、複数のオペレーティングシステムで実行できる、より移植性の高いファイルシステムにすることでした。数年にわたる設計、コーディング、テストの後、新しいJFSは1999年4月にOS/2 Warp Server for eBusinessに最初に搭載され、その後2000年10月にOS/2 Warp Clientに搭載されました。1999年12月、オリジナルのOS/2 JFSソースのスナップショットがオープンソースコミュニティに許可され、JFSをLinuxに移植する作業が開始されました。JFS for Linuxの最初の安定したリリースは2001年6月に登場しました。 [3] JFS for Linuxプロジェクトは、 JFS Core Teamと呼ばれる小さな貢献者グループによって維持されています。[4]このソースのリリースは、オープンソースのJFSをOS/2に再移植するための基礎を形成することにも役立ちました。
この取り組みと並行して、JFS 開発チームの一部は 1997 年に AIX オペレーティング システム開発グループに戻り、この新しい JFS ソース ベースを AIX オペレーティング システムに移行し始めました。2001 年 5 月には、2 番目のジャーナル ファイル システムである拡張ジャーナル ファイル システム (JFS2)が AIX 5L で利用可能になりました。[1] [3]
2008年初頭、IBMはもはやJFSのメンテナンスに興味がなく、そのため実稼働環境では使用すべきではないという憶測がありました。[5]しかし、IBM LinuxテクノロジーセンターおよびJFSコアチームのメンバーであるDave Kleikamp氏[4]は、彼らは依然としてLinuxカーネルの変更を追跡し、潜在的なソフトウェアバグを修正しようとしていると説明しました。彼はさらに、特定のディストリビューションは彼らにより大きなリソースのコミットメントを期待し、ファイルシステムをサポートしないことを選択していると付け加えました。[6]
2012年に、ソリッドステートドライブ用のTRIMコマンドのサポートがJFSに追加されました。[7]
特徴
JFSは以下の機能をサポートしています。[8] [9]
ジャーナル
JFS はジャーナリングファイルシステムです。ext3 ファイルシステムのようにジャーナリングをアドオン機能として追加するのではなく、最初から実装されています。ジャーナルは最大 128 MB です。JFS はメタデータのみをジャーナルします。つまり、メタデータは一貫性を保ちますが、クラッシュや電源喪失後にユーザーファイルが破損する可能性があります。JFS のジャーナリングは、inodeの一部のみをジャーナルするという点でXFSに似ています。[10]
B+ツリー
JFS は、ディレクトリ内の検索を高速化するためにB+ ツリーを使用します。JFS は、エントリを B+ ツリーに移動する前に、ディレクトリのinodeにディレクトリの 8 つのエントリを保存できます。また、JFS は B+ ツリー内のエクステントをインデックス化します。
動的inode割り当て
JFS は必要に応じてディスクinodeのスペースを動的に割り当てます。各 inode は 512 バイトです。16 kB のエクステントに 32 個の inode が割り当てられます。
範囲
JFS は、ファイルをエクステントとして割り当てます。エクステントは、可変長の集約ブロックのシーケンスです。エクステントは、複数の割り当てグループに配置される場合があります。この問題を解決するために、エクステントは B+ ツリーでインデックス付けされ、エクステントの場所を特定する際のパフォーマンスが向上します。
圧縮
圧縮はAIX 上の JFS1 でのみサポートされており、 LZ アルゴリズムのバリエーションを使用します。CPU使用率が高くなり、空き領域の断片化が増加するため、単一ユーザーワークステーションまたはオフラインバックアップ領域以外での圧縮の使用は推奨されません。
同時入力/出力 (CIO)
JFS は通常、ファイルに対して読み取り共有、書き込み排他ロックを適用します。これにより、データの不整合が回避されますが、ファイル レベルでの書き込みのシリアル化が強制されます。CIO オプションはこのロックを無効にします。リレーショナル データベースなどの、データの一貫性を自身で維持するアプリケーションでは、このオプションを使用して、ファイル システムのオーバーヘッドを大幅に削減できます。[11]
割り当てグループ
JFS は割り当てグループを使用します。割り当てグループは、集約スペースをチャンクに分割します。これにより、JFS はリソース割り当てポリシーを使用して優れた I/O パフォーマンスを実現できます。最初のポリシーは、ディスクの適切な局所性を実現するために、同じ AG 内の関連データのディスク ブロックとディスク inode をクラスター化しようとすることです。2 番目のポリシーは、空き領域の断片化を最小限に抑えるために、ファイル システム全体に無関係なデータを分散することです。開いているファイルがある場合、JFS はファイルが存在する AG をロックし、開いているファイルのみを拡張できるようにします。これにより、開いているファイルのみが AG に書き込むことができるため、断片化が軽減されます。
スーパーブロック
スーパーブロックはファイル システム全体に関する情報を保持し、次のフィールドが含まれます。
- ファイルシステムのサイズ
- ファイルシステム内のデータブロックの数
- ファイルシステムの状態を示すフラグ
- 割り当てグループのサイズ
- ファイルシステムのブロックサイズ
Linuxの場合
Linux オペレーティング システムでは、JFS はカーネルモジュール (カーネル バージョン2.4.18pre9-ac4以降) と、JFSutilsという名前でパッケージ化された補完的なユーザー空間ユーティリティでサポートされています。ほとんどのLinux ディストリビューションは、ライブ CDなどのスペース制限により JFS が明示的に削除されない限り、JFS をサポートしています。[引用が必要]
Linuxで利用可能なファイルシステムのベンチマークによると、JFSは高速で信頼性が高く、さまざまな種類の負荷の下で一貫して優れたパフォーマンスを発揮します。[12]
LinuxでJFSが実際に使用されることはまれですが、JFSはLinuxでニッチな役割を果たしています。他のほとんどのLinuxファイルシステムとは異なり、大文字と小文字を区別しないマウントオプションを提供しています。[13]
JFSには、ジャーナル書き込みの実装など、潜在的な問題もあります。ジャーナル書き込みは別のトリガーが発生するまで延期される可能性があり、そのトリガーは無期限に延期される可能性があり、理論上は無限の時間枠にわたってデータ損失を引き起こす可能性があります。[14]
参照
- ジャーナリングファイルシステム
- ファイルシステムのリスト
- ファイルシステムの比較
- fsck – ファイルシステムチェックユーティリティ
参考文献
- ^ abc 「JFS に関するミニ FAQ」。JFS for Linux プロジェクト。
- ^ 「IBM JFS および JFS2」。IBM。
- ^ abc 「JFS、ReiserFS、XFS の開発者へのインタビュー」。
- ^ ab 「JFS for Linux」。JFS.SourceForge.net 。2020年8月26日閲覧。
- ^ 「Re: どれを使うべきか: ext3、JFS、XFS、ReiserFS?」。2016年3月3日時点のオリジナルよりアーカイブ。2008年3月31日閲覧。
- ^ SourceForge.net: jfs-discussion
- ^ 「JFS ファイルシステムの TRIM サポート」。
- ^ 「JFS の概要」。Steve Best、IBM。2008 年 1 月 29 日時点のオリジナルよりアーカイブ。2008 年1 月 9 日閲覧。
- ^ 「JFS レイアウト」(PDF)。Steve Best、IBM。2008年5 月 1 日閲覧。
- ^ David Kleikamp. 「JFS journal」. OSDIR. 2016年3月3日時点のオリジナルよりアーカイブ。2008年7月7日閲覧。
- ^ 「AIX 同時 I/O によるデータベース パフォーマンスの向上 - ホワイト ペーパー」(PDF) . IBM.com . IBM .
- ^ 「Linux 3.17 カーネル上の SSD を使用した 9 ウェイ ファイル システムの比較」。Phoronix.com。2020年7月 7 日閲覧。
- ^ 「jfs_mkfs: JFSフォーマットのパーティションを作成する - Linux Man Pages (8)」。SysTutorials.com 。 2020年7月7日閲覧。
- ^ ジャーナリングファイルシステムの分析と進化 - V. Prabhakaran 他 2013-06
外部リンク
- JFS for Linux プロジェクト Web サイト
- JFS1 ファイルシステムレイアウト、IBM
- JFS2 ファイルシステムレイアウト、IBM
- JFSRec は、破損した JFS ファイルシステムからファイルとディレクトリを読み取り専用で抽出するコンソール プログラムです。
