Impossibile vedere la partizione HDD esterna in Utility Disco

3

Ho un HDD esterno TB diviso in 2 partizione:

Prima partizione: 280 GB
Seconda partizione: 1720 GB

Inizialmente, entrambe le partizioni erano NTFS.

Poi, ho formattato la prima partizione su macOS Extended FS e poi su FAT32, e la seconda partizione svanì. Non riesco a vederlo in Disk Utilities né in Paragon NTFS 15.

Ho provato a ripristinare la prima partizione in NTFS, ma la seconda non viene ancora mostrata ... Che cosa dovrei fare?

qui è il risultato di 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

Ecco il risultato di 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)
    
posta Juliatzin del Toro 22.12.2017 - 19:27
fonte

2 risposte

2

C'è solo una partizione sul disco esterno. Sospetto che invece di cancellare la prima partizione, hai cancellato l'intero disco. Ma se questo fosse vero, allora la nuova partizione si estenderà all'intero disco. Quindi, a questo punto, sarebbe meglio provare e trovare la partizione mancante.

Di seguito viene fornita la funzione corretta per trovare l'intestazione di partizioni NTFS mancanti. Per utilizzare questa funzione, è necessario prima copiare questa funzione e quindi incollarla come comando in una finestra dell'applicazione Terminale.

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;}

Di seguito è riportato un esempio del suo utilizzo. Ho un flash drive formattato NTFS da 4 GB. L'output di sudo fdisk /dev/disk1 è indicato di seguito.

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      

Poiché l'unità flash contiene 7811072 settori e la dimensione del settore è 512 byte, la dimensione dell'unità è esattamente 3999268864 byte, che è il prodotto dei due numeri. Se si desidera cercare l'intera unità flash per una partizione NTFS, avrei bisogno di cercare da 0 MB a 3999 MB di dati. Di seguito è riportato un esempio di utilizzo di findntfs per eseguire questa operazione.

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: While this function is executing, you will see values being updated. This is current megabyte being searched. From these values, you can determine the progress of the search.

Le informazioni importanti da estrarre da questo output sono i valori esadecimali 003f0000 e ee5ffe00 . Questi valori sono l'offset in byte per il primo e l'ultimo settore della partizione NTFS.

Di seguito è riportato il valore di calcolo della posizione di byte del primo settore in base al valore visualizzato dall'output di fdisk .

8064 * 512 = 4128768 = 0x3F0000

Di seguito è riportato il valore di calcolo della posizione in byte dell'ultimo settore in base al valore visualizzato dall'output di fdisk .

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

Entrambi questi valori corrispondono all'output di findntfs .

Nel tuo caso, ti suggerisco di cercare l'inizio della partizione mancante da 270 a 290 GB circa. Per questo, il comando sarebbe come mostrato di seguito.

findntfs 270000 290000 /dev/disk2

Naturalmente, potrebbe volerci un po 'di tempo. Se ti senti fortunato, puoi provare a restringere la ricerca.

Suggerirei di cercare la fine della partizione mancante da qualche parte tra 1980398 GB e 2000398 GB. Per questo, il comando sarebbe come mostrato di seguito.

findntfs 1980398 2000398 /dev/disk2

La funzione seguente esamina il settore trovato e stampa il numero di settori occupati dalla partizione NTFS candidata. L'input è l'offset della partizione in byte e il nome dell'unità.

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

Di seguito è riportato un esempio in cui viene utilizzata questa funzione.

Note: The input is assumed to be hexadecimal.

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

L'output di entrambe le funzioni è lo stesso di fdisk .

    
risposta data 22.12.2017 - 20:10
fonte
3

La risposta di David spiega già cosa è successo probabilmente al tuo disco. Hai accidentalmente partizionato l'unità invece di cancellare solo un volume.

Secondo la tua dichiarazione il tuo disco conteneva due partizioni in precedenza:

  • Prima partizione: 280 GB
  • Seconda partizione: 1720 GB

Dopo aver ripartizionato l'unità, viene lasciata solo una partizione:

  • Prima e unica partizione: 228,4 GB

Questo probabilmente significa che la seconda partizione non è stata influenzata: è stata rimossa solo la voce nell'MBR.

Dovresti essere in grado di ripristinare la partizione semplicemente aggiungendo una seconda partizione nell'MBR.

Per rilevare i precedenti limiti della partizione persa devi cercare stringhe specifiche sul disco che determinano il primo e l'ultimo blocco di un (precedente) volume NTFS.

Le stringhe specifiche sono NTFS o BOOTMGR / bootmgr.

Il contenuto del blocco dipende dalla tua locale , quindi cerca "BOOTMGR è compresso" (trovato in un settore di avvio partizione NTFS in inglese) non ha necessariamente esito positivo. "BOOTMGR" (inglese / tedesco) o "bootmgr" (spagnolo / francese?) Dovrebbe funzionare comunque. Non ho testato sistemi Windows non latini.

Esempi

Primo blocco di un volume NTFS tedesco:

UltimobloccodiunvolumeNTFStedesco:

Questopuòesserefattoddandoildispositivoagrep.

Esempio:

$sudoddif=/dev/disk2bs=512skip=2048count=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)

La spiegazione del comando:

Copia / dev / disk2 con una dimensione del blocco di 512 byte sullo stdout, ma salta i primi 2048 blocchi di disk2 e fermati dopo (un altro) 512 blocchi, collegalo a grep, tratta l'output come testo, cerca "BOOTMGR" "e infine mostra l'offset (i) di byte del modello abbinato davanti alla rispettiva linea corrispondente.

Nel tuo caso il risultato 71010552671:BOOTMGR di sudo dd if=/dev/disk2 bs=512 skip=446333006 count=150000000 | grep -o -a -b "BOOTMGR" significa:

L'offset di byte è 71010552671 Byte dopo l'ultimo blocco (blocco 446333006) del volume HDD1 attualmente presente su disco1. Nei blocchi che rappresentano il blocco relativo 138692486 o il blocco assoluto (446333006 + 138692486) = 585025492.

Questo significa due cose:

  1. La tua precedente partizione 1 probabilmente aveva una dimensione di ~ 299 GB (= ~ 278 GiB) invece di 280 GB
  2. Le tue partizioni non sono allineate correttamente ai blocchi 4k perché né 446333006 né 585025492 sono divisibili per 8

L'ultimo blocco del volume NTFS svanito può essere previsto negli ultimi 10.000 blocchi di disk2. Il comando appropriato per cercarlo è quindi

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

Con il risultato del comando è possibile determinare l'ultimo blocco della partizione svanita 2.

Con il primo blocco e l'ultimo blocco puoi aggiungere la partizione persa con fdisk all'MBR.

Per eseguire il cross-check della dimensione è possibile estrarre la dimensione della partizione in settori nel settore di avvio della partizione con offset 0x028 e lunghezza del campo di 8 byte e la dimensione del settore all'offset 0x0B e lunghezza del campo di 2 byte.

Negli screenshot di esempio sopra questo è FF E7 DF E8 00 00 00 00 (= 3906988031 + 1) e 00 02 (= 512 Byte).

L'output diskutil info per il volume di esempio (visibile negli screenshot) è:

...
Disk Size:                2.0 TB (2000377872384 Bytes) (exactly 3906988032 512-Byte-Units)
Device Block Size:        512 Bytes
...
    
risposta data 23.12.2017 - 16:50
fonte

Leggi altre domande sui tag