5 XFSファイル・システムの管理
警告:
Oracle Linux 7は現在延長サポート中です。詳細は、Oracle Linux拡張サポートおよびOracleオープン・ソース・サポート・ポリシーを参照してください。
できるだけ早くアプリケーションとデータをOracle Linux 8またはOracle Linux 9に移行してください。
この章では、Oracle LinuxでXFSファイル・システムを管理するためのタスクについて説明します。
XFSファイル・システムについて
XFSは、もともとSilicon Graphics, Inc.によってIRIXオペレーティング・システム用に作成され、後にLinuxに移植された高性能のジャーナル・ファイル・システムです。ファイル・システムが多数のストレージ・デバイスにまたがる場合でも、XFSの並列I/Oパフォーマンスのおかげで、I/Oスレッド、ファイル・システムの帯域幅、ファイルおよびファイル・システムのサイズに、高いスケーラビリティが確保されます。
XFSの典型的な使用事例には、FC接続された複数のディスク・アレイから構成されているストレージ・サーバーを複数使用して、その上に数百テラバイトのファイル・システムを実装する場合があります。
Oracle Linux 7では、ルート(/
)またはboot
ファイル・システムでのXFSの使用がサポートされています。
XFSは非常に大きなファイル・システムの実装を必要とするエンタープライズ・レベルのコンピューティング環境でのデプロイメントに適していますが、それは次のような多くの機能によるものです。
-
XFSはメタデータ操作のためのジャーナルを実装しており、それにより、停電またはシステム・クラッシュの後でもファイル・システムの整合性が保証されます。XFSは、ファイル・システムの更新を非同期で循環バッファ(journal)に記録しており、それにより、ディスクに対する実際のデータ更新のコミットが可能です。ジャーナルは、ファイル・システムのデータ・セクションに内部的に配置することも、別のデバイスに外部的に配置してディスク・アクセスの競合を低下させることもできます。システム・クラッシュや停電が発生した場合、ファイル・システムの再マウント時にジャーナルが読み取られ、保留中のメタデータ操作がすべてリプレイされて、ファイル・システムの整合性が確保されます。このリカバリ速度は、ファイル・システムのサイズに依存しません。
-
XFSは複数の割当てグループに内部的に区分けされます。これが固定サイズの仮想ストレージ領域です。作成するファイルやディレクトリはすべて、複数の割当てグループにまたがることが可能です。各割当てグループは、他の割当てグループとは独立に、独自のinodeと空き領域の組合せを管理して、I/O操作のスケーラビリティと並列性を確保します。ファイル・システムが多くの物理デバイスにまたがる場合、割当てグループによりチャネルをストレージ・コンポーネントに基盤から分離することができるため、スループットを最適化できます。
-
XFSはエクステント・ベースのファイル・システムです。ファイルのフラグメンテーションと複数箇所への散在を少なく保つために、各ファイルのブロックは可変長のエクステントを持つことができます。ここで、各エクステントは1つ以上の連続ブロックで構成されています。XFSの領域割当てスキームは、ファイル・システムの操作に使用できる空きエクステントを効率的に見つけるように設計されています。XFSでは、散在するファイル上の空き部分にストレージが割り当てられません。可能であれば、ファイルのエクステント割当てマップは、ファイルのinodeに格納されます。大きな割当てマップは、割当てグループによって維持されるデータ構造に格納されます。
-
基礎にあるソフトウェア・ベースまたはハードウェア・ベースのストライプ・アレイ上に作成するXFSファイル・システムのスループットを最大化するには、mkfs.xfsコマンドの-dオプションに対してsuおよびsw引数を使用し、各ストライプ・ユニットのサイズとストライプ当たりのユニット数を指定できます。XFSは、その情報を使用して、ストレージに対して適切なようにデータ、inodeおよびジャーナルを調整します。
lvm
ボリューム、md
ボリュームおよび一部のハードウェアRAID構成では、XFSは最適なストライプ・パラメータを自動的に選択できます。 -
フラグメンテーションを少なくし、パフォーマンスを向上させるために、XFSは遅延割当てを実装します。つまり、データ用のファイル・システム・ブロックをバッファ・キャッシュに確保し、オペレーティング・システムがそのデータをディスクにフラッシュする際にブロックを割り当てます。
-
XFSはファイル用の拡張属性をサポートします。各属性値のサイズは最大64KBで、各属性を
root
ネームスペースまたはuser
ネームスペースに割り当てることができます。 -
XFSでは、直接I/Oにより、スループットが高く、キャッシュされないI/Oが実装されます。アプリケーションとストレージ・デバイスの間で直接DMAを実行することで、デバイスのI/O帯域幅を完全利用することができるためです。
-
ボリューム・マネージャ、ハードウェア・サブシステムおよびデータベースに用意されているスナップショット機能をサポートするには、xfs_freezeコマンドを使用して、XFSファイル・システムのI/Oを停止して再起動します。XFSファイル・システムの停止と停止解除を参照してください。
-
アクティブなXFSファイル・システムで個々のファイルをデフラグするには、xfs-fsrコマンドを使用します。XFSファイル・システムのデフラグを参照してください。
-
XFSファイル・システムをサイズ調整するには、xfs_growfsコマンドを使用します。XFSファイル・システムのサイズ調整を参照してください。
-
稼働中のXFSファイル・システムをバックアップおよびリストアするには、xfsdumpおよびxfsrestoreコマンドを使用します。XFSファイル・システムのバックアップとリストアを参照してください。
-
XFSはユーザー、グループ、およびファイル・システムのマウント時に初期化されたブロック上のプロジェクト・ディスク割当てとinode使用量をサポートします。プロジェクト・ディスク割当てを使用すると、個々のディレクトリ階層に、どのユーザーまたはグループが書き込みアクセスを持っているかに関係なく、XFSファイル・システム内部で、そのディレクトリ階層に対して制限を設定できます。
XFSの詳細は、https://xfs.wiki.kernel.org/を参照してください。
外部XFSジャーナルについて
XFSジャーナルのデフォルトの場所は、データと同じブロック・デバイス上です。ジャーナルへの同期メタデータ書込みは、関連付けられているデータ書込みが開始する前に正常に完了する必要があるため、データベース・サーバー上の典型的なワークロード・パターンでは、そのようなレイアウトはディスク競合を招く可能性があります。この問題を解決するには、I/Oパスが低遅延である別の物理デバイスにジャーナルを配置します。通常、ジャーナルはごくわずかのストレージ領域しか必要としないため、そのような配置により、ファイル・システムのI/Oスループットを大幅に改善できます。ジャーナルに適切なホスト・デバイスは、SSD(固体ドライブ)デバイス、またはバッテリ・バックアップ式ライトバック・キャッシュを持つRAIDデバイスです。
XFSファイル・システム作成時に、指定されたサイズの外部ジャーナルを確保するには、mkfs.xfsコマンドに-l logdev=device,size=sizeオプションを指定します。sizeパラメータを省略すると、mkfs.xfsは、ファイル・システムのサイズに基づいてジャーナル・サイズを選択します。外部ジャーナルを使用するようにXFSファイル・システムをマウントするには、mountコマンドに-o logdev=deviceオプションを指定します。
XFS書込みバリアについて
書込みバリアを使用すると、基礎にあるデバイスへのインメモリー・データのフラッシングをサポートするストレージ・ハードウェア上で、ファイル・システムの整合性が保証されます。この機能は、揮発性ライトバック・キャッシュを持つデバイス上に格納されたXFSジャーナルへの書込み操作で特に重要です。
デフォルトでは、XFSファイル・システムは、書込みバリア付きでマウントされます。バッテリ・バックアップ式の不揮発性キャッシュを備えたLUN上にXFSファイル・システムを作成する場合、書込みバリアを使用すると、必要以上に頻繁にデータのフラッシュを要求するため、I/Oパフォーマンスが低下します。そのような場合、mountコマンドに-o nobarrierオプションを指定してファイル・システムをマウントすることによって、書込みバリアを削除できます。
XFSパッケージのインストール
ノート:
Oracle Linux Yum ServerからXFSパッケージを入手することもできます。
システムにXFSパッケージをインストールするには:
-
ULNにログインし、システムで
ol7_x86_64_latest
チャネルをサブスクライブします。 -
システム上で、yumを使用して
xfsprogs
パッケージとxfsdump
パッケージをインストールします。sudo yum install xfsprogs xfsdump
-
XFS開発およびQAパッケージが必要な場合は、使用中のシステムを追加で
ol7_x86_64_optional
チャネルにサブスクライブし、yumを使用してインストールします。sudo yum install xfsprogs-devel xfsprogs-qa-devel
XFSファイル・システムの作成
mkfs.xfsコマンドを使用してXFSファイル・システムを作成できます。たとえば。
sudo mkfs.xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0 isize=256 agcount=32, agsize=8473312 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=271145984, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
ストライプ・ユニット・サイズが32KBで、ストライプ当たり6つのユニットを持つXFSファイル・システムを作成するには、-dオプションに、suおよびsw引数を指定します。次に例を示します。
sudo mkfs.xfs -d su=32k,sw=6 /dev/vg0/lv1
詳細は、mkfs.xfs(8)
のマニュアル・ページを参照してください。
XFSファイル・システムの変更
ノート:
マウントされているXFSファイル・システムは変更できません。
xfs_adminコマンドを使用すると、マウントされていないXFSファイル・システムを変更できます。たとえば、レイジー・カウンタの有効/無効の切替え、ファイル・システムUUIDの変更、またはファイル・システム・ラベルの変更が可能です。
マウントされていないXFSファイル・システムの既存のラベルを表示し、新しいラベルを適用するには:
sudo xfs_admin -l /dev/sdb
label = ""
sudo xfs_admin -L "VideoRecords" /dev/sdb
writing all SBs new label = "VideoRecords"
ノート:
ラベルの最大長は12文字です。
既存のUUIDを表示してから新しいUUIDを生成するには:
sudo xfs_admin -u /dev/sdb
UUID = cd4f1cc4-15d8-45f7-afa4-2ae87d1db2ed
sudo xfs_admin -U generate /dev/sdb
writing all SBs new UUID = c1b9d5a2-f162-11cf-9ece-0020afc76f16
UUIDを完全にクリアするには:
sudo xfs_admin -U nil /dev/sdb
Clearing log and setting UUID writing all SBs new UUID = 00000000-0000-0000-0000-000000000000
レイジー・カウンタを無効にしてから再び有効にするには:
sudo xfs_admin -c 0 /dev/sdb
Disabling lazy-counters
sudo xfs_admin -c 1 /dev/sdb
Enabling lazy-counters
詳細は、mkfs_admin(8)
マニュアル・ページを参照してください。
XFSファイル・システムのサイズ調整
ノート:
現在アンマウントされているXFSファイル・システムはサイズを調整できません。
現在、XFSファイル・システムを縮小するコマンドはありません。
xfs_growfsコマンドを使用して、マウントされたXFSファイル・システムのサイズを増加できます(基礎となるデバイスにその変更を格納する領域が存在する場合)。コマンドは、基礎となるデバイスのレイアウトやサイズには影響しません。利用できる物理ストレージを増やす場合は、必要に応じて基礎ボリューム・マネージャを使用します。たとえば、LVMボリューム・グループで利用可能な記憶域を増やすにはvgextendコマンドを、ファイル・システムが格納されている論理ボリュームのサイズを増やすにはlvextendをそれぞれ使用できます。
partedコマンドを使用してXFSファイル・システムが含まれているパーティションのサイズは変更できません。かわりに、サイズを大きくしてパーティションを再作成し、バックアップ(元のパーティションが削除済の場合)または元のパーティションのコンテンツ(ディスク領域を解放するための削除を行っていない場合)から、そのコンテンツをリストアする必要があります。
/myxfs1
のサイズを4TBに増やすには、次のコマンドを入力します。 sudo xfs_growfs -D 1073741824 /myxfs1ファイル・システムのサイズを、基礎となるデバイスでサポートされる最大サイズまで増加するには、-dオプションを指定します。
sudo xfs_growfs -d /myxfs1
詳細は、xfs_growfs(8)
のマニュアル・ページを参照してください。
XFSファイル・システムの停止と停止解除
XFSファイル・システムのハードウェア・ベースのスナップショットをとる必要がある場合、書込み操作を一時的に停止できます。
ノート:
lvcreateコマンドを使用してLVMスナップショットをとる場合、明示的に書込み操作を停止する必要はありません。
XFSファイル・システムを停止および停止解除するには、xfs_freezeコマンドで、-fオプションおよび-uオプションを指定します。次に例を示します。
sudo xfs_freeze -f /myxfs
次に、ファイル・システムのスナップショットを作成します。その後、次のように入力します。
sudo xfs_freeze -u /myxfs
ノート:
xfs_freezeコマンドは、btrfs
、ext3
およびext4
ファイル・システムでも使用できます。
詳細は、xfs_freeze(8)
のマニュアル・ページを参照してください。
XFSファイル・システム上での割当て設定
次のリストは、XFSファイル・システム上で割当てを有効にするために指定できるmountオプションを示しています。
-
gqnoenforce
グループ割当てを有効にします。使用量を報告しますが、使用量制限を強制適用しません。
-
gquota
グループ割当てを有効にして、使用量制限を強制適用します。
-
pqnoenforce
プロジェクト割当てを有効にします。使用量を報告しますが、使用量制限を強制適用しません。
-
pquota
プロジェクト割当てを有効にして、使用量制限を強制適用します。
-
uqnoenforce
ユーザー割当てを有効にします。使用量を報告しますが、使用量制限を強制適用しません。
-
uquota
ユーザー割当てを有効にして、使用量制限を強制適用します。
すべてのユーザー用のmyxfs
ファイル・システムのブロック使用量制限と現在の使用量を表示するには、xfs_quotaコマンドを使用します。
sudo xfs_quota -x -c 'report -h' /myxfs
User quota on /myxfs (/dev/vg0/lv0) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] guest 0 200M 250M 00 [------]
次の形式のコマンドを使用すると、df-hコマンドの方法により、それぞれブロックとinodeの、未使用の数と使用済の数が表示されます。
sudo xfs_quota -c 'df -h' /myxfs
Filesystem Size Used Avail Use% Pathname /dev/vg0/lv0 200.0G 32.2M 20.0G 1% /myxfs
sudo xfs_quota -c 'df -ih' /myxfs
Filesystem Inodes Used Free Use% Pathname /dev/vg0/lv0 21.0m 4 21.0m 1% /myxfs
-xオプションを指定してエキスパート・モードに入ると、limitなどのサブコマンドを使用して、個別ユーザーごとのblockおよびinode使用量の弱い制限および強い制限を設定できます。次に例を示します。
sudo xfs_quota -x -c 'limit bsoft=200m bhard=250m isoft=200 ihard=250 guest' /myxfs
言うまでもなく、このコマンドを使用するには、ユーザー割当てを有効にしてファイル・システムをマウントしている必要があります。
グループ割当てを有効にしてマウントしたXFSファイル・システム上でグループに対して制限を設定するには、limitに-gオプションを指定します。次に例を示します。
sudo xfs_quota -x -c 'limit -g bsoft=5g bhard=6g devgrp' /myxfs
詳細は、xfs_quota(8)
のマニュアル・ページを参照してください。
プロジェクト割当ての設定
ユーザーおよびグループの割当ては、ext4
など、他のファイル・システムでサポートされます。XFSファイル・システムを使用すると、さらに、管理対象ツリーと呼ばれる、ファイル・システムの個別ディレクトリ階層に割当てを設定できます。各管理対象ツリーは、プロジェクトID と、オプションのプロジェクト名によって一意に識別されます。あるディレクトリ階層のディスク使用量を制御できると、特権ユーザーの割当て制限を他の方法で設定したくない場合(たとえば、/var/log
)や、多くのユーザーまたはグループが1つのディレクトリ(たとえば、/var/tmp
)への書込みアクセス権を持っている場合に有効です。
-
プロジェクト割当てを有効にして、XFSファイル・システムをマウントします。
sudo mount -o pquota device mountpoint
たとえば、
/myxfs
ファイル・システムのプロジェクト割当てを有効化するには、次の操作を行います。sudo mount -o pquota /dev/vg0/lv0 /myxfs
-
/etc/projects
ファイルに、ディレクトリ階層に対して一意のプロジェクトIDを定義します。echo project_ID:mountpoint/directory >> /etc/projects
たとえば、ディレクトリ階層
/myxfs/testdir
にプロジェクトID 51を設定するには、次の操作を行います。echo 51:/myxfs/testdir >> /etc/projects
-
プロジェクト名をプロジェクトIDにマップする
/etc/projid
ファイル内にエントリを作成します。echo project_name:project_ID >> /etc/projid
たとえば、プロジェクト名
testproj
をID 51のプロジェクトにマップするには、次の操作を行います。echo testproj:51 >> /etc/projid
-
xfs_quotaのprojectサブコマンドを使用して、プロジェクトのXFSファイル・システムで管理対象ツリーを定義します。
sudo xfs_quota -x -c ’project -s project_name’ mountpoint
たとえば、プロジェクト
testproj
の/myxfs
ファイル・システムでディレクトリ階層/myxfs/testdir
に対応する管理対象ツリーを定義するには、次の操作を行います。sudo xfs_quota -x -c ’project -s testproj’ /myxfs
-
limitサブコマンドを使用して、プロジェクトのディスク使用量に制限を設定します。
sudo xfs_quota -x -c ’limit -p arguments project_name’ mountpoint
たとえば、プロジェクト
testproj
に対してディスク容量の強い制限を10GBに設定するには、次の操作を行います。sudo xfs_quota -x -c ’limit -p bhard=10g testproj’ /myxfs
詳細は、projects(5)
、projid(5)
およびxfs_quota(8)
のマニュアル・ページを参照してください。
XFSファイル・システムのバックアップとリストア
xfsdump
パッケージには、xfsdumpユーティリティとxfsrestoreユーティリティが含まれます。xfsdumpは、1つのXFSファイル・システム内のファイルを調べ、バックアップが必要なファイルを特定し、ストレージ・メディアにコピーします。xfsdumpを使用して作成したバックアップはすべて、エンディアン形式が異なるアーキテクチャのシステム間で移植できます。xfsrestoreは、XFSファイル・システムの完全バックアップまたは増分バックアップをリストアします。バックアップからは、個別ファイルやディレクトリ階層をリストアすることもできます。
ノート:
LVMスナップショットはボリュームのスパース・クローンをすぐに作成しますが、xfsdumpはそれと異なり、時間をかけてファイル・システム・データのコピーを作成します。
xfsdumpコマンドを使用して、XFSファイル・システムのバックアップを、テープ・ドライブなどのデバイスや、様々なファイル・システム上のバックアップ・ファイルに作成できます。バックアップは同じデバイス上で書き込まれる複数の物理メディアにまたがることができ、また、複数のバックアップを同じメディアに書き込むことができます。ファイルには、単一のバックアップのみを書き込むことができます。このコマンドは、物理メディア上にある既存のXFSバックアップを上書きしません。既存のバックアップに上書きする必要がある場合は、適切なコマンドを使用して物理メディアを消去する必要があります。
たとえば、次のコマンドは、XFSファイル・システム/myxfs
のレベル0(ベース)バックアップをデバイス/dev/st0
に書き込み、そのバックアップにセッション・ラベルを割り当てます。
sudo xfsdump -l 0 -L "Backup level 0 of /myxfs `date`" -f /dev/st0 /myxfs
次のコマンドを使用して、既存のバックアップからの増分ダンプを作成できます。
sudo xfsdump -l level -L "Backup level level of /myxfs `date`" -f /dev/st0 /myxfs
レベル1バックアップはレベル0バックアップ以降のファイル・システムの変更のみ、レベル2バックアップは最新のレベル1バックアップ以降の変更のみを記録します。以後同様にレベル9まで続きます。
[Ctrl]+[C]
を入力してバックアップを中断し、xfsdumpに-Jオプションを指定しなかった場合(ダンプ・インベントリを抑制)、-Rオプションを指定することによって、後日ダンプを再開できます。
sudo xfsdump -R -l 1 -L "Backup level 1 of /myxfs `date`" -f /dev/st0 /myxfs
この例では、以前中断したセッションのバックアップ・セッション・ラベルはオーバーライドされます。
xfsrestoreコマンドを使用すると、XFSファイル・システムに対して行ったバックアップに関する情報を参照したり、バックアップからデータをリストアしたりできます。
xfsrestore -Iコマンドを使用すると、セッションIDやセッション・ラベルなど、バックアップに関してわかっている情報が表示されます。バックアップ・メディアから特定のバックアップ・セッションを復元する場合、セッションIDとセッション・ラベルのいずれかを指定できます。
たとえば、セッションIDを指定してレベル0バックアップからXFSファイル・システムをリストアするには、次のコマンドを使用します。
sudo xfsrestore -f /dev/st0 -S c76b3156-c37c-5b6e-7564-a0963ff8ca8f /myxfs
-rオプションを指定すると、レベル0バックアップと、そのバックアップに基づいている高レベルのバックアップから、すべてのデータを累積的にリカバリすることができます。
sudo xfsrestore -r -f /dev/st0 -v silent /myxfs
このコマンドはレベル0バックアップに基づくバックアップをアーカイブ内で検索し、各バックアップを順番にリストアするかどうかの選択を求めてきます。選択したバックアップをリストアすると、コマンドは終了します。このコマンドは複数回実行する必要があります。最初にレベル0バックアップのリストアを選択し、続いてそれ以降の高レベル・バックアップを、ファイル・システム・データをリストアする必要がある最新のバックアップに達するまで、選択してリストアします。
ノート:
XFSファイル・システムの累積リストアが完了したら、xfsrestoreが宛先ディレクトリ内に作成したhousekeeping
ディレクトリを削除してください。
次の例に示すように、選択したファイルまたはサブディレクトリの内容をバックアップ・メディアからリカバリすることができます。この場合、指定されたセッション・ラベルを持つバックアップから、/myxfs/profile/examples
の内容が/tmp/profile/examples
にリカバリされます。
sudo xfsrestore -f /dev/sr0 -L "Backup level 0 of /myxfs Sat Mar 2 14:47:59 GMT 2013" -s profile/examples /usr/tmp
別の方法として、-iオプションを指定すると、インタラクティブにバックアップを参照できます。
sudo xfsrestore -f /dev/sr0 -i
この形式でコマンドを使用すると、まるでファイル・システムであるかのようにバックアップを参照できます。ディレクトリの変更、ファイルの一覧表示、ファイルの追加、ファイルの削除、バックアップからのファイル抽出が可能です。
XFSファイル・システムの内容全体を別のファイル・システムにコピーするには、xfsdumpとxfsrestoreを組み合せ、-Jオプションを使用して、コマンドが実行する通常のダンプ・インベントリ・ハウスキーピングを抑制します。
sudo xfsdump -J - /myxfs | xfsrestore -J - /myxfsclone
詳細は、xfsdump(8)
とxfsrestore(8)
のマニュアル・ページを参照してください。
XFSファイル・システムのデフラグ
xfs_fsrコマンドを使用して、XFSファイル・システム全体、またはXFSファイル・システム内の個々のファイルをデフラグできます。XFSはエクステント・ベースのファイル・システムなので、ファイル・システム全体をデフラグすることは通常不要であり、お薦めしません。
個々のファイルをデフラグするには、ファイルの名前を、xfs_fsrに引数として指定します。
sudo xfs_fsr pathname
xfs_fsrコマンドをオプションなしで実行すると、/etc/mtab
にリストされている、現在マウントされている書込み可能なXFSファイル・システムがすべてデフラグされます。2時間の間、コマンドは各ファイル・システムを順番に処理し、最も多くのエクステントがあるファイルの上位10パーセントをデフラグしようとします。2時間経過すると、コマンドによりファイル/var/tmp/.fsrlast_xfs
に進捗が記録されます。このコマンドを再び実行すると、そのポイントから再開されます。
詳細は、xfs_fsr(8)
のマニュアル・ページを参照してください。
XFSファイル・システムのチェックと修復
ノート:
Oracle Linux Premier Supportアカウントを持っていて、XFSファイル・システムのマウントに関する問題が発生している場合は、お問合せの際に/var/log/messages
ファイルのコピーをOracleサポートに送信してください。
XFSファイル・システムをマウントできない場合、xfs_repair -nコマンドを使用して整合性を確認できます。このコマンドは通常、問題があると考えられる未マウントのファイル・システムのデバイス・ファイルでのみ実行します。xfs_repair -nコマンドは、修復操作を完了する必要がある場合に、ファイル・システムに加えられる変更を示す出力を表示しますが、ファイル・システムを直接変更することはありません。
ファイル・システムはマウントできるが、適切なバックアップがない場合、xfsdumpを使用して既存のファイル・システム・データのバックアップを試行できます。ただし、ファイル・システムのメタデータが大きく破損している場合、コマンドが失敗することがあります。
xfs_repairコマンドを使用して、そのデバイス・ファイルで指定されているXFSファイル・システムの修復を試行できます。コマンドはジャーナル・ログをリプレイして、ファイル・システムが正常にアンマウントされなかったことが原因の可能性がある不整合性を修正します。ジャーナルはXFSファイル・システムをマウントするたびにリプレイされるため、ファイル・システムに不整合がある場合以外、通常、コマンドを使用する必要はありません。
sudo xfs_repair device
ジャーナル・ログが破損した場合、xfs_repairに-Lオプションを指定することによって、ログをリセットできます。
注意:
ログをリセットすると、ファイル・システムが不整合状態のままになり、データの損失と破損を招くことがあります。xfs_dbを使用したXFSファイル・システムのデバッグと修復に熟練しているのでなければ、そのかわりにファイル・システムを作成しなおして、バックアップから内容をリストアすることをお薦めします。
ファイル・システムをマウントできない、または適切なバックアップがない場合、xfs_dbの使用に熟練していないかぎり、xfs_repairを実行することが現実的な唯一の選択肢です。
xfs_dbは、XFSファイル・システムを手動でデバッグおよび修復するための内部コマンド・セットです。このコマンドを使用すると、ファイル・システムのスキャン、およびデータ構造の参照と表示が可能です。-xオプションを指定してエキスパート・モードを有効にすると、データ構造を変更できます。
sudo xfs_db [-x] device
詳細は、xfs_db(8)
およびxfs_repair(8)
の各マニュアル・ページ、およびxfs_db内のhelpコマンドを参照してください。