Puncte:0

Care este ordinea normală a mesajelor în dmesg când un HDD USB se defectează?

drapel mu

Am un hard disk USB atașat la un server Debian GNU/Linux. Încerc să îl formatez (NTFS), cu această comandă:

# mkntfs -v /dev/sdd1

care durează câteva ore, pentru că verifică și discul. În timpul verificării, dmesg -T arată următoarele:

[Miercuri, 12 ianuarie 15:22:53 2022] sd 9:0:0:0: [sdd] Disc SCSI atașat
[Miercuri, 12 ianuarie 18:03:26 2022] usb 1-4: deconectare USB, dispozitiv numărul 5
[Miercuri, 12 ianuarie 18:03:26 2022] blk_update_request: eroare I/O, dev sdd, sector 621745808 op 0x1:(WRITE) flags 0x104000 phys_seg 240 prior class 0
[Miercuri, 12 ianuarie 18:03:26 2022] Eroare I/O tampon pe dev sdd1, bloc logic 621743760, scriere a paginii asincrone pierdute
[Miercuri, 12 ianuarie 18:03:26 2022] Eroare I/O tampon pe dev sdd1, bloc logic 621743761, scriere a paginii asincrone pierdute
   (...și așa mai departe pentru câteva rânduri, atunci)
[Miercuri, 12 ianuarie 18:03:26 2022] blk_update_request: eroare I/O, dev sdd, sector 621746048 op 0x1:(WRITE) flags 0x104000 phys_seg 240 prior class 0
[Miercuri, 12 ianuarie 18:03:26 2022] blk_update_request: eroare I/O, dev sdd, sector 621746288 op 0x1:(WRITE) flags 0x100000 phys_seg 8 prio class 0
[Miercuri, 12 ianuarie 18:03:26 2022] blk_update_request: eroare I/O, dev sdd, sector 621746296 op 0x1:(WRITE) flags 0x800 phys_seg 16 prior class 0
   (...și așa mai departe pentru câteva rânduri, atunci)
[Miercuri, 12 ianuarie 18:03:31 2022] buffer_io_error: 9015384 apeluri inverse suprimate
   (...alte erori...)

Privind cantitatea mare de mesaje de eroare, aș spune că HDD-ul este aproape mort, dar atașându-l la un computer Windows pare să funcționeze. Mai mult, prima eroare (usb 1-4: deconectare USB, numărul dispozitivului 5) care intră dmesg înainte de celelalte erori, mă face să bănuiesc că problema nu este HDD-ul în sine, ci altceva care face ca HDD-ul să se deconecteze în primul rând, iar erorile ulterioare ar putea fi consecința evidentă a deconectarii.

Cu toate acestea, nu am foarte multă experiență dmesg ieșire, deci este foarte posibil să citesc greșit.

EDIT: așa cum a solicitat NiKiZe, aici este rezultatul smartctl -a /dev/sdd:

