View Full Version : Marcare i settori danneggiati senza formattare il disco (Windows)
Giovanni_G
17-04-2023, 14:48
Ciao, ho un disco che sta morendo, lo cambierò, i suoi dati non sono critici e posso perderli (registrazioni continue di videosorveglianza), vorrei solo che Windows smettesse di scrivere sui settori danneggiati (non molti, al momento), coem posso fare?
Il format lento risolverebbe il problema, testa la scrittura e se qc non va (secondo me) scrive nella partizione di non usare quel settore), allo stesso modo il firmware del disco prova a riallocarlo.
Non volgio formattare, piuttosto voglio chiedervi come fare per non formattare.
Se ad esmpio il chkdsk /f /r è in grado, leggendo soltando il disco, imbattendosi in un settore non leggibile, di aggiornare la partizione dicendo di non scrivere più in quel settore, per me sarebbe sufficiente. lo fa? Ne dubito purtroppo.
Conoscete altri modi?
Grazie
Ciao,
il processo di riallocamento dei settori danneggiati è gestito dal firmware del disco stesso.
Per poter disattivare tale processo è necessario accedere con appositi tool alla Service Area del disco dove sono contenuti i moduli firmware tramite l'invio di comandi VSC (Vendor Specific Commands).
Tramite i comandi ATA con cui normalmente il computer comunica con gli hdd non è possibile accedere alla SA, quindi non è possibile effettuare una tale operazione.
Normalmente tale operazione viene effettuata dalle ditte di recupero dati per stabilizzare gli hdd che hanno settori danneggiati o problemi di lettura in generale, è una delle azioni principali che deve essere effettuata prima di procedere con la clonazione della superficie altrimenti c'è il rischio che le testine non sopravvivano.
Se l'intento non è quello di recuperare i dati ma semplicemente quello di poter ancora utilizzare il disco, non è molto utile disattivare il processo di riallocamento dei settori seppur ciò comporterebbe un evidente miglioramento della risposta del disco.
Avresti comunque ancora a che fare con i settori danneggiati, se le testine passano su quelle zone il disco comunque può smettere di rispondere e le testine possono danneggiarsi lo stesso.
La disattivazione del riallocamento automatico dei settori serve per impedire che le testine insistano continuamente su un specifico settore danneggiato, se non viene fatto ciò il fw del disco continuerebbe a lavorare in background nell'intento di riallocarlo, spesso senza riuscirci.
Un requisito fondamentale per poter riallocare un settore è quello di riuscire a trasferire il contenuto di tale settore (i dati) su un settore di riserva che si trova in un'area speciale del disco chiamata "spare area", se il settore è messo troppo male da non poterne leggerne il contenuto nemmeno dopo numerosi tentativi (o sovrascriverlo con degli zero), rimane non allocato (pendente) e il fw insisterebbe ancora inchiodando sempre di più il disco.
L'impossibilità di riallocare un settore può dipendere anche dalla cattiva risposta delle testine (che diventano sempre più deboli durante tale processo), insomma si entra in un circolo vizioso che non fa altro che peggiorare andando avanti in questo modo.
Altro requisito fondamentale per poter riallocare i settori danneggiati è che siano rimasti a disposizione sufficienti settori di riserva in spare area, c'è un numero limitato di settori di riserva e se si esauriscono non sarà più possibile riallocare alcun settore... ma il fw non cesserà di provarci.
Di solito a tal punto non si arriva mai perchè l'hdd smette di rispondere completamente ben prima, per crash di alcuni moduli in SA o per il guasto definitivo delle testine o per la generazioni di graffi sulla superficie.
Creare apposite partizioni vuote (per non essere mai utilizzate) dove risiedono i settori danneggiati non serve a molto... anche perchè non è semplice individuare il posizionamento di tali settori e possono trovarsi un pò ovunque sulla superficie.
Se il fw ha già preso in considerazione i settori da trattare per il riallocamento, se ne infischia che si trovino in una partizione creata ad hoc per non essere mai utilizzata e cercherà comunque di "trattarli".
Il partizionamento può aiutare con le chiavette usb se ci sono settori danneggiati concentrati tutti in una certa zona, non con gli hdd, in ogni caso sia che si tratti di hdd che di chiavette usb io eviterei di utilizzarli ancora se hanno settori danneggiati.
La formattazione lenta (o ancora meglio l'azzeramento specifico solo dei settori danneggiati) può aiutare a riallocare i settori, perchè è più facile azzerarli che leggerne il contenuto, ma è quasi impossibile che possano essere tutti riallocati perchè di solito ne rimane almeno qualcuno che è troppo danneggiato per essere trattato (che quindi rimane pendente).
Per l'azzeramento specifico dei settori danneggiati cerca le mie discussioni relative al tool "Victoria".
Esempio:
https://hwupgrade.it/forum/showthread.php?t=2976539&highlight=Victoria
Se ad esmpio il chkdsk /f /r è in grado, leggendo soltando il disco, imbattendosi in un settore non leggibile, di aggiornare la partizione dicendo di non scrivere più in quel settore, per me sarebbe sufficiente. lo fa?
NO, il chkdsk non è in grado di trattare i settori a livello fisico ma soltanto a livello logico, e anche se lo facesse non risolverebbe il problema del riallocamento automatico ancora attivo a livello fw su quei settori.
Il chkdsk può insistere un pochino nella lettura dei settori danneggiati appartenenti ad un certo file o ai meta-dati del filesystem, se riesce a leggere con successo (seppur a fatica) un certo file o porzione del filesystem che risiede su settori danneggiati, il contenuto viene spostato su specifiche cartelle nascoste create ad hoc (FOUND.000 - FOUND.001 ed eventuali progressivi), ma a livello fisico non cambierà nulla, i settori rimangono danneggiati e restano sempre li.
Se l'accesso ad un certo file fallisce perchè magari c'è un singolo settore che rimane illeggibile, il file viene eliminato e quindi perso, infatti il chkdsk è altamente sconsigliato usarlo quando si ha a che fare con hdd fisicamente danneggiati se si ha necessità di recuperare i dati. Se invece fallisce l'accesso a qualche record del filesystem relativo ad una certa cartella, questa viene persa, ma se le sotto-cartelle e i file contenuti in essa sono accessibili allora vengono spostati nelle cartelle FOUND... ovviamente senza la parte genitoriale della struttura.
ESEMPIO:
C:\Users\IL MIO NOME\Immagini\Le mie foto
se parte della $Bitmap relativa alla cartella "Immagini" è danneggiata, il chkdsk sposterà la cartella "Le mie foto" in:
C:\FOUND.000\Le mie foto
Giovanni_G
17-04-2023, 23:05
Grazie per la risposta, l'argomento è interessante, rimangono dei dubbi:
Il chkdsk è in grado di rilevare degli errori, nel momento che li trova non può marcare nelle informazioni del disco (non sa bene dove potrebbe, io credo nella MFT) ) che quel particolare settore è danneggiato e quindi non va usato? Questo è il nocciolo.. perchè secondo me invece il format lo fa, se formatti un disco e trova un settore danneggiato windows non ci scriverà mai sopra, quindi lo sa che settore sia, e perchp chkdsk non potrebbe scrivere la stessa informazione?
Altro argomento è la ricollocazione del settore su quelli di riserva da parte del FW del disco, che rende trasparente il problema per chi utilizza quel settore, evidentemente non tutti i dischi si comportano allo stesso modo, questo disco ha dei settori riallocati, crystal mi dice 428hex, tanti.. forse li ha già usati tutti (il disco è da 4TB, TOSHIBA HDWD240) e non riesce più a riallocare dandomi l'errore di lettura su un file. Il file l'ho cancellato io, non c'è niente di essenziale su quel disco. Forse ha scritto (con successo) su quel settore e poi è partito.. e non può riallocare in lettura, altrimenti il risultato è corrotto, deve riallocare in scrittura, appena se ne accorge. Forse per questo il format funziona, ad ogni modo se un settore è rovinato non dovrebbe essere più usato..
Da quello che ho capito mi resta solo da far eun format, perdendo le registrazioni
Giovanni_G
18-04-2023, 10:18
QUesta notte ho messo in paua le registrazioni e ho fatto una scansione completa /f /r, il risultato sono 0 settori danneggiati e i settori riallocati passati a 42A, ne ha trovati altri 2 e li ha riallocati. Non capisco però perchè c'è voluto il chkdsk, probabilmente il problema si è verificato dopo la scrittura e di sua iniziativa non può riallocare qualcosa in uso, va prima reso spazio libero, e aa prima occasione di accesso fallito viene riallocato. Quindi, siccome il FW del disco non sa cosa è in uso e cosa no, Windows gli dà il permesso di riallocare, giusto?
Non vedo altra possibilità, se lo facesse da solo avrebeb dovuto farlo anche prima, quando per 3 volte ho tentato di copiare/accedere al file col settore non leggibile.
Grazie per la risposta, l'argomento è interessante, rimangono dei dubbi:
Il chkdsk è in grado di rilevare degli errori, nel momento che li trova non può marcare nelle informazioni del disco (non sa bene dove potrebbe, io credo nella MFT) ) che quel particolare settore è danneggiato e quindi non va usato? Questo è il nocciolo.. perchè secondo me invece il format lo fa, se formatti un disco e trova un settore danneggiato windows non ci scriverà mai sopra, quindi lo sa che settore sia, e perchp chkdsk non potrebbe scrivere la stessa informazione?
Hai cominciato un ragionamento logico su un presupposto sbagliato!
La formattazione non marca proprio nulla e non è in grado di stabilire se un settore deve essere ancora usato o meno.
A far ciò è il firmware del disco, l'operazione di formattazione semmai fornisce lo "stimolo" al fw di eseguire le operazioni di riallocamento dei settori inaccessibili.
Dopo aver formattato un disco con settori fisicamente danneggiati, windows prima o poi proverà comunque a scrivere anche su quei settori.
Se non ci scrive sopra è solo perchè non ci riesce (settori troppo danneggiati o testine degradate) e in tal caso appare un messaggio d'errore scrittura o addirittura il sistema va in crash.
Quando invece riesce a scriverci sopra è perchè il settore non è ancora messo malissimo (settore lento) oppure perchè era stato precedentemente riallocato dal firmware e quindi la scrittura viene eseguita sul relativo settore di riserva.
Il chkdsk non marca nulla a livello fisico, lavora soltanto a livello logico (cioè interagisce soltanto con parti del filesystem, quindi MFT, Bitmap).
Per cui, se viene rilevato un settore danneggiato a livello logico (cosa che accade ad esempio se si resetta o riavvia il pc mentre sta avvenendo un'operazione di scrittura), il chkdsk farà un controllo al riavvio e correggerà l'errore.
Se invece il settore è danneggiato fisicamente, proverà sempre a correggere l'errore, potrebbe anche farcela se il settore ancora risponde almeno lentamente, ma di certo non verrà isolato dal chkdsk quindi sarà interpretato come settore buono. Sarà semmai il fw del disco che provvederà ad isolare (riallocare fisicamente) tale settore se lo ritiene necessario.
Se invece il settore fisicamente danneggiato rimane inaccessibile, il chkdsk non potrà correggere nulla e qui avvengono di solito grossi problemi.
Il chkdsk quello che non riesce a riparare tende a nasconderlo sotto il tappeto, cioè fa finta che il problema non ci sia, quindi i dati non accessibili vengono semplicemente eliminati... per cui i settori su cui risiedevano quei dati rimangono sempre a disposizione del sistema operativo per essere usati ancora.
Per questo motivo quando viene avviato il chkdsk su un disco fisicamente danneggiato, i dati relativi ai settori inaccessibili vengono persi. E' buona norma accertarsi delle condizioni del disco (analisi smart) prima di avviare il chkdsk, purtroppo però il chkdsk può partire anche in automatico all'avvio del sistema. Se si ha la fortuna di essere davanti al pc all'avvio, è meglio annullare l'operazione di controllo premendo un tasto qualsiasi e accertarsi che non si tratta di un problema fisico, solo allora è consigliato procedere col chkdsk.
Se avviene un errore sul filesystem, windows cercherà di protegge (e nascondere) i dati finchè non verrà eseguito il chkdsk, allora in tal senso si che avviene una marcazione a livello $Bitmap per impedire al sistema di sovrascrivere i dati coinvolti nell'errore di sistema. Si tratta di una protezione di livello logico, non fisico.
In seguito al chkdsk, tale protezione viene tolta.
Giovanni_G
18-04-2023, 11:34
In pratica in nessuna maniera avviene che nella MFT viene marcato quel settore come "bad"? Mi sembra strano, tanto più che il risultato di chkdsk riporta i settori danneggiati. Ora, se sono danneggiati veramente, perchp dovrebbe ostinarsi a scriverci sopra? Non ha senso. Io credo ci sia già la possibilità che windows se ne accorga ed eviti di usarli, forse dopo N tentativi falliti?
Certo, se il disco in qualche modo restituisce il valore, allora il settore è "buono" anche se non lo è, su questo sono d'accordo.
Grazie per la tua cordiale spiegazione :)
Altro argomento è la ricollocazione del settore su quelli di riserva da parte del FW del disco, che rende trasparente il problema per chi utilizza quel settore, evidentemente non tutti i dischi si comportano allo stesso modo, questo disco ha dei settori riallocati, crystal mi dice 428hex, tanti.. forse li ha già usati tutti (il disco è da 4TB, TOSHIBA HDWD240) e non riesce più a riallocare dandomi l'errore di lettura su un file. Il file l'ho cancellato io, non c'è niente di essenziale su quel disco. Forse ha scritto (con successo) su quel settore e poi è partito.. e non può riallocare in lettura, altrimenti il risultato è corrotto, deve riallocare in scrittura, appena se ne accorge. Forse per questo il format funziona, ad ogni modo se un settore è rovinato non dovrebbe essere più usato..
Da quello che ho capito mi resta solo da far eun format, perdendo le registrazioni
Come avevo già scritto qualche messaggio sopra, è più facile far riallocare i settori azzerandoli (quindi anche con una semplice formattazione completa) piuttosto che insistendo con la lettura del settore danneggiato.
Il motivo è quello che ti dicevo, cioè per essere riallocato un settore deve prima essere letto il contenuto e copiato su un settore di riserva, se non è possibile leggerne il contenuto (settore troppo danneggiato o testine deboli) il settore rimane pendente.
E' più facile farlo riallocare scrivendoci sopra degli zero.
Se hai bisogno di recuperare dei dati, non dovresti fare nulla di tutto ciò.
Andrebbe effettuata una clonazione della superficie con strumenti professionali, o al limite con qualche distro linux basata su DDRescue.
I file video e audio non vengono troppo compromessi se c'è soltanto qualche settore danneggiato qua e la, l'importante è che non ce ne siano troppi consecutivi o sugli indici di apertura e chiusura del file.
QUesta notte ho messo in paua le registrazioni e ho fatto una scansione completa /f /r, il risultato sono 0 settori danneggiati e i settori riallocati passati a 42A, ne ha trovati altri 2 e li ha riallocati. Non capisco però perchè c'è voluto il chkdsk, probabilmente il problema si è verificato dopo la scrittura e di sua iniziativa non può riallocare qualcosa in uso, va prima reso spazio libero, e aa prima occasione di accesso fallito viene riallocato. Quindi, siccome il FW del disco non sa cosa è in uso e cosa no, Windows gli dà il permesso di riallocare, giusto?
Non vedo altra possibilità, se lo facesse da solo avrebeb dovuto farlo anche prima, quando per 3 volte ho tentato di copiare/accedere al file col settore non leggibile.
chkdsk /f /r
la sintassi col comando "r" non fa altro che forzare la lettura sui settori danneggiati, se non ricordo male corrisponde a massimo 8 tentativi di lettura per ogni settore danneggiato trovato (ma potrei sbagliarmi).
Comunque è sempre il fw del hdd che decide se riallocare il settore danneggiato, alcuni settori danneggiati rimangono comunque pendenti.
Il TOSHIBA HDWD240 è un disco di tipo SMR, quindi ha un'ampia zona sul firmware dedicata alla memoria cache.
E' possibile che ci siano settori danneggiati anche sulla cache, ma non so come vengono realmente gestiti i settori danneggiati in tale zona e credo che siano pochi i professionisti del settore che sanno come funzioni esattamente la gestione di tale zona da parte del fw.
Posso dirti che anche a livello di recupero dati non si sa granchè come gestire questi Toshiba smr quando ci sono problemi di lettura sulla cache, mentre sui seagate e i WD la conoscenza è migliore e i dati si possono recuperare in tale situazione anche con i classici sistemi adoperati nel settore.
Riguardo i Toshiba, solo pochi professionisti al mondo che sanno come intervenire sulla cache danneggiata tramite strumenti personalizzati.
Il chkdsk non contrassegna alcun settore come danneggiato, semmai è il sistema operativo che indica al filesystem (a livello $Bitmap) quali cluster (cioè gruppi di settori) marcare come bad a livello logico.
I singoli settori danneggiati non vengono marcati, viene caso mai marcato un cluster intero contenente il settore (o i settori) danneggiati + quelli buoni all'interno dello stesso cluster.
Poi come già detto, il chkdsk toglie questo marking logico quando viene risolto il problema... se può essere risolto.
Giovanni_G
24-04-2023, 10:07
Grazie, esauriente.
Sarebbe quindi ottimo poter trovare un modo per cui windows marchi questi settori in modo più agevole, piuttosto di insisterci fino al collasso del sistema, se l'utilizzatore dichiare che la perdita dati non è un problema.
Marcare un cluster danneggiato significa semplicemente nasconderlo a livello logico.
L'isolamento dei settori danneggiati (remap) è un'altra cosa perchè si tratta di un trattamento fisico.
Nel primo caso quindi si risolve poco, il fw del disco continuerà sempre ad accedere su quei settori danneggiati per tentare di remapparli, rendendo quindi il disco lento (o peggio).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.