Oracle VM Server (LDOM)

De UnixManiax
Aller à la navigation Aller à la recherche


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.

# ldm add-vcpu 16 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.

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