'¿A quién quieres más, a mamá o a papá?' aka RAID vs LVM (1)

Publicado el 17 julio 2015 por Ferlanero @ferlanero
Muy buenas. Ya hacía tiempo pero espero que este nuevo artículo os sirva de algo. Aviso antes de empezar que será bastante técnico y muy enfocado a mantenedores de empresas, colegios... infraestructuras cliente-servidor de esas que nos facilitan tanto la vida que cuando fallan nos ponen de los nervios, pero que como filosofía sobre cómo nos planteamos la maquinaria puede ser interesante.
Como tengo por costumbre, vamos a plantear el escenario... para quien haya seguido leyendo después del primer párrafo y no haya huído (creedme, yo también lo hubiera hecho de haber podido, pero a la fuerza ahorcan).
PLANTEAMIENTO.
Empezamos. Imaginemos esa torre que tenemos en casa -alguno aún la tiene, ¿verdad?- donde nos queda espacio para añadir discos duros (¡Sí, queridos niños, el abuelo os lo confirma! ¡Hubo una época, allá en la noche de los tiempos donde las torres tenían espacio para trabajar y hacer ampliaciones, no hacía falta trabajar con nanosondas y herramientas de cirujano y relojero! Se podían añadir y... ¡hasta cambiar piezas porque no estaba todo soldado y compactado! A veces, con las vibraciones las piezas se aflojaban pero como siempre: fácil de desmontar, fácil de reparar) y el disco duro -de alta capacidad por sí mismo- está reventando por toda esa documentación ESTRICTAMENTE PRIVADA Y AUTOGENERADA Y, EN CUALQUIER CASO, SIEMPRE LEGAL que tenemos. (Emmmm sí, vale, divago). Y, naturalmente, el sistema operativo es un Linux, preferentemente nuestro Ubuntu 14.04 para facilitarnos la vida. Añadimos un disco duro de esos minúsculos que tenemos por ahí (250 GB, que ya no se encuentran) luego otro cuando se sobrecarga... ya captáis la línea, vaya.
Ahora bien, hemos de buscar algo. Asumamos cuatro discos en servicio ¿Dónde está? ¿En el Home original? ¿En una partición de datos? ¿En cual, en la del sda, en el sdb, en el c? ¿Os dáis cuenta de dónde está el problema (Si esto fuera un windows hablariamos de las unidades c:, d:, e:... y supongo que se podrían hacer cosas parecidas a las que luego propondré, pero no lo he probado... ni tengo intención de hacerlo).
SOLUCIÓN HABITUAL.
La solución normal en nuestro caso -dado que no solemos temer trastear- es un clonezilla, disco clonado a otro más grande, aumento de particiones con gparted y tira. El disco duro viejo acaba como copia de seguridad criando polvo en alguna parte, o se da a alguien, ... multitud de opciones.
 
