J'essaye desesperement d'utiliser NFS a la place de vboxsf qui est vraiment tres lent.

Il y a un projet winnfsd https://bitbucket.org/jankowfsky/winnfsd qui propose un serveur NFS pour windows.
Je l'utilisais sous vagrant sans soucis.

Mais avec boot2Docker je dois manquer une etape. Impossible de monter mon repertoire dans la vm.

1) Je demarre mon serveur NFS sous windows en faisant .\winnfsd.exe C:\web

2) Dans boot2docker je demarre le client nfs en faisant:
sudo /usr/local/etc/init.d/nfs-client start

3) Je monte mon repertoire:
sudo mount -t nfs 10.0.0.1:/C/web /var/www -o vers=3

Mais la j obtiens l'erreur:

pmap_getmaps.c: rpc problem: RPC: Procedure unavailable
mount: RPC: Remote system error - Connection refused
mount: mounting 10.0.0.1:/web on /var/www failed: Bad file descriptor

Je suis a cours d'idee...

7 réponses


Salut salut,
Je viens de lire ton problème et j'ai une petite question à te poser :

Je ne comprends pas très bien, tu veux simplement monter le dossier C:/web sur boot2docker ou tu veux à tout prix utiliser nfs ?
Car d'après ce que j'ai vu, le dossier C:/ est déjàmonté sous /c sur boot2docker. Il ne te reste donc plus qu'à aller dans c/web/ .

En revanche si tu parles bien d'utiliser à tout prix NFS je vais voir ce que ça me retourne en faisant de même ;)

Je ne sais pas si l'image sur laquelle est basé boot2docker peut causer problèmes car elle n'a accès qu'aux fonctions de base, enfin bref, je te tiens au courant ! O/

heyyo
Auteur

Je veux effectivement monter le dossier C:\web avec NFS pour des questions de performance . vboxsf est bien trop lent.
http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines
Le répertoire qui est monté par défaut dans boot2docker est c:\users donc c:\Web ne pose pas problème.
Le problème a mon avis est plus au niveau réseau. car winnfsd écoute sur l ip de mon host 10.0.0.1 mais l ip de boot2docker est en 192.168.....
J ai vu sur le github de boot2docker beaucoup de gens sur mac qui arrivent à monter des répertoires en nfs. mais sous mac nfs est natif et ils peuvent préciser dans leur fichier /etc/exports sur quel Ip nfs doit ecouter celle de boot2docker 192.168......
http://harshjv.github.io/blog/configure-nfs-with-boot2docker-and-os-x/
Ce qui me fait aussi penser que c est un problème réseau c est que lorsque je monte le répertoire depuis Linux le serveur winnfsd voit bien la demande car il m affiche une erreur mais mount lui ne semble rien recevoir en retour.

heyyo
Auteur

J'ai finalement reussi a monter mon dossier NFS, mais pas avec WinNFSd.
J'ai trouve le serveur HaneWin mais qui est un shareware.
Le montage est effectue avec l'ip de mon host.
sudo mount -t nfs 10.0.0.1:/c/web /var/www

Donc a priori c'est un bug WinNFSd avec boot2docker.
J'avais ouvert une issue hier:
https://bitbucket.org/jankowfsky/winnfsd/issue/19/winnfsd-boot2docker

A priori boot2docker te permet de monter ton environnement de dev sous windows.
En production tu utiliseras une machine Linux avec docker, donc les problèmes de lenteur d'acces n'en sont pas vraiment 1.

heyyo
Auteur

Certes, mais un environement de developpement rapide ca aide aussi.
Je developpe principalement des sites sous Drupal, et lorsque les fichiers de Drupal sont sur un repertoire partage monte en VBOXSF, chaque chargement de page est vraiment tres lent et ceci meme pour un drupal vierge.
Et c est encore pire lorsqu'on ajoute de nouveaux modules, ou des fichiers de contenu uploades.(pour tester la prod)
A chaque chargement de page, il y a un acces du filesystem sur tous les fichiers du site.
Passer en NFS, c'est le jour et la nuit, car on reduit considerablement ces acces en utlisant le cache NFS a plusieurs niveaux.

Pour reduire le nombre d'acces il est aussi preferrable de ne pas utliser Allowoverride ALL pour le .htaccess mais plutot de mettre en dur dans la conf d'apache ou sont situes les fichiers .htaccess, comme ca il n y aura pas verification sur chaque repertoire pour tester la presence d'un htaccess.

Content que tu ai trouvé une solution, j'ai eu le même problème au final, je ne vois pas dut out d'où cela peut venir mais HaneWin fait effectivement ce qu'on lui demande, merci à toi du coup :)

heyyo
Auteur

Content d'avoir pu aussi aider sur ce site qui m'aide chaque jour.
Parcontre si vous vous mettez a utiliser NFS, 3 choses que j ai trouve qui aide grandement :

1) Pour que NFS voit les modifications des fichiers faites par Sublime Text instantannement (meme si il y a le cache NFS active),
Il faut rajouter dans les Preferences.sublime-settings file, (Sublime Text > Preferences > Settings- User):

{
    "atomic_save": false
}

2) Pour que git fonctionne plus rapidement sur un support NFS, il faut configure le preloadindex:

git config core.preloadindex true

3) Si vous utilisez compass dans la vm et que le cache NFS est active, il faut demande a compass de faire un poll, sinon il ne verra pas les changement avec compass watch:

> compass watch --poll

Pour ce qui concerne les options de montage NFS principalemt celle du cache, je dois encore tester plus longuement.
La plus efficace etant actimeo=3600 pour mettre en cache pendant une heure les fichiers.