Systèmes de fichiers FAT, FAT16, FAT32. Quelle est la différence entre les systèmes de fichiers FAT32, NTFS et exFAT FAT

Chaque fois que j'utilise FatFs, je pense que ce serait bien de comprendre comment tout fonctionne à l'intérieur. J'ai longtemps reporté cette question, et finalement la glace s'est brisée. Ainsi, l'objectif global est de fumer les cartes mémoire, si cela fonctionne en détail, l'objectif actuel est de gérer le système de fichiers.

Je dirai tout de suite que je n'avais aucun objectif d'écrire mon propre pilote ou d'en comprendre les subtilités en détail, j'étais juste intéressé. La tâche est assez simple à comprendre, il n'y aura donc pas de « codes » ici.

Ainsi, la première chose que nous devons comprendre est que lorsque nous communiquons directement avec une carte mémoire, nous pouvons lire ou écrire 512 octets, aucune autre action n'est donnée. Étant donné que nous copions et supprimons constamment des fichiers et que les tailles des fichiers sont toujours différentes, des zones vides apparaîtront sur la carte mélangées à celles enregistrées. Pour que l'utilisateur n'ait pas à se soucier du placement des données, il existe une couche qui s'occupe de ces préoccupations : c'est le système de fichiers.

Comme mentionné ci-dessus, vous ne pouvez écrire et lire que par multiples de 512 octets, c'est-à-dire 1 secteur. Il existe également un concept : un cluster est simplement constitué de plusieurs secteurs, par exemple, si la taille du cluster est de 16 Ko, cela signifie qu'il a 16 000/512 = 31,25, ou plutôt 32 secteurs, et la taille réelle du cluster est de 16 384 octets. Tous les fichiers occupent une taille qui est un multiple de la taille du cluster. Même si le fichier fait 1 Ko et que le cluster fait 16 Ko, le fichier occupera la totalité des 16 Ko.

Il serait logique de créer de petits clusters, mais la limitation du nombre maximum de fichiers et de leur taille entre alors en jeu. FAT16 fonctionne sur des données 16 bits, vous ne pouvez donc pas stocker plus de 2 ^ 16 clusters. Par conséquent, plus leur taille est petite, plus l'espace réservé aux petits fichiers est utilisé efficacement, mais moins d'informations peuvent être entassées sur le disque. Et vice versa, plus la taille est grande, plus vous pouvez entasser d’informations, mais moins l’espace réservé aux petits fichiers est utilisé efficacement. La taille maximale du cluster est de 64 Ko, donc le maximum pour FAT16 est de 64 Ko*2^16 = 4 Go.

Données initiales : il existe une carte mémoire micro SD de 1 Go. Étiqueté MYDISK, entièrement formaté, taille de cluster 16 Ko.

Vous aurez besoin d'un éditeur Hex, mais aucun éditeur ne fonctionnera ; vous en aurez besoin d'un qui puisse afficher l'intégralité du disque, et pas seulement les fichiers sur le disque. D'après ce que j'ai pu trouver : WinHex est le plus adapté, mais payant ; HxD est simple, gratuit, mais je n'ai pas réussi à enregistrer les modifications sur le disque ; DMDE est un peu peu convivial, gratuit et vous permet d'enregistrer les modifications. En général, j'ai opté pour HxD.

Tout d’abord, il convient de considérer la structure de FAT16, l’image montre dans quel ordre se trouvent les différentes parties du système de fichiers.

Toutes les informations de service sont stockées dans le secteur de démarrage. La zone FAT stocke des informations sur la manière dont les données des fichiers se trouvent sur le disque. Le répertoire racine contient des informations sur les fichiers qui se trouvent à la racine du disque. La zone de données contient les informations contenues dans les fichiers. Toutes les zones se succèdent strictement, c'est-à-dire Après le secteur de démarrage, la zone FAT commence immédiatement. Regardons les détails ci-dessous.

Tâche : comprendre le principe selon lequel les noms de fichiers et leur contenu sont organisés. Commençons donc par rechercher dans le répertoire racine pour comprendre quels fichiers nous avons disponibles. Les données de la zone de démarrage nous y aideront.

Les données les plus intéressantes sont présentées dans le tableau

La première chose dont nous avons besoin est de connaître la taille de la zone de démarrage. Nous regardons l'adresse 0x0E et voyons que 4 secteurs sont alloués pour la zone de démarrage, c'est-à-dire La zone FAT commence à l'adresse 4*512 = 0x800.

Le nombre de tables FAT peut être déterminé par l'adresse 0x10 de la zone de démarrage. Dans notre exemple, il y en a deux, pourquoi deux, car chaque table est dupliquée comme table de sauvegarde, afin qu'en cas de panne les données puissent être restaurées. La taille de la table est spécifiée à l'adresse 0x16. Ainsi, la taille du fichier est de 512*2*0xEE = 0x3B800, et le répertoire racine commence à l'adresse : 0x800 + 0x3B800 = 0x3C000

Dans le répertoire racine, tous les éléments sont divisés en 32 octets. Le premier élément est le nom du volume, mais les éléments suivants sont des fichiers et des dossiers. Si le nom du fichier commence par 0xE5, cela signifie que le fichier a été supprimé. Si le nom commence par 0x00, cela signifie que le fichier précédent était le dernier.

J'ai trouvé une structure de répertoire racine plutôt intéressante. La carte a été entièrement formatée, puis 2 fichiers texte ont été créés, renommés MyFile.txt et BigFile.txt.

Comme vous pouvez le constater, en plus de mes deux dossiers, un tas de dossiers de gauche ont été créés, dont on ne peut que deviner l'origine.

La chose la plus importante que l'on puisse souligner ici est l'adresse du premier cluster à partir duquel commencent les données de notre fichier. L'adresse est toujours située au décalage 0x1A. Par exemple, le nom de notre fichier MyFile.txt se situe à l'adresse 0x3C100, on y ajoute 0x1A, on y voit le numéro du premier cluster. = 0x0002 c'est à dire deuxième grappe. Pour le fichier BigFile.txt, les données démarrent à partir du troisième cluster.

Également dans le répertoire racine, vous pouvez également connaître la date et l'heure de la dernière modification du fichier ; cette question ne m'intéressait pas beaucoup, je vais donc la contourner. La dernière chose utile que le répertoire racine peut vous indiquer est sa taille afin que nous puissions trouver où commencent les données.

