Imaginez que j'ai formaté la racine avec un système de fichiers ext3 sur une partition distincte qui se trouve sur un disque dur SATA et le répertoire personnel sur une partition btrfs différente qui se trouve sur un SSD Intel.
J'ai téléchargé un fichier sur Internet et l'ai temporairement enregistré dans /tmp
(dans le système de fichiers racine), puis j'ai décidé de le déplacer vers mon répertoire personnel (la deuxième partition).
Je peux sentir le processus douloureux qui se produit en arrière-plan pour faire fonctionner une mv
commande aussi simple .
Donc, tout d'abord, est-il possible que la racine et la maison aient des systèmes de fichiers différents? En second lieu , en supposant que la réponse à la question précédente est « oui », comment le système d' exploitation gère tout ce passage de ext3
la btrfs
puis en utilisant différents pilotes de périphériques pour différents types de disques (HDD et SSD)?
la source
Réponses:
La réponse est oui, vous pouvez avoir n'importe quel répertoire sur n'importe quel appareil, exécutant n'importe quel système de fichiers que le système d'exploitation peut prendre en charge.
Vous pouvez donc avoir
/
/var
/home
/opt
et même/home/afr0ck
sur différents appareils, différentes partitions, différents systèmes de fichiers.Non seulement vous le pouvez, mais c'est courant. Par exemple, il est toujours recommandé de conserver
/var
et/home
sur différentes partitions/
car celles-ci sont les plus susceptibles de consommer par inadvertance de l'espace disque - si elles se remplissent, cela n'affecte pas trop le système. S'ils se trouvent sur la même partition que root, cela peut entraîner l'arrêt du système.Et vous pouvez souhaiter que différents répertoires s'exécutent sur différents appareils pour des raisons de vitesse. Et utilisez différents systèmes de fichiers à différentes fins. Par exemple, peut-être ext4 est ce que vous voulez pour les fichiers du système d'exploitation, car ils ne changent pas beaucoup, mais vous pouvez vouloir btrfs pour / home afin que vous puissiez conserver des instantanés pour les sauvegardes. Ce sont toutes des décisions qui peuvent être prises par chaque personne pour son cas d'utilisation spécifique.
La partie espace utilisateur du système d'exploitation n'a pas besoin de comprendre les différents types de périphériques et de systèmes de fichiers. Tout ce qu'il fait, il demande au noyau de déplacer un fichier, et le noyau orchestre tout à partir de là. Ainsi, la
mv
commande (par exemple) est indépendante du système de fichiers et du type de périphérique. Le noyau appelle tous les pilotes nécessaires pour lire et écrire dans les différentes partitions.la source
mv(1)
tente d'abordrename(2)
le fichier. Ensuite, il revient à copier-supprimer. Donc, essayer de renommer est de savoir commentmv
déterminer s'il est possible de manière agnostique FS. (rename(2)
échoue toujours lors du déplacement entre différents périphériques, qu'ils utilisent ou non le même pilote de système de fichiers, @ afr0k.)mv
ne charge pas / n'exécute pas larename(1)
commande, il essaie juste l'rename(2)
appel système. Il n'y a pas derename
commande shell standard . Sur certains systèmes, il s'agit de la commande de changement de nom de fichiers multiples à substitution de modèle d'util-linux. Je ne parlais pas de la commande shell, de la façon dontmv
fonctionne en interne.Oui, des systèmes de fichiers séparés (points de montage) peuvent être différents types de systèmes de fichiers.
/proc
est toujours unprocfs
système de fichiers, et/sys
est toujours unsysfs
. Les systèmes de fichiers transitoires (y compris parfois/tmp
) le sont souventtmpfs
et, dans les paramètres de groupe de travail, il est courant que les répertoires personnels de l'utilisateur (et leurs répertoires de produits de travail) soientnfs
ou d'autres types de systèmes de fichiers distants (réseau / partagé).Il n'y a pas de gestion spéciale pour le système d'exploitation. Jusqu'à un certain point, au niveau de l'utilisateur, tous les systèmes de fichiers se ressemblent, dans le sens où une
ls
liste sera à peu près la même dans n'importe quel répertoire. Au-delà de ce point, les systèmes de fichiers n'interagissent pas. Même entre deux systèmes de fichiers (partitions) sur le même disque physique, du même type de système de fichiers, il n'y a pas de liaison 1 . Par exemple, le déplacement d'un fichier d'un système de fichiers (point de montage) vers un autre implique toujours de faire une copie et de supprimer l'original. Peu importe qu'il s'agisse de partitions sur différents disques. Peu importe si l'un d'eux est un disque dur et un SSD. Peu importe si on estext3
et on estbtrfs
. Peu importe si l'un est interne (à l'intérieur du boîtier de l'ordinateur) et l'autre externe (quelques pouces à l'extérieur, connecté par un câble) - ou distant (accessible via le réseau).En parlant de réseau, c'est un peu analogue à
ssh
. Il lit à partir du clavier et envoie les caractères que vous saisissez au réseau. Simultanément, il lit sur le réseau et affiche les résultats à l'écran.Ou considérez ceci: imaginez que vous êtes au téléphone et que vous êtes en train de négocier une conversation entre la personne sur l'autre téléphone et une autre personne dans la pièce. Ce n'est pas grand chose.
________
1 sauf pour les liens symboliques - mais ils peuvent traverser les limites du système de fichiers.
la source
/tmp
sur tmpfs? J'ai également pensé que c'était à peu près une pratique standard, car vous pouvez toujours y mettre des choses/var/tmp
(bien que cela ne soit pas nettoyé au démarrage). Je ne suis pas un expert des valeurs par défaut des distributions croisées, juste Debian / Ubuntu et Arch. Avec ceux-ci plus RedHat, cela couvre une grande partie des systèmes Linux installés (mais pas autant qu'une grande partie du total des distributions).tmpfs
Linux n'est récente que depuis environ 5-7 ans. Par exemple, Fedora discutait du changement sur leur wiki ~ 2012, et je pense qu'il a été introduit dans Debian Wheezy.