[TechNote] Configurer un serveur linux NFS pour VMware ESX 3.x

Depuis la version 3, VMware ESX Server permet d’utiliser des partages de fichiers sur des serveurs NFS (Network File System) pour stocker et exécuter des machines virtuelles. Le client NFS intégré à VMware ESX Server 3 utilise la version 3 du protocole NFS.

Les “Datastores” sont des contenaires logiques, similaires à des systèmes de fichiers, qui masquent les spécificités de chaque type de stockage et fournissent un modèle uniforme pour stocker des machines virtuelles. Ils permettent aussi de stocker des images isos, des modèles de machines virtuelles et des images de disquettes.

Préparation du serveur ESX pour qu’il puisse utiliser un partage NFS

Tout d’abord, il faut configurer une adresse IP qui permet au VMkernel de communiquer avec le serveur NFS. Cliquez sur “Networking” puis sur le lien “Properties…” du commutateur virtuel sur lequel est connectée la carte réseau physique que vous avez choisie pour communiquer avec le serveur NFS. Cliquez sur le bouton “Add”, sélectionnez une connection de type “VMkernel” puis cliquez sur le bouton “Next”. Choisissez un nom pour la connexion puis saisissez les paramètres IP. Si ce n’est pas encore le cas, vous pouvez configurer une passerelle pour le VMkernel puis validez en cliquant sur “Next” puis “Finish”.

Installation du serveur NFS

