Wednesday, July 01, 2015

Splunk + Gluster en el Red Hat Summit 2015

La semana pasada asistí al Red Hat Summit 2015 en Boston, MA.


No tenía muchas expectativas con esta Conferencia, dado que pensaba que sólo iba a ver temas relacionados con Red Hat Enterprise Virtualization (RHEV, que no ha podido posicionarse en el mercado), OpenStack (la misma gente de Red Hat indica que aún es temprano para pensar en llevarlo a ambientes Productivos) y OpenShift (aún lejano).

Grande fue mi sorpresa cuando escuché acerca de Linux Atomic Containers y Docker (mas info AQUI). Yo trabaje mucho con los containers en Solaris y los utilicé para consolidar varias plataformas antiguas, que corrían sobre versiones antiguas de Solaris en HW obsoleto y que no podían ser movidas a nuevo Hardware por el alto costo de la modificación del Aplicativo para hacerlo compatible con las nuevas versiones de Solaris (hay un par de post en el Blog respecto a esto). Ahora esta tecnología está disponible en Linux y con Docker veo que la solución es mucho más poderosa que en Solaris. En los próximos meses voy a trabajar con Red Hat y nuestro proveedor ITQ Latam para implementar una PoC (Proof of Concept) sobre Containers/Docker, para consolidar antiguos aplicativos en nuevos servidores con RHEL7, de tal forma de liberar espacio físico, Energía Eléctrica y diminuir OPEX.

Después de asistir a varias sesiones de Red Hat Atomic Containers, asistí a otras sesiones de Big Data & Analytics. Lo primero a rescatar es el siguiente diagrama de una presentación de Cisco:
Varias personas me preguntaban si nosotros teníamos algún Big Data y cuando yo les decía que utilizaba Splunk, me miraban extrañados y me preguntaban por Hadoop. En este diagrama se explica la diferencia entre las diferentes herramientas existentes para el mundo de Big Data.

Hadoop y repositorios NoSQL se utilizan para almacenar grandes volumenes de Datos Históricos (normalmente Petabytes hacia arriba). Estas herramientas son eficientes en el almacenamiento, pero no son buenas para manipular, correlacionar y generar Dashboards que permitan generar información de valor al negocio. Por otro lado, Splunk (y las otras) es una herramienta de Analytics (monitoreo y gestión de datos en línea o near real-time), Business Inteligence y Operational Intelligence (transformar los datos de máquinas o logs en información que genere valor al negocio). Splunk tiene una herramienta llamada Hunk, que permite las mismas funcionalidades (y más) de Splunk pero tomando los datos desde un Hadoop o NoSQL.

Pero las sesiones que más me llamaron la atención fueron aquellas donde se hablaba de Big Data, Analytics y la herramienta utilizada era Splunk. Esto quiere decir que nuestra decisión de embarcarnos con esta herramienta fue la correcta, dado que se está utilizando fuerte a nivel mundial y es uno de los referentes en el mundo de Inteligencia Operacional.

Lo otro interesante fue ver la experiencia de SaskTel, una empresa de Telecomunicaciones de Canadá, que utiliza Splunk y dado el crecimiento explosivo de los datos almacenados y a la gran cantidad de usuarios internos, tuvieron que implementar una solución basada en Gluster (Red Hat Storage), para asegurar la disponibilidad, capacidad y crecimiento de la plataforma.

A continuación les dejo 2 links con las presentaciones de Splunk y Gluster:

Saludos,
Rodrigo./



Tuesday, May 05, 2015

Detectando problemas de I/O en HP-UX

Voy a hacer un paréntesis y publicaré un artículo sobre análisis de Rendimiento en plataformas de Misión Crítica HP-UX, ya que es difícil encontrar información en la Red y a los que alguna vez nos ha tocado administrar este tipo de plataformas, sabemos lo doloroso que puede llegar a convertirse.

La historia es la siguiente. Una plataforma que realiza la Tasación del Tráfico de Voz Móvil en Línea, comenzó a presentar un leve aumento en los tiempos de respuesta para las transacciones de Control de Tráfico provenientes desde la Red, que son ejecutadas en tiempo real por la Plataforma, que corría sobre un par de Servidores HP rx7400, sobre HP-UX 11iv3 (11.31) y HP Service Guard para implementar un Cluster Activo-Pasivo, conectado a un Storage HP XP20000.

La utilización de CPU no superaba el 50%, pero los procesos que manejan el Control de Tráfico en Tiempo Real, son CPU-Bound, por lo cual cada proceso (12 en total) utilizaba 1 Core de manera dedicada, estaban llegando al 100% de utilización de CPU cada uno. Esto implicaba que el resto de Cores (4) fueran utilizados por el Sistema Operativo y todos los otros procesos que forman parte del Sistema. Dado que el tráfico iba en aumento, se necesitaba levantar nuevos procesos de Control de Tráfico ya que de otra manera no se podría realizar un control en linea y por lo tanto, se produciría una perdida importante de ingresos. Dado que no era factible asignar mas Cores para esta función sin generar otro tipo de Problemas en la Plataforma, se tomo la decisión de migrar todo el ambiente Operativo a una plataforma más grande con crecimiento Vertical.

El Proyecto consistió en migrar el ambiente a un HP Superdome 2 conectado a un Storage HP 3PAR 10400 (v400) de última Tecnología. De esta manera, eliminaríamos los problemas de Capacidad de la Infraestructura anterior y mejoraríamos la disponibilidad de la plataforma al movernos a un sistema de Misión Crítica High-End. En términos simples, la migración consistió en generar un Clone de la Data Productiva en el Storage XP20000, se presentó esta copia al Superdome, se levantó la copia del servidor y se instalaron los parches necesarios para poder subir el sistema en esta nueva plataforma y tener acceso al nuevo Storage. Después de realizar todas las pruebas funcionales y validar la correcta Operación del nuevo ambiente, se tomó la decisión de pasar a Producción la nueva arquitectura.

El paso a Producción se realizó sin problemas durante una ventana nocturna. Se realizaron todas las validaciones, se revisaron los distintos KPIs y finalmente se dejó en Producción. Todo estuvo operando en óptimas condiciones hasta que cerca de las 10am se reportaron problemas de lentitud en algunos procesos que extraen datos a través de FTP, junto con algunos timeout en los procesos de control de tráfico.

El problema estuvo presente por cerca de 1 hora y después desapareció "mágicamente". Dado que esta plataforma no puede tener un comportamiento errático y debido al hecho que yo había impulsado el mover el sistema hacia la Plataforma Superdome, solicité a los Ingenieros abrir ticket Urgente a Soporte HP y determinar que había ocurrido, ya que esto podría ocasionar la vuelta atrás de la migración (lo que no era una opción para mí). Cerca de las 22 hrs, recibimos feedback de HP donde nos indicaban lo siguiente:

