exFAT
exFAT (Extended File Allocation Table) est un système de fichiers créé en 2006 par Microsoft et conçu essentiellement pour les mémoires flash (comme les clés USB ou les cartes SD).
Il est une évolution plus moderne de FAT32 dont il permet de dépasser les limites : 16 exaoctets pour la taille maximale des fichiers (contre 4 Go pour FAT32), 128 pétaoctets pour la taille maximale des partitions (contre 2 To). Il est donc mieux adapté au stockage de gros fichiers : archives, ISO, films…
Il est particulièrement utilisé pour partager des fichiers entre systèmes hétérogènes, car il a l'avantage d'être compatible avec de nombreux appareils : TV connectées, media center, Windows, macOS, Linux, appareils photos…
exFAT est toutefois plus limité, moins fiable, moins performant et moins sécurisé que les systèmes de fichiers Linux, tels que ext4 et Btrfs :
- il ne gère pas de droit d'accès par utilisateur (les fichiers sont accessibles à toute personne ayant accès au support)
- il ne peut pas être redimensionné
- il n'accepte pas les caractères spéciaux dans les noms de fichiers ou de répertoires
- il ne distingue pas majuscules et minuscules dans les noms de fichiers ou de répertoires
- il n'implémente pas de journalisation (il est donc moins fiable car moins tolérant aux incidents et aux coupures intempestives)
- il ne propose pas de chiffrement
- il ne défragmente pas à la volée, et peut finir après de nombreux cycles écriture / effacement par être très fragmenté, ce qui réduit les vitesses d'accès sur les disques durs mais n'a pas d'incidence sur la mémoire flash.
Jusqu'en 2019, exFAT était la propriété de Microsoft et son implémentation était payante. Microsoft a ensuite transféré la propriété de ses brevets à Open invention network qui en a libéré l'utilisation. Son implémentation est donc désormais libre.
Installer le support d'exFAT
Le support du système de fichiers exFAT est inclus dans le noyau Linux depuis sa version 5.4 (à partir de Focal 20.04).
Les clefs USB, cartes mémoire, SSD, ou disques durs utilisant exFAT sont donc lus et montés automatiquement dès leur branchement.
Cependant pour gérer les partitions exFAT, par ex. pour formater des supports dans ce format, il faut installer les utilitaires système :
Formater une partition en exFAT
En mode graphique
Avec GNOME, le plus simple est probablement d'utiliser GNOME Fichiers. Clic droit sur le support de stockage → Formater…. Choisir ensuite Autre puis sélectionner exFAT.
Pour d'autres méthodes, on peut passer par un logiciel dédié à la gestion des partitions. Il en existe 2 principaux sur Ubuntu : GNOME Disques et GParted. Avec Kubuntu on utilise plutôt KDE Partition Manager.
Avec ces applications, procéder de manière habituelle pour formater les supports, cette fois au format exFAT.
Les options par défaut conviennent généralement, mais à défaut, voir les informations ci-dessous.
En ligne de commande
sudo mkexfatfs -n nom_partition /dev/sdXN
ou
mkfs.exfat -n nom_partition /dev/sdXN
en remplaçant sans se tromper X et N par les valeurs du support à formater.
Voir Désignation des partitions dans Ubuntu.
-n nom_partition est optionnel et sert à donner un nom (étiquette ou label) à la partition exFAT. Le nom est limité à 15 caractères et il faut éviter les espaces, les caractères accentués, cédilles et autres signes diacritiques.
Autres options facultatives (à n'utiliser que si vous comprenez ce que vous faite) :
-c NkPermet de forcer la taille des clusters à une autre valeur que celle prévue par défaut (qui dépend a priori de la taille de la partition). Utile si on prévoit de seulement stocker une multitude de fichiers minuscules.--pack-bitmapplace la description en fin de zone allouée. Ce serait plus performant sur certains supports, mais contraire à la norme.-i VOL_ID: Définit l'ID du volume à la valeur spécifiée dansVOL_ID. Il s'agit d'un nombre hexadécimal de 32 bits. S'il n'est pas défini, un ID basé sur l'heure actuelle est défini.-p SECTOR: Spécifie le premier secteur de la première partition du disque. Ce paramètre est facultatif et la valeur par défaut est zéro.-s SECTORS: Définit le nombre de secteurs physiques par grappe d'allocation. Il doit s'agir d'une puissance de deux, comme1,2,4,8, etc.
Sur des appareils spécifiques
Pour une carte-mémoire que vous destinez à votre caméscope ou à votre appareil photo, le mieux (si la fonctionnalité existe), et de loin, est de procéder depuis l'option intégrée dans ces appareils. Le format est alors contrôlé par le fabricant de l'appareil utilisateur, ce qui garantit une compatibilité maximale.
Clusters
Selon ce système de fichiers, l'espace du support est un ensemble de secteurs logiques (clusters) stockant des données de fichiers. Même si le fichier ne fait qu'un seul caractère, un secteur logique entier est utilisé.
Par exemple, le secteur logique d'une partition ext4 occupe par défaut 512 octets (quelle que soit la taille de la partition).
En exFAT la taille par défaut des secteurs logiques dépend de la taille de la partition. Plus la partition est grande, plus la taille par défaut des secteurs est importante. On peut déterminer celle-ci lors du formatage. Si les fichiers à sauvegarder sont majoritairement très petits, de grands clusters font perdre de la place. Il sera donc préférable d'en réduire la taille. Cependant on perd dans ce cas en performances en lecture et en écriture.
Opérations sur une partition exFAT
Formatage
Formater en exFAT la partition d'un disque dur classique est possible, même si exFAT est surtout conçu pour des supports mobiles à mémoire flash (carte mémoire ou clé USB).
Réparation
Jusqu'en 2022, Linux savait lire ou créer une partition exFAT, mais pas la réparer. Depuis 2022 et la version 1.2 de exfatprogs, une partition exFAT peut être lue, créée et réparée.1)
Déplacement
Déplacer une partition est possible avec GParted, mais impossible avec GNOME Disques.
Redimensionnement
Redimensionner une partition exFAT est impossible, que ce soit sous Linux ou Windows. Il faut alors supprimer et recréer la partition à la bonne taille.
Défragmentation
Défragmenter une partition exFAT est impossible, que ce soit sous Linux ou Windows (en 2024).
Les supports prévus pour ce système de fichiers ne sont pas sensibles aux effets de la fragmentation.
Installation système
Installer un système d'exploitation (Windows ou Linux) directement sur une partition exFAT est impossible ou formellement déconseillé. Ce format est réservé aux échanges de fichiers.
Monter une partition exFAT
Monter un système de fichier signifie le rendre accessible à n'importe quelle application sur votre ordinateur.
Normalement, les supports externes se montent automatiquement lors de leurs connexions à votre PC, il n'y a alors rien à faire. Cependant des cas particuliers peuvent se poser et on peut avoir besoin de procéder manuellement :
- Si vous avez besoin de monter automatiquement une partition exFAT lors du démarrage de votre PC, la manière la plus simple et facile est probablement de passer par l'utilitaire graphique GNOME Disques qui est présent par défaut sur Ubuntu, et qui modifie en arrière-plan le fichier
/etc/fstabsans qu'on ait à l'éditer manuellement !
Pour la partition concernée, cliquer sur l'icône Options de partition supplémentaires → Modifier les options de montage…
L'option Monter au démarrage du système aura pour effet d'ajouter une entrée correspondante dans/etc/fstabet rendra le stockage accessible sur le point de montage choisi (par défaut dans le répertoire/mnt).
Si vous préférez le modifier manuellement, voici un exemple de ligne à ajouter au fichier/etc/fstab:/dev/disk/by-uuid/77FE-F707 /media/fred/film/ exfat rw,uid=1000,gid=1000,umask=0002 0 1
Le point important est
rw,uid=1000,gid=1000,umask=0002qui permets un accès en lecture / écriture. Un simpledefaultspasserait le support en lecture seule. Un disque exFAT étant généralement mobile, il est possible qu'à certains démarrages il ne soit pas branché, bloquant ainsi le démarrage du PC. Si le risque existe, il faut ajouter l'optionnofail, qui permettra le démarrage (mais sans le montage, le disque étant déconnecté) →nofail,rw,uid=1000,gid=1000,umask=0002 - Si vous avez besoin de monter ponctuellement en ligne de commande :
sudo mount UUID=77FE-F707 /media/chris/film_music/ -o rw,uid=1000,gid=1000,umask=0002
Sans l'option
-o(et la valeur qui suit), le support sera en lecture seule.
Contrôler la qualité
La commande sudo fsck /dev/xxx vous permet d'avoirs des informations sur le support xxx utilisé : taille, utilisation, etc.
sudo fsck /dev/sdb17 fsck de util-linux 2.34 exfatfsck 1.3.0 Checking file system on /dev/sdb17. File system version 1.0 Sector size 512 bytes Cluster size 128 KB Volume size 39 GB Used space 1806 KB Available space 39 GB Totally 0 directories and 0 files
sudo fsck /dev/sdc1 fsck de util-linux 2.37.2 exfatprogs version : 1.1.3 /dev/sdc1: clean. directories 86, files 1683
Contrainte et limites
exFAT ne prend pas en charge les liens symboliques ni les fichiers cachés.
Les noms de répertoires et de fichiers ne peuvent contenir ces caractères spéciaux / \ | : * ? " < >.
Les copies vers un disque / partition exFAT échoueront donc pour les fichiers contenant ces caractères, sauf correction.
Les noms de fichiers et répertoires ne peuvent pas non plus avoir de caractère espace ou point . en début ou fin de nom (mais ils peuvent en avoir à l'intérieur).
Enfin, ces noms sont insensibles à la casse : les caractères minuscules et majuscules sont considérés comme équivalents. Sur les systèmes de fichiers UNIX / Linux (comme ext4), deux fichiers dans un même répertoire peuvent avoir un nom similaire, en dehors d'un changement de casse sur un ou plusieurs caractères. Sur exFAT on parle du même fichier quelle que soit la casse utilisée. Une simple copie de fichiers de ext4 vers exFAT peut donc poser des problèmes de conflit.