「XFS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(1版 をインポートしました)
31行目: 31行目:
 
XFS の v5 オンディスクフォーマットが実運用に耐えるほど安定になったのは Linux カーネル 3.15 からとされます。
 
XFS の v5 オンディスクフォーマットが実運用に耐えるほど安定になったのは Linux カーネル 3.15 からとされます。
   
{{Warning|[[Btrfs|Btrfs]] や [[ZFS|ZFS]] とは異なり、CRC32 チェックサムはメタデータだけに適用され、実際のデータには使われません。}}
+
{{Warning|[[Btrfs]] や [[ZFS]] とは異なり、CRC32 チェックサムはメタデータだけに適用され、実際のデータには使われません。}}
   
 
== パフォーマンス ==
 
== パフォーマンス ==
43行目: 43行目:
 
{{Warning|パフォーマンスを上げるためにバリアや atime などの無効化を施すとデータの破損が頻繁に起こるようになる可能性があります。}}
 
{{Warning|パフォーマンスを上げるためにバリアや atime などの無効化を施すとデータの破損が頻繁に起こるようになる可能性があります。}}
   
[http://xfs.org/index.php/XFS_FAQ#Q:_I_want_to_tune_my_XFS_filesystems_for_.3Csomething.3E XFS wiki] によれば、XFS を最大限活用したい場合は、デフォルトの CFQ [[Solid_State_Drives#I.2FO_スケジューラー|I/O スケジューラー]]を ([[wikipedia:Deadline_scheduler|Deadline]], [[wikipedia:NOOP_scheduler|Noop]], [[Linux-ck#BFQ_I.2FO_スケジューラを有効にする方法|BFQ]] などに) 変更したほうが良いようです (特に [[SSD|SSD]] を使っている場合)。
+
[http://xfs.org/index.php/XFS_FAQ#Q:_I_want_to_tune_my_XFS_filesystems_for_.3Csomething.3E XFS wiki] によれば、XFS を最大限活用したい場合は、デフォルトの CFQ [[ソリッドステートドライブ#I.2FO_スケジューラー|I/O スケジューラー]]を ([[wikipedia:Deadline_scheduler|Deadline]], [[wikipedia:NOOP_scheduler|Noop]], [[Linux-ck#BFQ_I.2FO_スケジューラを有効にする方法|BFQ]] などに) 変更したほうが良いようです (特に [[SSD]] を使っている場合)。
   
 
=== ストライプサイズと幅 ===
 
=== ストライプサイズと幅 ===
76行目: 76行目:
 
デフラグを開始するには、''xfsprogs'' パッケージに含まれている {{ic|xfs_fsr}} コマンドを使います:
 
デフラグを開始するには、''xfsprogs'' パッケージに含まれている {{ic|xfs_fsr}} コマンドを使います:
 
# xfs_fsr /dev/sda3
 
# xfs_fsr /dev/sda3
  +
  +
=== 使われていない inode の btree ===
  +
  +
Linux 3.16 から、XFS にはフリーの inode を追跡するための btree が追加されています。基本的には既存の inode の割り当ての btree と同じですが、追跡するのが使われていない inode という点が異なります。この btree の目的は inode を割り当てるときに inode の空きを検索するスピードを高速化させることです。何年何ヶ月も使い込んだファイルシステムでのパフォーマンスが向上します。この機能を使うことでファイルシステム全体の信頼性に影響が出たり、リカバリするときに障害になることはありません。
  +
  +
この機能では新しい v5 オンディスクフォーマットを使っており、Linux カーネル 3.15 から業務用で使えるほどに安定している状態になったと判定されています。既存のディスク上の構造を変えることはありませんが、inode の割り当ての btree と整合性があるようにする必要があります。そのため、古いカーネルでは、使われていない inode の btree 機能を有効にした場合、読み取り専用でしかファイルシステムをマウントできません。
  +
  +
XFS パーティションをフォーマットする際に ''finobt=1'' スイッチを使うことでこの機能を有効にできますが、''crc=1'' スイッチでメタデータのチェックサムを有効にする必要があります。したがって、使われていない inode の btree とメタデータチェックサムの両方を有効にするために以下のオプションが必要になります:
  +
# mkfs.xfs -m crc=1,finobt=1 /dev/''target_partition''
  +
  +
開発者によると、xfsprogs 3.3 リリースから、上記の ''-m crc=1,finobt=1'' オプションが mkfs のデフォルトオプションとなるそうです。
   
 
== 参照 ==
 
== 参照 ==

2015年8月13日 (木) 00:02時点における版

関連記事

XFS は Silicon Graphics, Inc によって開発された高性能ジャーナリングファイルシステムです。XFS はアロケーショングループを使って設計されているため並列化された IO で特に性能を発揮します。このため複数のストレージデバイスを使用するときは IO スレッド, ファイルシステムの帯域, ファイルとファイルシステムのサイズ全てをスケーリングすることが可能です。

インストール

XFS パーティションを管理するためのツールは公式リポジトリにある xfsprogs パッケージに含まれており、このパッケージはデフォルトでインストールされています。

データの破損

何らかの理由でデータが破損してしまった場合、手動で修復がする必要があります。

XFS ファイルシステムの修復

まず XFS ファイルシステムをアンマウントしてください:

# umount /dev/sda3

アンマウントしたら、xfs_repair ツールを実行します:

# xfs_repair -v /dev/sda3

整合性

xfsprogs 3.2.0 から新しいオンディスクフォーマット (v5) が導入され、Self-Describing Metadata という名前のメタデータチェックサム機構が入っています。CRC32 に基づいて、突然の停電などでメタデータが破損するのを保護します。デフォルトでは mkfs.xfs ツールを使ってもチェックサムは有効になりません。mkfs.xfs の実行時に -m crc=1 スイッチを使うことで有効にすることができます:

# mkfs.xfs -m crc=1 /dev/target_partition

XFS の v5 オンディスクフォーマットが実運用に耐えるほど安定になったのは Linux カーネル 3.15 からとされます。

警告: BtrfsZFS とは異なり、CRC32 チェックサムはメタデータだけに適用され、実際のデータには使われません。

パフォーマンス

速度を最適化するには、XFS ファイルシステムを次のコマンドで作成します:

# mkfs.xfs /dev/target_partition

はい、とてもシンプルです。なぜなら "ブースト機能" は全てデフォルトで "オン" になっている からです。

警告: パフォーマンスを上げるためにバリアや atime などの無効化を施すとデータの破損が頻繁に起こるようになる可能性があります。

XFS wiki によれば、XFS を最大限活用したい場合は、デフォルトの CFQ I/O スケジューラーを (Deadline, Noop, BFQ などに) 変更したほうが良いようです (特に SSD を使っている場合)。

ストライプサイズと幅

ファイルシステムをストライプする RAID 上に作成する場合は mkfs.xfs コマンドでストライプサイズを指定することで著しい速度の向上が望めます。

How to calculate the correct sunit,swidth values for optimal performance を見て下さい。

バリアの無効化

/etc/fstab ファイルに nobarrier マウントオプションを追加してファイルシステムのバリアの使用を無効化することでパフォーマンスを上げることができます。

アクセス日時

/etc/fstab ファイルに noatime マウントオプションを追加することでファイルシステムのパフォーマンスが向上することがあります。XFS ファイルシステムではデフォルトの atime の扱い方は relatime になっており、noatime と比べてオーバーヘッドをかなり減らしつつも atime の値を正常に保ちます。現在 Linux の全てのファイルシステムが (2.6.30 あたりから) デフォルトで relatime を使うようになっていますが、XFS が relatime を使うようになったのは2006年からです。そのため、パフォーマンスを理由に XFS で noatime を使う必要はほとんどありません。

また、noatime には nodiratime が含まれているため、noatime を指定したら nodiratime を指定する必要はなくなります。

デフラグ

XFS はエクステントベースであり遅延アロケーションを利用しているため断片化の問題はなかなか発生しないようになっていますが、マウントされたアクティブな XFS ファイルシステム上のファイルをデフラグできる、ファイルシステムデフラグユーティリティ (xfs_fsr, XFS filesystem reorganizer の略) が用意されています。定期的に XFS の断片化を監視するのにも使えます。

xfs_fsr はマウントされたファイルシステムの編成を改善します。再編成アルゴリズムによって一度に一つのファイルが操作され、コンパクトになる、つまりファイルのエクステント (ファイルデータの連続ブロック) のレイアウトが改善されます。

フラグメンテーションレベルの確認

ファイルシステムにどれくらい断片化が発生しているのか確認するには:

# xfs_db -c frag -r /dev/sda3

デフラグの実行

デフラグを開始するには、xfsprogs パッケージに含まれている xfs_fsr コマンドを使います:

# xfs_fsr /dev/sda3

使われていない inode の btree

Linux 3.16 から、XFS にはフリーの inode を追跡するための btree が追加されています。基本的には既存の inode の割り当ての btree と同じですが、追跡するのが使われていない inode という点が異なります。この btree の目的は inode を割り当てるときに inode の空きを検索するスピードを高速化させることです。何年何ヶ月も使い込んだファイルシステムでのパフォーマンスが向上します。この機能を使うことでファイルシステム全体の信頼性に影響が出たり、リカバリするときに障害になることはありません。

この機能では新しい v5 オンディスクフォーマットを使っており、Linux カーネル 3.15 から業務用で使えるほどに安定している状態になったと判定されています。既存のディスク上の構造を変えることはありませんが、inode の割り当ての btree と整合性があるようにする必要があります。そのため、古いカーネルでは、使われていない inode の btree 機能を有効にした場合、読み取り専用でしかファイルシステムをマウントできません。

XFS パーティションをフォーマットする際に finobt=1 スイッチを使うことでこの機能を有効にできますが、crc=1 スイッチでメタデータのチェックサムを有効にする必要があります。したがって、使われていない inode の btree とメタデータチェックサムの両方を有効にするために以下のオプションが必要になります:

# mkfs.xfs -m crc=1,finobt=1 /dev/target_partition

開発者によると、xfsprogs 3.3 リリースから、上記の -m crc=1,finobt=1 オプションが mkfs のデフォルトオプションとなるそうです。

参照