jueves 29 de diciembre de 2011

Centos 5:Xen PCI Passthrough USB

   Hola, existen ocaciones donde necesitamos que nuestra maquina virtual pueda hacer uso de puertos como el USB, en mi caso de nuevo necesito que mi hvm pueda yo conectarle una memoria USB para que un software especifico funcione.

   El sistema que maneja recursos humanos que es muy usando en la empresas grandes llamado Tress hace uso de una memoria USB tipo HASP como candado de seguridad.

   Entonces si deseamos virtualizar el servidor donde se ejecuta el Tress necesitamos este opcion disponible en nuestra HVM.

   Pase varias semanas batallando esto, ya que uno se enfrenta a distintos obstaculos, entre ellas la mas critica y dificil que encontre:
  • Falta de documentacion por parte de los fabricantes tanto de placas madres como de procesadores.
   Por que comento esto de los fabricantes de placas madres?, he logrado esto con 2 placas distintas:
Una tipo desktop:
MoBo: SABERTOOTH+990FX
Procesador: AMD Athlon II 640
   Dicen los de soporte de la MoBo que si esta habilitada la opcion, pero nunca la encontre, me comunique con ellos y dicen que no pueden arreglar el BIOS.

  AMD esta en las mismas, la doc no dice nada de este dato.

   Para no perder el chip me fui por la que sigue:
MoBo:Asus M4A89TD PRO/USB3
Procesador: AMD Athlon II 640
   En esta si aparece la opcion en el BIOS para habilitar esta funcion, probe Xen 4.1.1 de gitco y gracias a el cielo que Xen me dio el mensaje esperado:

(XEN) I/O virtualisation enabled
(XEN) I/O virtualisation for PV guests disabled
   Ya con el simple hecho de que nos de este mensaje ya es ventaja, no me interesa que mi PV no pueda ya que no tengo nada en ellas que lo requiera, bien en la 1er placa actualice el BIOS hasta la ultima version y nada de nada asi que no quice perder mas mi tiempo, por ello mejor me fui por la segura.

  Esto me funciono en Centos 5.x, Xen 3.4.1,4.1 sin problemas, algo que note es que solo la v 1.1 del USB fue soportada, y las versiones de windows:
  • XP Pro xp3
  • Windows 7 Pro
   Otro detalle fue que windows 7, probe varias memorias USB y algunas si funcionaron otras no, pero lo que mas llamo la atencion que la memoria HASP que un programa llamado LabelView de www.teklynx.com no funciono.
   Pero mi plan era que el software llamado: Darwin de www.vanguardiatec.com funcionara y.... funciono, usa igual que el anterior una memoria HASP USB, entonces en este momento lo estan usando usando sin problemas.

   Ahora la siguiente tarea que encontre fue, puedo virtualizar windows 2003(sin problemas) y que tenga soporte de USB?

   En este caso ya no estamos hablando de un equipo tipo desktop, aqui ya es una placa servidor, siempre estas van a tener mejor electronica que una desktop por ello las separan.

Este es el equipo de SuperMicro:

SuperServer 5026T-TB
   Siempre hemos sido amantes de esta marca, no le pide nada a Dell, HP, IBM, es mas economica y se codea con ellos, la diferencia que aun en Mexico no existe una distribucion directa, todo viene de USA.

   Haste eso que el soporte es excelente y no tienes pasar por una PBX  que hace una infinidad de preguntas y siempre estan dispuestos a ayudarte.
   El procesador es una Intel Xeon E5649 con memoria ECC 1333Mhz.

   Dice la doc de Xen que tanto el MoBo como el CHIP deben tener soporte para que esta operacion funcione, por parte de la MoBo habia soporte, la doc de Intel como todas las demas, hasta AMD carece de informacion detallada.

   Me comunique via char con el soporte de Intel, y el hizo lo mismo que uno del ambito haria antes de preguntar, leer la documentacion del chip, ahi no venia nada al respecto, espere un poco y me dice "No tiene soporte", ok gracias.

   Entonces, ya era cuestion de probar por mi cuenta, por que en la lista de Xen, alguien comento que tenia algunos servidores con el chips de la familia 5600 y aparecia que si le aparecia el mensaje en su consola de:

