See probleem on eriti ilmne magnetkandjates, kuigi ka SSD-d kannatavad selle all. Proovime selles postituses defragmentida XFS-failisüsteemi.
Liivakasti seadistamine
Esiteks otsustasin XFS-failisüsteemiga katsetamiseks luua kettal olevate kriitiliste andmetega töötamise asemel testpingi. See testpink koosneb Ubuntu VM-ist, millega on ühendatud toores salvestusruumiga virtuaalne ketas. VirtualBoxi abil saate luua VM-i ja seejärel luua VM-ile lisamiseks täiendava ketta
Minge lihtsalt oma VM-i seadetesse ja alla Seaded → Salvestusruum jaotises saate uue ketta lisada SATA-kontrollerisse, saate uue ketta luua. Nagu allpool näidatud, kuid veenduge, et teie VM on seda tehes välja lülitatud.
Kui uus ketas on loodud, lülitage VM sisse ja avage terminal. Käsk lsblk loetleb kõik saadaolevad blokeerimisseadmed.
$ lsblksda 8: 0 0 60G 0 ketas
├─sda1 8: 1 0 1M 0 osa
└─sda2 8: 2 0 60G 0 osa /
sdb 8:16 0 100G 0 ketas
sr0 11: 0 1 1024M 0 rom
Peale peamise plokiseadme sda, kus OS on installitud, on nüüd uus SDB-seade. Loome sellest kiiresti sektsiooni ja vormindame selle XFS-failisüsteemiga.
Avage jagatud utiliit juurkasutajana:
$ lahku - optimaalne / dev / sdbLoome kõigepealt mklabeli abil partitsioonitabeli, millele järgneb kogu kettalt ühe partitsiooni loomine (mis on 107 GB). Sektsiooni koostamise kontrollimiseks lisage see printimise käsu abil:
(lahku läinud) mklabel gpt(lahku läinud) mkpart primaarne 0 107
(lahku) print
(lahku) loobus
Okei, nüüd näeme lsblki kasutamisel, et sdb-seadme all on uus plokiseade nimega sdb1.
Vormindame selle salvestusruumi xfs-ks ja ühendame selle kataloogi / mnt. Jällegi tehke järgmised toimingud juurena:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Viimane käsk prindib kõik ühendatud failisüsteemid ja saate kontrollida, kas / dev / sdb1 on paigaldatud aadressile / mnt.
Järgmisena kirjutame siin defragmentimiseks hulga faile näivana:
$ dd, kui = / dev / urandom = / mnt / myfile.txt arv = 1024 bs = 1024Ülaltoodud käsk kirjutab faili myfile.txt suurusega 1 MB. Saate selle käsu automatiseerida lihtsaks silmuseks bashi abil ja luua rohkem selliseid faile. Soovi korral levitage neid erinevates kataloogides. Kustutage mõned neist juhuslikult. Tehke kõik see failisüsteemis xfs (paigaldatud aadressile / mnt) ja seejärel kontrollige killustatust. Kõik see on muidugi vabatahtlik.
Defragmentige oma failisüsteem
Esimene asi, mida peame tegema, on välja mõelda, kuidas killustatust kontrollida. Näiteks varem loodud xfs-failisüsteem oli seadme sõlmes / dev / sdb. Killustatuse taseme kontrollimiseks saame kasutada utiliiti xfs_db (tähistab xfs silumist).
$ xfs_db -c frag -r / dev / sdb1-C lipp võtab erinevaid käske, mille hulgas on fragment fragmenti taseme kontrollimiseks. -R lippu kasutati veendumaks, et operatsioon on täielikult kirjutuskaitstud.
Kui leiame, et selles failisüsteemis on killustatust, käivitame seadme sõlmes käsu xfs_fsr:
$ xfs_fsr / dev / sdb1See viimane käsk on teie failisüsteemi defragmentimine, võite selle lisada cronjobina, mis jälgib teie failisüsteemi regulaarselt. Kuid xfs-i jaoks seda teha pole eriti mõtet. XFS-i ulatusepõhine jaotamine tagab, et sellised probleemid nagu killustatus jäävad minimaalseks.
Kasuta kohtuasju
Kasutusjuhud, kus peate failisüsteemi killustatuse pärast kõige rohkem muretsema, hõlmavad rakendusi, kus kirjutatakse ja kirjutatakse palju väikseid andmepalasid. Andmebaas on selle klassikaline näide ja andmebaasid on kurikuulsad, jättes teie hoidlasse palju ja palju auke. Mäluplokke ei täideta üksteise järel, muutes vaba ruumi hulk aja jooksul järjest väiksemaks.
Probleem tekib lisaks kasutatava ruumi vähenemisele ka IOPS-i vähenemisele, mis võib kahjustada teie rakenduse toimivust. Skripti olemasolu killustatuse taseme pidevaks jälgimiseks on konservatiivne viis süsteemi hooldamiseks. Te ei soovi, et automatiseeritud skript hakkaks teie failisüsteemi juhuslikult defragmentima, eriti kui seda kasutatakse tippkoormusel.