Oracle VM Server (LDOM)
Présentation
Oracle VM Server (anciennement LDOM, pour "Logical Domains") est une solution de virtualisation disponible pour les architectures à base de processeurs Sparc T1 et T2. Elle n'est disponible que sous Solaris 10 et plus. Une couche logicielle doit être ajoutée au système Solaris 10 de base. Celle-ci va mettre un place un hyperviseur qui va s'appuyer sur des fonctions internes aux processeurs pour gérer les domaines logiques.
Un domaine logique est une machine virtuelle qui possède son propre système d'exploitation. Le système d'exploitation hôte est le domaine de contrôle. Les autres sont des domaines invités ; ils sont indépendants. Le domaine de contrôle est celui depuis lequel on peut gérer les autres.
Installation du logiciel
Il s'agit d'un simple package à installer.
Récupérer le fichier OracleVMServer2.0_<version>.zip en allant sur http://www.oracle.com/virtualization.
Il faut ensuite décompresser le fichier et suivre les instructions du README. Je ne détaillerai, car cela peut dépendre de la version. Et puis c'est relativement simple.
Configuration du domaine de contrôle
Création des services du domaine de contrôle.
bash-3.00# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-c-- SP 32 16256M 0.1% 4d 21h 7m bash-3.00# ldm add-vds primary-vds0 primary bash-3.00# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 32 16256M 1.8% 4d 21h 14m bash-3.00# ldm list-services primary VDS NAME LDOM VOLUME OPTIONS MPGROUP DEVICE primary-vds0 primary bash-3.00# bash-3.00# bash-3.00# ldm add-vcc port-range=5000-5100 primary-vcc0 primary bash-3.00# ldm add-vsw net-dev=e1000g0 primary-vsw0 primary bash-3.00# bash-3.00# bash-3.00# ldm list-services primary VCC NAME LDOM PORT-RANGE primary-vcc0 primary 5000-5100 VSW NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE primary-vsw0 primary 00:14:4f:fb:85:7d e1000g0 0 switch@0 1 1 1500 VDS NAME LDOM VOLUME OPTIONS MPGROUP DEVICE primary-vds0 primary bash-3.00#
Affecter des ressources au domaine de contrôle
Affecter des vcpu et de la RAM au domaine primary. On peut également affecter des périphériques de cryptographie avec le paramètre "set-mau" ; il y en a un par cœur physique.
# ldm set-mau 1 primary # ldm set-memory 2G primary # ldm set-vcpu 4 primary # ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 2G 0.3% 12m
Sauvegarde de la configuration
Sauvegarde de la configuration, et vérification qu'elle est bien prise en compte
# ldm list-config factory-default [next poweron] # # ldm add-config initial # # ldm list-config factory-default initial [current]
Si on modifie une valeur, il faut mettre à jour la config, sinon elle sera perdue au reboot.
# ldm set-config initial
Activation du daemon du serveur de terminal du réseau virtuel
Ce daemon est indispensable pour pouvoir se connecter à la console virtuelle de chaque domaine invité.
# svcadm enable vntsd
Finalisation
Il faut maintenant rebooter pour que tout soit pris en compte.
# init 6
Création d'un domaine invité
Création et configuration
Il faut avoir préparé un fichier, une partition ou un disque pour accueillir le système d'exploitation de l'invité. Par exemple, on va créer un volume ZFS de 20g pour accueillir le domaine invité UIRGS88.
# zfs create rpool/ldoms # zfs create -V 20g rpool/ldoms/uirgs88
Création du domaine uirgs88.
# ldm add-domain uirgs88
Ajout de mémoire.
# ldm add-memory 12G uirgs88
Pour adapter la valeur après, on peut utiliser "delete-memory 2g" pour retirer 2Go ou "set-memory 10g" pour fixer à 10Go.
Ajout de vcpu ou de cores.
# ldm add-vcpu 16 uirgs88
Ou si on veut ajouter des cores entiers :
# ldm add-core 2 uirgs88
Et si on veut modifier par la suite :
# ldm set-core 3 uirgs88
Ajout d'un périphérique de réseau virtuel.
# ldm add-vnet [linkprop=phys-state] vnet1 primary-vsw0 uirgs88
L'option linkprop=phys-state est nécessaire si on monte deux interfaces pour faire de l'ipmp sur le ldom. Si ce n'est pas votre cas, ne pas utiliser l'option.
Si on doit ajouter des vlans :
# ldm set-vnet pvid=60 vid=61, 62, 63 vnet1 primary-vsw0 uirgs88
pvid est le vlan principal, celui qui est utilisé si on n'utilise pas de tagging, et aussi durant l'installation. Les vid sont les vlans accessibles si on fait du tagging.
Exporter le volume ZFS en tant que disque virtuel, en l'associant au domaine d'E/S (qui dans notre cas est le domaine de contrôle). (En dessous, respectivement le cas d'un disque dur local entier, une LUN gérée par Veritas (par exemple un DG veritas exporté d'un autre serveur) et un simple fichier).
Volume ZFS : # ldm add-vdsdev /dev/zvol/dsk/rpool/ldoms/uirgs88 vol1@primary-vds0 Disque local : # ldm add-vdsdev /dev/dsk/c2t1d0s2 vol2@primary-vds0 LUN sous veritas : # ldm add-vdsdev /dev/vx/dmp/emc_clariion0_18s2 vol3@primary-vds0 Simple fichier : # ldm add-vdsdev /chemin/vers/fichier vol4@primary-vds0
Assignation du volume ZFS au domaine invité.
# ldm add-vdisk vdisk1 vol1@primary-vds0 uirgs88
Définition des paramètres de l'eeprom.
# ldm set-var auto-boot\?=true uirgs88 # ldm set-var boot-device=vdisk1 uirgs88
Lier les ressources réseau avec le domaine de contrôle. On vérifie ensuite que le statut est passé à bound.
# ldm bind-domain uirgs88 # ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv- SP 4 2G 0.5% 1d 1h 20m uirgs88 bound ------ 5000 16 12G
Démarrer le LDOM et s'y connecter. Pour la connexion, il faut noter le port TCP retourné par la commande "ldm list" (ci-dessus c'est le port 5000). Le daemon vntsd doit obligatoirement être démarré.
# ldm start-domain uirgs88 # telnet localhost 5000
Installation de Solaris sur un domaine invité
On va maintenant installer Solaris sur le domaine invité. Ҫa peut se faire depuis un dvd, depuis une image iso ou depuis un serveur jumpstart. Nous allons voir comment faire depuis une image iso.
On suppose que l’image iso a été déposée dans /var/tmp/ sur le LDOM de contrôle, par exemple "/var/tmp/sol-10-u9-ga-sparc-dvd.iso".
Arrêter le domaine et dissocier son réseau
# ldm stop uirgs88 # ldm unbind uirgs88
Ajouter le fichier iso en tant que disque du domaine
# ldm add-vdsdev /var/tmp/sol-10-u9-ga-sparc-dvd.iso iso_vol@primary-vds0 # ldm add-vdisk sol10_dvd iso_vol@primary-vds0 uirgs88
Vérifier que le dvd est ajouté dans les volumes :
# ldm list-bindings [...] VDS NAME VOLUME OPTIONS MPGROUP DEVICE primary-vds0 vol1 /rpool/ldoms/uirgs88 iso_vol /var/tmp/sol-10-u9-ga-sparc-dvd.iso [...] DISK NAME VOLUME TOUT ID DEVICE SERVER MPGROUP vdisk1 vol1@primary-vds0 0 sol10_dvd iso_vol@primary-vds0 1
Avant de redémarrer le ldom, il est préférable, mais pas obligatoire, de désactiver l'auto-boot, pour pouvoir booter tranquillement sur l'image du dvd.
# ldm set-var auto-boot\?=false uirgs88
On associe et on démarre le ldom.
# ldm bind uirgs88 # ldm start uirgs88 LDom uirgs88 started
Ensuite on se connecte et on arrive au prompt "ok".
# telnet localhost 5000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Connecting to console "uirgs88" in group "uirgs88" .... Press ~? for control options .. {0} ok
On va maintenant afficher les alias pour vérifier qu'on voit bien celui associé à notre DVD, puis on va booter sur le slice "f" de cd DVD.
{0} ok devalias sol10_dvd /virtual-devices@100/channel-devices@200/disk@1 vdisk1 /virtual-devices@100/channel-devices@200/disk@0 vnet1 /virtual-devices@100/channel-devices@200/network@0 net /virtual-devices@100/channel-devices@200/network@0 disk /virtual-devices@100/channel-devices@200/disk@0 virtual-console /virtual-devices/console@1 name aliases {0} ok boot sol10_dvd:f
Et cette fois l'installation démarre.
Dans le cas ou on n'arriverais pas à obtenir le prompt "ok" à cause de messages, on peut le forcer à y aller avec la combinaison de touches "~#" qui envoie un break ; ça revient à faire un ctrl-A.
Pour voir les séquences de touche existantes, il faut faire "~?".
Voici le résultat obtenu :
VNTSD commands ~# --Send break ~^B --Send alternate break ~. --Exit from this console ~w --Force write access ~n --Console next ~p --Console previous ~? --Help
Retirer des ressources au domaine invité
Voici quelques exemples de suppression de ressources :
ldm rm-vdisk [-f] emc_clariion0_34 mon_ldom ldm rm-vnet monldom_vnet0 mon_ldom
Lorsqu'on retire un vdisk d'un ldom en marche, on peut avoir une erreur avec le message "Device being used by VxVM". Ca arrive quand le vdisk était utilisé par VxVM (Veritas Volume Manager), même si on a retiré le vdisk du DG et qu'on a fait un "vxdisk rm". Si c'est le cas, inutile de faire "vxdisk rm", à la place il faut libérer le vdisk avec :
vxdmpadm disable dmpnodename=emc_clariion0_27
Ensuite on peut faire "ldm rm-vdisk".
Supprimer un domaine invité
ldm destroy mon_ldom