XFSファイル・システムの設定と管理

XFSファイル・システムの作成およびマウント

mkfs.xfsコマンドを使用して、パーティション、LVMボリューム、ディスクまたは同様のハードウェア・デバイスなどのブロック・デバイス上にXFSファイル・システムを作成します。

XFSファイル・システムは、mkfs.xfsコマンドを使用して作成します。コマンドのデフォルト・オプションは、ほとんどの一般的なユース・ケースに適しています。詳細は、mkfs.xfs(8)のマニュアル・ページを参照してください。

  1. XFSでフォーマットするターゲット・デバイス、パーティションまたはファイルを特定します。

    通常、lsblkコマンドを使用して、システムで使用可能なブロックデバイスおよびパーティションを一覧表示できます。

    ファイル・システムのフォーマットは破壊的な操作であり、ターゲット・デバイス上のデータはすべて消去されます。次のステップで正しいターゲット・デバイスまたはファイル・パスが使用されていることを確認します。

  2. デバイスにXFSファイル・システムを作成するには、次を実行します。
    sudo mkfs.xfs [options] <device>

    たとえば、デバイス/dev/sdb1上のファイル・システムをデフォルト・オプションを使用してフォーマットするには、次を実行します。

    sudo mkfs.xfs /dev/sdb1

    必要に応じて、適切なフラグを使用して、ファイル・システムにカスタム・オプションを設定します。Notable XFS Feature Optionsを参照してください。

  3. ファイル・システムをマウントします。

    たとえば、次のコマンドを実行します。

    sudo mount /dev/sdb /mnt
  4. xfs_infoコマンドを使用して、ファイル・システムに関する情報を検証および表示します。
    たとえば、次のコマンドを実行します。
    xfs_info /mnt

    このコマンドは、デバイス・パスおよびファイル・システム・ジオメトリなどの情報を返します。詳細は、xfs_info(8)マニュアル・ページを参照してください。

注目のXFS機能オプション

XFSファイル・システムの作成時に、いくつかの重要なオプションを設定できます。オプションについては、mkfs.xfs(8)マニュアル・ページでも詳しく説明されています。

注目のXFS機能オプション
オプション 説明
lazy-count

レイジー・カウンタは、空き領域カウンタおよびiノード・カウンタがスーパーブロック以外のファイル・システムの一部に保持されるため、メタデータ集中型のアプリケーション・ワークロードのI/Oパフォーマンスが向上します。

レイジー・カウンタはデフォルトで有効化されています。ただし、必要に応じて、mkfs.xfsコマンドに-l lazy-count=0オプションを指定することで、必要に応じて無効化できます。

Oracle Linux 8および9では、このオプションを使用できます。

logdev

XFSジャーナルに外部ログ・デバイスを使用すると、ディスクの競合を減らし、ファイル・システムのI/Oスループットを向上させることができます。ジャーナルに適切なホスト・デバイスは、SSD(固体ドライブ)デバイスまたはバッテリ・バックアップ式ライトバック・キャッシュを持つRAIDデバイスです。XFSジャーナルのデフォルトの場所は、データと同じブロック・デバイス上です。

XFSファイル・システム作成時に、指定されたサイズの外部ジャーナルを確保するには、mkfs.xfsコマンドに-l logdev=device,size=sizeオプションを指定します。sizeパラメータを省略すると、mkfs.xfsは、ファイル・システムのサイズに基づいてジャーナル・サイズを選択します。外部ジャーナルを使用するためにXFSファイル・システムをマウントするには、mountコマンドに-o logdev=deviceオプションを指定します。

bigtime

bigtimeオプションは、記録されたiノードタイムスタンプの最大値を2038から2486に拡張します。この機能には5.10より後のカーネルが必要であり、有効にすると、以前のカーネルを実行しているシステムにファイルシステムをマウントできなくなります。

Oracle Linux 8: この機能は、RHCKおよびUEK R6では使用できないため、デフォルトでは無効になっています。この機能を使用するには、最新のUEK R7にアップグレードします。

このオプションを有効にしないと、古いXFSファイルシステムがフォーマットされることがあります。既存のファイルシステムでオプションを有効にするには、xfs_admin -O bigtime=1コマンドを使用します。詳細は、Changing XFS File System Feature Optionsを参照してください。

inobtcount