¿Y SI ES UN SERVIDOR?
Exacto. ¿Qué pasa entonces? Porque los servidores -de contenidos, de usuarios,... requieren un mantenimiento y por muy bien que se haga y aunque depures cada cierto tiempo usuarios, contenidos y otras cosas, con el tiempo se tiende a rellenar completamente todo el espacio disponible y suele pasar cuando no puedes permitirte el tiempo necesario para el procedimiento estándard de mantenimiento: Dos unidades más grandes y, generalmente, idénticas (porque están montadas en RAID para mayor seguridad, luego lo explico), parar el servidor, copiar TODOS los datos (y no solemos hablar de directorios ligeros precisamente), remontar, reactivar... y rezar muy fuerte para que todo funcione bien a la primera porque tienes a todo el claustro, alumnado y junta echándote el aliento a la nuca porque todo está paralizado. Tardes alargadas hasta las once de la noche, fines de semana de pasar por un cable USB 500 GB de datos,... sin que nadie hable de compensaciones horarias, de sueldo o simplemente de agradecimiento; el principio básico es que eso lo haces gratis et amore y que ya está compensado con la reducción horaria... la cual no te da abasto para el mantenimiento normal. Dejadme sólo que me voy a llorar por las esquinas un minuto.
...
Bueno. ya está, no ha pasado nada.
A partir de ahora sigo desde el ejemplo del servidor, pero el principio es válido para los dos ejemplos.
¿Que es el RAID? Hay varias posibilidades. Básicamente consiste en que hay dos discos duros idénticos, uno de trabajo y otro constantemente sincronizado con él para conseguir que, si el primero da cualquier error, el segundo pase los datos necesarios y se pueda seguir adelante. Es mucho más complejo, pero con esto ya nos entendemos.
El RAID me da seguridad, pero no me solventa el problema del dimensionamiento; el mismo equipo que a principio de curso está perfectamente dimensionado y donde sobra espacio a final de curso no permite sincronizar ownclouds, dropbox y megas porque está totalmente saturado... y todo lo que hay es de trabajo así que las peticiones de vaciado al claustro son amablemente -o no- obviadas pues todo es necesario. A eso súmale que los nuevos discos duros, para tener margen, los buscas de tres TB y cuándo se lo sugieres a la secretaría y ven el presupuesto te lo deniegan, pues están acostumbrados a que trampees con piezas viejas y reutilizadas hasta que sólo sirven de posavasos y, por tanto, a gastos reducidos.
DESCUBRIENDO LVM.
En un experimento -un monstruo de Frankenstein donde cada pieza era de su padre y de su madre y el arranque era aleatorio porque algunas de ellas se peleaban por la prioridad en la activación y donde necesitaba un TB de disco que no tenía- descubrí un software muy muy divertido: LVM, Logical Volume Manager (1 o 2, tanto me da en estos momentos) que está en todos los sistemas linux, si no en los instaladores si en los repositorios una vez instalado el sistema... o instalado en la live antes de lanzar el instalador para poder utilizarlo. Sí, vamos embocando el tema. Expongo ahora el funcionamiento de LVM:
  1. Tenemos dos discos duros; por tanto, dos superficies físicas. Hasta aquí todo bien.
  2. Estas superficies se pueden estructurar de múltiples maneras con los sistemas de ficheros correspondientes; es decir, como si añadiéramos una capa -lógica- sobre la inicial -física-. Estas capas son identificadas por nosotros como particiones y por el sistema como /dev/sda1, 2, 3,... etc (no pienso entrar en los UUID, gracias).
  3. Con el LVM podemos añadir un capa lógica con sistema de ficheros LVM-PV (Logical Volume Manager - Physical Volume), en cualquier lugar y parte o todo el disco duro. O varios discos duros.
  4. Aquí nos aseguramos de tener en servicio (si no, se instala en unos segundos) el system-config-lvm, con synaptics o con sudo apt-get install system-config-lvm. Se puede gestionar por consola, pero en este caso es fácil liarse con los comandos, con desastrosos efectos. Os paso una captura para que podáis ir familiarizándoos con él.
  5. Ahora podemos activar sobre la capa PV -segunda- una tercera capa -lógica- con el sistema de ficheros que nos apetezca -por decir algo habitual, ext4- haciendo las particiones igual que si fuera un gparted normal y corriente. Éstas nuevas particiones no se montan como /dev/sd... como es normal, sino que se montan en /dev/mapper/...los-nombres-que-les hayamos-dado. Lo mostraremos, paso a paso, en las siguientes entradas porque es largo, pero la partición con la que vamos a jugar ha de ser configurada como lvm. Lo que veríamos en el disco, antes de generar las particiones que nos faltan, sería esto:
  6. Y  ahora diréis: "De acuerdo, y ahora que nos has complicado la instalación, con lo sencilla que era, ¿para qué me sirve esto?" Pues, por ejemplo, porque se pueden montar uno tras otro Y DE FORMA QUE EL SISTEMA LOS VEA COMO UN ÚNICO DISCO hasta 256 discos físicamente diferentes.
Sí, exactamente eso. Y en ese espacio con gran capacidad de crecimiento, cuando la partición de los Homes, o la de datos, o ese owncloud de centro que está totalmente saturado tu puedes añadir otro disco nuevo a la matriz del LVM y extender la partición saturada ocupando todo el nuevo disco. De repente pasas a tener 250, 500, ... n GB más limpios en esa partición saturada sin hacer enlaces, sin tener que buscar en qué disco es dónde está ese dato perdido e importantísmo...
Como esto se hace muy largo, seguiremos con el proceso de configuración en otra entrada. Hasta luego.