web-dev-qa-db-fra.com

Partition NTFS soudainement inutilisable, "Erreur: fin du fichier lors de la lecture / dev / sdX"

J'ai une boîte Ubuntu sur un disque SSD et un disque dur secondaire (/dev/sdb) avec des partitions NTFS.

Un peu de contexte: hier, la machine ne répondait plus et j'ai dû la fermer de force (coupure de courant). Au redémarrage, Ubuntu passerait en mode d'urgence. J'ai découvert que l'UUID du disque dur avait disparu (n'apparaissait pas dans blkid), rendant ainsi /etc/fstab corrompu. J'ai commenté la ligne du disque sur fstab et j'ai réussi à démarrer Ubuntu.

Maintenant, j'essaie de monter à nouveau le disque dur. J'ai d'abord essayé Gparted. Voici le résultat de libparted (utilisé par 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.

Fait intéressant, Sudo blkid affiche /dev/sdb comme ayant un PTUUID au lieu de UUID:

$ 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"

Je suis convaincu que les partitions sont toujours là, je ne peux tout simplement pas les monter. parted les liste correctement:

$ 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

Donc, il y a 2 erreurs (Error: end of file while reading /dev/sdb, Error: The primary GPT table is corrupt, but the backup appears OK, so that will be used.) qui rendent probablement la partition impossible à monter. Des idées comment les résoudre?

EDIT Voici le résultat de 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 Sortie de 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 C'est la commande que j'ai mal exécutée qui a causé le problème: Sudo dd if=/dev/zero of=/dev/sdb bs=512 seek=1

2
Leo Brito

TLDR: J'ai pu restaurer le disque (avec des données) en écrivant avec gdisk (commande w).

Comme indiqué dans la section question et commentaire, voici le scénario: j'avais accidentellement détruit l'en-tête GPT du disque en émettant un dd avec des 0 sur /dev/sdb.

J'ai couru gdisk(8) sur le disque, qui a informé que l'en-tête GPT était corrompu, mais que la sauvegarde était correcte et a chargé la sauvegarde. Dans la gdisk CLI, j'ai exécuté une commande w (qui écrit les informations de la table de partitions sur le disque), puis est sortie. Après cela, /dev/sdb a été reconnu et monté instantanément par Ubuntu, et aucun autre changement n’a été nécessaire.

5
Leo Brito