マウントされたパーティションをfsckできないのはなぜですか?


43

マウントされたパーティションをfsckしてはならないことはよく知られています。ファイルシステムがfsckによって書き込まれた場合(たとえば、-aオプションが使用された場合)、これが破損に容易につながる方法を理解できますが、マウントされたディスクで読み取り専用チェックを実行できないのはなぜですか?

回答:


28

から:

http://linux.die.net/man/8/fsck.ext3

「一般的に、実行しても安全ではないことに注意してe2fsckマウントされたファイルシステム上で。唯一の例外はある-nオプションが指定され、かつ-c-lまたは-Lオプションが指定されていない。しかし、そうしても安全である場合でも、によって印刷結果がe2fsckありますファイルシステムがマウントされている場合は無効です。マウントされてe2fsckいるファイルシステムをチェックするかどうかを尋ねられた場合、唯一の正しい答えは「いいえ」です。仕方。 "


3
1つの例外:ファイルシステムが読み取り専用でマウントされ、fsckも読み取り専用モードである場合、問題はありません
デミ14

31

基本的な問題は、ファイルシステムチェッカーが(通常)ファイルシステムの一部ではないことです。代わりに、カーネル内のファイルシステムコードと同じディスクを読み書きする別個のプログラムです。その結果、アクティブなファイルシステムでfsckを実行すると、同じデータ(ディスク)を読み取り(および潜在的に変更)する2つの異なるエンティティが存在しますが、それらは相互に調整されません。その結果、他の人が指摘したように、ほとんどのチェッカーは、実行中に他の誰もファイルシステムのメタデータを変更していないことを期待しています。カーネルファイルシステムがチェッカーが予期しない何かを変更すると、混乱したり、誤ったエラーを報告したりします。

「オンライン」で実行するように明示的に設計されたチェッカーを備えたファイルシステムがいくつかあります(つまり、ファイルシステムがアクティブな間)。FFS / UFSの新しいバージョンは、ファイルシステムの最新のスナップショット(読み取り専用、ポイントインタイム、コピーオンライトレプリカ)に対してfsckを実行することでこれを行います。割り当てビットマップの不一致などの問題を検出した場合、rawディスクに書き込むのではなく、システムコールを介して問題を修正します。これにより、アクティブなファイルシステムと調整できます。

NetAppのWAFLには、オンラインチェックツールもあります。おそらく他にもあります。


11

読み取り専用モードでfsckを使用していても、読み取り/書き込みマウントされたパーティションでfsckを実行するのはばかげています。ファイルシステムはfsckの下で変更され、fsckがファイルシステムからキャッシュするメモリ内データは無効になります(したがって、fsckには不整合が発生します)。読み取り専用でマウントされたファイルシステムでfsckを読み取り専用モードで実行し、有効な結果を得ることができます。読み取り専用でマウントされたファイルシステムでfsckを読み取り/書き込みモードで実行すると、実行中にfsckがファイルシステムに変更を加えると、カーネルはその下でファイルシステム構造が予期せずに変化するのを見ることになります。それも悪いでしょう。


「読み取り専用でマウントされたfilsystemでfsckを読み取り/書き込みモードで実行すると、カーネルはその下で予期せずにファイルシステム構造が変化するのを見ることになります」と書きました。読み取り専用でマウントされたfilsystemでファイルシステム構造が変更されるのはなぜですか?
ゲットリ

:あなたは病棟後に再起動する場合は、この答えによると、読み取り専用のパーティションにfsckが、okですserverfault.com/a/405252/90324
guettli

@guettli-あなたがリンクした答えは、私とほとんど同じことを言っています。(スペルミスを修正しました。ありがとうございます。)カーネルがファイルシステムをマウントしている間にfsckが変更を行った場合、カーネル内の読み取り専用キャッシュデータはfsckによる変更を考慮して無効になる可能性があります。もちろん、後で再起動できます。また、エキサイティングなカーネルバグを発見し、リブートする機会を得る前にカーネルをパニックに陥れるかもしれません。
エヴァンアンダーソン

9

おそらくI / Oスループットが低下するという事実は別として、fsckの実行中にファイルシステムが変更されていると、fsckが変更を追跡して矛盾を報告する方法はありません。

XFSなどの一部のファイルシステムでは、ファイルシステムが読み取り/書き込みでマウントされている間に一貫性のチェックを実行できますが、誤ったエラーが報告される可能性が高いことに注意してください。xfs_checkチェックを実行する前に、ファイルシステムをアンマウントするか、読み取り専用でマウントすることをお勧めします。


6

まあ、fsckのポイントはファイルシステムの不整合を報告することです。

ただし、これらのチェックの多くには、複数のFS構造が含まれます。誰かがFSを変更している(データを書き込んでいる)場合、これらの構造は一時的に同期していない可能性があります。fsckは、実際には問題ではありませんが、これを矛盾と見なします。fsckには、矛盾が一時的なものなのか、修正が必要な永続的な問題なのかを判断する方法がありません。そのため、これはおそらく機能しません(FSがオンラインチェックを許可するように特別に設計されている場合を除きます。一部は機能しますが、ext3は機能しません)。


3

まあ、できます。fsck -n / dev / sda1は、少なくともext3では正確にそれを行います。私はちょうどそれをテストしました:)


-4

動きのあるブレンダーに手を差し込んで怪我をしないように、あるいは、下の歩道に置いた小さなクッションの山を狙いながら背の高い建物から飛び降りることができるように。

しかし、なぜ、あなた自身の死亡率をテストする以外に、あなたはどうするでしょうか?上司は、メールサーバーが現在ルートドライブを認識しない理由を見つけた場合、確かにもう一度テストするからです。


実際、動いているブレンダーを見たり、高層ビルの端を一目見たりするのがより良い例えだと思います。読み取り専用。
マイク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.