HDDがmount出来ない、又は壊れた時の対処法(ext3,ext4対象)
不可能な場合もある
2003/12/6
written Komuro

1.1) マウントが出来ない場合。(まず現状の状態をコピー)
とても大事で、絶対に消したくない場合は、マウントできないディスクを、そのままコピーしてまずはバックアップを取る。
dd if=/dev/コピー元 of=/dev/コピー先 conv=noerror,sync ibs=1b
  conv=noerror,sncは「読みとりエラーがあっても続行する。
エラーで読めなかった部分も出力から省かない(同じバイト数だけnulで埋めて 出力する)」という意味だそうです。
   
  準備が出来たら、対象のHDDを確認するわけだが、HDDのパーテッションが1パーテッション、もしくは、区切ったブロックを覚えていれば、
まず、対象のディスクに対して、fdiskをしてみる。すると、こんなメッセージが出る場合がある。
 
  1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって正常になります
   
  ここで、いったんw等押さないでqでfdiskを抜けてマウントするとデータが100%復帰している場合が多々ある。(理由はわかりません)
自分の場合は復帰したが、2台中1台は復帰できたが、もう一台は無理だった。
wを押した場合もあったが、対象HDDが1パーテッションだったので、一度領域を開放して、また同じだけ領域を確保し、wキーを押した。実際のところは、wを押すだけでよいのかもしれないが消える場合もあるので要注意。
 
1.2) fdiskをしても 駄目だった場合
  本当にdiskの寿命か、badblockが頻繁にある場合は、mountするたびにデータが壊れていく最悪な事態が起こる。自分の経験では3回mountしたら、二度とデータがとり出せない状態になった。なので壊れた状態でも、あまったHDDがあれば、1.1)の方法でコピーを取ってから作業をした方が精神的に楽だ
   
  自分は成功したこと無いんだが、バックアップスーパーブロックなどを使って強制的に、mountを試みてみる方法があるそうだ。やり方は以下のとおり。
 

1)エラーのあるファイルシステムでマウントできない場合
  mount -o ro,errors=continue /dev/対象DEVICE
運がよければマウントできるそうだが出来たためしがない。
 

2)スーパーブロックが壊れていてマウントできない場合
  mount -o ro,sb=Backup superblock番号 /dev/対象DEVICE
上記の方法を試してみる。Backup
superblockを指定して読み込ませる方法だ。Backup superblockがわからない場合、は、dumpe2fsコマンドで調べてみる。
dumpe2fs /dev/hdd | less <--かなり量が多くスクロールしてしまうので、 less なり moreで、ページ改行できるようにしておくといいかもしれない。
   
  #dumpe2fs /dev/hdd | less
Group 1: (Blocks 32768-65535)
Backup superblock at 32768, Group descriptors at 32769-32773
Block bitmap at 32774 (+6), Inode bitmap at 32775 (+7)
Inode table at 32776-33287 (+8)
32248 free blocks, 16384 free inodes, 0 directories
Free blocks: 33288-65535
Free inodes: 16385-32768
このような情報が沢山表示される。
 

3)どのBackup
superblockを使ってもmount出来ない場合
  mount -o ro,errors=continue,check=none /dev/対象DEVICE
これでもマウントできない場合もある。その場合は、fsckを最後に試してみる。
 

4)どの方法を使ってもマウントできない場合
  fsck -y /dev/対象デバイス
上記の方法を試してみる。
-yのオプションは、修正個所が見つかった時に、直すかどうか聞いてくるかどうかなのだが、直すしかないので、全部yesにするオプションを指定する。
運がよければデータは復帰し、mount出来るようになる。
復帰できなかったデータは、lost+found というディレクトリィに退避される。
lost+fondのなかのデータも生きてる場合が結構あるので、地道にサルベージの作業を行った方がいい。
 
  5)fsck がかからない。
  普通は、
fsck -b BackupSuperBlock番号 -y /dev/device 又は

fsck -y /dev/device
を試してみる。
しかしうまくいかない場合は、以下のような直し方もあるようなので、参考にしたい。


debugfs /dev/対象DEVICE でDEVICEのデバックモードを開く
journalの情報をクリアしてみる。
debugfs: set_super_value journal_inum 0
quitで抜けて、fsck -y /dev/対象deviceを試す。
   
6)1-5のすべてを試して精根尽きたが、諦められない場合
莫大な費用を払って、サルベージ会社に依頼してください。
数十万も出せるかボケェって方は、3マンちょっと出して、Linux用のファイナルデータを買ってみるのもいいかもしれない。自分は買った。
   
以上健闘を祈る
   

 



 
 
 
 
HDDがmount出来ない、又は壊れた時の対処法
不可能な場合もある
2003/12/6
written Komuro