sábado, agosto 27, 2005

Actualizada la entrada de cambio de tamaño de particiones NTFS

Bien, ya he acabado la actualización de Cambiar de tamaño particiones NTFS en un DL360 añadiendo todo lo que me faltaba. La próxima vez intentaré publicar el artículo completo, aprovechando que el ecto me permite una gestión mucho más cómoda de las entradas del blog. Definitivamente me voy a animar a comprarlo :)

viernes, agosto 26, 2005

Cambiar de tamaño particiones NTFS en un DL360

Hoy he tenido que cambiar de tamaño unas particiones NTFS en un servidor DL360 que tenía Windows 2000 instalado sobre un RAID 1 creado por la controladora hardware en los dos discos que se le pueden poner. Puesto que tengo una licencia de Partition Magic 8, probé en principio con él. Sin embargo, este producto no funciona sobre las versiones server de Windows. Decidí pues, mirar una vieja alternativa, ntfsresize, un conjunto de herramientas de fuentes abiertas que permiten manejar el sistema de ficheros. Normalmente se usan desde una distribución de rescate. Viene por ejemplo con Knoppix. Sin embargo, me parece algo lento de ejecutar desde CDROM. Prefiero recurrir a distribuciones más específicas para este tipo de funciones como Crash Recovery. Usando la última versión de la misma, arranqué el servidor desde el CDROM, y monté la distro

Lo primero, en este caso, es que los DL360G4 utilizan una controladora RAID Smart Array 6i. Esta controladora utiliza el módulo del kernel cciss como controlador y normalmente crea en el directorio /dev las entradas como /dev/cciss/c0dn donde n representa el disco definido en la controladora y entradas del tipo /dev/cciss/c0d0py donde y representa la partición. Así, por ejemplo la primera partición definida sobre el primer disco sería /dev/cciss/c0d0p1. Este dispositivo es de tipo block (bloque) y utiliza como major number (al menos sobre el primer disco) 104. El disco completo (sin particiones) utiliza como minor number 0, y las particiones utilizan como minor 1 en adelante. Es importante saber este esquema puesto que Crash Recovery no crea las entradas adecuadas en /dev, y tenemos que crearlas nosotros a mano con ayuda de mknod.

Para efectuar correctamente la operación, lo primero que debe hacerse es, una vez cargado el Crash Recovery y las utilidades, cargar el módulo del kernel de la controladora y crear los dispositivos de bloque para acceder a la tabla de particiones y a la partición de Windows que se quiera cambiar el tamaño. En este ejemplo voy a suponer que solo existe una única partición en el disco que queremos cambiar. Para ello:

[tinker:root](~)#modprobe -k cciss
[tinker:root](~)#mknod c0d0 b 104 0
[tinker:root](~)#mknod c0d0p1 b 104 1
La primera línea nos carga el driver, y las dos segundas crean en el directorio actual dos entradas, la primera hace referencia a todo el disco, de tal manera que permite editar la tabla de particiones y la segunda para acceder a la primera partición del disco, cosa que necesitará la utilidad ntfsresize

Ahora, lo primero que debe de hacerse es obtener la información de la tabla actual de particiones, anotarla y guardarla en sitio seguro, puesto que se va a modificar la misma, ya que el proceso de cambio de tamaño no es automático y exige borrar la partición y crearla de nuevo. Es especialmente importante anotar el cilindro de inicio de la partición:

[tinker:root](~)#fdisk -l c0d0
Disco /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes
255 cabezas, 32 sectores/pista, 17433 cilindros
Unidades = cilindros de 8160 * 512 = 4177920 bytes

Disposit. Inicio Principio Fin Bloques Id Sistema
/dev/cciss/c0d0p1 * 1 15935 65014784 7 HPFS/NTFS
Ahora se pasa comprobar hasta cuando se puede reducir la partición actual:
[tinker:root](~)#ntfsresize -i c0d0p1 ntfsresize v1.6.99 NTFS volume version: 3.1 Current volume size: 72833679360 bytes (72800 MB) Scanning volume ... 100.00 percent completed You could resize at 37601280000 bytes or 37601 MB (freeing 35199 MB).
Como se ve hay que hacer referencia explícita a la partición NTFS que se quiere reducir. La utilidad imprime hasta cuanto podemos achicar la partición de NTFS. Es importante que esta partición esté lo más desfragmentada posible y que tengan los datos situados al principio. Como nota adicional, comentar que está calculado los tamaños de manera aproximada. (no tengo los datos reales de cuando realicé la instalación).

Supongase que se quiere dejar la partición original con un tamaño de 40G, y liberar el resto. Lo primero es efectuar la posible operación de manera no destructiva:

