# Compactació de fitxers

La desfragmentació és el procés mitjançant el qual s'acomoden els fitxers d'un disc de tal manera que cada un quedi en una àrea contigua i sense espais sense usar entre ells. En anar escrivint i esborrant fitxers contínuament en el disc dur, aquests tendeixen a no quedar en àrees contigües, així, un fitxer pot quedar "partit" en molts trossos al llarg del disc, es diu que el fitxer està "fragmentat". En tenir els fitxers escampats pel disc, es torna ineficient l'accés.
El problema d'emmagatzematge no contigu de fitxers s'anomena fragmentació, es produeix a causa de l'emmagatzematge de fitxers en dispositius com el disc dur i la memòria RAM per l'ús de l'ordinador.
La fragmentació és un problema que sorgeix degut a l'ordenament intern de les dades en alguns sistema de fitxers. Es dona generalment en el sistema operatiu Windows encara que també afecta altres plataformes però en una escala menor. També es produeix fragmentació dins de la memòria de l'ordinador (memòria RAM) quan s'assignen els processos als diferents blocs de memòria. Existeixen dos tipus de fragmentació: doble i triple.
La desfragmentació no fa que l'ordinador treballi més ràpid, sinó que agilitza el procés de la navegació pels fitxers.

## Motivació

La lectura i escriptura seqüencials de sistemes de fitxers fortament fragmentats s'alenteix, pel fet que augmenta el temps necessari perquè els capçals del disc es moguin entre els fragments i esperin que el disc giri a la posició de lectura (vegeu temps de recerca i retard rotacional). Per a moltes operacions comuns, el coll d'ampolla en l'operació de tot l'ordinador és el disc dur; per això el desig de processar més eficientment animi a la desfragmentació. Els venedors de sistemes operatius sovint recomanen la desfragmentació periòdica per evitar que la velocitat d'accés al disc es degradi amb el temps.
Les dades fragmentats també s'estenen pel disc més del necessari. Per tant, un pot desfragmentar per agrupar les dades en una zona, abans de dividir la partició en dos o més (per exemple, amb GNU Parted o PartitionMagic).
La desfragmentació pot augmentar la vida del disc dur, en minimitzar el moviment dels capçals i simplificar les operacions d'accés a les dades.

## Causes

La fragmentació ocorre quan el sistema operatiu no assigna prou espai contigu per emmagatzemar un fitxer complet com una unitat, sinó que, en canvi, posa parts en buits entre altres fitxers (usualment aquests buits existeixen perquè abans van contenir un fitxer que posteriorment va ser esborrat pel sistema operatiu, o perquè aquest en primer lloc va assignar massa espai per a un fitxer). Els fitxers més grans i el major nombre de fitxers també contribueixen a la fragmentació i en conseqüència a la pèrdua de rendiment. La desfragmentació intenta alleujar aquests problemes.

## Fragmentació

La fragmentació és la memòria que queda desaprofitada en usar els mètodes de gestió de memòria. Tant el primer ajust, com el millor i el pitjor produeixen fragmentació externa.
La fragmentació és generada quan durant el reemplaçament de processos queden buits entre dos o més processos de manera no contigua i cada buit no és capaç de suportar cap procés de la llista d'espera. Potser en conjunt hi ha espai suficient, però es requeriria un procés de desfragmentació de memòria o compactació per aconseguir-ho. Aquesta fragmentació es denomina fragmentació externa.
Hi ha un altre tipus de fragmentació coneguda com a fragmentació interna, la qual és generada quan es reserva més memòria de la que el procés utilitzarà. No obstant això, a diferència de l'externa, aquests buits no es poden compactar per a ser utilitzats. S'ha d'esperar a la finalització del procés perquè s'alliberi el bloc complet de la memòria.

### Fragmentació interna

