URL:
https://linuxfr.org/news/des-systemes-de-fichiers-pour-peripherique-amovible
Title: Des systèmes de fichiers pour périphérique amovible
Authors: 🚲 Tanguy Ortolo
patrick_g, Julien Jorge et Ysabeau
Date: 2021-04-21T15:18:22+02:00
License: CC By-SA
Tags: filesytem, système_de_fichiers et clé_usb
Score: 6
Lorsqu’on formate un périphérique amovible, le choix du système de fichiers est dicté par des contraintes particulières, en particulier la possibilité de le lire depuis des systèmes d’exploitation moins polyvalents que GNU/Linux. Les systèmes de propriétés et de permissions peuvent également être un obstacle dans un tel contexte, puisqu’on peut se retrouver à ne pas pouvoir modifier un fichier créé depuis un autre ordinateur avec un utilisateur différent de celui qu’on utilise.
Voici donc un petit état des lieux.
----
[UDF sur clefs USB](
https://tanguy.ortolo.eu/blog/article93/usb-udf)
[ACL pour les supports amovibles](
https://linuxfr.org/users/elessar/journaux/acl%C2%A0-la-solution-pour-les-media-de-transport-de-donn%C3%A9es-en-ext2)
[F2FS](
https://en.wikipedia.org/wiki/F2FS)
[ExFAT](
https://en.wikipedia.org/wiki/ExFAT)
----
Résumé
======
Si vous comptez utiliser votre périphérique uniquement depuis GNU/Linux et que vous aimez jouer en ligne de commande, formatez-le en ext4 s’il s’agit d’un disque dur, ou en F2FS s’il s’agit d’un périphérique flash (clef USB, SSD ou carte SD).
Sinon, s’il s’agit d’une clef USB où vous n’envisagez pas de stocker des fichiers de plus de 4 Gio, formatez-la en FAT32.
Sinon, si vous comptez utiliser votre périphérique amovible depuis d’autres ordinateurs qui ne tournent pas sous GNU/Linux, formatez-le en exFAT.
Voici un tableau récapitulatif des caractéristiques des principaux systèmes de fichiers utilisables sur périphérique amovible. Par « unixeries », j’entends le support de fichiers spéciaux (surtout les liens symboliques, mais également les nœuds de périphérique, les sockets Unix et les tubes nommés) et les notions de propriétaire et de permissions. Je mentionne également la possibilité de créer des fichiers sans propriétaire défini ou [d’émuler cela à coup d’ACL](
https://linuxfr.org/users/elessar/journaux/acl%C2%A0-la-solution-pour-les-media-de-transport-de-donn%C3%A9es-en-ext2), pour éviter des problèmes de permissions entre différents ordinateurs (voir le paragraphe Notes).
Fonctionnalité | Ext2/3/4 | F2FS | FAT32 | NTFS | exFAT | UDF
---------------------------|----------|---------|-------|------|-------|----
Lisible sous Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
Lisible sous MacOS | | | ✓ | ro | ✓ | ~
Lisible sous Windows | | | ✓ | ✓ | ✓ | ✓
Unixeries | ✓ | ✓ | | | | ✓
Fichiers sans propriétaire | via ACL | via ACL | ✓ | ✓ | ✓ | ✓
Adapté aux flash | | ✓ | | | |
Ouvert ou documenté | ✓ | ✓ | ✓ | | ✓ | ✓
Brevets problématiques | | | | ⚠ | |
Notes
=====
Le scénario est le suivant : sur un premier ordinateur, en tant qu’utilisateur `mrobin:1042`, vous créez un fichier sur une clef USB ; après l’avoir branchée sur un autre ordinateur, vous essayez de modifier ce même fichier en tant qu’utilisateur `roxane:1001`, et vous vous prenez une belle erreur parce qu’il n’est modifiable que par l’utilisateur numéro `1042`.
Ext2, ext3, ext4
================
Ces systèmes de fichiers, créés pour Linux, sont également lisibles de façon native sous FreeBSD. Sous MacOS et Windows, il faut installer un pilote spécifique, ce qui est assez rédhibitoire pour un périphérique amovible.
En matière de fonctionnalités, ces systèmes de fichiers implémentent évidemment toutes les notions unixiennes.
Pour les périphériques à base de flash, il est pertinent de créer un système de fichiers sans journal, avec `mkfs.ext4 -O ^has_journal`.
Création d’un système de fichiers :
mkfs.ext4 -O ^has_journal -L "Clef USB de Cyrano" /dev/sdc1
F2FS
====
Le *Flash-Friendly File System* a été créé par Samsung pour les cartes mémoires de leurs téléphones sous Android, donc pour Linux. Il a donc été conçu pour être utilisable sur des périphériques flash, y compris des clefs USB ou des SSD.
S’agissant d’un système de fichier conçu pour Linux, il prend évidemment en charge toutes les subtilités unixiennes.
Création d’un système de fichiers :
mkfs.f2fs -l "Clef USB de Cyrano" /dev/sdc1
FAT32
=====
FAT32 est un système de fichier assez ancien, créé par Microsoft pour Windows 95. Techniquement, ce système de fichiers est utilisé avec une bidouille nommée [[VFAT]], pour permettre d’utiliser des noms de fichiers un peu plus libres que le format 8.3 (huit caractères, puis un point, puis trois caractères) initialement prévu.
Ce système de fichiers est assez ancien pour ne plus être couvert par des brevets encore valides. Il a l’avantage d’être pris en charge partout, c’est pourquoi il est largement utilisé sur les clefs USB et cartes SD.
Il est en revanche franchement déficient, avec des limitations majeures :
* conçu pour MS-DOS et Windows 95, il ne permet pas de stocker des fichiers spéciaux (liens symboliques, périphériques, sockets et tubes nommés), et n’implémente aucune notion de propriété, bien qu’il fournisse une notion rudimentaire de permissions ;
* le nom de volume ne peut pas dépasser 11 caractères ;
* il ne permet pas de stocker de fichiers de plus de 4 Gio.
Création d’un système de fichiers :
mkfs.fat -n "Clef Cyrano"
NTFS
====
NTFS est un système de fichiers créé par Microsoft pour Windows NT. Il est utilisé comme système natif par les systèmes Windows actuels.
Il est également lisible nativement sous MacOS, mais il faut installer un pilote propriétaire spécifique pour pouvoir le monter lecture-écriture. Sous GNU/Linux, et visiblement sous FreeBSD, il est pris en charge en lecture-écriture par le pilote en espace utilisateur ntfs-3g.
Ce système de fichier n’implémente pas les subtilités unixiennes de fichiers spéciaux, de propriété et de permissions. Il dispose d’un système de propriété et de permissions à la sauce Windows, normalement inutilisés sous Linux.
Création d’un système de fichiers :
mkfs.ntfs -L "Disque dur externe de Cyrano" /dev/sdc1
exFAT
=====
exFAT est le dernier né de la famille de fichiers FAT de Microsoft, qui règle quelques limitations de FAT32, notamment le stockage des gros fichiers.
Ce système de fichier fermé et soumis à des brevets, mais Microsoft en a finalement publié les spécification et a donné ses brevets à l’[[Open Invention Network]] en 2019. Il s’agit donc maintenant d’un format ouvert sans brevets qui pourraient poser problème. Cela a notamment permis l’intégration d’un pilote exFAT dans le noyau Linux.
En pratique, ce système de fichier est pris en charge par tous les systèmes d’exploitation relativement récents, et il est d’ailleurs utilisé sur les cartes SD de grande capacité.
Il souffre de limitations héritées de FAT32, à savoir :
* il ne permet pas de stocker des fichiers spéciaux et n’implémente pas les notions de propriété et de permissions unixiennes ;
* le nom de volume ne peut pas dépasser 11 caractères.
Création d’un système de fichiers :
mkfs.exfat-L "Clef Cyrano" /dev/sdc1
UDF
===
L’*Universal Disk Format* est un système de fichiers normalisé par l’ISO, et est surtout utilisé sur les DVD. Il est, pour cette raison, pris en charge partout, et tout à fait utilisable sur des supports non optiques, à une époque je le recommandais même pour les clefs USB.
Malheureusement, ce n’est pas si parfait :
* sous MacOS, la dernière fois que j’avais pu l’essayer, on ne pouvait monter une clef USB formatée en UDF que depuis un terminal ;
* sous Linux, le support UDF est assez rudimentaire : on constate parfois des débits d’écriture pitoyables, et il n’existe pas de `fsck.udf` par exemple.
C’est dommage, parce que ce système de fichiers a pas mal d’avantages :
* il prend en charge toutes les subtilités unixiennes ;
* il dispose d’une notion de fichier au propriétaire non spécifié, qui sous Linux apparaît comme appartenant à celui qui a effectué le montage, ce qui est parfait pour un support amovible.
Création d’un système de fichiers :
mkudffs -l "Clef USB de Cyrano" /dev/sdc1