Como comentábamos en nuestro post anterior, en el que utilizábamos la aplicación Gparted para que Linux interpretara el redimensionamiento de discos duros realizado desde Cloudbuilder Next, si queremos prescindir de reiniciar el servidor para que su nueva capacidad esté operativa, necesitamos emplear algo de código. En este artículo, explicamos cómo hacerlo con las distribuciones Ubuntu y CentOS y te recordamos el proceso en Windows para redimensionar los discos duros de los Servidores Cloud.
Antes de seguir avanzando y meternos con el código, te recordamos que el primer paso es modificar la capacidad del almacenamiento del Servidor desde el Panel de Control de Cloudbuilder Next.
A continuación, explicamos cómo conseguir que el sistema operativo Linux interprete el nuevo tamaño asignado al disco duro sin reiniciar los servidores. Esta opción es más compleja ya que hay que ejecutar una serie de comandos, conectados por SSH al servidor en cuestión, así que vamos a describir todo este proceso por medio de una serie de comandos en las distribuciones Ubuntu y CentOS. Sin embargo, es importante darse cuenta que en los casos particulares de cada máquina puedan cambiar nombres de discos y volúmenes.
Redimensionar discos duros en Ubuntu
Vamos a comenzar viendo la secuencia de comandos de consola que nos permitirá reorganizar las particiones en una distribución Ubuntu:
Comprobamos el identificador del disco usando el comando:
ls /sys/class/scsi_disk/
Será algo como 2:0:0:0, 3:0:0:0, 4:0:0:0. La salida la podemos ver en la siguiente imagen.
Hacemos un escaneo del disco, usando ese identificador:
echo 1 > /sys/class/scsi_device/4:0:0:0/device/rescan
En el comando anterior, ten cuenta que probablemente necesitarás cambiar el identificador 4:0:0:0 por el que te haya aparecido al hacer ls /sys/class/scsi_disk/.
Ahora vamos a hacer un análisis para comprobar discos, particiones y tamaños. Esto se consigue con fdisk.
fdisk -l
Deberíamos observar que el tamaño de los discos ya se han actualizado y qué particiones tenemos creadas en este momento, junto con sus dimensiones.
Ahora vamos a crear una partición con el espacio no particionado que se ha generado en el disco como consecuencia de la redimensión. Para ello, lanzamos el comando:
fdisk /dev/sda
Este comando nos abre una interfaz de menú capaz de recibir varias instrucciones para administrar las particiones. Tenemos que ir introduciendo uno a uno las distintas opciones de menú por medio de su inicial. Serán las siguientes:
- n # Nueva partición.
- p # Primaria.
- 3 # Número de la partición.
- Enter # Primer sector, por defecto el primero libre.
- Enter # Último sector, por defecto el último del disco.
- w # Escribir cambios.
Una vez creada esta partición, tenemos que marcarla como tipo Linux LVM.
Tenemos que volver a lanzar el menú anterior con el comando:
fdisk /dev/sda
Y vamos usando las siguientes opciones de menú:
- t #Cambiar tipo de partición.
- 3 # Número de partición.
- 8e # Tipo LVM.
- w # Escribir cambios.
El siguiente paso consiste en escanear las particiones de disco para detectar los cambios.
apt update -yy apt install -yy parted partprobe /dev/sda
Ahora usaremos LVM, primero creando el volumen físico.
pvcreate /dev/sda3
Luego añadimos este volumen al grupo de volúmenes, en este caso se llama vg00.
vgextend vg00 /dev/sda3
Redimensionamos el volumen lógico, vg00-lv01 en este caso, para ocupar todo el espacio libre.
lvextend -l +100%FREE /dev/mapper/vg00-lv01
Acabamos redimensionando el sistema de ficheros del volumen lógico.
resize2fs /dev/mapper/vg00-lv01
Esta secuencia de comandos se puede ver resumida en la siguiente imagen:Solo nos queda comprobar el estado de las particiones del disco, para ver cómo ha quedado nuestra configuración. Podemos hacerlo mediante el comando que ya conocemos:
fdisk -l
Redimensionar particiones en CentOS
Ahora vamos a repetir toda esta secuencia de comandos sobre una distribución CentOS. El proceso es muy similar al que hemos señalado para Ubuntu, con algunas pequeñas modificaciones. Lo más importante es fijarse en la salida de los comandos para saber cuáles son los discos que tenemos actualmente, sus nombres, particiones, etc., de modo que podamos personalizar las instrucciones a nuestro caso particular.
Como el proceso es prácticamente el mismo que para Ubuntu, vamos a resumir los pasos haciendo mayor hincapié en las diferencias que nos podemos encontrar entre uno y otro sistema.
El primer paso es comprobar el identificador del disco.
ls /sys/class/scsi_disk/
Como puedes ver en la imagen, en nuestro caso es 2:0:0:0.
Hacemos un escaneo del disco, usando ese identificador:
echo 1 > /sys/class/scsi_device/2:0:0:0/device/rescan
Ejecutamos el análisis de particiones, del mismo modo que en Ubuntu, con fdisk.
fdisk -l
En la parte de arriba vemos que los discos ya tienen el tamaño que hemos asignado en el panel de control de Cloud Builder. Sin embargo, la partición principal todavía tiene el tamaño antiguo.
Creamos una partición con el espacio no particionado:
fdisk /dev/sda
Todo el proceso de creación de estas particiones es el mismo que el explicado más arriba para Ubuntu. En resumen, los comandos que se necesita ir indicando son los siguientes:
- n # Nueva partición.
- p # Primaria.
- 3 # Número de la partición.
- Enter # Primer sector, por defecto el primero libre.
- Enter # Último sector, por defecto el último del disco.
- w # Escribir cambios.
Ahora debemos lanzar de nuevo este proceso para marcar la partición como tipo Linux LVM.
fdisk /dev/sda
Introducimos las siguientes opciones de menú:
- t # Cambiar tipo de partición.
- 3 # Número de partición.
- 8e # Tipo LVM.
- w # Escribir cambios.
Para el paso de escanear las particiones de disco, con objetivo de detectar los cambios, CentOS ya viene con el programa Parted instalado, así que simplemente tenemos que hacer lo siguiente:
partprobe /dev/sda
Recuerda que, si este comando no está disponible, probablemente lo tengas que instalar usando Yum: yum install parted.
Ahora usaremos LVM, primero creando el volumen físico.
pvcreate /dev/sda3
Ahora añadimos este volumen al grupo de volúmenes. Para este caso te tienes que fijar especialmente en el nombre del volumen, que pudimos ver con fdisk -l. En nuestra máquina se llama centos, tal y como aparece marcado en la siguiente imagen.Así que escribimos:
vgextend centos /dev/sda3
Estamos terminando. Pero antes debemos redimensionar el volumen lógico, centos-root en este caso, para ocupar todo el espacio libre.
lvextend -l +100%FREE /dev/mapper/centos-root
Redimensionamos el volumen lógico, centos-root en este caso, para ocupar el espacio libre.
xfs_growfs /dev/mapper/centos-root
Terminado el proceso, podemos comprobar el estado de las particiones del disco, usando de nuevo el comando fdisk.
fdisk -l
El resultado que encontraremos será similar al de la imagen siguiente, donde se puede comprobar que la partición principal tiene el tamaño del disco, una vez agregado el nuevo espacio asignado.