Kaip taisyti ir defragmentuoti „Linux“ sistemos skaidinius ir katalogus


Žmonės, naudojantys Linux, dažnai mano, kad jai nereikia defragmentuoti. Tai dažnas nesusipratimas tarp Linux vartotojų. Tiesą sakant, „Linux“ operacinė sistema palaiko defragmentavimą. Defragmentavimo tikslas yra pagerinti įvesties/išvesties operacijas, pvz., leisti vietiniams vaizdo įrašams įkelti greičiau arba žymiai greičiau išgauti archyvus.

„Linux ext2“, „ext3“ ir „ext4“ failų sistemoms nereikia tiek daug dėmesio, tačiau laikui bėgant, įvykdžius daug daug skaitytų/rašytų failų sistemą, gali tekti optimizuoti. Priešingu atveju standusis diskas gali sulėtėti ir paveikti visą sistemą.

Šioje pamokoje parodysiu keletą skirtingų failų defragmentavimo metodų. Prieš pradėdami turėtume paminėti, ką įprastos failų sistemos, pvz., ext2, 3, 4, daro, kad išvengtų suskaidymo. Šios failų sistemos apima techniką, kuri apsaugo nuo efekto. Pavyzdžiui, failų sistemos standžiajame diske rezervuoja nemokamas blokų grupes, kad būtų visiškai išsaugoti augantys failai.

Deja, su tokiu mechanizmu problema ne visada išsprendžiama. Nors kitoms operacinėms sistemoms tokioms problemoms išspręsti gali prireikti brangios papildomos programinės įrangos, „Linux“ turi keletą lengvai įdiegiamų įrankių, kurie gali padėti išspręsti tokias problemas.

Kaip patikrinti, ar failų sistemai reikalingas defragmentavimas?

Prieš pradėdamas norėčiau atkreipti dėmesį, kad toliau nurodytos operacijos turėtų būti vykdomos tik HDD, o ne SSD. SSD disko defragmentavimas tik padidins skaitymo/įrašymo skaičių ir sutrumpins jo tarnavimo laiką. Vietoj to, jei naudojate SSD, turėtumėte naudoti funkciją TRIM, kuri šioje pamokoje neaprašyta.

Išbandykime, ar sistema iš tikrųjų reikalauja defragmentavimo. Tai galime lengvai patikrinti naudodami įrankį, pvz., e2fsck. Prieš naudojant šį įrankį sistemos skaidinyje, rekomenduojama atjungti tą skaidinį. Tai nėra visiškai būtina, bet tai saugu:

sudo umount <device file>

Mano atveju /dev/sda1 yra prijungtas prie /tmp:

Atminkite, kad jūsų atveju skaidinių lentelė gali skirtis, todėl atjunkite tinkamą skaidinį. Norėdami atjungti tą skaidinį, galite naudoti:

sudo umount /dev/sda1

Dabar patikrinkime, ar šį skaidinį reikia defragmentuoti, naudodami e2fsck. Turėsite paleisti šią komandą:

sudo e2fsck -fn /dev/sda1

Aukščiau pateikta komanda atliks failų sistemos patikrinimą. Parinktis -f priverčia patikrinti, net jei sistema atrodo švari. Parinktis -n naudojama failų sistemai atidaryti tik skaitomai ir prisiimti atsakymą "ne" į visus galimus klausimus.

Šios parinktys iš esmės leidžia naudoti e2fsck neinteraktyviai. Jei viskas Gerai, turėtumėte matyti rezultatą, panašų į parodytą toliau esančioje ekrano kopijoje:

Štai dar vienas pavyzdys, rodantis sistemos klaidas:

Kaip pataisyti „Linux“ failų sistemą naudojant „e2fsck“.

Jei atsiranda klaidų, galite pabandyti pataisyti failų sistemą naudodami e2fsck su parinktimi -p. Atminkite, kad norint paleisti toliau pateiktą komandą, skaidinys turės būti atjungtas:

sudo e2fsck -p <device file>

Parinktys „-p“ bando automatiškai taisyti failų sistemoje problemas, kurias galima saugiai išspręsti be žmogaus įsikišimo. Jei aptinkama problema, dėl kurios sistemos administratorius gali imtis papildomų taisomųjų veiksmų, e2fsck išspausdins problemos aprašymą ir išeis su kodu 4, o tai reiškia „Failų sistemos klaidos liko neištaisytos“. Atsižvelgiant į aptiktą problemą, gali prireikti įvairių veiksmų.

Jei problema iškyla skaidinyje, kurio negalima atjungti, galite naudoti kitą įrankį, pavadintą e4defrag. Jis yra iš anksto įdiegtas daugelyje „Linux“ platinimų, bet jei jo neturite, galite jį įdiegti naudodami:

sudo apt-get install e2fsprogs         [On Debian and Derivatives]
yum install e2fsprogs                  [On CentOS based systems]
dnf install e2fsprogs                  [On Fedora 22+ versions] 

Kaip defragmentuoti Linux skaidinius

Dabar atėjo laikas defragmentuoti „Linux“ skaidinius naudojant šią komandą.

sudo e4defrag <location>
or
sudo e4defrag <device>

Kaip defragmentuoti Linux katalogą

Pavyzdžiui, jei norite defragmentuoti vieną katalogą ar įrenginį, galite naudoti:


sudo e4defrag /home/user/directory/
sudo e4defrag /dev/sda5

Kaip defragmentuoti visus Linux skaidinius

Jei norite defragmentuoti visą sistemą, saugus būdas tai padaryti yra:

sudo e4defrag /

Atminkite, kad šis procesas gali užtrukti šiek tiek laiko.

Išvada

Defragmentavimas yra operacija, kurią retai kada reikės vykdyti sistemoje „Linux“. Jis skirtas patyrusiems vartotojams, kurie tiksliai žino, ką daro, ir nerekomenduojamas Linux naujokams. Viso veiksmo esmė yra optimizuoti failų sistemą, kad naujos skaitymo/rašymo operacijos būtų atliekamos efektyviau.