ファイル システム スクラブ ジョブをトリガーすることで、ファイル システム全体のチェックを開始できます。スクラブ ジョブはデフォルトでバックグラウンドで実行され、ファイル システム全体の整合性をスキャンします。途中で見つかった不良ブロックを自動的に報告して修復しようとします。スクラブ ジョブは、ディスク ドライブ全体を処理する代わりに、実際に割り当てられたデータのみを処理します。割り当てられたディスク容量にもよりますが、これはディスクの表面全体のスキャンを実行するよりもはるかに高速です。
スクラビングには、すべてのディスクからすべてのデータを読み取り、チェックサムを検証することが含まれます。いずれかの値が正しくない場合は、別のドライブからブロックの適切なコピーを読み取ることにより、データを修正できます。スクラビング コードも読み取り時に自動的にスキャンします。使用頻度の高いファイル システムは週に 1 回、その他のファイル システムは月に 1 回スクラブすることをお勧めします。
以下は、利用可能な btrfs のスクラブ コマンドのリストです:
# btrfs scrub usage: btrfs scrub [command] [options] [path]|[device] btrfs scrub start [-BdqrRf] [-c ioprio_class -n ioprio_classdata] [path]|[device] Start a new scrub. If a scrub is already running, the new one fails. btrfs scrub cancel [path]|[device] Cancel a running scrub btrfs scrub resume [-BdqrR] [-c ioprio_class -n ioprio_classdata] [path]|[device] Resume previously canceled or interrupted scrub btrfs scrub status [-dR] [path]|[device] Show status of running or finished scrub verify checksums of data and metadata
btrfs Scrub ユーティリティ:例
ファイル システムのすべてのデバイスまたは 1 つのデバイスでスクラブを開始するには、btrfs Scrub Start コマンドを使用します。構文は次のとおりです。
# btrfs scrub start [-BdqrR] [-c ioprio_class ...
オプションの説明:
オプション | 説明 |
---|---|
-B | バックグラウンドで実行せず、終了時に統計を出力します。 |
-d | ファイル システムのデバイスごとに個別の統計情報を出力します。このオプションは、-B オプションと組み合わせて使用されます。 |
-q | Quiet モードで実行し、エラー メッセージと統計情報を省略します。 |
-r | 読み取り専用モードで実行し、エラーを修正しません。 |
-R | Raw 印刷モード。要約の代わりに完全なデータを印刷します。 |
-c ioprio_class | IO 優先度クラスを設定します (ionice のマニュアル ページを参照)。 |
-n ioprio_classdata | IO 優先順位クラスデータを設定します (ionice のマニュアル ページを参照してください)。 |
btrfs スクラブを開始しています
次の例では、/btrfs にマウントされている Btrfs ファイル システムでスクラブを開始します。
# btrfs scrub start /btrfs scrub started on /btrfs, fsid ba60ac96-1628-4656-b68b-c7327ff49179 (pid=11164)
スクラブ ジョブのステータスを取得するには、btrfs Scrub Status コマンドを使用します。 1 つのオプションが利用可能です:
- -d – ファイル システムのデバイスごとに個別の統計情報を出力します。
以下は、健全なファイルシステムでの btrfs スクラブ ステータス コマンドの例です。ファイルシステムが破損している場合は、修正されたエラーが出力に表示されます。
# btrfs scrub status /btrfs scrub status for ba60ac96-1628-4656-b68b-c7327ff49179 scrub started at Fri Mar 30 14:29:47 2018 and finished after 00:00:02 total bytes scrubbed: 325.29MiB with 0 errors
上記のコマンドで「-d」オプションを使用すると、以下の例に示すように、デバイスごとのレベルのステータスを取得できます。
# btrfs scrub status /btrfs -d scrub status for ba60ac96-1628-4656-b68b-c7327ff49179 scrub device /dev/sda (id 1) history scrub started at Fri Mar 30 14:29:47 2018 and finished after 00:00:02 total bytes scrubbed: 325.29MiB with 0 errors
btrfs スクラブ ジョブのキャンセル/再開
実行中のスクラブ ジョブをキャンセルすることもできます。進行状況はスクラブ進行状況ファイルに保存され、後でスクラブを再開できます。スクラブをキャンセルするには:
# btrfs scrub cancel /btrfs
キャンセルまたは中断されたスクラブ ジョブを再開するには:
# btrfs scrub resume /btrfs
スクラブ再開コマンドには、スクラブ開始コマンドと同じオプションがあります。 Btrfs は、ルート ID 生成の最後の 2 分間を 30 秒間隔で保存します。ファイル システムに変更がなくても、Btrfs はこれらの世代をローリングし続けます。
スクラブでエラーが修正されない場合は、次のマウント オプションを使用して既知の適切な B ツリーにロールバックできます。これは、ツリーの残りの部分がコピー オン ライトのために利用可能であることを前提としています。
# mount –o recovery /dev/sda /btrfs