web-dev-qa-db-ja.com

「スーパーブロック読み取り失敗」でXFSファイルシステムを回復する方法

マウントできないXFSパーティションを持つBuffalo LinkStationのディスクがあります。

ディスクをUbuntuボックスのSATA-> USBキャディに接続します。私は以下を得ます:

$ Sudo fdisk -l /dev/sdb

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63      594404      297171   83  Linux
/dev/sdb2          594405     1590434      498015   83  Linux
/dev/sdb4         1590435   976768064   487588815    5  Extended
/dev/sdb5         1590498     1863539      136521   82  Linux swap / Solaris
/dev/sdb6         1863603   976494959   487315678+  83  Linux

問題のパーティションは/ dev/sdb6です。

$ Sudo xfs_check /dev/sdb6
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_check.  If you are unable to mount the filesystem, then use
the xfs_repair -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption -- please attempt a mount
of the filesystem before doing this.

したがって、xfs_repair -Lオプションを試すと、次のような状況にはなりません。

$ Sudo xfs_repair -L /dev/sdb6
Phase 1 - find and verify superblock...
superblock read failed, offset 382252089344, size 131072, ag 89, rval -1

fatal error -- Input/output error

Photorecを使用して、そのパーティションからいくつかのファイルをプルすることができたので、データはそこにあり、ディスクは物理的に機能しています。ただし、スーパーブロックに問題があります。

このパーティションをどのように回復しますか?

8
Kieran

XFS再生エラーの後で、エラーメッセージに従って、パーティションを再度マウントしてみてください。

すべてが乱雑になったら、ダウンロード FS Explorer をダウンロードして、別のシステムからの深いファイル回復に役立てることを強くお勧めします。

3
ewwhite

上記の回答は、今日この問題が発生したとき(約9.5時間前)には役に立ちませんでした。ここでは、前の答えが役に立たなかった理由とともに、私にとってうまくいった解決策を紹介します。

症状

  1. どこからともなく、_/home_内のファイルを保存/編集できない、またはリストされているディレクトリがありません。
  2. dmesgは、他のいくつかのxfsメッセージのどこかに_xfs_do_force_shutdown called_を示しました。
  3. _xfs_repair_は、フェーズ1で_superblock read failed_の後に_fatal error -- Input/output error_が続いて失敗しました
  4. ディスクの残りの部分は問題なく動作していました(_/_を含む、つまり_/home_のみが機能していませんでした)。
  5. mountを実行しようとすると、_superblock cannot be found_(または類似の)エラーが発生しますが、次に何をすべきかについてのヒントはありません。

解決

