Comment Linux garde-t-il les filesystems?

Comme je le sais, Linux a une couche abstraite de tous les filesystems et cette couche est VFS . Si je crée un nouveau système de files, je devrais suivre les règles de VFS (voir « Anatomie du commutateur de système de files virtuel Linux » pour plus d'informations). Après avoir créé ce nouveau système de files, je vais le monter dans la hiérarchie des directorys. Mais j'ai un problème ici: comment le operating system Linux connaît mon système de files?

En fait, il peut y avoir de nombreux filesystems sous Linux. Certains d'entre eux sont montés et peuvent être trouvés avec la command mount , d'autres ne sont pas montés mais vous pouvez les monter quand vous le souhaitez. Ces disques démontés sont-ils enregistrés dans un endroit du operating system? Je sais qu'il y a deux files /etc/fstab et /etc/filesystems peuvent être concernés par ma question mais je ne suis pas sûr.

Les filesystems qui ne sont pas montés ne sont pas accessibles pour le moment. Vous pouvez les modifier indirectement, par exemple en accédant directement au périphérique sous-jacent (pour les filesystems stockés sur un disque local) ou en les accédant depuis une autre machine (pour les filesystems réseau). Mais sinon, les filesystems démontés n'existent pas en ce qui concerne le operating system. Compte tenu de l'existence de filesystems réseau (entre autres), il y a une quantité ininterrompue de filesystems non montés (tous les directorys sur chaque).

Pensez au file /etc/fstab comme file de configuration pour la command mount . Il contient des raccourcis, vous pouvez appeler mount /path/to/mount/point ou mount /dev/device_name et mount searchra une ligne correspondante dans /etc/fstab et complétera la command line avec un nom de périphérique ou un sharepoint assembly, un type de système de files et des options de assembly. Si une input a l'option user , tout user peut appeler la command mount sur cette input (en général, mount est réservé à root).

En outre, /etc/fstab répertorie les filesystems montés au démarrage. Toutes les inputs de ce file qui n'ont pas l'option noauto sont montées au moment du démarrage avec les options fournies. Il y a généralement d'autres filesystems qui ne sont pas mentionnés dans ce file et qui sont montés par des scripts de démarrage (sur un système Linux typique, ce qui inclut /dev , /dev/pts , /proc , /sys et quelques autres).

/etc/filesystems est une fonctionnalité rarement utilisée de mount sous Linux qui vous permet de personnaliser son comportement lorsque vous ne passez pas un type de système de files ou passez auto . Sans ce file, mount essaie les types de filesystems répertoriés dans /proc/filesystems . Les types de filesystems sont essayés en séquence: si le assembly avec la première input échoue, mount essaie la seconde, et ainsi de suite.

Réponse courte, c'est qu'il ne sait pas.

Mais il y a des façons de donner des conseils. Historiquement, cela a été fait via une label dans la table de partition d'un disque fixe. Mais ce n'est encore qu'un indice de ce système de files – certains outils s'appuieront sur cet indice (par exemple, mkfs – qui est juste un simple front end à mkfs.umsdos, mkfs.ext3, mkfs.reiserfs ….)

Une autre approche consiste à essayer de renifler le type de système de files en lisant les octets de la partition brute (mount fait ceci pour choisir entre les différents types compatibles MSDOS). Ou conservez une database de filesystems sur les identificateurs de périphériques connus.

Étant donné la diversité des filesystems, il n'y a pas d'approche unifiée qui sera toujours exacte.

Ainsi, le système utilisera le type de système de files (ou au less la famille) que l'administrateur lui indique d'utiliser.