[tinker:root](~)#ntfsresize -s 40G -n c0d0p1
ntfsresize v1.6.99
NTFS volume version: 3.1
Current volume size: 72833679360 bytes (72800 MB)
New volume size : 39999406080 bytes (39999 MB)
Scanning volume ...
100.00 percent completed
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
The read-only test run ended successfully.
Una vez superado el test, podemos cambiar el tamaño de la partició:
[tinker:root]:(~)# ntfsresize -s40G /dev/cciss/c0d0p1
ntfsresize v1.6.99
NTFS volume version: 3.1
Current volume size: 72833679360 bytes (72800 MB)
New volume size : 39999406080 bytes (39999 MB)
Scanning volume ...
100.00 percent completed
WARNING: Every sanity check passed and only the DANGEROUS operations left.
Please make sure all your important data had been backed up in case of an unexpected failure!
Are you sure you want to proceed (y/[n])? y
Schedule chkdsk NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
Syncing device ...
NTFS had been successfully resized on device '/dev/cciss/c0d0p1'.
You can go on to resize the device e.g. with 'fdisk'.
IMPORTANT: When recreating the partition, make sure you
1) create it with the same starting disk cylinder
2) create it with the same partition type (usually 7, HPFS/NTFS)
3) do not make it smaller than the new NTFS filesystem size
4) set the bootable flag for the partition if it existed before
Otherwise you may lose your data or can't boot your computer from the disk!
Ahora viene la parte más peligrosa de todo el proceso. Ahora hay que borrar la tabla de particiones original y ajusta la partición que hemos cambiado el tamaño. Para ello se usa fdisk.
[tinker:root]:(~)# fdisk c0p0

Command (m for help): p
Disk /dev/cciss/c0d0: 255 heads, 32 sectors, 17433 cylinders
Units = cylinders of 8160 * 512 bytes

DeviceBootStartEndBlocksIdSystem
/dev/cciss/c0d0 *115935650147847HPFS/NTFS

br/> Command (m for help): d
Partition number (1-4): 1

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-15935, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-15935, default 15935): +40G
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 7
Changed system type of partition 1 to 7 (HPFS/NTFS)

Command (m for help): a
Partition number (1-4):1

Command (m for help): p

Disk /dev/cciss/c0d0: 255 heads, 32 sectors, 17433 cylinders Units = cylinders of 16065 * 512 bytes
DeviceBootStartEndBlocksIdSystem
/dev/cciss/c0d0*1957478123840 7 HPFS/NTFS
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
Este es el paso donde un error puede dar al traste con la tabla de particiones, por lo cual es fundamental haber hecho una copia de seguridad de los datos importantes. Una vez modificada la tabla, se debe de reiniciar Windows, dejar que pase el chkdsk para que compruebe las modificaciones correctas, y ya debe de tenerse el espacio libre necesario al final de la antigua partición.

Es interesante comentar que conviene darse un margen a la hora de cambiar el tamaño de la partición, es decir, de no ajustar los datos excesivamente, sino dejar espacio libre suficiente en la partición que estamos reduciendo. Hay que tener en cuenta que realmente lo que se hace es borrar y recrear la partición, y un error de cálculo lleva a que estemos sobreescribiendo alguna de ellas.

No olvidar tampoco poner el flag de arranque en el fdisk, porque podemos encontrarnos si no es así con la desagradable sorpresa de que el sistema no arranca.

Por último, agradecer a la gente de ntfsresize su magnífico trabajo y este documento donde he sacado la información (y la salida de los programas) para escribir esta entrada de blog.

Windows Update y las credenciales de los proxys

Cuando se utiliza las últimas versiones de WindowsUpdate, y en vez de estar conectado a Internet directamente se usa un proxy con autentificación NTLM, como por ejemplo el ISA Server, se producen errores de que es incapaz de bajar los parches. El error que da es tan descriptivo como 0x8024401b. Sin embargo, a partir de ahí puede indagarse un poco más si nos vamos al fichero c:\winnt\windowsupdate.log donde queda almacenada toda la información que está de los procesos que está realizando WindowsUpdate. En este caso concreto si miramos el log:
Handler Windows Patch download for UpdateId = {271249A1-AD58-4798-8376-6580A8176783}: selected action is download express (delta).
2005-08-26 10:39:00 1204 160 DnldMgr *********** DnldMgr: New download job [UpdateId = {271249A1-AD58-4798-8376-6580A8176783}.100] ***********
2005-08-26 10:39:01 1204 160 DnldMgr WARNING: SetCredentials for NEGOTIATE AUTH proxy failed with 0x800704dd
2005-08-26 10:39:01 1204 160 DnldMgr FATAL: DM:CAgentDownloadManager::DownloadUpdate: pDownloadJob->Init failed with 0x8024401b.
2005-08-26 10:39:01 1204 160 DnldMgr WARNING: Got error (hr = 8024401b) starting update 5 in call 3. Notifying call.
2005-08-26 10:39:01 1204 160 DnldMgr Error 0x8024401b occurred while downloading update; notifying dependent calls.