La taille est indiquée dans le secteur de démarrage à l'adresse 0x11(2octets) = 0x0200*32 = 0x4000 soit 16384 octets.

Ajoutons sa taille à l'adresse racine : 3C000 + 4000 = 40000 est l'adresse du premier cluster de données, mais nous avons besoin du second pour trouver MyFile.txt. Le nombre de secteurs dans le cluster est de 32, taille du cluster = 32*512 = 16384 ou 0x4000, ajoutons donc à l'adresse du premier cluster sa taille, soit En théorie, le deuxième cluster devrait démarrer à 0x44000.

On va à l'adresse 0x44000 et on voit que les données appartiennent à BigFile.txt (c'est juste des ordures)

Il s'avère qu'il y a une petite subtilité, la numérotation des clusters commence à partir de la seconde, on ne sait pas pourquoi cela a été fait, mais c'est un fait, c'est-à-dire en fait, nous sommes passés au troisième groupe. Revenons en arrière sur un cluster pour adresser 0x40000 et voyons les données attendues.

Maintenant la question se pose. Pourquoi avons-nous besoin d’une table FAT ? Le fait est que les données peuvent être fragmentées, c'est-à-dire Le début du fichier peut se trouver dans un cluster et la fin dans un cluster complètement différent. De plus, il peut s'agir de clusters complètement différents. Il peut y en avoir plusieurs, dispersés dans différentes zones de données. La table FAT est une sorte de carte qui nous indique comment nous déplacer entre les clusters.

Donnons un exemple : un tas de déchets aléatoires sont insérés dans le fichier BigFile.txt afin qu'il occupe non pas un cluster, mais plusieurs. Nous allons là où commence la table FAT et examinons son contenu.

Les huit premiers octets 0xF8FFFFFF sont l'identifiant du début de la table fat. Viennent ensuite 2 octets qui font référence à MyFile.txt ; le fait que 0xFFFF y soit écrit signifie que le fichier n'occupe qu'un seul cluster. Mais le fichier suivant BigFile.txt commence dans le troisième cluster, on s'en souvient du répertoire racine, continue dans le quatrième, puis passe à 5,6,7... et se termine à 12, c'est à dire occupe 10 grappes.

Vérifions si c'est vraiment le cas. Le fichier pèse 163 Ko, soit occupe 163000/(32*512) = 9,9 clusters, ce qui est assez similaire à ce qui est attendu. Répétons encore une fois qu'un élément de la table FAT prend 2 octets, c'est-à-dire 16 bits, d'où le nom FAT16. En conséquence, l'adresse maximale est 0xFFFF, c'est-à-dire volume maximum pour la taille du cluster FAT16 0xFFFF*.

Passons à FAT32. La partie chargement a été légèrement modifiée.

Il y a des changements fondamentaux. Le nom du système de fichiers a été déplacé vers l'adresse 0x52, la taille de la racine est désormais ignorée. La zone de données se trouve juste derrière les tables FAT, le répertoire racine se trouve à l'intérieur de la zone de données. De plus, le répertoire racine n'a pas de taille fixe.

L'adresse de la zone de données est calculée :
taille du secteur de démarrage + table FAT, dans mon cas, il s'est avéré :
746496 + (3821056 * 2) = 0x800000

L'adresse du répertoire racine est calculée :
(numéro du premier cluster du répertoire racine - 2) * taille du cluster + adresse du début de la zone de données,
ceux. dans cet exemple, cela coïncidera avec le début de la zone de données.

Comme auparavant, les données à la racine occupent 32 octets, comme auparavant, les fichiers magiques « supprimés », je suppose que ce sont des fichiers temporaires du bloc-notes.

Mais le début du premier cluster dans MYFILE.txt est désormais déterminé par deux octets, le plus élevé au décalage 0x14, le plus bas comme avant 1A. Par conséquent, le numéro du premier cluster de données du fichier sera :
8000A0 + 0x14 = 0x8000B4 - octet de poids fort
8000A0 + 0x1A = 0x8000BA - octet de poids faible
Dans mon cas, la carte ne contenait qu'un seul fichier, il s'agit donc du troisième cluster.

La table FAT est recherchée comme dans le cas précédent, seulement maintenant les éléments occupent 4 octets, d'où le nom FAT32. L’idéologie de la disposition des éléments est exactement la même que dans le cas précédent.

Choses utiles pour la table
F8 FF FF F0 - premier cluster
FF FF FF 0F - dernier cluster
FF FF FF F7 - cluster endommagé

Où sont les données ?
début de la zone de données + taille du cluster * (numéro de cluster racine - 1)
= 0x800000 + (2*4096) = 0x801000

J'espère qu'en termes généraux, c'est devenu clair, il semble qu'il n'y ait rien de surnaturel. Ceux qui lisent et répètent peuvent manger un cookie :)

En plus de toutes les autres tâches, il remplit son objectif principal : organiser le travail avec les données selon une certaine structure. Le système de fichiers est utilisé à ces fins. Qu'est-ce que FS et ce qu'il peut être, ainsi que d'autres informations à son sujet seront présentées ci-dessous.

description générale

Le système de fichiers fait partie du système d'exploitation qui est chargé de placer, stocker, supprimer des informations sur le support, de fournir ces informations aux utilisateurs et aux applications et d'assurer leur utilisation en toute sécurité. De plus, il aide à la récupération des données en cas de panne matérielle ou logicielle. C'est pourquoi le système de fichiers est si important. Qu’est-ce que FS et que peut-il être ? Il en existe plusieurs types :

Pour les disques durs, c’est-à-dire les périphériques à accès aléatoire ;

Pour les bandes magnétiques, c'est-à-dire les appareils à accès séquentiel ;

Pour supports optiques ;

Systèmes virtuels ;

Systèmes de réseau.5

L'unité logique de stockage des données dans un système de fichiers est un fichier, c'est-à-dire une collection ordonnée de données portant un nom spécifique. Toutes les données utilisées par le système d'exploitation sont présentées sous forme de fichiers : programmes, images, textes, musiques, vidéos, mais aussi pilotes, bibliothèques, etc. Chacun de ces éléments a un nom, un type, une extension, des attributs et une taille. Vous le savez maintenant, le système de fichiers est un ensemble de ces éléments, ainsi que des moyens de travailler avec eux. Selon la forme sous laquelle il est utilisé et les principes qui lui sont applicables, plusieurs grands types de FS peuvent être distingués.

