Abstract Co je to a jak vzniká fragmentace, jaké přináší problémy, jak fragmentaci odstranit, jaké k tomu existují nástroje a které z nich jsou dobré a proč. Srovnání fragmentace OS Windows a unixových OS.
Základní informace o fragmentaci Jak vysvětlit defragmentaci laikovi Za příklad může sloužit lednička. Když přijde člověk z nákupu, musí do ledničky určitých rozměrů vložit všechny objekty různých velikostí, a musí to udělat rozumně. Když během týdne s objekty manipuluje, někdy ubere, jindy přidá, má příští víkend problém poskládat věci v ledničce, aby se mu nová cihla sýra vešla do přihrádky, aniž by ji musel půlit nebo celou přihrádku přeskládat. Data systému a uživatelů na disku žijí.
Co je tedy fragmentace Fragmentace v češtině znamená roztříštěnost nebo rozdrobenost. Toto slovo vystihuje stav, v jakém se nacházejí data na disku. Soubory, které byly původně celistvé jsou časem rozděleny do více bloků, rozmístěných na různých částech disku. Je potřeba zmínit, že fragmentace se netýká disků jako fyzických úložišť dat. Fragmentace je problém souborového systému. Některé souborové systémy trpí fragmentací více, jiné méně. Některé tvrdí, že nepotřebují fragmentaci. Vznik a míra fragmentace souvisí s navržením souborového systému, jak inteligentně byly navrženy a nakolik jejich tvůrci počítali s fragmentací při určitém používání. Způsob používání souborového systému totiž hraje roli, nakolik se fragmentace projeví a jaký bude mít vliv na diskové operace.
1
Co je defragmentace Defragmentací označujeme proces zbavení se fragmentace, jinými slovy uspořádání dat na disku do takového stavu, aby byly diskové operace rychlejší a efektivnější. V praxi znamená defragmentace sadu postupů a metod pro uspořádání dat do optimálního stavu, které převedené do programovacího jazyka znamenají software, kterým uživatelé udržují data. Protože každý souborový systém se potýká s fragmentací jinak, jsou i tyto postupy a metody jiné pro každý souborový systém.
Jak fragmentace vzniká Fragmentace ve Windows Souborové systémy FAT a FAT32 byly navrženy pro Windows, operační systém používaný ve stejnou dobu pouze jedním uživatelem. Bylo tedy logické soubory zapisovat od začátku disku za sebe. Pro způsob zapisování souborů za sebe mluví i další fakt – vlastnosti nebo geometrie disku. Čím méně se hlavičky pohybují, tím rychleji je možné s diskem pracovat. Pokud tedy umístíme soubory za sebe, měla by být práce rychlejší – disk nebude muset posouvat hlavičky na jinou stopu nebo číst ze vzdáleného sektoru. K tomu je ale zapotřebí seskupovat soubory, o kterých se předopkládá, že budou čteny za sebou. Více informací v kapitole Defragmentace - odstranění fragmentace. Pokud je soubor rozšířen a nevejde se do původního umístění, je rozdělen na dva bloky, adresa obou bloků se zapíše do TOC[1] a při příštím čtení celého souboru musí OS načíst bloky dva. Obecně – je potřeba načíst tolik bloků z disku, na kolik byl soubor dříve rozdělen. V praxi se tak stává, pokud se souborový systém nedefragmentuje, že často měněný soubor může mít stovky až desetitisíce fragmentů. Každý blok totiž může narůst a být následně rozdělen. Proto počet fragmentů pro jeden soubor může růst geometricky. Obrázek ukazuje tři soubory na disku. V prvním řádku je zobrazen disk, kde každý soubor zabírá jeden blok. Po zvětšení souboru A musí OS vyřešit zapsání dat na disk – vybere tedy další volný blok, kam data zapíše a údaje o tom uloží do TOC [1]. Soubor je tedy v druhém řádku rozdělen. Třetí řádek ukazuje disk po defragmentaci – dva bloky stejného souboru byly spojeny v jeden blok, aktualizovala se TOC [1]. Z obrázku je jasně vidět, že pro defragmentaci souboru A byly potřeba přesunout oba dva soubory. Defragmentace je tedy náročná na diskové operace.
2
Fragmentace v unixových OS Souborové systémy operačních systémů unixového typu byly navrženy jako víceuživatelské a zároveň lépe využívají prostor disku. Pokud se na disk zapisuje soubor, vybere se prázdná oblast disku, kde bude později možné soubor případně rozšířit. Tento jednoduchý nápad řeší hlavní nešvar umísťování souborů na disku ve FAT. Unixové souborové systémy mají k dispozici ještě jeden nástroj pro udržení obsahu disku v uspořádaném stavu. Protože jsou soubory na disku rozmístěné a mají kolem sebe volný prostor, OS může na pozadí mít spuštěný proces, který s nízkou prioritou přerovává soubory, případně je může i defragmentovat. Samotná fragmentace se teoreticky projeví až při větším zaplnění disku, kdy OS nemůže pro nově zapisované soubory najít jeden souvislý blok, a tak soubor rozdělí podobně jako Windows do více bloků.
Nevýhody fragmentovaných disků Čtení ze souborů probíhá podle ukazatele, tzvn. file pointeru. Když například databáze potřebuje číst na různých místech jednoho souboru, používá file pointer k přemístění ukazatele a čtení potřebného bloku dat. Pokud je během této činnosti zapotřebí přemísťovat kromě file pointeru i čtecí hlavu disku, je celá operace o to delší. Stejně se zachová čtení celého souboru, který je rotříštěn na několik bloků, rozmístěných po celém disku. Aplikace sice nastaví file pointer na začátek a přečte soubor až do konce. Operační systém, který má čtení pro aplikaci vykonat, musí během této operace udělat tolik seeků na samotném disku, do kolika fragmentů je disk rozdělen. Režie potřebná pro přemisťování hlav potřebná pro čtení jako takové je vlastně údaj o zpomalení systému z důvodu defragmentace. Kdyby byl soubor uložen jako jeden blok, není potřeba extra režie na jeho čtení. S nárůstem režie na jeho přečtení roste i zpomalení systému. Zjednodušeně řečeno, z fragmentovaného disku se čte pomaleji. Na fragmentovaný disk se i zapisuje pomaleji. Operační systém v případě fragmentace prázdného místa nemůže najít jeden souvislý blok, a tak i na uložení souboru potřebuje režii navíc k uložení souboru do více bloků. [1] TOC - Table of contents (tabulka obsahu)
3
Defragmentace - odstranění fragmentace Pro defragmentaci existuje několik postupů. Postupně si je projdeme od nejjednodušších až po ty sofistikované. Nejjednodušší způsob defragmentace je čistě „slepení“ bloků stejného souboru do jednoho bloku, pokud je k tomu dostatek místa. V závislosti na algoritmu se může nástroj pokusit pro nově vzniklý spojený blok vytvořit místo přesunem bloků v daném místě na jiné místo. Současně může nástroj skládat již defragmentované soubory za sebe na začátek disku. Vylepšená strategie rozděluje soubory na disku na soubory většinou čtené a soubory určené pro zápis – soubory často měněné. Při defragmentaci jsou soubory určené pro čtení umisťovány na začátek disku, kde s nimi nebude manipulováno. Soubory často měněné se ukládají za ně, kde mají dostatek místa pro případné vytvoření nového bloku a dostatek místa pro případné spojení do jednoho bloku při defragmentaci. Některé nástroje také které si uživatel přeje disku. V závislosti na umístí tyto soubory na algoritmu.
mohou poskytovat uživateli definovat skupinu souborů, mít z nějakého důvodu na začátku disku nebo na konci tomto nastavení pak na začátku defragmentace nejdřív správné místo a se zbytkem disku operují podle běžného
Při defragmentaci nástroje používají rozhraní Windows pro defragmentaci, neoperují přímo s daty na disku. Tyto operace na nižší úrovni pro ně zprostředkovává operační systém a souborový systém. Ten musí během defragmentace jednoho souboru postupně načíst z původního místa, zapsat na nové místo a uvolnit z původního místa každý blok a zároveň o tom zanést údaj do TOC.
Nástroje na defragmentaci disku V současnou dobu je k dispozici několik nástrojů pro defragmentaci disků ve Windows. Vybral jsem si několik z nich, které jsem buď přímo používal, nebo alespoň vyzkoušel. Nejedná se tedy o informace čerpané z recencí, ale o vlastní zkušenost a pozorování.
Microsft Defrag Nejhorší nástroj na defragmentaci přímo od tvůrce OS a souborového systému. Nenabízí žádné nastavení a dokonce ho není možné spustit, pokud je méně než 12% volného místa na disku.
4
Norton Speed Disk Nejlepší nástroj na defragmentaci, se kterým jsem se setkal. Jeho výchozí nastavení nabízí řazení uživatelem definovaných souborů na začátek disku. Poté řadí soubory určené především pro čtení – ty nebudou narůstat, mohou tedy zůstat na začátku disku a za sebou. Za soubory určené pro čtení řadí soubory často modifikované. Za těmito soubory nechává Speed Disk volný prostor pro nové soubory. Na konec disku naopak dává různé systémové soubory a uživatelem definované soubory, které si uživatel přeje mít na konci disku. Zároveň Speed Disk rozděluje soubory s častým zápisem na podkategorie – častěji zapisované / měněné soubory a méně často měněné soubory. Tímto drobnějším členěním lze dosáhnout ještě lepších výsledků. V ideálním případě potom defragmentace probíhá jen u souborů, které se mění
O&O Defrag Komerční nástroj na defragmentaci umožňuje několik strategií uspořádání souborů. Od jednoduchého postupu – například všechny soubory za sebe nebo řazení podle posledního data modifikace. Nemá tolik možností jako Speed Disk.
Defraggler Populární freeware nástroj využívající rozhraní Windows pro defragmentaci. Oproti jiným nástrojům umožňuje defragmentovat jeden nebo více libovolných souborů, což se může hodit pro defragmentaci souborů s virtuálními disky. Defraggler zároveň umí defragmentovat volné místo na disku nebo (klasicky) defragmentovat celý disk.
Obrázek 1. Zobrazeni fragmentace souboru
Obrázek ukazuje fragmentované soubory, jejich velikost a umístění. Po zaškrtnutí je možné defragmentovat pouze vybrané soubory.
JKDefrag Jednoduchý nástroj pro defragmentaci používá systém tzv. space hogs. Dá se spustit jako běžný program nebo jako šetřič obrazovky. 5
PageDefrag Jednoúčelový nástroj, který defragmentuje swap soubor a další soubory, které při běžném provozu OS není možné defragmentovat. Jedná se o soubory, ke kterým rozhraní Windows pro defragmentaci nedá exkluzivní přístup. Program provádí defragmentaci po restartu OS, těsně po zavedení OS.
Co by mohly nástroje na defragmentaci nabízet Ideální nástroj pro defragmentaci by měl podporovat přesun souborů na konkrétní místa disku. S použitím konceptu virtuálních disků, které se fragmentují interně a je časově méně náročné je defragmentovat, je potřeba ideálně využít prostor na běžném disku. Protože se velikost virtuálních disků nemusí měnit, nedojde tedy ani k fragmentaci. Proto je možné soubor uložit na takové místo, které tomu vyhovuje. Například před nebo za jiný fragmentovaný disk. Zbytek disku se může defragmentovat podle obyklých pravidel.
Zdroje •
•
Grafika: blog.msdn.com o http://blogs.msdn.com/e7/archive/2009/01/25/diskdefragmentation-background-and-engineering-the-windows-7improvements.aspx Články o defragmentaci na www.root.cz o http://www.root.cz/clanky/defragmentace-disku-v-linuxu/