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.
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 |
modifier |
Histoire
modifierLe 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].
Description
modifierext3 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
modifierext3 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
modifierOfficiellement, 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
modifierLa 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- 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.
- (en) Re: fsync on large files
- (en) 2.4.15-final
- (en) Theodore Tso, « Btrfs mainline plans », (consulté le )
- (en) « Ext4 - Linux Kernel Newbies »,
- (en) « Ext3 for large filesystems », LWN,
- (en) « fdisk man page »
- (en) « Linux Creating a Partition Size Larger than 2TB »
- (en) GUID Partition Table
- (en) « Red Hat Enterprise Linux AS 4 Update 1 Release Notes », Red Hat, (consulté le )