Riga 20.08.2016 (53)J'ai commencé à jouer avec la fonctionnalité VM de FreeNAS 11, la célèbre distribution BSD pour créer son propre NAS. J'ai assez de puissance sur mon NAS actuel pour lancer quelques machines virtuelles, ce qui me permettra d'utiliser d'autres OS que FreeBSD (disponible via les jails), comme par exemple ici CentOS.

À propos de VM

FreeNAS étant basé sur FreeBSD, celui-ci base sa fonction d'hyperviseur sur bhyve, l'hyberviseur BSD. Les prérequis matériels sont assez simples :

  • assez de mémoire vive pour que FreeNAS puisse continuer à en utiliser pour gérer la partie NAS ;
  • assez de puissance CPU pour que FreeNAS puisse continuer à en utiliser pour gérer la partie NAS ;
  • assez d'espace disque (puisqu'on va aussi en allouer à nos machines virtuelles) ;
  • et enfin, s'assurer que le processeur de notre NAS dispose des instructions de virtualisation.

Concernant la quantité de mémoire vive, il faut se rappeler que FreeNAS réclame au moins 8 Go de RAM, voire plus selon les usages. La section Hardware Recommandations de la documentation officielle est à ce titre à lire en premier. En ce qui me concerne, j'ai décidé d'ajouter de la mémoire vive à mon système avant de commencer à utiliser VM.

Concernant les instruction de virtualisation, la section VMs de la documentation officielle est aussi très instructive. Pour vérifier que notre CPU dispose bien du jeu d'instruction nécessaire, deux possibilités :

  • Sur un système Intel : grep VT-x /var/run/dmesg.boot ;
  • Sur un système AMD : grep POPCNT /var/run/dmesg.boot.

Sur mon NAS, j'ai un Xeon E3-1220L V2. Cela donne donc :

root@arreat:~ # grep VT-x /var/run/dmesg.boot
  VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID

Créer sa machine virtuelle

Dans l'absolu, créer sa machine virtuelle est assez simple et suivre la documentation en anglais assez facile. On commence par aller dans le menu VMs, puis on clique sur le bouton Add VM. Un menu s'affiche alors, et on peut renseigner les informations de notre système virtuel :

  • Name : nom de la machine virtuelle ;
  • Description : un texte descriptif ;
  • Virtual CPUs : le nombre de processeurs virtuels ;
  • Memory Size (MiB) : la quantité de mémoire-vive ;
  • Boot Method : si la machine virtuelle est en UEFI pur ou en mode de compatibilité avec BIOS (UEFI-CSM), mais visiblement il vaut mieux rester en UEFI ;
  • Autostart : si la machine démarre automatiquement au démarrage du NAS.

On peut ensuite créer des périphériques pour notre machine virtuelle, en la sélectionnant puis en appuyant sur le bouton "Devices" en bas de l'interface web. Un nouvel onglet apparaît, et grâce au bouton "Add device", on peut alors ajouter :

  • Network interface : une carte réseau (Intel émulée, ou VirtIO) ;
  • Disk : un disque dur, sous forme de ZVol (en AHCI ou VirtIO) ;
  • CD-ROM : un lecteur optique, en choisissant une image ISO hébergée sur le NAS ;
  • VNC : un écran virtuel accessible via le protocole VNC.

Démarrer sa machine virtuelle et installer CentOS

Une fois la machine virtuelle crée, on s'assure que le CD-ROM virtuel est bien une ISO d'installation de CentOS et on appuie sur le bouton de démarrage. Par contre, et c'est à ce moment que la documentation et peut-être bhyve sont muets, c'est à propos du périphérique VNC : j'ai perdu littéralement des heures à cause du mapping clavier, qui respecte les lettres pour de l'azerty, mais qui ne respecte pas les caractères spéciaux et les chiffres. Ceci est donc particulièrement gênant.

Mon astuce consiste à ne pas créer de périphérique VNC : VM crée alors une console série, à laquelle on peut accéder via la commande cu depuis un shell sur la machine FreeNAS :

cu -s 9600 -l /dev/nmdm1B

A noter que le périphérique d'accès peut changer selon la machine virtuelle, il faut donc changer la commande en conséquence.

Une fois que le CD-ROM est démarré, il convient d'éditer les options de démarrage en appuyant sur 'e', puis en ajoutant à la première ligne l'option console=ttyS0. Cette option est indiquée dans la documentation d'installation de RHEL 7

Crédit photo : E Livermore - Riga 20.08.2016 (53).