LVM: fusionar discos duros como si solo fuesen uno

LVM ejemplos de uso

GNU Linux es extremadamente versátil, eso nadie lo duda. Pero quizás algunos usuarios no conozcan algunas herramientas o posibilidades que nos ofrece y que podría facilitarnos el día a día o hacer cosas increíbles. En este artículo hablaremos de LVM (Logical Volume Manager), una herramienta que, aunque en un inicio no fue creada para Linux, después se portó y ahora los linuxeros pueden disfrutar de sus posibilidades.

LVM es un gestor de volúmenes lógicos como su propio nombre indica, inicialmente fue creado por Heinz Mauelshagen en 1998 para el sistema operativo HP-UX, el UNIX de HP. Pero después sería implementado en el kernel Linux. Con él se puede redimensionar grupos lógicos, así como volúmenes lógicos, instantáneas de sólo lectura, gestionar RAID, etc. Pero la característica que nos interesa para este artículo es la de fusionar varios discos duros.

LVM puede “ver” grupos de discos y particiones como un todo en vez de manejar muchos espacios independientes. Por eso podemos unir varias particiones como una sola, amplicar ciertas particiones en otros discos físicos diferentes, jugar con varios discos en modo RAID, añadir discos duros “en caliente” o “hot swap”, sin olvidar la función “snapshot” para crear backups.

¿Cómo puede hacer esto? Pues básicamente gracias al manejo de tres conceptos:

  • PV (Phisical Volume): son los volúmenes físicos, es decir, discos duros o particiones de un equipo.
  • VG (Volume Group): grupo volumen, es el área donde se juntan los PVs y VLs.
  • LV (Logical Volume): volúmenes lógicos o dispositivos donde se pueden crear sistemas de ficheros o FS.

Para trabajar con LVM, podemos trabajar desde el terminal con tres herramientas principales:

  • pvcreate: puede crear volúmenes físicos, uniendo varios discos duros oparticiones distintas. Por ejemplo, vamos a unir la partición /dev/sda3 y /dev/sdb1:

pvcreate /dev/sda3 /dev/sdb1

  • vgcreate: puede crear grupos de volúmenes, es decir, que particiones o discos físicos pertenezcan a un grupo. Por ejemplo, para crear un grupo llamado “datos”:

vgcreate datos /dev/sdb1

  • lvcreate: define los volúmenes lógicos que estarán dentro del grupo. Por ejemplo, imagina que quieres crear un volumen llamado “nuevo” dentro del grupo “datos” y de 8GB de tamaño:

lvcreate --name nuevo --size 8G datos

Vamos a ver un ejemplo práctico, imagina que tienes un equipo con un disco duro de x GB y decides ampliar la capacidad incluyendo otro disco duro. En ese caso, el sistema operativo lo trata como tal, otro nuevo disco duro en el que debes crear una o varias particiones en él para darle uso. Voy a ser aun más concreto, imagina que tu disco duro primero es de 120GB y que tienes una serie de particiones, entre ellas /home que ocupa 80GB de esos 120 y se llama /dev/sda3, siendo /dev/sda1 la partición root / y /dev/sda2 la SWAP…

Ahora te encuentras con tu nuevo disco duro con 500GB (/dev/sdb1) de espacio adicional, pero en vez de crear otra partición, deseas que tu /home tenga 580GB. Esto es posible con LVM, haciendo que /dev/sda y /dev/sdb sean vistos por el sistema operativo como un solo dispositivo, una sola partición que se encuentra físicamente en dos discos duros diferentes. Y esto solo es una pequeña posibilidad de las tantas que permite LVM y se haría así:

—ANTES DE NADA, HAZ UNA COPIA DE SEGURIDAD DE /HOME, YA QUE SE FORMATEARÁ —


sudo -i

unmount /dev/sda3

unmount /dev/sdb1

vgcreate lvm /dev/sda3 /dev/sdb1

modprobe dm-mod

lvcreate -n home -l 100% VG lvm

mkfs.ext4 /dev/lvm/home

mount /dev/lvm/home /home

Solo falta editar el fichero /etc/fstab par aque no monte las praticiones /dev/sda3 y /dev/sdb1 al iniciar el sistema, en su defecto, que monte /dev/lvm/home /home. Si tecleamos lo siguiente (usa gedit, nano o el editor de texto que quieras…):


sudo gedit /etc/fstab

Podemos ver el contenido para editarlo, veremos que hay comentarios # y otras líneas para montar las particiones que actualmente tenemos en nuestra distro. ¡Ojo, los espacios no son espacios normales, cuando edites, usa TAB para espaciar el contenido! Veras que puede poner algo como UUID=XXX-XXX-XXX-XXX, pero se puede sutituir este galimatías por /dev/sdx sin problemas… es decir, por el nombre de la partición tal cual. En nuestro caso tendrías que quitar (o mejor que borrar, poner un # al inicio de la línea para hacerla un comentario, así si hay algún problema o no funciona, podríamos editar fstab y simplemente borraríamos nuestra nueva línea y quitaríamos los # para que vuelva a la configuración previa…) las dos líneas correspondientes a /dev/sda3 y /dev/sdb1 y añadir:

/dev/lvm/home /home ext4 defaults 0 1

Reinicia y ahora ya tendríamos un /home de 580GB, uniendo los dos discos duros como si fuesen solo uno. POr supuesto puedes variar los parámetros a tu gusto, usar las particiones que se te antojen, el FS que quieras (aquí hemos usado EXT4, pero puedes usar el que necesites), etc. Por favor, deja tus mensajes, dudas, comentarios, etc.



Isaac P. E.

Soy un apasionado de la tecnología y me encanta compartir, pero sobre todo aprender cada día más. Me gusta todo lo que tenga que ver con la ciencia y leer sobre esta temática. En mi tiempo libre escribo un libro sobre microprocesadores, mi tema favorito. También me gusta realizar diseños electrónicos en Basic Stamp, Arduino, además me encanta jugar con Linux. Algunos de mis estudios son: - Módulo superior de electrónica y microelectrónica. - Módulo de domótica. - Experto en gestión medioambiental en la empresa. - Técnico en prevención en la industria. - Técnico en montaje y reparación de ordenadores. - Técnico en reparación de portátiles. - Técnico en redes informáticas. - Curso GNU/Linux. Otros conocimientos: inglés, ofimática, programación en diversos lenguajes (C, KOP, VHDL, PBASIC, Arduino y HTML), conocimientos avanzados de Windows y Linux,...

3 comentarios

  1.   Jorge dijo

    Hola.
    Muy buen tutorial, pero creon que no hacen mención de que debemos hacer un respaldo de información, ya que al unir las particiones de los discos /home, están formateando ambos discos: mkfs.ext4 /dev/lvm/home, como le haces para no borrar la información que ya tienes en la primera particion /home para obtener los mismos resultados?

  2.   Saul dijo

    En mi anterior laptop tenía un disco duro con bastantes sectores dañados distribuidos por todo el mismo. Hice particiones de las secciones buenas y malas (al rededor de 16 particiones). Las secciones buenas las uní como volumen de grupo con LVM y sobre esa nueva “unidad de almacenamiento” instalé mi fedora sin mayor inconveniente. Con LVM hice usable ese disco duro que de otro modo iría a la basura, me ahorró algunos pesos.

  3.   Nestor R Arango dijo

    Gracias por la información, es algo que necesitaba hacer. Gracias

Escribe un comentario