Un système de fichiers (SGF) ou file system (fs) est chargé de gérer l’organisation
des informations mémorisées sur les périphériques
de bloc tels que les disques durs, clef USB...
L’ext (extended file system) est le premier fs pour GNU/Linux créé en
1992 par Rémy Card pour pallier les nombreuses limitations
du système de fichiers utilisé jusqu’alors,
Minix FS de Andrew Tanenbaum. La longueur maximale du nom de fichier
est de 14 caractères. Une partition n’excède pas
plus de 64 Mio...
Puis ext est remplacé par ext2, lequel
est inclus dans le noyau Linux 0.99.15 en décembre 1993.
1. EXT2
Le Second Extended File System, plus connu sous le nom ext2, utilise le bloc comme
unité de stockage.
Les caractéristiques de ext2 :
Caractéristique
|
Capacité
|
Taille maximale de fichier
|
16 Gio - 2 Tio
|
Nombre maximal de fichiers
|
Variable
|
Taille maximale du nom de fichier
|
255 caractères
|
Taille maximale de volume
|
2 Tio - 32 Tio
|
Taille maximale d’une partition
|
32 Tio
|
a. Bloc
Une partition ou un disque formatés
avec ext2 est divisé en petits groupes de secteurs appelés « blocs ».
Ces blocs sont ensuite regroupés en grandes unités appelées « groupes
de blocs ».
La taille des blocs est déterminée
pendant le formatage du disque. Ceci a un impact sur les performances,
la taille maximale d’un fichier, et la taille maximale du système
de fichiers. Les tailles de bloc couramment mises en œuvre sont
1 Kio, 2 Kio, 4 Kio et 8 Kio.
La commande badblocks permet
de rechercher des blocs défectueux sur un périphérique
de bloc, plus particulièrement une partition de disque.
Syntaxebadblocks <options> <partition>
Options nécessaires :
Option courte
|
Description
|
-n
|
Utilise le mode de non-destruction lecture/écriture (read/write).
|
-v
|
Mode verbeux (verbose).
|
-s
|
Affiche la progression en %.
|
Analyser en mode non-destruction lecture/écriture la partition /dev/sdb1 :
# badblocks -nvs /dev/sdb1 Vérification des blocs défectueux dans un mode non destructif de lecture-écriture Du bloc 0 au bloc 5242879 Vérification des blocs défectueux (test non destructif de lecture- écriture) Test en cours avec un motif aléatoire : complété Passe complétée, 0 blocs défectueux repérés. (0/0/0 erreurs)Dans cet exemple, aucun bloc n’est défectueux.
b. Superbloc
Le superbloc (superblock) contient toutes les informations relatives à la
configuration du système de fichiers comme le nombre total
d’inodes, les blocs du système de fichiers et le nombre
d’inodes disponibles, etc. Il existe plusieurs copies du superbloc
sur le disque.
La commande dumpe2fs affiche
des informations provenant du superbloc.
Syntaxedumpe2fs <option> <partition>
Option nécessaire :
Option courte
|
Description
|
-h
|
Affiche uniquement les informations de
superbloc.
|
Afficher les informations du superbloc de la partition /dev/sdb1 :
# dumpe2fs -h /dev/sdb1 dumpe2fs 1.42.5 (29-Jul-2012) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: d83eb92e-9575-4756-b606-c653c1c4702d Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 183264 Block count: 732160 Reserved block count: 36608 Free blocks: 719574 Free inodes: 183253 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 178 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 7968 Inode blocks per group: 498 Filesystem created: Sun Sep 1 16:33:34 2013 Last mount time: n/a Last write time: Sun Sep 1 16:33:34 2013 Mount count: 0 Maximum mount count: -1 Last checked: Sun Sep 1 16:33:34 2013 Check interval: 0 (<none>) Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Default directory hash: half_md4 Directory Hash Seed: b1ace00e-8575-4a7a-bbd8-6e6a0d0430ca
c. Inodes
L’inode (« index » et « node ») est une structure de données qui
contient des informations sur les fichiers stockés
comme leur créateur, leur propriétaire, leur type
d’accès... Un numéro d’inode correspond à un
fichier dans le système de fichiers. Le nombre maximum
d’inodes, et donc le nombre maximum de fichiers et de dossiers,
est défini lors de l’installation du système de
fichiers.
Les 10 premiers champs sur 13 contiennent
les adresses des 10 premiers blocs de données du fichier à raison
d’une adresse par bloc. Si les blocs sur lesquels pointent les 10
premiers champs ne sont pas suffisants alors les champs 11, 12 et
13 sont utilisés. Ils fonctionnent selon un système
d’indirection. Il existe trois niveaux d’indirection :
-
La simple indirection, utilisée par le champ 11.
-
La double indirection, utilisée par le champ 12.
-
La triple indirection, utilisée par le champ 13.
Le champ 11 est une simple indirection. Il
pointe vers un bloc d’adresses. Ce bloc d’adresses contient 256
pointeurs vers des blocs de données.
Si besoin, le système peut utiliser
le bloc 12 qui est une double indirection. Ce bloc pointe comme
le champ 11 vers un bloc d’adresses. Cependant, ce dernier ne pointe
pas vers 256 blocs de données. Il pointe vers 256 autres
blocs d’adresses, lesquels pointent vers 256 blocs de données.
Quant au 13ème champ,
il correspond à une triple indirection. Il pointe vers
un bloc de 256 adresses. Chaque bloc pointe sur un bloc de 256 adresses
qui pointent elles aussi sur 256 blocs d’adresses. Ces dernières
pointent à leur tour vers 256 blocs de données.
La taille maximale d’un fichier peut alors être
calculée en multipliant par 1024 octets le nombre de blocs
de données total : 1024 * (10 + 256ˆ1 + 256ˆ2 + 256ˆ3).
La commande stat est
le nom d’un appel système mais aussi d’une commande faisant
partie du paquetage coreutils ou GNU core utilities. Cet outil permet
d’obtenir des informations sur des fichiers ou les répertoires.
Syntaxestat <fichier>
Pas d’options pour cette commande.
Exemples avec Debian :# stat $(which ls) Fichier : « /bin/ls » Taille : 114032 Blocs : 224 ES blocs : 4096 fichier Device : fe00h/65024d Inode : 130948 Liens : 1 Accès : (0755/-rwxr-xr-x) UID : ( 0/ root) GID : ( 0/ root) Accès : 2013-09-01 12:30:44.830431016 +0200 Modi. : 2013-01-26 22:07:42.000000000 +0100 Chgt : 2013-07-22 18:32:20.398809963 +0200 Créé : -
d. Créer un système de fichiers ext2
La commande mke2fs permet
de formater une partition au format ext2 à condition qu’elle
ne soit pas montée.
Syntaxemke2fs <partition>
Pas d’options pour cette commande.
Exemple avec DebianCréer un système de fichiers ext2 sur /dev/sdb1 :
# mke2fs /dev/sdb1 mke2fs 1.42.5 (29-Jul-2012) Étiquette de système de fichiers= Type de système d’exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 183264 i-noeuds, 732160 blocs 36608 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=750780416 23 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 7968 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912 Allocation des tables de groupe : complété Écriture des tables d’i-noeuds : complété Écriture des superblocs et de l’information de comptabilité du système de fichiers : complété
2. EXT3
Développé par Stephen Tweedie,
ext3 est une évolution de ext2 qui permet de journaliser
le système de fichiers. Il est présent dans la
branche 2.4.15 du noyau Linux en novembre 2001.
Un système qui sait lire et écrire
une partition ext2 est parfaitement capable de lire et d’écrire
une partition ext3 sans la journalisation.
Les caractéristiques de ext3 sont
identiques à celles de ext2.
a. La journalisation
Un journal trace les opérations d’écriture
tant qu’elles ne sont pas terminées, et cela en vue de
garantir l’intégrité des données en cas
d’arrêt brutal.
L’intérêt est de pouvoir
plus facilement et plus rapidement récupérer les données en
cas d’arrêt brutal du système d’exploitation puisque
les partitions n’ont pas été correctement synchronisées.
Sans la journalisation, un outil de récupération
de données utilisé après un arrêt brutal
doit parcourir l’intégralité du système
de fichiers pour vérifier sa cohérence. Si la
taille du système de fichiers est importante, l’opération
peut durer longtemps avec un risque de perte de données.
b. Convertir une partition ext2 en ext3
La conversion s’effectue avec la commande tune2fs à condition que la
partition soit démontée.
Syntaxetune2fs <option> <partition>
Option nécessaire :
Option courte
|
Description
|
-j
|
Ajoute un journal.
|
Convertir /dev/sdb1 :
# tune2fs -j /dev/sdb1 tune2fs 1.42.5 (29-Jul-2012) Création de l’i-noeud du journal : complété
c. Créer un système de fichiers ext3
Vous disposez des commandes mke2fs et mkfs.ext3 :
Syntaxemke2fs <option> <partition>
Option nécessaire :
Option courte
|
Description
|
-j
|
Ajoute un journal au système
de fichiers.
|
mkfs.ext3 <partition>
Pas d’options.
Exemple avec DebianCréer un système de fichiers ext3 sur /dev/sdb1 en utilisant mke2fs :
# mke2fs -j /dev/sdb1 mke2fs 1.42.5 (29-Jul-2012) Étiquette de système de fichiers= Type de système d’exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 183264 i-noeuds, 732160 blocs 36608 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=750780416 23 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 7968 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912 Allocation des tables de groupe : complété Écriture des tables d’i-noeuds : complété Création du journal (16384 blocs) : complété Écriture des superblocs et de l’information de comptabilité du système de fichiers : complétéCréer un système de fichiers ext3 sur /dev/sdb1 en utilisant mkfs.ext3 :
# mkfs.ext3 /dev/sdb1 mke2fs 1.42.5 (29-Jul-2012) Étiquette de système de fichiers= Type de système d’exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 183264 i-noeuds, 732160 blocs 36608 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=750780416 23 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 7968 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912 Allocation des tables de groupe : complété Écriture des tables d’i-noeuds : complété Création du journal (16384 blocs) : complété Écriture des superblocs et de l’information de comptabilité du système de fichiers : complété
3. EXT4
Ext4 garde une compatibilité avec
son prédécesseur ext3. Il est considéré comme
une étape intermédiaire en attendant une nouvelle
génération de système de fichiers. Il
est inclus dans le noyau Linux 2.6.19 (29 novembre 2006). Depuis
la version 2.6.28 (24 décembre 2008) du noyau, ext4 est
considéré comme stable.
Les caractéristiques de ext4 :
Caractéristiques
|
Capacités
|
Taille maximale de fichier
|
16 Tio
|
Nombre maximal de fichiers
|
4 milliards
|
Taille maximale du nom de fichier
|
256 octets
|
Taille maximale de volume
|
1 Eio (limité à 16 Tio
par e2fsprogs)
|
La fonctionnalité majeure de ext4
est l’allocation par « extent » qui
permet la pré-allocation d’une zone contiguë pour
un fichier afin de minimiser la fragmentation. Elle est
active par défaut depuis le noyau Linux 2.6.23. Auparavant,
elle devait être explicitement indiquée lors du
montage de la partition comme ceci :
# mount /dev/sda1 /mnt/point -t ext4dev -o extents
a. Convertir une partition ext3 en ext4
La conversion s’effectue avec la commande tune2fs à condition que la
partition soit démontée.
Syntaxetune2fs <option> <partition>
Option nécessaire :
Option courte
|
Description
|
-O
|
Supprime les caractéristiques
indiquées du système de fichiers.
uninit_bg permet
au noyau d’initialiser la table des blocs et des inodes.
dir_index permet
d’utiliser des arbres binaires hachés afin d’accélérer
la recherche dans les répertoires de grande taille.
|
Convertir en ext4 la partition /dev/sdb1 :
# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1 tune2fs 1.42.5 (29-Jul-2012)
b. Créer un système de fichiers ext4
Vous disposez des commandes mke2fs et mkfs.ext4 :
Syntaxemke2fs <option> <partition>
Option nécessaire :
Option courte
|
Description
|
-t
|
Indique le type de système de
fichiers.
Par exemple -t
ext4.
|
mkfs.ext4 <partition>
Pas d’options pour cette commande.
Exemple avec DebianCréer un système de fichiers ext4 sur /dev/sdb1 en utilisant mke2fs :
# mke2fs -t ext4 /dev/sdb1 mke2fs 1.42.5 (29-Jul-2012) Étiquette de système de fichiers= Type de système d’exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 183264 i-noeuds, 732160 blocs 36608 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=750780416 23 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 7968 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912 Allocation des tables de groupe : complété Écriture des tables d’i-noeuds : complété Création du journal (16384 blocs) : complété Écriture des superblocs et de l’information de comptabilité du système de fichiers : complétéCréer un système de fichiers ext4 sur /dev/sdb1 en utilisant mkfs.ext4 :
# mkfs.ext4 /dev/sdb1 mke2fs 1.42.5 (29-Jul-2012) Étiquette de système de fichiers= Type de système d’exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 183264 i-noeuds, 732160 blocs 36608 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=750780416 23 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 7968 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912 Allocation des tables de groupe : complété Écriture des tables d’i-noeuds : complété Création du journal (16384 blocs) : complété Écriture des superblocs et de l’information de comptabilité du système de fichiers : complété
Aucun commentaire :
Enregistrer un commentaire