Oracle VM 3.1.1 Sandbox ( Entorno de pruebas VM Server )

Muchos queremos probar Oracle VM Server pero el requerimiento del al menos dos máquinas, una para el hipervisor y otra para el gestor nos frenan. En base a un blog del grupo Phytian y jugando un poco he logrado poner los dos ( el hipervisor y el manager ) en una sola máquina y desplegar una plantilla de las que proporciona Oracle.

La máquina que utilizaré tiene un procesador AMD de 4 núcleos 8 GB en RAM y dos discos, el primero de 500GB y el segundo de 1TB. Todos los componentes los compre y los ensamble en casa por algo menos de 400 euros, por lo que es un entorno interesante para probar el producto a un coste razonable.

Oracle VM desde la versión 3 espera que el repositorio se cree en otro disco por lo que si tenemos un sistema con un solo disco tendremos que presentarlo por NFS con todo lo que ello implica ( ciclos de CPU / posible inestabilidad  ), para presentar una partición por NFS podemos encontrar una referencia en otro post del blog de Pythian de Yuri Velikanov.

Lo primero es descargar Oracle VM 3.1.1 de Oracle E-Delivery quemarlo en CD e instalarlo en el servidor, para poder realizar esto requeriremos una cuenta de Oracle SSO, que la podemos crear en OTN.

Durante la instalación es importante editar la plantilla de particiones y asignarle más swap ( 2048M ) y asginarle mas espacio de disco al dom0 que está montado como raíz ( unos 36GB mínimo ) yo le asigné todo el espacio en el disco de 500G porque luego presentaré lo que reste por NFS y pondré un apache en el dom0 para usarlo para cargar las plantillas.

Editamos el archivo /boot/grub/grub.conf y le damos más memoria al dom0

[root@vmserver iso] cat /boot/grub/grub.conf
# grub.conf generated by anaconda
..
#boot=/dev/sdb
default=0
timeout=5
title Oracle VM Server-ovs (xen-4.1.2 2.6.39-200.1.1.el5uek)
	root (hd0,0)
	kernel /xen.gz dom0_mem=2048M
	module /vmlinuz-2.6.39-200.1.1.el5uek ro root=UUID=538a8508-9679-4d9d-8e9d-eac780c7743b
	module /initrd-2.6.39-200.1.1.el5uek.img
title Oracle VM Server-ovs serial console (xen-4.1.2 2.6.39-200.1.1.el5uek)
	root (hd0,0)
	kernel /xen.gz console=com1,vga com1=57600,8n1 dom0_mem=639M
	module /vmlinuz-2.6.39-200.1.1.el5uek ro root=UUID=538a8508-9679-4d9d-8e9d-eac780c7743b  console=tty console=ttyS0,57600n8
	module /initrd-2.6.39-200.1.1.el5uek.img

Editamos /etc/security/limits.conf  para aumentar el número de archivos abiertos al mismo tiempo.

[root@vmserver iso] cat /etc/security/limits.conf
# /etc/security/limits.conf
# .....
#@student        -       maxlogins       4

*		soft	nofile		65536
*		hard	nofile		65536

Agregamos el grupo dba y el usuario oracle

[root@vmserver stage]#groupadd dba
[root@vmserver stage]#useradd -g dba oracle

Instalamos el paquete bc que lo utiliza Oracle XE, se puede encontrar con una búsqueda en google

[root@vmserver stage]# rmp -Uvh bc-1.06-21.x86_64.rpm

listos estos pasos copiamos el iso de la instalación del, lo podemos copiar con scp desde otro servidor o con wiscp desde windows, por ejemplo yo lo he copiado en /stage. Luego montamos el iso en el sistema de archivos y lanzamos el runInstaller con la opción -n para que no de alertas en caso de no cumplir los requerimientos.

[root@vmserver stage]# ls
bc-1.06-21.x86_64.rpm  iso  VM3.3.1_Manager.iso
[root@vmserver stage]# pwd
/stage
[root@vmserver stage]# mount -o loop VM3.3.1_Manager.iso /stage/iso/
[root@vmserver stage]# cd iso
[root@vmserver iso]# ./runInstaller.sh -n

Oracle VM Manager Release 3.1.1 Installer

Oracle VM Manager Installer log file:
 /tmp/install-2012-05-25-113143.log

Please select an installation type:
   1: Demo
   2: Production
   3: Uninstall
   4: Help

   Select Number (1-4): 1

Starting demo installation ...

The Demo installation type will use an XE database.  The usage of XE is for *demo purposes only* and is not supported for production. Please *do not* plan to start with XE and migrate to a supported version of the database as this may not be possible. For production environments or any long term usage please use the "Production" option with an SE or EE database.
   1: Continue
   2: Abort

   Select Number (1-2): 1