La fragmentació interna és la pèrdua d'espai en disc degut al fet que la mida d'un determinat fitxer sigui inferior a la mida del clúster, ja que teòricament el fitxer estaria obligat a ser referenciat com un clúster complet. Els clúster són contigus de manera que des de l'últim bit del fitxer situat al clúster "a" fins al primer bit del fitxer situat al clúster contigu (com ara "b") queda un espai sobrant, sempre que es tingui la condició que el fitxer del clúster "a" sigui més petit que el clúster en si.
Per això se suggereix no disposar d'un gran mida de partició en els discos nous on la capacitat és molt important. Per exemple: si el nostre clúster és de 18KB (18.432 bytes) per més que un fitxer ocupi menys, en el nostre disc ocuparia 18KB. Això suggereix una pèrdua d'aquest espai que diu utilitzar, però no utilitza.
Per això, en el nostre exemple, un fitxer de 3KB ocuparia en el nostre disc el mateix que un de 10KB, és a dir 18 kB. Aquesta pèrdua d'espai es denomina fragmentació interna i no es corregeix amb el desfragmentar, sinó disminuint la mida de la partició.

### Fragmentació externa

Aquest tipus de fragmentació apareix a conseqüència de les diferents polítiques d'ajust de blocs que té un sistema de fitxers o en utilitzar assignacions dinàmiques de blocs en el cas de la memòria. En el sistema de fitxers, la successiva creació i eliminació de fitxers de diferents mides pot conduir a l'aïllament dels blocs lliures d'un disc i, depenent de la política d'ajust, que no s'elegeixin per a futurs fitxers.
En la memòria del sistema la fragmentació es produeix quan els processos assignats han ocupat posicions no contigües de memòria deixant massa blocs lliures de mida petita, en què no "caben" nous processos.
En sistemes de fitxers la desfragmentació tracta de resoldre aquest problema alineant els blocs de dades contigus i ajuntant els blocs lliures, produint així fragments majors que sí que seran elegits per a futurs fitxers. En la memòria principal se soluciona compactant els processos perquè aquests ocupin posicions contigües i deixin els blocs lliures junts o també se soluciona amb la paginació de memòria.

## Desfragmentació

Aquest procés consta d'ordenar els trossos d'informació distribuïda a través de tot el disc, per millorar la velocitat d'accés i distribuir de millor manera l'espai lliure del dispositiu. Com aquest procés consta en la reorganització de parts de fitxers, requereix de prou memòria per realitzar els moviments dels trossos d'informació. En moure en forma física la informació, l'estructura lògica no pateix alteracions.

### Aspectes de la desfragmentació

