Anthony HERVÉ

Ingénieur édudes et développement

Machine virtuelle : montage or not montage ?

28/10/2017
Image actualité

Bonjour,

 

Dans mon boulot, je travaille beaucoup avec des machines virtuelles car mon ordinateur est sous Windows. Il est quand même mieux de travailler sur des machines Linux pour se rapprocher au maximum de l'environnement cible de production.

Je ne sais pas vous, mais je me retrouve toujours avec la même question : est-ce que le dossier de mon projet doit être sur mon environnement hôte (Windows) ou sur ma machine virtuelle ? En d'autres termes, est-ce que je dois effectuer un montage ?

 

Après plusieurs tests, il s'avère que chaque méthode a ses avantages et ses inconvénients. Le fait de choisir l'une ou l'autre des méthodes dépend également du framework que vous utilisez.

 

Dossier sur la machine Windows

Comment faire ?

Si vous utilisez Virtualbox, il suffit de créer un dossier partagé dans la configuration de votre machine, puis Dossiers partagés. En cliquant sur la petite icône du + vert, vous arrivez sur cet écran.

  • Chemin du dossier : chemin du dossier sur votre machine hôte
  • Nom du dossier : ce nom sera utilisé pour faire le montage sur la machine virtuelle
  • Cochez la case Configuration permanente pour conserver le dossier partagé
  • Vous pouvez ensuite cocher la case Montage automatique. Au démarrage de la machine, Virtualbox créera tout seul le montage dans le dossier /media/sf_<nom dossier>

Avantages et inconvénients

  • Si on utilise le montage automatique, le dossier est partagé automatiquement ce qui évite d'avoir à effectuer certaines actions au démarrage de la machine
  • Cependant, le montage est créé avec l'utilisateur root et le groupe vboxsf. Cela peut entraîner des problèmes de droit par la suite.
  • Ce problème de droit peut être corrigé en effectuant le montage manuellement.
    • Il ne faut pas cocher la case Montage automatique
    • Sur la machine, lancer la commande suivante pour monter le dossier en tant que super utilisateur : mount -t vboxsf <nom dossier virtualbox> <dossier machine virtuelle> -o uid=<id utilisateur>,gid=<id groupe>
    • Via cette commande, vous pouvez donc définir l'utilisateur et le groupe pour le dossier monté
  • Les sources sont sur votre machine hôte, ce qui fait que vous pouvez les modifier sans ouvrir votre VM
  • L'IDE que vous utilisez va donc être plus rapide, car il n'y aura pas de temps de latence dû à la synchronisation
  • Votre site risque par contre d'être plus lent (constaté sur Magento 1 et Symfony, voir exemple plus loin)

Dossier sur la machine virtuelle

Comment faire ?

Là c'est beaucoup plus simple. Il suffit de ne pas créer de dossier partagé sous Virtualbox et de créer le dossier où vous voulez sur votre machine.

La partie la plus délicate est de pouvoir partager ce dossier avec Windows. La solution que j'utilise est l'utilitaire samba. Pour l'installer, lancer les commandes suivantes.

sudo apt-get install samba
sudo systemctl enable samba

La deuxième ligne permet de lancer automatiquement le service au démarrage de la machine.

Il faut ensuite configurer samba pour lui indiquer le partage que l'on souhaite faire. Il faut éditer le fichier suivant /etc/samba/smb.conf et ajouter le code suivant à la fin.

[web] #Nom du partage
    comment = Web root
    path = /var/www #Chemin du dossier à partager
    valid users = user @group #Utilisateurs ou groupe d'utilisateurs autorisés au partage
    read only = No
    create mask = 0775
    directory mask = 0775
    browseable = yes
    public = yes
    writable = yes

Dans mon exemple, je dois avoir sur ma machine un arv. Pour créer un utilisateur samba, utiliser la commande suivante qui vous demandera de taper le mot de passe.

smbpasswd -a arv

Il faut ensuite ajouter un lecteur réseau à votre machine hôte Windows. Pour cela, faites un clic droit sur Ordinateur puis cliquer sur Connecter un lecteur réseau. Vous allez voir le formulaire ci-dessous.


On vous demandera ensuite d'entrer les informations de connexion. Par exemple, il s'agira pour moi de l'utilisateur arv et du mot de passe que j'ai entré en créant l'utilisateur samba.

Avantages et inconvénients

  • Le partage est un peu long à mettre en place.
  • Les sources de votre code sont sur la VM, donc vous êtes obligé de l'ouvrir pour les modifier.
  • Votre IDE va être un peu plus lent car il va synchroniser sans arrêt les fichiers. Je vous invite à le configurer convenablement afin d'exclure les dossiers trop lourds (log, cache...).
  • Votre site va être plus rapide.

Exemple

Pour finir, je vous donne juste un comparatif que j'ai fait. Voici mon environnement :

  • Symfony 3
  • Nginx
  • PHP 7
  • MariaDB

Temps d'affichage de la page d'accueil de base de Symfony (temps constaté avec le profiler Symfony) :

  • Sources sur machine hôte Windows : 20s en moyenne
  • Sources sur VM : 100ms en moyenne

Comme vous pouvez le constater, il n'y a vraiment pas photo dans mon cas. J'ai donc choisi de mettre mes sources sur ma VM car je n'ai pas envie que chaque page prenne 20s à charger. Sinon je ne finirai jamais mes projets !

Conclusion

Je vous invite à faire un test au préalable dès que vous avez votre environnement en place. Vous verrez vite la différence au niveau du chargement et vous pourrez alors choisir sereinement la bonne solution pour vous.

 

A bientôt.

 

vm

Commentaires