Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !



Le montage des systèmes de fichiers : /etc/fstab

Ce court article a pour but de vous présenter le montage des systèmes de fichier dans un système GNU/Linux, et plus particulièrement dans Ubuntu. Nous étudierons les cas normaux et problématiques, ainsi que quelques commandes utiles.

Il existe 2 logiciels graphiques très pratiques pour ceci : disk-manager ainsi que pysdm.

Une unité de stockage (que ce soit un disque dur interne ou externe, une clé USB, un CDROM ou DVDROM, une disquette, etc.), pour être utilisée par un ordinateur, doit être formatée. Cela signifie qu'on doit lui assigner un système de fichiers, indiquant la structure et le nom des répertoires et fichiers 1), éventuellement les droits correspondant à chacun, et d'autres options. Pour de plus amples informations à propos de ce qu'est un système de fichiers : système de fichiers.

Il existe plusieurs types de systèmes de fichiers (entre crochets, la façon de saisir le nom du système de fichiers dans un fichier fstab) :

  • Le Ext2FS (pour second extented filesystem) [ext2], qui est le standard de facto sous GNU/Linux, très faible fragmentation, bonne tenue à la charge, très fiable. Gestion des droits en lecture, écriture, exécution par utilisateur et par groupe d'utilisateurs.
  • Le Ext3FS [ext3], qui est une reprise de l'ext2fs avec un historique de journalisation. Très fiable également.
  • Le FAT 16 (pour File Allocation Table)[fat], le système de fichiers standard de Microsoft™ utilisé dans ses systèmes d'exploitation MS-DOS et Windows® jusqu'à Windows 95. Pas de gestion des droits, pas de fichier supérieur à 2 Go, fragmentation importante. Reconnu presque partout, souvent présent sur les clefs usb.
  • Le FAT 32 [vfat], système de fichiers développé par Microsoft™ pour ses systèmes d'exploitation Windows® en milieu familial. Il a été introduit dans Windows 95b et a été le standard jusqu'à Windows Millenium. Limitation de la taille des fichiers à 4 Go, toujours pas de gestion des droits, fragmentation importante. Très courant également.
  • Le NTFS (pour New Technology FileSystem) [ntfs] est le système de fichiers standard dans les OS de Microsoft™ introduit avec Windows® NT pour les milieux d'entreprises ; il est aussi utilisé en milieu familial depuis Windows XP, dans lequel il est le standard. Gestion des droits, fragmentation moins importante que pour les systèmes FAT 16 et 32, journalisation partielle et rudimentaire. Problème : l'écriture sur ces types de systèmes de fichiers reste expérimentale avec GNU/Linux (la dernière version du projet ntfs-3g ouvre la possibilité d'écrire et de lire sans danger sur une partition NTFS à partir d'un système GNU/Linux. Reportez-vous à l'article de la documentation pour en apprendre plus sur le sujet).
  • Le XFS [xfs] et le ReiserFS [reiserfs] sont des systèmes de fichiers journalisés, comme l'Ext3FS. Aujourd'hui réputés robustes (i.e. utilisables sur des systèmes en production), autorisent la gestion des droits. Très faible fragmentation. ReiserFS a des meilleures performances que les autres systèmes de fichiers lorsqu'il gère une multitude de fichiers de faible taille.
  • Le format des CDROM est en général l'ISO 9660, mais d'autres systèmes utilisent des formats particuliers : HFS pour le Mac, par exemple.

Bien que le système vfat ne permette malheureusement pas de gérer les droits d'accès aux fichiers, il a l'avantage d'être lisible (presque) partout. C'est donc un bon choix si l'on souhaite rendre des données accessibles sous plusieurs systèmes (partition de partage entre systèmes).

Dans une installation propre d'Ubuntu, un démon (gnome-volume-manager) doit assurer le montage automatique des systèmes de fichier. Dès qu'un disque dur externe en USB (par exemple) est détecté, Nautilus, le gestionnaire de fichier d'Ubuntu, ouvre une fenêtre affichant le contenu de cette nouvelle unité de stockage. Une icône permettant l'ouverture de cette fenêtre devrait également apparaitre sur votre bureau. Si ce n'est pas le cas, nous allons utiliser un autre moyen : la commande mount.

Avant d'étudier le fonctionnement de cette commande magique, nous devons faire un petit rappel sur la désignation des partitions sous GNU/Linux. Le système voit les périphériques au travers d'une arborescence située dans le répertoire /dev/*.

Généralement lorsque votre système possède deux disques, le disque principal (le maître) est désigné par /dev/hda, et un second disque (l'esclave), si vous en possédez un, est désigné par /dev/hdb. Les périphériques USB sont nommés /dev/sda, /dev/sdb, etc. pour resp. les 1er et 2ème connecteurs USB.

Les partitions sont désignées par leur numéro dans le disque. Ainsi /dev/hda2 est la deuxième partition du disque maître de la première nappe, /dev/hda3 la troisième partition, etc. Les partitions au-delà de la quatrième (/dev/hda5, /dev/hda6, etc.) sont des partitions étendues. Pour avoir la liste des partitions d'un disque dur, vous pouvez utiliser le programme fdisk.

  login@ubuntu:login$ sudo /sbin/fdisk -l /dev/hda
  Disk /dev/hda: 60.0 GB, 60011642880 bytes
  255 heads, 63 sectors/track, 7296 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot      Start         End      Blocks   Id  System
  /dev/hda1   *           1        1275    10241406    c  W95 FAT32 (LBA)
  /dev/hda2            1276        1913     5124735   83  Linux
  /dev/hda3            1914        2551     5124735   83  Linux
  /dev/hda4            2552        5191    21205800    5  Extended
  /dev/hda5            2552        2653      819283+  82  Linux swap
  /dev/hda6            2654        3291     5124703+  83  Linux
  /dev/hda7            3292        4553    10136983+   c  W95 FAT32 (LBA)
  /dev/hda8            4554        5191     5124703+  83  Linux
Avec la version 6.10 d'Ubuntu (et suivantes), l'UUID est utilisé par défaut dans le fichier fstab. Informations à ce sujet sur cette page: http://doc.ubuntu-fr.org/uuid_et_label
Avec la version 7.10 d'Ubuntu (et suivantes), tout périphérique est assimilé comme étant en série. Ainsi, tous vos hdX seront transformé en sdX. Ceci vient d'un changement dans le kernel.
Si comme moi vous aviez supprimé les UUID de votre fichier /etc/fstab pour les remplacer par des bons /dev/hdX (qui ne bougent pas si vous repartitionnez votre disque), la transition hdX → sdX n'a pas été transparente. Deux solutions pour remédier à ce problème :
  1. vous éditez à la main votre fstab et remplacez vous même les hdX par des sdX
  2. vous souhaitez revenir à la version avec les UUID (notamment pour éviter les futurs changements s'il y en a et revenir à la version choisie par défaut par Ubuntu), vous pouvez lancer le script /usr/lib/udev/migrate-fstab-to-uuid.sh dans un terminal (valable à partir de Gutsy). hda -> sda transition not handled during upgrade

La commande mount permet de manipuler tous les montages de systèmes de fichiers de manière très précise. Elle est invoquée de la manière suivante :

$ sudo mount /dev/hda3 /media/stock
Attention !!

Sous Ubuntu, l'utilisateur par défaut ne peut pas forcément accéder de cette manière aux dossiers montés. Pour cela, il faut définir un u-mask (voir ci-dessous).

La précédente commande a pour effet de monter l'unité de stockage /dev/hda3 (3ème partition du disque maître de la première nappe) sur la branche /media/stock. Le système de fichier utilisé est détecté automatiquement en lisant le superblock de la partition.

Le point de montage (/media/stock) est un répertoire quelconque de l'arborescence. "Quelconque" signifie qu'un volume de stockage peut être monté dans un répertoire dédié aux montages (/media pour Ubuntu) ou dans un répertoire dédié à la fonction (il est courant de mettre les répertoires utilisateurs sur une partition différente du système, et de monter cette partition sur le point /home).

Il est possible de passer des options à mount. Pour spécifier un système de fichier s'il ne le trouve pas ou pour imposer des droits particuliers sur le volume monté par exemple. Nous allons voir ici les principales d'entre elles.

Le type de fichier peut être détecté automatiquement, comme sus-dit, par mount par une analyse des premiers bits de la partition demandée. Néanmoins dans certains cas il peut être nécessaire de lui imposer un format. GNU/Linux reconnaît un nombre impressionnant de formats, qui dépend des options de compilation de votre noyau. L'argument à la suite de -t est utilise pour préciser le type de système de fichier. La page de manuel de mount (`man mount`) indique les types de système de fichiers suivants :

  adfs,  affs,  autofs,  coda, coherent, cramfs, devpts, efs, ext,
  ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos,  ncpfs,  nfs,
  ntfs,  proc,  qnx4,  ramfs, reiserfs, romfs, smbfs, sysv, tmpfs,
  udf, ufs, umsdos, vfat, xenix, xfs, xiafs.

Notez que coherent, sysv et xenix sont équivalents et que xenix et coherent disparaîtront dans l'avenir – utilisez sysv à leur place. Depuis Linux 2.1.21, les types ext et xiafs n'existent plus.

ex :

  mount -t ext3 /dev/hda3 /media/stock
  mount -t vfat /dev/hda3 /media/partage
  mount -t iso9660 /dev/hdd /media/cdrom

Il est possible sous GNU/Linux (et cette option bien pratique est largement utilisée) d'encapsuler aisément des systèmes de fichiers dans des fichiers. Cela permet par exemple de manipuler des images de cdrom (cdrom.iso) que l'on peut graver par la suite, ou de recopier en quelques secondes l'image d'une disquette (`dd if=/dev/fd0 of=ma_disquette.iso`). Il faut utiliser pour monter un fichier iso l'option "-o loop" :

  login@ubuntu:login$ mount -o loop sauvegardes.iso /media/loop
  login@ubuntu:login$ ls /media/loop
  sauvegardes_pro
  sauvegardes_perso
  sauvegardes_systeme

Une autre option intéressante est de pouvoir choisir les droits par défaut sur le volume. Cas concret : vous avez une partition en vfat sur votre disque dur, venue on ne sait d'où. 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 (google umask) grâce à l'option homonyme.

  login@ubuntu:login$ sudo mount -o umask=0 /dev/hda7 /media/win_d
  Password: 
  login@ubuntu:login$ ls /media/win_d
  cygwin                  pagefile.sys   Recycled                   
  Documents and Settings  Perl           System Volume Information  
  musique                 Program Files  windows

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 :

login@ubuntu:login$ 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 toute indiquée.

  login@ubuntu:login$ sudo mount -o umask=0222 /dev/hda7 /media/win_d
  login@ubuntu:login$ ls -l /media/win_d
  total 786480
  dr-xr-xr-x  10 root root      4096 2004-08-05 20:33 cygwin
  dr-xr-xr-x   9 root root      4096 2004-08-05 19:59 Documents and Settings
  -r-xr-xr-x   1 root root 805306368 2005-01-27 06:04 pagefile.sys
  dr-xr-xr-x   7 root root      4096 2004-08-05 20:40 Perl
  dr-xr-xr-x  66 root root      8192 2004-08-06 00:08 Program Files
  dr-xr-xr-x   2 root root      4096 2004-08-05 20:30 Recycled
  dr-xr-xr-x   2 root root      4096 2004-08-05 20:21 System Volume Information
  dr-xr-xr-x  46 root root      8192 2004-08-05 19:53 windows
  login@ubuntu:login$ cd /media/win_d/
  login@ubuntu:win_d$ mv windows/ toto/
  mv: ne peut déplacer `windows/' vers `toto/': Permission non accordée

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

  login@ubuntu:~$ sudo mkdir /media/stock
  login@ubuntu:~$ sudo mount -t ext3 /dev/hda6 /media/stock
  login@ubuntu:~$ touch /media/stock/lala
  touch : Permission non accordée
  login@ubuntu:~$ sudo chown login:login /media/stock
  login@ubuntu:~$ touch /media/stock/lala
  login@ubuntu:~$ ls /media/stock
  lala

Avec la commande chown nous changeons le propriétaire de la racine de la partition hda6, le système de fichier est Ext3 les droits seront donc conservés et désormais cette partition appartient à l'utilisateur login peu importe où elle sera montée.

Le fichier /etc/fstab contient les points de montage pour chacun des systèmes de fichiers utilisés couramment sur le système. Un fstab est composé de plusieurs lignes décrivant chacune les conditions de montage de chaque système de fichier.

On retrouve dans ce fichier toutes les informations que nous avons déjà mentionnées. Certains systèmes de fichiers tels que /proc ou la swap sont un peu particuliers, et il est fortement recommandé de ne pas y toucher sans savoir ce que l'on fait. Les options de dump et de pass sont utilisées pour les sauvegardes (dump) et l'ordre de vérification au démarrage. Laissez-y également 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 UNIX, et à 0 pour le swap et les partitions windows (cf. man fstab).

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

  # /etc/fstab: static file system information.
  #
  # file system mount point    type        options                    dump pass
  proc          /proc          proc        defaults                   0    0
  /dev/hda2     /              ext3        defaults,errors=remount-ro 0    1
  /dev/hda3     /home          ext3        defaults                   0    2
  /dev/hda6     /media/stock     ext3        defaults                   0    2
  /dev/hda1     /media/win_c     vfat        defaults,umask=0           0    0
  /dev/hda7     /media/win_d     vfat        defaults,umask=0           0    0
  /dev/hdb1     /media/windows ntfs        ro,uid=1000,gid=1000       0    2
  /dev/hda8     /media/debian    reiserfs    defaults                   0    2
  /dev/hda5     none           swap        sw                         0    0
  /dev/hdc      /media/cdrom0  udf,iso9660 ro,user,noauto             0    0

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
defaults Correspond a rw,suid,dev,exec,auto,nouser et async
auto Montage automatique lors d'un appel mount -a
noauto Pas de montage automatique
user Autorise l'utilisateur courant à monter/démonter le système de fichier
nouser Seul le compte root peut monter/démonter le système de fichier
rw Montage en lecture/écriture
ro Montage en lecture seule
atime Met a jour la date à chaque manipulation
noatime Pas de mise à jour de la date
exec Autorise l'exécution des programmes
noexec Pas d'éxecution
setuid Les bits SUID et SGID sont pris en compte
nosuid Ne sont pas pris en compte
async Montage asynchrone
sync Montage synchrone

Il arrive que le répertoire /media/cdrom0 soit effacé. Dans ce cas, un mount renvoie une erreur explicite. Il est possible de le recréer tout simplement.

  login@ubuntu:login$ mount /media/cdrom0
  mount: mount point /media/cdrom0 does not exist
  login@ubuntu:login$ sudo mkdir /media/cdrom0
  login@ubuntu:login$ mount /media/cdrom0

Un système de fichier ne peut être démonté tant que certains de ses fichiers sont utilisés. C'est le cas par exemple lorsque vous avez un navigateur de fichiers qui affiche encore le volume en question, ou si vous êtes vous-même dans le répertoire. Dans ce cas, il faut s'assurer que le répertoire courant n'appartient pas au volume que l'on souhaite démonter.

  login@ubuntu:win_d$ sudo umount /media/win_d
  umount: /media/win_d: device is busy
  umount: /media/win_d: device is busy
  login@ubuntu:win_d$ cd
  login@ubuntu:login$ sudo umount /media/win_d
  login@ubuntu:login$

Il arrive aussi que ce soit un peu plus compliqué, et que l'on ne sache pas quelle est la ressource qui utilise le volume en question. Dans ces cas-là, il faut trouver la ressource qui gêne, grâce par exemple à la commande lsof (en tant que super-utilisateur, cette commande permet de connaître tous les descripteurs de fichiers ouverts), filtrée pour n'afficher que les descripteurs sur le volume. En tuant le processus qui utilise le volume, le démontage devient possible.

  login@ubuntu:login$ sudo umount /media/stock/
  umount: /media/stock: device is busy
  umount: /media/stock: device is busy
  login@ubuntu:login$ sudo lsof | grep stock
  xmms      4848    login    9r   REG        3,6 3430341     545188 /media/stock/divers/My Own Summer-Deftones.mp3
  login@ubuntu:login$ kill -KILL 4848
  login@ubuntu:login$ sudo umount /media/stock/
  login@ubuntu:login$

Si lors du plug d'un périphérique FAT32 une boite de dialogue apparait :

mount: wrong fs type, bad option, bad superblock on /dev/sdh2, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so

Alors dans tous vos profiles utilisateurs, lancer gconf-editor et aller à la clé /system/storage/default_options/vfat/mount_options, et retirez l'option « usefree » (BugID : 151025)

Une fois les modifications apportées, enregistrez votre ou vos fichiers de configuration, afin de prendre en compte ces modifications.

Vous pouvez redémarrer votre ordinateur dans le but de tester si les partitions sont montées automatiquement. Si vous préférez redémarrer plus tard, vous pouvez simplement saisir les deux commandes suivantes dans un terminal :

  sudo umount -a
  sudo mount -a

Vous pouvez nommer facilement vos partitions et ainsi organiser votre espace de travail. Pour cela vous devez changer le nom de votre partition dans le fichier fstab et créer un repertoire avec le même nom dans /media.

Le répertoire /media appartient par défault à root, vous devez donc utiliser les droits du superutilisateur pour le modifier.

Exemple pour renommer hda1 en stock:

sudo mkdir /media/stock

ensuite éditer le fichier /etc/fstab et modifier le nom de votre partition. Chercher /media/hda1 et remplacer hda1 par stock.

Cependant, il est possible que de nombreux logiciels aient mémorisé le chemin de fichiers sous l'ancien nom /media/hda1/suiteblabla. Plutôt que de modifier tous ces chemins, il est possibles de faire un lien symbolique de sorte que media/hda1 mène à /media/stock

Vérifier que /media/hda1 n'est plus monté:

 ls /media/hda1

Si le dossier est vide (hda1 n'est plus monté), effectuer:

   sudo rm -r /media/hda1
   ln -s /media/stock /media/hda1

Après avoir monté un disque, par exemple dans /media/disque-test, il peut être intéressant de monter l'intégralité du contenu, ou un répertoire seulement, de ce disque dans un autre répertoire sans démonter /media/disque-test.

Cela permet par exemple :

  • de « recopier » ce contenu dans un répertoire tout spécialement destiné à un partage FTP,
  • un utilisateur qui n'a pas accès au disque-test par le répertoire de montage peut ainsi se voir conférer des droits d'accès à un sous répertoire du disque-test s'il a accès au répertoire lié (le répertoire lié et les fichiers qu'il contient doivent autoriser cet accès)

Cela est possible avec l'option "bind" (bind signifie lier en anglais) de la commande « mount » qui s'utilise ainsi en ligne de commande :

mount --bind /media/répertoire-à-lier /home/user/répertoire-lié
sudo mount --bind /media/disque/répertoire /home/user/répertoire-lié

Attention : l'utilisateur du répertoire lié peut aussi modifier les données auxquelles il a accès, si les droits qui lui sont conférés par le répertoire lié et les fichiers qu'il contient le lui permettent.

On peut démonter le répertoire lié par la commande : 'umount /home/user/répertoire-lié'

sudo umount /home/user/répertoire-lié

De toute façon, lors d'un redémarrage les montages vont disparaître.

Pour faire perdurer ces montages, il faut alors spécifier ce montage dans le fichier fstab.

Éditez le fichier /etc/fstab.

On indique le montage 'bind' de la façon suivante : '/media/disque/répertoire /home/user/répertoire-lié none bind 0 0'

Voici un exemple :

  # /etc/fstab: static file system information.
  #
  # file system   mount point     type    options      dump      pass
  proc            /proc           proc    defaults     0         0
  /dev/hda2       /               ext3    defaults,errors=remount-ro 0       1
  /dev/hda3       /home           ext3    defaults     0         2
  /dev/hda6       /media/stock      ext3	defaults     0         2
  /dev/hda1       /media/win_c      vfat    defaults,umask=0      0       0
  /dev/hda7       /media/win_d      vfat    defaults,umask=0      0       0
  /dev/hdb1       /media/windows  ntfs    ro,uid=1000,gid=1000 0 2
  /dev/hda8       /media/debian     reiserfs defaults    0         2
  /dev/hda5       none            swap    sw           0         0
  /dev/hdc        /media/cdrom0   udf,iso9660 ro,user,noauto  0       0


# mes répertoires liés
/media/Maxtor1 /home/user/Maxtor1 none bind 0 0

Il suffit de retirer le dernier paragraphe du fichier fstab pour annuler l'opération au prochain redémarrage.

  • Lien vers le montage de partitions windows :

Comment acceder à ses partitions Windows ?


Contributeurs : FIXME.


1)
Il faut noter que dans la philosophie Unix, un répertoire est un fichier, mais ce n'est pas là notre propos. Consultez google pour plus d'information à ce sujet.
  • installation/mount_fstab.1226597406.txt.gz
  • Dernière modification: Le 18/04/2011, 14:49
  • (modification externe)