VMware a certifié une liste de serveurs NFS listés dans le document “Storage / SAN Compatibility Guide“. Il y a deux types NAS supportés, des périphériques de stockage NAS et des distributions Linux :

  • Red Hat Enterprise Linux 3 NFS Server (Update 5).
  • Fedora Core 4 NFS Server (2.6.12 1.1456_FC4.9550smp).
  • Fedora Core 6 NFS Server (2.6.18 1.2798.fc6 #1 SMP) pour ESX Server 3.5 uniquement.

Pour écrire ce document, j’ai utilisé une distribution Fedora Core 6 disponible en téléchargement ici.

Il vous suffit de suivre l’installation par défaut ou de limiter au maximum les packages installés en décochant tous les packages lors d’une installation personnalisée.

Avec la distribution Fedora Core 6, vous pouvez vérifier que NFS est installé en exécutant la commande suivante :

rpm -qa | grep -i nfs

Si ce n’est pas le cas, installez les packages suivants depuis le fichier iso utilisé pour l’installation avec la commande rpm -i <nom_du_package.rpm> :

  • libevent-1.1a-3.2.1.i386.rpm
  • libgssapi-0.10-1.i386.rpm
  • nfs-util-lib-1.0.8-7.2.i386.rpm
  • nfs-i nfs-utils-1.0.9-8.fc6.i386.rpm

Il faut ensuite configurer le serveur. Modifiez le fichier /etc/exports comme suit :

/datastore-esx srv-esx1.virtualisation-news.com (rw,sync,no_root_squash) , srv-esx2.virtualisation-news.com (rw,sync,no_root_squash)

/datastore-esx : correspond au répertoire partagé sur le serveur NFS
srv-esx1.virtualisation-news.com : correspond au nom du serveur VMware ESX, a qui est autorisé le partage.

Entre paranthèses, sont listées les options pour la machine concernée :
option rw : indique que le partage est en lecture / écriture (requis)
option sync : cette option indique dans quelle mesure le serveur NFS attend ou pas (async) la validation de l’écriture sur le système de fichier avant de valider l’écriture auprès du client NFS. Ce paramètre peut avoir un impact significatif sur les performances. Le mode async est moins sécurisé et constitue un risque en cas de disfonctionnement électrique sur le serveur NFS.
option no_root_squash : permet au client d’obtenir un niveau de droit “root” et nom pas “nobody”

L’usage de cette dernière option est généralement déconseillée mais ne devrait pas avoir d’impact majeur sur la sécurité de votre serveur car son impact est est limité au serveur VMware ESX. En effet, les machines autorisées sur ce partage peuvent prendre le contrôle total du serveur NFS. Si l’usage de cette commande n’est pas possible dans votre environnement, vous pouvez vous reporter au chapitre Virtual Machine Delegates for NFS Storage dans le document “ESX Server 3 Configuration Guide“, page 224.

La configuration la plus sécurisée du serveur NFS consiste à refuser les connexions par défaut. Ceci est possible en configurant le fichier /etc.hosts.deny comme suit :

lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Il faut ensuite modifier le fichier de configuration /etc/hosts.allow afin d’autoriser le ou les serveurs ESX :

lockd: 172.16.1.51 , 172.16.1.52
mountd: 172.16.1.51 , 172.16.1.52
rquotad: 172.16.1.51 , 172.16.1.52
statd: 172.16.1.51 , 172.16.1.52

Même si les distributions récentes supportent l’usage de noms DNS, il est conseillé d’utiliser des adresses IP dans ce fichier.

Vous pouvez terminer la configuration du serveur NFS en démarrant le service NFS avec la commande :

service nfs start

Vous pouvez ajouter l’exécution du service nfs au démarrage de la machine avec la commande :

chkconfig --level 345 nfs on

Création du datastore VMware

Vous pouvez ensuite créer un datastore de type NFS depuis le client VMware Infrastructure. Si vous avez des difficultés pour configurer un datastore, reportez vous à la documentation (”ESX Server 3 Configuration Guide”, Storage, page 83) fournie par VMware.

En cas de problème

  • Vérifiez que le firewall du serveur NFS est désactivé ou est correctement configuré
  • Vérifiez que le nom DNS du serveur ESX utilisé dans les fichiers de configuration est correctement résolu par le serveur NFS
  • Vérifiez que les serveurs communiquent entre eux avec la commande ping depuis le serveur NFS et avec la commande vmkping depuis le serveur ESX
  • Tentez d’exécuter la commande mount depuis le Service Console (attention à la configuration du firewall du Service Console), ceci permet d’avoir des messages d’erreur plus complets que dans les logs du VMkernel. Consultez le fichier de trace /var/log/messages
  • Utilisez la commande rpcinfo -p sur le serveur puis rpcinfo -p nom_du_server depuis le Service Console du serveur ESX
  • Par défaut, le nombre de datastore NFS est limité à 8. Pour disposer de datastores plus nombreux, modifiez le paramètre Net.TcplpHeapSize (passez le à 30) et le paramètre NFS.MaxVolumes (passez le à 32) dans les paramètres avancés du serveur (onglet “Configuration”).
  • Si le datastore n’est pas disponible au démarrage du serveur VMware ESX, celui-ci ne sera pas reconnecté automatiquement. Depuis le Service Console, exécutez la commande “esxcfag-nas -r” pour retenter la connexion au serveur NFS puis exécutez la commande “service vmware-hostd restart”.

Autres articles sur le même sujet

Il y a déjà 10 commentaires. »

  1. ok Merci
    Cela marche t’il avc ESX 3.5

    et Fedora 9 ?

    cdt,

  2. Et cela marche t’il avec “Microsoft windows service for unix” ???

    Car j’ai tjr ce message lors de l’ajout du NFS,

    “error during the configuration of the host: NFS error: Unable to Mount filesystem: Unable to connect to NFS server”

    Merci d’avance,

  3. Ma configuration:

    2 ESX 3.5
    1 Serveur 2K3 physique non PDC où est installé le Microsoft windows service for linux”
    1 PDC 2K3 en Virtuel sur les ESXs.

    Toute les machines ce ping entre elle.
    Un partage NFS et créer EN codé en ANSI
    Avec allow anonymous access

    Voila les informations que je rentre quand je veux connecter le nfs

    Properties:

    Server: 192.168.1.5
    Folder: /PARTAGE
    Datastore name:
    test
    le mount NFS read only n’est pas coché…

  4. bonjour,

    j’ai toujours un message d’erreur lors de l’ajout d’un datastore NFS à partir du client VI:

    informations de création du datastore:

    Server: lvfst01.mondomaine.net
    Folder: /VINFS
    Datastore name: NFS_LVF
    l’option NFS read only n’est pas coché.

    voici l’erreur que j’obtiens:

    “Error during the configuration of the host: NFS Error: Unable to mount filesystem: The mount request was denied by the NFS server….”

    le serveur ESX a les droits (@IP du serveur dans le fichier hosts.allow) et export sur le serveur NFS existe et le nom du serveur ESX est correctement configurer.

    le mappage du partage NFS depuis la console de l’ESX fonctionne sans erreur et mes 2 serveurs se ping sans problème.

    [Informations complémentaires]
    serveur ESX : ESX 3.5 .0, 130756
    serveur NFS : Fedora Core 6

    pourriez vous m’aider?

    merci

  5. Bonjour Christopher,

    Est-ce la bonne adresse IP dans le fichier ? Il doit s’agir de l’adresse IP du VMkernel pour que le partage puisse fonctionner. L’utilisation du caractère * à la place des adresses IP dans les fichiers de configuration peut lever le doute pendant les tests.
    Des traces plus complètes du problème sont présentes dans /var/log/messages sur le serveur NFS.
    Attention aux résolutions de nom (ajouter les noms/adresses dans le fichier host si nécessaire).

    Damien

  6. Bonjour Damien,

    l’adresse IP était bien celle du Vmkernel. en mettant le caractère * dans les fichiers de configuration (hosts.allow et exports) le mappage fonctionne.

    pour information tous les serveurs ont les noms/adresses des autres dans le fichier hosts.

    cordialement

    Christopher

  7. j’ai pu résoudre mon problème en remplaçant les adresses IP des serveurs ESX par les noms (long) DNS dans les fichiers de configuration du serveur NFS.

    les noms et adresses IP des serveurs ESX sont dans le fichier hosts du serveur NFS (adresse IP du vmkernel pour chaque ESX)

    cordialement

  8. Bonjour,

    Peut on faire fonctionner Vmotion et HA avec ce tuto ou alors avec un Nas comme freeNas ?

    Merci

  9. Oui, il est tout à fait possible d’utiliser les fonctionnalités VMotion et HA avec un datastore de type NFS. Je ne sais pas si Freenas fonctionne car il n’est pas supporté par VMware. Cependant, il est tout à fait vraisemblable que la solution fonctionne. Attention à la version de NFS, VMware utilise la version 3 de NFS (TCP uniquement).

  10. Excellent tuto,

    moi j’ai réussi à faire un nas avec fedora10 à le connecter avec VI à mes 2 esx, mais je n’arrive pas du tout à créer de dossier ou migrer des vm dans le nas. Messages d’erreur : “a file creation operation failed” ou “unable to access file…”

Laisser un commentaire