Verifying installation prerequisites ...
Oracle VM Manager can only be installed on a 64 bit Oracle Linux version 5.5 and higher.
Current version is 'redhat' version '3.1.1'
*** WARNING: Recommended memory for the Oracle VM Manager server installation is 3950 MB RAM
Ignoring prerequisites check ...

One password is used for all users created and used during the installation.
Enter a password for all logins used during the installation:
Enter a password for all logins used during the installation (confirm): 

Verifying configuration ...

Start installing the configured components:
   1: Continue
   2: Abort

   Select Number (1-2): 1

Step 1 of 9 : Database ...
Installing Database ...
Retrieving Oracle Database 11g XE ...
Installing Oracle Database 11g XE ...
Configuring Oracle Database 11g XE ...

Step 2 of 9 : Java ...
Installing Java ...

Step 3 of 9 : Database Schema ...
Creating database schema 'ovs' ...

Step 4 of 9 : WebLogic ...
Retrieving Oracle WebLogic Server 11g ...
Installing Oracle WebLogic Server 11g ...

Step 5 of 9 : ADF ...
Retrieving Oracle Application Development Framework (ADF) ...
Unzipping Oracle ADF ...
Installing Oracle ADF ...
Installing Oracle ADF Patch...

Step 6 of 9 : Oracle VM  ...
Retrieving Oracle VM Manager Application ...
Extracting Oracle VM Manager Application ...
Installing Oracle VM Manager Core ...

Step 7 of 9 : Domain creation ...
Creating Oracle WebLogic Server domain ...
Starting Oracle WebLogic Server 11g ...
Configuring data source 'OVMDS' ...
Creating Oracle VM Manager user 'admin' ...

Step 8 of 9 : Deploy ...
Deploying Oracle VM Manager Core container ...
Deploying Oracle VM Manager UI Console ...
Deploying Oracle VM Manager Help ...
Enabling HTTPS ...
Granting ovm-admin role to user 'admin' ...

Step 9 of 9 : Oracle VM Manager Shell ...
Retrieving Oracle VM Manager Shell & API ...
Extracting Oracle VM Manager Shell & API ...
Installing Oracle VM Manager Shell & API ...

Retrieving Oracle VM Manager Upgrade tool ...
Extracting Oracle VM Manager Upgrade tool ...
Installing Oracle VM Manager Upgrade tool ...
Copying Oracle VM Manager shell to '/usr/bin/ovm_shell.sh' ...
Installing ovm_admin.sh in '/u01/app/oracle/ovm-manager-3/bin' ...
Installing ovm_upgrade.sh in '/u01/app/oracle/ovm-manager-3/bin' ...
Enabling Oracle VM Manager service ...
Shutting down Oracle VM Manager instance ...
Restarting Oracle VM Manager instance ...
Waiting 15 seconds for the application to initialize ...
Oracle VM Manager is running ...
Oracle VM Manager installed.

Please wait while WebLogic configures the applications... This can take up to 5 minutes.

Installation Summary
--------------------
Database configuration:
  Database host name          : localhost
  Database instance name (SID): XE
  Database listener port      : 1521
  Application Express port    : 8080
  Oracle VM Manager schema    : ovs

Weblogic Server configuration:
  Administration username     : weblogic

Oracle VM Manager configuration:
  Username                    : admin
  Core management port        : 54321
  UUID                        : 0004fb00000100009f9331dd1f11aec3

Passwords:
There are no default passwords for any users. The passwords to use for Oracle VM Manager, Oracle Database 11g XE, and Oracle WebLogic Server have been set by you during this installation. In the case of a default install, all passwords are the same.

Oracle VM Manager UI:

http://vmserver.oralab:7001/ovm/console


https://vmserver.oralab:7002/ovm/console

Log in with the user 'admin', and the password you set during the installation.

Please note that you need to install tightvnc-java on this computer to access a virtual machine's console.

For more information about Oracle Virtualization, please visit:

http://www.oracle.com/virtualization/

Oracle VM Manager installation complete.

Finalizada la instalación es buena idea hacer que la base de datos consuma menos memoria:

root@vmserver iso]# su - oracle
[oracle@vmserver ~]$ cd /u01/app/oracle/product/11.2.0/xe/
[oracle@vmserver xe]$ export ORACLE_HOME=`pwd`
[oracle@vmserver xe]$ export ORACLE_SID=XE
[oracle@vmserver xe]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@vmserver xe]$ sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Fri May 25 17:56:56 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> alter system set sga_max_size=0 scope=spfile;

System altered.

SQL> alter system set memory_max_target=300M scope=spfile;

System altered.

SQL> alter system set memory_target=300M scope=spfile;

System altered.

SQL> create pfile from spfile;

File created.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  187928576 bytes
Fixed Size		    2224792 bytes
Variable Size		   96472424 bytes
Database Buffers	   83886080 bytes
Redo Buffers		    5345280 bytes
Database mounted.
Database opened.
SQL>

Podemos también cambiar los requerimientos de memoria del Oracle VM Manager editando el archivo /etc/init.d/ovmm editando las líneas que contienen los parámetros de uso de memória.

