「XFS」の版間の差分
細 (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 ファイルシステムをアンマウントしてください: |
||
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=== |
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/Improving_Metadata_Performance_By_Reducing_Journal_Overhead Improving Metadata Performance By Reducing Journal Overhead] |
− | * |
+ | *[[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 からとされます。
パフォーマンス
速度を最適化するには、XFS ファイルシステムを次のコマンドで作成します:
# mkfs.xfs /dev/target_partition
はい、とてもシンプルです。なぜなら "ブースト機能" は全てデフォルトで "オン" になっている からです。
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