inobtcountオプションは、メタデータ領域予約の計算を高速化することで、大規模なファイル・システムでのマウント時間を短縮します。この機能には5.10より後のカーネルが必要であり、有効にすると、以前のカーネルを実行しているシステムにファイルシステムをマウントできなくなります。

Oracle Linux 8: この機能は、RHCKおよびUEK R6では使用できないため、デフォルトでは無効になっています。この機能を使用するには、最新のUEK R7にアップグレードします。

このオプションを有効にしないと、古いXFSファイルシステムがフォーマットされることがあります。既存のファイルシステムでオプションを有効にするには、xfs_admin -O inobtcount=1コマンドを使用します。詳細は、Changing XFS File System Feature Optionsを参照してください。

reflink

reflink機能は、XFS内のコピーオンライト機能を利用して、XFSファイル・システム内のファイルまたはディレクトリの軽量コピーを作成します。この機能は、CRCチェックが無効になっているか、またはXFSファイルシステムがDAXマウントオプションとともに使用されていないかぎり、デフォルトで有効になっています。

詳細は、共有データ・ブロックを使用したファイルのコピーを参照してください。

su, sw ストライプユニットの場合は suオプション、ストライプ幅の場合は swオプションは、RAIDデバイスまたはストライプ化された論理ボリュームのXFSファイルシステムをフォーマットするときに指定できます。特定のデバイスジオメトリを指定する必要がある場合は、mkfs.xfsコマンドに -d su=<size>,sw=<width>オプションを指定します。ストライプ単位は、ファイル・システムのブロック・サイズの倍数として指定されます。ストライプ幅は、ストライプユニット値の乗数として表され、通常は、ストライプ化された論理ボリューム構成内のメンバー数またはRAIDデバイス内のディスク数と同じです。

XFSファイル・システムの機能オプションの変更

アンマウントされたデバイス上のXFSファイルシステム機能を更新または変更するには、xfs_adminコマンドを使用します。

xfs_adminコマンドは、マウント解除されたXFSファイルシステムの機能オプションを変更できます。たとえば、次の操作を実行できます:

  • 遅延カウンタを有効または無効にします(Oracle Linux 8および9のみ)。

  • bigtimeinobtcountなどの他の機能オプションを有効または無効にします。

  • ファイル・システムのUUIDの変更

  • ファイル・システムのラベルの変更

詳細は、mkfs_admin(8)マニュアル・ページを参照してください。

ノート

マウントされたXFSファイル・システムは変更できません。

  1. ファイル・システムに新しいラベルを表示して適用します。

    既存のラベルを表示するには、次を実行します。

    sudo xfs_admin -l /dev/sdb

    新しいラベルを適用するには、次を実行します。

    sudo xfs_admin -L "VideoRecords" /dev/sdb
    ノート

    ラベルの最大長は12文字です。

  2. ファイル・システムのUUIDを表示、生成またはクリアします。

    既存のUUIDを表示するには、次を実行します。

    sudo xfs_admin -u /dev/sdb

    新しいUUIDを生成するには、次を実行します。

    sudo xfs_admin -U generate /dev/sdb

    UUIDを完全にクリアするには、次を実行します。

    sudo xfs_admin -U nil /dev/sdb
  3. Oracle Linux 8および9で、遅延カウンタを無効または有効にします。

    遅延カウンタを無効にするには、次を実行します。

    sudo xfs_admin -c 0 /dev/sdb

    遅延カウンタを有効にするには、次を実行します。

    sudo xfs_admin -c 1 /dev/sdb
  4. bigtimeまたはinobtcountを有効にします。

    Oracle Linux 8: これらの機能は、RHCKおよびUEK R6では使用できないため、デフォルトでは無効になっています。これらの機能を使用するには、最新のUEK R7にアップグレードします。この操作を実行した後は、ファイル・システムを以前のカーネルにマウントできないことに注意してください。

    このオプションなしでフォーマットされたファイル・システムでbigtimeを有効にするには、次を実行します:
    sudo xfs_admin -O bigtime=1 /dev/sdb
    このオプションなしでフォーマットされたファイル・システムでinobtcountを有効にするには、次を実行します:
    sudo xfs_admin -O inobtcount=1 /dev/sdb

XFSファイル・システムのサイズ調節

xfs_growfsコマンドを使用して、XFSファイル・システムのサイズを大きくします(基礎となるデバイスに、その変更に対応する領域がある場合)。

ノート

マウントされていないXFSファイル・システムはサイズ調整できません。また、XFSファイル・システムを縮小するためのコマンドはありません。

