Tento problém je patrný zejména u magnetických médií, i když tím trpí i SSD. Zkusme v tomto příspěvku defragmentovat souborový systém XFS.
Nastavení karantény
Nejprve jsem se rozhodl experimentovat se souborovým systémem XFS a místo práce s kritickými daty na disku jsem vytvořil testbench. Tento testbench je tvořen virtuálním počítačem Ubuntu, ke kterému je připojen virtuální disk poskytující surové úložiště. Můžete použít VirtualBox k vytvoření virtuálního počítače a poté vytvořit další disk pro připojení k virtuálnímu počítači
Stačí přejít do nastavení vašeho virtuálního počítače a pod Nastavení → Úložiště v sekci můžete přidat nový disk do řadiče SATA můžete vytvořit nový disk. Jak je uvedeno níže, ale ujistěte se, že je váš virtuální počítač vypnutý.
Po vytvoření nového disku zapněte virtuální počítač a otevřete terminál. Příkaz lsblk seznam všech dostupných blokovacích zařízení.
$ lsblksda 8: 0 0 60G 0 disk
├─sda1 8: 1 0 1M 0 díl
└─sda2 8: 2 0 60G 0 díl /
sdb 8:16 0 100G 0 disk
sr0 11: 0 1 1024M 0 rom
Kromě zařízení hlavního bloku sda, kde je nainstalován OS, je nyní nové zařízení sdb. Pojďme z něj rychle vytvořit oddíl a naformátovat jej pomocí souborového systému XFS.
Otevřete rozdělený nástroj jako uživatel root:
$ parted -a optimální / dev / sdbNejprve vytvořme tabulku oddílů pomocí mklabel, poté následuje vytvoření jediného oddílu z celého disku (který má velikost 107 GB). Vytvoření oddílu můžete ověřit jeho výpisem pomocí příkazu print:
(rozdělené) mklabel gpt(rozděleno) mkpart primární 0 107
(rozdělený) tisk
(rozdělené) ukončit
Dobře, nyní pomocí lsblk vidíme, že pod zařízením sdb existuje nové blokové zařízení s názvem sdb1.
Naformátujeme toto úložiště jako xfs a připojíme jej do adresáře / mnt. Opět proveďte následující akce jako root:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Poslední příkaz vytiskne všechny připojené souborové systémy a můžete zkontrolovat, zda je / dev / sdb1 připojen v / mnt.
Dále zde napíšeme spoustu souborů jako fiktivní data k defragmentaci:
$ dd if = / dev / urandom of = / mnt / myfile.počet txt = 1024 bs = 1024Výše uvedený příkaz by zapsal soubor myfile.txt o velikosti 1 MB. Tento příkaz můžete automatizovat na jednoduchou smyčku for pomocí bash a vygenerovat více takových souborů. Pokud chcete, rozdělte je do různých adresářů. Smažte několik z nich náhodně. To vše proveďte uvnitř souborového systému xfs (připojeného na / mnt) a poté zkontrolujte fragmentaci. To vše je samozřejmě volitelné.
Defragmentujte svůj souborový systém
První věcí, kterou musíme udělat, je přijít na to, jak zkontrolovat míru fragmentace. Například souborový systém xfs, který jsme vytvořili dříve, byl na uzlu zařízení / dev / sdb. Ke kontrole úrovně fragmentace můžeme použít obslužný program xfs_db (znamená ladění xfs).
$ xfs_db -c frag -r / dev / sdb1Příznak -c bere různé příkazy, mezi kterými je příkaz frag ke kontrole úrovně fragmentace. Příznak -r slouží k zajištění, že operace je zcela jen pro čtení.
Pokud zjistíme, že v tomto souborovém systému existuje nějaká fragmentace, spustíme v uzlu zařízení příkaz xfs_fsr:
$ xfs_fsr / dev / sdb1Tento poslední příkaz je vše, co je k defragmentaci vašeho souborového systému, můžete jej přidat jako cronjob, který bude pravidelně sledovat váš souborový systém. Ale dělat to pro xfs má malý smysl. Alokace XFS na základě rozsahu zajišťuje, že problémy, jako je fragmentace, zůstanou na minimu.
Případy užití
Případy použití, kdy se musíte nejvíce starat o fragmentaci souborového systému, zahrnují aplikace, kde je zapisováno a přepisováno mnoho malých částí dat. Klasickým příkladem je databáze a databáze jsou proslulé tím, že ve vašem úložišti zůstávají spousty „děr“. Paměťové bloky nejsou souvisle zaplněny, čímž se v průběhu času zmenšuje a zmenšuje množství dostupného prostoru.
Problém nastává nejen z hlediska zmenšeného využitelného prostoru, ale také z hlediska sníženého počtu IOPS, které by mohly poškodit výkon vaší aplikace. Mít skript pro nepřetržité sledování úrovně fragmentace je konzervativní způsob údržby systému. Nechcete, aby automatický skript náhodně začal defragmentovat váš souborový systém, zvláště když je používán při špičkovém zatížení.