martes, 12 de agosto de 2008

Dar formato a un disco nuevo en Linux

¿Cuál es el comando universal, aquel que se entiende en cualquier plataforma?
fdisk
Y por ahí voy a empezar.
Cuando instalamos un disco duro nuevo, lo primero que tenemos que hacer son las particiones, y les damos forma con el comando fdisk.

Lo que voy a hacer es dar forma al nuevo disco, que para mi máquina será el /dev/sdb.

Tuxxxy:~$ fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305):
Using default value 1305

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Lo que he hecho ha sido hacer una única partición de ese disco, y aprovechar todo el espacio. Ahora tengo la partición /dev/sdb1, y tengo que crear un sistema de archivos en ella. Como trabajo con Linux, la más estandarizada es la ext3, así que lo hago de esta manera:

Tuxxxy:~$ mkfs.ext3 -b 4096 /dev/sdb1
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2620595 blocks
131029 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Y una vez ya tengo el disco particionado y con su sistema de archivos correspondiente, sólo me queda montarlo y utilizarlo.

Para montarlo manualmente lo hago así:

Tuxxxy:~$ mount -t ext3 /dev/sdb1 /data

Y compruebo que se ha montado bien con un

Tuxxxy:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 9.9G 151M 9.2G 2% /data

Después tocaría hacer pruebas y comprobaciones como si se me permite la escritura en el disco y cosas de este estilo, y una vez estuviéramos seguros de que funciona, pues lo pondríamos en el /etc/fstab para que la unidad se monte cada vez que arranquemos el sistema operativo.

Tuxxxy:~$ vi /etc/fstab

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/sda2 / ext3 defaults,errors=remount-ro 0 1
/dev/sda1 none swap sw 0 0
/dev/sdb1 /data ext3 defaults,errors=remount-ro 0 1

donde he añadido la última línea, la que corresponde a mi disco nuevo, con su nombre, el punto de montaje, el sistema de archivos y las opciones con las que quiero que se monte.

Sólo queda reiniciar para comprobar que el sistema monta el disco solo.
Y con esto y un bizcocho...

lunes, 4 de agosto de 2008

Número máximo de conexiones para Apache2

Antes que nada, hay tener en cuenta que el aumento sin control del número de conexiones de apache puede tumbar la máquina. Eso hay que tenerlo muy claro.

Una vez dicho esto, para aumentar (o disminuir) el número máximo de conexiones que admite el servidor web, lo hacemos modificando el /etc/apache2/apache2.conf.

Buscamos una variable que es
MaxClients
y que por defecto está limitada a 150. Nosotros podemos ponerla como máximo a 256, que son los servers que puede levantar el sistema solo. La idea es comprobar primero de todo que el servidor aguanta estos 256 y que necesita más. Si está utilizando alrededor de 200 servers no hará falta darle más, no seamos avariciosos.

Pero puede ser que estos 256 se queden cortos y que el servidor aguante bien (si no aguanta bien, la idea sería bajar el número de MaxClients, hasta llegar a un punto que aguante bien... si la página tarda en cargar, no serán más que daños colaterales). Si esto pasa, podemos aumentar por encima de los 256, pero utilizando otra directiva, el
ServerLimit
que le pondremos un valor alto, pero no demasiado descabellado, unos 100 threads por encima del MaxClients está bien, para tener un poco de margen.

Para habilitar la directiva ServerLimit, lo tenemos que hacer en la propia configuración del apache, en el httpd.conf o en el apache.conf. Lo haremos en el mismo módulo que estaba MaxClients, pero poniéndola la primera, de esta manera:

ServerLimit 500
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 350
MaxRequestsPerChild 0

Lo mismo que antes, una vez se añada la directiva ServerLimit tendremos que ir con cuidado. Apache reserva una cantidad de memoria que puede ser que no utilice si el valor es muy alto y no se llega ni de lejos, pero también puede pasar que el sistema se vuelva inestable o simplemente que Apache no arranque. Por eso, cuidado al utilizar esta directiva.


Existe un límite inviolable compilado en el servidor que es ServerLimit 20000. Con este límite se intentan evitar las consecuencias que pueden tener los errores tipográficos.

jueves, 31 de julio de 2008

Tomcat y su memoria

Hoy hemos tenido una situación un poco molesta: un mailing masivo de un cliente ha tenido la web a punto de caerse durante media mañana. Y es que la aplicación necesita una cantidad bestial de memoria... y no la tenía asignada.

Simplemente he tenido que cambiar este parámetro, y la cosa ha ido mucho más fluida.

Así que si alguna vez tenéis que hacerlo, ahí va el cómo.

El parámetro a modificar es Xmx, y hay que modificarlo desde el binario que arranca el demonio (en linux). Es simplemente localizarlo y cambiar el valor que tiene a continuación

Servidor:/var/lib/tomcat5/conf# grep -ir Xmx /etc/init.d/tomcat5
CATALINA_OPTS="-Djava.awt.headless=true -Xmx128M"

En mi caso (es la configuración por defecto) estaba a 128Mb. Y lo he subido a 512.

Pues nada, después de hacer la modificación reiniciamos el tomcat (no vale un reload porque sólo carga la configuración, no para y arranca el proceso) y ya lo tenemos.
Ah! y además de verse en el script, también se ve con un ps:

Servidor:/var/lib/tomcat5/conf# ps aufx | grep tomcat

