「XFS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Update interlanguage links)
タグ: visualeditor-switched
タグ: visualeditor
10行目: 10行目:
 
XFS は Silicon Graphics, Inc によって開発された高性能ジャーナリングファイルシステムです。XFS はアロケーショングループを使って設計されているため並列化された IO で特に性能を発揮します。このため複数のストレージデバイスを使用するときは IO スレッド, ファイルシステムの帯域, ファイルとファイルシステムのサイズ全てをスケーリングすることが可能です。
 
XFS は Silicon Graphics, Inc によって開発された高性能ジャーナリングファイルシステムです。XFS はアロケーショングループを使って設計されているため並列化された IO で特に性能を発揮します。このため複数のストレージデバイスを使用するときは IO スレッド, ファイルシステムの帯域, ファイルとファイルシステムのサイズ全てをスケーリングすることが可能です。
   
== インストール ==
+
==インストール==
 
XFS パーティションを管理するためのツールは[[公式リポジトリ]]にある {{Pkg|xfsprogs}} パッケージに含まれており、このパッケージはデフォルトでインストールされています。
 
XFS パーティションを管理するためのツールは[[公式リポジトリ]]にある {{Pkg|xfsprogs}} パッケージに含まれており、このパッケージはデフォルトでインストールされています。
   
== データの破損 ==
+
==データの破損==
   
何らかの理由でデータが破損してしまった場合、手動で修復する必要があります。
+
何らかの理由でデータが破損してしまった場合、手動で修復する必要があります。
   
=== XFS ファイルシステムの修復 ===
+
===XFS ファイルシステムの修復===
   
 
まず XFS ファイルシステムをアンマウントしてください:
 
まず XFS ファイルシステムをアンマウントしてください:
25行目: 25行目:
 
# xfs_repair -v /dev/sda3
 
# xfs_repair -v /dev/sda3
   
== 整合性 ==
+
==整合性==
   
 
xfsprogs 3.2.0 から新しいオンディスクフォーマット (v5) が導入され、[https://www.kernel.org/doc/Documentation/filesystems/xfs-self-describing-metadata.txt Self-Describing Metadata] という名前のメタデータチェックサム機構が入っています。CRC32 に基づいて、突然の停電などでメタデータが破損するのを保護します。xfsprogs 3.2.3 以降を使う場合デフォルトでチェックサムは有効です。''mkfs.xfs'' の実行時に {{ic|1=-m crc=0}} スイッチを使うことで無効にすることもできます:
 
xfsprogs 3.2.0 から新しいオンディスクフォーマット (v5) が導入され、[https://www.kernel.org/doc/Documentation/filesystems/xfs-self-describing-metadata.txt Self-Describing Metadata] という名前のメタデータチェックサム機構が入っています。CRC32 に基づいて、突然の停電などでメタデータが破損するのを保護します。xfsprogs 3.2.3 以降を使う場合デフォルトでチェックサムは有効です。''mkfs.xfs'' の実行時に {{ic|1=-m crc=0}} スイッチを使うことで無効にすることもできます:
34行目: 34行目:
 
{{Note|[[Btrfs]] や [[ZFS]] とは異なり、CRC32 チェックサムはメタデータだけに適用され、実際のデータには使われません。}}
 
{{Note|[[Btrfs]] や [[ZFS]] とは異なり、CRC32 チェックサムはメタデータだけに適用され、実際のデータには使われません。}}
   
== パフォーマンス ==
+
==パフォーマンス==
   
 
速度を最適化するには、XFS ファイルシステムを次のコマンドで作成します:
 
速度を最適化するには、XFS ファイルシステムを次のコマンドで作成します:
46行目: 46行目:
 
[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]] を使っている場合)。
 
[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]] を使っている場合)。
   
=== ストライプサイズと幅 ===
+
===ストライプサイズと幅===
   
 
ファイルシステムをストライプする RAID 上に作成する場合は {{ic|mkfs.xfs}} コマンドでストライプサイズを指定することで著しい速度の向上が望めます。
 
