Řešení 1:
Kdysi jsem psal firmware disku pro WD a jednou jsem napsal firmware, který přeřadil špatné bloky.
Za prvé, většina špatných bloků je detekována při čtení, nikoli při zápisu. Zápisy se provádějí naslepo, což znamená, že data jsou zapisována bez kontroly. Pokud je tedy médium špatné, při zápisu to nepoznáte, dokud hostitel tento sektor nenačte. Existuje malá část sektoru (záhlaví sektoru), která se čte při zápisech, aby se našel správný sektor, takže pokud dojde k chybě při čtení záhlaví sektoru, jednotka znovu přiřadí sektor a zapíše jej s přijatými daty. z příkazu write. Ale velká většina špatných bloků je detekována při čtení, a to, že zápis do sektoru uspěje, neznamená, že je médium dobré nebo že sektor byl přeřazen.
Nyní o špatném přeřazení bloku (také nazývaném přerozdělení). Ano, za normálních okolností se disk pokusí znovu přiřadit sektor, pokud je chyba dostatečně závažná (tj. chyba ECC je dostatečně závažná), ale disk by přesto mohl obnovit data po korekci ECC. Obvykle se to provádí automaticky. Jedinou výjimkou je, že hostitel mohl disku dříve říci, aby neprováděl automatické přerozdělování, ale to se dělá jen zřídka.
Co se tedy stane, když disk čte a nemůže obnovit data? Nic. Chyba je nahlášena hostiteli, ale neprovádí se žádné nové přiřazení. Problém je v tom, že disk by mohl sektor přeřadit, ale nemá nejmenší ponětí, jaká data do nově přeřazeného sektoru zapsat. Kdyby to napsalo řekněme hromadu nul a pak by se sektor přečetl znovu, vrátil by všechny nuly bez jakéhokoli náznaku, že data nejsou platná. To je v podstatě totéž jako poškození dat. Jednotka nemůže počítat s tím, že hostitel bude sledovat chyby z různých důvodů (například co kdyby byl disk přemístěn na nového hostitele?), takže nejlepším řešením je nedělat nic, když data nemohou“ nelze obnovit.
Moderní disky však uloží umístění vadného sektoru, když jej nelze přemístit. Počet chybných sektorů čekajících na realokaci lze nalézt v datech SMART. Co se stane, je-li zápis proveden do jednoho z chybných sektorů čekajících na přerozdělení, přerozdělení se provede, protože disk má nyní platná data pro zápis po přerozdělení. Takže když lidé říkají, že zápis do špatného sektoru jej přerozdělí, je to opravdu jen polovina příběhu. Disk musí být nejprve načten, aby disk mohl objevit všechny chybné sektory, které nelze automaticky přerozdělit. Můžete tedy zapsat celý disk a data SMART řeknou, že žádné chybné sektory čekají na přerozdělení, ale nezbytně jste nevyčistili disk od všech vadných sektorů. Pokud tedy opravdu chcete vyčistit disk od všech vadných sektorů, nejlepší je nejprve přečíst celý disk a poté celý disk zapsat (samozřejmě tím zničíte všechna předchozí data na disku).
Existují další způsoby, jak se vypořádat se špatnými bloky, které nelze přerozdělit. Pokud je disk součástí redundantní konfigurace RAID (tj. čehokoli kromě RAID 0), software RAID by měl automaticky obnovit data pro vadný sektor z ostatních disků a zapsat je do přerozděleného sektoru. Disky SCSI mají explicitní příkaz pro nové přiřazení bloků, který může hostitel použít k vynucení nového přiřazení, i když nejsou k dispozici žádná platná data pro zápis do bloku, ale jeho použití je na velmi nízké úrovni.
Řešení 2:
Můžete zkusit hdparm --write-sector <LBA> /dev/ice
.
Neznám žádný jiný způsob, jak to udělat - musíte ručně převést LBA na bloky souborového systému (jak jste již našli)
Řešení 3:
Myslím, že vše, co musíte udělat, je:
e2fsck -c /dev/hda1
za předpokladu, že /dev/hda1 je (nepřipojený) oddíl. Nebo:
e2fsck -c -c /dev/hda1
provést (pomalejší) nedestruktivní test čtení a zápisu. Bude se muset ještě odmontovat. Nemyslím si však, že vám to poskytne podrobnosti o ztracených datech.
Řešení 4:
Michael to má správně a ve většině případů bych řekl, že stačí vyměnit disk, jsou levné. Pokud však nemáte zálohy a nemůžete z disku dostat důležitá data nebo se jen chcete pokusit disk opravit, můžete zkusit použít spinrite na nejvyšší úrovni.
Měl jsem disk notebooku, který před několika lety začal vydávat nějaké zvuky. Badblocks ukázaly, že disk měl 118 nebo tak špatných bloků viditelných pro koncového uživatele. Protože jsem již měl kopii SpinRite, rozhodl jsem se to vyzkoušet, než si koupím nový disk. Po spuštění spinritu na disku špatné bloky ukázaly 0 špatných bloků a zvuky ustaly. Pohon od té doby fungoval více než dva roky.