Monter un dossier sur un lecteur dans fstab. Bouge toi?

Je voudrais apporter un changement temporaire à mon file fstab afin que mon /home soit sur un autre lecteur. Cependant, je ne veux pas que toute la partition soit montée, mais juste un dossier ("home") sur cette partition. Je suis OK avec le rest des données étant indisponible.

Quelle est la manière canonique d'exprimer cela dans fstab ? Je ne peux pas penser à un moyen de le faire dans une command (comme je ne peux pas referencer un dossier sur un système de files que je n'ai pas monté). Je pense que je devrais faire un premier assembly et ensuite déplacer le dossier vers /home . Mais je ne sais pas si je peux faire un mouvement dans fstab , je ne l'ai pas trouvé chez l' man (et je n'ai pas envie d'essayer aveuglément car je n'ai access à la machine que maintenant).

Pour l'instant j'ai un mount bind dans fstab :

 /dev/sdd1 /mnt/temphome ntfs defaults,errors=remount-ro 0 2 /mnt/temphome/home /home none bind 

Cependant ceci laisse /dev/sdd1 monté dans les deux points.

Résumer:

  • puis-je faire une opération de assembly de mouvement dans fstab et si oui, alors comment?
  • est-ce la bonne approche et sinon, qu'est-ce que c'est?

Merci d'avance.

Je ne pense pas que vous puissiez effectuer des mouvements à partir de /etc/fstab . Si vous voulez faire cela, ajoutez une command mount --move dans /etc/rc.local . Cela laisse un time dans le process de démarrage pendant lequel les directorys de départ ne sont pas disponibles à leur location final. Étant donné que ce sont les directorys de départ, ils ne devraient pas être utilisés beaucoup, voire pas du tout pendant le process de démarrage, donc c'est ok. La seule chose à laquelle je peux penser est les directives @reboot crontab. Si vous en avez un, les directorys personnels doivent être disponibles, vous devez donc append mount --move au bon endroit dans /etc/rc.sysinit (juste après mount -a ).

L'utilisation d'un assembly bind est probablement très bien. Ce qui peut mal tourner est principalement les process qui traversent le disque entier, tels que les sauvegardes et les mises à jour. Laisser la binding monte dans /etc/fstab est l'option la less risquée, mais vous devez configurer les process de traversée de disque pour ignorer /mnt/temphome/home .

Une autre possibilité est de faire /home un lien symbolique. Toutefois, certains programmes peuvent save le path absolu vers les directorys personnels des users, ce qui correspond à /mnt/temphome/home/bob . Un bind mount ou le déplacement d'un submount n'a pas ce problème.

Non, vous ne pouvez pas faire ce que vous requestz. Comme vous l'avez noté, vous ne pouvez pas referencer un file dans un système de files que vous n'avez pas encore monté. [*]

Cependant, il existe un schéma qui pourrait fonctionner pour vous: un système de files dans la partition du donneur, monté via le périphérique de boucle. Considérer:

 # cd /mnt/temphome # chmod 700 . # chown root.root . # dd if=/dev/zero of=temphome bs=4k count=1M # mke2fs -j temphome (answer yes to the annoying question) # mount temphome /home -o loop 

Cela crée un système de files de 4 Go /home qui vit dans un file à la racine de la partition /mnt/temphome . Vous devez toujours monter la partition du donneur et la laisser montée, mais seule la racine peut la monter ou changer son contenu directement, y compris le assembly /home via le périphérique loop. Une fois que vous avez monté le nouveau /home , les users normaux peuvent écrire dans ce nouveau système de files car ils le font par le biais du kernel, qui a le pouvoir de le faire, une puissance contrôlée par les permissions du système de files de la boucle .

Si pour une raison qui expose encore la partition /mnt/temphome à plus de risques que vous ne souhaitez accepter, la meilleure alternative que je puisse imaginer est d'utiliser gparted pour réduire la partition du donneur et utiliser l'espace ouvert pour créer une nouvelle partition temporaire /home partition de la /home . Lorsque vous avez fini de l'utiliser, réapparaissez dans gparted, supprimez la partition temporaire et redéployez la partition du donneur pour utiliser l'espace libéré. Cela comporte cependant ses propres risques: la modification des partitions n'est pas sûre à 100%.


[*] Eh bien, ce n'est pas tout à fait vrai. Parfois, vous voyez des sortingcheries impliquant la connaissance de l'location exact du disque (secteur, tête, piste) des files dans d'autres filesystems. C'est le plus fréquent dans les activités de bas niveau: hibernation, swap, booting … Pour que cela fonctionne, vous avez besoin d'un file complètement contigu (c'est-à-dire sans fragmentation) qui ne bouge jamais. et à une partition non montée.

Si vous regardez la tendance de ces choses au fil du time, cependant, vous remarquez qu'ils ont tendance à devenir less populaires au fil du time, en raison des diverses conséquences. D'une part, les défraggeurs ont tendance à briser de tels schémas. C'est une des raisons /boot et swap sont généralement des partitions séparées sous Linux.