Dans cette partie de la documentation nous allons voir une fonctionnalité qui a été introduite dans vSphere 7 et qui se nomme "Assignable Hardware".
Nous allons découvrir comment elle améliore l'ajout de périphériques PCI physiques sur une VM et comment elle fonctionne.
Avant de commencer et d'entrer dans le vif du sujet et pour mieux comprendre la problématique que cette fonctionnalité a résolu, faisons un bref rappel des limitations qui existaient avant vSphere 7 lorsque l'on utilisait "Directpath I/O".
Avant vSphere 7, "Directpath I/O" était la solution utilisée pour permettre à une machine virtuelle d'accéder aux périphériques physiques PCI d'un ESXi.
Prenons comme exemple, une machine virtuelle qui tourne sur un ESXi et qui possède un accès à un périphérique PCI physique. Imaginons toujours pour notre exemple que ce périphérique soit un GPU mais il pourrait très bien être tout autre chose.
Dans cet exemple, notre machine virtuelle dispose d'un périphérique physique dédié qu'elle peut utiliser avec une latence vraiment très faible puisqu'elle bénéficie des performances "Bare metal".
Imaginons à présent que nous avons un second ESXi avec exactement le même périphérique physique, qui sera dans notre cas et pour l'exemple le même GPU.
Notre VM sur l'ESXi-1 est liée au GPU physique se trouvant sur cet ESXi et malgré le fait que nos deux ESXi soient dans un même Cluster et qu'ils possèdent exactement le même périphérique physique, notre machine virtuelle ne sera pas compatible avec vMotion, vSphere HA ou DRS.
La VM ne pourra pas être migrée et ne sera pas prise en charge par vSphere HA ou DRS.
Dans ce cas précis, nous échangeons donc la portabilité que les VMs peuvent connaître habituellement contre un niveau de performances "Bare metal" à travers le GPU physique se trouvant sur l'ESXi et à laquelle la VM est liée.
Depuis vSphere 7 "Directpath I/O" a été revu et amélioré pour devenir à présent "Dynamic Directpath I/O".
"Dynamic Directpath I/O" est une couche de virtualisation entre la machine virtuelle et le périphérique physique PCI qui va contenir toutes les informations concernant ce périphérique.
Autrement dit, l'adresse matérielle du périphérique PCI n'est plus directement liée au fichier de configuration de la machine virtuelle (le fichier .vmx) mais est exposée à la machine virtuelle.
Grâce à Dynamic Directpath I/O la VM ne connaît plus l'adresse matérielle réelle du périphérique PCI mais plutôt un mapping vers le périphérique au travers de Dynamic Directpath I/O.
Toutefois ce mapping ne va concerner qu'un type précis de matériel, qu'un certain modèle de périphérique voir qu'un certain fournisseur puisqu'il devra correspondre exactement au périphérique qui aura été associé à la VM dans ses options de configuration.
Par exemple si j'ajoute sur une VM un périphérique physique comme un GPU NVidia d'un certain modèle, le mapping ne concernant que ce modèle et non pas un GPU de marque différente.
Pour mieux compendre, reprenons notre exemple précédant.
Nous avons donc deux ESXi qui font partis d'un Cluster : ESXi-1 et ESXi-2
D'ailleurs, il se peut très bien qu'il y ai dans ce Cluster d'autres ESXi, peut importe.
Et à nouveau notre VM qui tourne sur l'ESXi-1.
Notre VM possède donc un mapping vers un périphérique physique PCI bien précis et ce même périphérique physique est présent sur un autre hôte ESXi du cluster comme par exemple notre ESXi-2.
J'insiste sur le fait que les deux périphériques sont exactement les mêmes, du même fournisseur, même modèle etc.
Avec Dynamic Directpath I/O, DRS sera au courant du mapping mais également du fait que plusieurs ESXi possède un périphérique physique qui puisse répondre aux besoins de la VM.
Cela signifie que si on allume une machine virtuelle comme celle de notre exemple et qu'elle possède un mapping vers un périphérique physique, DRS sera en mesure de choisir l'hôte idéal pour l'héberger et la faire tourner.
Attention cependant vMotion n'est malheureusement toujours pas compatible. Même avec Dynamic Directpath I/O il ne sera pas possible d'effectuer une migration via vMotion pour cette VM.
Dans ce cas, qu'en est-it de la haute disponibilité ?
Que se passe-t-il si l'ESXi-1 plante et qu'il ne soit plus en mesure d'héberger des VMs?
Nous l'avons vu précédemment, avant vSphere 7 la seule solution possible était "Directpath I/O". Dans cette configuration, si une VM avec une périphérique physique PCI était en cours d'exécution sur un hôte et que cet hôte plantait alors la VM était bloquée sur cet hôte et il n'était pas possible de redémarrer la VM sur un autre hôte.
Mais depuis vSphere 7 et grâce à Dynamic Directpath I/O, vSphere HA peut redémarrer cette machine virtuelle sur un autre hôte.
vSphere HA sait quels sont les hôtes du cluster ayant exactement ce modèle de périphérique PCI et peut donc redémarrer la machine virtuelle sur un hôte compatible.
Si l'on compare avec les versions de vSphere précédentes à vSphere 7, on peut dire qu'il s'agit ici d'une grande amélioration.
Notez toutefois que pour que cela fonctionne, la VM devra être configurée de manière à avoir une réservation de RAM complète. C'est à dire qu'il faudra définir une réservation correspondante à 100% de la RAM qui sera allouée à la VM.
Cette machine virtuelle va donc consommer sur son hôte 100% de la RAM qui lui sera indiquée dans sa configuration et ceci à chaque fois qu'elle sera allumée.
Cela ne veut pas dire que la VM va utiliser 100% de sa RAM en permanance mais simplement que l'intégralité de la RAM définie dans sa configuration sera consommée sur l'ESXi et donc non disponible pour d'autres VMs.
Chapitre précédent : 4- Déployer une VM avec vCenter Converter - Chapitre suivant : 6- Déployer automatiquement des ESXi avec Auto Deploy