Defragmentace disků v Linuxu

Petr Krčmář 7. 1. 2008

Pokud se zeptáte uživatelů Linuxu na defragmentaci, obvykle vás odbude s tím, že v pořádných souborových systémech se podobné věci nedějí. Faktem je, že časem vzniká nějaká fragmentace všude. Otázkou pak zůstává, jak se jí jednoduše a bezbolestně zbavit. My vám nabídneme univerzální a rychlé řešení.

Za tip na užitečnou utilitu děkuji Tonymu.

V roce 2006 jsme se zabývali defragmentací v článku Proč Linux nepotřebuje defragmentaci?. Článek rozebírá nenáročnou formou způsob, jakým Linux předchází fragmentaci. Popsali jsme především rozdílný přístup systému FAT a ExtFS, kde je propastný rozdíl nejvíce vidět.

Fragmentace? Určitě?

Ačkoliv jsou už z návrhu moderní souborové systémy vůči fragmentaci velmi odolné, v určitých situacích se jí už prostě nevyhnou. Dochází k tomu především ve chvíli, kdy pracujeme na téměř zaplněném disku.

Fragmentace se v Linuxu objevuje až ve chvíli, kdy je disk zaplněn natolik, že už není dostatek prostoru pro data, která k souborům přidáváme. Ty pak musejí být rozděleny na více částí. Nestává se to ale až do chvíle, než máme disk zaplněný řekněmě z 80 %.

Každý souborový systém se tak dříve či později musí uchýlit k rozdělování (fragmentování) souborů do menších bloků. Některé jsou sice problematičtější než jiné (FAT), ale po letech aktivního používání téměř zaplněného disku začne každý uživatel přemýšlet nad tím, zda by nebylo dobré fragmentaci alespoň překontrolovat.

Co s tím?

Existuje několik různých pokusů o implementaci linuxového defragmentačního nástroje. My se však podíváme na jedno velmi použitelné a především univerzální řešení.

Balíček pyfragtools nabízí trefně pojmenovanou utilitku defrag, která je napsána v Pythonu a stará se právě o analýzu a defragmentaci souborů. Balíček stačí stáhnout a rozbalit. Potřebovat budete jen jeden zmíněný soubor a samozřejmě také nainstalovaný Python.

Co umí?

Velkou výhodou pyfragtools je už zmíněná univerzálnost. Prográmek totiž pracuje na úrovni souborů, a tak je schopen defragmentovat libovolný souborový systém, který je schopno připojit vaše jádro.

Anketa

Jaký souborový systém v Linuxu používáte?

Defragmentační algoritmus by měl nad daty proběhnout několikrát, autor doporučuje pět až deset cyklů, při kterých dochází k postupnému zlepšování stavu. Účinnost ale není zaručena na sto procent a v některých případech program prostě se soubory nedokáže pohnout.

Podle autora je defragmentace velmi bezpečná a nezanechává po sobě žádné stopy. Vše lze provádět za plného provozu. Program si i při přerušení činnosti za sebou uklízí a pokud by došlo k větším problémům (havárii), zůstaly by po něm jen adresáře .defrag, které stačí najít a smazat.

Malý praktický test

Rozhodl jsem se vyzkoušet účinnost programu na vlastních datech. Použil jsem při tom svůj adresář /src/, který má v současnosti 2,3 GB v 6026 souborech. Je to adresář plný balastu a obsahuje spoustu různě velkých balíků, adresáře s rozbalenými zdrojovými kódy, stažené archivy a podobně.

Nejprve si můžete pustit samotnou analýzu pomocí parametru -a. Analýza je prováděna i na začátku každé defragmentace. Pokud ale nepoužijete zmíněný parametr, bude program pokračovat úpravou dat.

Samotná analýza vypadá následovně:

# ./defrag -a /src/

Building list of files to analyze... done!
/ /src/ [==================           ]  3675/6026 ( 61.0%)

Analyze finished. 4.9 % fragmentation (297 files), 56.6 average frags/MB 

Celá akce trvá jen několik desítek sekund, v závislosti na velikosti dat a rychlosti vašeho disku. Výsledkem je informace o tom, že je můj adresář fragmentován přibližně z pěti procent a na každý megabajt připadá průměrně přes padesát fragmentů.

Samotnou defragmentaci pak spustíme příkazem bez parametrů:

# ./defrag /src/

Proběhne analýza, kterou jsme už viděli, a program je připraven k samotné akci. Narazil jsem na jeden problém, na který je třeba upozornit. Po prvním pokusu o spuštění defragmentace vypisoval program u každého zpracovaného souboru následující hlášku:

Error defragmenting. Did the file disappear? 

Chvíli jsem v kódu pátral po příčině a zjistil jsem, že aplikace ke svému běhu vyžaduje program rsync. Stačilo stejnojmenný balíček nainstalovat a nadále vše probíhalo bez problému.

