web-dev-qa-db-ja.com

特定のファイルにアクセスするときのパーティションエラーと読み取り専用の再マウント

私はUbuntu16.04、1 HDDを実行し、いくつかのパーティションを実行しているかなり基本的なシステムを持っています:

 sda1-EXT4-100G-/ 
 sda2-EXT4-723.5G-/home 
 sda3-NTFS-100Gwindows)
 sda5-SWAP-8G 

/homeパーティションの特定のディレクトリにある3〜4個のファイルの1つにアクセスしようとすると(問題の原因となる特定のフォルダは/home/path/to/broken/folderです)、/homeパーティションでエラーが発生して再マウントされます。読み取り専用。 dmesgは、次のエラーを示しています。

 EXT4-fsエラー(デバイスsda2):ext4_ext_check_inode:497:iノード #1415:comm rm:pblk 0不正なヘッダー/エクステント:無効なマジック-マジック0、エントリ0、最大0(0)、深さ0(0)
デバイスsda2-8でジャーナルを中止しています。
 EXT4 -fs(sda2):ファイルシステムの読み取り専用の再マウント
 EXT4-fsエラー(デバイスsda2):ext4_ext_check_inode:497:inode #1417:comm rm:pblk 0不正なヘッダー/エクステント:無効なマジック-マジック0、エントリ0、最大0(0)、深さ0(0)
 EXT4-fsエラー(デバイスsda2):ext4_ext_check_inode:497:iノード #1416:comm rm:pblk 0不正なヘッダー/範囲:無効なマジック-マジック0、エントリ0、最大0(0)、深さ0(0)

だから私は何が起こっているのか理解しています...いくつかの悪いブロックがエラーを引き起こしていて、さらなる破損を防ぐために読み取り専用でドライブを再マウントしています。エラーを元に戻すことができるので、これらの特定のファイルであることがわかります。

  1. ルートとしてログイン
  2. 実行中sync
  3. lightdm(およびすべてのサブプロセス)を停止しています
  4. /homeでそれらを見つけることにより、lsof | grep /homeに残っているすべての開いているファイルを停止します
  5. アンマウント/home
  6. fsck /homeの実行(エラーの修正)
  7. 再マウント/home

すべてが再び正常になり、読み取りと書き込み、同じファイルに再度アクセスしようとするまで、このプロセス全体が繰り返されて、再度修正されます。

私がファイルにアクセスしようとした方法は、ls /home/path/to/broken/folderrm -r /home/path/to/broken/folderを実行することです。そのため、ドライブのその部分でのあらゆる種類のHDD操作でエラーが発生し、再び読み取り専用になります。

私は正直にファイルを気にしません、私はそれらをなくしたいだけです。 /home/path/to/broken/folderフォルダー全体を削除してもかまいませんが、これを試みるたびに失敗し、読み取り専用になります。

/homeドライブ全体を再フォーマットせずにこれを修正するにはどうすればよいですか?


---(編集1:

ハードドライブでbadblocks -v /dev/sda2を実行しましたが、不良ブロックはなく、きれいに出力されました。どんな助けでも大歓迎です。


編集2:

まだこれに対する解決策を探しています。以下に役立つ可能性のあるいくつかの情報:

 $ debugfs -R'stat&lt1415> '/dev/sda2
debugfs 1.42.13(17-May-2015)
 iノード:1415タイプ:通常モード:0644フラグ: 0x80000 
生成:0バージョン:0x00000000 
ユーザー:0グループ:0サイズ:0 
ファイルACL:0ディレクトリACL:0 
リンク:1ブロック数:0 
フラグメント:アドレス:0番号:0サイズ:0 
 ctime:0x5639ad86- 2015年11月4日水曜日01:02:30 
 atime:0x5639ad86- 11月4日水曜日01: 02:30 2015 
 mtime:0x5639ad86-Wed Nov 4 01:02:30 2015 
追加のiノードフィールドのサイズ:0 
 EXTENTS:

今、私はこれを自分で見て、破損していないiノードであると思われるものと比較しました。

 $ debugfs -R'stat&lt1410> '/dev/sda2
debugfs 1.42.13(17-May-2015)
 iノード:1410タイプ:通常モード:0644フラグ: 0x80000 
世代:0バージョン:0x00000000 
ユーザー:0グループ:0サイズ: 996
ファイルACL:0ディレクトリACL:0 
リンク:1ブロック数:0 
フラグメント:アドレス:0番号:0サイズ:0 
 ctime:0x5639ad31- 2015年11月4日水曜日01:01:05 
 atime:0x5639ad31- 2015年11月4日水曜日01:01:05 
 mtime:0x5639ad31- 2015年11月4日水曜日01:01:05 
追加のiノードフィールドのサイズ:0 
 EXTENTS:
(0):46679378

ここでの主な違いは、私が信じていることを太字で示しています。他の破損していないiノードを調べたところ、サイズと範囲がゼロ以外の1410に似たものが表示されています。

悪いヘッダー/エクステントはここでは意味があります...エクステントはありません....これを修正するにはどうすればよいですか?

銀の大皿で私より賢い人にこの質問を渡したような気がします。食事(答え)が何であるかわかりません!

1
Zzzach...

最後に、別のサイトで他の誰かからの回答を見つけ、iノードをゼロにしてシステムを再チェックしました。それだけでした。

 debugfs -w/dev/sda2 
:clri&lt1415> 
:clri&lt1416> 
:clri&lt1417> 
:q 
 fsck -y /dev/sda2

この問題を抱えている他の人には、不良マウントでfindを使用して不良inodeを見つけ、dmesgで不良inodeのエラーをチェックしました。

0
Zzzach...