miércoles, 26 de octubre de 2011

Windows 7: Como grabar en C: y otros directorios del sistema

 Me tope con una app que segun los de soporte me decian que el problema que tenia era que tenia problemas de permisos.

Ahora bien, hice lo necesario, aplique los permisos a el folder como ellos me indicaron y aun asi la aplicacion se rehuzo a instalarse.

De ahi, la persona de soporte me comento que iba a decirme como instalar la app a mano, segui sus instrucciones y nada.

Despues me dijo que iba a revisar con su maquina para ver el problema, me mando un correo y me dijo que haya con el la app funciono, probo en windows 7 32/64 y que todo bien, que el problema era la falta de permisos en mi maquina.

Entonces le pregunte, bien si dices que son por falta de permisos, dime donde los tengo que aplicar? Y claro que ni el sabia donde.

Analizando la app, es una hecha en vb6 aun, los dlls mas nuevos son del 2008, los demas son viejos.

El problema radica en que la app trata de instalar esos DLL en el folder C:\Windows\system32\ y claro que no le permite grabar los archivos.

La app fue hecha para buscar los DLL en system32 y no para correrlos localmente en el folder donde esta el ejecutable como el queria hacerle.

Bien, entonces descomprimi el folder, entre a el archivo CAB que tiene los DLL, y trate de copear todos los DLL a el system32 de mi Windows 7, BOOM, no dejo grabar ninguno.

Empece a investigar el problema, y note que mi usuario que se dice estar en el grupo de "Administrators" no lo es, Microsoft trata de engañarnos haciendonos creer que si lo somos, pero al final vivimos en el engaño.

Leyendo otros foros, habia uno donde nos indican esto, y existe una manera de habilitar el usuario "Administrator" que por default esta deshabilitado por seguridad.

 Figura 1. Cuenta de Administrator.

Por default como indica la Figura 1, la cuenta esta deshabilitada.

Figura 2. Caracteristicas de la cuenta.


Ya solo, le quitan la palomita para habilitarla, Apply - Ok y listo.

Notaran que la flecha ya no aparece en el usuario, por seguridad esta cuenta si es la de Administrator que teniamos en XP/2000, la que usamos es una de usuario normal con privilegios extras.

Se deslogean y les aparecera la cuenta para logearse, no tiene password por default.

Una recomendacion que les hago, esta cuenta usenla para hacer aquellas cosas que su usuario normal no se los permite en mi caso:

Grabar archivos en el C:\windows\system32\ como los DL por ejemplo.

Ya lo hice, una vez terminada mi tarea, deshabilito de nuevo la cuenta y entro con mi usuario normal, ya que con el si puedo hacer todas mis labores excepto grabar los DLL de mi aplicacion X.

No abusen de esta cuenta, usenla cuando en realidad tengan problemas, esta forma de trabajar de Windows 7 no es mala, desgraciadamente ellos no proporcionan la informacion real, el foro donde lei todo esto ahi viene infinidad de gente que tuvo problemas parecidos a el mio, y varios de ellos indican que hasta hablaron con personas de soporte y aun asi ni ellos mismos lograron solucionar el problema, ni modo asi nos quieren tener y aparte nos cobran.

Recordar que la cuenta por default no tiene password, por ello usenla y cierrenla.

NOTA: Algo que note cuando entre con el usuario Administrator es que los compartidos dejaron de operar, no me he metido mas a fondo pero en cuanto regrese con mi usuario normal los compartidos volvieron a trabajar.

Saludos!!!

lunes, 24 de octubre de 2011

Centos 5.x: Xen arrancar DomU al iniciar sistema

Existe una manera que me ha funcionado, la configuracion de las vm's se localiza en /etc/xen/, dentro de ese directorio hay otro de nombre auto.

Bien, para poder arracar mis vm's cada que por alguna razon necesito reiniciar Dom0(actualizaciones) es crear un soft link hacia ese folder para DomU, ejemplo:

ln -s /etc/xen/vm-1 /etc/xen/auto/vm-1

Listo, prueben y veran que su vm-1 arrancan cada que reinicien su dom0, saludos!!!

Xen 3.1/Xen 3.4.

jueves, 13 de octubre de 2011

MySQL 5.1: Reparar tablas MyISAM con mysqlcheck


