Tento problém je zreteľný najmä u magnetických médií, aj keď ním trpia aj disky SSD. Skúsme v tomto príspevku defragmentovať súborový systém XFS.
Nastavenie karantény
Najskôr som sa experimentoval so súborovým systémom XFS a namiesto práce s kritickými údajmi na disku som sa rozhodol vytvoriť testovací stôl. Tento testovací stôl je tvorený virtuálnym počítačom Ubuntu, ku ktorému je pripojený virtuálny disk poskytujúci nespracované úložisko. Môžete použiť VirtualBox na vytvorenie VM a potom vytvoriť ďalší disk na pripojenie k VM
Stačí prejsť do nastavení vášho VM a pod Nastavenia → Úložisko v časti môžete pridať nový disk do radiča SATA môžete vytvoriť nový disk. Ako je uvedené nižšie, ale uistite sa, že je váš VM vypnutý.
Po vytvorení nového disku zapnite VM a otvorte terminál. Príkaz lsblk zoznam všetkých dostupných blokovacích zariadení.
$ lsblksda 8: 0 0 60G 0 disk
├─sda1 8: 1 0 1M 0 diel
└─sda2 8: 2 0 60G 0 diel /
sdb 8:16 0 100G 0 disk
sr0 11: 0 1 1024M 0 rom
Okrem zariadenia hlavného bloku sda, kde je nainštalovaný OS, je tu nové zariadenie sdb. Poďme z neho rýchlo vytvoriť oddiel a naformátovať ho pomocou súborového systému XFS.
Otvorte rozdelený nástroj ako užívateľ root:
$ parted -a optimálne / dev / sdbVytvorme najskôr tabuľku oddielov pomocou programu mklabel, potom nasleduje vytvorenie jedného oddielu z celého disku (ktorý má veľkosť 107 GB). Vytvorenie oddielu môžete skontrolovať uvedením zoznamu pomocou príkazu tlač:
(rozdelené) mklabel gpt(rozdelené) mkpart primárne 0 107
(rozdelená) tlač
(rozdelený) ukončiť
Dobre, teraz pomocou lsblk vidíme, že pod zariadením sdb je nové blokové zariadenie s názvom sdb1.
Naformátujeme toto úložisko ako xfs a pripojíme ho do adresára / mnt. Opäť urobte tieto akcie ako root:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Posledný príkaz vytlačí všetky pripojené súborové systémy a môžete skontrolovať, či je / dev / sdb1 pripojený na / mnt.
Ďalej tu napíšeme veľa súborov ako fiktívne údaje na defragmentáciu:
$ dd if = / dev / urandom of = / mnt / myfile.počet txt = 1024 bs = 1024Vyššie uvedený príkaz by zapísal súbor myfile.Txt o veľkosti 1 MB. Tento príkaz môžete automatizovať na cyklus jednoduchého for pomocou bash a vygenerovať viac takýchto súborov. Ak chcete, rozložte ich do rôznych adresárov. Náhodne niektoré z nich vymažte. Toto všetko urobte vo vnútri súborového systému xfs (pripojeného na / mnt) a potom skontrolujte fragmentáciu. To všetko je samozrejme voliteľné.
Defragmentujte svoj súborový systém
Prvá vec, ktorú musíme urobiť, je prísť na to, ako skontrolovať mieru fragmentácie. Napríklad súborový systém xfs, ktorý sme vytvorili skôr, bol na uzle zariadenia / dev / sdb. Na kontrolu úrovne fragmentácie môžeme použiť obslužný program xfs_db (znamená ladenie xfs).
$ xfs_db -c frag -r / dev / sdb1Príznak -c berie rôzne príkazy, medzi ktorými je príkaz frag na kontrolu úrovne fragmentácie. Príznak -r slúži na zabezpečenie toho, že operácia je úplne iba na čítanie.
Ak zistíme, že v tomto súborovom systéme existuje fragmentácia, spustíme príkaz xfs_fsr na uzle zariadenia:
$ xfs_fsr / dev / sdb1Tento posledný príkaz slúži na defragmentáciu vášho súborového systému. Môžete ho pridať ako príkaz cronjob, ktorý bude pravidelne monitorovať váš súborový systém. Robiť to pre xfs však nemá zmysel. Alokácia XFS na základe rozsahu zaisťuje, že problémy ako fragmentácia zostanú na minime.
Prípady použitia
Prípady použitia, pri ktorých sa musíte najviac starať o fragmentáciu súborového systému, zahŕňajú aplikácie, kde sa zapisuje a prepisuje veľa malých častí údajov. Klasickým príkladom je databáza. Databázy sú známe tým, že vo vašom úložisku nechávajú veľa a veľa „dier“. Pamäťové bloky nie sú súvisle zaplnené, čím sa časom zmenšuje a zmenšuje množstvo dostupného priestoru.
Problém nastáva nielen z hľadiska zníženého využiteľného priestoru, ale aj z hľadiska zníženého počtu IOPS, čo by mohlo poškodiť výkon vašej aplikácie. Mať skript na nepretržité sledovanie úrovne fragmentácie je konzervatívny spôsob údržby systému. Nechcete, aby automatický skript náhodne začal defragmentovať váš súborový systém, najmä ak sa používa pri špičkovej záťaži.