XFS

Sådan defragmenteres et XFS-filsystem

Sådan defragmenteres et XFS-filsystem
Fragmentering er et langvarigt problem, når det kommer til opbevaring. Det opstår, når lagringsmediet på grund af langvarig brug får klumper af tildelte blokke med ledig plads imellem. Dette sker, fordi forskellige programmer anmoder om hukommelse i forskellig rækkefølge og derefter frigør hukommelsen på forskellige tidspunkter. At have klumper af ikke-allokeret plads imellem data reducerer den samlede ledige plads på disken (lagereffektivitet) og også diskens ydeevne, da dataene ikke lagres i et stort sammenhængende stykke, men spredt over disken.

Dette problem er især tydeligt i magnetiske medier, selvom SSD'er også lider under det. Lad os prøve at defragmentere et XFS-filsystem i dette indlæg.

Opsætning af sandkasse

Først for at eksperimentere med XFS-filsystem besluttede jeg at oprette en testbænk i stedet for at arbejde med kritiske data på en disk. Denne testbænk består af en Ubuntu VM, som en virtuel disk er forbundet med, hvilket giver rå lagring. Du kan bruge VirtualBox til at oprette den virtuelle computer og derefter oprette en ekstra disk til at vedhæfte den til den virtuelle computer

Gå bare til din VM's indstillinger og derunder Indstillinger → Opbevaring sektion kan du tilføje en ny disk til SATA-controlleren, du kan oprette en ny disk. Som vist nedenfor, men sørg for, at din VM er slukket, når du gør dette.

Når den nye disk er oprettet, skal du tænde den virtuelle computer og åbne terminalen. Kommandoen lsblk viser alle tilgængelige blokkenheder.

$ lsblk
sda 8: 0 0 60G 0 disk
├─sda1 8: 1 0 1M 0 del
└─sda2 8: 2 0 60G 0 del /
sdb 8:16 0 100G 0 disk
sr0 11: 0 1 1024M 0 rom

Bortset fra hovedbloksenheden sda, hvor operativsystemet er installeret, er der nu en ny SDB-enhed. Lad os hurtigt oprette en partition fra den og formatere den med XFS-filsystem.

Åbn opskilt værktøj som rodbruger:

$ skilt -en optimal / dev / sdb

Lad os først oprette en partitionstabel ved hjælp af mklabel, dette efterfølges af at oprette en enkelt partition ud af hele disken (som er 107 GB i størrelse). Du kan kontrollere, at partitionen er lavet, ved at angive den ved hjælp af kommandoen print:

(skilt) mklabel gpt
(skilt) mkpart primær 0 107
(skilt) print
(skilt) afslutte

Okay, nu kan vi se ved hjælp af lsblk, at der er en ny blokkenhed under sdb-enheden, kaldet sdb1.

Lad os formatere dette lager som xfs og montere det i / mnt-biblioteket. Igen skal du gøre følgende som root:

$ mkfs.xfs / dev / sdb1
$ mount / dev / sdb1 / mnt
$ df -h

Den sidste kommando udskriver alle monterede filsystemer, og du kan kontrollere, at / dev / sdb1 er monteret på / mnt.

Dernæst skriver vi en masse filer som dummy-data til defragmentering her:

$ dd hvis = / dev / urandom af = / mnt / myfile.txt-antal = 1024 bs = 1024

Ovenstående kommando ville skrive en fil myfile.txt på 1 MB størrelse. Du kan automatisere denne kommando til en enkel til loop ved hjælp af bash og generere flere sådanne filer. Spred dem på forskellige mapper, hvis du vil. Slet et par af dem tilfældigt. Gør alt dette inde i xfs-filsystemet (monteret på / mnt), og kontroller derefter for fragmentering. Alt dette er selvfølgelig valgfrit.

Defragmenter dit filsystem

Den første ting, vi skal gøre, er at finde ud af, hvordan vi kontrollerer mængden af ​​fragmentering. For eksempel var det xfs-filsystem, vi oprettede tidligere, på enhedens node / dev / sdb. Vi kan bruge værktøjet xfs_db (står for xfs debugging) til at kontrollere fragmenteringsniveauet.

$ xfs_db -c frag -r / dev / sdb1

Flagget -c tager forskellige kommandoer, blandt hvilke frag-kommandoen er for at kontrollere fragmenteringsniveauet. Flagget -r bruges til at sikre, at operationen er fuldstændig skrivebeskyttet.

Hvis vi finder ud af, at der er fragmentering i dette filsystem, kører vi kommandoen xfs_fsr på enhedens node:

$ xfs_fsr / dev / sdb1

Denne sidste kommando er alt hvad der er for at defragmentere dit filsystem, du kan tilføje dette som en cronjob, der regelmæssigt overvåger dit filsystem. Men at gøre det for xfs giver lidt mening. Omfangsbaseret tildeling af XFS sikrer, at problemer som fragmentering forbliver på et minimum.

Brug sager

Brugstilfælde, hvor du skal bekymre dig mest om filsystemfragmentering, involverer applikationer, hvor mange små stykker data skrives og omskrives. En database er et klassisk eksempel på dette, og databaser er berygtede for at efterlade masser af "huller" i din opbevaring. Hukommelsesblokke fyldes ikke sammenhængende, hvilket gør mængden af ​​ledig plads mindre og mindre over tid.

Problemet opstår som ikke kun med hensyn til reduceret brugbar plads, men også med hensyn til reduceret IOPS, som kan skade din applikations ydeevne. At have et script til løbende at overvåge fragmenteringsniveauet er en konservativ måde at vedligeholde systemet på. Du vil ikke have et automatiseret script, der tilfældigt begynder at defragmentere dit filsystem, især når det bruges ved spidsbelastning.

Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...
Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...
Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...