Bacula se nego a funcionar, la db es MySQL 5.1, el log de bacula es:

12-Oct 19:47 bacula-dir JobId 12396: Fatal error: sql_create.c:870 Lock Filename table Query failed: LOCK TABLES Filename write, batch write, Filename as f write: ERR=Table './bacula/Filename' is marked as crashed and last (automatic?) repair failed
 

Bueno, tenemos que reparar nuestras tablas, mysql nos proporciona varios comandos, entre ellos podemos tratar de compactar la bd completo o bien usar el comando: mysqlcheck para ver el estatus de las tablas y si necesitaramos reparar alguna tipo MYISAM esta el comando myisamchk.

NOTA: Recomendacion de MySQL, si van a reparar tablas es
altamente recomendable que el servicio este apagado por seguridad, de lo contrario atenganse a las consecuencias si algo sale mal, ya que si un usuario esta tratando de ingresar datos, aunque la tabla ya no se lo permita pero puede estar abierto el aputador a el archivo y luego el comando myisamchk tambien trata de hacer modificaciones, nomas imaginense que puede pasar?.


mysqlcheck

 
Si lo ejecutan solo, les va a dar todo su arsenal de parametros que soporta.

Bacula tiene varias tablas, todas son usando el engine: myisam.

Ahora vamos empezar por revisar la bd y que nos diga que tablas necesitan reparacion:

/var/lib/mysql/bacula/
 
 -rw-rw---- 1 mysql mysql       8710 Jun 27 00:28 BaseFiles.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:28 BaseFiles.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:28 BaseFiles.MYI