Es interesante ver como el error se produce por la falta de autentificación por parte del proxy al elemento encargado de bajar los parches. Esto ocurre porque estos parches se bajan a través de BITS el servicio de transferencia inteligente en segundo plano de Windows 2000 / 2003.

Buscando por la web y los grupos de news he dado con una este hilo en microsoft.public.windowsupdate donde comentan que este error sólo sucede cuando se está logueado en la máquina a través de terminal server. Bien, tal como apuntan en los grupos de news, si uno se logea en la consola, funciona perfectamente. El problema, surge de lanzar la página de actualziación a través de una sesión de terminal server.

jueves, agosto 25, 2005

Herramientas para mantener bases de datos de conocimiento

Llevo un tiempo dándole vueltas al problema de mantener toda la documentación del departamento de sistemas de la empresa donde trabajo. Actualmente, consiste en multitud de documentos en diferentes formatos, centralizados en un servidor y donde se pueden consultar. Sin embargo este esquema presenta varios problemas:
  • Es necesario tener instalado Word / Excel / Visio o el programa que sea para accerder a la documentación
  • No puede efectuarse en ella una búsqueda sencilla. Se sabe por los nombres cual es el plan de direccionamiento, cuales son la función de los servidor, y donde están los proyectos. Pero a la hora de hacer una búsqueda global hay que ir archivo a archivo.
  • No se tiene un histórico de las modificaciones efectuadas en la documentación.

Como primera solución al problema está el uso de herramientas que sean capaces de indexarla. Por ejemplo Windows tiene el Index Server (NT4) o el indexing service (Windows 2000, XP) que permite indexar la información contenida en los ficheros. Con los ifilters adecuado puede extraer las palabras claves y crear un catálogo que posteriormente sea consultado con ayuda de un sitio web ASP. Esta solución adolece de flexibilidad a la hora de actualizar la documentación, usar un control de versiones o ver quien está autorizado para acceder a la misma.

Un siguiente paso es usar un gestor documental como puede ser Sharepoint. Al menos, en su versión primera - la que más conozco - es una castaña. Utiliza el almacén de datos de Exchange para almacenar los documentos, tiene un flujo de trabajo relativamente sencillo y permite la creación de portales usando webparts. Es una mezcla entre un gestor de contenido (CMS) y un almacén de documentos. Ya Sharepoint aporta un cierto control de versiones que da un valor añadido a la solución y una herramienta de búsqued e indexación que puede usarse para obtener la información.
A partir de aqui puede intentarse usar un sistema de gestión de contenidos como puede ser cualquiera de los portales tipo opencms o MS CMS. Estas son herramientas de construcción de portales, donde se diseñan unas plantillas, con una navegación determinada, y unos contenedores donde se carga la información. Esto está muy bien en portales donde la navegación está más o menos establecida y el diseño, pero para almacenar la información ded sistemas no me convence, puesto que esta información es demasiado heterogénea como para encajar en el modelo tan rígido que ofrece un gestor de contenido, al menos, como MSCMS 2001 que es el que he manejado los últimos años.
La opción que más me atrae hasta ahora es la de un Wiki. Una herramienta que permite editar una web de manera muy flexible e ir construyendo el portal a gusto del consumidor. Ejemplos de wiki son la Wikipedia o la documentación de ciertos proyectos libres como por ejemplo este de GnomeSupport. Quizás la idea del wiki haya sido la que más me ha atraido a la hora de buscar una herramienta que me permita almacenar la documentación.

Con estas ideas, he empezado a plasmar ciertos requisitos que me gustaría que tuviese la herramienta:

  • La posibilidad de editar las páginas desde cualquier navegador.
  • El contenido que genere debe ser estándar, preferiblemente usando xhtml y hojas de estilo
  • El contenido generado debe de ser accesible siguiendo pautas de la WAI
  • Poder generar vistas de la información en función del usuario que esté en el sistema en ese momento. Aunque en un Wiki cualquier usuario pueda editar la información, en este caso debe de existir cierto control sobre quien y qué puede modificar los usarios. Por tanto debe de existir una serie de roles con los permisos bien definidos
  • Una buena utilidad de búsqueda. Esta es quizás la parte más importante de la aplicación y la que realmente la puede hacer útil o un montón de código que no valga para nada.
