Ceci est une ancienne révision du document !



mount et fstab : Le montage des systèmes de fichiers

Outre les outils graphiques, la gestion du montage des périphériques de stockage peut s'effectuer en ligne de commande, ou grâce au fichier /etc/fstab (montage automatique).
Nous allons découvrir ces outils, ainsi que quelques commandes utiles.

Il existe 2 logiciels graphiques très pratiques pour ceci : disk-manager ainsi que pysdm.
Les informations de cette page s'adressent aux utilisateurs avancés.
Le montage graphique est documenté ici.

Voir aussi autofs. (non installé par défaut)

Les systèmes de fichiers sous Linux

Un nouveau périphérique de stockage, lorsqu'il est détecté, est la plupart du temps monté automatiquement. Mais il peut être intéressant de monter manuellement, ou de spécifier des options de montage ou de modifier celles des partitions système.

Le montage des partitions a un impact sur le système et nécessite donc les droits d'administration.

Les périphériques sont désignés par le système par des fichiers dans le répertoire /dev/.

Les périphériques de stockage seront donc reconnus par /dev/sda, /dev/hdb, etc.
Les partitions sont désignées par leur numéro dans le disque (/dev/hda1, /dev/hda2, etc)

Les partitions peuvent aussi être reconnues par leur UUID et leur label

Liste des partitions

Vous pouvez lister les partitions en lançant la commande :

 sudo fdisk -l 

Ce qui vous ressortira quelque chose comme :

Disk /dev/sda: 117.3 GB, 117298257920 bytes
255 têtes, 63 secteurs/piste, 14260 cylindres, total 229098160 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00067e35
 
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1            2048    41945087    20971520   83  Linux
/dev/sda2        41945088    58722303     8388608   82  partition d'échange Linux / Solaris
/dev/sda3        58722304   121636863    31457280   83  Linux
/dev/sda4   *   121636864   206187183    42275160    7  HPFS/NTFS/exFAT
 
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 têtes, 63 secteurs/piste, 60801 cylindres, total 976773168 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Identifiant de disque : 0x000e4fe9
 
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1            2048   976773119   488385536   83  Linux

Vous pouvez alors lire la liste des périphériques de stockage (disques dur, clés usb,…) avec la liste des partitions et leur taille.

Note sur les UUIDs

L'UUID est défini dans pour chaque partition de façon quasi-unique, et assure qu'il n'y aura pas d'ambiguïtés dans votre fstab.

Pour obtenir les UUIDs de vos partitions, tapez

sudo blkid

Vous obtiendrez la liste de vos partitions, leurs types blocs, leurs UUIDs, leurs étiquettes, leurs types:

/dev/sda1: UUID="8bf33340-e94c-4c4c-981d-35e73f8bc65c" TYPE="ext4" 
/dev/sda2: UUID="ac56a704-260b-45f5-85ac-e1b451bb79bc" TYPE="swap" 
/dev/sda3: LABEL="Home" UUID="8244710a-5cce-49ad-8b93-a92b5d2e53a0" TYPE="ext4" 
/dev/sda4: UUID="DCF041AFF0419126" TYPE="ntfs" 
/dev/sdb1: LABEL="Home" UUID="2c313d40-6bdc-4e42-917a-b04f88764aac" UUID_SUB="c21f5351-4022-41af-b504-6b59b455bf23" TYPE="btrfs" 

Ainsi, dans votre fstab, les deux lignes suivantes sont équivalentes, mais on préfèrera la seconde :

/dev/sda3                                     /home ext4 defaults    0 0
UUID=8244710a-5cce-49ad-8b93-a92b5d2e53a0     /home ext4 defaults    0 0

Pour monter un périphérique, il faut connaître son nom, qui sera de la forme /dev/sda1, par exemple.

La commande mount permet de manipuler tous les montages de systèmes de fichier de manière très précise. Par exemple, pour monter l'unité de stockage "/dev/sdc3" dans le dossier "/media/stock" :

sudo mount /dev/sdc3 /media/stock

Le système de fichier utilisé est détecté automatiquement.

Le point de montage doit être un dossier, quelconque mais existant et vide au moment du montage.
Ubuntu monte automatiquement les disques dans des sous-dossiers du répertoire /media par exemple, dossiers qu'il crée automatiquement avant.

Point de montage dont le nom comporte un espace.

Pour la commande mount : l'espace doit être précédé d'un caractère d'echappement \, ou le nom du dossier mis entre guillements ""

Pour Fstab : l'espace doit être remplacé par \040

Nous allons voir comment spécifier des options ou le système de fichiers.

Format de la partition

Le type de fichiers est normalement détecté par la commande mount. Néanmoins il peut être nécessaire de lui imposer un format :

sudo mount -t [type] /dev/sdc3 /media/stock

[type] est le format de système de fichiers (Les systèmes de fichiers). Voici les plus fréquents :
ext2, ext3, ext4, fat (Fat16), vfat (Fat32), ntfs, reiserfs, btrfs, tmpfs, iso9660(Disques),…

Exemples :

