Come deselezionare un cluster NTFS come non valido?


14

Come posso contrassegnare i cluster come non validi in NTFS?

sfondo

Ho corso per errore

>chkdsk /R

sul mio SSD, dove

/ R : individua i settori danneggiati e recupera le informazioni leggibili (implica / F)
/ F : corregge gli errori sul disco

E ora ho un cluster contrassegnato come cattivo sul mio disco. Devo deselezionare quel cluster come cattivo.

Nota : chkdskha un'opzione per rivalutare un cluster e restituirlo per usare:

/ B : solo NTFS: rivaluta i cluster danneggiati sul volume (implica / R)

Sfortunatamente questa opzione annulla la marcatura del cluster solo se non è più dannosa. Ho bisogno che il cluster non sia marcato a prescindere.

Come si deseleziona un cluster NTFS come non valido?

Perché stai facendo questo?

Non importa perché io, e centinaia di altri, stiamo ponendo la domanda. Ma il problema è che c'è un settore danneggiato sul mio disco. È tempo di sostituire l'unità con una nuova. Il modo per farlo è di eseguire il mirroring dell'SSD su un altro SSD utilizzando il mirroring del software Windows .

Sfortunatamente, un bug noto nel mirroring di Windows NTFS impedisce il completamento del mirror, come documentato in KB325615 :

Impossibile creare il mirroring del software se il disco contiene blocchi danneggiati

DMIO opera al di sotto del file system e, se rileva errori I / O durante la lettura da un settore sul disco di origine o durante il tentativo di scrivere i dati sul disco di destinazione, interrompe l'operazione di mirroring.

L'ovvia soluzione alternativa consisteva nel ridurre il volume del sistema operativo, in modo che il settore danneggiato avesse superato la fine del volume. In Windows 7, quando si tenta di ridurre un volume, i file si sposteranno automaticamente.

inserisci qui la descrizione dell'immagine

Questa è una buona cosa. Ai vecchi tempi, se si voleva ridurre un volume, era necessario utilizzare uno strumento di deframmentazione che spingesse tutti i file verso la parte anteriore dell'unità; lasciando spazio alla fine.

Purtroppo non v'è ormai un inamovibile file nel modo: $BadClus. L' operazione di deframmentazione Riduci rileva il file immobile nel registro eventi:

È stata avviata un'analisi di riduzione del volume sul sistema operativo del volume (C :). Questa voce del registro eventi fornisce informazioni dettagliate sull'ultimo file immobile che potrebbe limitare il numero massimo di byte recuperabili.

Dettagli diagnostici:

  • L'ultimo file immobile sembra essere: \ $ BadClus: $ Bad: $ DATA
  • L'ultimo cluster del file è: 0xdc1ded
  • Riduci target potenziale (indirizzo LCN): 0xa91bd9
  • I flag dei file NTFS sono: -S - D
  • Fase di restringimento: <analisi>

Così:

  • non riesco a rispecchiare il volume finché non vengono rimossi i settori danneggiati
  • ridurre il volume rimuoverà i settori danneggiati
  • non riesco a ridurre il volume finché non $BadClusviene spostato il file sparse
  • non riesco a muovermi $BadClusmentre occupa fisicamente ammassi difettosi
  • $BadClus occuperà fisicamente i cluster danneggiati mentre NTFS ritiene che il cluster sia danneggiato

Come si deseleziona un cluster come non valido?

Anche per le persone che creano fantasmi

La soluzione al mio problema funzionerebbe anche per il caso più comune:

Qualcuno crea un fantasma di un'unità contenente settori danneggiati su una nuova unità, quindi l'unità buona ha ancora quei cluster contrassegnati come danneggiati, anche se sono buoni. Accade così che abbiano una soluzione alternativa a loro:

>chkdsk /B

Solo che non funziona nel mio caso. (E anche se ha funzionato nel mio caso, non è la domanda che sto ponendo.)

Bonus Chatter

Naturalmente l'SSD Kingson non mantiene settori di riserva. Se lo facesse, potrebbe rimappare in modo trasparente il settore di riserva per me e non avrei NTFS che prova a pensare in modo eccessivo.

SpinRite

ho provato SpinRite sull'unità SS. Si imbatte nel settore difettoso, ma non è in grado di ottenere alcun valore dall'unità:

══════════════════╤═══════════════════════════╤═════════════════════════════════
cylinder : 7,183  │     data samples : 1,999  │  first uncertain bit : · · · · ·
  sector :    17  │   unique samples :     0  │   last uncertain bit : · · · · ·
    head :   187  │  discarded sples :     0  │   uncertain bit span : · · · · ·

Il numero di campioni di dati conta fino a 2.000, quindi torna a zero e continua.

inserisci qui la descrizione dell'immagine

Dopo circa 20 loop (ovvero 40.000 campioni di dati) ho rinunciato.

clonazione

Ancora; non confondere la domanda con l'esempio. La domanda è come deselezionare i cluster come non validi in NTFS. Molto tempo dopo che mi arrendo e butto via l'SSD, la domanda rimarrà comunque. Non confondere il mio problema con la domanda. Ciò non significa che potrei provare a risolvere effettivamente il mio problema:

