Det finns en vanlig myt att Linux-skivor aldrig behöver defragmentera alls. I de flesta fall är detta sant, främst på grund av de utmärkta journaling-filsystemen som Linux använder (ext2, 3, 4, btrfs, etc.) för att hantera filsystemet. I vissa specifika fall kan emellertid fragmentering fortfarande förekomma. Om det händer med dig är lösningen lyckligtvis väldigt enkel.

Vad är fragmentering?

Fragmentering uppstår när ett filsystem uppdaterar filer i små bitar, men dessa bitar bildar inte en sammanhängande helhet och sprids istället runt disken. Detta gäller särskilt för FAT- och FAT32-filsystem. Det mildrades något i NTFS och händer nästan aldrig i Linux (extX). Här är varför.

I filsystem som FAT och FAT32 skrivs filer direkt intill varandra på disken. Det finns inget utrymme kvar för filtillväxt eller uppdateringar:

NTFS lämnar något mer utrymme mellan filerna, så det finns utrymme att växa. Eftersom utrymmet mellan bitar är begränsat kommer fragmenteringen fortfarande att ske över tiden.

Linuxs journaling-filsystem tar ett annat tillvägagångssätt. I stället för att placera filer bredvid varandra sprids varje fil över hela disken, vilket ger generösa mängder ledigt utrymme mellan varje fil. Det finns tillräckligt med utrymme för filuppdateringar / tillväxt och fragmentering förekommer sällan.

Dessutom, om fragmentering händer, skulle de flesta Linux-filsystem försöka shuffle filer och bitar runt för att göra dem sammangränsande igen.

Disk fragmentering på Linux

Diskfragmentering förekommer sällan i Linux om du inte har en liten hårddisk eller det går tom för utrymme. Några möjliga fragmenteringsfall innefattar:

  • om du redigerar stora videofiler eller råa bildfiler och diskutrymme är begränsat
  • om du använder äldre hårdvara som en gammal bärbar dator, och du har en liten hårddisk
  • om dina hårddiskar börjar fylla upp (över 85% används)
  • om du har många små partitioner klamrar din hemmapp

Den bästa lösningen är att köpa en större hårddisk. Om det inte är möjligt, är det här där defragmentering blir användbar.

Hur man kontrollerar fragmentering

fsck kommandot kommer att göra det här för dig - det vill säga om du har möjlighet att köra den från en live-CD, med alla berörda partitioner ommonterade.

Detta är väldigt viktigt: RUNNING FSCK PÅ EN MONTERAD PARTITION KAN OCH KOMMER SKADA DIVA DIN DATA OCH DIN DISK.

Du har blivit varnad. Innan du fortsätter, gör en fullständig säkerhetskopiering av systemet.

Ansvarsbegränsning : Författaren till denna artikel och Make Tech Easier ansvarar inte för skador på dina filer, data, system eller andra skador som orsakats av dina handlingar efter att ha följt detta råd. Du kan fortsätta på egen risk. Om du fortsätter accepterar du och bekräftar detta.

Du bör bara starta upp i en live-session (som en installationsdiskett, systemräddnings-CD, etc.) och köra fsck på dina UNMOUNTED partitioner. För att söka efter några problem, kör följande kommando med root-behörighet:

 fsck -fn [/ path / to / your / partition] 

Du kan kontrollera vad [/path/to/your/partition] är med att köra

 sudo fdisk -l 

Det finns ett sätt att köra fsck (relativt) säkert på en monterad partition - det vill säga med -n omkopplaren. Detta kommer att resultera i en skrivskyddad filsystemkontroll utan att röra någonting. Naturligtvis finns det ingen garanti för säkerheten här, och du bör bara fortsätta efter att ha skapat en säkerhetskopia. På ett ext2-filsystem körs

 sudo fsck.ext2 -fn / path / to / your / partitionen 

skulle resultera i gott om produktion - de flesta av dem felmeddelanden som härrör från att partitionen är monterad. I slutändan kommer det att ge dig fragmenteringsrelaterad information.

Om din fragmentering är över 20%, bör du fortsätta att defragmentera ditt system.

Så enkelt defragmenteras Linux-filsystem

Allt du behöver göra är att säkerhetskopiera alla dina filer och data till en annan enhet (genom att manuellt kopiera dem över), formatera partitionen och kopiera dina filer tillbaka (använd inte ett backupprogram för detta). Det journallande filsystemet hanterar dem som nya filer och placerar dem snyggt på disken utan fragmentering.

För att säkerhetskopiera dina filer, kör

 cp -afv [/ path / to / source / partition] / * [/ path / till / destination / mapp] 

Tänk på asterixen (*); det är viktigt.

Obs! Det är överens om att kopiera stora filer eller stora mängder data kan dd kommandot vara bäst. Detta är en mycket låg nivåoperation och kopierar allt "som det är", inklusive det tomma utrymmet och till och med skräpet till vänster. Det här är inte vad vi vill, så det är nog bättre att använda cp .

Nu behöver du bara ta bort alla originalfiler.

 sudo rm-rf [/ path / to / source / partition] / * 

Valfritt: du kan fylla tomt utrymme med nollor. Du kan också uppnå detta med formatering, men om du till exempel inte kopierade hela partitionen är det bara stora filer (som sannolikt kommer att orsaka fragmentering), vilket kanske inte är ett alternativ.

 sudo dd om = / dev / zero of = [/ path / till / source / partition] /temp-zero.txt 

Vänta på att det är klart. Du kan också övervaka framstegen med pv.

 sudo apt-get installera pv sudo pv -tpreb | av = [/ sökväg / till / källa / partition] /temp-zero.txt 

När det är klart, ta bara bort den temporära filen.

 sudo rm [/path/to/source/partition]/temp-zero.txt 

När du har nollat ​​ut det tomma utrymmet (eller helt enkelt hoppat över det steget helt), kopiera dina filer tillbaka och vänd det första cp kommandot:

 cp -afv [/ path / to / original / destination / folder] / * [/ path / to / original / source / partition] 

Använda e4defrag

Om du föredrar ett enklare tillvägagångssätt, installera e2fsprogs,

 sudo apt-get install e2fsprogs 

och kör e4defrag som root på den drabbade partitionen. Om du inte vill eller kan inte avmontera partitionen kan du använda dess monteringspunkt istället för dess väg. För att defragmentera hela ditt system, springa

 sudo e4defrag / 

Det är inte garanterat att du lyckas när du är monterad (du borde också sluta använda ditt system medan det körs), men det är mycket lättare än att kopiera alla filer bort och tillbaka.

Slutsats

Fragmentering borde sällan vara ett problem på ett Linux-system på grund av det journallande filsystemets effektiva datahantering. Om du stöter på fragmentering på grund av några omständigheter finns det enkla sätt att omfördela ditt diskutrymme som att kopiera alla filer borta och bakåt eller använda e4defrag . Det är dock viktigt att hålla dina data säkra, så innan du försöker göra någon operation som skulle påverka alla eller de flesta av dina filer, se till att du gör en säkerhetskopia bara för att vara på den säkra sidan.