-rw-rw---- 1 mysql mysql       8604 Jun 27 00:28 CDImages.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:28 CDImages.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:28 CDImages.MYI
-rw-rw---- 1 mysql mysql       8764 Jun 27 00:28 Client.frm
-rw-rw---- 1 mysql mysql       1904 Jun 27 00:28 Client.MYD
-rw-rw---- 1 mysql mysql       3072 Jun 27 00:28 Client.MYI
-rw-rw---- 1 mysql mysql       8732 Jun 27 00:28 Counters.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:28 Counters.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:28 Counters.MYI
-rwxr-xr-x 1 mysql mysql         65 Nov 26  2010 db.opt
-rw-rw---- 1 mysql mysql       9290 Jun 27 00:28 Device.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:28 Device.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:28 Device.MYI
-rw-rw---- 1 mysql mysql       8806 Jun 27 00:28 File.frm
-rw-rw---- 1 mysql mysql 1756959048 Oct 12 22:34 File.MYD
-rw-rw---- 1 mysql mysql  777433088 Oct 12 22:34 File.MYI
-rw-rw---- 1 mysql mysql       8602 Jun 27 00:34 Filename.frm
-rw-rw---- 1 mysql mysql   69038080 Oct 12 18:15 Filename.MYD
-rw-rw---- 1 mysql mysql   75943936 Oct 12 19:10 Filename.MYI
-rw-rw---- 1 mysql mysql       8676 Jun 27 00:34 FileSet.frm
-rw-rw---- 1 mysql mysql       5104 Sep 14 19:20 FileSet.MYD
-rw-rw---- 1 mysql mysql       2048 Sep 26 06:28 FileSet.MYI
-rw-rw---- 1 mysql mysql       9618 Jun 27 00:34 Job.frm
-rw-rw---- 1 mysql mysql       9618 Jun 27 00:34 JobHisto.frm
-rw-rw---- 1 mysql mysql     167324 Jun 27 00:34 JobHisto.MYD
-rw-rw---- 1 mysql mysql      20480 Jun 27 00:34 JobHisto.MYI
-rw-rw---- 1 mysql mysql       8916 Jun 27 00:34 JobMedia.frm
-rw-rw---- 1 mysql mysql     423325 Oct 12 22:34 JobMedia.MYD
-rw-rw---- 1 mysql mysql     304128 Oct 12 22:34 JobMedia.MYI
-rw-rw---- 1 mysql mysql     334004 Oct 12 22:34 Job.MYD
-rw-rw---- 1 mysql mysql      39936 Oct 12 22:34 Job.MYI
-rw-rw---- 1 mysql mysql       8676 Jun 27 00:34 Location.frm
-rw-rw---- 1 mysql mysql       8881 Jun 27 00:34 LocationLog.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:34 LocationLog.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:34 LocationLog.MYI
-rw-rw---- 1 mysql mysql          0 Jun 27 00:34 Location.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:34 Location.MYI
-rw-rw---- 1 mysql mysql       8660 Jun 27 00:34 Log.frm
-rw-rw---- 1 mysql mysql    5677120 Oct 12 22:34 Log.MYD
-rw-rw---- 1 mysql mysql     732160 Oct 12 22:34 Log.MYI
-rw-rw---- 1 mysql mysql      10453 Jun 27 00:34 Media.frm
-rw-rw---- 1 mysql mysql      11108 Oct 12 22:34 Media.MYD
-rw-rw---- 1 mysql mysql       4096 Oct 12 22:34 Media.MYI
-rw-rw---- 1 mysql mysql       8652 Jun 27 00:34 MediaType.frm
-rw-rw---- 1 mysql mysql        100 Jun 27 00:34 MediaType.MYD
-rw-rw---- 1 mysql mysql       2048 Jun 27 00:34 MediaType.MYI
-rw-r--r-- 1 root  root        6372 Jun 27 00:19 out.txt
-rw-rw---- 1 mysql mysql       8594 Jun 27 00:34 Path.frm
-rw-rw---- 1 mysql mysql       8600 Jun 27 00:34 PathHierarchy.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:34 PathHierarchy.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:34 PathHierarchy.MYI
-rw-rw---- 1 mysql mysql   16394220 Oct 12 19:17 Path.MYD
-rw-rw---- 1 mysql mysql   25443328 Oct 12 19:17 Path.MYI
-rw-rw---- 1 mysql mysql       8658 Jun 27 00:34 PathVisibility.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:34 PathVisibility.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:34 PathVisibility.MYI
-rw-rw---- 1 mysql mysql       9699 Jun 27 00:34 Pool.frm
-rw-rw---- 1 mysql mysql        240 Oct  9 23:17 Pool.MYD
-rw-rw---- 1 mysql mysql       3072 Oct 12 18:15 Pool.MYI
-rw-rw---- 1 mysql mysql       8656 Jun 27 00:34 Status.frm
-rw-rw---- 1 mysql mysql        640 Jun 27 00:34 Status.MYD
-rw-rw---- 1 mysql mysql       2048 Jun 27 00:34 Status.MYI
-rw-rw---- 1 mysql mysql       8644 Jun 27 00:34 Storage.frm
-rw-rw---- 1 mysql mysql        120 Jun 27 00:34 Storage.MYD
-rw-rw---- 1 mysql mysql       2048 Jun 27 00:34 Storage.MYI
-rw-rw---- 1 mysql mysql       8678 Jun 27 00:34 UnsavedFiles.frm
-rw-rw---- 1 mysql mysql          0 Jun 27 00:34 UnsavedFiles.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:34 UnsavedFiles.MYI
-rw-rw---- 1 mysql mysql       8570 Jun 27 00:34 Version.frm
-rw-rw---- 1 mysql mysql          7 Jun 27 00:34 Version.MYD
-rw-rw---- 1 mysql mysql       1024 Jun 27 00:34 Version.MYI
 
O bien si analizamos toda la bd debemos darle el usuario/password del root, el nombre de la bd y el sabe donde buscarlo, vamos empezando por esta opcion:
 
bacula]# time mysqlcheck -a  -B bacula -p
Enter password:
bacula.BaseFiles                                   Table is already up to date
bacula.CDImages                                    Table is already up to date
bacula.Client                                      Table is already up to date
bacula.Counters                                    Table is already up to date
bacula.Device                                      Table is already up to date
bacula.File                                        Table is already up to date
bacula.FileSet                                     Table is already up to date
bacula.Filename
Error    : Table './bacula/Filename' is marked as crashed and last (automatic?) repair failed
Error    : Table 'Filename' is marked as crashed and last (automatic?) repair failed
error    : Corrupt
bacula.Job                                         Table is already up to date
bacula.JobHisto                                    Table is already up to date
bacula.JobMedia                                    Table is already up to date
bacula.Location                                    Table is already up to date
bacula.LocationLog                                 Table is already up to date
bacula.Log                                         Table is already up to date
bacula.Media                                       Table is already up to date
bacula.MediaType                                   Table is already up to date
bacula.Path                                        Table is already up to date
bacula.PathHierarchy                               Table is already up to date
bacula.PathVisibility                              Table is already up to date
bacula.Pool                                        Table is already up to date
bacula.Status                                      Table is already up to date
bacula.Storage                                     Table is already up to date
bacula.UnsavedFiles                                Table is already up to date
bacula.Version                                     Table is already up to date
real    0m2.297s
user    0m0.000s
sys     0m0.000s
 