En Windows la presència de fitxers inamovibles del sistema o que el desfragmentar no mourà per simplificar la seva tasca (sobretot amb el fitxer d'intercanvi o swap file) pot impedir un bon percentatge de desfragmentació en el disc.
Certs sistemes de fitxers són més susceptibles a canvis per desfragmentació que altres. Per exemple, una partició de tipus FAT es fragmenta més ràpid que una de partició del tipus NTFS (Windows), EXT 4 (Linux) o HFS + (MacOSX).

## Contramesures

Una estratègia comuna per optimitzar la desfragmentació i reduir l'impacte de la fragmentació és particionar el disc dur per separar les particions del sistema de fitxers que experimenten moltes més lectures i escriptures, de les zones més volàtils, on es creen i s'esborren freqüentment els fitxers. En Windows de Microsoft, el contingut de directoris com ara "\fitxers de programes" o "\Windows" es modifica amb molta menor freqüència que la de les seves lectures. Els directoris que contenen els perfils dels usuaris es modifiquen constantment (especialment el directori Temp i el cache del Internet Explorer, que crea milers de fitxers que s'esborren en uns quants dies). Si els fitxers dels perfils dels usuaris es mantenen en una partició dedicada (com es fa comunament en els sistemes UNIX), el desfragmentar funciona millor, ja que no ha de tractar amb tots els fitxers estàtics dels altres directoris. A les particions amb relativament poca activitat, el rendiment de la desfragmentació millora granment després de la primera, ja que en el futur el compactador només haurà de desfragmentar un petit nombre de nous fitxers.

## Problemes
### Fitxers inamovibles

La presència de fitxers de sistema inamovibles, especialment un fitxer d'intercanvi, pot dificultar la desfragmentació. Aquests fitxers es poden moure amb seguretat quan el sistema operatiu no està funcionant. Per exemple, ntfsresize mou aquests fitxers per canviar la mida d'una partició NTFS.

### Creixement de la fragmentació

En sistemes sense resistència a la fragmentació, aquesta creix per si mateixa si no es fa res, així que és necessària la desfragmentació periòdica per mantenir el rendiment del disc al màxim i evitar la sobrecàrrega de desfragmentacions menys freqüents.

### Discs d'estat sòlid

Quan s'accedeix a una unitat de disc dur electromecànic convencional, el controlador del disc ha de situar primer el capçal, amb relativa lentitud, a la pista on resideix un fragment determinat i esperar mentre el plat del disc gira fins que el fragment arribi al capçal. Un disc d'estat sòlid (SSD) es basa en memòria flash sense parts mòbils, de manera que l'accés aleatori d'un fragment de fitxer a la memòria flash no pateix aquest retard, fent innecessària la desfragmentació per optimitzar la velocitat d'accés. A més a més, com que la memòria flash es pot escriure només un nombre limitat de vegades d'una forma fiable (abans de donar errors), la desfragmentació és realment perjudicial. Tanmateix, Windows encara desfragmenta un SSD automàticament (encara que amb menys vigor) per evitar que el sistema de fitxers arribi a la seva màxima tolerància de fragmentat, ja que una vegada que s'arriba al límit màxim de fragmentació, fracassaran els intents posteriors d'escriure al disc.

## Problemes de rendiment i de l'usuari

En una àmplia gamma de sistemes operatius multiusuari, un usuari ordinari no pot desfragmentar els discs del sistema perquè cal l'accés del superusuari (o "Administrador") per moure els fitxers del sistema. A més, els sistemes de fitxers com ara el NTFS (i la majoria dels sistemes de fitxers Unix/Linux) estan dissenyats per reduir la probabilitat de la fragmentació. Les millores en els discos durs moderns, com ara cache en RAM, major velocitat de rotació del disc i major densitat de dades, redueixen en algun grau l'impacte negatiu de la fragmentació en el rendiment del sistema, encara els augments en les quantitats de dades usades comunament compensen aquests efectes.
Tanmateix, els sistemes moderns es beneficien en gran manera de les enormes capacitats de disc disponibles actualment, ja que els discos parcialment ocupats es fragmenten molt menys que els discos plens. En qualsevol cas, aquestes limitacions de la desfragmentació han portat a decisions de disseny en els sistemes operatius moderns, com ara el Mac OS X basat en Unix, el qual es va introduir el 1999 i va eliminar la necessitat, en la utilització normal, que l'usuari hagi de compactar una unitat. Vuit anys després, el 2007, Windows Vista també va introduir la capacitat de desfragmentar automàticament en un procés en segon pla - encara que no intenta desfragmentar completament un volum, ja que fer-ho només produiria augments de rendiment menyspreables.

## Aproximació i desfragmentadors segons el tipus de sistema

Els programes de desfragmentació, en general, venen incorporats al sistema operatiu (excepte en Windows NT 4). També existeixen aplicacions externes, les quals posseeixen opcions més avançades que les propostes pels fabricants del sistema operatiu. El desfragmentador més conegut és el Defrag, que és usat en MS-DOS i en les plataformes de Windows (en aquestes últimes amb el nom de "desfragmentador de disc"). Pot ser trobat en les versions de Windows a Inici → Programes → Accessoris → Eines de Sistema.

### Desfragmentadors segons tipus de partició del sistema

* FAT: Els sistemes DOS 6.xi Windows 9x venen amb una utilitat de desfragmentació anomenada Defrag. La de DOS és una versió limitada de SpeedDisk de Norton [6], i la de Windows és una versió amb llicència de Diskeeper.
* NTFS: Windows 2000 i posteriors inclouen una eina de desfragmentació obtinguda de Diskeeper. NT 4 i anteriors no incorporen utilitats de desfragmentació. Desafortunadament, el desfragmentar integrat no consolida l'espai lliure. Per tant, una unitat fortament fragmentada amb molts espais petits pot no tenir-ne de grans consecutius després de la desfragmentació. Així, qualsevol nou fitxer gran instantàniament serà dividit en fragments petits, amb un impacte immediat en el rendiment. Això pot passar fins i tot si l'espai usat en el disc és inferior al 60%.
* Ext2 (Linux) utilitza un desfragmentador extern anomenat e2defrag, el qual no funciona amb el seu successor ext3, llevat que aquest sistema de fitxers es converteixi temporalment en ext2. En el seu lloc es pot usar un desfragmentador independent del sistema de fitxers, tal com Shake.
* Vxfs té una utilitat, fsadm, pensada per realitzar també operacions de desfragmentació.
* JFS té una utilitat, en els sistemes operatius d'IBM.
* HFS Plus (MAC OS X) va introduir el 1998 un nombre d'optimitzacions als algorismes d'assignació, en un intent de desfragmentar els fitxers mentre s'accedia a ells, sense un desfragmentador separat. Si el sistema de fitxers es torna fragmentat, l'única manera de desfragmentar-lo és adquirir iDefrag de Coriolis System.
* WAFL en el sistema operatiu ONTAP 7.2 de NetApp té una ordre anomenat reallocate, dissenyat per desfragmentar fitxers grans.
* XFS proporciona una utilitat de desfragmentació en línia, anomenada xfs_fsr .
* SFS processa la característica de desfragmentació de manera gairebé completament desnacionalitzada (a part de la ubicació on està funcionant), així que la desfragmentació es pot aturar i iniciar instantàniament.

## Referències

* ↑ Hanselman, Scott. «The real and complete story - Does Windows defragment your SSD?». Microsoft, 03-12-2014. Arxivat de l'original el 22 desembre 2014.
* ↑ Serdar Yegulalp. «Disk defragmentation: Performance-sapping bogeyman, or best practice?». SearchWindowsServer.com: Disk Defragmentation Fast Guide, 18-09-2006. Arxivat de l'original el 2008-05-26. [Consulta: 27 desembre 2008].
* ↑ Darcy, Jeff. «Filesystem Fragmentation». Canned Platypus, 19-04-2002. «.»
* ↑ Serdar Yegulalp. «New hard disk drives reduce need for disk defragmentation». SearchWindowsServer.com: Disk Defragmentation Fast Guide, 20 September 2005. Arxivat de l'original el 2008-06-03. [Consulta: 27 desembre 2008].
* ↑ http://cwdixon.com/support/win98_support/disk_defrag.htm
* ↑ http://files.mpoli.fi/unpacked/software/dos/compress/jam125sw.zip/readme.doc
* ↑ «Hands on - Under the Hood: Inside MS-DOS 6 - The developers of MS-DOS describe the operating system's memory optimization and disk-compression technology». BYTE Magazine, 18, 7-1993, pàg. 197–202.
* ↑ Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994). Undocumented DOS - A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Addison Wesley. ISBN 0-201-63287-X. ISBN 978-0-201-63287-3.
* ↑ «Journaling File System Support». eComStation. Arxivat de l'original el 2008-12-08. [Consulta: 27 desembre 2008].

## Bibliografia

* Norton, Peter (1994). Peter Norton's Complete Guide to DOS 6.22, página 521 - Sams (ISBN 067230614X).
* Woody Leonhard, Justin Leonhard (2005). Windows XP Timesaving Techniques For Dummies, Second Edition, página 456 - For Dummies (ISBN 0-764578-839).
* Jensen, Craig (1994). Fragmentation: The Condition, the Cause, the Cure. Executive Software International (ISBN 0-9640049-0-9).
* Dave Kleiman, Laura Hunter, Mahesh Satyanarayana, Kimon Andreou, Nancy G. Altholz, Lawrence Abrams, Darren Windham, Tony Bradley y Brian Barber (2006). Winternals: Defragmentation, Recovery, and Administration Field guide - Syngress (ISBN 1-597490-792).
* Robb, Drew (2003). Server disk Management in a Windows Environment, Chapter 7 - AUERBACH (ISBN 0849324327).