web-dev-qa-db-ja.com

fsckはext4ファイルシステムエラーを表示しますが、システムパーティションから起動する場合のみ

Ext4システムパーティションに問題があります。 17.04(16.10からアップグレード)を実行していますが、問題はすでに16.10に存在していました。

時々(ほとんどの場合、システムをサスペンドから復帰させた後)、システムは多数のext4ファイルシステムエラーでクラッシュします。

今、ファイルシステムをチェックするとき

Sudo fsck -n /dev/nvme0n1p2

fsckはファイルシステムがクリーンであると主張します

fsck from util-linux 2.29
e2fsck 1.43.4 (31-Jan-2017)
Warning!  /dev/nvme0n1p2 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/nvme0n1p2: clean, 434755/15089664 files, 46490132/60347136 blocks

ただし、チェックを強制すると、大量のエラーが発生します。

Sudo fsck -nf /dev/nvme0n1p2
fsck from util-linux 2.29
e2fsck 1.43.4 (31-Jan-2017)
Warning!  /dev/nvme0n1p2 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
Pass 1: Checking inodes, blocks, and sizes
Inodes that were part of a corrupted Orphan linked list found.  Fix? no

Inode 131275 was part of the orphaned inode list.  IGNORED.
Inode 135221 was part of the orphaned inode list.  IGNORED.
Inode 135244 was part of the orphaned inode list.  IGNORED.
Inode 135260 was part of the orphaned inode list.  IGNORED.
Inode 135263 was part of the orphaned inode list.  IGNORED.
Inode 135268 was part of the orphaned inode list.  IGNORED.
Deleted inode 135272 has zero dtime.  Fix? no

Inode 135274 was part of the orphaned inode list.  IGNORED.
Inode 135384 was part of the orphaned inode list.  IGNORED.
Inode 135396 was part of the orphaned inode list.  IGNORED.
Inode 135697 was part of the orphaned inode list.  IGNORED.
Inode 135711 was part of the orphaned inode list.  IGNORED.
Inode 135713 was part of the orphaned inode list.  IGNORED.
Inode 12059086 was part of the orphaned inode list.  IGNORED.
Inode 12061077 was part of the orphaned inode list.  IGNORED.
Inode 12062594 was part of the orphaned inode list.  IGNORED.
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(40927357--40927367) -(40927563--40927569) -(40940652--40940653) -(40940676--40940681) -(48296964--48296970) -(48296978--48296984) -(48304145--48304165) -(48304315--48304321) -(48326677--48326690) -(48326733--48326739) -(48326775--48326781)
Fix? no

Free blocks count wrong (13857004, counted=13856542).
Fix? no

Inode bitmap differences:  -131275 -135221 -135244 -135260 -135263 -135268 -135272 -135274 -135384 -135396 -135697 -135711 -135713 -12059086 -12061077 -12062594
Fix? no

Free inodes count wrong (14654909, counted=14654758).
Fix? no


/dev/nvme0n1p2: ********** WARNING: Filesystem still has errors **********

/dev/nvme0n1p2: 434755/15089664 files (0.3% non-contiguous), 46490132/60347136 blocks

私の問題は、システムパーティションであり、アンマウントできないため、これらのエラーを修正できないことです。 ただし、外部ドライブまたはリカバリモードで起動した場合、fsckは-fを使用してもエラーを報告しません。ただし、システムを再起動した後、エラーは持続します。私は現在、どのようにファイルシステムを修正できるのか迷っています。どんな助けも大歓迎です。

6
Maeher

現在fsck -nf <filesystem>を使用してr/wモードでマウントされているext4ファイルシステムでファイルシステムチェックを強制すると、投稿したようなエラーメッセージが常に表示されます(corrupted Orphanリンクされたリスト削除されたinode ...にはゼロのdtime)があります。 fsck -n <filesystem>がクリーンであると報告するという事実は、ここでは少し誤解を招きます。

リカバリモードで、または外部ドライブから起動したときにこれらのエラーが表示されない理由は、この場合、問題のファイルシステムがr/wモードでマウントされていないか、まったくマウントされていないためです。

e2fsck のマニュアルページにも次のように明記されています。

一般に、マウントされたファイルシステムでe2fsckを実行することは安全ではないことに注意してください。唯一の例外は、-nオプションが指定され、-c、-l、または-Lオプションが指定されていない場合です。ただし、安全であっても、ファイルシステムがマウントされている場合、e2fsckによって出力される結果は無効です。 e2fsckが、マウントされているファイルシステムをチェックするかどうかを尋ねる場合、唯一の正しい答えは「いいえ」です。自分が何をしているかを本当に知っている専門家だけが、他の方法でこの質問に答えることを検討すべきです。

結論:fsckに-fフラグを使用する場合は、その機能を100%理解してください。特に、マウントされたファイルシステムでの使用は、通常は望みのものではありません。

サスペンドから復帰するときにext4エラーが発生する理由については、すでに解決しているように見えるまったく別の問題です。参考のために、元の問題を解決するのに役立ったため、ここにコメントに自分で投稿したリンクを含めます。

7
Sebastian Stark