web-dev-qa-db-ja.com

ext4ファイルシステムを復元する方法

ルート以外のファイルシステムをホストする/ dev/sdc1という名前のHDDデバイスがあります。停電後に起動し、マウントできません。ファイルシステムが修復できないほど破損する可能性があるのではないかと思います。失敗した瞬間にも使われていなかったと思います。何をもう一度マウントすることができますか?

user@pc ~ $ Sudo fdisk -l /dev/sdc 
... 
Device     Start        End    Sectors  Size Type 
/dev/sdc1   2048 5860532223 5860530176  2.7T Linux filesystem

/etc/fstab: 
/dev/sdc1   /mnt/data_c ext4    defaults    0 0 

user@pc ~ $ Sudo mount /dev/sdc1 
mount: wrong fs type, bad option, bad superblock on /dev/sdc1, 
   missing codepage or helper program, or other error 

   In some cases useful info is found in syslog - try 
   dmesg | tail or so.

user@pc ~ $ dmesg|tail
...
[154150.717274]  sdc: sdc1 
[154564.927084] EXT4-fs (sdc1): VFS: Can't find ext4 filesystem

次に、別のスーパーブロックの場所でマウントしてみました。

mount -t ext4 -o sb=131072,ro /dev/sdc1 /mnt/data_c

私は上記を行いました。sbオプションは、32768、98304、163840、229376、294912、819200、884736、1605632、2654208、4096000の4の倍数に等しいです(スーパーブロックのバックアップはに保存されていると誰かが言ったため)これらのブロックと、マウントが1kブロックに関してsb =を必要とするため、4を掛ける必要があること)。私はいつも同じエラーを受け取りました(間違ったfsタイプ、悪いオプション、悪いスーパーブロック...そしてVFS:ext4ファイルシステムが見つかりません)。

次に、パーティションを見つけることができるtestdiskを使用しました。これにより、その中のファイル(すべてのファイルだと思います)を一覧表示できます。一部のファイルを1つずつコピーすることもできますが、問題は約200〜300のファイルが必要であり、これには時間がかかるため、ファイルシステムを修復する別の可能性を検討したいと思います。

Disk /dev/sdc - 3000 GB / 2794 GiB - CHS 364801 255 63 

     Partition                  Start        End    Size in sectors 

  MS Data                     2048 5860532223 5860530176 [data3] 
superblock 0, blocksize=4096 [data3] 
superblock 32768, blocksize=4096 [data3] 
superblock 98304, blocksize=4096 [data3] 
superblock 163840, blocksize=4096 [data3] 
superblock 229376, blocksize=4096 [data3] 
superblock 294912, blocksize=4096 [data3] 
superblock 819200, blocksize=4096 [data3] 
superblock 884736, blocksize=4096 [data3] 
superblock 1605632, blocksize=4096 [data3] 
superblock 2654208, blocksize=4096 [data3] 

To repair the filesystem using alternate superblock, run 
fsck.ext4 -p -b superblock -B blocksize device

私は非常に興味があります。ハードディスクは1年未満です。停止時には、何も書き込まれていなかったと確信しています(ただし、読み取っていた可能性があります)。すべてのスーパーブロックが無効になった可能性はありますか?多分彼らはどこかにいますか?

2
engineerX

まず、パッケージを介してハードドライブをテストできますsmartmontools

ドライブで「スマート」を有効にします。

 smartctl -s on /dev/sdc

長いテストを開始します(最初の "short" testで試すことができます):

 smartctl -t long /dev/sdc

テストの終了を待って結果を取得します:

 smartctl -l selftest /dev/sdc

ハードドライブに問題がない場合は、次のコマンドを試してファイルシステムを確認できます。

 e2fsck -n /dev/sdc1

それが機能しない場合は、testdiskが解決策です。

1
Alban VIDAL