28 de abril de 2010

Flexibilizando el almacenamiento

Después de un tiempo de haber probado y utilizado el método de alocación de alamencamiento en disco duros denominado LVM (Logical Volume Management) bajo la implementación de linux LVM2 (Logical Volume Manager version 2) he decidido escribir una breve entrada de él y de como empecé y como lo uso en mis máquinas.

Mis inicios
Todo empezó un día de esos en los que gozando de tener tiempo libre me dedique a trastear con una de mis máquinas; si no recuerdo mal ese día tenía la intención de hacer un ghost del disco porque hacía tiempo del último que tenía y normalmente me gusta tener uno que no sea muy antiguo, sobre todo cuando has invertido bastante tiempo cultivando el sistema y no quieres encontrarte un día con que toda la siembra se ha ido a tomar por culo.
Ese día visité la página de System Rescue, supongo que para intentar descargar la última versión, porque la copia que debía tener era de hacía algún tiempo, y que mejor que antes de hacer un ghost, que descargarse la últimar versión. Navengando por la página me tope con que en ella hay unos pequeños manuales sobre ciertas utilidades de linux, y en los cuales se explican un poco que son y que hacen esas aplicaciones y como se utilizan, sin detallar llegar al detalle de todas sus funcionalidades, sino más bien dando un pincelada para su rápida utilización.

Una de estas guías es de LVM2, y con ella es donde me enteré que es y que posibilidades tiene, provocando en mí un gran deseo por empezar a utilizar esta utilidad en mis máquinas e inducido por esa obsesión que tengo en siempre de pensar en el futuro y anticiparme a él, pensando y valorando las cosas antes de hacerlas, es decir no caer en lo de "pan para hoy y hambre para mañana".

Los primeros pasos
A raíz de esto, investigué un poco más sobre LVM2, sin llegar a leerme toda la documentación ya que el tiempo no me da para todo lo que me gustaría saber y priorizo en función de las necesidades, y en el caso de LVM2, por ahora solo lo he podido poner en práctica a nivel hogareño, no a nivel empresarial, ya que tampoco en mi empresa es que vayan a darme tiempo explicito para dedicarle él ni tiempo para implantarlo y por mi parte esto ya no me cabe en las numerosas horas extras, que sinceramente no repercuten positivamente en mis cuentas bancarias, ya que entonce podría poner un saco bajo la mesa del despacho, pero esto son otros temas que no tienen que ver mucho con este post.

Después de haber indagado un poco más en su funcionamiento, empecé a probar en el sistema que por aquel entonces utilizaba, un Ubuntu 8.04 Hardy Heron, utilizando un disco que tenía poca información, la cual volqué a otra partición y empecé a particionar el disco para luego empezar a jugar creando los volúmenes fisicos (Physical Volumes [PV]), los grupos de volúmenes (Volume Group [VG]) y finalmente los volúmenes lógicos (Logical Volume [LV]).
Durante mis juegos experimenté con varios sistemas de ficheros, y entre ellos NTFS, para ver que también funcionaba; también experimenté lo de crear snapshots y ver que realmente funcionaban.

Convivendo juntos
Después de ver que todo funcionaba como había leído y que eso me iba a permitir flexibilizar mi sistema, hace un poco menos de tiempo he empezado a convivir junto a él, aprovechando los últimos despliegues que he hecho en mis máquinas junto a la distribución Gentoo, permitiendo flexibilizar el almacenamiento de mis máquinas.

No he entrado en utilizar LVM2 sobre la partición root, por ahora he querido mantener una partición de disco normal para albergar los ficheros del sistema operativo y de las aplicaciones y lo mismo para la partición de arranque (boot); porque aunque pueden crecer, sobre todo más bien en el caso de la root, debido a la instalación de múltiples utilidades; he creído que con el espacio de disco que tengo en las máquinas actualmente voy sobrado para tener una partición adecuadamente grande que me permita albergar el sistema operativo y todas las utilidades que le acabaré metiendo con el paso de los días y si crece desmesuradamente empezare a pensar que algo me está contaminando el sistema (virus, intrusiones, etc).

Mi utilización del LVM2 ha sido para albergar el home, permitiéndome redimensionar el tamaño de este árbol de directorios en función de la información, personal, que vaya almacenando, algo bastante difícil de prever y a la vez tengo la posibilidad de crear snapshots cuando crea conveniente hacerlo, por ejemplo, cuando voy a hacer una modificación importante o una reorganización considerable, sobre todo cuando en ella se ve implicada información de trabajo (esto no quiere decir que no haga copias de seguridad, estas también las hago). Además en el home también almaceno los disco (virtuales) de mis máquinas virtuales, y aunque intento utilizar un disco independiente para almacenarlas, debido al tamaño que tengo como disco independiente el cual difícilmente voy a ocupar completamente con estos, el LVM me da la posibilidad de utilizar parte de él para almacenar más información personal, en el caso que me haga falta, sin tener que ubicar la en otro directorio; simplemente redimensiono el grupo lógico donde albergo la información personal y de esta manera puedo mantener la organización de directorios que he utilizado hasta el momento.

