web-dev-qa-db-fra.com

Pourquoi le système de fichiers de Linux est-il conçu comme un arborescence unique?

Quelqu'un peut-il expliquer pourquoi Linux est conçu comme un arbre de répertoire unique?

Alors que dans Windows, nous pouvons avoir plusieurs disques comme C:\, et D:\, il y a une seule racine à UNIX. Une raison spécifique là-bas?

91
user2720323

Étant donné que le système de fichiers UNIX prédite Windows de nombreuses années, on peut reproduire la question à "Pourquoi Windows utilise-t-il un concepteur distinct pour chaque périphérique?".

Un système de fichiers hiérarchique a l'avantage que tout fichier ou répertoire puisse être trouvé comme enfant du répertoire racine. Si vous devez déplacer des données sur un nouveau périphérique ou un périphérique réseau, l'emplacement dans le système de fichiers peut rester identique et l'application ne verra pas la différence.

Supposons que vous ayez un système dans lequel le système d'exploitation est statique et une application contient des exigences d'E/S élevées. Vous pouvez monter/USR en lecture seule et mettre/opt (si l'application y vit) sur les disques SSD. La hiérarchie du système de fichiers ne change pas. Sous Windows, cela est beaucoup plus difficile, en particulier avec des applications qui insistent sur la vie sous C:\Program Files \

193
doneal24

Il n'y a pas de problèmes de sécurité derrière un arborescence unique.

Les gars qui ont conçu UNIX avaient un groupe d'expériences avec des systèmes d'exploitation nécessitant des utilisateurs de savoir quel dispositif physique contenait une ressource donnée. Étant donné qu'une partie du but d'un système d'exploitation consiste à créer une machine abstraite au-dessus du matériel réel, ils ont considéré qu'il était beaucoup plus simple de se passer de ressources à l'égard de leur emplacement physique et a décidé de tout mettre dans un seul arbre de noms.

Ce n'est qu'une partie du génie derrière la conception d'UNIX .

36
msw

Notez que les noms de lettres de lecteur de MS-DOS qui persistent dans les fenêtres modernes sont un hareng rouge ici. Les noms de lettre de lecteur ne sont pas la meilleure représentation d'une structure de système de fichiers qui a plusieurs racines. Ils sont une mise en œuvre d'un tel système.

Un système de fichiers correctement implémenté qui prend en charge plusieurs racines permettrait une nommage arbitraire pour les volumes, comme dvdrom:/path/to/file.avi. Tels que le système se débarrasserait des problèmes d'interface utilisateur risible qui peste des fenêtres. Par exemple, si vous branchez un périphérique tel qu'une caméra, l'UI de Windows Explorer vous fait croire qu'il existe un appareil appelé caméra (ou autre), et que vous avez un chemin comme Computer\Camera\DCIM\.... Toutefois, si vous coupez et collez la version textuelle de ce trajet en dehors de l'Explorer, il ne fonctionne pas réellement car certains des composants de la pathername sont une fiction d'interface utilisateur, non connue dans le système d'exploitation sous-jacent. Dans un système correctement implémenté avec plusieurs racines, tout irait bien: il y aurait un camera:\DCIM\... chemin qui est reconnu uniformément à tous les niveaux du système. De plus, si vous avez porté sur un ancien disque dur d'un ancien PC, vous ne seriez pas coincé avec un nom de lettre d'entraînement comme F:, mais plutôt vous seriez capable de nommer ce que vous voulez, comme old-disk:.

Ainsi, si UNIX avait plusieurs racines dans la structure du système de fichiers, elle serait faite de manière appropriée, et non dans MS-DOS et Windows avec des noms de lecteur d'une lettre. En d'autres termes, comparer uniquement le schéma Unix à une bonne conception multi-racines.

Alors, pourquoi l'UNIX n'a-t-il pas une mise en œuvre sain de plusieurs racines, en faveur de la mise en œuvre sain d'une racine? C'est probablement juste pour la simplicité. Les points de montage fournissent toutes les fonctionnalités de pouvoir accéder à des volumes via des noms. Il n'est pas nécessaire d'étendre l'espace de noms avec une syntaxe de préfixe supplémentaire.

Parler mathématiquement, n'importe quel graphique de l'arbre disjoint ("forêt") peut être rejoint en ajoutant un nœud racine et en faisant des pièces disjointes ses enfants.

De plus, il est plus flexible que les volumes ne doivent pas nécessairement être au niveau de la racine. Comme il n'existe aucune syntaxe spéciale qui dénote du volume (il s'agit simplement d'un composant de chemin), les points de montage peuvent être n'importe où. Si vous apportez trois vieux disques à votre machine, vous pouvez les avoir comme /old-disk/one, /old-disk/two, etc. Vous pouvez organiser des disques cependant que vous voulez, la façon dont vous organisez des fichiers et des répertoires.

Les applications peuvent être écrites qui dépendent des chemins et la validité des chemins peut être maintenue lorsque les périphériques de stockage sont reconfigurés. Par exemple, les applications peuvent utiliser des chemins bien connus comme /var/log et /var/lib. C'est à vous de décider si /var/log et /var/lib Sont sur le même volume de disque ou sur ceux séparés. Vous pouvez migrer un système vers une nouvelle topologie de stockage tout en préservant les chemins.

Les points de montage sont une bonne idée, c'est pourquoi Windows les a eu depuis autour de Windows 2000.

Les points de montage du volume sont robustes contre les modifications du système qui se produisent lorsque des périphériques sont ajoutés ou supprimés d'un ordinateur.Microsoft Tech TechNet

28
Kaz

* Nix et Windows montent leurs lecteurs. Sous Windows, ceux-ci sont automatiquement montés dans les points de montage qui, par défaut, sont en ordre alphabétique ascendant. Ces défauts sont:

  • A: et B: => floppies
  • C: => première partition du premier disque dur
  • D: => partition suivante ou disque dur suivant ou lecteur de CD/DVD si aucune autre partition n'est présente.

Chacun de ces points de montage est un répertoire.

In * Nix, les points de montage sont décidés par l'utilisateur. Par exemple, j'ai une partition montée comme /, et une autre comme /home. Donc, /home est un lecteur séparé, ce serait l'équivalent de dire E: sous Windows.

Dans les deux cas, Windows et * Nix, les points de montage sont des annuaires distincts. La seule différence est que In * Nix, ces répertoires distincts sont des sous-répertoires de /, de C: Pendant que dans Windows, chaque point de montage est monté directement sous le /, sous My Computer Disons.

Du point de vue de l'utilisateur, le principal avantage est que les supports sont complètement transparents. Je n'ai pas besoin de savoir que le répertoire /home est en fait sur une partition séparée. Je peux simplement l'utiliser comme répertoire normal. Au lieu de cela, dans DOS, je devrais l'appeler explicitement par le nom du point de montage, dites E:\home

Les lecteurs externes sont montés à peu près de la même manière dans les deux systèmes. Dire D: pour Windows et /mnt/cdrom pour Linux. Chacun d'entre eux est un répertoire, je ne vois pas vraiment la différence. Lorsque vous mettez un cdrom dans votre lecteur sous Windows, le disque est monté sur D: Comme à Linux.

13
terdon

C'est idiot. Windows a également un seul point de hiérarchie. Mais c'est caché et non standard. Comme la plupart des choses Windows.

Dans ce cas, c'est le concept "de mon ordinateur". C'est l'équivalent de la racine (/) dans UNIX. N'oubliez pas que la racine est un concept qui existe dans le noyau. vous l'aimez ou non. Tout comme Windows traite le "mon ordinateur". Bien sûr, vous pouvez monter une partition sur la racine à UNIX, et c'est ce que la plupart des gens font. Et beaucoup de choses vont regarder un chemin spécifique pour les choses (par exemple/etc /), mais vous ne vous limiterez pas. Par tous les moyens, montez vos lecteurs en/C: /. Vous n'êtes pas interdit de le faire à Unix.

C:\n'est pas une racine dans Windows, c'est le point de montage d'une partition. Qui doit être au niveau supérieur "mon ordinateur". À UNIX, vous pouvez monter une partition sous un autre arbre. Donc, Linux vous pouvez avoir C: Monté dans / Pendant que vous avez d: monté dans /mnt/d/... ou même aussi monté dans / Mais c'est délicat et dépend de la manière dont les deux systèmes de fichiers se comportent lors du montage sur un chemin déjà monté.

Vous pouvez donc obtenir exactement la même chose que vous avez avec Windows en "forçant" vous-même pour suivre les mêmes limitations Windows vous imposer de manière aléatoire sur vous.

/ (treat this as "My Computer")
/c/ (mount your first data partition here)
/d/ (mount your second data partition here)

Ensuite, vous devriez passer dans les options de montage sur les options de démarrage. Puisque vous n'aurez pas de/etc/... Mais cela simule également que les limitations Windows impose, comme cela.

5
gcb

La raison de Windows ayant des lettres d'entraînement remonte probablement plus loin que Microsoft et DOS. L'attribution de lettres à des lecteurs amovibles était courante sur les systèmes IBM, de sorte que Microsoft a peut-t-à disposer d'agir sur les instructions d'IBM en copiant CP/m. Et initialement, DOS n'avait pas de répertoires de toute façon.

Lorsque MS-DOS a couru sur des ordinateurs avec un ou deux disques amovibles et aucun support fixe, vous n'avez pas vraiment besoin d'un système de fichiers avec des répertoires. Avec un, ou peut-être deux disques de 180 kilobytes, vous n'avez jamais eu assez de fichiers pour avoir beaucoup de difficulté à les organiser.

https://fr.wikipedia.org/wiki/drive_letter_asignment

5
david25272

En réalité, Linux est basé sur UNIX (OU UNIX, voir Discussion ) et Unix provient de l'environnement centralframe, où l'utilisation de plusieurs appareils était assez évidente. Les dispositifs de montage dans l'arborescence unique de répertoires vous confèrent une flexibilité maximale et ne limitent pas le nombre d'appareils que le système d'exploitation peut accéder.

De l'autre côté, les lettres DOS pour les lecteurs sont un bon design pour un PC avec 1 ou 2 stations de disquettes et un lecteur de disque unique. BIG FLOPPY 5,25 'est toujours un:, petit 3,5' est toujours B: et le lecteur de disque est toujours C :. Vous savez toujours si vous copiez un fichier sur la disquette ou quelque part sur le disque. Vous n'avez pas besoin de flexibilité si vous ne pouvez pas connecter physiquement plus de 2 lecteurs de disquettes et 2 (ou 4) disques durs.

DOS Design était plus convivial final, tandis que UNIX Design est adapté à l'administrateur. Maintenant, les lettres d'entraînement sont un fardeau pour Windows, les utilisateurs reposent plus sur une fenêtre d'explorateur d'ouverture automatique avec un contenu d'entraînement amovible que de connaître sa lettre ... Ubuntu fait la même chose, en fait.

4
Danubian Sailor

Ce n'est pas vrai, en fait. Windows utilise un autre schéma de chemins (bien, pas le même)

"Lettres unitaires" ne sont que quelque chose à mémoriser facilement des chemins, des disques et des partitions.

Les chemins d'arc définissent le chemin d'un fichier sous Windows (mais ils sont visibles à l'utilisateur uniquement au démarrage):

http://support.microsoft.com/kb/10287

https://serverfault.com/questions/5910/how-do-dethermine-tharc-path-for-a-particulaire-drive-leter-in-windows

Dans Windows NT, il n'y a pas de relation entre les disques, les partitions et les lettres unitaires: vous pouvez "mettre" un volume entier dans un dossier (E.G.: C:\myseconddisk pourrait être un disque physique complet!)

1
AndreaCi

Si vous regardez en arrière dans l'histoire, vous pouvez également voir que UNIX a commencé à 8 systèmes de bande de piste pour les systèmes de données IBM audio et 9 pistes (8 pistes/8 bits pour les données, une pour la parité). Techniquement très pareil.

A cette époque, les informations sur l'emplacement des fichiers ont été stockées dans des parties des informations sur bande et en avant et en arrière définies lorsque vous lisez des données de la bande (comme un fichier, avec STARTPOSITION et SIGNATURE FIN); Il vous explique également pourquoi vous n'aviez pas qu'une graisse au début de la conduite - vous avez eu plusieurs pour accélérer la recherche. Et si vous aviez plusieurs lecteurs, ils sont liés à l'intérieur de/dev et via l'adresse du fichier que vous avez déplacé entre les appareils.

Je pense que vous pourriez avoir l'opinion qu'il a commencé simplement plus tôt et que la décision de la région de MS DOS (CP/M) et de la version ultérieure Windows NT est simplement liée à des lettres de lecteur deVM au lieu d'un seul point d'entrée. Parce qu'à l'époque, il semblait plus moderne, les quantités de données d'aujourd'hui n'existaient pas et ils ne pensaient pas que vous finiriez pas de ne pas avoir assez de lettres d'entraînement ou que cela serait trop encombré.

9-piste-lecteur et affectation de la lettre d'entraînement

0
Peter

Deux choses que je voudrais souligner -

  1. Les disques durs de Linux sont en fait d'une manière affectée des lettres/noms, comme/dev/sdb1. Mais ils peuvent être montés n'importe où à atteindre de la structure unique/racine
  2. La raison la plus courante que les gens (y compris moi-même dans le passé) avaient des lecteurs séparés dans Windows devaient avoir quelque part pour conserver des documents, de la musique, des programmes, etc. afin que lorsque Windows devait inévitablement être réinstallé ou remplacé, sa mise à niveau ou un virus ou Échec du système de fichiers, il y avait toujours accès à ces fichiers. Je n'ai pas ce problème sous Linux - le système de fichiers est beaucoup plus fiable, le système d'exploitation ne casse pas à moins d'une action directe ou d'une erreur de la part de ma part (OOH! Un repo-bête saignant, essayons cela!) Et des mises à niveau sont beaucoup plus simples. Et, dans le cas rare, je devais réinstaller, car tout le logiciel était disponible via Repos ou PPA que j'ai ajouté (et je pouvais facilement copier mon domicile avec un disque en direct), à partir de zéro et de revenir à l'endroit où je Il ne prend que quelques heures par rapport aux jours de recherche de nouveaux installateurs et/ou anciennes clés de CD lors de la restauration de mes programmes sous Windows.
0
Drake Clarris