H) Systeme de fichiers

Created samedi 27 février 2016

Système de fichiers

En informatique, un système de fichiers (FS ou FileSystem en anglais) est une méthode d'organisation des données persistantes sur un média durable (disque dur, DVD, clé USB, etc.).
Le système de fichiers offre à l'utilisateur une vue abstraite sur ses données.
L'unité de stockage est le fichier, qui est une séquence d'octets ; les fichiers sont groupés dans des dossiers ; les dossiers sont organisés en arborescence (il y a un dossier racine et des sous-dossiers).
Chaque objet (dossier, fichier, etc.) est identifié par un nom et possède des propriétés qui dépendent dusystème de fichier (notamment la protection d'accès en lecture, en écriture ou des listes de dates).
Ce nom est une chaîne de caractères de taille parfois limitée dans laquelle certains caractères peuvent être interdits (par exemple : ":" ainsi que "/" ou "\" selon les systèmes de fichiers).
Via un système de fichiers, l'organisation apparente ne change pas, mais dans le moteur il peut y avoir divers fonctionnements (indexation, résistance aux pannes, sécurité, etc...).

Les systèmes de fichiers peuvent inclure la compression ou le chiffrement automatique des données, une gestion plus ou moins fine des droits d'accès aux fichiers, et une journalisation des écritures (pour la robustesse, en cas de défaillance du système).
De plus, certains systèmes de fichiers peuvent s'étendre sur un réseau entier, comme par exemple NFS ou SMB / CIFS.
Il existe d'autres façons d'organiser les données, par exemple les systèmes de gestion de base de données(notamment base de données relationnelle) et les fichiers indexés.
Voici des exemples de systèmes de fichiers :

FAT

C'est un système très "basique", composé de 3 parties (je fais abstraction du secteur de boot qui est commun à tout système) :

Un dossier est un ensemble d'entrées de 32 octets, dans lequel on trouve diverses informations dont le n° du 1er cluster.

A partir de ce n°, le système d'exploitation va lire la FAT, et à l'adresse correspondant à ce n° de cluster, il trouve un code qui lui indique soit que le fichier n'a pas d'autres clusters, soit le n° du n° de cluster suivant, et ainsi de suite.

Les partitions FAT16 codant les n° de clusters sur 16 bits, le nombre maximal de clusters est donc limité
à 2^16 = 65 536.
Comme un cluster ne peut dépasser (dans les anciens DOS, Windows 95 et Windows 98) 32 768 octets, la taille maximale d'une partition FAT16 est donc :
= 65536x32768
= 2147483648 octets
= 2 Go

Avec Windows XP ou ultérieur, en utilisant des clusters de 64 ko (au lieu de 32ko), la taille maximale d'une partition FAT16
(qui ne sera accessible que par ce systèmes) est :
= 4 Go

FAT32

Les partitions FAT32 (reconnues par tous les OS) codant les n° de clusters sur 32 bits, le nombremaximal de clusters est donc limité à 2^32 = 4 294 967 296.
La taille maximale THÉORIQUE d'une partition FAT32 est donc :
= 2^32 x 32768
= 4 294 967 296 x 32768
= 140 737 488 355 328 octets
= 128 To

En réalité, les n° de clusters sont codés seulement sur 28 bits, les 4 bits de poids forts étant réservés.
= 2^28 x 32768
= 268 435 456 x 32768
De plus, certains n° de clusters sont réservés (n° de clusters fictifs indiquant cluster invalide, vide, ...), ce nombre maximal tombe à 268 435 445.
Donc la taille maximale EFFECTIVE THÉORIQUE d'une partition FAT32 est donc :
= 268 435 445 x 32768
= 8 796 092 661 760 octets
= 8 To

Il y a enfin une limitation assez gênante dans FAT32 : 4 Go maximum par fichier.
Actuellement, via un OS moderne qui utilise l'UEFI, une partition FAT32 est utilisée pour le démarrage, ou idem si on souhaite installer un OS depuis une clé USB.
L'image d'installation ne doit donc pas dépasser 4 Go, autrement ça ne rentre pas.
Heureusement même avec Windows 8.1 x64, le fichier "install.wim" ne fait que 3,2 Go environ, ce qui fonctionne.

C'est également pour cette raison, que vous ne pouvez pas copier un Home:Technologies du PC:BlueRay ou un DVD en une seule fois.

NTFS

C'est un système de fichier SÉCURISÉ et JOURNALISÉ, tout comme EXT3/EXT4 du monde Linux, ou HFS+ sur Mac.
Cela veut dire qu'il possède une procédure de restauration du système de fichiers permettant de
reconstruire rapidement les données du disque après "plantage" du système.

Ce système de fichiers permet :

Ces noms utilisent UNICODE, ce qui permet la conservation des noms quand les fichiers sont copiés vers d'autres systèmes.

Etant compatible POSIX, NTFS sait distinguer minuscules/majuscules et mémorise la dernière ouverture de fichier (même si en pratique, la casse n'a pas d'importance dans Windows).

Nota bene

La MFT ("Master File Table", qui est un peu à NTFS ce que la table FAT est à une partition FAT) possède une copie, mais située en plein milieu de la partition, et susceptible de se déplacer, en fonction de l'état physique du disque ou SSD.
Le secteur de boot est également dupliqué (à la fin de la partition)

En ce qui concerne les partitions NTFS, il n'y pas vraiment de limite, puisque leur taille maximale est en
théorie :
= 2^64 octets
= 16 Eo (Exaoctets).

Ext2

Ext2 ou Ext2fs (en anglais, second extended file system) est le système de fichiers historique de GNU/Linux. Il a été créé à l'origine par Rémy Card et est basé sur l'extended file system. Il a également été très largement influencé par le FFS.

La grand particularité de Ext2 est qu'il ne fragmente que très peu ! Contrairement au systèmes de fichiers FAT ou NTFS (tous deux utilisé par Windows), Ext2 range ses données de manière "intelligente".

Les performances n'en sont qu'améliorées, et il n'est par conséquent pas toujours nécessaire d'utiliser un outil de défragmentation, ou plus rarement.
Plus tard, une extension a été ajoutée qui a permis de journaliser le système de fichiers. Celle-ci a fort logiquement été nommée ext3. Notons qu'un système qui ne connaît que l'ext2 est parfaitement capable de lire et d'écrire de l'ext3, mais il n'y aura pas alors de journalisation. La différence entre les deux systèmes résidant dans l'adjonction d'une zone journal et la suppression des données, rendant la récupération de celle ci impossible sur le FS ext3. Il suffit de cocher une option dans son noyau et de le recompiler pour bénéficier du support de ext3. Pour pouvoir passer sa partition ext2 en ext3, cela ce fait à l'aide de la commande tune2fs.

Ext3

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 fichier 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 qui est un autre système de fichier journalisé est qu'il permet l'utilisation du logiciel dump, abondament utilisé en entreprise pour les sauvegardes.

Ext4

Il est basé sur la notion d'extent.
C'est une zone contiguë (qui peut atteindre plusieurs centaines de Mo) qui est réservée chaque fois qu'un fichier est enregistré sur le disque dur. Cela permet, en cas d'écriture ultérieure sur le fichier, d'ajouter les nouvelles données dans l'extent au lieu de devoir écrire dans un autre zone du disque dur (ce qui augmente la fragmentation).
Les gros fichiers sont ainsi stockés de façon bien plus efficace et rationnelle.
Pour les petits fichiers Ext4 utilise une astuce puisqu'il stocke les données directement dans le système d'extent lui-même sans avoir à allouer un bloc mémoire séparé.
L'ext4 permet de gérer les volumes d'une taille allant jusqu'à 1024 pébioctets.
Le système de fichiers ext4 a une compatibilité descendante avec ext3. C'est à dire, qu'une partition ext3 peut toujours être montée comme ext4 (en utilisant le type de système de fichiers "ext4" lors du montage).

L'inverse peut être possible, à la condition que la partition ext4 n'ait jamais utilisé l'allocation par extents pour sauvegarder des fichiers, mais l'allocation binaire comprise par ext3. Cette capacité de ext4 d'utiliser les formats de ext3 existe pour faciliter la conversion des partitions ext3 vers ext4.

Limitation

Il existe une limitation présente dans la plupart des systèmes de fichiers : la limite des 255 caractères par fichier, voire même par chemin d'accès !
Exemple : le chemin d'accès suivant dépasse la limite des 255 caractères (et encore il a fallu bidouiller un
peu, sinon il ne voulait pas) : à cause de cela, les fichiers dedans sont impossibles à renommer, sauf si on
arrive à faire renommer avec un nom qui au total fait moins que 255 caractères.
Exemple avec le NTFS et Windows 7 x64 (existe encore avec Windows 8) :
En voulant créer un dossier supplémentaire :

En voulant créer un nouveau fichier texte, il se limite lui-même :

Nous arrivons bientot ici au maximum de caractères utilisable.
De même quand on souhaite renommer ce fichier, en tapant le texte ça ne veut pas et limite le nom :

Et enfin en voulant renommer :

Parfois, il est même obligatoire de devoir renommer (raccourcir) un dossier parent afin de pouvoir enfin renommer un fichier qui est dedans.

Avec Linux et le système de fichiers EXT4, la limite est beaucoup moins contraignante :
En effet, j'ai pu créer avec succès des noms de dossiers donnant un chemin total dépassant les 300 caractères, et il n'y a pas eu de souci.

Toutefois, quelle que soit la profondeur du chemin, le nom de fichier seul est limité à 256 caractères (255 pour EXT2 et 3).
C'est donc beaucoup moins gênant, même si la limite existe.

Attention aussi à une chose : même si les FS EXT3 et 4 fragmentent moins facilement, si vous les remplissez fortement et avec un usage intensif, ça va fragmenter évidemment.
Une autre limitation existe : celle des volumes de plus de 2,2 To
En effet, il existe maintenant des disques dur de 3 et 4 To, et puis si on monte du RAID cela peut vitedoubler, tripler, etc... Il n'est donc pas difficile d'avoir un volume dépassant largement les 2,2 To.

Cela pose problème pour le système MBR (Master Boot Record) utilisé jusqu'à maintenant avec un BIOS.
La MBR impose plusieurs limitations : au maximum 4 partitions principales (autant qu'on veut de logiques si on mange 1 principale pour créer une étendue) + la limite de 2,2 To maximum pour une partition.
Via MBR, il n'est donc pas possible d'utiliser 1 seule partition sur un disque dur de plus de 2,2 To.

Néanmoins cela change avec GPT (GUID Partition Table), déjà utilisé sur Mac, disponible sur Linux et disponible sur un Windows récent (Vista, 7, 8 et 8.1).
Ce GPT permet de créer des partitions jusqu'à parler de zettaoctets (milliards de To).
Néanmoins, si l'on veut utiliser le GPT sur un volume système, ce qui peut arriver si l'OS est à installer dessus, cela pose de nouvelles limitations :
En fait, un BIOS d'une carte mère ne sait démarrer que sur un MBR et ne connait pas le GPT.
Il faudrait un EFI à la place du BIOS.
Linux arrive visiblement à contourner le problème (à vérifier, je n'ai pas de tels volumes pour tester).
Mac lui avait déjà prévu ça et utilise uniquement l'EFI sur toutes ses cartes mères.
Dans le monde PC, l'UEFI est désormais omniprésent sur la grande majorité des PC neufs, et obligatoire pour avoir la certification Windows 8.
Donc pas de souci, on peut utiliser Vista, Windows 7, 8 ou 8.1 en UEFI, Linux, ou encore Mac OS.
Comme déjà indiqué, il reste à faire attention à une chose :

EFI 32 bits = OS 32 bits
EFI 64 bits = OS 64 bits

Aide pour les unités de mesure




Backlinks: Home:1) Technologies du PC