Nyní se nás utilitka zeptá, kolik cyklů budeme chtít nad daty provést. Předvoleno je číslo deset, takže stačí stisknout enter. Autor tvrdí, že pokud nebude stačit deset cyklů, pak nemá smysl jich dělat víc. Moje zkušenost říká, že většina práce proběhne během prvních dvou až tří pokusů.

How many passes to run? [10]

Pass 1 of 10, 127/297 (22%): 8.5 frags/MB /src/dfly-1.10.0_REL.iso
        1858343 100%   12.01MB/s    0:0
    Improved: (26.7 --> 4.1) 

Program bude postupně vypisovat, jak se mu povedlo který soubor upravit. U některých napíše „improved“, což znamená, že došlo ke zlepšení. Občas uvidíte také „No improvement“, kterým vám bude oznámeno, že tady to prostě nejde. Ideálně pak program nahlásí „Fully defragmented!“, což je známka toho, že tady je už hotovo a soubor je zcela defragmentován.

S každým průchodem pak klesá počet souborů, na kterých utilita pracuje. Jsou samozřejmě vyřazovány ty, které jsou již úplně defragmentované. U mě vypadaly počty v deseti cyklech takto:

297 → 77 → 47 → 40 → 37 → 37 → 36 → 36 → 36 → 36

Všech deset průběhů pak u mě trvalo přesně osm minut. Jak vidíte, první kolo mělo největší úspěch a podařilo se defragmentovat tři čtvrtiny fragmentovaných souborů. Další téměř polovina pak padla při druhém průchodu, ale pak už úspěšnost prudce klesala, přičemž posledních šest kol nemělo v podstatě smysl.

Nakonec defrag vypíše statistiku úspěšnosti:

Frags/MB Before:     16813.44
Frags/MB After:      32.77
Improvement:         99.8 %
=============================== 

Vidíte, že došlo k výraznému zlepšení a program byl úspěšný na slušných 99.8 %. Potvrdí se to i ve chvíli, kdy necháme udělat novou analýzu.

# ./defrag -a /src/

Analyze finished. 1.3 % fragmentation (81 files), 0.6 average frags/MB 

Podobné úspěchy měl program i při aplikaci na další disky s různou mírou fragmentace. V prvním případě je fragmentace obrovská a úspěšnost je pochopitelně vyšší. Druhý příklad ukazuje naopak poměrně nefragmentova­ný disk.

Frags/MB Before:         1042401.55
Frags/MB After:          9336.18
Improvement:             99.1 %

Frags/MB Before:         121125.74
Frags/MB After:          1659.15
Improvement:             98.6 % 

Závěrem

Ačkoliv o nich uživatelé obvykle ani neví, i v Linuxu existují defragmentační nástroje. Hodí se vám zejména na velmi frekventovaných discích, které jste zvyklí plnit „až po okraj“. Dobrým příkladem může být disk, na který ukládáte data stahovaná třeba bittorrentem. Tam je pohyb malých souborů velmi častý a souborové systémy tím trpí. Teď už ale víte, jak se s fragmentací poprat.

Našli jste v článku chybu?
120na80.cz: Tipy pro odvodnění organismu

Tipy pro odvodnění organismu

Podnikatel.cz: 3 velké průšvihy obchodních řetězců

3 velké průšvihy obchodních řetězců

120na80.cz: Otestujte klíště na boreliózu z domova

Otestujte klíště na boreliózu z domova

Vitalia.cz: Taky je nosíte? Barefoot není pro každého

Taky je nosíte? Barefoot není pro každého

Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

Vitalia.cz: Tohle je Břicháč Tom, co zhubnul 27 kg

Tohle je Břicháč Tom, co zhubnul 27 kg

DigiZone.cz: Android TV: s jakým pracuje rozlišením?

Android TV: s jakým pracuje rozlišením?

Podnikatel.cz: Tahle praktika stála šmejdy přes milion

Tahle praktika stála šmejdy přes milion

Lupa.cz: Největší torrentový web KickassTorrents padl

Největší torrentový web KickassTorrents padl

Měšec.cz: Investice do drahých kovů - znáte základní chyby?

Investice do drahých kovů - znáte základní chyby?

Vitalia.cz: Sobotní masakr žrádla, chlastu a zábavy

Sobotní masakr žrádla, chlastu a zábavy

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

DigiZone.cz: Oživení ekonomiky by mělo navýšit reklamu

Oživení ekonomiky by mělo navýšit reklamu

Lupa.cz: IT scéna po brexitu: přijde exodus vývojářů?

IT scéna po brexitu: přijde exodus vývojářů?

DigiZone.cz: Sázka na e-sporty stanici Prima vychází

Sázka na e-sporty stanici Prima vychází

Vitalia.cz: Klíšťata letos řádí, skvrna se udělá jen někomu

Klíšťata letos řádí, skvrna se udělá jen někomu

DigiZone.cz: Test Noxon A560+: kvalitka do vaší věže

Test Noxon A560+: kvalitka do vaší věže

Podnikatel.cz: Polská vejce na českém pultu Albertu

Polská vejce na českém pultu Albertu

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?