Conclusiones
LVM2 me permite flexibilizar el almacenamiento de mis máquinas, asignando y reasignando las particiones de los discos físicos que tengo en mi máquina o los futuros que pueda meter, a los distintos directorios de información los cuales gestiono con grupos y volúmenes lógicos.


Detallando esta experiencia creo que alguien puede valorar y ayudarle a razonar si le puede ser útil o no utilizar LVM2 en su sistemas hogareño, ya que a nivel empresarial creo que el juego que da este sistema está más que justificado.

Hasta la próxima enfermos.

5 de abril de 2010

Gentoo: Domesticando a la criatura (2/2)

conjuntoEntradas() {
  Gentoo: Domesticando a la criatura (2/2)
}

Configurando el kernel

Este es uno de los puntos clave el proceso de instalación y dónde parece que estemos en el punto más clave de la domesticación.
Aunque el kernel va a ser el centro de nuestro de sistema, ya que el funcionamiento básico del sistema y el resto de parte del sistema depende de éste, para mí no es el único, ya que el resto de configuraciones del proceso de instalación comentadas en el post 1, de esta serie, son de vital importancia a la hora de compilar y optimizar las múltiples herramientas que día día vamos ir metiendo le a la criatura y vamos a usarlas con cierta regularidad. No obstante el kernel coge mayor relevancia cuando nos encontramos configurándolo para una máquina con una función específica como podría ser un servidor con un rol determinado, pero en mi caso actual, es para una máquina de trabajo, así que lo que necesito son las herramientas que voy a ir necesitando para poder trabajar, experimentar y hacer el capullo el día a día.

Dejando de lado mis creencias, me leo el capítulo del handbook dedicado a la configuración del kernel, claro está ignorando la alternativa de utilizar genkernel.
Antes de contaros mis aventuras entre el enorme mundo de las opciones del kernel, quiero hacer especial mención a la frase: "Manually configuring a kernel is often seen as the most difficult procedure a Linux user ever has to perform. Nothing is less true -- after configuring a couple of kernels you don't even remember that it was difficult ;)", y solo indicar que el tío que ha escrito esto tiene mucha razón, después de mi primera configuración ahora me cuesta bastante poco reconfigurarlo para amoldarlo a mis necesidades.
Bueno vamos al lío, hacemos lo que dicen las instrucciones, es decir compilamos el menú de configuración y una vez dentro de él activamos, como buenos niños, lo que nos indican que es básico para que nuestro sistema, por lo menos, arranque. Posteriormente empecé a mirar casi de una en una las múltiples opciones que se pueden activar o modularizar o desactivar y por supuesto activando las en el caso que vea que carguen algún driver de mi hardware.
A lo largo de mi andadura por el mundo de las opciones del kernel, me veo obligado a, cuando no sé de que puñetas me estaban hablando, documentarme un poco para no ignorar esa opción a la ligera y entre esto y algunos aspectos de redes que ya sé de que iban a raíz de documentarme cuando configuré los trunks en las empresa y descartando las opciones que hacen referencia a hardware muy concreto, por ejemplo de sistemas embedidos, no me costo mucho más de una tarde y media, enteras, en hacer mi primera configuración después de varios años de haber tocado esta distribución y no haber vuelto a jugar, desde entonces, con un kernel de Linux.

Bueno finalmente configuré mi kernel y aprendí varias cosas, entre ellas:
  • Pinceladas de ciertos aspectos de la arquitectura de un sistema Linux actual, a raíz de documentarme con ciertas opciones que de un inicio no tenía ni p... idea de que iban.
  • El gran número de opciones que tiene el kernel 2.6 de Linux y gracias a ellas poder optimizar tu sistema según tus necesidades.
  • Mientras lo configuraba me tuve que enterar de que implicaciones tenía modularizar o activar directamente, para tomar la mejor decisión; sobre este hecho leía que habían detractores de cada una de las opciones, unos dicen que mejor modularizar porque así tu Kernel ocupa menos memoria RAM y por otra parte los detractores de modularizar dicen que cargando los módulos al no estar contiguos en el espacio en memoria ocupado por el kernel (cargado durante el inicio del sistema) los accesos son más lentos, así que yo he decidido activar todo lo que quiero que siempre esté cargado porque a estas alturas con la de RAM que les metemos a los sistemas no me va de que el kernel ocupe unos cuantos kilobytes más y modularizar lo que voy a usar de manera esporádica así solo cargo cuando lo necesite no siempre. ¿de cual sois vosotros detractores?
Hasta la próxima enfermos.