(XEN) I/O virtualisation enabled
Pero no mostraba que chips, por ello no quedo otra que mancharme las manos.

Entonces ya fue mucho rollo, vamos a ver como habilitar esto en Xen:

NOTA1: Este procedimiento es igual para todos los chips o MoBo.
NOTA2: Xen 4.x no necesita el paso 1, ya viene por default.

1; Si usan Xen anterior a 4.x deben habilitar la opcion en su kernel asi:

kernel /xen.gz-3.4.3 dom0_max_vcpus=2 dom0_vcpus_pin dom0_mem=1024MB iommu=1

Xen 4.x ya lo tiene.

Reiniciar el server.

2; Asegurarse antes de nada que aparezca el mensaje esperado cuando ejecuten el comando: xen dmesg.
(XEN) I/O virtualisation enabled
Si no aparece esto, ni le sigan.

2; Detectar la direccion de nuestro puerto USB.

   Aqui estoy hablando de un puerto USB, pero aplica a los puertos que desean enviar, video, paralelo, etc, etc.

   Ahora como puedo yo saber cual es la direccion de una puerto USB especifico?

Existe un comando poco usado llamado:

udevmonitor

   Este comando lo que hace es monitorear los puertos para ver en consola que estamos conectando, cuando conectamos una memoria USB aparece esto en pantalla:

UEVENT[1325036667.645024] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2
UEVENT[1325036667.645051] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/usbdev1.3_ep00
UEVENT[1325036667.645235] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0
UEVENT[1325036667.645245] add@/class/scsi_host/host5
UEVENT[1325036667.645251] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/usbdev1.3_ep01
UEVENT[1325036667.645257] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/usbdev1.3_ep82
UEVENT[1325036667.645264] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/usbdev1.3_ep83
UEVENT[1325036667.645270] add@/class/usb_device/usbdev1.3
UDEV  [1325036667.656886] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2
UDEV  [1325036667.764765] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/usbdev1.3_ep00
UDEV  [1325036668.179955] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0
UDEV  [1325036668.389248] add@/class/scsi_host/host5
UDEV  [1325036668.400871] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/usbdev1.3_ep82
UDEV  [1325036668.400884] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/usbdev1.3_ep83
UDEV  [1325036668.400891] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/usbdev1.3_ep01
UDEV  [1325036668.546698] add@/class/usb_device/usbdev1.3
UEVENT[1325036672.644024] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host5/target5:0:0/5:0:0:0
UEVENT[1325036672.644042] add@/class/scsi_disk/5:0:0:0
UEVENT[1325036672.770313] add@/block/sdg
UEVENT[1325036672.770326] add@/class/scsi_device/5:0:0:0
UEVENT[1325036672.770333] add@/class/scsi_generic/sg7
UDEV  [1325036672.894515] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host5/target5:0:0/5:0:0:0
UDEV  [1325036673.105483] add@/class/scsi_disk/5:0:0:0
UDEV  [1325036673.108784] add@/class/scsi_generic/sg7
UDEV  [1325036673.314546] add@/class/scsi_device/5:0:0:0
UDEV  [1325036673.399994] add@/block/sdg


Vamos buscar nuestro puerto:

UEVENT[1325036667.645024] add@/devices/pci0000:00/0000:00:1a.7/usb1/1-2

Ahora vamos a compararlo con el listado de Centos:

lspci


