XFS (eXtents File System)は、シリコングラフィックス が同社 どうしゃ のIRIX オペレーティングシステム のために開発 かいはつ した高性能 こうせいのう ジャーナリングファイルシステム である。
XFSは(JFS と共 とも に)UNIX システムで最古 さいこ のジャーナリングファイルシステムの一 ひと つであり、
成熟 せいじゅく し安定 あんてい し、コード はよくデバッグ されている[要 よう 出典 しゅってん ] 。
XFSの開発 かいはつ はシリコングラフィックスにより1993年 ねん に開始 かいし され、翌年 よくねん [要 よう 出典 しゅってん ] IRIX 5.3において初 はじ めて搭載 とうさい された[ 1] 。
XFSは2000年 ねん 5月 にGPL で公開 こうかい されると共 とも にLinux への移植 いしょく が開始 かいし され[ 2] [ 3] 、
2001 - 2002年 ねん ごろにはサポートするディストリビューション が現 あらわ れた[ 4] 。
Red Hat Enterprise Linux (RHEL)ではバージョン5.4以降 いこう 「Scalable File Systemアドオン」という名前 なまえ でXFSの有償 ゆうしょう サポートを行 おこな っていたが、RHEL7では/bootを含 ふく めた標準 ひょうじゅん ファイルシステムとしてXFSを採用 さいよう した。
XFSは2002年 ねん に開発 かいはつ 版 ばん メインラインであるLinux 2.5 カーネル に、次 つ いで2004年 ねん に安定 あんてい 版 ばん メインラインである2.4 カーネルにマージされた[ 3] 。
ほとんどすべてのLinuxシステムにおいて利用 りよう 可能 かのう で、SUSE 、Gentoo 、Mandriva 、Slackware 、KateOS (英語 えいご 版 ばん ) 、Zenwalk (英語 えいご 版 ばん ) 、Ubuntu 、Debian 、Fedora 、Arch Linux の各 かく ディストリビューションでXFSの利用 りよう を選択 せんたく することができる[要 よう 出典 しゅってん ] [いつ? ] 。
FreeBSD では、2005年 ねん 12月 から読 よ み込 こ みのみのサポートを開始 かいし し、2006年 ねん 6月 がつ には FreeBSD-7.0-CURRENTにおいて実験 じっけん 的 てき 書 か き込 こ みが可能 かのう となった[要 よう 出典 しゅってん ] 。
XFSはファイルシステムの先頭 せんとう ブロックをスーパーブロック として使 つか っておりブートローダーを先頭 せんとう ブロックにインストールすることはできない。これはIRIXとの互換 ごかん 性 せい の為 ため であり変更 へんこう の予定 よてい はないとしている[ 5] [ 6] 。
XFSは64ビット のジャーナリングファイルシステムであり、ファイルシステムの整合 せいごう 性 せい が保証 ほしょう されている[ 7] 。ファイルシステムサイズは最大 さいだい で8EiB であるが[ 7] 、通常 つうじょう ホスト オペレーティングシステム の仕様 しよう によりそれよりも少 すく ない容量 ようりょう に制限 せいげん される。たとえば32ビット Linuxにおいては、最大 さいだい 16TiB である[要 よう 出典 しゅってん ] 。
XFSはファイルシステムメタデータ をジャーナリングする。つまり、ファイルシステムへの変更 へんこう が発生 はっせい した際 さい は、直列 ちょくれつ 化 か されたジャーナルに書 か き込 こ まれた後 のち に、実 じつ ブロック
の更新 こうしん が行 おこな われる。ジャーナルは、通常 つうじょう のディスク操作 そうさ では読 よ み込 こ まれることのないディスク領域 りょういき にリングバッファ として確保 かくほ される。ジャーナルは、ファイルシステムのデータ部 ぶ に置 お くこともできれば(内部 ないぶ ジャーナル)、ディスク操作 そうさ の競合 きょうごう を避 さ けるために別個 べっこ のデバイス 上 うえ に置 お くこともできる(外部 がいぶ ジャーナル)。
XFSのジャーナルは、ファイルシステム操作 そうさ が高水準 こうすいじゅん に表現 ひょうげん された「論理 ろんり 的 てき な」エントリ
から成 な る。それに対 たい して、他 た のファイルシステムのジャーナルでは、トランザクション 中 なか で変更 へんこう される
ブロックのコピーをそのまま保持 ほじ した、「物理 ぶつり 的 てき な」エントリから成 な る。
ジャーナルの更新 こうしん は、性能 せいのう の低下 ていか を避 さ けるために非同期 ひどうき 的 てき に行 おこな われる。
システムクラッシュ が起 お きると、ジャーナルを利用 りよう することでクラッシュの直前 ちょくぜん の操作 そうさ を再 さい 実行 じっこう することが出来 でき 、
これによりXFSファイルシステムの整合 せいごう 性 せい は保 たも たれる。
この再 さい 実行 じっこう による復旧 ふっきゅう は、ファイルシステムのマウント 時 とき に自動的 じどうてき に行 おこな われ、それに要 よう する時間 じかん はファイルシステムのサイズに依存 いぞん しない。
クラッシュに際 さい し、未 み 書 か き込 こ みのデータブロックがジャーナル上 じょう に残 のこ っている場合 ばあい には、復旧 ふっきゅう 時 じ にゼロで置換 ちかん されて書 か き込 こ まれる。
これはセキュリティ 上 うえ の問題 もんだい を回避 かいひ するためである。
XFSファイルシステムは内部 ないぶ 的 てき に複数 ふくすう のアロケーショングループ (英語 えいご 版 ばん ) に分割 ぶんかつ することが可能 かのう である。アロケーショングループとは、等 ひと しいサイズの連続 れんぞく 的 てき なディスク領域 りょういき である。1つのファイルやディレクトリは複数 ふくすう のアロケーショングループに跨 またが って存在 そんざい することが可能 かのう である。
それぞれのアロケーショングループが固有 こゆう のinode 空間 くうかん と固有 こゆう の空 あ き領域 りょういき を持 も つことで、拡張 かくちょう 性 せい と並列 へいれつ 処理 しょり 性 せい が生 う み出 だ される。(複数 ふくすう の異 こと なるスレッド やプロセス が同一 どういつ のファイルシステムに同時 どうじ にアクセス可能 かのう である)
この特性 とくせい により、メタデータの更新 こうしん も並列 へいれつ に行 おこな うことができ、マルチプロセッサ システムやマルチコア システムにおいて、I/O 性能 せいのう を向上 こうじょう させることができる。
ファイルシステムが複数 ふくすう の物理 ぶつり デバイスに渡 わた るときに、この強 つよ みは発揮 はっき され、すべての物理 ぶつり ストレージ の性能 せいのう が最大限 さいだいげん 発揮 はっき される。
RAID アレイ上 じょう にXFSファイルシステムを作成 さくせい するときには、ストライプ単位 たんい をRAIDアレイのストライプ単位 たんい と一致 いっち させることにより、スループット を最大 さいだい 化 か することができる。
XFSではファイルデータを格納 かくのう するブロックは、エクステント (英語 えいご 版 ばん ) と呼 よ ばれる構造 こうぞう により管理 かんり される。個々 ここ のエクステントがポイントするブロック数 すう は可変 かへん で、一 ひと つあるいは複数 ふくすう の連続 れんぞく したブロックを指 さ し示 しめ すことが出来 でき る。あるファイルに使 つか われているブロックを単純 たんじゅん に列挙 れっきょ して保持 ほじ するファイルシステムに比 くら べ、スペースを大 おお きく削減 さくげん できる。
他 た の多 おお くのファイルシステムでは、ブロックのアロケーションのために、一 ひと つあるいは複数 ふくすう のビットマップ を使用 しよう しているが、XFSではこれらビットマップは、エクステントを利用 りよう した(各 かく アロケーショングループごとに)一対 いっつい のB+木 き による管理 かんり 構造 こうぞう に置 お き換 か えられている。
そのB+木 き の対 たい の内 うち 、片方 かたがた の木 き は利用 りよう できるエクステントの長 なが さを管理 かんり し、他方 たほう はエクステントの開始 かいし ブロックを記録 きろく している。このデュアルインデックス 構造 こうぞう により、種々 しゅじゅ のファイルシステム操作 そうさ の中 なか で効率 こうりつ 高 たか く利用 りよう 可能 かのう なエクステントを探索 たんさく することが可能 かのう となっている。
ファイルシステムのブロックサイズは、アロケーションの最小 さいしょう 単位 たんい のサイズである。
XFSではブロックサイズは512バイト から64キロバイト まで可変 かへん であり、用途 ようと に合 あ わせてファイルシステムの作成 さくせい 時 じ に指定 してい できる。
小 ちい さなサイズのファイルを多数 たすう 個 こ 使 つか うのならば、ブロックサイズを小 ちい さくすれば利用 りよう 可能 かのう な容量 ようりょう が大 おお きくなるし、主 おも に大 おお きなサイズのファイルしか扱 あつか わないのであれば、ブロックサイズを大 おお きくすることで読 よ み書 か き性能 せいのう が向上 こうじょう する。
XFSはファイルアロケーションに遅延 ちえん 書 か き込 こ み の技術 ぎじゅつ を用 もち いている。
バッファーキャッシュにファイルが書 か き込 こ まれると、すぐにエクステントをアロケートするのではなく、記録 きろく に必要 ひつよう な数 かず のブロックを予約 よやく するに止 と める。実際 じっさい にエクステント(ブロック)がアロケートされるのはディスクにフラッシュされる時 とき である。これにより、ファイルがなるべく連続 れんぞく したブロックに書 か き込 こ まれるようにし、フラグメンテーション を減少 げんしょう させ、性能 せいのう を向上 こうじょう させている。
XFSでは、64ビットのスパース なアドレス空間 くうかん が各 かく ファイルごとに利用 りよう 可能 かのう で、すなわち、極 きわ めて大 おお きいサイズのファイルを扱 あつか うと同時 どうじ に、ファイル中 ちゅう に実 じつ ディスクスペースの割 わ り当 あ てのない「穴 あな 」を持 も たせることが出来 でき る。
XFSはファイルのデータブロックの管理 かんり に可変長 かへんちょう のエクステントを用 もち いるため、ファイルアロケーションマップのサイズは小 ちい さく保持 ほじ できる。
アロケーションマップのサイズが一 ひと つのinodeに収 おさ まり切 き らなくなった場合 ばあい でも、そのアロケーションマップはB+木上 きのうえ に移 うつ される。
以上 いじょう により64ビットの広大 こうだい な空間 くうかん であっても迅速 じんそく にアクセスすることが可能 かのう となっている。
XFSは拡張 かくちょう 属性 ぞくせい として複数 ふくすう のデータストリーム を一 ひと つのファイルに格納 かくのう することが出来 でき る。
これにより複数 ふくすう のname/valueの対 たい を一 ひと つのファイルに付 つ け加 くわ えることが出来 でき る。
nameは最大 さいだい で256バイトのヌル終端 しゅうたん 文字 もじ 列 れつ で、valueは最大 さいだい で64キロバイトのバイナリデータ である。
さらにrootとuserの2つの名前 なまえ 空間 くうかん に分 わ けて記録 きろく できる。root名前 なまえ 空間 くうかん に記録 きろく された属性 ぞくせい はスーパーユーザー のみが変更 へんこう 可能 かのう であり、user名前 なまえ 空間 くうかん の属性 ぞくせい はそのファイルの書 か き込 こ みパーミッション を持 も つユーザーのみが変更 へんこう できる。
この拡張 かくちょう 属性 ぞくせい は、シンボリックリンク やデバイスノード 、ディレクトリ などあらゆる種類 しゅるい のXFSのinodeに付加 ふか することが可能 かのう である。
attr
ツールを使用 しよう して、コマンドライン から操作 そうさ することが出来 でき る。
xfsdump
/xfsrestore
ツールは拡張 かくちょう 属性 ぞくせい をサポートしており、拡張 かくちょう 属性 ぞくせい も併 あわ せてバックアップ /リストア される。
他 た の多 おお くのバックアップツールはXFS拡張 かくちょう 属性 ぞくせい に対応 たいおう していない物 もの が多 おお い。
高 たか いディスクスループット が必要 ひつよう なアプリケーション のために、キャッシュ されない入出力 にゅうしゅつりょく をユーザ空間 くうかん で可能 かのう にするダイレクトI/Oが提供 ていきょう される。ファイルデータはDMA によりアプリケーションのバッファからディスクに直接 ちょくせつ 転送 てんそう されるため、ディスクデバイスのI/O帯域 たいいき をそのまま利用 りよう できる。
XFSは保証 ほしょう された帯域 たいいき 幅 はば でのファイル入出力 にゅうしゅつりょく を可能 かのう にするAPI を提供 ていきょう する。XFSは、接続 せつぞく されているストレージデバイスの利用 りよう 可能 かのう な帯域 たいいき 幅 はば を動的 どうてき に計算 けいさん し、要求 ようきゅう された性能 せいのう に見合 みあ った帯域 たいいき 幅 はば を確保 かくほ する。これは現在 げんざい XFSのみがもつ機能 きのう である。
帯域 たいいき 保証 ほしょう にはhardとsoftの2種類 しゅるい があり、帯域 たいいき 保証 ほしょう の確実 かくじつ 性 せい とI/O性能 せいのう のトレードオフにより使 つか い分 わ けることができる。ただし、hardはそのXFSファイルシステムが存在 そんざい するディスクサブシステムがそれをサポートする時 とき のみ利用 りよう 可能 かのう である。
この帯域 たいいき 保証 ほしょう の機能 きのう は、ビデオストリーミング のようなリアルタイムアプリケーションでよく用 もち いられる。
XFSは階層 かいそう 型 がた ストレージ管理 かんり をサポートするためのDMAPI (英語 えいご 版 ばん ) ・インタフェース を実装 じっそう している。
この機能 きのう はLinux上 じょう で実装 じっそう されているものの、主 おも なカーネルソースには組 く み入 い れられていない。
XFSはスナップショット を取 と るための機能 きのう そのものは提供 ていきょう しておらず、OS等 とう のボリュームマネージャ により用意 ようい されることが想定 そうてい されている。
そのようなボリュームマネージャによりスナップショットを取 と るための補助 ほじょ 機能 きのう として、XFSはxfs_freeze
により、ファイルシステムの凍結 とうけつ 機能 きのう を提供 ていきょう している。
なお、2.6系 けい のLinuxではスナップショット作成 さくせい にxfs_freeze
は不要 ふよう である。(実行 じっこう した場合 ばあい 、デッドロックが発生 はっせい し正常 せいじょう にスナップショットが作成 さくせい できない。)
XFSは、可変長 かへんちょう のエクステントを利用 りよう し遅延 ちえん アロケーションをする為 ため に、断片 だんぺん 化 か に対 たい してもともと高 たか い耐 たい 性 せい を持 も つが、XFSには独自 どくじ のデフラグツール(xfs_fsr
、XFS filesystem repackerの略 りゃく )が用意 ようい されている。
これはマウント されていてアクティブなファイルシステムをデフラグすることが出来 でき る。
(xfs_fsr
は通常 つうじょう 、xfsprogs
パッケージではなく、xfsdump
パッケージの一部 いちぶ として提供 ていきょう される。)
XFSにはxfs_growfs
という、オンライン リサイズ のためのツールがある。
そのXFSファイルシステムが存在 そんざい するディスク上 じょう に未 み 使用 しよう のスペースがある場合 ばあい には、ファイルシステムサイズを拡張 かくちょう することが出来 でき る。
この機能 きのう は通常 つうじょう ボリュームマネージャと組 く み合 あ わせて用 もち いられる。
バックアップのためにxfsdump
とxfsrestore
というツールがXFSでは利用 りよう できる。
xfsdumpはXFSファイルシステムをinode順 じゅん を保持 ほじ したままバックアップすることが出来 でき る。
UNIXの他 ほか のファイルシステムではバックアップ前 まえ にマウントを解除 かいじょ することが必要 ひつよう となることがほとんどであるが、xfsdump
を用 もち いるXFSファイルシステムのバックアップを使用 しよう 中 ちゅう に取 と ることが出来 でき る。
さらにこれらツールを用 もち いたバックアップとリストアは、それぞれ実行 じっこう 中 ちゅう に一時 いちじ 中断 ちゅうだん したり再開 さいかい したりすることが自在 じざい に可能 かのう である。
また、xfsdump
は複数 ふくすう スレッドを使 つか って実行 じっこう することが可能 かのう で、複数 ふくすう のストリームに分割 ぶんかつ しつつ高速 こうそく にバックアップを取得 しゅとく できる。その場合 ばあい 、各 かく ストリームは異 こと なるメディア に書 か き込 こ むことも出来 でき る。(しかし、この複数 ふくすう ストリームによるバックアップ機能 きのう は、現在 げんざい の所 ところ Linuxでは完全 かんぜん に実装 じっそう されていない。)
x86マシンのLinuxで使用 しよう する場合 ばあい 、PBR (英語 えいご 版 ばん ) 等 ひとし と呼 よ ばれる、レガシーなブートシーケンスに使用 しよう されるパーティションの先頭 せんとう セクタ(他 た のファイルシステム等 とう では通常 つうじょう 使 つか われない)をXFSは使用 しよう しているため、ブート可能 かのう パーティションにできない。この仕様 しよう は IRIX との互換 ごかん 性 せい の維持 いじ のため、変更 へんこう されない[ 6] 。
削除 さくじょ されたファイルの復元 ふくげん はほぼ不可能 ふかのう である(これは長所 ちょうしょ でもある)。
Linuxでの実装 じっそう では、異 こと なるCPUアーキテクチャ間 あいだ で、ジャーナリング最適 さいてき 化 か のために互換 ごかん 性 せい の問題 もんだい が発生 はっせい する。しかしこの問題 もんだい は、異 こと なるアーキテクチャでマウントする前 まえ にxfs_repair
を実行 じっこう し、ジャーナルを消去 しょうきょ することで、回避 かいひ 可能 かのう である。
「XFSはメタデータをジャーナリングする。」これは電源 でんげん コードを不意 ふい に抜 ぬ いても、再 さい 起動 きどう 後 ご には整合 せいごう 性 せい のある状態 じょうたい に復元 ふくげん することを意味 いみ する(例 たと えば、ディレクトリやそこに含 ふく まれるファイルリスト を表示 ひょうじ できるということである)。これは何 なに も表示 ひょうじ されなくなるよりはよい。しかし、XFSはデータの変更 へんこう についてはジャーナルしないから、電源 でんげん コードを抜 ぬ いたときにデータを失 うしな う可能 かのう 性 せい はある[ 8] 。この点 てん についてはXFSだけではなく、他 た のファイルシステム(例 たと えばJFS )についても同 おな じであり、メタデータのみのジャーナリングはアクセス速度 そくど と安全 あんぜん 性 せい のバランスのとれた優 すぐ れた妥協 だきょう 点 てん であるからである。
XFSは遅延 ちえん 書 か き込 こ み最適 さいてき 化 か と、データとメタデータのディスク書 か き込 こ み順序 じゅんじょ の点 てん についてはSuS の解釈 かいしゃく に甘 あま さがある。同様 どうよう に、ext3 やdata=orderedモードのReiserFS で動作 どうさ する操作 そうさ が、データ破壊 はかい を引 ひ き起 お こす場合 ばあい がある。
echo "original data here" > data
echo "new data goes here" > data.new
mv data.new data
*crash*
この3つの操作 そうさ が実行 じっこう された直後 ちょくご にクラッシュや電源 でんげん が落 お ちたりすると、ファイルがランダムデータやNullコードに置 お き換 か わったりする可能 かのう 性 せい がある。なお、bug report in Ubuntu と posting from a XFS developer on linux-xfs にこの点 てん に関 かん する反対 はんたい 意見 いけん がある。
ディレクトリエントリの作成 さくせい (空 そら ファイル、サブディレクトリなど)と削除 さくじょ は他 た のファイルシステムに比 くら べて遅 おそ いという指摘 してき がある。詳細 しょうさい については以下 いか を参照 さんしょう 。Filesystem performance tweaking with XFS on Linux 。この問題 もんだい を解決 かいけつ するため、メタデータジャーナルにも遅延 ちえん 書 か き込 こ み技術 ぎじゅつ が適用 てきよう され、バージョン3.12以降 いこう のLinuxカーネルで標準 ひょうじゅん となった。詳細 しょうさい については[1] 及 およ びカーネルドキュメントの"filesystems/xfs-delayed-logging-design.txt"を参照 さんしょう 。
SELinux が登場 とうじょう した当初 とうしょ 、XFSで使用 しよう すると性能 せいのう 劣化 れっか を引 ひ き起 お こす事 こと が取 と り沙汰 ざた された。[ 9]
これはXFSの「拡張 かくちょう 属性 ぞくせい がinode内 ない に収 おさ められる場合 ばあい は追加 ついか のディスクI/Oが要 い らない為 ため 高速 こうそく だが、そうでない場合 ばあい はinode外 がい に個別 こべつ のブロックを割 わ り当 あ てる為 ため に拡張 かくちょう 属性 ぞくせい の参照 さんしょう に通常 つうじょう のデータと同 おな じだけのディスクI/Oを伴 ともな う」という特性 とくせい に対 たい してSELinuxが使用 しよう する拡張 かくちょう 属性 ぞくせい がinode内 ない に収 おさ められないサイズであった為 ため に起 お きた。
この事 こと 自体 じたい はinodeに収 おさ めきれない拡張 かくちょう 属性 ぞくせい 全 すべ てに起 お こるものでSELinux固有 こゆう のものではないが、「多 おお くのファイルが拡張 かくちょう 属性 ぞくせい を付加 ふか されている」、「至 いた る所 ところ で暗黙 あんもく 的 てき に読 よ み出 だ される事 こと 」という事情 じじょう があり性能 せいのう 劣化 れっか を引 ひ き起 お こした。この問題 もんだい は「attr2と呼 よ ばれる新 あたら しい拡張 かくちょう 属性 ぞくせい の格納 かくのう ポリシーを使用 しよう する」、「inodeの大 おお きさをデフォルトより大 おお きくする」のいずれかの行動 こうどう を取 と ることで回避 かいひ できる。xfsprogs バージョン2.7 以降 いこう では attr2 の使用 しよう がデフォルトになっており、問題 もんだい 回避 かいひ のための対処 たいしょ を行 おこな う必要 ひつよう はない。
ディスク
ネットワーク型 がた 特殊 とくしゅ 用途 ようと
その他 た
カテゴリ