Hlavní navigace

Názor k článku
Poškozená data na paměťové kartě a jejich obnova

Pavel Píša
Pavel Píša (neregistrovaný)
26. 10. 2007 14:13 Nový

Re: chybny sektor na karte

celé vlákno
FAT tabulka může označit clustery obsahující vadné bloky (kódy 0xFF7,
0xFFF7 nebo 0x?FFFFFF7 pro FAT12, FAT16 respektive FAT32). Standardní
DOSový či Win příkaz format volaný bez parametru /F celou užitou plochu
média kontroluje a vadné bloky označí.

http://en.wikipedia.org/wiki/File_Allocation_Table

Pod Linuxem to přímo fdformat ani mkdosfs myslím neumožňuje. Je ale
možné použít parametr -t u příkazu dosfsck, který zkontroluje čitelnost
bloků a jim příslušející clustery označí za vadné.

K hledání špatných bloků lze využít i příkaz badblocks, který umí i test
se zápisem (nedestruktivní -n, destruktivní -w).

Na magnetická média je to dostatečné. Bohužel na Flash disku to asi
fungovat nebude, protože wear leveling má snahu využívat co nejvíce
různých fyzických bloků a postupně na ně zapisované bloky mapuje.
Na druhou stranu si kontrolér na kartě udržuje seznam vadných bloků.
Ten není prázdný ani u převážné většiny nových výrobků. Když koupíte
i samotný NAND Flash chip, tak má většinou již povícero bloků vadných
a příslušně označených. Výrobce jen garantuje, že maximum vadných bloků
je menší než nějaký počet, či procento.

Pokud je tedy chyba na úrovni fyzického bloku tak je potřeba, aby se
o vyloučení bloku z používání postaral již samotný kontrolér karty.
Ten takto označí i bloky, ze kterých se sice data přečíst podařilo díky
korekci chyb, ale vykazují tyto výpadky příliš často. Pokud to kontrolér
neudělá, tak je buď vadný nebo mu již došla kapacita rezervních bloků.
Co lze v takovém případě udělat nevím. Lze zkusit zmenšit velikost
používané oblasti/partition. Ve skutečnosti by bylo potřeba zmenšit
reportovanou kapacitu karty příslušnou parametrizací kontroléru.
K tomu ale nástroje kromě výrobce karty dostupné nebudou.