Répondant à la popularisation des serveurs équipés de processeurs ARM et à l’émergence de l’Edge Computing / Fog Computing, VMware a annoncé l’arrivée d’une version compatible ARM de l’hyperviseur ESXi lors de la VMworld 2018:
Bien qu’ayant fait l’objet de démonstrations, ESXi ARM n’était pas disponible publiquement, il n’était malheureusement pas possible de le tester.
Le 06 octobre 2020, VMware a sorti une version publique d’ESXI ARM. Le but de cet article est de donner un premier retour sur l’installation et l’utilisation d’ESXi sur un Rapberry-PI.
Installation et configuration
L’essentiel des instructions que nous exécuterons dans cette section provient du manuel mis à disposition par l’équipe FLING de VMware sur leur page dédiée à ESXi ARM (le document Fling-on-Raspberry-Pi.pdf). Il est conseillé d’installer ESXi sur un Raspberry-Pi avec un minimum de 4Go de ram, les résultats présentés dans ce document ayant été obtenus avec la version à 4 Go.
Avant de commencer, voici une liste du matériel requis:
- 1 Raspberry-Pi 4go
- 1 Carte SD pour accueillir l’UEFI
- 1 Clé USB d’au moins 32 Go pour accueillir le ESXi et le datastore (ou 2 clés USB de 16Go)
- 1 Adaptateur micro-HDMI vers HDMI (il est aussi possible d’utiliser le port série du Raspberry Pi)
- 1 Cable d’alimentation USB-C
- 1 Cable Ethernet
- 1 écran compatible HDMI
- 1 clavier
Découvrez comment gérer facilement votre virtualisation VMware
TéléchargerMise à jour du Raspberry-Pi
Tout d’abord, nous devons nous assurer que le firmware du Raspberry-Pi est bien à jour. Comme indiqué dans le document fourni par VMware, il est possible de télécharger le Raspberry Pi Imager Tool et de générer une carte SD de mise à jour du firmware:
Insérez la carte SD dans le Raspberry-Pi et bootez sur l’OS installé sur la carte SD. Ouvrez un terminal et tapez les commandes suivantes:
sudo rpi-eeprom-update -a
sudo reboot
Installation de l’UEFI
Comme indiqué par la documentation de ESXi ARM, il faut télécharger les fichiers suivants:
- https://github.com/raspberrypi/firmware/archive/master.zip : contient un firmware pour Raspberry Pi fourni par la communauté Raspberry Pi.
- https://github.com/pftf/RPi4/releases/download/v1.20/RPi4_UEFI_Firmware_v1.20.zip : contient un firmware UEFI pour Raspberry Pi.
Nous allons préparer la carte SD pour permettre au Raspberry Pi de booter en mode UEFI.
Pour cela, nous allons d’abord avoir besoin d’effacer la carte SD et d’y créer une partition FAT32 qui se nomme UEFI. Sur MacOS, il est possible de faire cela grâce à l’utilitaire de disque:
Sur Windows, on peut utiliser l’utilitaire Rufus.
Extraire l’archive firmware-master.zip, un dossier boot devrait s’y trouver. Copier les fichiers contenus dans le dossier boot et les coller à la racine de la carte SD vide. Pour préparer l’installation de l’UEFI, supprimez les fichiers kernel.img de la carte SD:
Ensuite, extraire l’archive RPi4_UEFI_Firmware_v1.20.zip et copier les fichiers contenus dans l’archive et coller les à la racine de la carte SD. Écrasez les fichiers déjà existants sur la carte SD par ceux du dossier du firmware UEFI.
Si vous possédez un Raspberry Pi 4Go, éditez le fichier config.txt et ajouter l’option suivante:
gpu_mem=16
Gravure de l’ISO ESXi ARM
Nous allons préparer la clé USB en y gravant l’image ISO fournie par VMware. J’ai utilisé Balena Etcher sans rencontrer de problème.
Autres caractéristiques
Installation de l’ESXi
Insérez la carte SD et la clé USB sur le Raspberry PI. Démarrez le Raspberry Pi, et immédiatement au démarrage appuyez sur Echap pour entrer dans le menu UEFI.
Vous devriez atterrir sur un écran similaire à celui ci-dessous:
autoPartitionOSDataSize=8192
La commande devrait ressembler à:runweasel cdromBoot autoPartitionOSDataSize=8192
oucdromBoot runweasel autoPartitionOSDataSize=8192
Procéder maintenant à l’installation en appuyant sur Entrée. L’installation devrait durer quelques minutes. Au fur et à mesure, le programme d’installation vous demandera de confirmer les options d’installation que vous voulez activer. De mon côté, les options par défaut ont fonctionné correctement.Installation d’une VM Debian
Nous allons vérifier que notre ESXi est bien fonctionnel en créant une machine virtuelle sur Debian. Pour ce faire, allez sur la page de téléchargement des images ARM Debian, et téléchargez la version avec XFCE (au moment de l’écriture de cet article, il s’agit de debian-10.6.0-armhf-xfce-CD-1.iso).
Ajoutez l’image Debian au Datastore de l’ESXi:
Passons maintenant à la création de la machine virtuelle:
Nous allons maintenant passer au démarrage de la machine virtuelle.
La VM Debian a bien démarré et est connectée au réseau, il est alors possible de la contacter sur le réseau:
Benchmarks
Pour évaluer le fonctionnement et l’intérêt de ESXi ARM, nous avons comparé les performances d’une machine virtuelle Debian 64 bits avec celles de Raspberry Pi baremetal fonctionnant en 64 bits et 32 bits.
Voici le détail des installations qui sont comparées:
VM Debian ARM 64 bits | Raspbian 64 bits baremetal | Raspbian 32 bits baremetal | |
OS | Debian 10.6.0 64 bits | RaspberryOS 64 bits | RaspberryOS 32 bits |
virtualisation | oui (ESXi) | non (baremetal) | non (baremetal) |
RAM allouée | 2 Go | 4 Go | 4 Go |
Matériel | Raspberry PI 4 (4go) | Raspberry PI 4 (4go) | Raspberry PI 4 (4go) |
Stockage utilisé | clé USB (Datastore ESXi) | Carte SD | Carte SD |
Nous avons comparé la vitesse de calcul, le débit de la mémoire et la rapidité du réseau.
CPU et RAM
Nous utilisons ici sysbench pour évaluer les performances de calcul et la ram.
Pour évaluer les performances du calcul, nous avons utiliser la commande suivante:
NOMBRE_DE_THREADS=1
sysbench –threads=$NOMBRE_DE_THREADS –cpu-max-prime=100000 –validate cpu run
Voici une compilation des résultats:
VM Debian ARM 64 bits | Raspbian 64 bits baremetal | Raspbian 32 bits baremetal | |
1 thread | 64.5335 | 64.3316 | 3.4947 |
VM Debian ARM 64 bits | Raspbian 64 bits baremetal | Raspbian 32 bits baremetal | |
1 thread | 15.49 | 15.54 | 286.13 |
Nous pouvons constater que les performances en calcul sont très proches entre la VM Debian 64 bits tournant sur ESXi et celle d’un Raspberry Pi configurés avec Raspbian 64 bits.
Pour évaluer les performances de la mémoire, nous avons utilisé la commande suivante:
NOMBRE_DE_THREADS=4
sysbench –memory-oper=write –memory-block-size=1K –memory-scope=global –memory-total-size=100G –threads=$NOMBRE_DE_THREADS –time=30 memory run
Voici une compilation des résultats:
VM Debian ARM 64 bits | Raspbian 64 bits baremetal | Raspbian 32 bits baremetal | |
1 thread | 1947.23 | 1773.44 | 499.63 |
Nous constatons là aussi que les performances de la VM tournant sur ESXi ARM sont tout à fait honorables, se permettant même ici de dépasser celle d’un Raspberry Pi tournant sur Raspberry PI OS 64 bits.
Réseau
Nous utilisons le benchmark iperf3 dans une configuration client-serveur :
- Le serveur est un macbook pro 15″ 2015 (core i7 I7-4870HQ) avec 16 Go de RAM et un SSD de 512 Go. Le serveur lance la commande suivante:
iperf3 -s
- les systèmes testés sont des clients qui lancent la commande suivante:
iperf3 -c $IP_DU_SERVEUR -t 10 -P 1
Voici une compilation des résultats:
| VM Debian ARM 64 bits | Raspbian 64 bits baremetal | Raspbian 32 bits baremetal |
Sender | 496 Mbits/sec | 471 Mbits/sec | 465 Mbits/sec |
Les débits mesurés sont très similaires, quelle que soit la configuration utilisée : les mécanismes de virtualisation mis en place par ESXi ARM ne semblent pas provoquer d’overhead.
Conclusion
Dans cet article nous avons montré comment mettre en place ESXi sur un Rasberry PI 4, et nous avons démontré son potentiel en conduisant des benchmark qui, bien que superficiels, montrent que cette solution a un intérêt. Ainsi, un ESXi déployé sur une flotte d’appareils aussi peu coûteux que les Raspberry Pis a un intérêt pour la mise en place d’infrastructures de tests à faible coût, ou pour déployer des ressources de calcul de type Edge Computing tout en bénéficiant des avantages de la virtualisation offerte pas VMWare.
Annexe
Consultez l’annexe de cet article pour comprendre comment:
- Installation de sysbench.
- Installation et lancement de iperf3.
- Ajout d’un Datastore supplémentaire sur une clé USB.
- Ajout d’un Datastore supplémentaire sur stockage NFS.
Jonathan PASTOR
Ingénieur recherche et développement – EasyVirt