xfs_growfsコマンドは、基礎となるデバイスのレイアウトやサイズには影響しません。

Logical Volume Manager (LVM)を使用している場合は、vgextendコマンドを使用して、LVMボリューム・グループで使用可能なストレージを大きくし、lvextendを使用して、ファイル・システムを含む論理ボリューム・サイズを大きくできます。

partedコマンドを使用してXFSファイル・システムが含まれているパーティション サイズは変更できません。かわりに、サイズを大きくしてパーティションを再作成します。元のパーティションを削除した場合または元のパーティションのコンテンツ(ディスク領域を解放するための削除を行わなかった場合)から、そのコンテンツをバックアップからリストアする必要があります。

ファイル・システムのサイズを、ファイル・システム・ブロックで表された指定のサイズに増やすか、デバイス上の最大使用可能領域を使用するようにサイズを増やすことができます。

  1. xfs_growfs -D <size>コマンドを使用して、ファイル・システムのサイズを指定されたサイズに増やします。

    たとえば、ブロック・サイズを4KBと仮定して、/mntのサイズを4TBに増やします。次に例を示します。

    sudo xfs_growfs -D 1073741824 /mnt
  2. xfs_growfs -dコマンドを使用して、基礎となるデバイスがサポートする最大サイズにファイル・システムのサイズを増やします。

    ファイル・システムのサイズを、基礎となるデバイスでサポートされる最大サイズまで増加させるには、-dオプションを指定します。

    sudo xfs_growfs -d /mnt

XFSファイル・システムのチェックおよび修復

xfs_repairコマンドを使用して、ファイルシステムの整合性をチェックし、ファイルシステムの修復を実行します。

XFSファイル・システムをマウントできない場合は、xfs_repairコマンドを使用するとその整合性を確認し、問題を修復できます。このコマンドでは、ジャーナル・ログがリプレイされ、ファイル・システムが正常にアンマウントされなかったことが原因の可能性がある不整合が表示されます。XFSファイル・システムをマウントするたびにジャーナルがリプレイされるため、ファイル・システムに矛盾がある場合を除き、修復を実行する必要はありません。

次の手順では、破損したジャーナルを使用してファイル・システムを検査および修復する際に実行する通常の手順を示します。

  1. xfs_metadumpコマンドを使用してファイル・システム・メタデータをバックアップします。

    メタデータ・イメージは、根本原因分析およびソフトウェア・バグの識別に役立ちます。たとえば、次のコマンドを実行します。

    sudo xfs_metadump /dev/sdb /tmp/sdb-metadata-image

    このコマンドは、アンマウントまたは凍結されたファイルシステム上でのみ実行してください。そうしないと、ダンプファイルが破損したり、矛盾したりする可能性があります。「XFSファイル・システムの凍結と停止解除」も参照してください。

    メタデータ・イメージ・ファイルを圧縮し、サポート・チームと連携してファイル・システムの問題を解決するときに使用できます。xfs_mdrestoreコマンドを使用して、メタデータ・イメージをファイル・システムにリストアできます。詳細は、xfs_metadump(8)およびxfs_mdrestore(8)のマニュアル・ページを参照してください。

  2. 可能な場合は、ファイル・システム・データをバックアップします。

    ファイル・システムのマウントが有効なときに適切なバックアップがない場合は、xfsdumpコマンドを使用すると、既存のファイル・システム・データのバックアップを試行できます。ただし、ファイル・システムのメタデータが破損した場合、このコマンドは失敗することがあります。

    たとえば、/mntにマウントされたファイル・システムを/dev/sdcのデバイスにバックアップするには、次を実行します。

    sudo xfsdump -l 0 -L "Full backup of /mnt $(date)" -f /dev/sdc /mnt

    詳細は、XFSファイル・システム・バックアップおよびリストアを参照してください。

  3. ファイル・システムの整合性をチェックします。
    XFSは、ファイル・システムがマウントされるたびにジャーナルをリプレイします。したがって、最初のファイル・システムの整合性チェックでは、ジャーナルが破損しているかどうかを判断します。ジャーナルが破損している場合は、修復の予行演習を行うと、破損や問題を解決するために何ができるかを示すのに役立ちます。
    1. ファイル・システムをマウントおよびアンマウントして、ファイル・システム・ジャーナルを再生します。たとえば、次を実行します:
      sudo mount /dev/sdb /mnt
      sudo umount /dev/sdb /mnt

      ファイル・システムをマウントできず、構造にクリーニング・エラーが必要な場合、ジャーナルは破損しています。

    2. ファイル・システムの一貫性チェックを実行して、修復で実行される変更を確認します。
      sudo xfs_repair -n /dev/sdb

      xfs_repair -nコマンドは、修復操作を完了する必要がある場合に、ファイル・システムに加える変更を示す出力を表示します。このコマンドを実行しても、ファイル・システムは変更されません。

  4. ファイル・システムの修復を実行するには、xfs_repairコマンドを使用します。
    1. xfs_repair -vコマンドを実行して、修復の実行中に詳細な出力を取得します。

      たとえば、次のコマンドを実行します。

      sudo xfs_repair -v /dev/sdb
    2. 最終手段として仕訳をリセットします。

      ジャーナル・ログが破損した場合、xfs_repair-Lオプションを指定することによって、ログを再設定できます。例:

      sudo xfs_repair -L /dev/sdb
      注意

      ログをリセットすると、ファイル・システムが不整合状態のままになり、データの損失と破損を招きます。xfs_dbコマンドの使用によるXFSファイル・システムのデバッグと修復に精通していない場合は、かわりに、ファイル・システムを再生成し、そのコンテンツをバックアップからリストアすることをお薦めします。

  5. ファイル・システムをマウントして検証します。

    たとえば、次のように実行します。

    sudo mount /dev/sdb /mnt

