web-dev-qa-db-fra.com

Qu'est-ce que / etc / mtab sous Linux?

Quel est /etc/mtab sous Linux?

Pourquoi est-il nécessaire et avantages de l'avoir?

30
Sathish kumar
Fichier% /etc/mtab[.____.[/etc/mtab: lien symbolique vers ../proc/self/mounts[.____. E5E% fichier /proc/mounts[.____.[/proc/mounts: lien symbolique à soi/monte 
%

/etc/mtab Est un mécanisme de compatibilité. Il y a des décennies, Unix n'avait pas d'appel système pour lire les informations de montage existantes. Au lieu de cela, les programmes qui montaient des systèmes de fichiers étaient censés maintenir de manière coopérative et volontaire une table dans /etc/mtab De ce qui était monté où.

Pour des raisons évidentes, ce n'était pas un mécanisme idéal.

Linux a gagné la notion de "procfs", et une des choses qu'il a gagnées était une version maintenue par le noyau de cette table, sous la forme d'un fichier pseudo-régulier mounts. L '"appel système" pour lire les informations de montage hors du noyau est devenu une séquence d'ouverture-lecture-fermeture par rapport à ce fichier, suivie par l'analyse du résultat de la forme lisible par l'homme à la forme lisible par la machine (quelque chose qui a des captures subtiles, comme vous peut voir des rapports de bogues d'il y a un peu plus de quinze jours).

/etc/mtab Est ainsi devenu un lien symbolique vers /proc/mounts, Permettant aux programmes qui avaient câblé ce nom de continuer à lire une table de montage à partir de ce fichier, que les programmes qui montaient et démontaient les systèmes de fichiers n'avaient plus à faire explicitement quoi que ce soit pour se tenir à jour. (Certains d'entre eux le seront quand même, si /etc/mtab S'avère être un fichier normal accessible en écriture. Et il y a quelques cas où les informations normalisées dans mounts manquent de tout ce qui n'est pas du noyau n'est pas tout à fait ce qui est nécessaire, bien qu'ils ne l'emportent pas sur les problèmes généraux avec /etc/mtab.)

Chaque processus peut de nos jours avoir sa propre vue individuelle de ce qui est monté, et il y a donc maintenant des fichiers mounts individuels pour chaque processus dans le procfs, chaque table de chaque processus y étant accessible via le self lien symbolique comme self/mounts, et /proc/mounts est également maintenant un mécanisme de compatibilité. (Fait intéressant, ni le processus par processus mounts ni le format de mounts ne sont documentés dans le doco Linux actuel, bien que le fichier pseudo-régulier mountinfo similaire le soit.)

SunOS/Solaris a un mécanisme similaire. Le fichier /etc/mnttab Est en fait un système de fichiers à fichier unique, et en plus de lire la table, via un descripteur de fichier ouvert vers ce fichier, avec l'appel système read(), on peut surveiller le montage modifier les points avec poll() et obtenir diverses autres informations avec ioctl().

Dans HP-UX, /etc/mnttab Est également le nom du fichier, mais à partir de la version 11, il s'agissait toujours d'un fichier normal dont le contenu était géré de manière coopérative par les programmes utilitaires système.

AIX n'exporte pas de table de texte lisible par l'homme que les programmes doivent analyser et il n'y a pas de fichier équivalent. De même, les BSD ont des appels système à part entière, getfsstat() sur FreeBSD et OpenBSD, pour que les programmes obtiennent la table de montage du noyau sous une forme lisible par machine sans la rassembler via une forme intermédiaire lisible par l'homme.

Lectures complémentaires

51
JdeBP

Selon man mount:

Les programmes mount et umount conservaient traditionnellement une liste des systèmes de fichiers actuellement montés dans le fichier/etc/mtab. Ce vrai fichier mtab est toujours pris en charge, mais sur les systèmes Linux actuels, il vaut mieux en faire un lien symbolique vers/proc/mounts, car un fichier mtab normal maintenu dans l'espace utilisateur ne peut pas fonctionner de manière fiable avec les espaces de noms, les conteneurs et d'autres fonctionnalités avancées de Linux.

Sur montage sans enregistrement dans /etc/mtab:

-n, --no-mtab

Montez sans écrire dans/etc/mtab. Cela est nécessaire par exemple lorsque/etc est sur un système de fichiers en lecture seule.

Beaucoup plus de nuances sont données dans la page de manuel.

12
Christopher