tomcat5 17124 0.0 0.0 7696 1768 pts/0 S 11:27 0:00 \_ /usr/sbin/rotatelogs /var/lib/tomcat5/logs/catalina_%F.log 86400
tomcat5 17131 73.5 6.1 721564 130332 pts/0 Sl 11:27 0:16 /usr/local/jdk1.6.0_04/bin/java -Djava.awt.headless=true -Xmx512M-Djava.endorsed.dirs=/usr/share/tomcat5/common/endorsed -classpath /usr/local/jdk1.6.0_04/lib/tools.jar:/usr/share/tomcat5/bin/commons-launcher.jar:/usr/share/tomcat5/bin/commons-logging-api.jar:/usr/share/tomcat5/bin/jmx.jar:/usr/local/jdk1.6.0_04/jre//lib/jcert.jar:/usr/local/jdk1.6.0_04/jre//lib/jnet.jar:/usr/local/jdk1.6.0_04/jre//lib/jsse.jar:/usr/share/tomcat5/bin/bootstrap.jar:/usr/share/tomcat5/bin/commons-logging-api.jar -Djava.security.manager -Djava.security.policy==/var/lib/tomcat5/conf/catalina.policy -Dcatalina.base=/var/lib/tomcat5 -Dcatalina.home=/usr/share/tomcat5 -Djava.io.tmpdir=/var/lib/tomcat5/temp org.apache.catalina.startup.Bootstrap start


Ah, por cierto, al igual que hay una variable para la memoria máxima que puede asignarse a tomcat para que la utilice, también hay una memoria mínima. La variable es Xms.

martes, 29 de julio de 2008

Cómo registrar una librería (.DLL) en Windows

Hay veces, por motivos varios y diferentes cada uno de ellos, que necesitamos registrar (o "desregistrar") una librería concreta. No basta con moverla o borrarla ya que Windows sigue pensando que está ahí y la va a buscar.

¿Qué hacer en esos casos? Pues es muy sencillo.

Desde la línea de comandos (Inicio --> Ejecutar --> cmd --> intro, se abre la ventana de MS-DOS), ejecutamos

regsvr32 X:/ruta/a/la/libreria.dll

y hecho ;)

Además de registrarla, podéis decirle al sistema que la "descargue", que no la tenga en memoria. La opción para ello es -u (undo):

regsvr32 -u X:/ruta/a/la/libreria.dll

Y si lo que queremos es que no nos muestre ningún mensaje durante/al finalizar el registro, la opción es -s (silent):

regsvr32 -s X:/ruta/a/la/libreria.dll

Y ya está :)

viernes, 25 de julio de 2008

Logs en Microsoft Exchange Server 2007

¿Dos entradas en dos días? Cómo es eso??? Pues nada, yo, que pasaba por aquí :)

Es una tontería, supongo que como ayer, que me irá muy bien para tenerlo en cuenta en otro momento.
Parece ser que el Exchange 2007 es un poco diferente a sus versiones anteriores, pero por lo que he visto yo, la verdad es que está hecho más cara a que lo administre un usuario que otra cosa. Bastante sencillito y claro, al menos en lo que se refiere a los logs.

Para verlos, la cosa es muy fácil.

Abrimos la Consola de Administración de Exchange (en Inicio --> Programas --> Microsoft Exchange Server 2007), y en el menú de la izquierda vamos a Cuadro de Herramientas. Buscamos Seguimiento de mensajes y hacemos doble click para entrar. Se abre otra ventana donde primero comprueba que estén instaladas las actualizaciones necesarias (podemos cancelar la comprobación si queremos) y luego nos sale un enlace que dice Ir a la Pantalla de Bienvenida. Al hacer click, nos lleva a la página de Parámetros de Seguimientos de Mensajes, donde tendremos que jugar con todos los parámetros para hacer las búsquedas en los logs que necesitemos.

Tenemos las siguientes categorías para filtrar los logs:
Destinatario
Remitente
Servidor
EventID
MessageID
InternalMessageID
Asunto
Referencia
Inicio
Fin
donde las únicas categorías obligatorias son las dos últimas y el EventID (qué tipo de categoría: error, entrada de correo, salida de correo...)

La verdad es que es una interfaz muy amigable, y es muy cómodo trabajar con ella, aunque yo siga prefiriendo mi terminal, con mis letras en verde y amarillo, fondo negro semitransparente y el logo de Debian en el fondo...


Así da gusto trabajar

jueves, 24 de julio de 2008

Problemas con Httpd en Red Hat

Cuánto tiempo sin postear nada!!!
Ha sido una larga temporada, muchos cambios, mucho trabajo y muchos viajes... pero a ver si puedo ir posteando poquito a poco.


Esta vez vengo con una solución que podría haberme llevado muchas horas, pero con la que he dado pronto... afortunadamente.

He montado un servidor de hosting con Red Hat (sí, en el trabajo estamos cambiando a Red Hat), y me da problemas el httpd. Al arrancarlo, me da el siguiente error:

[warn] _default_ VirtualHost overlap on port 80, the first has precedence

El apache arrancaba sin problemas, pero no se cargaba bien la configuración. Tenía definidos varios Virtualhosts, pero parece que sólo se había cargado el primero. El resto redirigían a éste, como si no estuvieran configurados.

Después de hacer varios cambios en la configuración de las directivas de apache, he dado con el problema :)
Simplemente, he descomentado la siguiente línea:

NameVirtualHost *:80

y el resto es historia!
El apache se ha levantado, ha cargado todos los hosts virtuales y funciona a las mil maravillas...