web-dev-qa-db-ja.com

NTFSパーティションが突然使用できなくなります、「エラー:/ dev / sdXの読み取り中にファイルの終わり」

SSDにUbuntuボックスがあり、NTFSパーティションのあるセカンダリHDD(/dev/sdb)があります。

いくつかのコンテキスト:昨日、マシンは応答しなかったため、強制的にシャットダウンする必要がありました(電源を切る)。再起動すると、Ubuntuは緊急モードになります。 HDDのUUIDが消えた(blkidに表示されなかった)ため、/etc/fstabが破損していることがわかりました。 fstabのディスクの行をコメントアウトし、Ubuntuをブートすることに成功しました。

今、私は再びHDDをマウントしようとしています。最初にGpartedを試しました。これはlibpartedの出力です(gpartedで使用):

======================
libparted : 3.2
======================
end of file while reading /dev/sdb
The primary GPT table is corrupt, but the backup appears OK, so that will be used.

興味深いことに、Sudo blkid/dev/sdbがUUIDではなくPTUUIDを持っていることを示しています。

$ Sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/sda1: UUID="e407bc1c-4c2d-4dae-80ce-e6bd96346698" TYPE="ext4" PARTUUID="659e6a1e-01"
/dev/sda5: UUID="f9500440-cddf-41f6-8512-5a30e66fbf3d" TYPE="swap" PARTUUID="659e6a1e-05"
/dev/sda6: UUID="18abc384-a610-4f65-8430-0109548a89ef" TYPE="ext4" PARTUUID="659e6a1e-06"
/dev/sdb: PTUUID="a6e9090d-b5ab-412a-8568-2eee08fa3fa8" PTTYPE="gpt"

パーティションがまだあると確信しています。マウントできません。 partedはそれらを正しくリストします:

$ Sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb                                                  
Using /dev/sdb
(parted) p                                                                
Error: end of file while reading /dev/sdb
Retry/Ignore/Cancel? i                                                    
Error: The primary GPT table is corrupt, but the backup appears OK, so that will be used.
OK/Cancel? OK                                                             
Model: ATA ST1000LM024 HN-M (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  316MB   315MB                EFI system partition          boot, esp
 2      316MB   945MB   629MB   ntfs         Basic data partition          hidden, diag
 3      945MB   1079MB  134MB                Microsoft reserved partition  msftres
 4      1079MB  979GB   978GB   ntfs         Basic data partition          msftdata
 5      979GB   1000GB  21,5GB  ntfs         Basic data partition          hidden, diag

(parted) q

そのため、2つのエラー(Error: end of file while reading /dev/sdbError: The primary GPT table is corrupt, but the backup appears OK, so that will be used.)があり、パーティションをマウントできない可能性があります。それらを解決する方法はありますか?

EDITこれはntfsfixの出力です:

$ Sudo ntfsfix /dev/sdb
Mounting volume... NTFS signature is missing.
FAILED
Attempting to correct errors... NTFS signature is missing.
FAILED
Failed to startup volume: Invalid argument
NTFS signature is missing.
Trying the alternate boot sector
Unrecoverable error
Volume is corrupt. You should run chkdsk.

EDIT gdiskの出力

GPT fdisk (gdisk) version 1.0.1

Caution: invalid main GPT header, but valid backup; regenerating main header
from backup!

Caution! After loading partitions, the CRC doesn't check out!
Warning! Main partition table CRC mismatch! Loaded backup partition table
instead of main partition table!

Warning! One or more CRCs don't match. You should repair the disk!

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: damaged

****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************

EDITこれは、トラブルを引き起こした誤って実行したコマンドです:Sudo dd if=/dev/zero of=/dev/sdb bs=512 seek=1

2
Leo Brito

TLDR:gdiskwコマンド)を使用して書き込むことにより、(データを含む)ディスクを復元できました。

質問とコメントのセクションで説明したように、これはシナリオです。/dev/sdbに0を付けてddを発行することにより、誤ってディスクのGPTヘッダーを破棄しました。

ディスクで gdisk(8) を実行し、GPTヘッダーが破損していることを通知しましたが、バックアップは正常であり、バックアップをロードしました。 gdisk CLIで、wコマンド(パーティションテーブル情報をディスクに書き込む)を実行して終了しました。その後、/dev/sdbはUbuntuによって即座に認識およびマウントされ、他の変更は必要ありませんでした。

5
Leo Brito