On Mon, 12 Nov 2001, Pierre Maitre wrote:

> Question: pourquoi les filesystems  linux (ext2) n'ont-ils jamais besoin
> d'�tre "d�fragment�s"?

D�finitions:

   fragmentation, sens BSD (FFS)

      Le fait de prendre des blocs d'allocation minimale du syst�me de
      fichier concern� (p.ex. 8192 octets en FFS usuel), et de les
      allouer � _plusieurs_ fichiers diff�rents (ce qui permet de ne
      pas gaspiller des blocs, tout en ayant une grande taille de bloc
      qui rend les I/Os performantes). Les fragments sont p.ex. de
      taille 1024 bytes. En g�n�ral, la granularit� d'allocation est
      de 8192 bytes. Pour le dernier bloc d'un fichier on peut allouer
      moins (en multiple de 1024) et le reste peut �tre allou� pour un
      petit fichier.

      ext2 ne supporte pas les fragments au sens BSD: une allocation de
      4096 bytes (maximum sur ix86 32 bits) peut gaspiller au plus 4095
      bytes.

      -> sub-allocation

   fragmentation, sens MS-DOS

      le fait que l'allocation de tous les blocs d'un fichier n'est pas
      contigu� (v�rifi� dans le dictionnaire :)), d'o� perte de
      performance � cause des seek()s (positionnement des t�tes) du
      disque.

      -> non-contiguous

Dans ce qui suit on parlera de fragmentation au sens MS-DOS. Notons que
les versions pas trop anciennes de e2fsck parlent de `non contiguous'; les
plus anciennes de `fragmentation'.

Reprenons la question: ce n'est pas tout � fait vrai. Disons qu'un syst�me
de fichier ext2 a moins de chance de se fragmenter car: 

   - 5 � 10% de la capacit� est r�serv�e � root (papier FFS)

        un syst�me de fichiers qui n'est pas plein � plus de 90%
        a de bonnes caract�ristiques qui permettent pour les fichiers
        de taille usuelle de trouver des s�quences de blocs contigu�s

        cf tune2fs

   - l'administrateur surveille son syst�me et �vite les conditions
     de disque plein

   - ext2 travaille avec un principe de pr�allocation: si un fichier
     fait 4 KB, ext2 pr�alloue quelques blocs du filesystem � la suite.
     Si finalement ces blocs ne sont pas n�cessaires, ils sont tout de
     m�me utilis�s (en derni�re priorit�) si le fs devient rempli.
     L'extension d'un fichier avec quelques blocs se produit donc
     de fa�on s�quentielle.

   - Linux poss�de un syst�me de caching tr�s agressif qui peut
     bien souvent camoufler de tels probl�mes.

   - ext2, comme FFS et descendants, ne remplit pas le disque � la suite,
     mais r�partit sur les diff�rents data groups.

Par exemple, mon serveur de news principal, syst�me de fichier ext2 � 1024
bytes/block, fs cr�� en 1996, consistant principalement en de petits
fichiers de 4k � 16k pour la plupart, a une non-contiguit� d'environ 5%
apr�s 5 ans. Est-ce un probl�me ?  Pas � mon avis: dans mon cas c'est
plut�t la relative inefficacit� du stockage de 10'000 fichiers ou plus par
r�pertoire -> probl�me � corriger au niveau de INN (utilisation du nouveau
syst�me de stockage), voire �ventuellement au niveau du syst�me de fichier
(FIST avec pseudo-r�pertoires de h�chage, ext2 avec patch de performance,
voire reiserfs).

Autre exemple: machine de travail personnel, syst�me de fichier cr��
cet �t�, parfois rempli � 100%, 4KB de block size:

defian:/home/schaefer# umount /scratch/ && e2fsck -f /dev/hda12 && mount /scratch
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/hda12: 8839/563360 files (4.4% non-contiguous), 702764/1124542 blocks

Comment conna�tre la fragmentation (sens MS-DOS) ?  La commande fsck
(e2fsck) l'indique (option -f, sur un syst�me de fichier d�mont�).

Quand est-ce un probl�me ?  Tr�s subjectif.

Comment le corriger ?

   - achat d'un nouveau disque, copie des donn�es

        (assez raisonnable apr�s quelques ann�es)

   - backup/restore du fs

   - e2fsdefrag (cette commande existe. Vaut-il la peine de tenter
                 une commande que personne ou presque n'utilise ?)

> pour stocker toute ma correspondance StarOffice. Lorsque Linux �crit sur
> une partition FAT32, cette partition est-elle sujette � la m�me maladie
> de la fragmentation que si c'est Windows qui �crit sur cette partition
> FAT32?

Oui (si le buffer-cache de Linux travaillait comme IRIX, on pourrait dire
non. Malheureusement Linux alloue au fur-et-�-mesure: il cache les
donn�es, mais n'attend pas le dernier moment pour d�cider o� les mettre,
et sauf erreur avec FAT32 il n'y a pas de pr�allocation possible de
blocs). 





--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.

Répondre à