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?
Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

120na80.cz: Víte, co je svobodná menstruace?

Víte, co je svobodná menstruace?

Podnikatel.cz: Infolinka k EET? Poskytne až 100 úředníků

Infolinka k EET? Poskytne až 100 úředníků

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

Vitalia.cz: Syfilis: To není „nemoc z lásky“

Syfilis: To není „nemoc z lásky“

Vitalia.cz: Co potřebujete vědět o zubech moudrosti?

Co potřebujete vědět o zubech moudrosti?

DigiZone.cz: Sky Deutschland: dvakrát fotbal ve 4K

Sky Deutschland: dvakrát fotbal ve 4K

DigiZone.cz: Vláda schválila digitální vysílání ČRo

Vláda schválila digitální vysílání ČRo

Podnikatel.cz: OSA zdraží, ale taky přidá nový poplatek

OSA zdraží, ale taky přidá nový poplatek

DigiZone.cz: Hodlá Markíza skončit v DVB-T?

Hodlá Markíza skončit v DVB-T?

DigiZone.cz: Pustina: premiéra v Torontu

Pustina: premiéra v Torontu

Lupa.cz: Měřičům síly hesla se nedá věřit. Víte proč?

Měřičům síly hesla se nedá věřit. Víte proč?

Podnikatel.cz: Zajímavý paradox: Daří se vedle konkurence

Zajímavý paradox: Daří se vedle konkurence

Podnikatel.cz: Česká pošta vycouvala ze služby ČP Cloud

Česká pošta vycouvala ze služby ČP Cloud

Podnikatel.cz: Novela zákoníku práce. Řeší homeworking

Novela zákoníku práce. Řeší homeworking

Lupa.cz: Nechcete datacentrum? Jsou na prodej

Nechcete datacentrum? Jsou na prodej

Podnikatel.cz: Salón na maloměstě? Funguje skvěle

Salón na maloměstě? Funguje skvěle

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

DigiZone.cz: Skylink přepracoval web

Skylink přepracoval web

120na80.cz: Využijte léčivé vlastnosti měsíčku

Využijte léčivé vlastnosti měsíčku