web-dev-qa-db-fra.com

Est-il prudent de créer des liens symboliques pour l’ensemble de la machine?

J'ai une machine virtuelle avec une quantité de stockage limitée qui est devenue un problème. Mon répertoire personnel est lié au stockage NFS sur un serveur et il fonctionne sans problème. Mais je dois maintenant relier toute ma machine au NFS et je manque constamment de stockage!

Je me demande seulement s'il est sûr de relier la machine entière (c'est-à-dire la totalité: /) au NFS?

Je veux utiliser les commandes suivantes pour le faire:

/storage/nfs est fondamentalement mon NFS monté.

$ mkdir /storage/nfs/myvmroot
$ Sudo cp -rp /* /storage/nfs/myvmroot
$ Sudo mv /* /old-root
$ Sudo ln -s /storage/nfs/myvmroot /
6
zirodec

Vous ne pouvez pas créer _/_ un lien symbolique. Ce n'est tout simplement pas possible. _/_ doit être un répertoire. Si _/_ était un lien symbolique, il indiquerait un chemin - et pour résoudre ce chemin, le système passerait par _/_, qui est un lien symbolique qui doit donc être résolu ... les points situés sous lui-même provoquent toujours une erreur lorsqu’elle est déréférencée, mais dans tous les cas, vous ne pourrez pas créer de _/_ un lien symbolique car c’est déjà un répertoire existant.

Ce que vous pouvez faire, et vous obtiendrez l'effet que vous vouliez, est de monter un système de fichiers NFS en tant que système de fichiers racine, au lieu de monter un système de fichiers local comme d'habitude. Ceci est possible et soutenu par Ubuntu. Il y a un tutoriel sur le wiki de la communauté Ubunt (il couvre une installation complète sans disque, vous pouvez ignorer les parties concernant TFTP si vous conservez _/boot_ localement). Le déplacement d'un système existant est un peu différent de l'installation initiale. Ne vous attendez donc pas à suivre le didacticiel à la lettre.

Vous devez vous assurer que initramfs contient les pilotes nécessaires. Initramfs est généré par la commande update-initramfs en fonction de la configuration système actuelle et des fichiers de configuration sous _/etc/initramfs-tools_. Vous devrez explicitement ajouter les paramètres NFS à /etc/initramfs-tools/initramfs.conf , ajoutez au moins une ligne _BOOT=nfs_ (je pense que les autres paramètres peuvent être spécifiés au démarrage, mais _BOOT=nfs_ est nécessaire pour inclure les pilotes NFS, et _DEVICE=…_ peut également être nécessaire pour inclure le pilote Ethernet). Une fois que vous avez modifié _/etc/initramfs-tools/initramfs.conf_, exécutez _update-initramfs_.

Je recommande de conserver _/boot_ en tant que partition locale, séparée de _/_, si ce n'est déjà fait.

N'utilisez pas _cp -rp /* /storage/nfs/myvmroot_ pour copier des fichiers , cela ne fonctionnerait pas. Vous devez exclure les systèmes de fichiers montés de la copie. Passez l'option _-x_. En outre, utilisez _-a_ plutôt que _-rp_, il existe des attributs que _-rp_ ne conserve pas.

_cp -ax /* /storage/nfs/myvmroot
_

ou, au cas où la copie serait interrompue

_rsync -axAX / /storage/nfs/myvmroot
_

Une autre option, probablement plus simple, consiste à conserver le système de fichiers racine en local et à n'en déplacer qu'une partie. Vous obtiendrez généralement des performances et une fiabilité nettement meilleures avec un système de fichiers local par rapport à NFS, même avec un serveur rapide et un réseau rapide.

Vous ne pouvez pas couper n'importe où: vous n'avez pas besoin de ce que vous mettez à distance trop tôt dans le processus de démarrage. Je pense que couper à _/usr_ n’est pas officiellement supporté par Ubuntu de nos jours, mais bien par Debian, la distribution parente d’Ubuntu, qui a donc une chance de fonctionner. Un autre endroit qui a de bonnes chances de travailler est _/usr/share_. Je ne recommande pas _/var_, il y a de fortes chances que quelque chose se casse, car c'est là que les journaux sont conservés. (Si le client NFS est mécontent de quelque chose et tente d'écrire des journaux sur _/var/log_ mais _/var_ ne répond pas, bonne chance pour diagnostiquer l'échec.)

10
Gilles

Non, cela rendrait votre machine virtuelle non amorçable. Le système NFS est chargé à un moment donné du processus de démarrage. Avant ce point, aucun fichier sur le NFS ne sera accessible. Cela signifie que la machine ne pourra pas accéder aux fichiers nécessaires au démarrage. Ceux-ci incluent (mais ne sont pas limités à) le noyau lui-même, le shell par défaut /bin/sh et tout ce qui se trouve sous /bin qui inclut les commandes nécessaires au montage du partage NFS.

Donc non, ce n'est pas une bonne idée. Plus important encore, ce n'est pas nécessaire. La plupart des répertoires de / ne sont pas très grands. Identifiez simplement celui qui occupe l'espace et mettez celui-là. Vous devriez pouvoir déplacer l’un des éléments suivants sans problèmes majeurs:

  • /var/cache
  • /usr/local
  • /usr lui-même peut également être déplacé, mais assurez-vous que rien d’essentiel n’est dans /usr/local/bin. Ce ne sera probablement pas, mais vérifiez.

Ce sont probablement ceux qui occupent l'espace de toute façon.

10
terdon