Sobre la base de que las propiedades más importante son las anteriores, también sería interesante:
  • Un sistema de plugins que permitieran añadir nueva funcionalidad.
  • Información de cambios vía RSS.
  • Un API usando xmlrpc para poder interactuar con la misma desde otros programas
  • ...
La verdad, no conozco ninguna aplicación que se ajuste a estos requerimientos, pero si sé que voy a empezar a mirar con lo que hay hecho en Wikis. Quizás el primer software que mire sea el de la Wikipedia, MediaWiki, a ver que partido se le puede sacar para tener una base sobre la cual trabajar y si la idea funciona, pensar en el desarrolo de un soft ha medida que se ajustara a las necesidades de la empresa.

Probando Ecto

Acabo de bajarme ecto un software para administrar blogs. De momento, sólo he visto por encima lo que es capaz de hacer. Soporta varios APIs para acceder a las distintas aplicaciones de blog, y el editor que tiene admite formato de texto enriquecido o bien html - tal como lo estoy editando ahora -. Llevo algún tiempo queriendo hacerme una aplicación similar, en parte por aprender Objetive C, en parte por afición. Pero desde luego, esta tiene muy buena pinta :)

Tutorial de uso de MSXML

Estoy pensando una pequeña utilidad que se dedique a coger la configuración de los IIS a través de ADSI. Sin embargo nunca he manejado el API de Microsoft para el tratamiento de XML. He encontrado este pequeño tutorial para empezar a usarlo :). Conforme vaya diseñando la utilidad, iré comentando en el blog como lo he ido haciendo.

miércoles, agosto 24, 2005

El blog de David Wang

Buscando scripts para adminsitrar IIS he dado con el blog de David Wang, donde se habla de IIS en sus diferentes versiones y se dan trucos para gestionarlo a través de scripting. Por ejemplo este que permite listar toda la información de los IIS instalados en una máquina. Interesante algunas de las referencias: modelo ADSI de IIS. Una lectura interesante para todos aquellos que os toque pelear con IIS.

martes, agosto 23, 2005

wmctrl

Ojeando este artículo de ArsTecnnica he dado con wmctrl, una pequeña utilidad que permite trabajar con las ventas de XWindow desde la línea de comandos. Funciona con aquellos gestores de ventanas que soporten el estandar WEMH.

lunes, agosto 22, 2005

DashBlog

Este es un pequeño widget para el Dashboard de MacOS X Tiger. Permite postear en blogs compatibles con el API de Blogger. Puede bajarse desde la colección que tiene Apple en su web. No tiene mala pinta para anotaciones rápidas como esta, aunque me gustaria un cliente con más potencia. Seguiré investigando :)

viernes, agosto 19, 2005

OSFlash: Información sobre programas flash de fuentes abiertas

El otro día en una discusión en slashdot di con Osflash, una comunidad sobre herramientas y proyectos de fuentes abiertas sobre flash. Es un wiki donde la gente puede editar y añadir sus propias aportaciones. También, hacer referencia a mtsac un compilador de Action Script 2 para generar ficheros .swf.

martes, agosto 16, 2005

Vuelta a la actividad

>Después de 15 días de vacaciones ya estoy aquí de nuevo :). Unos días de descanso en la playa que me han sentado estupendamente y me han mantenido alejado del ajetreo de Internet. Ahora a poner orden en el correo electrónico, revisar los parches de las máquinas (vaya colección de parches ha sacado Microsoft, incluyendo ya, gusano que aprovecha una de las vulnarabilidades) y a tomarse el curro un poco más relajado para no llegar a los niveles de stress acumulados los últimos 6 meses.

miércoles, agosto 03, 2005

Auditoria de sistemas Windows

(via Osnews) He visto este artículo que permite realizar audotoria sobre los diferentes eventos para auditar un sistema de Windows 2000 - que no vienen activado por defecto -. Explica que significa cada uno de los números de eventos que se guardan en el registro de seguridad. Ahora solo faltaria unos scripts que por WMI se bajara los visores de sucesos y los analizara :)

lunes, agosto 01, 2005

Ordenadores con modulos TPM

Siguiendo una historia en Slashdot sobre Mac OS X y la posibilidad de usar módulos TPM (trusted platform module) para controlar en que ordenador se puede y cual no ejecutar MacOS X, he dado con esta lista de ordenadores que actualmente implementan dicho módulo.