"Revise el servidor a la hora que me indicaron y se observe contención de algunos LV (vg involucrados Vg01, vg04,vg06, vg07 y vg14) que pasaron más tiempo en espera de lo permitido. Estos filesystem están configurados con Bsize 1K. La capacidad que hoy tiene este servidor es mayor y aumenta en velocidad de los requerimientos. Estos Filesystem no usa concurrente IO y los procesos se comienzan a encadenar en algunos bloques, Aumentando espera, debido a la velocidad de requerimiento que hoy tiene el servidor, que a diferencia del servidor antiguo eran diferentes más lentos."

Se presentaba el siguiente gráfico y finalmente se acusaba un problema a nivel aplicativo, por lo que la recomendación era Modificar la estructura de los Filesystem (no era opción modificar el Block Size a 8Kbytes, ya que para esto se requería una ventana de indisponibilidad de al menos 8 hrs ya que no se puede hacer en línea) o volver atrás la aplicación.

Lo que me llamó la atención fue que todos los VGs presentaron un aumento excesivo en la Utilización de discos (%busy). Un detalle importante, es que los Discos de Sistema Operativo y SWAP también son del Storage 3PAR y tienen Block Size de 8Kbytes, por lo cual la teoría de HP de que el problema de rendimiento se debía al bsize=1Kbyte comenzaba a desmoronarse.

El paso siguiente fue determinar que había ocurrido con el acceso a los Discos del Storage en el horario indicado. Afortunadamente el utilitario sar estaba configurado y pude ver el comportamiento histórico, llegando a la siguiente conclusión:



El servidor esta utilizando 2 HBAs, pero por una de ellas se veía un pobre rendimiento, lo que afectó la performance general del sistema durante el período de tiempo con problemas. Finalmente, los Ingenieros fueron a realizar una inspección visual del Superdome y encontraron que la Fibra Optica de la HBA "problemática" no estaba bien conectada, lo cual era la causa del problema.

Por último, les dejo a continuación 5 pasos que les permitirán en HP-UX 11iv3 determinar cómo está funcionando el Subsistema de I/O y detectar si tienen algún cuello de botella.







Recuerden siempre tener %busy bajo 50 y los tiempos de servicio (svc_time o avgsvc) menores a 5msec en discos de SAN, o sino pueden estar teniendo algún grado de contención o lo tendrán en el futuro.

Pronto publicaré otro articulo de análisis de Rendimiento en HP-UX, donde se muestra que el tamaño de Bloque del Filesystem puede jugar un rol fundamental en el Performance del Sistema.

Saludos,
Rodrigo./

Saturday, January 17, 2015

De vuelta al Blog

Han pasado más de 7 años desde el último post y los cambios tecnológicos que han ocurrido durante este tiempo, junto con mi evolución profesional, han hecho que vuelva a utilizar esta plataforma para compartir tips que a más de alguno van a ayudar. Después de todo, de eso se trata Internet, o no?.

Comencé utilizando el Blog como una especie de bitácora online, para tener información que en ese momento era importante para el trabajo que estaba haciendo y que necesitaba poder tener accesible desde cualquier lado. Además, ponía a disposición de otras personas información que era difícil encontrar en manuales o en otros sitios de internet. 

Hoy, el problema de acceso a información en todo momento y sin importar la ubicación, lo tengo resuelto con dropbox, evernote y mi teléfono. 

Respecto al trabajo, desde el 2007 a la fecha pasaron muchos cambios y se presentaron muchas oportunidades, donde tuve distintos cargos de jefatura en áreas de Operaciones TI, que me llevaron a cambiarme de trabajo el año 2010 al Operador Móvil Lider de Chile. Aquí tuve que poner en práctica todo lo que había aprendido en Movistar y después de 5 años en esta empresa, de una fusión de compañías, de un par de reestructuraciones y de un proceso constante de aprendizaje, ha llegado el momento de volver a compartir experiencias que puedan ser de utilidad para los que están buscando nuevos desafíos en el liderazgo de equipos en ambientes exigentes y competitivos.

Saludos,
Rodrigo./

Thursday, November 22, 2007

Solaris 8 dentro de un Container de Solaris 10?

Googleando encontré una página donde se mostraba como utilizar S8MA (Solaris 8 Migration Assistant), el cual permite levantar un ambiente Solaris 8 dentro de un container de Solaris 10.

Esto no se podía hacer con las primeras versiones de Solaris Container, pero como se ve, está evolucionando y esto es demasiado útil, ya que existen muchos sistemas que corren en Solaris 8 que es demasiado caro migrarlos a Solaris 10, no porque sea difícil o caro instalar Solaris 10, sino porque las aplicaciones que corren en Solaris 8 no son compatibles y no están certificadas para Solaris 10 y los fabricantes del Software cobran un ojo de la cara para "hacerlas migrables".

Lo malo parece es que hay que pagar por las licencias de S8MA (estoy averiguando con Sun y cuando tenga más información actualizaré el post).

El web donde sale el ejemplo de S8MA es el siguiente:
http://solaris.reys.net/english/2007/11/solaris-8-migration-assitant

Más información en el sitio de Sun:
http://www.sun.com/download/products.xml?id=470c4a45

Saludos,
ChaZcaZ./

Tuesday, November 20, 2007

Unix Administratosphere

Link que encontré googleando donde aparecen Tips y News de varios Sabores de UNIX:

http://administratosphere.wordpress.com/


ChaZcaZ./

Wednesday, October 03, 2007

HP-UX: Mover discos entre 2 máquinas

Esto fue un ejercicio que hicimos en un Workshop de HP que asistí en Marzo del 2007 en Houston, Texas. El instructor fue Matias Vidal, Argentino que trabaja en una empresa partner de HP.

La configuración que utilizamos era un Superdome, en la cual teniamos 2 NPAR (2 servidores) conectadas a un Storage EVA5000.

Se creó una Lun en el EVA y se presentó a la npar1. Se creó un vgPrueba (Volume Group) y un Lvol (Logical Volume) dentro. Se montó (obviamente se creó un filesystem en el Lvol antes de montarlo) y se copió la data del directorio /etc en él. Después, se deportó y se presentó la Lun a la npar2. Se hizo un import del grupo, se activó y se montó. Esto fue lo que se hizo:

En Npar1
strings /etc/lvmtab
# para ver como está actualmente
ll /dev/vgPrueba # con esto se saca la configuración y se ve el group, para
# llevar un orden y “tratar” de utilizar el mismo minor en el
# otro lado, si es posible.
umount /mnt # se desmonta el Lvol
vgchange –a n vgPrueba # Se desactivan los lvol y el vg
vgexport –s –m /tmp/vgPrueba.map vgPrueba # Se exporta el vgPrueba y se guarda la
# configuración en el archivo vgPrueba.map, el cual se debe
# traspasar a npar2.

