exFAT Clean peut sauver vos SSD externes

Depuis une bonne quinzaine d’années (Snow Leopard), le système de fichiers le plus utilisé pour formater les clés USB et autres SSD externes est l’exFAT de Microsoft. Il a l’avantage de fonctionner de permettre l’interopérabilité entre Windows et macOS (et d’autres) mais il a surtout pleins de défauts, dont celui d’être fragile. Pour certains cas, il y a heureusement une solution.

Les avantages d’exFAT sont simples : on peut formater de gros volumes qui fonctionnent en lecture et en écriture avec différents OS. Ce n’est pas le cas du NTFS (par défaut en lecture uniquement sous macOS) ni de FAT32, qui limite les partitions à 2 To et empêche de créer des fichiers de plus de 4 Go. exFAT est par ailleurs le système de fichiers standard de la norme SDXC et la majorité des SSD externes modernes arrive formatée en exFAT. L’exFAT a deux problèmes principaux, par contre : le système de fichiers n’est pas journalisé et il n’y a qu’une copie de la FAT. La journalisation, schématiquement, c’est un système qui permet de vérifier si les données sont bien écrites. Quand on lance une copie, si on coupe la liaison (ce qui arrive avec un lecteur externe), la journalisation permet de vérifier si une copie a été terminée (ou pas). Sans journalisation, il faut effectuer des tests assez longs, avec des risques plus élevés de corruption. Le fait d’avoir une seule copie de la FAT (qui est schématiquement le plan du contenu du volume) amène aussi plus facilement des problèmes : si elle est corrompue, tout est perdu. D’autres systèmes de fichiers ont une copie de la FAT, ce qui réduit le défaut.

De façon très pratique, exFAT tend à être plus fragile que les autres systèmes de fichiers, donc. Ce n’est heureusement pas systématique (les quelques essais pour ce post ne m’ont pas permis de corrompre un SSD), mais si vous utilisez un gros volume formaté en exFAT et qu’il comprend beaucoup de données, les risques de corruption sont plus élevés qu’avec les autres systèmes de fichiers, spécialement si vous avez l’habitude de ne pas éjecter les volumes proprement. C’est la norme sous macOS (le système d’Apple indique bien comment le faire et vous prévient avec une notification si voue ne le faites pas) mais ce n’est pas une évidence sous Windows. L’OS de Microsoft ne râle pas si on débranche à la volée et les boutons d’éjection ne sont pas très accessibles.

exFAT Clean

C’est Yann, qui a eu un problème avec un SSD externe sur un iPad, qui m’a fait découvrir exFAT Clean. Le problème, il est simple : quand un défaut est trouvé sur un volume en exFAT, il y a un bit – le dirty bit – qui est passé à 1. Et avec macOS, le système de fichiers ne va pas être monté tant qu’il n’a pas été totalement vérifié avec fsck_exfat, ce qui peut être très long si vous avez beaucoup de données, et surtout ne pas fonctionner. Le truc, c’est que le système de fichiers peut être parfaitement fonctionnel même si le bit en question est à 1. Il peut avoir été mis en place pour différentes raisons qui n’impliquent pas une corruption réelle.

Le programme exFAT Clean permet simplement de le passer manuellement à 0 pour voir si ça règle le souci. Vous aurez besoin du Terminal, attention. Premièrement, il faut le télécharger.

git clone https://github.com/zzh8829/exfat_clean
cd exfat_clean

Ensuite, il faut identifier votre disque, avec la commande suivante.

diskutil list

Il faut noter la valeur qui correspond à la première partition du disque, qui se termine normalement par s1. Le type va être Windows_NTFS (c’est normal) et il faut bien sélectionner le bon disque. Si vous avez plusieurs volumes externes connectés, je vous recommande de tout débrancher pour éviter les erreurs. Dans la capture, la valeur importante est donc disk12s1. Vous pouvez vérifier la capacité pour être bien certain que c’est le bon volume.

Mon SSD externe

Maintenant, la commande à taper pour corriger le problème est la suivante. Il faut bien ajouter le r (rdisk12s1 et pas disk12s1, donc) et bien lancer la commande avec sudo. Si vous avez la réponse vbr read failed, vous avez fait une erreur.

sudo ./exfat_clean /dev/rdisk12s1

Le résultat devrait ressembler à ça et si le bit avait été placé sans raison particulière, votre disque externe devrait refonctionner. Si un jour j’ai une clé USB qui me fait une erreur – ça m’arrive de façon régulière, mais je n’ai pas réussi à le reproduire avec un SSD externe -, je mettrais à jour.

Le résultat

Le dernier point à prendre en compte est simple : même si l’exFAT est fragile, il n’y a malheureusement pas tellement d’alternatives. C’est le système de fichiers de base de tous les appareils externes modernes. Le NTFS de Microsoft n’est pas adapté si vous avez des appareils Apple (il est en lecture seule et les solutions pour écrire ne sont pas fiables à 100 %), l’APFS d’Apple non plus, il n’est pas utilisable si vous avez un PC. Si vous êtes uniquement dans un environnement Apple, ça reste une solution. Je vous conseille tout de même une chose, simple : formatez vos volumes en exFAT depuis macOS, avec une table de partition GUID. Certains arrivent encore en MBR (plus fragile) et Windows et certains fabricants mettent parfois des réglages atypiques qui peuvent bloquer les autres OS.