Con el parametro -a le pedimos que revise rapidamente los estatus de cada tabla de la bd, es rapido y nos dice la condicion de la tabla. Me gusta ver el tiempo que tardan las tareas en ejecutarse, nos indica la condicion de nuestro equipo en lo personal cuando se trata de bd siempre deseo saber este dato.

Ahora vamos solictando mas detalle, que no revise el estatus si no que abra cada tabla y le realice una revision normal.

 
time mysqlcheck  --check -B bacula -p
Enter password:******
bacula.BaseFiles                                   OK
bacula.CDImages                                    OK
bacula.Client                                      OK
bacula.Counters                                    OK
bacula.Device                                      OK
bacula.File                                        OK
bacula.FileSet                                     OK
bacula.Filename
warning  : Table is marked as crashed and last repair failed
warning  : 1 client is using or hasn't closed the table properly
warning  : Size of indexfile is: 75943936      Should be: 14383104
error    : Size of datafile is: 69038080         Should be: 69038956
error    : Corruptbacula.Job                                         OK
bacula.JobHisto                                    OK
bacula.JobMedia                                    OK
bacula.Location                                    OK
bacula.LocationLog                                 OK
bacula.Log                                         OK
bacula.Media                                       OK
bacula.MediaType                                   OK
bacula.Path                                        OK
bacula.PathHierarchy                               OK
bacula.PathVisibility                              OK
bacula.Pool                                        OK
bacula.Status                                      OK
bacula.Storage                                     OK
bacula.UnsavedFiles                                OK
bacula.Version                                     OK
 
real    1m19.222s
user    0m0.000s
sys     0m0.000s
 
Ahi esta la tabla que esta danada de nuevo.

Pero que tal si ejecutamos la misma consulta pero agregamos el parametro -e que significa, revisa las tablas 100% sin importar el tiempo que tardes ("extendida").


 
time mysqlcheck  --check -e  -B bacula -p
Enter password:
bacula.BaseFiles                                   OK
bacula.CDImages                                    OK
bacula.Client                                      OK
bacula.Counters                                    OK
bacula.Device                                      OK
bacula.File                                        OK
bacula.FileSet                                     OK
bacula.Filename
warning  : Table is marked as crashed and last repair failed
warning  : 1 client is using or hasn't closed the table properly
warning  : Size of indexfile is: 75943936      Should be: 14383104
error    : Size of datafile is: 69038080         Should be: 69038956
error    : Corrupt
bacula.Job                                         OK
bacula.JobHisto                                    OK
bacula.JobMedia                                    OK
bacula.Location                                    OK
bacula.LocationLog                                 OK
bacula.Log                                         OK
bacula.Media                                       OK
bacula.MediaType                                   OK
bacula.Path                                        OK
bacula.PathHierarchy                               OK
bacula.PathVisibility                              OK
bacula.Pool                                        OK
bacula.Status                                      OK
bacula.Storage                                     OK
bacula.UnsavedFiles                                OK
bacula.Version                                     OK
real    2m8.610s
user    0m0.000s
sys     0m0.008s
 
Si ven el tiempo de ejecucion fue un poco mas.
MyIsamChk 

Ya sabemos que tabla esta danada, ahora vamos a tratar de repararla, los archivos que este comando nos pide son los que tienen extension "MYI". asi que vamos a ejecutar el comando de la siguiente manera.

Si saben donde esta el archivo deben darle la ruta de el o bien se meten a el folder donde estan los archivos, en mi caso es:


/var/lib/mysql/bacula

Pero antes de vamos a apagar el servicio en lo que reparamos la tabla, claro esto lo hago ya despues de horas de trabajo, cuando se que a nadie le afecta si el servicio no esta operando.

 
service mysql stop

 
Ahora si, segun el comando tenemos 2 parametros a usar para la reparacion:

-r == repara de manera rapida, la mayor parte del tiempo funciona.
-o == repara al modo antiguo, este siempre funciona, es mas lento pero efectivo.

Yo hago uso del metodo antiguo por ello uso el parametro -o, tengo tiempo, nadie me esta esperando por el servicio asi que lo ejecuto:
 

time myisamchk -o Filename.MYI
- recovering (with keycache) MyISAM-table 'Filename.MYI'
Data records: 1409502
Found block that points outside data file at 69038076
Data records: 1409472

real    0m27.491s
user    0m19.417s
sys     0m0.384s
 

Bien parece que todo esta reparado, ahora si a levantar el servicio de nuevo.
 

service mysql start
 

De nuevo regresamos a el comando mysqlchk para revisar nuestra base de datos:
 

time mysqlcheck --check -e  -B bacula -p
Enter password:
bacula.BaseFiles                                   OK
bacula.CDImages                                    OK
bacula.Client                                      OK
bacula.Counters                                    OK
bacula.Device                                      OK
bacula.File                                        OK
bacula.FileSet                                     OK
bacula.Filename                                    OK
bacula.Job                                         OK
bacula.JobHisto                                    OK
bacula.JobMedia                                    OK
bacula.Location                                    OK
bacula.LocationLog                                 OK
bacula.Log                                         OK
bacula.Media                                       OK
bacula.MediaType                                   OK
bacula.Path                                        OK
bacula.PathHierarchy                               OK
bacula.PathVisibility                              OK
bacula.Pool                                        OK
bacula.Status                                      OK
bacula.Storage                                     OK
bacula.UnsavedFiles                                OK
bacula.Version                                     OK

real    4m56.098s
user    0m0.000s
sys     0m0.000s
 

Listo, asi es como debemos tener nuestras tablas, ahora si a seguir trabajando, saludos!!!

viernes, 7 de octubre de 2011

Centos 5: Virtualizando Windows con Xen 4.x.

Ahora que ya logre que Xen 4.1.1 del repo de Gitco funcionara, es momento de llevar a cabo la instalacion de Windows7 para empezar, necesito correr a este software para instalar una app que solo se puede ejecutar ahi y ademas otras cosas que deben correr en Centos asi que vamos a virtualizar Windows 7 y Centos 5.7.

Este vez le toca a windows 7 Pro, ya que estara bajo un dominio con un PDC Linux por ello no debe ser una version home edition.

Vamos empezando:

1; Sacar la imagen del DVD de instalacion, mi maquinas virtuales estaran almacenadas en la particion:

/opt/

Ahi voy a crear un folder:

cd /opt
mkdir vmwin7
cd vmwin7

Sacamos la imagen:

dd if=/dev/dvdrw of=win7Pro.iso

Tarda un rato, pero con esto tenemos nuestra imagen lista para hacer usadas por Xen.

2; Crear la imagen para ser usada como disco duro virtual, vamos a crear una de unos 65GB, no requiero mas ya hice mis calculos y no es necesario mas.

dd if=/dev/zero of=win7Pro.img oflag=direct bs=1M count=65535

Tambien tarda un rato, ya tenemos nuestros 2 archivos:

-rw-r--r-- 1 root root 68718428160 Oct  7 20:31 win7Pro.img
-rw-r--r-- 1 root root  2564784128 Oct  7 19:01 win7Pro.iso

3; Crear la vm:

La gran ventaja de esto, que a mi en lo personal me agrada es:

a) No requiero tener una instalacion grafica en el server, un servidor solo debe ejecutar los programas necesarios.

b) Atraves de otra maquina puedo llevar a cabo las instalaciones de este tipo, ya que trae soporte para VNC de fabrica.

Que mas necesitamos?

Aqui vamos:

virt-install -n darwin -r 2048 -f /opt/vmwin7/win7Pro.img -b xenbr0 --vnc --vnclisten=192.168.2.48  -v -c /opt/vmwin7/win7Pro.iso

esto recibo de mensajes:

Starting install...
Creating domain...                                                                                                                                                             |    0 B     00:00

(virt-viewer:5331): Gtk-WARNING **: cannot open display:
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

Para Windows XP:

virt-install -n xp1 -r 2048 -f /opt/xp1/winxp.img -b virbr0 --vnc --vnclisten=192.168.2.48 -v -c /opt/xp1/windowsxppro.iso

Para Windows 2003:

virt-install --name win2k3 --ram 2048 --hvm --vcpus=2  --cpuset="auto" --disk path=/vm/win2k3/win2k3.img --network bridge=xenbr0 mac=mac-address --vnc --vnclisten=192.168.2.21  --os-type=windows --os-variant=win2k3 --noautoconsole --cdrom /vm/win2k3/win2k3.iso --video=cirrus

Aqui fuimos mas especificos, es cuestion de jugar con todos los parametros de virt-install, el parametro:

--noautoconsole

Nos sirve para eliminar el mensaje:

(virt-viewer:5331): Gtk-WARNING **: cannot open display:

Vamos revisando que dice xen:

xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     1     r-----    324.5
darwin                                       5  2048     1     -b----     13.7

Algo aparte del DOM-0 esta ejecutandose, como le dije me abriera una conexion a esta instalacion vnv a el IP del server, vamos revisando en otro equipo para ver si es cierto:

Figura 1: Instalacion desde una sesion VNC.

No voy a poner mas imagenes ya que me puede llevar mas tiempo, lo importante es saber como llevar a cabo esto con Xen+Centos.

La 1ra vez reiniciara y no abra manera de que reinicie solo, asi que vamos a crear el archivo de configuracion de Windows 7 en xen, lo voy a llamar vm-darwin y lleva esto:

name = "Darwin"
uuid = ""
memory = 2048
vcpus = 2
cpus = "1,2"
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "c"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "destroy"
device_model = "/usr/lib64/xen/bin/qemu-dm"
sdl = 0
vnc = 1
display = "Darwin:0.0"
vncunused = 1
vnclisten = "192.168.2.48"
vncpassword = ""
keymap = "en-us"
disk = [ "file:/opt/vmwin7/win7Pro.img,hda,w" ]
vif = [ "mac=00:16:36:09:96:b6,bridge=xenbr0,script=vif-bridge" ]
parallel = "none"
serial = "pty"

El dato mas critico es la MAC address, yo tengo un control de ellas, atraves de otras se cual colocarlo, voy a meterme mas de lleno aqui para poner saber como generar este dato, aqui agarre la otra maquina y jugarle, los 2 primero digitos son de entrada.

Ahora lo volvemos arrancar para que continue la instalacion:

xm create /etx/xen/vm-darwin

Como ya le indicamos que cuando reciba un reboot --> reinicie entonces ya el debe hacerlo sin intervencion de nosotros.

Figura 2: Windows 7 Instalado bajo Xen

Ya solo vamos a terminar de configurarlo y listo.

Ya una vez terminado el proceso de instalacion, recordar que como en mi caso no estoy haciendo uso de ningun entorno grafico, le instale rapidamente el servicio VNC para poder administrarlo remotamente y no he tenido problemas hasta el momento.

Para Widows 2008:

virt-install -n win8-2 -r 2048 --hvm --vcpus=2 --cpuset=2-3 --disk path=/opt/win8-2/win8-disk.img --os-type=windows --os-variant=win2k8 -b bridge0 --noautoconsole --vnc --vnclisten=192.168.50.107 -v --cdrom /dev/dvdrw

Aqui estoy usando mi interface bridge0.

Imagen de la instalacion via VNC:

Figura 3: Arranque de instalacion de windows 2008.
Figura 4: Empieza la instalacion de windows 2008.

Esto tenemos en consola:

Starting install...
Creating domain...                                                                                                                                                     |    0 B     00:00
Domain installation still in progress. Waiting for installation to complete.
Domain has shutdown. Continuing.
Starting domain...                                                                                                                                                     |    0 B     00:01
Domain installation still in progress. Waiting for installation to complete.
Domain has shutdown. Continuing.
Guest installation complete... restarting guest.


Como podran ver, ya tenemos a windows 2008 virtualizado tambien, listo.

Ya solo debemos configurar su archivo de arranque para que cada que inicie el servidor cargue esta maquina virtual.
Quedaria en mi caso asi:

