[Linux/Program] Defragmentation/Fragmentation.

Permalänk
Medlem

[Linux/Program] Defragmentation/Fragmentation.

Hej!

Jag vet att många kommer att säga att men inte behöver delfragmentera på Linux osv, för det inte blir några fragment.
Men samtidigt så sker det ju faktiskt fragment kanske inte lika ofta som på windows men det händer. I.a.f jag skulle vara intresserad om det finns defrag program?

Permalänk
Medlem

Det absolut enklaste sättet är väl att någon gång per år göra en tar-fil av allting på disk-partionen, formatera om och sedan packa upp tar-filen igen. Bäst att göra när man startat om från cd/usb. Håll bara koll på vilken partition du formaterar och vilken du har tagit backup på.

Det går iaf bra mycket snabbare än att låta Microsoft Defrag nöta på disken i någon timme.

Permalänk
Entusiast
Skrivet av Mejan:

Hej!

Jag vet att många kommer att säga att men inte behöver delfragmentera på Linux osv, för det inte blir några fragment.
Men samtidigt så sker det ju faktiskt fragment kanske inte lika ofta som på windows men det händer. I.a.f jag skulle vara intresserad om det finns defrag program?

Jodå. Det finns defragmenteringsprogram även för Linux. Frågan är bara vilket filsystem det handlar om.
För ext4 har du kommandot e4defrag. (Kan behöva installeras innan det finns tillgängligt i systemet. Sök i distributionens paketsystem och installera.)
http://man7.org/linux/man-pages/man8/e4defrag.8.html

För NTFS kan det vara lite knepigare. Det finns en alpha/beta-version av ultradefrag för Linux. Men är knepig att kompilera då det är en direktportning från Windows-versionen.
Se inlägg nummer 25 i följande forum-tråd hos Arch Linux forum:
https://bbs.archlinux.org/viewtopic.php?pid=1335537#p1335537

Permalänk
Hedersmedlem
Skrivet av Mejan:

Jag vet att många kommer att säga att men inte behöver delfragmentera på Linux osv, för det inte blir några fragment.
Men samtidigt så sker det ju faktiskt fragment kanske inte lika ofta som på windows men det händer.

Anledningen är snarare att det är bättre att låta filsystemet sköta sådant automatiskt, då det vet bättre. Exempelvis Ext-familjen av filsystem ser till att lämna ledigt utrymme mellan filer så att det finns möjlighet att växa utan att direkt behöva bryta upp filer. Om det ändå brakar in i en kollision så kommer filer sömlöst flyttas så att problemet försvinner, eller åtminstone håller sig till ett minimum. När disken börjar bli full så blir det givetvis svårare att hitta plats, varpå fragmentering kan uppstå och disken får jobba hårdare för att flytta runt filer så att strukturen hålls fin. Ser man prestandaproblem med disk-I/O vid en nästan proppad disk så kan man titta på att lösgöra lite utrymme så att filsystemet kan jobba friare.

Om man med "defragmentera" menar bilden "lägg alla filer staplade på varandra från första sektorn på disken", FAT32-style, så gör man sig själv och systemet en otjänst. När en fil i den fina staplingen raderas så kommer det bildas hål i strukturen, och när en existerande fil vill växa så behöver systemet likväl behöva skriva om filer, så operationen är egentligen utan nytta, och kanske till och med skadlig för prestanda jämfört med den glesare struktur som byggs upp naturligt.

Defragmentering var en viktig fråga på FAT32 pga naiva skrivmönster. Idag är det till stor del bara ett sätt att slita lite extra på disken (dubbelt så om det handlar om SSD), åtminstone för "vanlig" användning.

Ett sätt att "defragmentera" en fil som nämndes ovan via `tar` är att helt enkelt kopiera den och ta bort ursprungsfilen. Ifall det fanns tillräckligt med utrymme på disken så kommer den nya filen garanterat skrivas i en följd. Detta gör också att filsystemets algoritm kommer placera ut filerna "smart", liksom alltså sker kontinuerligt vid helt normal användning.

Med det sagt, så om det handlar om Ext4 så finns det "officiella" defragmenteringsprogrammet `e4defrag` i paketet `e2fsprogs` i Debianbaserade distributioner, och säkert i även andra distributioners programkataloger, men se till att veta varför det finns, och vad defragmentering i praktiken ger för eventuella följder för det filsystem du använder.

Permalänk
Entusiast

Fragmentering händer även på ett *nix filsystem. Fast det händer inte förrän man börjar få slut på ledigt utrymme.
Fragmentering är i slutändan oundvikligt, när man fyller upp volymen "tillräckligt mycket" ...Om man inte använder särskilt anpassade filsystem som offrar massor av processorkraft och I/O-operationer för att hålla filsystemet ofragmenterat till varje pris.

Det är i regel bra att hålla tillräckligt mycket utrymme oallokerat (ledigt), för att förhindra fragmentering.
Jag själv håller mig till min egna lilla tumregel: 2 gånger den största filen jag lagrar. T.ex om jag har 2 GiB stora filer, så ser jag till att volymen har minst 4 GiB ledigt. På så sätt hålls det alltid tillräckligt mycket ledigt för en filkopiering/flytt/lagring för att hålla den senaste filen ofragmenterad. Resten sköter Linux-kärnan på egen hand.

e4defrag jobbar i huvudsak med att defragmentera själva filerna, inte utrymmet mellan filerna. ett typiskt *nix filsystem tjänar inte mycket, om ens alls, på att defragmentera det lediga utrymmet.

Permalänk
Medlem

Tack för informationen.

Permalänk
Hedersmedlem
Skrivet av SysGhost:

Jag själv håller mig till min egna lilla tumregel: 2 gånger den största filen jag lagrar. T.ex om jag har 2 GiB stora filer, så ser jag till att volymen har minst 4 GiB ledigt. På så sätt hålls det alltid tillräckligt mycket ledigt för en filkopiering/flytt/lagring för att hålla den senaste filen ofragmenterad. Resten sköter Linux-kärnan på egen hand.

Låter som en rimlig tumregel.

Som standard lämnar Ext-formaterade partitioner 5% ledigt för "root-användaren", vilket i praktiken (bland annat) används just för att kärnan ska kunna skyffla data för att undvika negativ fragmentering. Procentsiffran är rimlig för mindre partitioner och har historisk grund, men det är ganska bananas för exempelvis en modern 4 TB-disk som enskild partition (5% → 200 GB reserverat utrymme), så det kan finnas mycket utrymme att vinna tillbaka genom att ändra detta om man inte gjort det; kanske man till och med kan ta bort reserverat utrymme helt på en ren lagringspartition, samtidigt som man är medveten om vad som kan hända om man fyller den till bredden. På en systemkritisk partition så rekommenderas dock inte att ta bort reserverat utrymme, av flera anledningar.

Permalänk
Medlem

Systemdisken vill du helst ha under 75% fylld för att undvika fragmentering, ju större systemdisk du har desto närmare 100% kan du gå innan problemen börjar.