3 votes

Impossible de voir la partition du disque dur externe dans l'Utilitaire de disque

J'ai un disque dur externe de 1 To divisé en 2 partitions :

Première partition : 280 Go
Deuxième partition : 1720 GB

Initialement, les deux partitions étaient NTFS.

Ensuite, j'ai formaté la première partition en MacOS Extended FS, puis en FAT32, et la seconde partition a disparu. Je ne la vois pas dans Disk Utilities ni dans Paragon NTFS 15.

J'ai essayé de rétablir la première partition en NTFS, mais la deuxième n'apparaît toujours pas... Que dois-je faire ?

voici le résultat de diskutil list

~ diskutil list
  /dev/disk0 (internal, physical):
     #:                       TYPE NAME                    SIZE       IDENTIFIER
     0:      GUID_partition_scheme                        *250.1 GB   disk0
     1:                        EFI EFI                     209.7 MB   disk0s1
     2:                 Apple_APFS Container disk1         249.8 GB   disk0s2

  /dev/disk1 (synthesized):
     #:                       TYPE NAME                    SIZE       IDENTIFIER
     0:      APFS Container Scheme -                      +249.8 GB   disk1
                                   Physical Store disk0s2
     1:                APFS Volume Macintosh HD            119.9 GB   disk1s1
     2:                APFS Volume Preboot                 20.5 MB    disk1s2
     3:                APFS Volume Recovery                503.9 MB   disk1s3
     4:                APFS Volume VM                      5.4 GB     disk1s4

  /dev/disk2 (external, physical):
     #:                       TYPE NAME                    SIZE       IDENTIFIER
     0:     FDisk_partition_scheme                        *2.0 TB     disk2
     1:               Windows_NTFS HDD1                    228.4 GB   disk2s1

Voici le résultat de sudo fdisk /dev/disk2

~ sudo fdisk /dev/disk2
    Disk: /dev/disk2    geometry: 243201/255/63 [3907029167 sectors]
    Signature: 0xAA55
             Starting       Ending
     #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
    ------------------------------------------------------------------------
    *1: 07 1023 254  63 - 1023 254  63 [    206848 -  446126158] HPFS/QNX/AUX
     2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
     3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
     4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

EDIT :

$ sudo dd if=/dev/disk2 bs=512 skip=446333006 count=150000000 | grep -o -a -b "BOOTMGR"

71010552671:BOOTMGR
71010552692:BOOTMGR
150000000+0 records in
150000000+0 records out
76800000000 bytes transferred in 11355.441546 secs (6763277 bytes/sec)

3voto

klanomath Points 63400

La réponse de David explique déjà ce qui est probablement arrivé à votre disque. Vous avez accidentellement partitionné le disque au lieu d'effacer un seul volume.

Selon votre déclaration, votre disque contenait deux partitions auparavant :

  • Première partition : 280 Go
  • Deuxième partition : 1720 GB

Après le repartitionnement du disque, il ne reste qu'une seule partition :

  • Première et unique partition : 228,4 Go

Cela signifie probablement que la deuxième partition n'a pas été affectée - seule l'entrée dans le MBR a été supprimée.

Vous devriez être en mesure de récupérer la partition en ajoutant simplement une seconde partition dans le MBR.

Pour détecter les anciennes limites de la partition perdue, vous devez rechercher des chaînes spécifiques sur le disque qui déterminent le premier et le dernier bloc d'un (ancien) volume NTFS.

Les chaînes spécifiques sont soit NTFS, soit BOOTMGR/bootmgr.

Le contenu du bloc dépend de votre locale La recherche de "BOOTMGR is compressed" (trouvé dans le secteur de démarrage d'une partition NTFS anglaise) n'est donc pas forcément fructueuse. "BOOTMGR" (anglais/allemand) ou "bootmgr" (espagnol/français ?) devrait cependant fonctionner. Je n'ai pas testé les systèmes Windows non-latins.

Exemples

Premier bloc d'un volume NTFS allemand :

enter image description here

Dernier bloc d'un volume NTFS allemand :

enter image description here

Cela peut être fait par dd'ing le périphérique à grep.

Exemple :

$ sudo dd if=/dev/disk2 bs=512 skip=2048 count=512 | grep -o -a -b "BOOTMGR"    
421:BOOTMGR
512+0 records in
512+0 records out
262144 bytes transferred in 0.010566 secs (24810155 bytes/sec)

L'explication de la commande :

Copiez /dev/disk2 avec une taille de bloc de 512 octets vers stdout, mais sautez les 2048 premiers blocs de disk2 et arrêtez-vous après (un autre) 512 blocs, passez-le à grep, traitez la sortie comme du texte, cherchez "BOOTMGR" et finalement montrez le(s) décalage(s) d'octets du motif correspondant devant la ligne correspondante.

Dans votre cas, le résultat 71010552671:BOOTMGR de sudo dd if=/dev/disk2 bs=512 skip=446333006 count=150000000 | grep -o -a -b "BOOTMGR" signifie :

Le décalage d'octet est 71010552671 Octet après le dernier bloc (bloc 446333006) du volume HDD1 actuellement existant sur le disque1. En blocs, il s'agit du bloc relatif 138692486 ou du bloc absolu (446333006 + 138692486) = 585025492.

Cela signifie deux choses :

  1. Votre ancienne partition 1 avait probablement une taille de ~ 299 GB (= ~278 GiB) au lieu de 280 GB.
  2. Vos partitions ne sont pas alignées correctement sur des blocs de 4k car ni 446333006 ni 585025492 ne sont divisibles par 8.

Le dernier bloc du volume NTFS disparu peut être attendu dans les 10 000 derniers blocs du disque 2. La commande appropriée pour le rechercher est donc

sudo dd if=/dev/disk2 bs=512 skip=3907019167 count=10000 | grep -o -a -b "BOOTMGR"

Avec le résultat de la commande, vous pouvez déterminer le dernier bloc de la partition 2 disparue.

Avec le premier bloc et le dernier bloc, vous pouvez ajouter la partition perdue avec fdisk au MBR.

Pour vérifier la taille, vous pouvez extraire la taille de la partition en secteurs dans le secteur de démarrage de la partition à l'offset 0x028 et une longueur de champ de 8 octets et la taille du secteur à l'offset 0x0B et une longueur de champ de 2 octets.

Dans les exemples de captures d'écran ci-dessus, il s'agit de FF E7 DF E8 00 00 00 00 (= 3906988031+1) et 00 02 (= 512 octets).

En diskutil info La sortie pour le volume d'exemple (visible dans les captures d'écran) est la suivante :