DriveImageXML raggiunge il settore danneggiato e si interrompe.

Impossibile caricare GParted . Viene visualizzata una schermata di avvio grafica, quindi una finestra della console scorre il testo, seguito da una schermata nera nulla

Clonezilla si rifiuta di clonare il mio SSD:

Questo disco contiene partizioni GPT e MGR non corrispondenti: / dev / sdb
Confonderà Clonezill e potrebbe rendere inutile l'immagine salvata o non riuscire a clonare il disco.

Per favore, risolvi il problema, quindi riavvia nuovamente Clonezilla.
Programma terminato.

inserisci qui la descrizione dell'immagine

Come si deseleziona un cluster come non valido in NTFS?


Vuoi una soluzione Windows o usare Linux sarebbe ok?
Thomas Weller,

2
@ThomasW. non mi dispiace uno strumento di auto-avvio; usando qualunque sistema operativo gli piaccia. Naturalmente preferirei uno strumento GUI. mi sono stancato di usare le righe di comando nel 1990. Ho iniziato a cercare CreateFiledi aprire direttamente il volume; ma ho capito che avrei dovuto ricominciare da capo, analizzando tutte le strutture dati prive di documenti. ho aperto il volume direttamente per la modifica nel mio editor esadecimale preferito ma avevo lo stesso lato negativo, dovendo analizzare manualmente le strutture esadecimali.
Ian Boyd il

@ThomasW. perché anche chiedere se non puoi rispondere per come risolverlo in Linux? se tutto ciò che vuoi dire è che se risolverlo da un cd live di Linux va bene allora non sai come, ma dovrebbe aggiungere un tag linux.
barlop,

Se si utilizza MBR per la partizione del disco sgdisk -z / dev / sdb cancellerà il GPT e il clonezilla lo copierà. backup-utility.com/articles/…
cybernard

Risposte:


7

Non risponderò più alla domanda del titolo. 1

Innanzitutto, tieni presente che, se il settore è veramente danneggiato, deselezionarlo non lo renderà leggibile. Quindi il tuo software di clonazione probabilmente si strozzerà leggendolo invece.

In NTFS, un cluster è contrassegnato come non valido assegnandolo a un flusso speciale$BadClus:$Bad , un file sparse.

Quello di cui hai bisogno è

  • modifica la sua lista di esecuzione per rimuovere i blocchi allocati corrispondenti
  • contrassegnare i cluster corrispondenti come liberi in $Bitmap.

  • Per deselezionare tutti i blocchi danneggiati, c'è ntfsfix -b -d( -b= cancella la lista dei blocchi danneggiati, -d= cancella / non impostare il flag "sporco") ( un altro metodo conntfstruncate fa esattamente lo stesso 2 ).

    • Si potrebbe introdurre incoerenze minori in metadati (nel mio caso, un paio di indici a quanto pare è diventato indifferenziati), io non sono sicuro perché, quindi o gestita chkdsk -fa mano o omettere -dper innescare esso all'avvio di Windows, se / nel caso in cui si ottiene FS errori.
  • Per cancellare un particolare blocco è molto più difficile dal momento che non ho trovato alcun software esistente che può fare questo, fuori dalla scatola 3 . Risoluzione dei settori danneggiati NTFS: il metafile $ BadClus - il codice di Katy descrive la strada - fondamentalmente sta modificando manualmente la runlist e la bitmap.


1 Solo perché la gestione di settori danneggiati + NTFS + clonazione è un argomento troppo ampio. Sarò lieto di rispondere a quelli direttamente correlati alla questione in questione.
2 controllato il codice sorgente di ntfsfix v2015.3.14.
3 per i più insistenti, questi non può farlo: ntfscat(non può leggere i settori illeggibili), ntfscp(non si può scrivere a compensare), ntfstruncate, ntfsfallocate, dd(non possono aprire $BadClus:$Badper la scrittura)


Questo dovrebbe essere selezionato come migliore risposta.
Hashim,

1

Ho avuto un disco rigido che ha sviluppato alcuni cluster danneggiati. L'ho sostituito con un disco noto noto. Il processo di ripristino ha ripristinato i dati del cluster danneggiati e gli altri dati. Questo era su un computer Windows 7 Enterprise.

La mia soluzione era eseguire "chkdsk d: / b" (come è stato suggerito in precedenza). Il / b dice (solo per NTFS) di ripetere la scansione dei cluster danneggiati precedentemente contrassegnati. Almeno nel mio caso (e sospetterei tutte le versioni che supportano / b), cancella l'elenco dei cluster danneggiati immediatamente prima di iniziare la scansione di lettura. Una volta visualizzato il messaggio "Rimozione dei cluster X dal file dei cluster danneggiati" dovresti essere in grado di terminare il processo chkdsk (poiché sta solo leggendo i dati).

Nota: esiste il potenziale per chkdsk di aggiornare il file dei cluster danneggiati nel momento in cui si interrompe il processo se è stato trovato un settore danneggiato all'inizio del disco. Ho preso il rischio e ha ripristinato con successo il file dei cluster danneggiati senza la necessità di scaricare un sacco di altri programmi che richiedono comunque un chkdsk completo in seguito. YMMV.