name = "Win8-2"
uuid = "6196ef50-71ed-e5e8-6b47-f109c7245139"
memory = 2048
vcpus = 2
cpus = "2,3"
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "c"
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "destroy"
device_model = "/usr/lib64/xen/bin/qemu-dm"
sdl = 0
vnc = 1
display = "Win8-2:0.0"
vncunused = 1
vnclisten = "192.168.50.107"
vncpassword = ""
keymap = "en-us"
disk = [ "file:/opt/win8-2/win8-disk.img,hda,w" ]
vif = [ "mac=MI-MAC-ADDRESS,bridge=bridge0,script=vif-bridge" ]
parallel = "none"
serial = "pty"

La 1ra vez habilito VNC, pero una vez configurado RDP ya me olvido de el y solo lo deshabilito.

Listo.

Centos 5: Boot Xen 4.1 Gitco


 Me vi en la necesidad de instalar otra maquina con Xen, cuando se trata de virtualizar me gusta tener software mas actualizado, lo malo que Centos no esta a la vanguardia en esto, y en la rama 6 ya mejoraron las cosas.

 Desgraciadamente no puedo aun moverme a la rama 6 ya que varios de mis servidores estan en la 5.7 y migrar todos seria un poco complicado, y no complicado, con la carga de trabajo no me es facil(tiempo).

  Ahora si deseamos hacer unos de las funciones que nos brinda la version 4.1 de Xen tenemos solo 3 opciones:

1) Hacerlo a mano.
2) Hacer uso de repo externos como Gitco.
3) Usar la version que trae por default Centos si no queremos complicarnos la existencia.

Yo opto por la #2.

Ahora lo que tenemos que hacer es lo siguiente:

a)Deshistalar todo el paquete que no sea de utilidad.

yum remove ...

b)Actualizar nuestro sistema:

yum update

c) Apagar servicios que no sean necesarios, y deshabilitarlos:

service nombre-del-servicio stop
chkconfig nombre-del-servicio off

d) Bajar el repo de Gitco:

cd /etc/yum.repos/
wget http://www.gitco.de/repo/GITCO-XEN4.1.1_x86_64.repo

e) Deshistalar todo lo relacionado a Xen(si ya tenian algo):

yum groupremove Virtualization

NOTA: Yo no uso selinux lo tengo deshabilitado.

Con lo anterior hecho, reiniciamos.

Ya de regreso:

f)La instalacion:

yum groupinstall Virtualization

Por default Centos deja el el kernel normal como arranque, pero yo quiero el otro asi que modifico la prioridad, ademas, Xen tiene un footprint muy pequeo, no requerimos 1TB de memoria, los ultimos benchmark que saque me indicaron que con 1GB de memoria trabaja sin problemas.

Ademas decian que solo requeria un Core del #total que tenemos, pero el benchmark me dijo que deberia dejarle 2 ya que todas mis instalaciones llevan un arreglo de disco, ya sea Raid5/Raid10, el Raid1 no tiene problemas los otros si les beneficia dejarle 2 cores a el DOM-O.

Asi queda mi kernel:


default=0
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-274.3.1.el5xen)
        root (hd1,0)
        kernel /xen.gz-4.1.1 dom0_max_vcpus=2 dom0_vcpus_pin dom0_mem=1024MB
        module /vmlinuz-2.6.18-274.3.1.el5xen ro root=/dev/VolGroup00/LogVol00 pci=nomsi
        module /initrd-2.6.18-274.3.1.el5xen.img
