Lors d’une de mes missions chez un client j’ai été confronté à une problématique spécifique concernant le nombre de licences Oracle lors de la migration d’une base de données Oracle RAC d’un environnement physique vers un environnement virtuel OVM 3.3.
En effet, la licence initiale contractée par le client était de 8 licences Oracle soit 16 cœurs
Alors, comment respecter ce même nombre de licences Oracle alors que les lames ProLiant BL460c Gen9 devant héberger le cluster RAC disposaient chacune de 20 cœurs hyperthreadés soit 40 processeurs vus par l’hyperviseur Oracle OVM 3.3.
La seule solution envisageable est le ‘hard partitionning’ qui permet de limiter de nombre de processeurs pour la machine virtuelle en associant des processeurs virtuels à des processeurs physiques.
Dans notre cas particulier, le nombre de processeurs virtuels pouvant être associé à chaque machine virtuelle est de 16 processeurs.
L’architecture et l’infrastructure déployée était la suivante :
Le mode opératoire de la mise en œuvre du hard partitionning suit ces différentes étapes :
- Contrôle des CPUs pour le serveur ‘hôte’
- Installation du module complémentaire OVM manager
- Sécurisation des échanges entre OVM manager et OVM servers
- Limitation des processeurs
Contrôle des processeurs pour le serveur ‘hôte’
Les processeurs des lames ProLiant BL460c Gen9 sont hyperthreadés (2 threads par cœur), le nombre de licences Oracle est limité à 4 licences par lame soit 8 cœurs.
Etant donné que les licences Oracle sont calculées sur les cœurs, nous pouvons bénéficier de l’hyper-threading et doubler la puissance des processeurs en allouant 16 processeurs virtuels à chaque machine virtuelle sans pour autant s’acquitter de licences Oracle supplémentaires.
[root@s1-easy-ovm001 log]# xenpm get-cpu-topology CPU core socket node CPU0 0 0 0 CPU1 0 0 0 CPU2 1 0 0 CPU3 1 0 0 CPU4 2 0 0 CPU5 2 0 0 CPU6 3 0 0 CPU7 3 0 0 CPU8 4 0 0 CPU9 4 0 0 CPU10 8 0 0 CPU11 8 0 0 CPU12 9 0 0 CPU13 9 0 0 CPU14 10 0 0 CPU15 10 0 0 CPU16 11 0 0 CPU17 11 0 0 CPU18 12 0 0 CPU19 12 0 0 CPU20 0 1 1 CPU21 0 1 1 CPU22 1 1 1 CPU23 1 1 1 CPU24 2 1 1 CPU25 2 1 1 CPU26 3 1 1 CPU27 3 1 1 CPU28 4 1 1 CPU29 4 1 1 CPU30 8 1 1 CPU31 8 1 1 CPU32 9 1 1 CPU33 9 1 1 CPU34 10 1 1 CPU35 10 1 1 CPU36 11 1 1 CPU37 11 1 1 CPU38 12 1 1 CPU39 12 1 1 [root@s1-easy-ovm001 log]# xm vcpu-list Name ID VCPU CPU State Time(s) CPU Affinity 0004fb00000600007c351fa24276c63f 1 0 5 -b- 4676.8 any cpu 0004fb00000600007c351fa24276c63f 1 1 6 -b- 4537.0 any cpu 0004fb00000600007c351fa24276c63f 1 2 1 -b- 4676.8 any cpu 0004fb00000600007c351fa24276c63f 1 3 0 -b- 4237.0 any cpu 0004fb00000600007c351fa24276c63f 1 4 7 -b- 4176.8 any cpu 0004fb00000600007c351fa24276c63f 1 5 16 -b- 4537.0 any cpu 0004fb00000600007c351fa24276c63f 1 6 12 -b- 3976.8 any cpu 0004fb00000600007c351fa24276c63f 1 7 20 -b- 3837.0 any cpu 0004fb00000600007c351fa24276c63f 1 8 22 -b- 4670.8 any cpu 0004fb00000600007c351fa24276c63f 1 9 23 -b- 4527.0 any cpu 0004fb00000600007c351fa24276c63f 1 10 30 -b- 4226.8 any cpu 0004fb00000600007c351fa24276c63f 1 11 36 -b- 4837.0 any cpu 0004fb00000600007c351fa24276c63f 1 12 37 -b- 4176.8 any cpu 0004fb00000600007c351fa24276c63f 1 13 18 -b- 4235.0 any cpu 0004fb00000600007c351fa24276c63f 1 14 19 -b- 4670.8 any cpu 0004fb00000600007c351fa24276c63f 1 15 11 -b- 4530.0 any cpu Domain-0 0 0 0 -b- 1216.9 0 Domain-0 0 1 1 -b- 631.1 1 Domain-0 0 2 2 -b- 884.9 2 Domain-0 0 3 3 -b- 618.2 3 Domain-0 0 4 4 -b- 921.7 4 Domain-0 0 5 5 -b- 1042.5 5 Domain-0 0 6 6 -b- 888.0 6 Domain-0 0 7 7 -b- 817.8 7 Domain-0 0 8 8 -b- 719.3 8 Domain-0 0 9 9 -b- 927.4 9 Domain-0 0 10 10 -b- 811.8 10 Domain-0 0 11 11 r-- 1036.8 11 Domain-0 0 12 12 -b- 949.2 12 Domain-0 0 13 13 -b- 823.0 13 Domain-0 0 14 14 -b- 1088.7 14 Domain-0 0 15 15 -b- 730.2 15 Domain-0 0 16 16 -b- 567.6 16 Domain-0 0 17 17 -b- 867.1 17 Domain-0 0 18 18 -b- 461.1 18 Domain-0 0 19 19 -b- 963.8 1
Installation du module complémentaire OVM manager
Avec la version OVM 3.3.3 nous pouvons disposer d’un outil spécifique pour effectuer le hard partitionning des machines virtuelles :
[root@s-easy-ovmm001 ovm-manager-3]# su - oracle [oracle@s-easy-ovmm001~]$ cd /u01/app/oracle/ovm-manager-3 [oracle@s-easy-ovmm001 ovm-manager-3]$ unzip /tmp/p13602094_30_Linux-x86-64.zip inflating: readme.txt creating: ovmutils/ extracting: ovmutils/ovm_utils_1.0.2.zip extracting: ovmutils/ovm_utils_2.0.1.zip inflating: ovmutils/readme inflating: ovmutils/readme-1.0.2 inflating: ovmutils/readme-2.0.1 [oracle@s-easy-ovmm001 ovm-manager-3]$ [oracle@s-easy-ovmm001 ovm-manager-3]$ cd ovmutils [oracle@s-easy-ovmm001 ovmutils]$ unzip ovm_utils_2.0.1.zip Archive: ovm_utils_2.0.1.zip creating: ovm_utils/ creating: ovm_utils/man/ creating: ovm_utils/man/man8/ inflating: ovm_utils/man/man8/ovm_vmcontrol.8 inflating: ovm_utils/man/man8/ovm_vmhostd.8 inflating: ovm_utils/man/man8/ovm_vmdisks.8 inflating: ovm_utils/man/man8/ovm_reporestore.8 inflating: ovm_utils/man/man8/ovm_vmmessage.8 inflating: ovm_utils/ovm_vmdisks creating: ovm_utils/class/ inflating: ovm_utils/class/OvmVmMessage.class inflating: ovm_utils/class/OvmRepoRestore.class inflating: ovm_utils/class/OvmVmHostd.class inflating: ovm_utils/class/OvmVmMessage$1.class inflating: ovm_utils/class/OvmVmHostd$1.class inflating: ovm_utils/class/OvmVmControl.class inflating: ovm_utils/class/OvmVmHostd$InsecureTrustManager.class inflating: ovm_utils/class/OvmVmDisks.class inflating: ovm_utils/class/OvmVmMessage$InsecureTrustManager.class inflating: ovm_utils/ovm_vmcontrol inflating: ovm_utils/ovm_vmhostd inflating: ovm_utils/vm-dump-metrics inflating: ovm_utils/ovm_reporestore creating: ovm_utils/lib/ inflating: ovm_utils/lib/jython.jar inflating: ovm_utils/lib/log4j.jar inflating: ovm_utils/lib/OvmClient.jar inflating: ovm_utils/lib/OvmWsClient.jar inflating: ovm_utils/lib/ovm_shell.jar inflating: ovm_utils/lib/commons-logging-1.1.3.jar inflating: ovm_utils/lib/jline.jar inflating: ovm_utils/lib/commons-logging.jar inflating: ovm_utils/ovm_vmmessage
Sécurisation des échanges entre OVM manager et OVM servers
Les échanges entre le serveur OVM manager et les serveurs OVM doivent être sécurisés pour cela Oracle utilise le service SSL.
[root@s-easy-ovmm001 bin]# cd /u01/app/oracle/ovm-manager-3/bin [root@s-easy-ovmm001 bin]# ./secureOvmmTcp.sh Enabling OVMM TCP over SSL service Please enter the Oracle VM manager user name: admin Please enter the Oracle VM manager user password: The job of enabling OVMM TCPS service is committed, please restart OVMM to take effect. [root@s-easy-ovmm001 bin]# service ovmm restart
Limitation des processeurs
-
Méthode avec ovm_vmcontrol 3.3
Se connecter sur le serveur OVM Manager et se positioner dans le repertoire /u01/app/oracle/ovm-manager-3/ovmutils/ovm_utils
./ovm_vmcontrol -u admin -p xxxxxxx -h localhost -v s1-easy-rac01 -c vcpuget ./ovm_vmcontrol -u admin -p xxxxxxx -h localhost -v s1-easy-rac01 -c vcpuset -s 0-7,20-27
-
Méthode manuelle
Modifier directement le fichier de configuration vm.cfg sur le serveur hôte et ajouter la ligne cpus=0-7,20-27
/OVS/Repositories/0004fb0000030000afd883f7dc2/VirtualMachines/0004fb00000600007c351fa24276c63f /vm.cfg
{———–repository UUID———–} {————Virtual Machine UUID———–}
+———————————————–+
UUIDs peut être obtenu à partir VM Manager
vi vm.cfg
cpus = ‘0-7,20-27’
Restrictions
Le fait de mettre en œuvre le hard partitioning interdit toute possibilité d’utiliser LIVE MIGRATION et sa faculté de basculer automatiquement une machine virtuelle sur un des serveurs ‘hôte’ disponibles.