[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?

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

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.

Visa signatur

Det var enklare förr att skilja Asus moderkort åt:
Asus A7V -> Asus P5Q Pro -> Asus M4A88TD-V EVO/USB3

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

Visa signatur

Bästa programmen till Linux - v2.0
Linux-guide: Val av grafisk miljö. (Att välja distribution).
-
Everyone should have a SGoC in their systems (SGoC: SysGhost on a Chip)

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.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

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.

Visa signatur

Bästa programmen till Linux - v2.0
Linux-guide: Val av grafisk miljö. (Att välja distribution).
-
Everyone should have a SGoC in their systems (SGoC: SysGhost on a Chip)

Permalänk
Medlem

Tack för informationen.

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

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.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

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.