title CentOS (2.6.18-274.3.1.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-274.3.1.el5.img
title CentOS (2.6.18-194.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-194.el5.img

Si usteds creen que 1 solo core es necesario para su DOM-0, entonces cambian el parametro: dom0_max_vcpus=1.

Con todo lo anterior le pedimos que:

Si tengo un server que me da N numero de cores
Me da M numero de memoria RAM

Que solo me de: 2 cores de mi N numero y que solo le asigne el M cantidad de memoria RAM, asi la demas Xen podra administrarla para sus VM's, de lo contrario Xen tendria que preocuparse en buscar que core ejecutar las tareas tanto del DOM-0 y como de sus DOM-U si no le especificamos estos datos.

Le agregue por ultimo el parametro:

pci=nomsi

Por que Xen no quiso arrancar, segun gitco en el README dice:


IMPORTANT: I cannot ensure the stability of these packages, 
so feel free, if you deploy them on a production environment !

xen3.4.3 (x86_64)   => stable
xen4.1.0 (x86_64)   => stable (in some cases, you need the kernel parameter pci=nomsi)

xen4.1.1 (x86_64)   => stable (in some cases, you need the kernel parameter pci=nomsi)

Asi que eso hice y funciono.
 
Ahora ya tengo un Xen listo para operar:
 

xm info
host                   : impexpo.import.local
release                : 2.6.18-274.3.1.el5xen
version                : #1 SMP Tue Sep 6 20:57:11 EDT 2011
machine                : x86_64
nr_cpus                : 4
nr_nodes               : 1
cores_per_socket       : 4
threads_per_core       : 1
cpu_mhz                : 3000
hw_caps                : 178bf3ff:efd3fbff:00000000:00001710:00802001:00000000:000037ff:00000000
virt_caps              : hvm
total_memory           : 3839
free_memory            : 2766
free_cpus              : 0
xen_major              : 4
xen_minor              : 1
xen_extra              : .1
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_max_vcpus=2 dom0_vcpus_pin dom0_mem=1024MB
cc_compiler            : gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)
cc_compile_by          : root
cc_compile_domain      : gitco.tld
cc_compile_date        : Sun Sep  4 23:28:19 CEST 2011
xend_config_format     : 4

\ \/ /___ _ __   | || |  / | / |
 \  // _ \ '_ \  | || |_ | | | |
 /  \  __/ | | | |__   _|| |_| |
/_/\_\___|_| |_|    |_|(_)_(_)_|

(XEN) Xen version 4.1.1 (root@gitco.tld) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) Sun Sep  4 23:28:19 CEST 2011
(XEN) Latest ChangeSet: unavailable
(XEN) Bootloader: GNU GRUB 0.97
(XEN) Command line: dom0_max_vcpus=2 dom0_vcpus_pin dom0_mem=1024MB
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 2 MBR signatures
(XEN)  Found 2 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN)  0000000000000000 - 000000000009f400 (usable)
(XEN)  000000000009f400 - 00000000000a0000 (reserved)
(XEN)  00000000000e6000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 00000000cffb0000 (usable)
(XEN)  00000000cffb0000 - 00000000cffbe000 (ACPI data)
(XEN)  00000000cffbe000 - 00000000cffe0000 (ACPI NVS)
(XEN)  00000000cffe0000 - 00000000d0000000 (reserved)
(XEN)  00000000ff700000 - 0000000100000000 (reserved)
(XEN)  0000000100000000 - 0000000120000000 (usable)
(XEN) ACPI: RSDP 000FB4E0, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT CFFB0000, 0040 (r1 060710 RSDT1719 20100607 MSFT       97)
(XEN) ACPI: FACP CFFB0200, 0084 (r2 060710 FACP1719 20100607 MSFT       97)
(XEN) ACPI: DSDT CFFB0450, 99F6 (r1  78LCP 78LCP607       16 INTL 20051117)
(XEN) ACPI: FACS CFFBE000, 0040
(XEN) ACPI: APIC CFFB0390, 007C (r1 060710 APIC1719 20100607 MSFT       97)
(XEN) ACPI: MCFG CFFB0410, 003C (r1 060710 OEMMCFG  20100607 MSFT       97)
(XEN) ACPI: OEMB CFFBE040, 0071 (r1 060710 OEMB1719 20100607 MSFT       97)
(XEN) ACPI: SRAT CFFB9E50, 00E8 (r3 AMD    FAM_F_10        2 AMD         1)
(XEN) ACPI: HPET CFFB9F40, 0038 (r1 060710 OEMHPET  20100607 MSFT       97)
(XEN) ACPI: SSDT CFFB9F80, 088C (r1 A M I  POWERNOW        1 AMD         1)
(XEN) System RAM: 3839MB (3931452kB)
(XEN) Domain heap initialised
(XEN) Processor #0 0:5 APIC version 16
(XEN) Processor #1 0:5 APIC version 16
(XEN) Processor #2 0:5 APIC version 16
(XEN) Processor #3 0:5 APIC version 16
(XEN) IOAPIC[0]: apic_id 4, version 33, address 0xfec00000, GSI 0-23
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
(XEN) Table is not found!
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 3000.291 MHz processor.
 
A trabajar sobre el, saludos!!!