ファイルシステムをストライプする RAID 上に作成する場合は {{ic|mkfs.xfs}} コマンドでストライプサイズを指定することで著しい速度の向上が望めます。
52行目: 52行目:
 
[http://xfs.org/index.php/XFS_FAQ#Q:_How_to_calculate_the_correct_sunit.2Cswidth_values_for_optimal_performance How to calculate the correct sunit,swidth values for optimal performance] を見て下さい。
 
[http://xfs.org/index.php/XFS_FAQ#Q:_How_to_calculate_the_correct_sunit.2Cswidth_values_for_optimal_performance How to calculate the correct sunit,swidth values for optimal performance] を見て下さい。
   
=== バリアの無効化 ===
+
===バリアの無効化===
   
 
{{ic|/etc/fstab}} ファイルに ''nobarrier'' マウントオプションを追加してファイルシステムのバリアの使用を無効化することでパフォーマンスを上げることができます。
 
{{ic|/etc/fstab}} ファイルに ''nobarrier'' マウントオプションを追加してファイルシステムのバリアの使用を無効化することでパフォーマンスを上げることができます。
   
=== アクセス日時 ===
+
===アクセス日時===
   
 
{{ic|/etc/fstab}} ファイルに {{ic|noatime}} マウントオプションを追加することでファイルシステムのパフォーマンスが向上することがあります。XFS ファイルシステムではデフォルトの atime の扱い方は {{ic|relatime}} になっており、{{ic|noatime}} と比べてオーバーヘッドをかなり減らしつつも atime の値を正常に保ちます。現在 Linux の全てのファイルシステムが (2.6.30 あたりから) デフォルトで {{ic|relatime}} を使うようになっていますが、XFS が {{ic|relatime}} を使うようになったのは2006年からです。そのため、パフォーマンスを理由に XFS で {{ic|noatime}} を使う必要はほとんどありません。
 
{{ic|/etc/fstab}} ファイルに {{ic|noatime}} マウントオプションを追加することでファイルシステムのパフォーマンスが向上することがあります。XFS ファイルシステムではデフォルトの atime の扱い方は {{ic|relatime}} になっており、{{ic|noatime}} と比べてオーバーヘッドをかなり減らしつつも atime の値を正常に保ちます。現在 Linux の全てのファイルシステムが (2.6.30 あたりから) デフォルトで {{ic|relatime}} を使うようになっていますが、XFS が {{ic|relatime}} を使うようになったのは2006年からです。そのため、パフォーマンスを理由に XFS で {{ic|noatime}} を使う必要はほとんどありません。
62行目: 62行目:
 
また、{{ic|noatime}} には {{ic|nodiratime}} が含まれているため、{{ic|noatime}} を指定したら {{ic|nodiratime}} を指定する必要はなくなります。
 
また、{{ic|noatime}} には {{ic|nodiratime}} が含まれているため、{{ic|noatime}} を指定したら {{ic|nodiratime}} を指定する必要はなくなります。
   
=== デフラグ ===
+
===デフラグ===
   
 
XFS はエクステントベースであり遅延アロケーションを利用しているため断片化の問題はなかなか発生しないようになっていますが、マウントされたアクティブな XFS ファイルシステム上のファイルをデフラグできる、ファイルシステムデフラグユーティリティ (xfs_fsr, XFS filesystem reorganizer の略) が用意されています。定期的に XFS の断片化を監視するのにも使えます。
 
XFS はエクステントベースであり遅延アロケーションを利用しているため断片化の問題はなかなか発生しないようになっていますが、マウントされたアクティブな XFS ファイルシステム上のファイルをデフラグできる、ファイルシステムデフラグユーティリティ (xfs_fsr, XFS filesystem reorganizer の略) が用意されています。定期的に XFS の断片化を監視するのにも使えます。
68行目: 68行目:
 
{{man|8|xfs_fsr}} はマウントされたファイルシステムの編成を改善します。再編成アルゴリズムによって一度に一つのファイルが操作され、コンパクトになる、つまりファイルのエクステント (ファイルデータの連続ブロック) のレイアウトが改善されます。
 
{{man|8|xfs_fsr}} はマウントされたファイルシステムの編成を改善します。再編成アルゴリズムによって一度に一つのファイルが操作され、コンパクトになる、つまりファイルのエクステント (ファイルデータの連続ブロック) のレイアウトが改善されます。
   
==== フラグメンテーションレベルの確認 ====
+
====フラグメンテーションレベルの確認====
   
 
ファイルシステムにどれくらい断片化が発生しているのか確認するには:
 
ファイルシステムにどれくらい断片化が発生しているのか確認するには:
 
# xfs_db -c frag -r /dev/sda3
 
# xfs_db -c frag -r /dev/sda3
   
==== デフラグの実行 ====
+
====デフラグの実行====
   
 
デフラグを開始するには、''xfsprogs'' パッケージに含まれている {{ic|xfs_fsr}} コマンドを使います:
 
デフラグを開始するには、''xfsprogs'' パッケージに含まれている {{ic|xfs_fsr}} コマンドを使います:
 
# xfs_fsr /dev/sda3
 
# xfs_fsr /dev/sda3
   
=== 使われていない inode の btree ===
+
===使われていない inode の btree===
   
 
Linux 3.16 から、XFS にはフリーの inode を追跡するための btree が追加されています。基本的には既存の inode の割り当ての btree と同じですが、追跡するのが使われていない inode という点が異なります。この btree の目的は inode を割り当てるときに inode の空きを検索するスピードを高速化させることです。何年何ヶ月も使い込んだファイルシステムでのパフォーマンスが向上します。この機能を使うことでファイルシステム全体の信頼性に影響が出たり、リカバリするときに障害になることはありません。
 
Linux 3.16 から、XFS にはフリーの inode を追跡するための btree が追加されています。基本的には既存の inode の割り当ての btree と同じですが、追跡するのが使われていない inode という点が異なります。この btree の目的は inode を割り当てるときに inode の空きを検索するスピードを高速化させることです。何年何ヶ月も使い込んだファイルシステムでのパフォーマンスが向上します。この機能を使うことでファイルシステム全体の信頼性に影響が出たり、リカバリするときに障害になることはありません。
89行目: 89行目:
 
# mkfs.xfs -m crc=0 /dev/''target_partition''
 
# mkfs.xfs -m crc=0 /dev/''target_partition''
   
== 参照 ==
+
==参照==
   
* [http://xfs.org/index.php/XFS_FAQ XFS FAQ]
+
*[http://xfs.org/index.php/XFS_FAQ XFS FAQ]
* [http://xfs.org/index.php/Improving_Metadata_Performance_By_Reducing_Journal_Overhead Improving Metadata Performance By Reducing Journal Overhead]
+
*[http://xfs.org/index.php/Improving_Metadata_Performance_By_Reducing_Journal_Overhead Improving Metadata Performance By Reducing Journal Overhead]
* [[wikipedia:ja:XFS]]
+
*[[wikipedia:ja:XFS]]

2019年7月18日 (木) 13:36時点における版

関連記事

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

インストール

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

データの破損

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

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

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

# umount /dev/sda3

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

# xfs_repair -v /dev/sda3

整合性

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

# mkfs.xfs -m crc=0 /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(8) はマウントされたファイルシステムの編成を改善します。再編成アルゴリズムによって一度に一つのファイルが操作され、コンパクトになる、つまりファイルのエクステント (ファイルデータの連続ブロック) のレイアウトが改善されます。

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

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

# 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 機能を有効にした場合、読み取り専用でしかファイルシステムをマウントできません。

xfsprogs 3.2.3 以降を使う場合この機能はデフォルトで有効です。古いカーネルとディスクを共有したい場合などには mkfs.xfs の実行時に -m finobt=0 スイッチを使いこの機能を無効にすることもできます。CRC も一緒に無効にしてください:

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

または finobt=0 を省いても無効になります (finobt のデフォルト値は crc に依存しています):

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

参照