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
- 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
. hacer
/dev/sdb1
un LVMvolumen fisico, es decir, declara que esta parte del disco se utilizará para LVM.pvcreate /dev/sdb1
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
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,
root
para su sistema de archivos raíz, odb
si 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
Cree un sistema de archivos en el nuevo disco.
mkfs.ext4 /dev/mapper/alex_os-root
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/mysql
al 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/fstab
para 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/fstab
despué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/mysql
al 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.
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
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 -a
si 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.