Questo ha funzionato davvero. Dopo il passaggio 2 è sufficiente chiudere la cmdfinestra. Quindi eseguire chkdsk d: /fquale dirà CHKDSK discovered free space marked as allocated in the volume bitmap.e seguenti Windows has made corrections to the file system..
Davor Josipovic

0

Innanzitutto il modo migliore per procedere è clonare l'unità. Quindi utilizzare chkdsk /Bsulla nuova unità funzionante.

Ora, per quanto riguarda la non marcatura di un settore davvero cattivo che è difficile. Puoi usare:

  • SpinRite o
  • mhdd (attiva il rimappatura)

Entrambi i prodotti dovrebbero rimappare il settore danneggiato, quindi CHKDSK / B dovrebbe deselezionarlo.

Scarica Gparted o PartedMagic ISO. Avvia da esso e riduci la partizione.

Ciò sarà funzionerà perché Windows non è in esecuzione in modo da questo software ridurre la partizione non importa quale. Quindi chkdsk /Bgestirà il resto.

Se tutto ciò fallisce, ora sei in una brutta strada del dolore. È necessario ottenere un editor di settore e modificare manualmente il file system. Sfortunatamente, è al di là delle mie conoscenze per NTFS. Per FAT o FAT32 è super semplice.


Come SSD, non ci sono settori di riserva in cui rimappare. Ecco perché SMART dell'unità continua a notare uno Pending Sector Countzero e uno Reallocated Sector Countzero.
Ian Boyd,

Katy Coe ha un blog eccellente che inizia ad addentrarsi nelle viscere di NTFS. Ma i miei occhi sono diventati vitali quando ho dovuto iniziare a calcolare offset, numeri di cluster logici, numeri di cluster virtuali e il fatto che $ BadClus sia un file di riserva che ha effettivamente le dimensioni dell'intero volume. quasi sicuramente distruggerei il mio disco (funzionante).
Ian Boyd il

2
In realtà un SSD ha tonnellate di settori di riserva. In effetti, un SSD da 120 GB ha probabilmente fino a 8 GB di settori di riserva. Perché l'unità non è stata rimappata automaticamente non mi è noto. Utilizzare gparted e ridurre la partizione.
Cybernard,

Potrebbe benissimo essere una vecchia unità Kingston da 64 GB, ora fuori produzione, ora non più supportata. O forse è solo un bug nel firmware dell'unità in cui si sono dimenticati di implementare la rimappatura del settore.
Ian Boyd,

Inoltre, la clonazione di unità non riesce quando incontrano il settore danneggiato (almeno DriveImageXML ).
Ian Boyd,

0

Dal momento che stai cercando di eseguire il mirroring del disco (e sembra che tu stia utilizzando Windows 7), c'è un altro approccio:

Utilizzare lo strumento integrato per creare un backup da ripristinare su un buon disco. Vai a Pannello di controllo, Sistema e sicurezza, Backup. Lì, crea un'immagine di sistema e anche un disco di riparazione del sistema.

Successivamente, è possibile sostituire il vecchio disco difettoso con uno buono, quindi ripristinare il sistema al suo stato utilizzando il disco di ripristino del sistema e il backup eseguito.


0

il pacchetto gddrescue (gddrescue - strumento di recupero dati GNU) dovrebbe fare il lavoro per te.

Prendi una distro standalone (CD o chiavetta USB) basata su Debian installa gddrescue con "sudo apt-get install gddrescue", quindi clona l'SSd aprendo una finestra terminale ed emettendo:

ddrescue -f / dev / sda / dev / sdb ./ddrescue.log

(dove / dev / sda è l'origine e / dev / sdb è l'SSD di destinazione)

ddrescue proverà a ripristinare il blocco danneggiato e, se impossibile, lo salterà.

Al termine, chkdsk / f / b dovrebbe completare il lavoro.


0

Sembra che il tuo obiettivo sia ridurre la dimensione della partizione e che Windows non la riduca a causa del file $ BadClus, che esiste a causa di cluster danneggiati.

Ho una soluzione alternativa per te che dovrebbe ridurre l'unità senza dover gestire direttamente il file $ BadClus. Utilizzare Partition Wizard per ridurre la partizione. Partition Wizard è facile da usare, è gratuito per uso non commerciale, può essere eseguito dall'interno di Windows con una GUI o da un avvio CD o USB che esegue un piccolo Linux quindi ti dà la stessa GUI. Questo programma può anche recuperare partizioni cancellate e convertire tra tabelle di partizioni MBR e GPT.

Ho riscontrato problemi con Windows che non riduce una partizione oltre un certo punto, quindi proverò Partition Wizard sulla stessa partizione che lo fa senza problemi. Suppongo che la procedura guidata per la partizione sia disposta a ignorare il file $ BadClus. Uso questo programma da oltre 8 anni e alla fine ho acquistato la versione Pro, perché l'hanno guadagnata. Ho trovato questo programma in sostituzione di PQMagic che ho acquistato nel 1996, che era un favoloso programma di partizionamento DOS per unità più piccole.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.