# Ext3

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

Le premier à avoir annoncé travailler sur une amélioration de ext2 est Stephen Tweedie (en), qui annonce le 17 février 1999 avoir ajouté un fichier journal à ext2.
ext3 passe finalement dans la branche 2.4.15 de Linux en novembre 2001.
Ses successeurs désignés sont ext4 et à terme Btrfs.

## Description

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

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.

## Défragmentation

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

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.
Un système de fichiers ext3 est créé dans une partition or le format de table de partition géré par fdisk ne permet pas de créer des partitions de plus de 2 Tio (2^32*512). Utilisez la commande parted et le format de table de partitions GPT 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. 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.