Narsil č. 44

Znovu FAT tabulky

↑

Ještě jednou se vracím k disketovým FAT tabulkám.

Úvodem se však musím omluvit za malé nedopatření v článku Struktura disku z minula. Napsal jsem tam, že když smažeme na disketě nějaký soubor tak se jím obsazené clustery přepíší nulami. Což samozřejmě není pravda, jak vyplývá z dalšího textu v zmiňovaném článku. Nulami se přepíšou jen odkazy na příslušné clustery souboru ve FAT tabulce.

Abych se vyhnul jakýmkoliv nejasnostem, vysvětlím způsob adresace souborů ve FAT tabulce na názorném příkladu v diskeditoru KnifeST.

Na čistě naformátovaný disk (720kB) jsem nahrál sedm různě dlouhých textových souborů (AAA.TXT-GGG.TXT). Dále jsem jeden ze souborů (CCC.TXT) smazal a na disk pak nahrál další soubor (HHH.TXT). Celá akce je dokumentovaná na dvou přiložených obrázcích (jsou sice upraveny do nízkého rozlišení, ale myslím, že jsou i přes to celkem srozumitelné)

První obrázek ukazuje jak se změna projeví ve FAT tabulce, v Knifu: FAT'S/ Shhow Entries:

1/ vidíme ve FATU sedm souborů (FFF je vždy konec souboru). Soubor CCC.TXT je krátký a proto obsadil jen cluster 6. Tam také končí a tudíž je na odpovídající pozici ve FATu zapsáno FFF.

2/ nyní byl soubor CCC.TXT smazán. FFF na odpovídající pozici je přepsána nulou, která nyní označuje volný cluster.

3/ teď jsem na disk zapsal další soubor (HHH.TXT), ten je delší než soubor CCC.TXT a obsadil tedy clustery dva. Obsadil první volný cluster na disku, a to ten, který se uvolnil smazáním souboru CCC.TXT (označený ve FATu nulou) - 6. Další volný cluster (označený 0) je až za posledním souborem (GGG.TXT). Ve FAT tabulce se na pozici 6 objevilo číslo 31 odkazující na další (poslední) cluster souboru HHH.TXT.

Druhý obrázek ukazuje odpovídající změny v hlavním adresáři (root directory), v Knifu Show/ File Clusters a první logický sektor (11):

1/ prvních osm Bytů obsahuje název souboru (zeleně), byty 26 a 27 obsahují číslo (adresu) prvního clusteru (fialově), zde v hexadecimálním tvaru. Byt 26 je nižší, 27 vyšší. Zbývající byty (červeně) obsahují celkovou délku souboru.

2/ smazaný soubor začíná číslem E5 (229), jinak zde nedošlo k žádným změnám. Textový soubor najdeme na disku snadno (ASCII znaky), ale pokud hledáme jiná data, tak je nám znalost počátečního clusteru a celkové délky souboru velmi užitečná.

3/ zde vidíme že veškeré informace o smazaném souboru jsou přepsány a záchrana původního smazaného souboru v kompletním stavu není možná. Minimálně jeden (počáteční) cluster s původními daty je definitivně ztracen (přemazán novými daty).

Narsil FAT – obrázek 1 Narsil FAT – obrázek 2

A na závěr jeden tip (bez záruky). Když něco omylem smažete a hned si to uvědomíte, nezavírejte otevřené okno s diskem na desktopu. Vyndejte disketu z mechaniky, zakažte zápis na disketu (ten plastový čudlík nahoře), spusťte si váš disk editor a zkuste se podívat do root direktory a potom do FATu zajištěné diskety. Možná, že operační systém FAT ještě nepřepsal.

Zrovna nedávno jsem musel zachraňovat jeden asi 200 MB soubor (digitalizovaný zvuk) na svém PC harddisku (16bitová FAT, 32 sektorů na cluster). Na 1GB oddílu harddisku, který byl naposledy formátovaný před 3mi lety to dalo trochu námahy. Posuďte sami: Jako na potvoru informace o smazaném souboru zmizely i z root directory, a navíc jsem vzápětí po ztrátě souboru na disk nahrál další 80 MB soubor. Na disku bylo však ještě (naštěstí jen) několik desítek starších souborů (asi 650 MB). Neměl jsem možnost podívat se do FAT tabulky. Musel jsem tedy soubor lepit po clusterech. Mezi 64242 clustery jsem nakonec však nakonec našel ty správné. Měl jsem velké štěstí, že soubor byl fragmentovaný jen na šest částí, i když některé byly velké jen několik clusterů, a že se nic nepřemazalo novými daty. Šest hodin soustředěné práce se mi tedy nakonec vyplatilo. Při zachraňování dat se spěch nevyplácí.

Na dané téma by se dalo napsat jistě ještě mnoho zajímavého, ale nejsem si jist, jestli to vůbec někoho zajímá. Máte-li však s prací v diskových editorech nějaké zkušenosti, jistě se o ně s námi rádi podělíte a napíšete pro Narsil nějaký malý článeček.

-JS-