ファイル・システムをマウントできない場合や、適切なバックアップがない場合は、xfs_repairコマンドの実行が唯一の現実的なオプションとなります(xfs_dbコマンドの使用にまだ慣れている場合を除く)。

xfs_dbでは、XFSファイルシステムを手動でデバッグおよび修復するための内部コマンドセットが提供されます。このコマンドを使用すると、ファイル・システムのスキャン、およびそのデータ構造の参照および表示が可能になります。-xオプションを指定してエキスパート・モードを有効にすると、データ構造を変更できます。

sudo xfs_db [-x] device

詳細は、xfs_db(8)およびxfs_repair(8)のマニュアル・ページを参照してください。また、xfs_db内でhelpコマンドを実行してください。

XFSファイル・システムのデフレ

xfs_fsrコマンドを使用してXFSファイル・システム全体、またはXFSファイル・システム内の個々のファイルをデフラグします。

断片化が発生するのは、ファイルが連続していない方法でディスクに格納されている場合です。断片化は、次のようないくつかの要因によって引き起こされる可能性があります。

  • 小さいファイルの作成および削除の頻度:小さいファイルが頻繁に作成および削除されると、ディスク上の空き領域が多くの場所に分散します。この分散された空き領域により、新規または大きなファイルが連続しないチャンクに格納される場合があります。
  • ファイルの変更と増加のレベルが高い:ファイルが変更されて増加すると、そのデータが最初に割り当てられた領域に収まらない場合があります。ファイルのデータがディスクの異なる部分に分散されるため、断片化が発生する可能性があります。
  • Copy-on-Write操作: copy-on-write機能を利用する機能は、断片化の原因となる可能性があります。たとえば、ファイルが再リンクされ、その内容が変更された場合、エクステントを分割または変更して、ファイル・システムをさらに断片化できます。

断片化は、パフォーマンスに影響するため、アクセス時間が遅くなり、再リンク作成時間が長くなる可能性があります。

ファイルシステムのデフラグは、xfs_fsrコマンドを使用して管理されます。詳細は、xfs_fsr(8)のマニュアル・ページを参照してください。

  1. 個々のファイルをデフレフラグするには、次のコマンドを使用して、ファイル名をxfs_fsrの引数として指定します。
    sudo xfs_fsr file_path
  2. マウントされているすべてのXFSファイル・システムをデフラグするには、パスを指定せずにxfs_fsrコマンドを実行します。
    sudo xfs_fsr
    オプションを指定しないでxfs_fsrコマンドを実行すると、/etc/mtabにリストされているすべてのマウント済および書込み可能なXFSファイル・システムがデフレグレーションされます。デフラグ・プロセスは2時間実行され、エクステント数が最も多いファイルの上位10%をデフラグします。2時間経過すると、コマンドの進行状況が/var/tmp/.fsrlast_xfsファイルに記録されます。コマンドを再度実行すると、その時点からプロセスが再開されます。