No so voi, ma io in passato ogni anno avevo a che fare con dischi danneggiati e sistemi da recuperare, ma ultimamente mi stavo abituando a questo concetto...
Settimana scorsa lo ho dovuto affrontare nuovamente, però, e ne ho approfittato per scoprire i passi avanti, ma anche i falsi positivi, che la tecnologia dei dischi ha fatto negli ultimi 5-10 anni.
Premetto che ho un MacBook Pro da circa 2 anni al quale avevo cambiato il disco con un Seagate Momentum XT da 750GB modello ST750LX003, sì il disco ibrdo di cui avevo parlato in un posto precedente. Come ogni utente Mac diligente, ho il mio bravo time capsule, quindi affronto con spavalderia il rischio di dischi danneggiati. Ogni utente Mac dovrebbe usare questo ottimo prodotto, o almeno fare un backup costantemente con un disco estero Time Machine.
Vado subito al punto, presentando le cose interessanti che ho "scoperto".
1. Vai a fidarti dello SMART ...!
Lo stato SMART "verificato" è un colossale falso positivo. Possibile che un disco con quasi 3000 settori danneggiati sia considerato "SMART VERIFIED"?
Includo qui di seguito la lettura delle informazioni SMART, noterete a riga 22 che l'esito della saluto del disco è "PASSED". Questa è l'informazione riassuntiva che vi forniscono i tool tipo Disk Utility.
Ma se guardate i dettagli nelle righe 76 e 77 (Current_Pending_Sector e Offline_Uncorrectable) si vede che sono stati individuati 2912 settori danneggiati e che non sono stati rimappati/sostituiti (valore 0 per Reallocated_Sector_Ct in riga 61). Il firmware dei dischi infatti ha un certo numero di settori "di scorta" e quando si rende conto che un settore scritto è danneggiato, rimappa il settore danneggiato su uno di questi settori di scorta, rendendo il disco apparentemente integro. Ma, cosa strana, pur avendo trovato quasi 3000 settori danneggiati, nessuno è mai stato "riparato"!
1: MacBook-Pro-di-Ascanio-Orlandini:~ ascanio$ smartctl -a /dev/disk4
2: smartctl 6.2 2013-07-26 r3841 [x86_64-apple-darwin13.0.0] (local build)
3: Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
4:
5: === START OF INFORMATION SECTION ===
6: Model Family: Seagate Momentus XT (AF)
7: Device Model: ST750LX003-1AC154
8: Serial Number: W20079DP
9: LU WWN Device Id: 5 000c50 0495444f6
10: Firmware Version: SM12
11: User Capacity: 750. 156. 374. 016 bytes [750 GB]
12: Sector Sizes: 512 bytes logical, 4096 bytes physical
13: Rotation Rate: 7200 rpm
14: Device is: In smartctl database [for details use: -P show]
15: ATA Version is: ATA8-ACS T13/1699-D revision 4
16: SATA Version is: SATA 3.0, 6.0 Gb/s (current: 1.5 Gb/s)
17: Local Time is: Sun Nov 24 13:01:56 2013 CET
18: SMART support is: Available - device has SMART capability.
19: SMART support is: Enabled
20:
21: === START OF READ SMART DATA SECTION ===
22: SMART overall-health self-assessment test result: PASSED
23:
24: General SMART Values:
25: Offline data collection status: (0x00) Offline data collection activity
26: was never started.
27: Auto Offline Data Collection: Disabled.
28: Self-test execution status: ( 0) The previous self-test routine completed
29: without error or no self-test has ever
30: been run.
31: Total time to complete Offline
32: data collection: ( 617) seconds.
33: Offline data collection
34: capabilities: (0x73) SMART execute Offline immediate.
35: Auto Offline data collection on/off support.
36: Suspend Offline collection upon new
37: command.
38: No Offline surface scan supported.
39: Self-test supported.
40: Conveyance Self-test supported.
41: Selective Self-test supported.
42: SMART capabilities: (0x0003) Saves SMART data before entering
43: power-saving mode.
44: Supports SMART auto save timer.
45: Error logging capability: (0x01) Error logging supported.
46: General Purpose Logging supported.
47: Short self-test routine
48: recommended polling time: ( 1) minutes.
49: Extended self-test routine
50: recommended polling time: ( 147) minutes.
51: Conveyance self-test routine
52: recommended polling time: ( 2) minutes.
53: SCT capabilities: (0x1081) SCT Status supported.
54:
55: SMART Attributes Data Structure revision number: 10
56: Vendor Specific SMART Attributes with Thresholds:
57: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
58: 1 Raw_Read_Error_Rate 0x000f 102 061 006 Pre-fail Always - 4174600
59: 3 Spin_Up_Time 0x0003 098 098 000 Pre-fail Always - 0
60: 4 Start_Stop_Count 0x0032 091 091 020 Old_age Always - 9472
61: 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
62: 7 Seek_Error_Rate 0x000f 078 060 030 Pre-fail Always - 8716117542
63: 9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 4996
64: 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
65: 12 Power_Cycle_Count 0x0032 092 092 020 Old_age Always - 8354
66: 184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
67: 187 Reported_Uncorrect 0x0032 001 001 000 Old_age Always - 31723
68: 188 Command_Timeout 0x0032 100 253 000 Old_age Always - 0
69: 189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
70: 190 Airflow_Temperature_Cel 0x0022 071 050 045 Old_age Always - 29 (Min/Max 21/29)
71: 191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
72: 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 345
73: 193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 231137
74: 194 Temperature_Celsius 0x0022 029 050 000 Old_age Always - 29 (0 12 0 0 0)
75: 195 Hardware_ECC_Recovered 0x001a 038 027 000 Old_age Always - 4174600
76: 197 Current_Pending_Sector 0x0012 065 065 000 Old_age Always - 2912
77: 198 Offline_Uncorrectable 0x0010 065 065 000 Old_age Offline - 2912
78: 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
79: 254 Free_Fall_Sensor 0x0032 001 001 000 Old_age Always - 1
80:
81: SMART Error Log Version: 1
82: ATA Error Count: 31636 (device log contains only the most recent five errors)
83: CR = Command Register [HEX]
84: FR = Features Register [HEX]
85: SC = Sector Count Register [HEX]
86: SN = Sector Number Register [HEX]
87: CL = Cylinder Low Register [HEX]
88: CH = Cylinder High Register [HEX]
89: DH = Device/Head Register [HEX]
90: DC = Device Command Register [HEX]
91: ER = Error register [HEX]
92: ST = Status register [HEX]
93: Powered_Up_Time is measured from power on, and printed as
94: DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
95: SS=sec, and sss=millisec. It "wraps" after 49.710 days.
96:
97: Error 31636 occurred at disk power-on lifetime: 4996 hours (208 days + 4 hours)
98: When the command that caused the error occurred, the device was active or idle.
99:
100: After command completion occurred, registers were:
101: ER ST SC SN CL CH DH
102: -- -- -- -- -- -- --
103: 40 51 01 ff ff ff 5f Error: UNC at LBA = 0x0fffffff = 268435455
104:
105: Commands leading to the command that caused the error were:
106: CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
107: -- -- -- -- -- -- -- -- ---------------- --------------------
108: 42 00 01 ff ff ff 0f 00 22d+14:22:22.273 READ VERIFY SECTOR(S) EXT
109: 42 00 01 ff ff ff 0f 00 22d+13:38:36.874 READ VERIFY SECTOR(S) EXT
110: 42 00 78 ff ff ff 0f 00 22d+13:36:54.046 READ VERIFY SECTOR(S) EXT
111: 42 00 78 ff ff ff 0f 00 22d+12:53:00.110 READ VERIFY SECTOR(S) EXT
112: 42 00 78 ff ff ff 0f 00 22d+12:09:18.412 READ VERIFY SECTOR(S) EXT
113:
114: Error 31635 occurred at disk power-on lifetime: 4996 hours (208 days + 4 hours)
115: When the command that caused the error occurred, the device was active or idle.
116:
117: After command completion occurred, registers were:
118: ER ST SC SN CL CH DH
119: -- -- -- -- -- -- --
120: 40 51 78 ff ff ff 5f Error: UNC at LBA = 0x0fffffff = 268435455
121:
122: Commands leading to the command that caused the error were:
123: CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
124: -- -- -- -- -- -- -- -- ---------------- --------------------
125: 42 00 78 ff ff ff 0f 00 22d+13:36:54.046 READ VERIFY SECTOR(S) EXT
126: 42 00 78 ff ff ff 0f 00 22d+12:53:00.110 READ VERIFY SECTOR(S) EXT
127: 42 00 78 ff ff ff 0f 00 22d+12:09:18.412 READ VERIFY SECTOR(S) EXT
128: 42 00 78 ff ff ff 0f 00 22d+12:08:52.988 READ VERIFY SECTOR(S) EXT
129: 42 00 78 ff ff ff 0f 00 22d+11:24:59.271 READ VERIFY SECTOR(S) EXT
130:
131: Error 31634 occurred at disk power-on lifetime: 4966 hours (206 days + 22 hours)
132: When the command that caused the error occurred, the device was active or idle.
133:
134: After command completion occurred, registers were:
135: ER ST SC SN CL CH DH
136: -- -- -- -- -- -- --
137: 40 51 08 ff ff ff 5f Error: UNC 8 sectors at LBA = 0x0fffffff = 268435455
138:
139: Commands leading to the command that caused the error were:
140: CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
141: -- -- -- -- -- -- -- -- ---------------- --------------------
142: 25 00 08 ff ff ff 0f 00 39d+18:42:24.045 READ DMA EXT
143: 35 00 08 ff ff ff 0f 00 39d+18:42:23.725 WRITE DMA EXT
144: 35 00 08 ff ff ff 0f 00 39d+18:42:23.395 WRITE DMA EXT
145: 35 00 08 ff ff ff 0f 00 39d+18:42:23.054 WRITE DMA EXT
146: 35 00 08 ff ff ff 0f 00 39d+18:42:22.669 WRITE DMA EXT
147:
148: Error 31633 occurred at disk power-on lifetime: 4966 hours (206 days + 22 hours)
149: When the command that caused the error occurred, the device was active or idle.
150:
151: After command completion occurred, registers were:
152: ER ST SC SN CL CH DH
153: -- -- -- -- -- -- --
154: 40 51 08 ff ff ff 5f Error: UNC 8 sectors at LBA = 0x0fffffff = 268435455
155:
156: Commands leading to the command that caused the error were:
157: CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
158: -- -- -- -- -- -- -- -- ---------------- --------------------
159: 25 00 08 ff ff ff 0f 00 39d+17:59:08.702 READ DMA EXT
160: 25 00 08 ff ff ff 0f 00 39d+17:16:15.731 READ DMA EXT
161: 35 00 08 ff ff ff 0f 00 39d+17:16:14.818 WRITE DMA EXT
162: 35 00 08 ff ff ff 0f 00 39d+17:16:14.496 WRITE DMA EXT
163: 35 00 08 ff ff ff 0f 00 39d+17:16:14.177 WRITE DMA EXT
164:
165: Error 31632 occurred at disk power-on lifetime: 4966 hours (206 days + 22 hours)
166: When the command that caused the error occurred, the device was active or idle.
167:
168: After command completion occurred, registers were:
169: ER ST SC SN CL CH DH
170: -- -- -- -- -- -- --
171: 40 51 08 ff ff ff 5f Error: UNC 8 sectors at LBA = 0x0fffffff = 268435455
172:
173: Commands leading to the command that caused the error were:
174: CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
175: -- -- -- -- -- -- -- -- ---------------- --------------------
176: 25 00 08 ff ff ff 0f 00 39d+17:16:15.731 READ DMA EXT
177: 35 00 08 ff ff ff 0f 00 39d+17:16:14.818 WRITE DMA EXT
178: 35 00 08 ff ff ff 0f 00 39d+17:16:14.496 WRITE DMA EXT
179: 35 00 08 ff ff ff 0f 00 39d+17:16:14.177 WRITE DMA EXT
180: 35 00 08 ff ff ff 0f 00 39d+17:16:13.855 WRITE DMA EXT
181:
182: SMART Self-test log structure revision number 1
183: Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
184: # 1 Short offline Completed: read failure 90% 4990 836091760
185: # 2 Short offline Completed: read failure 80% 4988 836091760
186: # 3 Short offline Completed: read failure 90% 4988 836091760
187: # 4 Short offline Completed: read failure 90% 4987 836091760
188: # 5 Short offline Completed: read failure 90% 4987 836091760
189: # 6 Short offline Completed: read failure 90% 4978 836091760
190: # 7 Short offline Completed: read failure 90% 4944 836091968
191:
192: SMART Selective self-test log data structure revision number 1
193: SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
194: 1 0 0 Not_testing
195: 2 0 0 Not_testing
196: 3 0 0 Not_testing
197: 4 0 0 Not_testing
198: 5 0 0 Not_testing
199: Selective self-test flags (0x0):
200: After scanning selected spans, do NOT read-scan remainder of disk.
201: If Selective self-test is pending on power-up, resume after 0 minute delay.
202:
203: MacBook-Pro-di-Ascanio-Orlandini:~ ascanio$
204:
Quel che è peggio, se vedete i dati SMART, anche dopo aver richiesto delle verifiche e dopo che queste sono terminate con errori irreparabili (si vedano le linee 182-190) lo stato globale risulta sempre essere "SMART overall-health self-assessment test result: PASSED"!
Morale: la tecnologia SMART è notevole, ma è usata malissimo dai sistemi operativi. Per fare una vera diagnostica non basta fidarsi del parametro finale ma occorre interpretare tutta la tabella, e anche effettuare dei self test. Occorre monitorare nel tempo l'evoluzione di questi parametri e sollevare allarmi. Cosa che dovrebbe fare il parametro riassuntivo dello SMART, ma evidentemente non lo fa bene.
Esiste un ottimo tool in proposito, per Mac: SMARTreporter, che traccia e tiene una storia delle prestazioni SMART dei dischi e effettua periodicamente i self test interni. Inoltre tiene traccia degli errori in lettura, come si vedrà più avanti. L'altro tool indispensabile è SmartMonTools, disponibile per praticamente tutti i sistemi.
2. Errori in lettura, I/O Error
E questa è un'altra scoperta importante... il disco sa riconoscere errori in scrittura e li usa per rimappare settori danneggiati, ma non gli errori in lettura! Che vengono però gestiti dal kernel del sistema forzando un certo numero di retry - situazione che può mandare in blocco il sistema se ripetuti frequentemente, blocco non permanente ma tipo 20 secondi di blocco dell'interfaccia utente.
Mi sono accorto del problema proprio perché, durante un backup, il sistema diventata ripetutamente non risponsivo. Ho controllato il log di sistema (con "Console" su Mac) e ho trovato simpatiche righe "kernel disk0s1: I/O error".
Anche in questo caso SMARTreporter non solo controlla i parametri SMART del disco, ma anche gli errori di lettura nel log di sistema!
Infatti se si subiscono errori su zone del disco già scritte, questi saranno riconosciuti solo dal sistema operativo! Il disco non puà intervenire rimappando il blocco altrimenti perderebbe tutti i dati del blocco scritto. Invece se si va a scrivere in una zona di disco vuota, se si presenta un errore il disco trasparentemente cercherà di riallocare il blocco con quelli di scorta. Un errore in scrittura quindi implica che il disco è severamente danneggiato tanto che non è più possibile sostituire i blocchi (come nel mio caso).
Dovendo prendere un nuovo disco, mi sono chiesto se prendere lo stesso (Momentum XT da 750GB ST750LX003) oppure la terza generazione di dischi ibridi "Laptop Solid State Hybrid Drive" ST1000LM014 da 1T. (Seguendo il link qui fornito accedete direttamente ad una ricerca su Amazon così che troverete anche il prezzo più attuale del prodotto. Inoltre se lo comprate seguendo questo link, Amazon mi riconoscerà qualche punto percentuale quindi se volete comprarlo e dirmi grazie potete farlo seguendo questo link...)
Perché il dubbio? Il "vecchio" Momentus XT è un disco da 7500rpm, mentre il nuovo di terza generazione è sì più grande ma gira ai soliti 5400rpm, ma ha 64MB di cache di primo livello contro i 32 del modello precedente. Sempre 8GB di memoria NAND allo stato solido. Inoltre la nuova generazione dovrebbe aver migliorato gli algoritmi di caching permettendo anche l'uso della ssd anche in scrittura. Alla fine ho scelto il secondo, quello di 3za generazione, sperando che l'intelligenza sia più importante della "forza bruta" della velocità di rotazione, almeno per i file medio/piccoli che si usano abitualmente. Lo ho comprato su Amazon a meno di 90€ (quello vecchio mi era costato 140€ 1,5 anni fa!).
Mi sono accorto del problema proprio perché, durante un backup, il sistema diventata ripetutamente non risponsivo. Ho controllato il log di sistema (con "Console" su Mac) e ho trovato simpatiche righe "kernel disk0s1: I/O error".
Anche in questo caso SMARTreporter non solo controlla i parametri SMART del disco, ma anche gli errori di lettura nel log di sistema!
Infatti se si subiscono errori su zone del disco già scritte, questi saranno riconosciuti solo dal sistema operativo! Il disco non puà intervenire rimappando il blocco altrimenti perderebbe tutti i dati del blocco scritto. Invece se si va a scrivere in una zona di disco vuota, se si presenta un errore il disco trasparentemente cercherà di riallocare il blocco con quelli di scorta. Un errore in scrittura quindi implica che il disco è severamente danneggiato tanto che non è più possibile sostituire i blocchi (come nel mio caso).
Il mio nuovo disco
Come saprete, sono un fan dei dischi ibridi di Seagate, nonostante questo disco mi sia morto così presto (poco più di un anno, con all'attivo solo 4996 ore, riga 63).
Dovendo prendere un nuovo disco, mi sono chiesto se prendere lo stesso (Momentum XT da 750GB ST750LX003) oppure la terza generazione di dischi ibridi "Laptop Solid State Hybrid Drive" ST1000LM014 da 1T. (Seguendo il link qui fornito accedete direttamente ad una ricerca su Amazon così che troverete anche il prezzo più attuale del prodotto. Inoltre se lo comprate seguendo questo link, Amazon mi riconoscerà qualche punto percentuale quindi se volete comprarlo e dirmi grazie potete farlo seguendo questo link...)
Perché il dubbio? Il "vecchio" Momentus XT è un disco da 7500rpm, mentre il nuovo di terza generazione è sì più grande ma gira ai soliti 5400rpm, ma ha 64MB di cache di primo livello contro i 32 del modello precedente. Sempre 8GB di memoria NAND allo stato solido. Inoltre la nuova generazione dovrebbe aver migliorato gli algoritmi di caching permettendo anche l'uso della ssd anche in scrittura. Alla fine ho scelto il secondo, quello di 3za generazione, sperando che l'intelligenza sia più importante della "forza bruta" della velocità di rotazione, almeno per i file medio/piccoli che si usano abitualmente. Lo ho comprato su Amazon a meno di 90€ (quello vecchio mi era costato 140€ 1,5 anni fa!).
Politica di Seagate
Da una verifica online il disco risulta ancora in garanzia fino a maggio, praticamente due anni da quando lo ho comprato (giugno 2012), ho potuto fare le pratiche di richiesta di rientro e spedirò il disco domani. Vediamo quanto impiegano per rimandarmelo, ma fino ad ora la procedura è stata molto veloce. Avevo anche scritto al supporto tecnico e mi hanno risposto il giorno dopo con consigli utili, tipo usare il tool SeaTools per fare indagini di basso livello e tentare una riparazione, che è comunque fallita.
Nel frattempo mi sono fatto un po' di esperienza sul recovery mondo Mac, quindi se vi serve qualche consiglio fresco, scrivete pure!
E buon backup a tutti!
Nessun commento:
Posta un commento