Forsida

Temaer

Sjangere

fsck er farlig

Tema: Programvare; sjanger: Meninger
Skrevet av Andreas Nordal den 7. oktober 2011 kl 16:13:45; Kommentarer: 0

Hvis korrupsjon i filsystemet skyldes maskinvarefeil, så vil fsck gjøre vondt verre. Det er min erfaring etter å ha mista 1,4 TB.

Fsck er programmet som skal «fikse» eventuelle feil i filsystemer, typisk i det man skrur en datamaskin på. Det skumle er at fsck er et idiotisk program som har 0 forutsetning for å gjøre de riktige valgene. Tenk deg et stavekontrollprogram som bare sletter alle setninger som ikke er grammatisk korrekte. Før du slipper fsck løs på livsverket ditt, bør du være sikker på at det er feilfritt...

Det skulle vise seg at jeg hadde en feil i SATA-koblinga mellom harddisk og hovedkort. Det hjalp ikke et fnugg å ha RAID1, for feilen skjedde selvfølgelig samtidig for koblingene til begge harddsikene, eller mer sannsynlig, at det fins en felles komponent på hovedkortet som kunne svikte. Det er statisk redundans i praksis, det.

Smartctl avslører feilen. Utklipp (min utheving):

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   147   145   021    Pre-fail  Always       -       9633
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       32
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   073   073   000    Old_age   Always       -       19734
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       22
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       4
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       28
194 Temperature_Celsius     0x0022   121   110   000    Old_age   Always       -       31
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       38935
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

Ifølge smartctl er kommunikasjonen med denne harddsiken upålitelig, mens selve harddisken fungerer utmerket. I praksis merkes feilen ved at filene kan være litt forskjellige hver gang, spesielt store filer. Det betyr at dataene kan reddes hvis man kjenner sjekksummen; det er bare å lese dem om igjen til det stemmer. Men tror du fsck leser om igjen når noe ikke stemmer? Etter første runde med fsck fikk jeg ikke engang montert filsystemet.

Hva er verst:

  1. helt tapte data
  2. korrupte data
  3. data som du ikke vet om er korrupt eller ikke
Jeg har stort sett endt opp med det siste. En lærdom er at sjekksummen kan være like verdifull som dataene selv!

Man tror at «maskinvarefeil rammer ikke meg». Enda mindre hadde jeg fantasi til å mistenke denne feilkilden tilfeldigvis midt i en oppgradering av filsystemet fra ext3 til ext4, når det er minst et par andre ting som kan gå galt. Så jeg rapporterte det som en programvarefeil. Der står hendelsesforløpet utførlig beskrevet.

Hele katastrofen hadde vært en bagatell hvis jeg hadde forstått problemet med en gang. Det dummeste jeg kunne gjøre var å følge siste punkt på prosedyren, nemlig fsck. Som med de fleste katastrofer: Det er når man har uhell i uhellet at det går galt. I'm fsck'd.

Nyttige orientalske middagsretter