Ajouter de la mémoire sur une VM Exadata virtualisée

Lors d’un projet de Migration de bases de données sur un EXADATA virtualisé,
j’ai été confronté à une petite difficulté : « Ajouter/Diminuer de la mémoire sur les VM ».

Notons que cette opération nécessite un redémarrage de la VM.
Nous allons passer la mémoire de la VM vm007-adm.easy.test de 32768 Mo à 65536 Mo.
 
Se connecter sur le DbNode (DOM0) hébergeant la VM concernée :
ssh root@dbnode001.easy.test
root@dbnode001.easy.test's password:

Vérifier la disponibilité des ressources mémoires sur le DbNode :
[root@dbnode001 ~]# xm info
host : dbnode001.easy.test
release : 2.6.39-400.281.1.el5uek
version : #1 SMP Sat Jun 18 01:29:18 PDT 2016
machine : x86_64
nr_cpus : 88
nr_nodes : 2
cores_per_socket : 22
threads_per_core : 2
cpu_mhz : 2195
hw_caps : bfebfbff:2c100800:00000000:00007f40:77fefbff:00000000:00000121:021cbfbb
virt_caps : hvm hvm_directio
total_memory : 262011
free_memory : 67719
free_cpus : 0
xen_major : 4
xen_minor : 1
xen_extra : .3OVM
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : unavailable
xen_commandline : dom0_mem=8G,max:8G dom0_max_vcpus=4 no-bootscrub loglvl=all guest_loglvl=all com1=115200,8n1 conring_size=1m console=com1 console_to_ring crashkernel=448M@128M xsave=1
cc_compiler : gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)
cc_compile_by : mockbuild
cc_compile_domain : us.oracle.com
cc_compile_date : Thu Jun 2 15:11:25 PDT 2016
xend_config_format : 4

Liste des VMs en cours d’exécution sur le dbnode dbnode001 :
[root@dbnode001 ~]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 8192 4 r----- 2207874.7
vm001-adm.easy.test 1 16384 2 -b---- 1178676.1
vm003-adm.easy.test 2 65536 8 -b---- 1318536.9
vm005-adm.easy.test 6 32768 4 ------ 1325586.8
vm007-adm.easy.test 13 32768 4 r----- 1317776.0
vm009-adm.easy.test 18 32768 4 -b---- 1024213.6

Accéder au repository des VMs :
[root@dbnode001 ~]# cd /EXAVMIMAGES/GuestImages
[root@dbnode001 GuestImages]# ls -lrt
total 0
drwxr----- 2 root root 3896 sept. 9 16:22 vm001-adm.easy.test
drwxr----- 2 root root 3896 sept. 9 16:44 vm003-adm.easy.test
drwxr----- 2 root root 3896 sept. 9 17:06 vm005-adm.easy.test
drwxr----- 2 root root 3896 sept. 9 17:27 vm007-adm.easy.test
drwxr----- 2 root root 3896 sept. 9 17:50 vm009-adm.easy.test

Se déplacer dans au niveau de la VM à modifier :
[root@dbnode001 GuestImages]# cd vm007-adm.easy.test
Le fichier de configuration de la vm est vm.cfg :
[root@dbnode001 vm007-adm.easy.test]# ls -lr
total 44802048
-rw-r----- 1 root root 2292 août 11 16:15 vm.cfg
-rw-r----- 1 root root 26843545600 sept. 23 15:02 System.img
-rw-r----- 1 root root 66571993088 sept. 23 15:19 pv1_vgexadb.img
-rw-r----- 1 root root 53687091200 sept. 23 15:17 grid12.1.0.2.160719.img
-rw-r----- 1 root root 4241 août 11 16:13 vm007-adm.easy.test.virtualmachine.a194b6661a2543369473a2c605810e5a.conf
-rw-r----- 1 root root 2569 août 11 16:13 vm007-adm.easy.test.cell.a194b6661a2543369473a2c605810e5a.conf
-rw-r----- 1 root root 53687091200 sept. 23 14:52 db12.1.0.2.160719-3.img

Modifier les paramètres de mémoire « memory » :
[root@dbnode001 vm007-adm.easy.test]# vi vm.cfg
memory = '65536'
maxmem = '65536'

Arrêter la VM pour la prise en compte des modifications :
[root@dbnode001 vm007-adm.easy.test]# xm shutdown vm007-adm.easy.test
Attendre que la VM disparaisse de la console :
[root@dbnode001 vm007-adm.easy.test]# watch xm list
[root@dbnode001 vm007-adm.easy.test]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 8192 4 r----- 2208509.9
vm001-adm.easy.test 1 16384 2 -b---- 1178985.3
vm003-adm.easy.test 2 65536 8 -b---- 1318912.7
vm005-adm.easy.test 6 32768 4 rb---- 1325927.8
vm009-adm.easy.test 18 32768 4 -b---- 1024511.1

Une fois que la vm disparait de la liste des VM, redémarrer celle-ci :
[root@dbnode001 vm007-adm.easy.test]# xm create vm.cfg
Using config file "./vm.cfg".
Started domain vm007-adm.easy.test (id=15)

La modification de mémoire a bien été prise en compte :
[root@dbnode001 vm007-adm.easy.test]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 8192 4 r----- 2209029.3
vm001-adm.easy.test 1 16384 2 -b---- 1179249.8
vm003-adm.easy.test 2 65536 8 -b---- 1319235.8
vm005-adm.easy.test 6 32768 4 -b---- 1326218.4
vm007-adm.easy.test 19 65536 4 -b---- 538.9
vm009-adm.easy.test 18 32768 4 -b---- 1024771.4