mount -t ext4 /dev/sdc3 /media/stock       # Système de fichiers en ext4
mount -t vfat /dev/sdc3 /media/partage     # Système de fichiers et Fat32
mount -t iso9660 /dev/sdd /media/cdrom     # CD


On peut aussi monter des fichiers, comme par exemple des Isos (images disque) :

mount -o loop ubuntu-cdrom.iso /media/cd-installation

Droits par défaut du volume

Cas concret : vous avez une partition en vfat sur votre disque dur et vous voudriez, en tant qu'utilisateur lambda, pouvoir lire et écrire dessus.
Le système de fichier vfat ne spécifiant aucun droit, nous devons les lui spécifier lors du montage. Il faut alors indiquer à mount la valeur de umask adéquate grâce à l'option homonyme. FIXME Utilité encore aujourd'hui ? Jamais eu à utiliser ça…

sudo mount -o umask=0 /dev/hda7 /media/win_d

Cette méthode a un inconvénient : les autorisations en exécution sont nécessaires pour les répertoires mais pénibles pour les fichiers. On peut alors préciser un umask pour chacun d'eux :

sudo mount -o fmask=111 -o dmask=0 /dev/hda7 /media/win_d

Vous pouvez également restreindre les droits en montant le système de fichier en lecture seule (c'est-à-dire avec aucun droit en écriture). L'option "-o umask=0222" est alors tout indiquée.

En ce qui concerne les systèmes de fichiers qui ont une gestion des permissions (comme Ext2, Ext3, ReiserFs etc…), si vous souhaitez pouvoir écrire dans cette partition en tant que simple utilisateur, vous devez changer les permissions ou l'appartenance du dossier.

Dans notre exemple précédent, si /dev/sdc3 est en ext3 :
Après avoir monté la partition dans /media/stock :

sudo chown utilisateur /media/stock

Désormais cette partition appartient à l'utilisateur peu importe où elle sera montée ensuite.

Autres options

D'autres options peuvent être spécifiées au montage comme nous le verrons dans le paragraphe suivant. Les mêmes options (default, etc) peuvent être spécifiées avec mount, après "-o". Par exemple :

mount -t vfat -o defaults,rw,user,umask=022,uid=1000 /dev/sdc3 /media/stock

Le fichier /etc/fstab liste les partitions qui seront montées au démarrage ou à la connexion du périphérique, avec toujours les mêmes options.
Il est composé de plusieurs lignes décrivant chacune les conditions de montage de chaque système de fichier.

Si un point de montage contient un espace, il doit être remplacé dans /etc/fstab par \040

Le fichier /etc/fstab suivant résume une configuration classique :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda7 during installation
UUID=33b870b8-a81e-4203-a4fd-7affa9f412fb    /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda5 during installation
UUID=c3cc32c0-b4bd-49f6-b23c-35fed37adea5    /boot           ext2    defaults        0       2
# /home was on /dev/sda8 during installation
UUID=c2d386a1-c2f9-4d2f-957a-65a5d9b4c4d7    /home           ext4    defaults        0       2
# swap was on /dev/sda6 during installation
UUID=2c442228-1991-48c7-bad9-a80dfc8267cf    none            swap    sw              0       0
  • dump est utilisé pour les sauvegardes ;
  • pass pour l'ordre de vérification au démarrage.

Laissez-y les valeurs par défaut. Si vous ajoutez manuellement des partitions par la suite, les valeurs de <pass> doivent rester à :

  • 1 pour la racine
  • 2 pour les autres partitions Linux
  • 0 pour le swap et les partitions windows (cf. man fstab)

Une valeur de <pass> à 0 signifie qu'il n'y aura pas de vérification au démarrage (Déconseillé dans la plupart des cas).
Lorsqu'un système de fichier est présent dans le fichier /etc/fstab, tous les utilisateurs peuvent le monter en tapant "mount /media/stock" par exemple. En outre, il est monté automatiquement au démarrage de la machine.

Options Description Compatible
defaults Correspond à: rw,suid,dev,exec,auto,nouser,async Tous
rw Montage en lecture/écriture (par défaut) FIXME
suid/nosuid Les bits SUID et SGID sont pris en compte (ou non) FIXME
dev/nodev Interprète ou non les fichiers spéciaux de périphériques présents sur le système (par défaut) FIXME
exec/noexec Autorise l'exécution des programmes (par défaut) FIXME
auto/noauto Montage automatique (ou non) lors d'un appel mount -a (par défaut) FIXME
nouser Seul le compte root peut monter/démonter le système de fichier (par défaut) FIXME
async Montage asynchrone (par défaut) FIXME
atime/noatime Met à jour ou non la date à chaque manipulation (préférez noatime pour les SSD) FIXME
discard active le TRIM sur les partitions SSD (à rajouter manuellement) ext4, btrfs (SSD)
gid= Spécifie le n° du groupe propriétaire (si omis : root). (vous pouvez les consulter dans /etc/group) fat, ntfs, FIXME (! pas ext4)
ro Montage en lecture seule FIXME
showexec ? FIXME ! pas ext ! FIXME
sync Montage synchrone FIXME
uid= spécifie le n° du user propriétaire des fichiers (si omis : root) [n° du user ou nom en toutes lettres ???]. Les numéros des utilisateurs se trouve dans "/etc/passwd". fat, ntfs, FIXME
user Autorise l'utilisateur courant à monter/démonter le système de fichier. Ceci entraîne l'utilisation des options noexec, nosuid, et nodev (à moins qu'elles ne soient explicitement surchargées, comme dans une ligne d'option user,exec,dev,suid). FIXME
umask= umask=000 pour avoir chmod 777 - spécifie les droits d'usage des fichiers (et des dossiers ? FIXME) - voir Permissions (ou droits d'accès) permission=777-umask (si omis : ? FIXME) explication du fonctionnement de umask et dmask fat, hfs, hpfs, ntfs, udf (pas ext4 ?)
dmask= (obsolète, utiliser dir_mode) spécifie les droits d'usage des dossiers - (si omis : ? FIXME) FIXME
dir_mode= pour les répertoires, indique le chmod, par exemple 0777 pour un accès complet !
fmask= (obsolète, utiliser file_mode) spécifie les droits d'usage des fichiers - (si omis : ? FIXME) FIXME
file_mode= pour les fichiers, indique le chmod, par exemple 0777 pour un accès complet !
utf8 ( (autres possibilités ?FIXME)par exemple) spécifie l'encodage utf8 pour les noms de fichiers FIXME
sw montage des partitions swap swap
windows_names interdit l'usage des caractères non compatibles avec Windows dans les noms de fichiers. À savoir / \ : ? * < > " et le caractère barre verticale. Remarque : ces caractères ne peuvent de toutes façons pas être utilisés dans les partitions de format FAT. ntfs FIXME

