Utilitka filefrag slouží (zjednodušeně řečeno) pro zjištování fragmentace souborů.
K fragmentaci souborů dochází u každého systému souborů bez ohledu na to, co si myslí jeho příznivci a co o něm říkají jeho odpůrci. Pokud je mi známo, tak ze všech FS dostupných v Linuxu má online defragmentaci pouze XFS (programem xfs_fsr
). U JFS je defragmentace možná pouze na domácí platformě IBM, reiserfs nemá podobný nástroj vůbec a „domácí“ ext2, ext3 také ne.
Tento zápisek je především o ext3. Při hledání nějaké pomůcky, která by alespoň trochu umožnovala umravnit soubory na disku jsem v diskusních fórech nacházel v podstatě dva druhy zápisků. Autoři těch prvních tvrdili, že linux není windows a proto ext3 žádný defrag nemá, protože dobře navržený fs jej nepotřebuje. A ti druzí byli již zoufalí (stejně jako já) při pohledu na klesající propustnost při čtení souborů.
Zpět k tématu. Utilitka filefrag
umožňuje zjistit počet fragmentů a na ext3 také odhadne minimální počet fragmentů pro daný soubor a aktuální stav FS. Má pouze jediný přepínač -v
, který vypíše i rozsahy bloků jednotlivých fragmentů. Použítí je snadné:
#filefrag search_index.MYI search_index.MYI: 429258 extents found, perfection would be 15 extents
Výstup je přehledný a pro účely statistiky i snadno parsrovatelný. Předchozí příklad ukazuje výstup programu filefrag
a jako figurant je použit soubor o velikosti 1.8GB. Bystřejší čtenář jistě poznal, že jde o soubor s indexem MYISAM tabulky MySQL database.
Číslo 429’258 ponechám raději bez komentáře.
Je nutné doplnit, že se jedná o ext3 o velikost 80GB s 4kB bloky, je namountován jako /var a je zaplněn z 80%, tj 16GB volného místa. FS byl vytvořen 1.března 2008 (je tedy mladý). Stroj slouží jako běžný domácí server.
Co říci závěrem? Těším se na ext4 u něhož vývojáři počítají s online defragmentací. Program shake
(který je asi nejlepším pokusem o defrag in userspace) považuji za aprílový žertík a spíše je to doklad žalostné situace linuxových FS a jejich nástrojů.