Approche logicielle

Donc, si nous considérons un système de fichiers (qu'est-ce que c'est et comment l'utiliser), il convient de noter qu'il s'agit d'une structure à plusieurs niveaux, à son niveau supérieur se trouve un commutateur de système de fichiers qui fournit une interface entre le système et une application spécifique. Il convertit les requêtes en fichiers dans un format perçu par le niveau suivant : les pilotes. Ils accèdent à leur tour à des pilotes de périphériques spécifiques, qui stockent les informations nécessaires.

Les applications client-serveur ont des exigences assez élevées en matière de performances du système de fichiers. Les systèmes modernes sont conçus pour fournir un accès efficace, prendre en charge les médias de gros volumes, protéger les données contre tout accès non autorisé et maintenir l'intégrité des informations.

Système de fichiers FAT

Ce type a été développé en 1977 par Bill Gates et Mark McDonald. Il était initialement utilisé sous OS 86-DOS. Si nous parlons de ce qu'est le système de fichiers FAT, il convient de noter qu'au départ, il n'était pas capable de prendre en charge les disques durs, mais ne fonctionnait qu'avec des supports flexibles jusqu'à 1 mégaoctet. Désormais, cette limitation n'est plus d'actualité et ce FS a été utilisé par Microsoft pour MS-DOS 1.0 et les versions ultérieures. FAT utilise certaines conventions de dénomination de fichiers :

Le nom doit commencer par une lettre ou un chiffre, et le nom lui-même peut contenir n'importe quel caractère ASCII, en plus d'un espace et d'éléments spéciaux ;

Le nom ne doit pas comporter plus de 8 caractères, suivis d'un point, puis de l'extension, composée de trois lettres ;

Les noms de fichiers peuvent utiliser n'importe quelle casse et ne sont ni distingués ni conservés.

Étant donné que FAT a été initialement conçu pour le système d'exploitation DOS mono-utilisateur, il ne prévoyait pas le stockage de données sur le propriétaire ou les autorisations d'accès. À l'heure actuelle, ce système de fichiers est le plus répandu, la plupart des gens le supportent à un degré ou à un autre, et sa polyvalence permet de l'utiliser sur des volumes qui fonctionnent avec différents systèmes d'exploitation. Il s'agit d'un simple FS qui n'est pas capable d'empêcher la corruption de fichiers due à un arrêt incorrect de l'ordinateur. Les systèmes d'exploitation fonctionnant sur cette base incluent des utilitaires spéciaux qui vérifient la structure et corrigent les incohérences des fichiers.

Système de fichiers NTFS

Ce FS est le plus préférable pour travailler avec le système d'exploitation Windows NT, car il a été développé spécifiquement pour cela. Le système d'exploitation comprend un utilitaire de conversion qui convertit les volumes FAT et HPFS en volumes NTFS. Si nous parlons de ce qu'est le système de fichiers NTFS, il convient de noter qu'il a considérablement étendu les capacités de contrôle d'accès à certains répertoires et fichiers, introduit de nombreux attributs, implémenté des outils de compression de fichiers dynamiques, une tolérance aux pannes et prend en charge les exigences du Norme POSIX. Dans ce FS, vous pouvez utiliser des noms comportant jusqu'à 255 caractères et le nom court qu'il contient est généré de la même manière que dans VFAT. Comprenant ce qu'est le système de fichiers NTFS, il convient de noter que si le système d'exploitation tombe en panne, il est capable de se récupérer, de sorte que le volume du disque restera accessible et que la structure des répertoires ne sera pas affectée.

Caractéristiques de NTFS

Sur un volume NTFS, chaque fichier est représenté par une entrée dans la table MFT. Les 16 premières entrées de la table sont réservées par le système de fichiers lui-même pour stocker des informations spéciales. La toute première entrée décrit la table de fichiers elle-même. Lorsque le premier enregistrement est détruit, le second est lu pour rechercher un fichier MFT miroir dans lequel le premier enregistrement est identique à la table principale. Une copie du fichier de démarrage se trouve au centre logique du disque. La troisième entrée du tableau contient un fichier journal utilisé pour la récupération des données. La dix-septième entrée et les suivantes de la table de fichiers contiennent des informations sur les fichiers et répertoires présents sur le disque dur.

Le journal des transactions contient l'ensemble complet des opérations qui modifient la structure du volume, y compris les opérations de création de fichiers, ainsi que toutes les commandes affectant la structure des répertoires. Le journal des transactions est conçu pour récupérer NTFS après une panne du système. L'entrée du répertoire racine contient une liste de répertoires et de fichiers situés dans le répertoire racine.

Caractéristiques de l'EFS

Le système de fichiers de cryptage (EFS) est un composant Windows qui peut stocker des informations sur votre disque dur dans un format crypté. Le cryptage est devenu la protection la plus solide que ce système d'exploitation puisse offrir. Dans ce cas, le chiffrement pour l'utilisateur est une action assez simple : il suffit de cocher une case dans les propriétés du dossier ou du fichier. Vous pouvez spécifier qui peut lire ces fichiers. Le cryptage se produit lorsque les fichiers sont fermés et lorsqu'ils sont ouverts, ils sont automatiquement prêts à être utilisés.

Fonctionnalités RAW

Les appareils conçus pour stocker des données sont les composants les plus vulnérables, qui sont le plus souvent sujets à des dommages non seulement physiques, mais aussi logiques. Certains problèmes matériels peuvent être fatals, tandis que d'autres ont des solutions. Parfois, les utilisateurs se posent la question : « Qu'est-ce que le système de fichiers RAW ? »

Comme vous le savez, pour écrire des informations sur un disque dur ou un lecteur flash, le lecteur doit disposer d'un FS. Les plus courants sont FAT et NTFS. Et RAW n’est même pas un système de fichiers comme nous l’imaginons habituellement. En fait, il s'agit d'une erreur logique dans le système déjà installé, c'est-à-dire son absence réelle pour Windows. Le plus souvent, RAW est associé à la destruction de la structure du système de fichiers. Après cela, le système d'exploitation n'accède pas simplement aux données, mais n'affiche pas non plus d'informations techniques sur l'équipement.

Caractéristiques de l'UDF

Le format de disque universel (UDF) est conçu pour remplacer CDFS et ajouter la prise en charge des périphériques DVD-ROM. Si nous parlons de ce que c'est, il s'agit alors d'une nouvelle implémentation de l'ancienne version qui répond aux exigences. Elle se caractérise par certaines caractéristiques :

Les noms de fichiers peuvent contenir jusqu'à 255 caractères ;

Le nom peut être en minuscules ou en majuscules ;

La longueur maximale du chemin est de 1 023 caractères.

À partir de Windows XP, ce système de fichiers prend en charge la lecture et l'écriture.

Ce FS est utilisé pour les lecteurs flash, qui sont censés être utilisés lorsque vous travaillez avec différents ordinateurs exécutant différents systèmes d'exploitation, en particulier Windows et Linux. C'est EXFAT qui est devenu le « pont » entre eux, puisqu'il est capable de travailler avec les données reçues du système d'exploitation, chacun possédant son propre système de fichiers. Ce que c'est et comment cela fonctionne deviendra clair dans la pratique.

conclusions

Comme il ressort clairement de ce qui précède, chaque système d'exploitation utilise certains systèmes de fichiers. Ils sont destinés au stockage de structures de données ordonnées sur des supports de stockage physiques. Si vous vous posez soudainement une question lors de l'utilisation de votre ordinateur sur ce qu'est un système de fichiers final, il est fort possible que lorsque vous avez essayé de copier un certain fichier sur le support, vous ayez reçu un message concernant le dépassement de la taille autorisée. C'est pourquoi il est nécessaire de savoir dans quel FS quelle taille de fichier est considérée comme acceptable, afin que vous ne rencontriez pas de problèmes lors du transfert d'informations.

NTFS, FAT ou exFAT sont des systèmes de fichiers complètement différents qui peuvent être utilisés pour stocker des données sur différents supports. Les deux ont été créés par Microsoft et sont principalement utilisés pour Windows, mais ils sont également pris en charge dans le noyau Linux.

Le plus souvent, NTFS est utilisé pour installer le système d'exploitation Windows ou des partitions Windows pour les fichiers, tandis que FAT est souvent utilisé sur des lecteurs flash ou d'autres périphériques de stockage externes. De plus, FAT peut souvent être utilisé comme système de fichiers principal pour Android. Dans cet article, nous examinerons les différences entre FAT et NTFS, nous analyserons en détail en quoi ils diffèrent et pourquoi ils sont nécessaires.

Le système de fichiers définit les règles de base sur la façon dont les données seront organisées lorsqu'elles seront écrites sur un support, qu'il s'agisse d'un disque dur ou d'un lecteur flash. Le système de fichiers décrit la façon dont les dossiers seront organisés.

Une certaine donnée appelée fichier est placée dans la zone souhaitée du lecteur. Le système de fichiers effectue tous les calculs nécessaires, détermine également la taille minimale indivisible d'un bloc de données, la taille maximale du fichier et surveille la fragmentation. Il existe de nombreux types de systèmes de fichiers, tels que les systèmes de fichiers d'installation du système d'exploitation, les systèmes de fichiers multimédias externes, les systèmes de fichiers sur disque optique et les systèmes de fichiers distribués. Mais dans cet article, nous comparerons uniquement les fichiers gras et ntfs.

Qu’est-ce que le système de fichiers FAT ?

Les systèmes de fichiers fat32 et ntfs sont très différents. FAT signifie Table d'allocation de fichiers. Il s'agit d'un système de fichiers très ancien dans l'histoire des systèmes informatiques. Son histoire commence en 1977. Ensuite, un système de fichiers 8 bits a été développé, utilisé dans le NCR 7200 basé sur l'Intel 8080. Il s'agissait d'un terminal d'entrée fonctionnant avec des disquettes. Le système de fichiers a été écrit par Mark McDonald, employé de Microsoft, après avoir discuté du concept avec Bill Gates.

Le système de fichiers FAT a alors commencé à être utilisé dans le système d'exploitation MDOS de la plateforme Z80. Quelques années plus tard, de nouvelles versions sont sorties comme FAT12, FAT16 et FAT32.

FAT32 a augmenté la taille maximale du volume à 16 To, par rapport à FAT16. La taille du fichier a également été augmentée à 4 Go. File Allocation Table 32 bits a été publié en août 1995 pour Windows 95. Mais ce système de fichiers ne peut toujours pas être utilisé pour installer des applications lourdes ou stocker des fichiers volumineux. Par conséquent, Microsoft a développé un nouveau système de fichiers - NTFS, dépourvu de tels défauts.

FAT32 est un excellent système de fichiers pour les supports externes si vous devez transférer des fichiers ne dépassant pas 4 Go. Il est pris en charge par de nombreux appareils différents tels que des appareils photo, des caméras et des lecteurs de musique. Toutes les versions des distributions Windows et Linux prennent entièrement en charge FAT32. Même Apple MacOS le prend en charge.

Qu’est-ce que le système de fichiers NTFS ?

Pour ses nouveaux systèmes, Microsoft a développé un nouveau système de fichiers - New Technology File System ou NTFS. Il est apparu en 1993, sous Windows NT 3.1. NTFS a supprimé de nombreuses restrictions sur la taille des fichiers et des disques. Son développement a commencé en 1980, à la suite de la fusion de Microsoft et IBM pour créer un nouveau système de fichiers aux performances améliorées.

Mais la coopération entre les sociétés n'a pas duré longtemps et IBM a publié HPFS, utilisé dans OS/2, et Microsoft a créé NTFS 1.0. La taille maximale d'un seul fichier en NTFS peut atteindre 16 exaoctets, ce qui signifie que même les fichiers les plus volumineux y trouveront leur place.

NTFS 3.1 a été publié pour Windows XP et a reçu de nombreuses améliorations intéressantes telles que la prise en charge de la réduction de la taille des partitions, la récupération automatique et les liens symboliques, et la taille maximale du disque du système de fichiers a été augmentée à 256 To. Ceci malgré la taille maximale du fichier de 16 EB.

D'autres fonctionnalités intéressantes ajoutées ultérieurement incluent les écritures différées sur disque, la prise en charge de la défragmentation, les paramètres de quota de disque, le suivi des liens et le cryptage au niveau des fichiers. Avec tout cela, NTFS reste compatible avec les versions précédentes.

Il s'agit désormais d'un système de fichiers journalisé ; toutes les actions avec les fichiers sont enregistrées dans un journal spécial, à l'aide duquel le système de fichiers peut être restauré très rapidement s'il est endommagé. NTFS est pris en charge sur Windows XP et versions ultérieures. Si l'on compare fat ou ntfs, ce dernier n'est pas entièrement supporté sous Linux ; l'écriture et la récupération en cas de dommage sont possibles, mais sous MacOS seule la lecture est prise en charge.

Qu’est-ce que le système de fichiers exFAT ?

Le système de fichiers exFAT est un autre projet Microsoft visant à améliorer l'ancien système de fichiers. Il peut être rayé là où FAT32 ne rentre pas. Il est beaucoup plus léger que NTFS, mais prend en charge les fichiers de plus de 4 Go et est également souvent utilisé sur les lecteurs flash et les lecteurs. Lors de son développement, Microsoft a utilisé sa technologie de recherche de noms de fichiers par hachage, ce qui améliore considérablement les performances.

La plupart des pays reconnaissent le droit américain des brevets, donc toute implémentation d'exFAT n'est possible sur aucun système fermé ou open source. Mais Microsoft souhaite que ce système de fichiers soit distribué et utilisé librement. Par conséquent, une version d’exFAT basée sur FUSE appelée fuse-exfat a été développée. Il donne un accès complet en lecture et en écriture. Une implémentation au niveau du noyau Linux a également été créée chez Samsung, qui est désormais également accessible au public.

Ce système de fichiers a également une limite maximale de taille de fichier de 16 Mo, mais il est beaucoup plus léger et ne possède aucune fonctionnalité supplémentaire. Si nous parlons de compatibilité, elle est entièrement prise en charge sur Windows, MacOS, Android et Linux.

Différences entre FAT et Ntfs

Examinons maintenant les principales différences entre FAT et NTFS sous la forme d'un bref résumé de chaque système de fichiers :

FAT32

  • Compatibilité: Windows, Mac, Linux, consoles de jeux, presque tous les appareils dotés d'un port USB ;
  • Avantages: multiplateforme, léger ;
  • Inconvénients : taille maximale du fichier 4 Go et taille de la partition 16 Go, sans journalisation ;
  • Usage: médias externes.

NTFS

  • Compatibilité: Windows, Linux, Xbox One et lecture seule sur Mac ;
  • Avantages: journalisé, limites importantes sur la taille des partitions et des fichiers, cryptage, récupération automatique ;
  • Inconvénients : multiplateforme limitée ;
  • Usage: pour installer Windows.

exFAT

  • Compatibilité: Windows XP et supérieur, MacOS X 10.6.5, Linux (fusible), Android ;
  • Avantages: grande limite sur la taille des partitions et des fichiers, léger par rapport à NTFS ;
  • Inconvénients : Microsoft limite son utilisation à un accord de licence ;
  • Usage: pour les supports externes et les disques durs externes.

conclusions

Dans cet article, nous avons fait une comparaison entre fat et ntfs. Ce sont des systèmes de fichiers très différents. Mais il est difficile de comprendre quel système de fichiers est meilleur que Fat ou NTFS : d'une part, NTFS a beaucoup plus de capacités, mais FAT est plus léger et est pris en charge autant que possible. Pour les partitions de données sous Linux qui doivent être accessibles sous Windows, il est préférable d'utiliser FAT plutôt que NTFS, car il est mieux pris en charge. Selon vous, quel est le meilleur fat ou ntfs pour Linux ?

GRAISSE(Anglais) Déposer Allocation Tableau- « table d'allocation de fichiers ») est une architecture de système de fichiers classique qui, en raison de sa simplicité, est encore largement utilisée pour les lecteurs flash. Utilisé dans les disquettes et certains autres supports de stockage. Auparavant utilisé sur les disques durs.

Le système de fichiers a été développé par Bill Gates et Mark MacDonald en 1977 et était initialement utilisé dans le système d'exploitation 86-DOS. 86-DOS a ensuite été acquis par Microsoft et est devenu la base de MS-DOS 1.0, sorti en août 1981. FAT a été conçu pour fonctionner avec des disquettes inférieures à 1 Mo et ne prenait initialement pas en charge les disques durs.

Il existe actuellement quatre versions de FAT - FAT8, FAT12, FAT16 Et FAT32. Ils diffèrent par la profondeur de bits des enregistrements dans la structure du disque, c'est-à-dire le nombre de bits alloués pour stocker le numéro de cluster. FAT12 est utilisé principalement pour les disquettes, FAT16 pour les petits disques, FAT32 pour les disques durs. Un nouveau système de fichiers a été développé basé sur FAT exFAT(Extended FAT), utilisé principalement pour les lecteurs flash.

Le système de fichiers FAT remplit l'espace disque libre de manière séquentielle du début à la fin. Lors de la création d'un nouveau fichier ou de l'augmentation d'un fichier existant, il recherche le premier cluster libre dans la table d'allocation de fichiers. Si certains fichiers ont été supprimés et que d'autres ont changé de taille, les clusters vides résultants seront dispersés sur le disque. Si les clusters contenant les données du fichier ne sont pas situés dans une rangée, alors le fichier est fragmenté. Les fichiers fortement fragmentés réduisent considérablement l'efficacité, car les têtes de lecture/écriture devront se déplacer d'une zone du disque à une autre lors de la recherche de l'enregistrement de fichier suivant. Il est conseillé que les clusters alloués au stockage du fichier soient situés les uns à côté des autres, car cela réduit le temps de recherche. Cependant, cela ne peut être fait qu'à l'aide d'un programme spécial ; cette procédure est appelée défragmentation déposer.

Un autre inconvénient de FAT est que ses performances dépendent du nombre de fichiers dans un répertoire. S'il existe un grand nombre de fichiers (environ un millier), l'opération de lecture de la liste des fichiers d'un répertoire peut prendre plusieurs minutes. FAT ne stocke pas d'informations telles que la propriété des fichiers ou les autorisations des fichiers.

FAT est un système de fichiers simple qui n'empêche pas la corruption des fichiers due à un arrêt anormal de l'ordinateur. C'est l'un des systèmes de fichiers les plus courants et il est pris en charge par la plupart des systèmes d'exploitation.

Organisation du système de fichiers gras

Tous les systèmes d'exploitation de disque modernes prévoient la création d'un système de fichiers conçu pour stocker des données sur des disques et y donner accès. Pour que les données puissent être écrites sur un disque, sa surface doit être structurée - c'est-à-dire diviser en secteurs Et des pistes.

Une piste

Cluster C

Figure 1 - Structure du disque

Chemins- ce sont des cercles concentriques recouvrant la surface du disque. La piste la plus proche du bord du disque reçoit le numéro 0, la suivante - 1, etc. Si la disquette est recto-verso, les deux faces sont numérotées. Le numéro du premier côté est 0, le numéro du second est 1.

Chaque piste est divisée en sections appelées secteurs. Les secteurs reçoivent également des numéros. Le premier secteur de la piste reçoit le numéro 1, le second le 2, etc.

Un disque dur est constitué d'un ou plusieurs plateaux ronds. Les deux surfaces de la plaque sont utilisées pour stocker des informations. Chaque surface est divisée en pistes, pistes, elles-mêmes en secteurs. Les chemins de même rayon sont cylindre. Ainsi, toutes les pistes nulles constituent le cylindre numéro zéro, les pistes numéro 1 constituent le cylindre numéro 1, etc.

Par conséquent, la surface d’un disque dur peut être considérée comme une matrice tridimensionnelle dont les dimensions sont les nombres surface, cylindre Et secteurs. Un cylindre s'entend comme un ensemble de toutes les pistes appartenant à des surfaces différentes et situées à égale distance de l'axe de rotation.

Système de fichiers c'est juste une façon d'organiser les données sur un support, il n'y a rien de compliqué dans cette organisation.

Peut-être pensez-vous : « que le système de fichiers est une chose complexe et incompréhensible, parce que les systèmes d'exploitation fonctionnent avec lui et que tout ne peut tout simplement pas être là... »

Vous avez en partie raison, mais tous les raisins sont dans le pilote du système de fichiers, c'est-à-dire dans un programme qui fournit des API pour d'autres programmes d'application. Il fait simplement ce qui suit :

  • créer un fichier
  • supprimer un fichier
  • Renommer
  • copie
  • afficher le contenu du répertoire
  • déplacer vers un autre répertoire, etc.

Le principe même de l'organisation du système de fichiers est simple.

Dans cet article, je ne regarderai pas comment fonctionne le pilote et comment il crée/supprime des fichiers, je vais vous le dire sur le principe d'organisation des fichiers Systèmes FAT16.

(il y a une section séparée sur la façon d'écrire un pilote)

Pourquoi FAT16 ?

Je trouve que c'est le plus pratique pour apprendre, c'est facile à comprendre. Et connaissant l'idée, il n'est plus difficile d'étudier d'autres systèmes de fichiers - FAT32, NTFS, etc.

Pourquoi ai-je besoin de savoir comment fonctionne le système de fichiers ?

Connaissant le principe d'organisation du système de fichiers, vous pouvez développer votre propre pilote ou gestionnaire de fichiers sur n'importe quel appareil informatique.

Description du système de fichiers FAT16

Pour faciliter la navigation dans l'article, je vous fournirai une liste de questions auxquelles vous trouverez des réponses :

Système de fichiers FAT16 divise tout l'espace d'adressage du média en deux domaines :

  • zone système
  • zone de données

Pour plus de clarté, représentons l'ensemble de l'espace d'adressage sous la forme d'un rectangle. La petite partie supérieure du rectangle (espace d'adressage) est la zone système, la partie inférieure massive est la zone de données.

Toutes les données que nous stockons sur nos supports de stockage, c'est-à-dire tous les fichiers et répertoires sont stockés dans la zone de données. La zone système stocke les paramètres de ce support et les caractéristiques des fichiers et répertoires - nom du fichier, nom du répertoire, attributs du fichier, etc.

Commençons par quelque chose de simple, quelques mots sur la zone de données et comment les données y sont stockées

À propos de la zone de données...

Afin de ne pas adresser chaque octet (bien que certains supports de stockage permettent de travailler octet par octet), une autre unité minimale adressable est utilisée dans le système de fichiers - secteur. Taille secteurs 512 octets. En plus du secteur, le système de fichiers FAT16 utilise également un concept tel que grappe. Le cluster est un ou plusieurs secteurs consécutifs.

Ce paramètre (le nombre de secteurs sur un cluster) est souvent manipulé lors du formatage des supports de stockage. Parce que la rapidité du travail et le « degré de conditionnement des données » en dépendent. FAT16, comme tous les systèmes de fichiers, utilise le concept de fichier. Un fichier est une zone de données qui possède un nom et des attributs. Physiquement, dans la zone de données, il s'agit d'un ou plusieurs clusters occupés, le fichier occupant un nombre entier de clusters. Même s'il occupe un peu plus de deux clusters, pour le système de fichiers occupé par le fichier, il sera considéré comme trois clusters. Par conséquent, plus la taille du cluster est petite, plus le « degré de regroupement des données » est élevé et plus la zone de données est utilisée de manière économique. D'un autre côté, lire un fichier à partir de grandes parties de la mémoire, c'est-à-dire les clusters sont plus rapides que les petits. Par conséquent, le choix d’une taille de cluster est une question de compromis.

Système de fichiers FAT16 impose des restrictions sur la taille des clusters, pas plus de 128 secteurs(c'est-à-dire pas plus de 64 Ko) et sur nombre de clusters pas plus de 65 525 pièces. Si vous utilisez tout au maximum, c'est-à-dire taille maximale du secteur et nombre maximal de clusters, il s'avère que FAT16 ne peut pas traiter plus de 4,2 Go d'informations.

Si nous effectuons le formatage en mode automatique (lorsque nous ne spécifions pas la taille du cluster), alors la taille du cluster est sélectionnée pour être minimale, dans laquelle le nombre de clusters résultant ne dépasse pas 65 525.

À propos de la zone système...

La zone système est créée lorsque le support est formaté et est descriptif. Il se compose des parties suivantes :

Examinons chaque partie plus en détail.

1. Secteur de démarrage

Le secteur de démarrage est table de paramètres et programme de démarrage. La taille du secteur de démarrage est généralement 512 octets, mais cela pourrait être plus.

Regardons la structure du secteur de démarrage.

Ne vous inquiétez pas du grand nombre de champs dans le secteur de démarrage, c'est redondant. Par exemple, il stocke des informations qui ne sont pas pertinentes pour les clés USB : le nombre de secteurs sur une piste, le nombre de têtes. Ainsi, tous les paramètres ne nous seront pas utiles.

Si tu regardes Code hexadécimal, quelques support de stockage formaté au format FAT16, nous verrons ensuite les valeurs des champs. A titre d'exemple, je vais donner le code HEX d'une image au format FAT16 créée dans WinImage. Pour faciliter la navigation dans le code, j'ai codé par couleur quel fragment de code HEX appartient à quel paramètre.

P.S. La valeur de chaque cellule est prise en compte de droite à gauche, par exemple, s'il est écrit 00 02 h, alors c'est en fait 02 00 h, c'est-à-dire 512

P.S. Le secteur de démarrage se termine toujours à 55AAh.

Il est important de faire attention au paramètre « Secteurs réservés» — nombre de secteurs réservés, par décalage 0Eh. Au tout début, j'ai dit que le secteur de démarrage a généralement une taille de 512 octets, mais il peut être plus grand. Sa taille est déterminée par le paramètre « Secteurs réservés", dans notre cas Secteurs réservés = 01h, ce qui signifie que le secteur de démarrage occupe 1er secteur ou 512 octets.

2. GRAISSE

Après un secteur de démarrage avec taille 512* octets de secteurs réservés, la table arrive FAT1, sa taille est déterminée champ codé sur deux octets - SectorPerFat (16h) Secteur de démarrage. Dans l'exemple ci-dessus, la valeur de ce champ est 0001h ou 1 , c'est à dire. un secteur ou 512 octets.

Qu’est-ce que la graisse ?

Tout d'abord, c'est une abréviation - Table d'allocation des fichiers, signifiant « table d'emplacement des fichiers ». Ce tableau Avec une colonne Et 512/2 nombre de lignes(si la taille de la table FAT est de 512 octets ou si SectorPerFat est de 0001h, comme dans notre cas). Chaque doubler Tableaux FAT prend 2 octets de mémoire, donc le nombre de lignes pour notre cas est 512/2 .

Tableau sert de carte pour les clusters, chacune d'elle doubler caractérise tout cluster, la première ligne est le premier cluster, la seconde est le deuxième, et ainsi de suite pour tous les clusters qui se trouvent dans la zone de données. Le tableau est précédé d'une poignée de table F8FFh(même valeur que 15h de secteur de démarrage) et espace réservé FFFFh. Viennent ensuite les lignes du tableau dont les valeurs peuvent être les suivantes :

  • 0000h- cluster gratuit ;
  • 0002h-FFEFh- numéro de l'élément suivant dans la chaîne ;
  • FFF0h-FFF6h- réservé;
  • FFF7h- défectueux ;
  • FFF8h-FFFFh- dernier de la chaîne ;

Laisse moi te donner un exemple Code HEX avec explication.

Bleu J'ai marqué avec un cadre Tableau FAT1, tableau FAT2 rouge(copie de la table FAT1). Ombragé carré vert Ce poignée de table F8FFh et espace réservé FFFFh. Les carrés non remplis sont des lignes de tableau. Je n'ai pas marqué toutes les lignes avec un cadre vert, j'ai seulement encerclé celles non nulles.

J'expliquerai comment FAT est utilisé et pourquoi il est nécessaire un peu plus tard.

3. Répertoire racine

Après les tables FAT vient " répertoire racine" Il s'agit de la zone mémoire contenant Éléments de 32 octets. Chaque l'élément décrit, tout fichier ou répertoire situé dans le répertoire racine ou dans une autre langue « à la racine » du disque dur/lecteur flash. Il s'avère que le répertoire racine décrit tout ce qui se trouve à la racine.

La taille du répertoire racine dépend du paramètre Entrées racines (11h) Secteur de démarrage. Il est dit nombre maximum d'éléments de 32 octets dans le répertoire racine. Il s'avère que la taille du répertoire est Entrées racine * 32, pour notre cas c'est 512 * 32 = 16384 octets.

Chaque élément a la structure suivante :

Je vais donner un exemple de code HEX avec une explication.

Vert J'ai marqué avec un cadre zone mémoire responsable du répertoire racine, éléments bleus de 32 octets du répertoire racine. J'ai peint en bleu les éléments non vides de 32 octets.

Il y a ici deux éléments non vides de 32 octets, ce qui signifie dans le répertoire racine stocker deux « quelque chose », ça peut être les fichiers et autres répertoires. Dans ce cas, pour simplifier l’exemple, deux fichiers sont stockés à la racine « 1.txt" Et " test.txt».

Regardons de plus près ces deux éléments de 32 octets, pour plus de commodité, j'ai marqué de couleurs un fragment du code HEX et le paramètre correspondant de l'élément de 32 octets dans le tableau.

P.S.. Si le premier octet du nom de fichier est remplacé par "E5", Que Windows Explorer le comptera comme télécommande. Un tel fichier peut être restauré en remplaçant le premier caractère E5 du nom par sa valeur précédente. Je ne suis pas entièrement sûr, mais je pense que c'est ainsi que fonctionne la corbeille sous Windows. En le plaçant dans la corbeille, le système d'exploitation enregistre le nom du fichier quelque part et remplace le premier octet du nom par E5, et lors de sa restauration, il attribue au fichier son ancien nom.

P.S.. Les noms de fichiers dans le système FAT16 sont stockés au format 8.3 . Ceux. 8 -des octets sont alloués pour le nom et 3 octets sont alloués pour l'extension. Les noms sont codés au format ASCII, un caractère équivaut à un octet. Un nom ne peut donc pas être plus long que 8 caractères, et extensions plus de 3. Si le nom moins de 8 caractères, Que les octets manquants sont remplis en 20h(caractère espace en code ASCII).

P.S.. Je vous rappelle que la valeur de chaque cellule est calculée de droite à gauche, par exemple si elle est écrite 00 02 h, alors c'est en fait 02 00 h, c'est-à-dire 512 dans le système décimal.

Le paramètre le plus important pour nous se situe à 1 Ah — « mot faible du premier cluster de fichiers" Il stocke le numéro du cluster dans lequel se trouve le contenu du fichier, ce qui signifie que nous pouvons travailler avec les informations de ce fichier, c'est-à-dire lire, modifier, etc.

Par exemple " 1.txt» stocké dans un cluster numéro 0x0003 ou 3 dans le système décimal. Et cela signifie que si nous allons-nous enÀ cluster n°3 dans la zone de données (je vous rappelle que la zone de données est simplement constituée de clusters consécutifs) nous venons-en au contenu de ce fichier.

Vous avez peut-être une question « pratique », mais comment trouver ce troisième cluster ? Par à quelle adresse se trouve-t-il ?

Comment trouver une adresse de cluster connaissant son numéro ?

Pour ce faire, vous devez savoir combien d'espace votre zone système occupe-t-elle ? Et quelle est la taille des clusters(c'est-à-dire combien de secteurs (ou 512 octets) le cluster contient).

La figure suivante vous aidera à connaître la taille de la zone système :

Exemple pour mon cas

Le secteur de démarrage a un volume 512*Secteurs réservés octet, dans mon cas 512 octets. Ensuite, la table FAT me prend un secteur, ceux. 512 octets(puisque SectroPerFat est 1). Deux tables(puisque NumberOfFATs est 2), ce qui signifie deux tables au total 512*2=1024 octets. La taille du répertoire racine est de 512 éléments de 32 caractères, soit 512*32=16384 octets. Nous comptons:

512 (secteur de démarrage) + 1024 (deux tables FAT) + 16384 (répertoire racine) = 17920 octets ou 4600 dans le système de nombres hexadécimaux.

En conséquence, dans notre cas, la zone de données commence par 0x4600, Nous verrons:

Nous voyons le contenu de certains fichiers, mais pas le nôtre. Les données du fichier qui nous intéresse (1.txt) sont stockées dans le cluster n°3.

Nous devons maintenant connaître la taille du cluster, le paramètre du secteur de démarrage nous y aidera - SecteurParCluster(0xD, taille du paramètre 1 octet). Dans notre cas taille du cluster 4 secteurs, c'est à dire. 512*4=2048 octets ou 800 dans le système de nombres hexadécimaux. Il est important de noter que les clusters sont numérotés à partir de deux et non d'un (!).

Nous calculons à partir de laquelle les adresses commencent cluster n°3:

0x4600 (zone système) + 0x800 (deuxième cluster) = 0x4E00

Nous calculons par quoi l'adresse se termine par le cluster n°3:

0x4E00 (début du cluster n°3) + 0x800 (512*4 ou la taille d'un cluster en HEX) = 0x5600

En conséquence, le cluster Le n ° 3 se trouve dans la plage d'adresses 0x4E000x5600.

Regardons le code HEX

Cadre bleu j'ai indiqué contenu du fichier 1.txt. Tout ce qui se trouve au-dessus du cadre est le contenu d'un autre fichier. Les zones vides du secteur sont remplies de 0x00.

Alors pourquoi avons-nous besoin d’une table FAT ?

Si un fichier occupe plus d'un cluster (dans notre cas, si le fichier fait plus de 2048 octets), alors la table FAT nous vient en aide. C'est quelque chose comme une « carte » de clusters. Ceux. quand saurons-nous numéro de secteur, à partir duquel commence le fichier qui nous intéresse, il faut tout d'abord regarder même numéro de ligne en FAT.

Si la chaîne a une valeur 0xFF8-0xFFFF, alors cela signifie que c'est le dernier cluster pour un fichier donné, c'est-à-dire le fichier occupe juste un cluster.

Si la chaîne a une valeur 0x0002-0xFFEF, alors cela signifie que le fichier s'est étendu à un cluster supplémentaire. Nombre moyens numéro de cluster suivant, qui stocke la suite du fichier. Nous devons continuer à lire le fichier au numéro de cluster donné.

Après avoir lu le nouveau cluster, vous devez examiner la valeur de la ligne pour ce numéro en FAT. Si la valeur de la ligne est 0x FF8-0xFFFF, cela signifie que ce cluster est le dernier du fichier. Si 0x0002-0xFFEF, alors il s'agit du numéro du cluster suivant, lisez la suite et répétez l'action. La lecture d'un fichier est une boucle avec une condition.

Nous avons donc traité les fichiers, il est maintenant temps de s'occuper des répertoires.

Qu'est-ce qu'un annuaire ?

Le répertoire du système de fichiers FAT16 (et de nombreux autres) est un fichier spécial de taille nulle qui stocke une liste de son contenu.

Disons que nous avons ajouté le répertoire " TEST_DIR» avec fichier « in_dir.txt" Puis dans le répertoire racine un nouvel élément de 32 octets apparaîtra, il décrit le répertoire identique au fichier, mais avec des différences mineures.

J'ai marqué en rouge les paramètres spécifiques aux répertoires, ce sont 0x10– étiquette du répertoire et 0x00000000- taille du fichier.

Comme vous pouvez le voir dans le carré bleu, nous avons un répertoire dans le cluster n°5, voyons ce qu'il y a.

Contenu du "fichier" TEST_DIR En fait, c'est le même répertoire racine, c'est à dire. ensemble d'éléments de 32 octets. J'ai marqué chaque élément avec une bordure verte.

Les éléments décrivent le nom du fichier ou du répertoire, les attributs et le numéro du cluster dans lequel se trouvent ses données. Dans n'importe quel dossier, il y a toujours deux catalogues Avec nom "." Et "..".

Le premier est dans le cluster №5 , c'est à dire. Ce le même répertoire, UN le deuxième au cluster numéro n°0. En dessous de ça le numéro fait référence au « répertoire racine », c'est à dire. c'est la sortie vers le répertoire racine.

Description du fichier " in_dir.txt» standard, comme pour le répertoire racine (voir répertoire racine). L'essentiel pour nous est le numéro du cluster dans lequel se trouve le contenu de ce fichier (indiqué par un carré rouge).

Regardons grappe n°6 et voir le contenu du fichier " in_dir.txt" J'ai marqué le début du cluster avec une ligne rouge.

Vous pourriez être intéressé par :