OT na pátek aneb jak pomocí fsck zrušit disk :-).

Pavel Troller patrol@sinus.cz
Pátek Červenec 3 16:33:51 CEST 2009


Zdravím,
  protože podobný případ by se mohl stát ledaskomu, raději to sem postnu. Ti,
co to samozřejmě dobře vědí a znají, jistě laskavě prominou :-).
  Včera byla na jednom ze serverů (Linux) zpozorována porucha disku. Šlo o
SATA-II WD 250 GB, necelé 2 roky starý (přesné ID nyní z hlavy neznám). Disk
běžel, ale některé sektory nešly zapisovat - vracel chybový kód, vypadalo to
v logu takto:

ata1.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x0
ata1.00: (irq_stat 0x40000008)
ata1.00: cmd 60/08:00:d7:d3:7a/00:00:00:00:00/40 tag 0 cdb 0x0 data 4096 in
         res 41/40:00:da:d3:7a/e1:00:00:00:00/40 Emask 0x9 (media error)
ata1.00: configured for UDMA/133
sd 0:0:0:0: SCSI error: return code = 0x08000002
sda: Current [descriptor]: sense key=0x3
    ASC=0x11 ASCQ=0x4
Descriptor sense data with sense descriptors (in hex):
        72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
        00 7a d3 da
end_request: I/O error, dev sda, sector 8049626
ata1: EH complete
SCSI device sda: 490234752 512-byte hdwr sectors (251000 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA

  (stále říkám, že není nad chybovou diagnostiku Linuxu :-) ).

  Disk jinak běžel a server měl problémy jen se zvětšováním některých souborů,
které už měly předalokované místo. Zdálo se, že jde o poměrně omezenou chybu
jedné z ploten. Vytváření nových souborů na tomtéž i jiných oddílech probíhalo
bez zjevných problémů.
  Proto jsem se dnes ráno rozhodl server shodit a na dotyčném oddíle provést
fsck včetně "non-destructive read/write surface check" (volba -cc), aby byly
všechny takto postižené sektory nalezeny a zaalokovány a disk bylo možno
používat do doby, než se sežene nový (server běží v organizaci, kde sehnat
peníze a razítko byť i na takto haléřovou položku není úplně triviální).
  I učinil jsem, jak jsem se rozhodl. Naštěstí jsem ještě před tím ta
nejcennější data odlil na jiný disk. Ukázalo se totiž, že porucha je podstatně
rozsáhlejší a že nedestruktivní kontrola je vlastně destruktivní :-). U spousty
důležitých sektorů (primární superblock, root inode atd.) se zjistilo, že sice
ještě šly přečíst, ale už nejdou přepsat a hlavně tam už nejde vrátit to, co
tam bylo před tou kontrolou. Díky tomu ta kontrola dostala médium do zcela
nepoužitelného stavu, ze kterého server samozřejmě již nebyl schopen bootnout.
Celkem bylo sice zjištěno jen asi 2000 vadných bloků (na 20G oddílu), což je
směšné procento, ale byla to tak strategická místa, že jediné, co by bylo možno
udělat, by byl nový formát celého oddílu provedený s kontrolou povrchu, což
bylo rozhodnuto nedělat a do serveru jsem jim věnoval disk z vlastní sbírky
:-), než se jim podaří sehnat nový oficiálně.

  Takže pozor, i zdánlivě malá chyba disku může vést při zcela korektní snaze
o nápravu k fatálním důsledkům :-).

Zdraví Pavel Troller




Další informace o konferenci Hw-list