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.


8 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  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?

    1.    David-G dijo

      Se trata que las dos particiones se formatean, entonces tienes que hacer un backup antes de proceder a unirlas (recomiendo deja-dup / sudo snap install deja-dup –classic (esta para la versión estable a traves de snap) / sudo apt install deja-dup).
      Espero que te haya servido de ayuda.

  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

  4.   Juan José López Maglione dijo

    He intentado seguir este tutorial, pero me encontré con que LVM ya no viene instalada por defecto en Debian 9.5.0. Y al querer instalarlo, con [sudo apt install lvm2], la aplicación se instala, pero al querer activarla, no se activa. Da el siguiente error:
    $ sudo service lvm2 start
    Failed to start lvm2.service: Unit lvm2.service is masked.

  5.   yoel - mr. suporty dijo

    Buenas tardes.
    interesante artículo.
    tengo una duda, hasta cuantos discos puedes llegar a utilizar como una unica unidad? es decir, si tengo 4 discos, los podria unir los 4 como una unica unidad?

    gracias de antemano (:

    mr. suporty

  6.   Manuel Nevado Santos dijo

    Hola:

    Voy a montar un sobremesa totalmente nuevo. Sólo quiero Ubuntu 18.04 como sistema operativo. Voy a poner un Western Digital Black SN750 NVMe 500GB SSD M.2 PCI Express 3.0, que se supone muy rápido. Pero además, tengo por casa un Samsung 860 EVO Basic SSD 500GB SATA3, que compré en su momento y al final no utilicé, pensando en este momento de sobremesa nuevo. Quiero añadirlo también. He leído tu artículo, y me gustaría, si no es mucha molestia, que me aconsejaras en cuanto a qué particiones crear y cómo, para obtener un buen rendimiento. Gracias.

  7.   Pedro dijo

    Hola, gracias por tu valioso aporte, no sé mucho de linux, acabo de montar un servidor con 2 discos duros de estado sólido de 980gb, hice una unidad lógica, pero veo que linux creo una partición de 200gb la cual ya estoy llenando y no sé como activar el resto de espacio que me dice es 1.7 Tb, ojala puedas ayudarme como activarla y para que la pueda usar para audio, estoy la interfaz webmin reciente. Saludos.