ESXi ARM sur Raspberry-Pi 4: premier bilan

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écharger

Mise à 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:

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:

Figure 5 : Créez une partition FAT32 intitulée "UEFI"

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:

Figure 6 : Supprimez les fichiers kernel pour faire de la place aux fichiers du firmware UEFI

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:

Figure 10 : Écran d'accueil de l'UEFI pour Raspberry Pi
Nous allons d’abord supprimer la limite de 3Go de RAM, pour ce faire, allez dans les menus Device Manager > Raspberry Pi Configuration > Advanced Configuration et désactivez l’option Limit RAM to 3GB. Nous allons aussi nous assurer que la sortie console par défaut se fait sur l’écran physique. Pour ce faire, allez dans le menu Console Preference Selection et assurez-vous que le mode Graphical est bien sélectionné. Nous allons aussi donner la priorité au boot à la clé USB. Pour cela, allez dans les menus Boot Maintenance Manager > Boot Options > Change Boot Order et appuyez sur Entrée pour activer le menu de changement d’ordre. Si votre clé USB n’est pas en haut, avec les flèches positionnez-vous sur l’entrée correspondant à la clé USB et appuyez sur + pour la faire monter en haut du menu. Appuyez sur Entrée pour sortir du menu, puis sur F10 pour sauvegarder les nouvelles priorités de boot. Revenez à la page d’accueil du menu UEFI et, avant de redémarrer le Raspberry Pi, localiser les touches MAJ et O qui serviront à intercepter le démarrage de l’installateur ESXi afin d’utiliser des options d’installation personnalisées. Une fois ces touches localisées, depuis la page d’accueil de l’UEFI sélectionnez Continue. Le Raspberry PI va démarrer sur la clé USB et commencer le processus d’installation. Avant de lancer l’installation, nous allons configurer l’installateur pour qu’il limite la partition réservée à ESXi à une taille de 8Go, gardant l’espace restant pour le datastore. Pour ce faire, immédiatement à l’affichage de l’écran d’installation d’ESXi, appuyez sur MAJ + O et ajouter à la commande d’installation l’option suivante (vous pourrez trouver une discussion plus large de cette partie sur le blog de William Lam :

autoPartitionOSDataSize=8192

La commande devrait ressembler à:

runweasel cdromBoot autoPartitionOSDataSize=8192

ou

cdromBoot 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:

Figure 24 : La VM est accessible 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 bitsRaspbian 64 bits baremetalRaspbian 32 bits baremetal
OSDebian 10.6.0 64 bitsRaspberryOS 64 bitsRaspberryOS 32 bits
virtualisationoui (ESXi)non (baremetal)non (baremetal)
RAM allouée2 Go4 Go4 Go
MatérielRaspberry PI 4 (4go)Raspberry PI 4 (4go)Raspberry PI 4 (4go)
Stockage utiliséclé USB (Datastore ESXi)Carte SDCarte 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 bitsRaspbian 64 bits baremetalRaspbian 32 bits baremetal
1 thread64.533564.33163.4947
 VM Debian ARM 64 bitsRaspbian 64 bits baremetalRaspbian 32 bits baremetal
1 thread15.4915.54286.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 bitsRaspbian 64 bits baremetalRaspbian 32 bits baremetal
1 thread1947.231773.44499.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

Facile + Rapide + Intuitif

Téléchargez votre essai gratuit de 30 jours dès maintenant !

Télécharger