LVM: ¿es posible ampliar una partición en uso?

LVM: ¿es posible ampliar una partición en uso?

Tengo un disco en el que almaceno los datos de una BD. El disco está lleno ahora y quiero agregar otro disco a la máquina. Escuché que con LVM puedes agregar y extender particiones, así que me gustaría saber si es posible extender el disco completo actual (sin dañar sus datos actuales) agregando un disco nuevo.

Respuesta1

LVM facilita cambiar el tamaño de las particiones existentes y moverlas¹. Pero, en primer lugar, tienen que ser particiones LVM. Como su partición actual no está en LVM, tendrá que hacer las cosas manualmente. Todos los comandos de mi respuesta deben ejecutarse como root.

Prepara el nuevo disco

  1. Cree una partición GPT o MBR para uso de Linux. Utilice todo el disco a menos que desee compartirlo con otro sistema operativo. Llamaré a esa partición /dev/sdb1.
  2. hacer /dev/sdb1un LVMvolumen fisico, es decir, declara que esta parte del disco se utilizará para LVM.

    pvcreate /dev/sdb1
    
  3. Crear un LVMgrupo de volumenque contiene este volumen físico. Todos los volúmenes LVM forman parte de un grupo de volúmenes. Elija un nombre para ese grupo de volúmenes, por ejemplo alex_os.

    vgcreate alex_os /dev/sdb1
    
  4. Ahora tienes algo de espacio para usar LVM. Cree un volumen lógico LVM que sea lo suficientemente grande para los datos que desea almacenar en él. Puede usar todo el espacio si lo desea (a menos que desee reservar espacio para otro sistema de archivos o intercambiar espacio), pero dado que reducir un sistema de archivos es más difícil que expandirlo, es mejor si solo usa lo que cree que necesitará en el medio plazo más un margen de seguridad. Elija un nombre para el volumen lógico, por ejemplo, rootpara su sistema de archivos raíz, o dbsi va a almacenar su base de datos en él.

    lvcreate -L 40g -n root alex_os
    

Lo que debe hacer a continuación depende de si desea mover la partición de su sistema operativo al nuevo disco o utilizar el nuevo disco como almacenamiento adicional.

Utilice el nuevo disco para almacenamiento adicional

  1. Cree un sistema de archivos en el nuevo disco.

    mkfs.ext4 /dev/mapper/alex_os-root
    
  2. Registre el nuevo sistema de archivos para su uso. Elija un punto de montaje para ello. Puede ser un directorio existente o un directorio nuevo.

    • Si desea moverse, por ejemplo, /var/lib/mysqlal nuevo disco, conviértalo en el punto de montaje. Primero monte el nuevo sistema de archivos en una ubicación temporal, mueva los datos (¡Asegúrese de que los archivos no estén en uso mientras hace esto!)

      service mysql stop
      mount /dev/mapper/alex_os-db /mnt
      mv /var/lib/mysql/* /mnt
      mount --move /mnt /var/lib/mysql
      service mysql start
      

      Finalmente edite el archivo /etc/fstabpara agregar la siguiente línea después de la línea que contiene /la segunda columna:

      /dev/mapper/alex_os-db /var/lib/mysql ext4 errors=remount,ro 0 2
      
    • Si no desea vincular el nuevo disco a un servicio específico, móntelo en una ubicación diferente, por ejemplo, agregue la siguiente línea /etc/fstabdespués de la línea que contiene /la segunda columna:

      /dev/mapper/alex_os-db /media/data ext4 errors=remount,ro 0 2
      

      Luego cree el punto de montaje y monte el sistema de archivos:

      mkdir /media/data
      mount /media/data
      

      Ahora puedes mover cualquier dato que quieras poner ahí y utilizarlo.enlaces simbólicosdesde la ubicación donde el servicio espera los archivos. ¡Detenga el acceso de cualquier servicio a los archivos mientras los mueve! Por ejemplo, para mover el contenido /var/lib/mysqlal nuevo disco:

      service mysql stop
      mv /var/lib/mysql /media/data/
      ln -s /media/data/mysql /var/lib/mysql
      service mysql start
      

Transfiera el sistema al nuevo disco.

  1. Reinicie para rescatar medios (p. ej.SistemaRescueCD) para copiar los datos al nuevo disco. No puede realizar la copia desde el sistema en ejecución porque es imposible obtener una instantánea coherente². Para copiar los datos tienes dos posibilidades:

    • Cree un sistema de archivos y copie los archivos, por ejemplo, para un sistema de archivos ext4:

      mkfs.ext4 /dev/mapper/alex_os-root
      mount /dev/mapper/alex_os-root /media/alex_os-root
      cp -a /media/sda1 /media/alex_os-root
      
    • Copie la imagen del sistema de archivos, luego expándala para completarla, por ejemplo, para un sistema de archivos ext4:

      cat /dev/sda1 >/dev/mapper/alex_os-root
      resize2fs /dev/mapper/alex_os-root
      
  2. Haga que el nuevo disco sea de arranque. Exactamente cómo hacerlo depende de su distribución. Normalmente tendrás que instalar el gestor de arranque y reconstruir el initramfs. Por ejemplo, en Ubuntu, normalmente necesitarás algo como

    chroot /media/alex_os-root
    update-initramfs
    update-grub
    grub-install /dev/sdb
    

¹ Cambiar el tamaño del sistema de archivos en la partición es un asunto aparte; La mayoría de los sistemas de archivos modernos admiten la expansión en línea, pero no la reducción en línea.
² TécnicamentepuedeEs posible tener suerte cp -asi el sistema está inactivo, pero esa es una receta para el desastre; esto puede provocar errores retrasados ​​​​difíciles de rastrear. Una de las ventajas de LVM es que puedes usarlo para tomar una instantánea consistente. Algunos sistemas de archivos (zfs, btrfs) tienen su propia función de instantáneas, pero no ext4.

información relacionada