JVM_MEMORY_MIN=512m
JVM_MEMORY_MAX=1200m
JVM_MAX_PERM=384m

Una vez realizados todos estos cambios reiniciamos el servidor y entramos a la consola que estará en http://nombre-servidor:7001/ovm/console.

Los pasos siguientes serán:

  • Descubrir el servidor
  • Agregar el servidor a un server pool
  • Crear un respositorio en el segundo disco
  • Modificamos la red por defecto para que sirva para storage y máquinas virtuales
  • Agregamos unas cuantas ( unas 10 ) virtual nics
  • Descargamos un plantilla de la web de Oracle y la instalamos con el OVM
  • Creamos nuestra primera máquina virtual en base a la plantilla
  • Editamos la máquina virtual y le asignamos un virtual nic ( si no no tendrá red )

Realizando los pasos anteriores tuve unos pequeños problemas.

Primer problema no se desplegaba el segundo disco del server como almacenamiento local, buscando en los foros vi que era necesario levantar el mapeo de iscsi y lo detectaba.

[root@vmserver mapper]# service multipathd start
Starting multipathd daemon:                                [  OK  ]
[root@vmserver mapper]# ls /dev/mapper/
control  SATA_Hitachi_HDS5C30_ML0220F30UPE7D
[root@vmserver mapper]# chkconfig multipathd on

Otro inconveniente es que las plantillas las carga por http de otro servidor, así que me plantee poner un servidor apache en el dom0, para ello agregue un repositorio de los que Oracle tiene como públicos. Al tener un apache en el mismo servicor ya puedo poner las plantillas que se descarguen desde Oracle en /var/www ahorrando tiempo de red. La configuración de un repositorio en el hipervisor no es recomendada pero recordemos que este es un entorno de prueba.

[root@vmserver yum.repos.d]# pwd
/etc/yum.repos.d
[root@vmserver yum.repos.d]# cat oul5_u7_base.repo
[ol5_u7_base]
name=Oracle Linux $releasever – U7 – $basearch – base
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL5/7/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1
[root@vmserver yum.repos.d]# yum list
[root@vmserver yum.repos.d]# yum install httpd
[root@vmserver yum.repos.d]# vi /etc/httpd/conf.d/welcome.conf

Y el problema final fue que al lanzar la consola de la máquina virtual desde el OVM entraba en un lazo infinito de descargar un archivo, para solucionarlo hay que ejecutar el archivo con javaws. En mi sistema de escritorio que es un Ubuntu fue hacer que lance  la descarga con /usr/bin/javaws, un proeblema relacionado fue la necesidad de tener el tightVNC instalado, en Ubuntu se instala el paquete xtightvnc.

En el mac tuve que instalar tigthVNC en su versión java y modificar el lanzador de la aplicación a

/usr/bin/java -jar /Users/fjandrade/tightvnc-jviewer.jar -host ${host} -port ${port}

Espero que sea de ayuda!

2 thoughts on “Oracle VM 3.1.1 Sandbox ( Entorno de pruebas VM Server )

  1. Hola Fernando, soy Carlos Sernis, antiguo alumno del curso de MySQL del CTA, Zaragoza, de principios de este año. Este artículo tuyo me parece muy interesante y no tengo claro si me pudiera servir para algo que estoy intentando hacer con mis alumnos, ya que soy profesor de fp de informática. Quiero montar oracle 11g en un servidor del aula para que los chavales se puedan conectar desde casa mediante la em o similar y puedan practicar con su base de datos individualmente. El problema no es otro que en medio hay un router del gobierno de aragón (es un instituto público) en el que nosotros no podemos tocar nada. Así pues una solución que había pensado es hacer que el servidor oracle fuera un cliente vpn que se conectara a los alumnos que serían todos los servidores mediante un servicio de tipo no-ip o similar y con un script que, desde el cliente, buscara nuevas peticiones de los servidores. Aún así este tipo de configuración depende “demasiado” de los alumnos, y me gustaría saber si conoces si oracle ofrece alguna solución a esta problemática. Disculpa semejante longitud de mail y recibe un cordial saludo de un alumno (profesor) agradecido. Muchas gracias por adelantado!

  2. Hola Carlos, creo que lo ideal sería que hagas una máquina virtual como la que usamos en el curso de VirtualBox
    y ésta se las pases a tus alumnos, no te recomiendo user Oracle VM porque es un hipervisor lo que implica que
    tendrías que borrar toda la máquina o meterla en una máquina virtual lo que daría un poco lo mismo que nada.
    Oracle tiene una serie de máquinas virtuales para VirtualBox listas para ser usadas en esta dirección:
    http://www.oracle.com/technetwork/community/developer-vm/index.html
    Como puedes ver hay una para desarrollo de bases de datos que es más que suficiente para lo que tienes pensado.

    Saludos a todos por Zaragoza.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>