# smartctl -a /dev/sdd
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-5.10.0-3-amd64] (build local)
Drepturi de autor (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== ÎNCEPE SECȚIUNEA DE INFORMAȚII ===
Familia de modele: Western Digital Blue Mobile
Model de dispozitiv: WDC WD10SPCX-00KHST0
Număr de serie: WD-WXF1A95F0J3X
ID dispozitiv LU WWN: 5 0014ee 65b7e0332
Versiunea de firmware: 01.01A01
Capacitate utilizator: 1.000.204.886.016 octeți [1,00 TB]
Dimensiuni sector: 512 octeți logic, 4096 octeți fizic
Rata de rotatie: 5400 rpm
Dispozitivul este: În baza de date smartctl [pentru detalii utilizați: -P show]
Versiunea ATA este: ACS-2 (nu este indicată o revizuire minoră)
Versiunea SATA este: SATA 3.0, 6.0 Gb/s (actual: 1.5 Gb/s)
Ora locală este: joi, 13 ianuarie, 11:04:19 2022 CET
Suportul SMART este: Disponibil - dispozitivul are capacitate SMART.
Suportul SMART este: Activat

=== ÎNCEPEREA SECȚIUNII DE CITIRE DE DATE INTELIGENTE ===
Stare SMART nu este acceptată: răspuns incomplet, registrele de ieșire ATA lipsesc
Rezultatul testului de autoevaluare a sănătății generale SMART: A TRUS
Avertisment: Acest rezultat se bazează pe o verificare a atributului.

Valori generale SMART:
Starea de colectare a datelor offline: (0x00) Activitate de colectare a datelor offline
                    nu a fost niciodată începută.
                    Colectare automată de date offline: dezactivată.
Starea execuției autotestării: ( 0) Rutina anterioară de autotestare a fost finalizată
                    fără eroare sau nici un autotest nu a avut vreodată 
                    fost condus.
Timp total până la finalizarea Offline 
colectarea datelor: (16080) secunde.
Colectarea datelor offline
capabilități: (0x7b) SMART execută Offline imediat.
                    Suport activat/dezactivat pentru colectarea datelor offline automat.
                    Suspendați colecția offline la nou
                    comanda.
                    Scanarea suprafeței offline este acceptată.
                    Autotest acceptat.
                    Autotestare a transportului acceptat.
                    Autotest selectiv acceptat.
Capacitățile SMART: (0x0003) Salvează datele SMART înainte de a le introduce
                    Modul de economisire a energiei.
                    Suportă temporizator SMART de salvare automată.
Capacitatea de înregistrare a erorilor: (0x01) Înregistrarea erorilor este acceptată.
                    Înregistrare cu scop general acceptat.
Scurtă rutină de autotestare 
timpul recomandat de votare: (2) minute.
Rutină extinsă de autotestare
timpul recomandat de votare: ( 184) minute.
Rutina de autotestare a transportului
timpul recomandat de votare: (5) minute.
Capabilități SCT: (0x7035) Stare SCT acceptată.
                    SCT Feature Control acceptat.
                    Tabel de date SCT acceptat.

Numărul de revizuire al structurii datelor SMART Atribute: 16
Atribute SMART specifice furnizorului cu praguri:
ID# ATTRIBUTE_NAME VALOAREA STRAPHIEI CEL MAI RĂU TIP DE PRAG ACTUALIZAT WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-eșec Întotdeauna - 0
  3 Spin_Up_Time 0x0027 190 184 021 Pre-fail Always - 1500
  4 Start_Stop_Count 0x0032 081 081 000 Bătrânețea Întotdeauna - 19048
  5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
  7 Seek_Error_Rate 0x002e 200 200 000 Bătrânețe Întotdeauna - 0
  9 Power_On_Hours 0x0032 073 073 000 Bătrânețea Întotdeauna - 20415
 10 Spin_Retry_Count 0x0032 100 100 000 Bătrânețe Întotdeauna - 0
 11 Calibration_Retry_Count 0x0032 100 100 000 Bătrânețe Întotdeauna - 0
 12 Power_Cycle_Count 0x0032 100 100 000 Bătrânețe întotdeauna - 188
192 Power-Off_Retract_Count 0x0032 200 200 000 Bătrânețe Întotdeauna - 43
193 Load_Cycle_Count 0x0032 187 187 000 Bătrânețe întotdeauna - 41054
194 Temperature_Celsius 0x0022 119 095 000 Bătrânețe Întotdeauna - 28
196 Reallocated_Event_Count 0x0032 200 200 000 Bătrânețe Întotdeauna - 0
197 Current_Pending_Sector 0x0032 200 200 000 Bătrânețe Întotdeauna - 0
198 Offline_Uncorectable 0x0030 100 253 000 Bătrânețe Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Bătrânețe întotdeauna - 0
200 Multi_Zone_Error_Rate 0x0008 100 253 000 Bătrânețe Offline - 0

Versiunea jurnalului de erori SMART: 1
Nu au fost înregistrate erori

Structura jurnalului de autotestare SMART numărul de revizuire 1
Nu au fost înregistrate autotestări. [Pentru a rula autotestări, utilizați: smartctl -t]

Structura datelor jurnalului de autotestare selectivă SMART numărul de revizuire 1
 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
    1 0 0 Ne_testare
    2 0 0 Ne_testare
    3 0 0 Ne_testare
    4 0 0 Ne_testare
    5 0 0 Ne_testare
Indicatori selectivi de autotestare (0x0):
  După scanarea intervalelor selectate, NU citiți și scanați restul discului.
Dacă autotestarea selectivă este în așteptare la pornire, reluați după o întârziere de 0 minute.

Presupunând că acest HDD este într-adevăr eșuat și că acele mesaje de eroare intră dmesg sunt acolo pentru sectoare cu adevărat proaste, de ce dmesg arată o deconectare inainte de mesajele sectoarelor rele mai degrabă decât după?

drapel in
Erorile I/O par să fie un rezultat al deconectării USB, dar cine știe cum gestionează dispozitivul/discul USB problemele, poate că încearcă să se reseteze sau poate că sursa de alimentare este proastă și de îndată ce obțineți orice sarcină se resetează . Se pare că există ceva timp între conectare și deconectare, ce s-a întâmplat în acel timp?
Lucio Crusca avatar
drapel mu
În acea perioadă rula `mkntfs` (de exemplu, verificarea și repunerea la zero a discului)
drapel in
Ieșirea smartctl nu arată nicio problemă cu discul, începeți să investigați carcasa. Poate că este doar vechi și rău.
Puncte:1
drapel br

Deconectarea are loc mai întâi, apoi obțineți un amestec de erori cauzate de deconectare, unde diferite straturi care generează scrieri pe disc observă că ceva nu este în regulă.

Cele mai multe I/O se întâmplă sub forma unei pagini de memorie „murdare” care are un suport de disc, pe care nucleul ajunge în cele din urmă la spălarea pe disc, mult după ce scrierea a fost confirmată de aplicație și singurele straturi de driver care sunt În continuare interesați de cerere sunt subsistemul de memorie (care vrea să știe dacă pagina poate fi eliberată) și sistemul de fișiere (care trebuie să genereze mai multe scrieri pentru a actualiza metadatele după ce datele au fost scrise) - orice de mai sus care a fost demontat deja.

Unele solicitări nu trec prin subsistemul de memorie (de exemplu, interogarea de stare SMART), unele solicitări precum citirile sunt probabil atașate doar la subsistemul de memorie, deoarece sistemul de fișiere a căutat maparea blocurilor și nu mai trebuie să fie implicat.

Așadar, mesajele de eroare pe care le primiți ca urmare a deconectării nu au o ordine anume -- ele apar pe măsură ce solicitările sunt generate, trimise și respinse, deoarece dispozitivul este offline. Dacă există o relație cauzală între unele dintre solicitări (cum ar fi o intrare de jurnal care reflectă noua stare după transferul de date întrerupt -- la urma urmei, jurnalul ar putea fi pe un dispozitiv diferit), atunci aceasta definește o ordine.

Probabil că aș încerca să folosesc discul pe un port SATA adecvat și, cu alimentare de la o sursă bună -- convertoarele de tensiune din carcasele USB-la-SATA sunt adesea puțin cam inutile.

Puncte:0
drapel in

Vă rugăm să luați în considerare unitatea moartă.

În mod normal, nu durează atât de mult pentru a formata o unitate. Cu toate acestea, reîncercările și resetările pe blocurile proaste necesită timp.

Sigur că acest lucru s-ar putea datora unei surse de alimentare proaste sau a altceva.

Nu toate dispozitivele USB acceptă smart passthru, dar încercați: smartctl -a /dev/sdd Cauta mai ales Realocat_Sector_Ct, Număr_evenimente_realocate, Sector_Actual_În așteptare, Offline_Necorectabil Dacă vreuna dintre ele are un RAW_VALUE în afară de 0, aș încerca să evit să folosesc discul pentru orice altceva decât pentru date neimportante.

Dacă nu există date pe disc, puteți încerca oricând să le ștergeți, folosind ceva de genul (ai grija aici!!!) dd if=/dev/zero of=/dev/sdd bs=4M status=progress. Va trebui să recreați tabelul de partiții ulterior.

Lucio Crusca avatar
drapel mu
Mulțumesc, dar de ce `dmesg` arată deconectarea înaintea sectoarelor defecte? (Mi-am actualizat întrebarea pentru a reflecta răspunsul pe care îl caut cu adevărat)
drapel in
Ai încercat `smartctl` pentru a ști dacă unitatea este de fapt proastă sau nu?
Lucio Crusca avatar
drapel mu
Mi-am actualizat întrebarea cu rezultatul `smartctl -a /dev/sdd`

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.