00:00.0 Host bridge: Intel Corporation 5520/5500/X58 I/O Hub to ESI Port (rev 22)
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 22)
00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 22)
00:05.0 PCI bridge: Intel Corporation 5520/X58 I/O Hub PCI Express Root Port 5 (rev 22)
00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 22)
00:09.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 9 (rev 22)
00:14.0 PIC: Intel Corporation 5520/5500/X58 I/O Hub System Management Registers (rev 22)
00:14.1 PIC: Intel Corporation 5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers (rev 22)
00:14.2 PIC: Intel Corporation 5520/5500/X58 I/O Hub Control Status and RAS Registers (rev 22)
00:14.3 PIC: Intel Corporation 5520/5500/X58 I/O Hub Throttle Registers (rev 22)
00:16.0 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.1 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.2 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.3 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.4 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.5 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.6 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:16.7 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device (rev 22)
00:1a.0 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:1a.1 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
00:1a.2 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
00:1a.7 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
00:1c.0 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Root Port 1
00:1c.1 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 2
00:1d.0 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
00:1d.1 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
00:1d.2 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
00:1d.7 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 90)
00:1f.0 ISA bridge: Intel Corporation 82801JIR (ICH10R) LPC Interface Controller
00:1f.2 IDE interface: Intel Corporation 82801JI (ICH10 Family) 4 port SATA IDE Controller #1
00:1f.3 SMBus: Intel Corporation 82801JI (ICH10 Family) SMBus Controller
00:1f.5 IDE interface: Intel Corporation 82801JI (ICH10 Family) 2 port SATA IDE Controller #2
06:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
07:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
08:01.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz  Ultra3 SCSI Adapter (rev 01)
08:04.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200eW WPCM450 (rev 0a)


   Ya dimos y confirmamos que es la direccion que necesitamos.

3; Habilitar el modulo pciback en el kernel.

   Este modulo ni RedHat ni Centos lo tienen compilado en el kernel,xen para ello tenemos 2 opciones:

A) Agregarlo
B) Compilar el kernel xen y habilitarlo.

   Yo me voy por la mas rapida la A, para esto tenemos que hacer lo siguente.

1.1 Esconder del Host el puerto requerido, ya tenemos la direccion que necesitamos, para esto modificamos el archivo modprobe.conf que esta en  /etc y agregamos esta linea a el final:

options pciback hide=(00:1a.7)

Salvamos y salimos, como podran ver es la direccion que obtuvimos anteriormente cuando ejecutamos udevmonitor.

1.2 Agregamos el modulo a nuestro modulo initrd para que cada que reinicie lo cargue antes de darnos la consola del poder.

Nos vamos a el folder boot:

cd /boot

NOTA 3: Por seguridad hacer una copia del initrd actual por si algo sale mal:

cp initrd-$(uname -r).img initrd-$(uname -r).img-default

Ahora si a agregar el modulo:

mkinitrd -f --preload=pciback /boot/initrd-$(uname -r).img $(uname -r)

   Como podran ver hemos agregado el modulo pciback para que cuando arranque el kernel lo tenga listo, asi cuando ejecute el modprobe.conf ya pueda el esconder nuestro puerto y quede libre para nuestra hvm, de lo contrario el host se negara  a soltar el puerto.

1.3 Decirle a Xen que puerto el va a tomar control para entregar a la HVM que lo necesite.

   Para esto vamos a buscar otro dato que necesitamos de nuestro hw, ya tenemos la direccion del puerto, pero Xen requiere otro mas de ese puerto, y este lo obtenemos ejectando el comando lspci -n, buscamos nuestro hw id y buscamos este dato:

lspci -n

00:00.0 0600: 8086:3405 (rev 22)
00:01.0 0604: 8086:3408 (rev 22)
00:03.0 0604: 8086:340a (rev 22)
00:05.0 0604: 8086:340c (rev 22)
00:07.0 0604: 8086:340e (rev 22)
00:09.0 0604: 8086:3410 (rev 22)
00:14.0 0800: 8086:342e (rev 22)
00:14.1 0800: 8086:3422 (rev 22)
00:14.2 0800: 8086:3423 (rev 22)
00:14.3 0800: 8086:3438 (rev 22)
00:16.0 0880: 8086:3430 (rev 22)
00:16.1 0880: 8086:3431 (rev 22)
00:16.2 0880: 8086:3432 (rev 22)
00:16.3 0880: 8086:3433 (rev 22)
00:16.4 0880: 8086:3429 (rev 22)
00:16.5 0880: 8086:342a (rev 22)
00:16.6 0880: 8086:342b (rev 22)
00:16.7 0880: 8086:342c (rev 22)
00:1a.0 0c03: 8086:3a37
00:1a.1 0c03: 8086:3a38
00:1a.2 0c03: 8086:3a39
00:1a.7 0c03: 8086:3a3c
00:1c.0 0604: 8086:3a40
00:1c.1 0604: 8086:3a42
00:1d.0 0c03: 8086:3a34
00:1d.1 0c03: 8086:3a35
00:1d.2 0c03: 8086:3a36
00:1d.7 0c03: 8086:3a3a
00:1e.0 0604: 8086:244e (rev 90)
00:1f.0 0601: 8086:3a16
00:1f.2 0101: 8086:3a20
00:1f.3 0c05: 8086:3a30
00:1f.5 0101: 8086:3a26
06:00.0 0200: 8086:10d3
07:00.0 0200: 8086:10d3
08:01.0 0100: 1000:0021 (rev 01)
08:04.0 0300: 102b:0532 (rev 0a)


   Ahi lo tenemos, el dato que requiere Xen es: 8086:3a3c.

   Abrimos el archivo de Xen llamado /etx/xen/xend-pci-permissive.sxp

   Y nos queda asi:

###############################################################################
(unconstrained_dev_ids
     #('0123:4567:89AB:CDEF')
('8086:3a3c')
)


   Viendo su archivo van a notar la diferencia, dice el doc que no es necesario, pero a mi me ha funcionado asi y no he tenido problema con mi HVM ni host.

1.4 Agregar el puerto a la configuracion de nuestra HVM, en este caso Windows XP:
pci = ["00:1a.7"]
   Esto lo agregamos a el final del archivo.

4; Reiniciar servidor y a probar.

5; Arracamos nuestra maquina virtual, ya que este lista, le conectamos el USB y tenemos esto:

Imagen 1: Mostrando contenido del USB.

 Imagen 2: Controlador de USB en Windows.

Imagen 3: Device Manager de Windows.

   No he tenido exito con USB 2.0, pero para lo que lo he necesitado que son las HASP USB Keys me ha funcionado sin problemas.

OS probados y funcionando:
Windows XP Profesional
Windows 2003 Standard Edition
Windows 7 Profesional
Saludos.

martes 22 de noviembre de 2011

Centos 5: Migrar MySQL 5.1 de Windows a Linux.

 Hola, me encontre con un problema cuando quise migrar una base de datos corriendo MySQL 5.1.x en Windows XP y la trate de migrar a MySQL 5.1 corriendo Centos 5.7.

 La base de datos que me interesa es tipo InnoDB, entonces la manera tradicional es atraves del comando mysqldump asi:

  mysqldump -f --opt --single-transaction nombre-bd > nombre-bd.sql -u root -h windowsxp-ip -p

  Para regresarla:

  mysql nombre-bd < nombre-bd.sql -p

 Todo esto hecho desde el mismo servidor centos.

  Bien ya tenemos nuestra bd, ahora es cuestion de reconfigurar nuestra app que este caso se ejecuta bajo Windows atraves de un ODBC, hecho lo anterior era cuestion de ejecutar el programa.

   Pero para mi sorpresa no funciono, el programa empezo a marcar errorres, el odbc decia que todo bien, su test sin problemas, que estaba pasando?

  Los logs son benditos, me vi en la necesidad de prender el log mysql, reinicie el servicio y a leer el log.

   Lo que sucedia era que la app mandaba los querys a la base de datos en mayusculas, recordar que Unix/Linux son sensibles a las minusculas/mayusculas, siempre han operado asi.

  Cuando yo corria el mismo query en la consola de mysql el me decia que encontraba la tabla dada, ahi venia el problema, MySQl windows cuando creo la  base de datos la tablas las nombro con Myusculas-Minusculas, cuando mysqldump restaura las tablas en Centos lo hace todo con minusculas ya que asi opera el por default.

 Y esto llevo a que la app tronara, lo que hice fue modificar un parametro general de MySQL en centos este:

lower_case_table_names = 1

Por default es 0, lo que hace este parametro es que cuando compara los nombres no verifica si son mayusculas, minusculas, etc, una reiniciada a el servidor, y listo, la app empezo a funcionar.

El parametro va en: /etc/my.cnf.

Saludos!!!


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 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.

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!!!