...
Disk Size:                2.0 TB (2000377872384 Bytes) (exactly 3906988032 512-Byte-Units)
Device Block Size:        512 Bytes
...

2voto

David Anderson Points 30783

Il n'y a qu'une seule partition sur votre disque externe. Je soupçonne qu'au lieu d'effacer la première partition, vous avez effacé le disque entier. Mais si c'était vrai, alors la nouvelle partition couvrirait la totalité du disque. Donc à ce stade, il serait préférable d'essayer de trouver la partition manquante.

La fonction correcte pour trouver l'en-tête d'une partition NTFS manquante est donnée ci-dessous. Pour utiliser cette fonction, vous devez d'abord la copier puis la coller comme une commande dans une fenêtre d'application Terminal.

findntfs() { sudo bash -c "for i in {$1..$2};do xxd -a -s \$[\$i*1000000] -l 1000000 $3|fgrep -a -b 'NTFS    ';echo -en '\r'\$i:;done";echo done;}

Vous trouverez ci-dessous un exemple de son utilisation. J'ai une clé USB de 4 Go formatée en NTFS. La sortie de sudo fdisk /dev/disk1 est donné ci-dessous.

Disk: /dev/disk1    geometry: 968/128/63 [7811072 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 07    1   0   1 -  967  81  18 [      8064 -    7803008] HPFS/QNX/AUX
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

Puisque la clé USB contient 7811072 secteurs et la taille du secteur est 512 octets, la taille du lecteur est exactement 3999268864 octets, qui est le produit des deux nombres. Si je voulais rechercher une partition NTFS sur l'ensemble du lecteur flash, je devrais rechercher des données de 0 Mo à 3999 Mo. Un exemple d'utilisation de findntfs pour ce faire est indiqué ci-dessous.

Marlin:~ davidanderson$ findntfs 0 3999 /dev/disk1
Password:
3:70:003f0000: eb52 904e 5446 5320 2020 2000 0208 0000  .R.NTFS    .....
3998:1125334:ee5ffe00: eb52 904e 5446 5320 2020 2000 0208 0000  .R.NTFS    .....
3999:done
Marlin:~ davidanderson$ 

Note : Pendant que cette fonction est exécutée, vous verrez des valeurs mises à jour. Il s'agit du mégaoctet en cours de recherche. À partir de ces valeurs, vous pouvez déterminer la progression de la recherche.

Les informations importantes à extraire de cette sortie sont les valeurs hexadécimales 003f0000 y ee5ffe00 . Ces valeurs sont le décalage en octets du premier et du dernier secteur de la partition NTFS.

Voici la valeur de calcul de l'emplacement de l'octet du premier secteur en fonction de la valeur indiquée à partir de la sortie de fdisk .

8064 * 512 = 4128768 = 0x3F0000

Voici la valeur de calcul de l'emplacement de l'octet du dernier secteur basé sur la valeur indiquée par la sortie de fdisk .

(8064 + 7803008 - 1) * 512 =  3999268352  = 0xEE5FFE00

Ces deux valeurs correspondent à la sortie de findntfs .

Dans votre cas, je suggérerais de chercher le début de votre partition manquante quelque part entre 270 et 290 Go. Pour cela, la commande serait comme indiqué ci-dessous.

findntfs 270000 290000 /dev/disk2

Bien sûr, cela peut prendre un certain temps. Si vous avez de la chance, vous pouvez essayer d'affiner votre recherche.

Je vous suggère de chercher la fin de votre partition manquante quelque part entre 1980398 GB et 2000398 GB. Pour cela, la commande serait comme indiqué ci-dessous.

findntfs 1980398 2000398 /dev/disk2

La fonction ci-dessous examine le secteur trouvé et imprime le nombre de secteurs occupés par la partition NTFS candidate. L'entrée est le décalage de la partition en octets et le nom du lecteur.

ntfssectors() {(n=$(sudo hexdump -e '1/8 "%u"' -s $((0x$1+40)) -n 8 $2); echo $(($n+1)))}

Vous trouverez ci-dessous un exemple d'utilisation de cette fonction.

Note : L'entrée est supposée être hexadécimale.

Marlin:~ davidanderson$ ntfssectors2 003F0000 /dev/disk1
7803008
Marlin:~ davidanderson$ ntfssectors2 ee5ffe00 /dev/disk1
7803008
Marlin:~ davidanderson$ 

La sortie des deux fonctions est la même que celle de la fonction fdisk .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X