En Npar2
Se presenta la Lun a través de Eva, se ejecuta ioscan y después insf.
mkdir /dev/vgPrueba
ll /dev/*/group
# Se busca un Minor number disponible (suponemos el 0x030000)
mknod /dev/vgPrueba/group c 64 0x030000 #
vgimport –s –m /tmp/vgPrueba.map vgPrueba
vgchange –a y vgPrueba
mount /dev/vgPrueba/lvol01 /mnt

Eso es todo!.

Para más información, ver página 584 (Moving Disks Across Systems
) de “Managing Systems and Workgroups_ A Guide for HP-UX System Administrators.pdf” (http://www.docs.hp.com/en/B2355-90950/index.html)

Saludos,
ChaZcaZ./

Saturday, February 17, 2007

A retomar las clases de Saxo!

Aún estoy de vacaciones, pero acabo de hablar con Marcos Aldana (mi profesor de saxo) y le conté que voy a retomar las clases cuando vuelva a Santiago (en realidad, después del viaje a Houston).

Marcos es seco y la hija (Melissa) es más seca aún (http://www.revistafibra.cl/gruesa/nro30/pdf/Melissa_Aldana.pdf). Espero poder aprender mucho en este regreso y ojalá que pueda continuar un buen tiempo.

Saludos,
ChaZcaZ./

Wednesday, December 20, 2006

Solaris: Forzar interfaces Gigabit - ce, bge, ipge, etc

Es bien conocido el hecho de que cuando se conecta una máquina a la red (lo he visto en Solaris, HP-UX, Windows, Linux, etc) si no se fuerza la tarjeta de red y el switch a la velocidad requerida, la transferencia de archivos y la comunicación es pésima.

En el trabajo, cada vez que se conecta un servidor a la red se debe forzar la interfaz de red, ya sea a 100 Mbps Full-Duplex o a 1000 Mbps Full-Duplex. Pero ojo, con las tarjetas Gigabit en Solaris he visto algunos problemas con el forzado, que explicaré a continuación.

Las inferces se pueden forzar con un archivo que modifica los parámetros a nivel de módulo en el Kernel (Ej: /kernel/drv/ce.conf) o a través del comando ndd (esto dura sólo hasta el reboot del servidor). El primer método es ún "poco" más complicado que el segundo, pero al final hacen lo mismo. En mi experiencia, da lo mismo cual de los métodos usar. En lo particular, utilizo ndd y el script /etc/rc2.d/S68net-tune.

Ahora viene lo importante. Con las tarjetas ce tenía el problema que cuando ocurría algun problema en el switch o reinicio de la máquina, el link de la tarjeta gigabit no volvía a subir. Tenía que activar la autonegociación para que levantara el link y después la forzaba a no autonegociar. Finalmente opté por dejarla a 1000 Mbps Full-Duplex con autonegociación ACTIVA.

En el caso de las ipge, cuando se fuerzan a 1000 Mbps Full-Duplex y autonegociación en OFF, el link nunca sube. La solución es dejar la Autonegociación en ON.

Ahora viene la pregunta (cuya respuesta no conocía y sólo me quedaba asumir): Por qué hay que dejar habilitada la autonegociación cuando se quiere forzar a 1000 Mbps Full-Duplex???

La respuesta la encontré en el documento de instalación y configuración de las tarjetas ipge (P/N: 819-4090-10):

De acuerdo a las especificaciones del IEEE 802.3, cuando se utiliza la velocidad de 1000 Mbit/sec sobre un medio de cobre, la autonegociación no es opcional. En la ausencia de autonegociación (por ejemplo, cuando se usa el modo Forced), la sincronización del link entre los link partners puede no ocurrir y el link no subirá.

Por lo tanto, para forzar una interfaz a 1 Gbps Full-Duplex en Solaris se debe dejar la autonegociación en 1 (On).

Ejemplo:
Para poder forzar la interfaz ipge1 con ndd, se debe ejecutar lo siguiente:
ndd -set /dev/ipge instance 1
ndd -set /dev/ipge adv_1000fdx_cap 1
ndd -set /dev/ipge adv_1000hdx_cap 0
ndd -set /dev/ipge adv_100fdx_cap 0
ndd -set /dev/ipge adv_100hdx_cap 0
ndd -set /dev/ipge adv_10fdx_cap 0
ndd -set /dev/ipge adv_10hdx_cap 0
ndd -set /dev/ipge adv_autoneg_cap 1

Saludos,
ChaZcaZ./

Wednesday, December 13, 2006

MPxIO de Solaris: como eliminar una LUN del sistema

Cuando se tiene configurado MPxIO y se desea eliminar una LUN del sistema, hay que tener presente que si la LUN no es eliminada del Traffic Manager (MPxIO), después pueden ocurrir cosas raras (personalmente, he presentado nuevas LUN y parecen ser idénticas a la eliminada, tamaños distintos, etc) que sólo se solucionan rebooteando el servidor (lo cual no es la idea).

El proceso de eliminar una LUN del sistema es simple, pero debe realizarse en orden. Básicamente, para eliminar una(s) LUN(s) del sistema se debe hacer lo siguiente:

1) Desmontar todos los filesystem que dependen de la(s) LUN(s) a eliminar (sacar de vfstab, etc)

2) Deportar diskgroup al que pertenece(n) la(s) LUN(s) o eliminar los volúmenes correspondientes (en el caso de VERITAS Volume Manager). Si es Solstice Disk Suite (o Solaris Volume Manager) eliminar los metadevices correspondientes.

Para el caso de VERITAS Volume Manager, utilizar el siguiente comando para sacar el disco en cuestión del control del VxVm (en caso de que el vxdisk list lo siga mostrando con error):
vxdisk rm disk_path

Si los discos están bajo el control de STMS, deben sacarlos utilizando:
stmsboot -d     #deshabilita STMSBOOT para todos los discos

O
stmsboot -d controller whatever  #deshabilita STMS para un controlador especifico

3) Despresentar las LUNs desde el Storage (o desconectar discos en el caso de que sea una caja de discos sin inteligencia). La idea es que bajo MPxIO los discos queden en la condición unusable (esto se ve con el comando cfgadm -al -o show_FCP_dev en Solaris 8 y con cfgadm -al -o show_SCSI_LUN en Solaris 10, aunque el primer caso a mi me ha funcionado tanto en Solaris 8 como 10).

4) cfgadm no permite eliminar una única LUN del sistema, cuando el Storage conectado no es Sun (por lo menos eso me ha pasado con los StorageWorks HP EVA8000). Por esta razón, los discos se dejan en la condición unusable, para después poder eliminarlos con el siguiente comando (se debe hacer por cada PORT del Controlador del Storage por donde se ve el disco, de acuerdo a la salida del cfgadm -al -o show_FCP_dev):
cfgadm .c unconfigure -o unusable_FCP_dev DEVICE, donde DEVICE corresponde a cada puerto del controlador.

EJEMPLO
En este ejemplo, se tiene un servidor SunFire v880/Solaris 8/2 x HBA Sun/HP StorageWorks EVA8000/MPxIO/VERITAS Volume Manager 4.0.

En este punto ya se desmontaron filesystem, se sacaron de Volume Manager y se despresentaron las LUN desde el Storage.

Con el comando cfgadm -al -o show_FCP_dev debemos ver los discos en Condicion unusable:

# cfgadm -al -o show_FCP_dev
Ap_Id Type Receptacle Occupant Condition
c1 fc-private connected configured unknown
c1::21000004cf16426e,0 disk connected configured unknown
c1::21000004cf9b566c,0 disk connected configured unknown
c1::21000004cf9b6102,0 disk connected configured unknown
c1::21000004cf9b6107,0 disk connected configured unknown
c1::21000004cf9b6120,0 disk connected configured unknown
c1::21000004cfb47161,0 disk connected configured unknown
c1::508002000019f829 ESI connected configured unknown
c10 fc-fabric connected configured unknown
c10::50001fe150020dd9,0 array-ctrl connected unconfigured unknown
c10::50001fe150020dd9,1 disk connected configured unknown
c10::50001fe150020dd9,2 disk connected configured unknown
c10::50001fe150020dd9,3 disk connected configured unknown
c10::50001fe150020dd9,4 unavailable connected configured unusable
c10::50001fe150020ddb,0 array-ctrl connected unconfigured unknown
c10::50001fe150020ddb,1 disk connected configured unknown
c10::50001fe150020ddb,2 disk connected configured unknown
c10::50001fe150020ddb,3 disk connected configured unknown
c10::50001fe150020ddb,4 unavailable connected configured unusable
c10::50001fe150020ddd,0 array-ctrl connected unconfigured unknown
c10::50001fe150020ddd,1 disk connected configured unknown
c10::50001fe150020ddd,2 disk connected configured unknown
c10::50001fe150020ddd,3 disk connected configured unknown
c10::50001fe150020ddd,4 unavailable connected configured unusable
c10::50001fe150020ddf,0 array-ctrl connected unconfigured unknown
c10::50001fe150020ddf,1 disk connected configured unknown
c10::50001fe150020ddf,2 disk connected configured unknown
c10::50001fe150020ddf,3 disk connected configured unknown
c10::50001fe150020ddf,4 unavailable connected configured unusable
c11 fc-fabric connected configured unknown
c11::50001fe150020dd8,0 array-ctrl connected unconfigured unknown
c11::50001fe150020dd8,1 disk connected configured unknown
c11::50001fe150020dd8,2 disk connected configured unknown
c11::50001fe150020dd8,3 disk connected configured unknown
c11::50001fe150020dd8,4 unavailable connected configured unusable
c11::50001fe150020dda,0 array-ctrl connected unconfigured unknown
c11::50001fe150020dda,1 disk connected configured unknown
c11::50001fe150020dda,2 disk connected configured unknown
c11::50001fe150020dda,3 disk connected configured unknown
c11::50001fe150020dda,4 unavailable connected configured unusable
c11::50001fe150020ddc,0 array-ctrl connected unconfigured unknown
c11::50001fe150020ddc,1 disk connected configured unknown
c11::50001fe150020ddc,2 disk connected configured unknown
c11::50001fe150020ddc,3 disk connected configured unknown
c11::50001fe150020ddc,4 unavailable connected configured unusable
c11::50001fe150020dde,0 array-ctrl connected unconfigured unknown
c11::50001fe150020dde,1 disk connected configured unknown
c11::50001fe150020dde,2 disk connected configured unknown
c11::50001fe150020dde,3 disk connected configured unknown
c11::50001fe150020dde,4 unavailable connected configured unusable

Para explicar un poco la salida del comando anterior, tenemos lo siguiente:
- Este servidor tiene 3 controladoras de Fibra, que son c1 (controladora de discos internos de fibra), c10 y c11 (las 2 tarjetas HBA conectadas al EVA8000)
- El Storage EVA8K tiene 2 controladores y cada controlador tiene 4 Puertos. Esto implica que cada LUN la veré por 8 PATH distintos (2 Controllers * 4 Ports = 8 PATH).
- Por cada HBA se ve un controlador (los 4 PORTS de un controlador). Debajo de cada Puerto (array-ctrl) aparecen las LUN que están presentadas al servidor (el número de la LUN es el que está después de la ",").

En este caso, se ha despresentado una LUN, la LUN 4. Se puede apreciar que en todos los Puertos aparece la LUN ",4" en Condicion unusable. Hay que eliminarla una por una (8 veces) de cada Puerto. En el comando para eliminar, se debe poner el WWPN de cada Puerto (todo el chorizo hasta antes de la ","). De esta manera, el cfgadm va a eliminar todas los dispositivos que estén en estado unusable del Controlador indicado.

Para hacer todo en un sólo paso y poder automatizar el proceso de eliminación, hice un "script" que hace todo (pero todo lo que tiene que ver con MPxIO, no desmonta ni deporta grupos de discos):

cfgadm -al -o show_FCP_dev | grep unusable | awk '{print $1}' | while read t; do device=`echo $t | cut -d"," -f1`; cfgadm -c unconfigure -o unusable_FCP_dev $device; done

Finalmente, esto eliminará cualquier dispositivo /dev/* que esté colgado:
devfsadm -Cv

Saludos,
ChaZcaZ./

Como utilizar un Proxy bajo Consola en Ubuntu Linux

Cuando se está detrás de un proxy y se quiere hacer un apt-get por ejemplo desde línea de comando, este no funcionará si es que en el sources.list hay sitios que están en Internet.

Una solución para esto es utilizar la variable de entorno http_proxy

export http_proxy="http://direccion_ip_proxy:puerto/"

Saludos,
ChaZcaZ./

Wednesday, October 18, 2006

Blog de Solaris solidos

Bueno, este post se me borró no se como, así que vuelvo a poner algunas direcciones interesantes:

1) Brendan Gregg:
Solido en Solaris. Escribió el DTraceToolkit (Solaris 10) y K9Toolkit (Solaris 8 en adelante). Tiene cosas interesantes:
http://bdgregg.blogspot.com/
http://blogs.sun.com/brendan
http://www.brendangregg.com/

2) Blog O'Matty:
Siempre tiene Tips de Solaris, Linux, etc. Es sólido el Blog:
http://prefetch.net/blog/index.php/

3) Derek Crudgington
Tiene varias cosas interesantes de Solaris:
http://hell.jedicoder.net/

Eso por ahora.

Saludos,
ChaZcaZ./

Tuesday, October 17, 2006

VCS Seeding - Iniciar un Veritas Cluster con un solo nodo

Para proteger el cluster de una partición de red (network partition), Veritas CLuster Server (VCS) utiliza el concepto de seed. Por defecto, cuando un sistema sube, este no está seeded. Los sistemas pueden ser seeded automáticamente o manualmente. Notar que sólo los sistemas que han sido seeded pueden correr VCS.

Los sistemas son seeded automáticamente en una de 2 maneras:
- Cuando un sistema "unseeded" se comunica con un sistema "seeded"
- Cuando todos los sistemas en el cluster están "unseeded" y habilitados para comunicarse con los otros.

El control del "seeding" está establecido en el archivo /etc/gabtab. GAB es iniciado con la línea de comando /sbin/gabconfig -c -n X, donde X es igual al número de nodos en el cluster. Por ejemplo, la línea de comando en el archivo /etc/gabtab para un cluster de 4-nodos es /sbin/gabconfig -c -n 4. VCS requiere que se declare el número de nodos en el Cluster.

Cuando el último sistema es "booteado", el cluster "seedeará" y comenzará VCS en todos los sistemas. Desde ahora los sistemas pueden ser bajados y reiniciados en cualquier combinación. "Seeding" es automático siempre que al menos una instancia de VCS está corriendo en algún lugar del Cluster.

Para iniciar el cluster con menos nodos que el total, verificar que los nodos a ser excluídos están actualmente abajo. Luego, iniciat GAB con el comando /sbin/gabconfig -c -x. Esto "seedeará" manualmente el cluster y habilitará VCS para subir en todos los sistemas conectados.

Saludos,

ChaZcaZ./

Setear y revisar modo Duplex de interfaces de Red en Unix

Esto lo encontré alguna vez en Internet y lo he completado con algunas cosas que he utilizado. Es muy útil, ya que la mayoría de los problemas de red comienzan cuando la velocidad y/o el modo de conexión está configurado incorrectamente.

Solaris
Para checkear el Duplex:
ndd /dev/hme link_mode
Cuando retorna un valor 0 = half duplex, y 1 = full duplex

Para forzar a modo full duplex:
ndd -sec /dev/hme adv_100fdx_capndd -set /dev/hme adv_autoneg_cap 0

Para forzar a modo half duplex:
ndd -sec /dev/hme adv_100hdx_capndd -set /dev/hme adv_autoneg_cap 0



Linux
La herramiento original en Linux para setear la velocidad y el duplex es mii-tool. Ahora está destinado a ser reemplazado por ethtool, pero muchas tarjetas antiguas sólo soportan mii-tool.
Por ejemplo:
mii-tool -F 100baseTx-FD eth0

Para ver la configuración de las tarjetas de red, usar:
mii-tool -v

Lo siguiente también puede ser usado con algunas tarjetas comunes:

Para setear las tarjetas eepro100 a modo full-duplex:
en /etc/modules.conf (para Redhat Linux)
options eepro100 options=48

Para las tarjetas 3c59x: options 3c59x options=0x204 full_duplex=0x200

ethtool
El comando entrega información acerca de la configuración de la interfaz de red que se le pasa como parámetro. Ejemplo:
#ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full

Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: g
Wake-on: g
Current message level: 0x00000007 (7)
Link detected: yes

Para setear la velocidad y el duplex, se debe editar el archivo de configuración de la interfaz de red y se debe agregar la línea ETHTOOL_OPTS, como se muestra a continuación:
#
# File: /etc/sysconfig/network-script/ifcfg-eth0
#
DEVICE=eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
BOOTPROTO=static
ONBOOT=yes
ETHTOOL_OPTS="speed 100 duplex full autoneg off"

Para setear la velocidad y duplex en forma dinámica, se puede hacer de la siguiente manera:
#ethtool -s eth1 speed 100 duplex full autoneg off


FreeBSD
Para chequear el modo Duplex: Solo se usa ifconfig -a

Para forzar a modo Full Duplex: ifconfig xl0 media 100baseTX mediaopt full-duplex

Para forzar a modo Half Duplex: ifconfig xl0 media 100baseTX mediaopt half-duplex

Note: Esto funciona para todos los dispositivos, no sólo para el driver xl0.



IBM AIX
Para obtener una lista de adaptadores:
lsdev -HCc adapter

Para chequear el modo duplex:
lsattr -d ent#

Para forzar el modo full duplex:
chdev -l ent# -a media_speed=100_Full_Duplex -P reboot

Para forzar el modo half duplex:
chdev -l ent# -a media_speed=100_Half_Duplex -P reboot



HP-UX
Para obtener una lista de adaptadores:

HP-UX 10.x usa el "Network Management IDs "
lanscan -n

HP-UX 11.x usa los números "PPA"
lanscan -p

Para chequear el modo duplex:
lanadmin -x NMid# (HP-UX 10.x)
lanadmin -x PPA# (HP-UX 11.x)

Para forzar el modo full duplex:
lanadmin -X 100FD NMid# (HP-UX 10.x)
lanadmin -X 100FD PPA# (HP-UX 11.x)

Para forzar el modo half duplex:
lanadmin -X 100HD NMid# (HP-UX 10.x)
lanadmin -X 100HD PPA# (HP-UX 11.x)



Tru64
1) Para ver como estan configuradas las interfaces de red, utilizar el siguiente comando:

hwmgr -get attr -cat network
27:
name = ee0
category = network
sub_category = Ethernet
model = Intel 82559
hardware_rev = 8
firmware_rev =
MAC_address = 00-50-8B-65-AA-FA
MTU_size = 1500
media_speed = 100
media_selection = Automatic
media_type = Unshielded Twisted Pair (UTP)
loopback_mode = 0
promiscuous_mode = 0
full_duplex = 0
multicast_address_list = CF-00-00-00-00-00 01-00-5E-00-00-01 09-00-2B-00-00-0F 09-00-2B-02-01-04
interface_number = 1
link = Up
autoneg_enable = 1
registration_time = Thu Nov 3 18:08:36 2005
user_name = (null) (settable)
location = (null) (settable)
software_module = (null)
[…]

2) Esta interfaz está a 100Mbps Half-Duplex y con autonegociación. Se dejará forzada a 100Mbps Full-Duplex. Para esto, ejecutar:
/usr/sbin/lan_config -i ee0 -a0 -s100 -x1

3) Para que quede permanente después de cada boot, agregar la línea del lanconfig al final de archivo /etc/inet.local


Saludos,

ChaZcaZ./


Monday, October 16, 2006

Olvidar contraseña de root en Linux y FreeBSD - resetear

Cuando se olvida la contraseña de root o la persona que la conocía ya no trabaja en la empresa, la solución no es tan complicada.

A continuación muestro como se puede cambiar (o resetear) la contraseña de root en Linux y en FreeBSD. A lo mejor existen otros métodos, pero estos son los que yo conozco.

Para resetear la contraseña de root en Linux, debes hacer lo siguiente:

1. Iniciar el sistema con alguna distribución LiveCD (como Knoppix por ejemplo) o desde algún disco de rescate de alguna distro de Linux (como se bootea desde el CD de instalación de algunas distros, te da la opción de entrar en modo Rescue System, el cual ejecuta un Kernel, carga un ramdisk inicial e inicializa varios procesos del sistema. Para ingresar, solo debes escribir root como el usuario).
2. Una vez que están dentro de este “Linux”, debes identificar la partición que contiene el directorio /etc, ya que esta estará usualmente en tu partición / (root). Monta la partición bajo /mnt. El siguiente ejemplo usa /dev/hda3 como la partición root:
mount /dev/hda3 /mnt
3. Una vez montado el filesystem, necesitas editar el archivo /mnt/etc/shadow para resetear la contraseña de root. Este lo puedes editar con cualquier editor de textos, pero lo más recomendable (o más usado) es el vi.
4. Cuando esté cargado el archivo en el editor, debes buscar la entrada para el usuario root. Busca la contraseña encriptada, la cual es el segundo campo de la línea (los campos están separados por : ). Borra el password de tal manera que los dos punto y coma queden uno al lado del otro ( :: ) y guarda el archivo.
5. Una vez que el archivo fue editado, anda a la raiz (cd / ) y desmonta el filesystem con el siguiente comando:
umount /mnt
6. Finalmente, puedes rebotear el sistema, sacar el cd de Linux que pusiste y bootear desde el Linux instalado. Ahora la contraseña de root estará en blanco.



Para resetear la contraseña de root en FreeBSD:

1. Bootear el sistema en Single User Mode.
Para esto, cuando el sistema está iniciando, desplegará el siguiente mensaje:
Hit [Enter] to boot immediately, or any other key for command prompt.

Booting [kernel] in 10 seconds...
En este momento se debe presionar la barra espaciadora o cualquier otra tecla (menos [Enter]) y se verá el siguiente mensaje:
Type '?' for a list of commands, or 'help' for more detailed help.

ok
Ahora se debe tipear boot –s y presionar [Enter] para subir FreeBSD en Single User mode. Cuando el sistema sube, se debiera ver lo siguiente:
Enter full pathname of shell or RETURN for /bin/sh:
Presionar [Enter] y debiera aparecer el prompt #.
2. Montar el Filesystem
En el Prompt., ejecutar el comando mount. Este comando montará todos los filesystems listados en el archivo /etc/fstab:
# mount -t ufs -a
Adicionalmente, debiera ejecutarse este comando (si no funciona, continuar con el siguiente paso)
# swapon -a
3. Cambiar la contraseña de root
Ejecutar el comando passwd y el sistema solicitará la nueva contraseña para la cuenta root:
# passwd
New password:_
Retype new password:_
passwd: updating the database...
passwd: done
Si no funciona, probar agregando la opción –l:
# passwd -l
4. Subir en MultiUser mode
Finalmente, no es necesario rebootear para subir en multiuser mode. El comando exit causará que el sistema vaya a modo multiusuario sin reiniciar:
# exit

Eso es todo.

Saludos,
ChaZcaZ./

cpio remoto - Copia remota

Cuando se necesita copiar algo de un servidor a otro, existen varios métodos (rcp, ftp, etc). Las veces que he tenido que hacerlo, he usado cpio. Es muy solido, mantiene los permisos, propietarios (siempre que los uid y gid sean los mismos).

Como ejemplo, se va a copiar el home del usuario chazcaz desde la máquina local hacia la máquina grodas (usuario chazcaz igual):

find /path_local/chazcaz/ | cpio -ocB | remsh grodas "cd /path_remoto/chazcaz/ ;cpio -imudcB"


Por otro lado, dentro de un mismo server se puede utilizar para copiar directorios completos, manteniendo privilegios, propietarios, permisos, etc. Como ejemplo, queremos copiar todo el contenido del directorio /chazcaz1 al directorio /chazcaz2. Esto se haría de la siguiente manera:
cd /chazcaz1
find . | cpio -pdmvu /chazcaz2

Saludos,
ChaZcaZ./

Thursday, October 05, 2006

Configuracion de MPxIO en Fujitsu Siemens PrimerPower 450 / Solaris 10 / EVA8000

Este procedimiento tuve que hacer para poder configurar Traffic Manager (MPxIO) en un servidor Fujitsu Siemens con Solaris 10.

En un principio, vino un jote de Fujitsu Siemens Chile a configurar este asunto, pero ni siquiera pudo ver los discos. En ese momento, este compadre me instaló el driver lpfc, el cual es el driver para tarjetas HBA Emulex de Emulex.

Para poder ver los discos, tuve que modificar el archivo de configuracion del driver, que es el /kernel/drv/lpfc.conf. Ahí, uno pone los puertos de cada controlador del EVA, por que HBA se van a ver y el target que se le asignará a cada puerto. Se debe tener presente que en este caso, el Binding se está haciendo por WWPN (World Wide Port Name), por lo cual la variable que controla el Binding debe estar seteada en el valor que corresponde a WWPN.

Con esta configuración, veía los discos 4 veces ( cada controlador tenia 2 puertos habilitados) y con el comando format los devices aparecian de la forma catbdcsd. Esto ya estaba malo, porque cuando uno va a configurar los discos con MPxIO, en los dispositivos aparece el WWID de la LUN.

Fue imposible configurar el MPxIO con el driver lpfc. Asi que decidi entonces instalar el driver para HBA Emulex de Sun (SUNWemlxs y SUNWemlxu). Con estos drivers si funciono y esto fue lo que hice:

1) Instalar físicamente 2 o más tarjetas HBA Emulex Light Pulse LP10000
2) Presentar al menos una LUN al servidor
3) Instalar los paquetes SUNWemlxs y SUNWemlxu
4) Instalar parche 120222-11 o superior
5) Reiniciar
--> En esta altura, ya está instalado el driver y se pueden ver las LUN repetidas 4 veces (En estecaso, cada controlador tiene conectado 2 de los 4 puertos)
6) Con comando format, verificar que se están viendo 4 veces las LUN.
7) Ejecutar "luxadm -e port" para ver que Solaris ve los dispositivos correctamente a través deldriver (debiera ver 2):
root@prd1009 # luxadm -e port
/devices/pci@82,4000/lpfc@3/fp@0,0:devctl CONNECTED
/devices/pci@82,4000/lpfc@4/fp@0,0:devctl CONNECTED
8) Se habilitará el Traffic Manager (MPxIO) por puerto y no globalmente, para evitar tener problemas con lacontroladora de los discos internos. Para esto, se debe hacer lo siguiente:
- En el archivo /kernel/drv/fp.conf, la variable mpxio-disable debe estar configurada así:
mpxio-disable="yes";
- Editar el archivo /kernel/drv/fp.conf y agregar estas dos lineas al final (la información se saca de lasalida del comando luxadm -e probe):
name="fp" parent=/pci@82,4000/lpfc@3 port=0 mpxio-disable="no";
name="fp" parent="/pci@82,4000/lpfc@4" port=0 mpxio-disable="no";
- Editar el archivo /kernel/drv/scsi_vhci.conf y la variable device-type-scsi-options-list debe quedar como sigue (OJO con los espacios entre HP y HSV210 - Solo para EVA4000/6000/8000):
device-type-scsi-options-list ="HP HSV210", "symmetric-option";
- La variable symmetric-option del archivo /kernel/drv/scsi_vhci.conf debe tener el siguiente valor (solopara EVA):
symmetric-option = 0x1000000;
9) Reiniciar
10) A esta altura el MPxIO ya debe estar funcionando. Para comprobar, ejecutar el comando format, solo se debiera ver un disco por LUN:
root@prd1009 # format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 /pci@83,4000/FJSV,ulsa@2,1/sd@0,0
1. c0t1d0 /pci@83,4000/FJSV,ulsa@2,1/sd@1,0
2. c0t2d0 /pci@83,4000/FJSV,ulsa@2,1/sd@2,0
3. c1t0d0 /pci@83,4000/FJSV,ulsa@2/sd@0,0
4. c1t1d0 /pci@83,4000/FJSV,ulsa@2/sd@1,0
5. c1t2d0 /pci@83,4000/FJSV,ulsa@2/sd@2,0
6. c7t600508B4001064A30000500001A10000d0 25GBx2 /scsi_vhci/ssd@g600508b4001064a30000500001a10000
7. c7t600508B4001064A30000500001A40000d0 10GBx5 /scsi_vhci/ssd@g600508b4001064a30000500001a40000
8. c7t600508B4001064A300005000046E0000d0 10GB /scsi_vhci/ssd@g600508b4001064a300005000046e0000
9. c7t600508B4001064A30000500004780000d0 5GB /scsi_vhci/ssd@g600508b4001064a30000500004780000
10. c7t600508B4001064A30000500004690000d0 100GB /scsi_vhci/ssd@g600508b4001064a30000500004690000
11. c7t600508B4001064A30000500004640000d0 100GB /scsi_vhci/ssd@g600508b4001064a30000500004640000
12. c7t600508B4001064A30000500001950000d0 100GBx1 /scsi_vhci/ssd@g600508b4001064a30000500001950000
13. c7t600508B4001064A30000500004730000d0 5GB /scsi_vhci/ssd@g600508b4001064a30000500004730000
Specify disk (enter its number): ^D
- Para corrobar que cada LUN tiene los 4 PATH, ejecutar el comando siguiente:
root@prd1009 # luxadm -v display /dev/rdsk/c7t600508B4001064A30000500001A10000d0s2
Displaying information for: /dev/rdsk/c7t600508B4001064A30000500001A10000d0s2
DEVICE PROPERTIES for disk: /dev/rdsk/c7t600508B4001064A30000500001A10000d0s2 Vendor: HP
Product ID: HSV210
Revision: 5031
Serial Num: Unavailable
Unformatted capacity: 51200.000 MBytes
Read Cache: Enabled
Minimum prefetch: 0x0
Maximum prefetch: 0x0
Device Type: Disk
device Path(s):
/dev/rdsk/c7t600508B4001064A30000500001A10000d0s2
/devices/scsi_vhci/ssd@g600508b4001064a30000500001a10000:c,raw Controller /devices/pci@82,4000/lpfc@4/fp@0,0
Device Address 50001fe150072d59,2
Host controller port WWN 10000000c955ae84 Class secondary State ONLINE Controller /devices/pci@82,4000/lpfc@3/fp@0,0 Device Address 50001fe150072d5c,2
Host controller port WWN 10000000c955af48 Class primary State ONLINE Controller /devices/pci@82,4000/lpfc@4/fp@0,0 Device Address 50001fe150072d5d,2
Host controller port WWN 10000000c955ae84 Class primary State ONLINE Controller /devices/pci@82,4000/lpfc@3/fp@0,0 Device Address 50001fe150072d58,2
Host controller port WWN 10000000c955af48 Class secondary State ONLINE



Eso es todo!.

Saludos,

ChaZcaZ./

Monday, August 07, 2006

Tru64: Agrandar un File System cambiando un disco pequeño por uno grande

Este procedimiento lo hice una vez que se me solicitó agregar espacio disponible en un filesystem de un servidor Tru64.

En esa oportunidad, el filesystem en cuestión formaba parte de un Dominio (DWProd20), al cual se le creaban 4 filesets. El dominio estaba formado por 1 disco (dsk77c) de 41GB. Se presentó un disco de 62GB (dsk78c), el cual se agregaría al dominio, se traspasaría la data del otro disco a este y finalmente se sacaría el disco de 41GB del Dominio para ser eliminado. Ambos discos son LUN de un Storage EVA5000.

Esto es lo que hice:

#
# Se debe verificar que la licencia para ADVFS Utilities está activa, puesto que es requisito
# para poder utilizar addvol y rmvol
# lmf
lmf> list
Product Status Users: Total Active

OSF-BASE active unlimited
OSF-BASE active, multiple unlimited
ADVFS-UTILITIES active unlimited
LSM-OA active unlimited
OSF-SVR active unlimited
OSF-USR active unlimited
OSF-USR active, multiple unlimited



# df -k
Filesystem 1024-blocks Used Available Capacity Mounted on
r2root_dmn#root 819200 347675 464528 43% /
/proc 0 0 0 100% /proc
r2usr_dmn#usr 8388608 1876262 6261184 24% /usr
[…]
DWProd18#fs1 104857600 56 104851696 1% /wdb0103
DWProd20#fs1 41943040 27184811 7504480 79% /DWTMC/Ficheros/Entrada
DWProd20#fs2 41943040 10652 7504480 1% /DWTMC/Ficheros/Sqlloader
DWProd20#fs3 41943040 7013091 7504480 49% /DWTMC/Ficheros/Historico
DWProd20#fs4 41943040 216664 7504480 3% /DWTMC/Ficheros/Log
DWProd19#fs1 10485760 1649710 8830080 16% /intneg

#
# Se realiza un scan para detector la nueva LUN que se ha presentado desde el EVA
# hwmgr scan scsi
hwmgr: Scan request successfully initiated



# hwmgr -view dev
HWID: Device Name Mfg Model Location
------------------------------------------------------------------------------
3: /dev/scp_scsi
4: /dev/kevm
[…]
201: /dev/disk/dsk75c COMPAQ HSV110 (C)COMPAQ IDENTIFIER=1618
202: /dev/disk/dsk76c COMPAQ HSV110 (C)COMPAQ IDENTIFIER=1619
203: /dev/disk/dsk77c COMPAQ HSV110 (C)COMPAQ IDENTIFIER=1621
204: /dev/disk/dsk78c COMPAQ HSV110 (C)COMPAQ IDENTIFIER=1622


#
# Pone una etiqueta por defecto al disco
# disklabel -rw /dev/rdisk/dsk78c
#
# Agrega el volumen /dev/disk/dsk78c al dominio DWProd20
# addvol /dev/disk/dsk78c DWProd20
# showfdmn DWProd20

Id Date Created LogPgs Version Domain Name
4360da46.0005ad20 Thu Oct 27 10:46:46 2005 512 4 DWProd20

Vol 512-Blks Free % Used Cmode Rblks Wblks Vol Name
1L 83886080 12965728 85% on 256 256 /dev/disk/dsk77c
2 125829120 125827072 0% on 256 256 /dev/disk/dsk78c
---------- ---------- ------
209715200 138792800 34%


#
# Se elimina el volumen /dev/disk/dsk77c del Dominio DWProd20
# Al removerlo comienza a hacer un balance del dominio para liberar el disco que se
# va a retirar.
# rmvol /dev/disk/dsk77c DWProd20
rmvol: Removing volume '/dev/disk/dsk77c' from domain 'DWProd20'
rmvol: Removed volume '/dev/disk/dsk77c' from domain 'DWProd20'
[Esto tarda varios minutos]



# showfdmn DWProd20

Id Date Created LogPgs Version Domain Name
4360da46.0005ad20 Thu Oct 27 10:46:46 2005 512 4 DWProd20

Vol 512-Blks Free % Used Cmode Rblks Wblks Vol Name
2L 125829120 63555728 49% on 256 256 /dev/disk/dsk78c




# df -k
Filesystem 1024-blocks Used Available Capacity Mounted on
r2root_dmn#root 819200 347675 464528 43% /
/proc 0 0 0 100% /proc
r2usr_dmn#usr 8388608 1876262 6261184 24% /usr
[…]
DWProd18#fs1 104857600 56 104851696 1% /wdb0103
DWProd20#fs1 62914560 23882608 31777872 43% /DWTMC/Ficheros/Entrada
DWProd20#fs2 62914560 10652 31777872 1% /DWTMC/Ficheros/Sqlloader
DWProd20#fs3 62914560 7013091 31777872 19% /DWTMC/Ficheros/Historico
DWProd20#fs4 62914560 216692 31777872 1% /DWTMC/Ficheros/Log
DWProd19#fs1 10485760 1649699 8830080 16% /intneg


Saludos,
ChaZcaZ./

Solaris 10: Agregar nuevos servicios a inetd.conf

En Solaris 10, ya no se utiliza inted.conf para levantar y/o definir los servicios que serán administrados por el demonio inetd. Todos esos servicios son manejados ahora bajo SMF.

Entonces, si se necesita agregar un servicio que sea levantado por inetd (On Demand), se debe agregar la línea correspondiente al archivo /etc/inetd.conf y luego ejecutar el comando inetconv, para que sea convertido a SMF.

En particular, cada vez que se edite el archivo /etc/inetd.conf, debe ejecutarse el comando inetconv, para que los cambios tomen efecto.

Finalmente, con svcs -a se puede ver el estado del nuevo servicio y con el comando svcadm (o inetdadm en este caso) se puede subir, bajar o reiniciar el nuevo servicio.

Saludos,
ChaZcaZ./

Thursday, July 13, 2006

Solaris 10: Oracle 10g - System V IPC

Solaris 10 trae un nuevo cambio, que no es menor. Hasta Solaris 9, cuando se necesitaba setear los parámetros de memoria compartida, semáforos y colas de mensajes (típico para una instalación de Oracle), había que agregar los parámetros en el archivo /etc/system y reiniciar el servidor para que los cambios tomaran efecto.

Ahora, en Solaris 10, los parámetros ya no se agregan en el archivo /etc/system y para que tengan efecto no es necesario reiniciar el servidor, ya que el cambio se realiza en forma dinámica. Ahora, los parámetros se configuran en "proyectos" (project). Esto permite tener en un mismo sistema distintas instancias de Base de Datos con distintos parámetros de System V IPC, por ejemplo.

Uno puede crear projects para lo que quiera. Sin embargo, si quiere que todos los procesos y Bases de Datos tengan los mismos parámetros, sólo se cambian los parámetros en el projecto "default", al cual pertenecen todos los usuarios. En este ejemplo, se modificarán los parámetros de memoria compartida/semáforos, de acuerdo a lo solicitado por el DBA y se realizará en el proyecto default.

Antes de ir al ejemplo, mostraré algunos comandos que ayudan a trabajar con proyectos:
id -p: muestra a qué proyecto(s) pertenece el usuario.
-bash-3.00$ id -p
uid=102(chazcaz) gid=14(sysadmin) projid=3(default)
cat /etc/project: es el archivo que guarda la base de datos de proyectos. Para hacer modificaciones, se utilizan los comandos prctl y rctladm.
-bash-3.00$ cat /etc/project
system:0::::
user.root:1::::
noproject:2::::
default:3::::project.max-shm-memory=(priv,1181116006,deny)
group.staff:10::::
projects: muestra a qué proyectos pertenece o tiene acceso el usuario
-bash-3.00$ projects
default
prctl: muestra o setea "resource controls" en un proceso en ejecución, tarea o proceso.
rctladm: muestra o modifica el estado global de "system resource controls"
projmod: modifica la información de un proyecto en el sistema

Además, muchas aplicaciones permiten ahora desplegar el uso o consumo de recursos por proyectos (prstat -J, ipcs -J, etc).

Bien, ahora el ejemplo. El DBA solicita modificar los siguientes parámetros de Kernel para una instalación de Oracle 10g en un servidor corriendo Solaris10:
project.max-sem-ids 100
semsys:seminfo_semmns 1024
process.max-sem-nsems 256
semsys:seminfo_semvmx 32767
project.max-shm-memory 4294967295
project.max-shm-ids 100

Lo primero que se debe hacer, es ir a http://docs.sun.com y bajar el documento Solaris Tunable Parameters (para Solaris10) y ver si existen estos parámetros y no están obsoletos.

Al revisar el documento, se encuentro que los parámetros semsys:seminfo_semmns y semsys:semingo_semvmx están obsoletos en Solaris10 y si se llegan a agregar al arhivo /etc/system, serán ignorados. También se encuentra que para configurar el resto de parámetros, se debe hacer a través de proyectos.

Entonces, se modificaran estos paramétros del project default, ya que el usuario oracle también pertenece a este proyecto. Se pueden configurar los 4 parámetros en una línea o se pueden hacer por separado. En nuestro caso, se realizará por separado con el comando projmod:

projmod -s -K "project.max-shm-memory=(privileged,4G,deny)" 'default'
projmod -s -K "process.max-sem-nsems=(privileged,256,deny)" 'default'
projmod -s -K "project.max-sem-ids=(privileged,100,deny)" 'default'
projmod -s -K "project.max-shm-ids=(privileged,100,deny)" 'default'

Para verificar el cambio, ejecutar los comandos:
prctl -i project default
prctl -i process $$

Finalmente, un usuario puede tener acceso a varios proyectos y para cambiarse de uno a otro debe hacerlo con el comando /usr/bin/newtask -p project_name. En otro post espero poder mostrar más cosas acerca de proyectos.

Para más información de los comandos projmod, prctl, etc, ir a http://docs.sun.com/app/docs/doc/817-1592/6mhahuoj5?a=view .

Saludos,
ChaZcaZ./

Monday, July 10, 2006

Solaris 10: Resolución de Nombres

En esta versión de Solaris, nuestros amigos de Sun se pusieron creativos y cambió un poco el tema de la resolución de nombres.

En primer lugar, ahora cuando uno quiere cambiar el nombre del servidor (o su dirección IP), ahora además debe cambiar la entrada correspondiente en el nuevo archivo /etc/inet/ipnodes.

NOTA: no existe un link simbólico /etc/ipnodes, como en el caso del link /etc/hosts -> /etc/inet/hosts. Esto es una pregunta de examen para la certificación.

El archivo /etc/inet/ipnodes lo crearon ya que la tabla hosts (/etc/hosts) sólo soporta direcciones IPv4. Con ipnodes, se tiene soporte IPv4 y IPv6.

Como normalmente se ha realizado, la secuencia de resolución de nombres se hace en el archivo /etc/nsswitch.conf (notar que se ha agregado una nueva línea ipnodes: files dns).

De esta manera, la resolución de nombres tiene el siguiente flujo:
1) /etc/inet/ipnodes
2) /etc/resolv.conf
3) /etc/inet/hosts
4) /etc/resolv.conf

Si se quiere cambiar para que la resolución pregunte primero a los archivos locales y después a los DNS, se debe realizar lo siguiente en el archivo /etc/nsswitch.conf
ipnodes: files
hosts: files dns

Así, la secuencia de resolución de nombres sería:
1) /etc/inet/ipnodes
2) /etc/inet/hosts
3) /etc/resolv.conf

Saludos,
ChaZcaZ./