Voir aussi la page Comment accéder à ses partitions Windows depuis GNU/Linux ? et Monter des partages Windows au démarrage

Il est parfois utile de monter non pas un volume, mais un dossier dans un autre. Ceci peut ressembler à un lien logique mais c'est beaucoup plus puissant, notamment :

  • pour un chroot dans un compte FTP
  • pour monter des fichiers dans un système de fichiers en lecture seule (où on ne peut donc pas créer de liens) (CD,…)
  • pour monter des fichiers (fichiers compressés squashfs,…)

Cela est possible avec l'option "bind".

Par exemple, dans le cas où /mnt/read-only est en lecture seule et où on veut remplacer /mnt/read-only/mauvais-fichier par /home/linux/bon-fichier :

mount --bind /home/linux/bon-fichier /mnt/read-only/mauvais-fichier


Si on veut rendre un dossier privé public (comme un lien, en fait FIXME)

mount --bind /home/moi/dossier-à-partager /home/répertoire-accessible-à-tous

Ici, les droits d'écriture ne changent pas : si vous voulez donner le droit d'écrire aux autres utilisateurs, il faudra modifier aussi les droits de /home/moi/dossier-à-partager et pas seulement à /home/répertoire-accessible-à-tous.

Pour rendre persistants ces montages, nous les spécifions dans /etc/fstab comme habituellement.

Voici un exemple :

# /etc/fstab: static file system information.
# <file system>               <mount point>                 <type>  <options>  <dump>  <pass>
[…]
# Un montage bind :
/home/linux/bon-fichier   /mnt/read-only/mauvais-fichier     none       bind      0   0

Dossier de montage inexistant

Il arrive que le répertoire de montage n'existe pas. Dans ce cas, la commande mount renvoie une erreur explicite. Il suffit de le recréer.
Toulours dans notre exemple : (l'option -p permet de créer récursivement les dossiers parents si il n'existent pas)

sudo mkdir -p /media/stock

Fichiers occupés

Un système de fichier ne peut être démonté tant que certains de ses fichiers sont ouverts par des processus.
Le cas le plus simple est que le répertoire de travail actuel est dans le volume que vous voulez démonter. Sinon, la commande lsof permet de lister tous les fichiers ouverts. En arrêtant les processus qui utilisent le volume, le démontage devient possible.
Par exemple :

sudo lsof | grep /media/stock 

(grep permet de n'afficher que les lignes contenant "/media/stock")

Les logiciels utilisant un volume sont perdus

Imaginons que vous ayez modifié le dossier de montage de /media/moi/stock en /home/moi/stockage.

Il est possible que des logiciels utilisent des fichiers dans /media/moi/stock ; Pour risquer des problèmes de fonctionnement, vous pouvez (si vous pensez que c'est nécessaire) créer un lien symbolique de l'ancien point de montage vers le nouveau :

  • Assurez-vous que rien n'est monté dans /media/moi/stock :
    ls /media/moi/stock
  • Supprimez l'ancien point de montage :
    sudo rmdir /media/moi/stock
  • Créez un lien :
    ln -s /home/moi/stockage /media/moi/stock

Voilà !

  • utilisateurs/felixp/brouillon.1382462452.txt.gz
  • Dernière modification: Le 22/10/2013, 19:20
  • par FelixP