Šī problēma ir īpaši redzama magnētiskajos nesējos, lai arī SSD no tā cieš. Mēģināsim defragmentēt XFS failu sistēmu šajā ierakstā.
Smilškastes iestatīšana
Pirmkārt, lai eksperimentētu ar XFS failu sistēmu, es nolēmu izveidot testbench, nevis strādāt ar kritiskiem datiem diskā. Šis testēšanas stends sastāv no Ubuntu VM, kuram ir pievienots virtuālais disks, nodrošinot neapstrādātu krātuvi. Varat izmantot VirtualBox, lai izveidotu VM un pēc tam izveidotu papildu disku, kuru pievienot VM
Vienkārši dodieties uz sava VM iestatījumiem un zem Iestatījumi → Krātuve sadaļā jūs varat pievienot jaunu disku SATA kontrolierim, varat izveidot jaunu disku. Kā parādīts zemāk, taču, veicot to, pārliecinieties, vai jūsu VM ir izslēgts.
Kad jaunais disks ir izveidots, ieslēdziet VM un atveriet termināli. Komanda lsblk uzskaita visas pieejamās bloķēšanas ierīces.
$ lsblksda 8: 0 0 60G 0 disks
├─sda1 8: 1 0 1M 0 daļa
└─sda2 8: 2 0 60G 0 daļa /
sdb 8:16 0 100G 0 disks
sr0 11: 0 1 1024M 0 rom
Neatkarīgi no galvenā bloka ierīces sda, tur, kur ir instalēta OS, tagad ir jauna SDB ierīce. Ātri izveidosim no tā nodalījumu un formatēsim to ar XFS failu sistēmu.
Atveriet dalītu utilītu kā root lietotāju:
$ šķīrās - optimāls / dev / sdbVispirms izveidosim nodalījumu tabulu, izmantojot mklabel, pēc tam izveidojot vienu nodalījumu no visa diska (kura izmērs ir 107 GB). Pārliecinieties, vai nodalījums ir izveidots, uzskaitot to, izmantojot komandu print:
(šķīrās) mklabel gpt(šķīries) mkpart primārais 0107
(šķīrās) druka
(šķīrās) atmest
Labi, tagad mēs varam redzēt, izmantojot lsblk, ka zem sdb ierīces ir jauna bloķēšanas ierīce ar nosaukumu sdb1.
Formatēsim šo krātuvi kā xfs un pievienosim to direktorijā / mnt. Atkal veiciet šādas darbības kā saknes:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Pēdējā komanda izdrukās visas pievienotās failu sistēmas, un jūs varat pārbaudīt, vai / dev / sdb1 ir uzstādīts uz / mnt.
Tālāk mēs uzrakstām virkni failu kā fiktīvus datus, lai šeit defragmentētu:
$ dd, ja = / dev / urandom no = / mnt / myfile.txt skaits = 1024 bs = 1024Iepriekš minētā komanda uzrakstīs failu myfile.txt no 1 MB. Jūs varat automatizēt šo komandu vienkāršā ciklā, izmantojot bash, un ģenerēt vairāk šādu failu. Ja vēlaties, izklājiet tos dažādos direktorijos. Nejauši izdzēsiet dažus no tiem. Dariet to visu faila sistēmā xfs (uzstādīts pie / mnt) un pēc tam pārbaudiet sadrumstalotību. Tas viss, protams, nav obligāts.
Defragmentējiet failu sistēmu
Pirmais, kas mums jādara, ir izdomāt, kā pārbaudīt sadrumstalotību. Piemēram, iepriekš izveidotā xfs failu sistēma bija ierīces mezglā / dev / sdb. Lai pārbaudītu sadrumstalotību, mēs varam izmantot utilītu xfs_db (apzīmē xfs atkļūdošanu).
$ xfs_db -c frag -r / dev / sdb1Karodziņā -c tiek izmantotas dažādas komandas, starp kurām ir frag komanda, lai pārbaudītu sadrumstalotības līmeni. Karodziņš -r tiek izmantots, lai pārliecinātos, ka darbība ir tikai lasāma.
Ja konstatējam, ka šajā failu sistēmā ir sadrumstalotība, ierīces mezglā palaižam komandu xfs_fsr:
$ xfs_fsr / dev / sdb1Šī ir pēdējā komanda, lai defragmentētu jūsu failu sistēmu. Jūs varat to pievienot kā cronjob, kas regulāri uzraudzīs jūsu failu sistēmu. Bet darīt to xfs dēļ ir maz jēgas. XFS sadalījums pēc apjoma nodrošina, ka tādas problēmas kā sadrumstalotība ir minimālas.
Lietot lietas
Lietošanas gadījumi, kad visvairāk jāuztraucas par failu sistēmas sadrumstalotību, ietver lietojumprogrammas, kurās tiek rakstīts un pārrakstīts daudz mazu datu gabalu. Datu bāze ir klasisks piemērs, un datubāzes ir pazīstamas ar to, ka atstāj daudz un daudz “bedrīšu” jūsu krātuvē. Atmiņas bloki nav piepildīti blakus, padarot pieejamo vietu daudzumu laika gaitā arvien mazāku.
Problēma rodas ne tikai attiecībā uz samazinātu izmantojamo vietu, bet arī par samazinātu IOPS, kas varētu kaitēt jūsu lietojumprogrammas veiktspējai. Skripta lietošana, lai nepārtraukti uzraudzītu sadrumstalotības līmeni, ir konservatīvs sistēmas uzturēšanas veids. Jūs nevēlaties, lai automatizēts skripts nejauši sāktu defragmentēt jūsu failu sistēmu, it īpaši, ja to izmanto maksimālās slodzes laikā.