ext3

système de fichiers

ext3
Développeur Stephen Tweedie
Nom anglais Extended file system 3
Introduction novembre 2001
(Linux 2.4.15)
Identificateur de partition 0x83 (MBR)
Structure
Contenu des répertoires tableau, arbre h avec index de répertoires
Allocation de fichiers champs de bits (espace libre), table (metadata)
Mauvais blocs table
Limitations
Taille maximale de fichier 16 Gio – 2 Tio
Nombre maximal de fichiers variable[1]
Taille maximale du nom de fichiers 255 octets (soit jusqu'à 63 à 255 points de code en utf-8, et exactement 255 caractères si seuls des caractères ascii sont utilisés).
Taille maximale de volume 2 Tio – 32 Tio
Caractères autorisés dans les noms de fichiers tous les caractères Unicode sauf NUL et '/'
Fonctionnalités
Dates enregistrées modification (mtime), modification d'attributs (ctime), accès (atime)
Plage de dates 14 décembre 1901 à 18 janvier 2038
Attributs no-atime, append-only, synchronous-write, no-dump,
h-tree (directory), immutable, journal, secure-delete, top (directory), allow-undelete
Permissions droits Unix, ACLs
Compression intégrée non
Chiffrement intégré Linux, BSD, Windows

ext3 est le nom d'un système de fichiers utilisé notamment par GNU/Linux. C'est une évolution de ext2, le précédent système de fichiers utilisé par défaut par de nombreuses distributions GNU/Linux.

Histoire modifier

Le premier à avoir annoncé travailler sur une amélioration de ext2 est Stephen Tweedie (en), qui annonce le avoir ajouté un fichier journal à ext2[2].

ext3 passe finalement dans la branche 2.4.15 de Linux en novembre 2001[3].

Ses successeurs désignés sont ext4 et à terme Btrfs[4].

Description modifier

ext3 est une évolution de ext2 et a pour principale différence l'utilisation d'un fichier journal, lui permettant ainsi d'éviter la longue phase de récupération lors d'un arrêt brutal de la machine.

Bien que ses performances soient moins appréciées que celles de certains de ses compétiteurs, comme ReiserFS ou XFS, il a l'avantage majeur de pouvoir être utilisé à partir d'une partition ext2, sans avoir à sauvegarder et à restaurer des données (un système de fichiers ext3 peut être monté et utilisé comme un système de fichiers ext2). Tous les utilitaires de maintenance pour les systèmes de fichiers ext2, comme fsck, peuvent également être utilisés avec ext3.

Son avantage sur ReiserFS, lui aussi journalisé, est la possibilité de mettre en œuvre le logiciel dump, abondamment utilisé en entreprise pour les sauvegardes.

Fragmentation modifier

ext3 alloue les blocs libres juste à côté des autres blocs utilisés par le fichier, ce qui a pour effet de minimiser l'espace physique entre les blocs.

Beaucoup moins assujetti, il est néanmoins par définition fragmenté, c'est pourquoi son successeur ext4 inclut un utilitaire de défragmentation natif travaillant au niveau des bits et gérant la défragmentation à chaud[5].

Défragmentation modifier

Officiellement, il n'existe pas d'utilitaire de défragmentation qui travaille au niveau des bits sur une ext3. Des utilitaires de défragmentation existent mais requièrent un démontage puis une conversion vers une ext2. Ces utilitaires sont à utiliser avec une extrême prudence car ils peuvent détruire des données.

Un utilitaire de défragmentation travaille au niveau des bits : e2defrag et deux au niveau de la structure : Shake et defrag.

Limitation modifier

La taille maximale d'une partition ext3 dépend de la taille de bloc (16 Tio pour un bloc de 4 Kio). La taille de bloc dépend du microprocesseur utilisé. Seuls les processeurs Alpha supportent une taille de bloc de 8 Kio portant alors la limite de la taille maximale d'une partition ext3 à 32 Tio.

Notez que sous Linux 2.6 la limite effective de la taille maximale d'une partition ext3 tombe à 8 Tio (hors processeur Alpha). En effet le nombre de bloc du système de fichiers étant stocké dans un nombre signé de 32 bits il ne peut y en avoir au plus que deux gigas blocs de 4 Kio soit 8 Tio[6].

Un système de fichiers ext3 est créé dans une partition or le format de table de partition géré par fdisk[7] ne permet pas de créer des partitions de plus de 2 Tio (2^32*512)[8]. Utilisez la commande parted et le format de table de partitions GPT[9] pour s'affranchir de cette limite de 2 Tio.

Mais si le disque est de type SCSI la taille maximale de ce dernier dépend de la longueur de l'adresse de bloc du protocole SCSI. Si l'adresse est exprimée sur 16 bits la partition ne peut dépasser 2 Gio. Sur 32 bits la limite est de 2 Tio et seule une adresse de bloc SCSI exprimée sur 64 bits permet d'adresser un volume de plus de 2 Tio[10]. Or tous les périphériques, contrôleurs (HBA) ou même les pilotes SCSI (et les Systèmes d'exploitation) ne supportent pas un adressage SCSI sur 64 bits. Dans ce cas c'est la plus petite largeur d'adresse SCSI de la chaîne qui dimensionne la taille maximale d'une partition. Depuis le noyau Linux 2.6 l'OS gère les adresses SCSI de 64 bits. Cela ne veut pas dire que tous les pilotes SCSI de Linux en fassent autant. C'est pourquoi quand on utilise une baie de disques SCSI RAID on est parfois obligé de découper les volumes RAID en volumes d'au plus 2 Tio. On peut alors les agréger avec une gestion par volumes logiques (LVM) jusqu'à la taille maximale qu'un volume ext3 peut avoir.

Notes et références modifier

  1. Le nombre maximum d'inodes (et ainsi le nombre maximum de fichiers et répertoires) est défini à l'installation du système de fichiers. Si V est la taille du volume en octets, alors le nombre maximum par défaut d'inodes est donné par V/213, et le minimum par V/223.
  2. (en) Re: fsync on large files
  3. (en) 2.4.15-final
  4. (en) Theodore Tso, « Btrfs mainline plans », (consulté le )
  5. (en) « Ext4 - Linux Kernel Newbies »,
  6. (en) « Ext3 for large filesystems », LWN,
  7. (en) « fdisk man page »
  8. (en) « Linux Creating a Partition Size Larger than 2TB »
  9. (en) GUID Partition Table
  10. (en) « Red Hat Enterprise Linux AS 4 Update 1 Release Notes », Red Hat, (consulté le )

Voir aussi modifier

Articles connexes modifier

Liens externes modifier