解決策は この投稿 XFSの主な著者であるNigel Smith(私が正しく理解している場合)に基づいています。以前のリンクが廃止された場合に備えて、ここで手順を再投稿します。次のすべての操作はrootとして実行する必要があります(明らかに)。

  1. ドライブの長いセルフテストを実行します:_smartctl -t long /dev/sda_。これは時間がかかる場合があります。 (私の場合のように)比較的最近の長いテストがある場合は、_smartctl -t short /dev/sda_を使用して短いテストを実行することもできます。
  2. _smartctl -l selftest /dev/sda_または_smartctl -a /dev/sda_のいずれかでテストを調べます(後者はすべてを表示しますが、必要な情報はほとんど最後にあります)。
  3. テストレポートの最後の列は_LBA_of_first_error_と呼ばれます。これは、ディスク上の最初のエラーの位置です。最新のテスト(「#1」と番号が付けられ、リストの一番上に配置されます)から、表示された番号を取得し、これを8で割り、整数値に切り捨てます(理由については元の投稿を参照)。
  4. 次に、この特定のブロックをゼロにします。 これにより、この位置にある特定のファイルが破損します。(ただし、他のすべての方法を使い果たした場合、いくつかの破損したファイルはそれほど大きな問題ではありません。)そのためには、次のコマンドを実行します。_# dd if=/dev/zero of=/dev/sda conv=sync bs=4096 count=1 seek=*NUMBER_COMPUTED_EARLIER*_
  5. 短いテストを実行し、結果が出るまで1〜2分待ちます。短いテストでエラーが表示されなくなるまで、これを繰り返します。または、_smartctl -A /dev/hda | egrep 'Reallocated|Pending|Uncorrectable'_を使用して、エラーのあるブロックのおおよその数を確認できます。私の場合、エラーが24になるまでステップ1から4を繰り返しました。
  6. _xfs_repair /dev/sda_を実行します(なし _-L_フラグ)。これにより、ジャーナルログエラーのためにファイルシステムをマウントする必要があることが報告されます。
  7. そのシステムをマウントしてみます。私の場合、それが失敗したため、ジャーナルログを削除する_xfs_repair -L /dev/sda_を実行する必要がありました(データが削除される可能性があります)。
  8. ファイルシステムをマウントして、最近のバックアップを実行してください。

上記のソリューションが機能しない理由

  • 最初の投稿は数年前のものです。それまでの間、SuSEチームが_/home_のプライマリFSとして使用するのに十分安定していると見なされるように、XFSには十分な変更が加えられています。
  • _xfs_check_のために_xfs_repair -n_は廃止されました。
  • Debianソリューションは恐ろしい手間と時間の浪費でした。現在のところ、Debian しない UEFIブートをサポートし、その情報ありませんダウンロードページとメインFAQページにあります( Wiki)。したがって、それで起動するには、BIOSでUEFIセキュアブートを無効にしてから、キーで起動する必要があります。その後、no xfsツールがデフォルトでインストールされることに注意してください。つまり、_apt-get install xfsprogs_を実行するのは、これがDebianであるため、その「安定した」パッケージは文字通り数年遅れているということです。短い話ですが、_xfs_repair /dev/sda_はずっとハングしています。 (sigtermを使用しても)プロセスを強制終了できませんでした。
  • UFS Explorerは有償のソフトウェアです。
  • photorecは特定のファイルタイプ(たとえば、GPGキーに別れを告げる)のみをサポートし、任意の名前のすべてのファイルを1つのフォルダーにすべて復元します。それをすべて通り抜け、関連する情報を見つけてください。
5
ChrisR

「sda6」にXFSパーティションがあります。 Lubuntuでは、XFSパーティションが13.10で修正されず、修正もマウントもされません。 Lubuntuを起動すると、XFSファイルシステムを修正するために修正して起動を試行する必要がありますと表示されます。私が最初にLubuntuをインストールしたとき、パーティションにはnknownと表示されています。

Lubuntuは修正されませんでした。コマンドxfs_checkを使用しても解決しませんでした。

私は最終的にDebian 7に解決して再インストールしました。 検出すべてのファイルシステムと通常マウントされているXFSパーティションです。

XFSファイルシステムの多くのユーザーを読んだので、Debian 7はバージョン.2を使用し、XFSを通常エラーなしでマウントしますが、Ubuntuでは最新のカーネルを使用しているため、カーネルバージョンの変更に問題があると思います.11 XFSファイルシステムは解決されません

私はCentOS 6.5で試しましたが、CentOS RedHatと古い「安定した」カーネルでフォローアップします。それは検出されません XFS自動的に。

最後に、Debian 7 すべてのデータをバックアップをXFSパーティションに作成し、パーティションをEXT4に再作成しました。


RedHatが原因で、XFS読み取りパーティションとXFSに関するいくつかの問題が修正されません(Googleは、XFS読み取りパーティションを解決しなかったユーザーの数をGoogleに報告します)。カーネル3.11からEXT4/btrfs ...ファイルシステムへの新しい互換性

この誰かが助けてくれることを願っています。

1
Marin Sagovac

実サーバーで新しくダウンロードしたDebian 8.7.1を使用してXFSパーティションを修正しました。このシステムにディスクを置くだけで、自動で修復されます。 Centos 5および6はそれを修復できません

0
Kan