Expansión de discos duros virtuales en máquinas virtuales Linux
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
En este artículo se describe la expansión de discos de sistema operativo y discos de datos para una máquina virtual (VM) de Linux. Tiene la opción de agregar discos de datos para proporcionar espacio de almacenamiento adicional, y también puede expandir un disco de datos existente. Normalmente, el tamaño predeterminado del disco duro virtual del sistema operativo (SO) es de 30 GB en una VM Linux en Azure. En este artículo se describe la expansión de discos del sistema operativo o discos de datos. No se puede expandir el tamaño de los volúmenes seccionados.
Un disco de sistema operativo tiene una capacidad máxima de 4,095 GiB. Sin embargo, muchos sistemas operativos están particionados con un registro de arranque maestro (MBR) de forma predeterminada. MBR limita el tamaño utilizable a 2 TiB. Si necesita más de 2 TiB, considere la posibilidad de conectar discos de datos para el almacenamiento de datos. Si necesita almacenar datos en el disco del sistema operativo y necesita espacio extra, conviértalo a una tabla de particiones GUID (GPT).
Advertencia
Asegúrese siempre de que el sistema de archivos está en buen estado y de que el tipo de tabla de partición de disco (GPT o MBR) admite el nuevo tamaño, y no olvide hacer una copia de seguridad de los datos antes de realizar operaciones de expansión de disco. Para más información, consulte el inicio rápido de Azure Backup.
Identificación del objeto de disco de datos de Azure en el sistema operativo
En el caso de expandir un disco de datos cuando hay varios discos de datos presentes en la máquina virtual, puede ser difícil relacionar los LUN de Azure con los dispositivos Linux. Si el disco del sistema operativo necesita expansión, se etiqueta claramente en Azure Portal como disco del sistema operativo.
Empiece por identificar la relación entre el uso del disco, el punto de montaje y el dispositivo, con el comando df
.
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 97G 1.8G 95G 2% /
<truncated>
/dev/sdd1 ext4 32G 30G 727M 98% /opt/db/data
/dev/sde1 ext4 32G 49M 30G 1% /opt/db/log
Aquí podemos ver, por ejemplo, que el sistema de archivos /opt/db/data
está casi lleno, y se encuentra en la partición /dev/sdd1
. La salida de df
muestra la ruta de acceso del dispositivo si el disco está montado usando la ruta del dispositivo o el UUID (preferido) en el fstab. Tome nota también de la columna Tipo, que indica el formato del sistema de archivos. El formato es importante más adelante.
Ahora busque el LUN que se correlaciona con /dev/sdd
examinando el contenido de /dev/disk/azure/scsi1
. La salida del siguiente comando ls
muestra que el dispositivo conocido como /dev/sdd
dentro del sistema operativo Linux se encuentra en LUN1 al mirar en Azure Portal.
sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep 9 21:54 ./
drwxr-xr-x. 4 root root 80 Sep 9 21:48 ../
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root 13 Sep 9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root 12 Sep 9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root 13 Sep 9 21:54 lun2-part1 -> ../../../sde1
Expansión de un disco administrado de Azure
Expandir sin tiempo de inactividad
Puede expandir los discos administrados sin desasignar la máquina virtual. La configuración de caché del host del disco no cambia si puede expandir o no un disco de datos sin desasignar la máquina virtual.
Esta característica tiene las siguientes limitaciones:
- Solo se admite para discos de datos.
- Si un disco HDD estándar, SSD estándar o SSD prémium es de 4 TiB o menos, desasigne la máquina virtual y desasocie el disco antes de expandirlo a más de 4 TiB. Si uno de esos tipos de disco ya es mayor que 4 TiB, puede expandirlo sin desasignar la máquina virtual ni desasociar el disco. Esto no se aplica discos SSD prémium v2 o Ultra Disks.
- No es compatible con discos compartidos.
- Instale y use una de las opciones siguientes:
- La CLI de Azure más reciente
- El módulo de Azure PowerShell más reciente
- Azure Portal
- O bien una plantilla de Azure Resource Manager con una versión de API que sea
2021-04-01
o posterior.
- No está disponible en algunas máquinas virtuales clásicas. Use este script para obtener una lista de las SKU de máquina virtual clásica que admiten la expansión sin tiempo de inactividad.
Expansión con disco Ultra y SSD prémium v2
La expansión de discos Ultra y discos SSD prémium v2 tiene las siguientes limitaciones adicionales:
- No se puede ampliar un disco mientras también se está realizando una copia de datos en segundo plano en ese disco, como cuando se está hidratando un disco a partir de instantáneas.
- No se puede expandir una máquina virtual que use controladores NVMe para Ultra Disks o discos SSD prémium v2 sin tiempo de inactividad.
Importante
Espere hasta diez minutos para que se refleje el tamaño correcto en las máquinas virtuales Windows y Linux. Para las máquinas virtuales Linux, debe realizar una función de repetición de examen de Linux. Para las máquinas virtuales Windows que no tengan carga de trabajo, debe realizar una función de repetición de examen de Windows. Puede volver a examinar inmediatamente, pero si es dentro de los diez minutos siguientes, es posible que tenga que volver a examinar de nuevo para mostrar el tamaño correcto.
Disponibilidad regional
El cambio de tamaño de discos Ultra y discos SSD prémium v2 está disponible actualmente en todas las regiones compatibles con SSSD prémium v2 y Ultra, excepto lo siguiente:
- Oeste de EE. UU. 2
Expandir el disco administrado de Azure
Asegúrese de que tiene instalada la versión más reciente de la CLI de Azure y de que ha iniciado sesión en una cuenta de Azure con az login.
En este artículo se requiere una máquina virtual existente en Azure con al menos un disco de datos adjunto y preparado. Si no dispone de una máquina virtual que pueda usar, consulte la sección sobre la creación y preparación de máquinas virtuales con discos de datos.
En los ejemplos siguientes, reemplace los nombres de parámetros de ejemplo, como myResourceGroup y myVM, con sus propios valores.
Importante
Si el disco cumple los requisitos de Expandir sin tiempo de inactividad, puede omitir los pasos 1 y 3.
No se admite la reducción de un disco existente, y puede provocar una pérdida de datos.
Después de expandir los discos, debe expandir el volumen en el sistema operativo para aprovechar el disco más grande.
No se pueden realizar operaciones en los discos duros virtuales con la VM en ejecución. Desasigne la máquina virtual con az vm deallocate. En el ejemplo siguiente se desasigna la máquina virtual denominada "myVM" en el grupo de recursos myResourceGroup:
az vm deallocate --resource-group myResourceGroup --name myVM
Nota
Debe desasignar la máquina virtual para expandir el disco duro virtual. Detener la VM con
az vm stop
no libera los recursos de proceso. Para liberar los recursos de proceso, useaz vm deallocate
.Vea la lista de discos administrados de un grupo de recursos con az disk list. En el ejemplo siguiente se muestra una lista de discos administrados del grupo de recursos denominado myResourceGroup:
az disk list \ --resource-group myResourceGroup \ --query '[*].{Name:name,size:diskSizeGB,Tier:sku.tier}' \ --output table
Expanda el disco necesario con az disk update. En el ejemplo siguiente se expande el disco administrado llamado myDataDisk a 200 GB:
az disk update \ --resource-group myResourceGroup \ --name myDataDisk \ --size-gb 200
Nota
Si expande un disco administrado, el tamaño actualizado se redondea al tamaño de disco administrado más próximo. Para obtener una tabla de los tamaños y niveles disponibles para discos administrados, consulte Comprender la facturación de Azure Disk Storage.
Inicie la máquina virtual con az vm start. En el ejemplo siguiente se inicia la máquina virtual llamada myVM en el grupo de recursos llamado myResourceGroup:
az vm start --resource-group myResourceGroup --name myVM
Expansión de una partición de disco y del sistema de archivos
Nota
Aunque hay varias herramientas que se pueden usar para realizar el cambio de tamaño de la partición, las herramientas seleccionadas en este documento son las mismas que usan determinados procesos automatizados, como cloud-init. Tal y como está descrito, el uso de la growpart
herramienta con el gdisk
paquete proporciona más compatibilidad universal con discos de tabla de particiones GUID (GPT), ya que las versiones anteriores de algunas herramientas como fdisk
no eran compatibles con los GPT.
Detección de que ha cambiado el tamaño de un disco
Si se expandió un disco de datos sin tiempo de inactividad usando el procedimiento mencionado anteriormente, el tamaño del disco reportado no cambia hasta que se vuelve a escanear el dispositivo, lo que normalmente solo ocurre durante el proceso de arranque. Este examen se puede llamar a petición con el procedimiento siguiente. En este ejemplo, encontramos usando los métodos de este documento que el disco de datos es actualmente /dev/sda
y se cambió su tamaño de 256 GiB a 512 GiB.
Identifique el tamaño reconocido actualmente en la primera línea de salida de
fdisk -l /dev/sda
.sudo fdisk -l /dev/sda
Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors Disk model: Virtual Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x43d10aad Device Boot Start End Sectors Size Id Type /dev/sda1 2048 536870878 536868831 256G 83 Linux
Inserte un carácter
1
en el archivo de nuevo examen de este dispositivo. Observe la referencia a sda en el ejemplo. El identificador del disco cambiaría si se redimensionara un dispositivo de disco diferente.echo 1 | sudo tee /sys/class/block/sda/device/rescan
Compruebe que el nuevo tamaño de disco ahora se reconoce
sudo fdisk -l /dev/sda
Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors Disk model: Virtual Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x43d10aad Device Boot Start End Sectors Size Id Type /dev/sda1 2048 536870878 536868831 256G 83 Linux
En el resto de este artículo se usa el disco del sistema operativo para ver los ejemplos del procedimiento para aumentar el tamaño de un volumen en el nivel del sistema operativo. Si el disco expandido es de datos, use las instrucciones anteriores para identificar el dispositivo de disco de datos y siga esas instrucciones como guía, pero sustituya el dispositivo de disco de datos (por ejemplo /dev/sda
), los números de partición, los nombres de volumen, los puntos de montaje y los formatos del sistema de archivos, según sea necesario.
Todas las instrucciones del sistema operativo Linux deben verse como genéricas y pueden aplicarse en cualquier distribución, pero generalmente coinciden con las convenciones del anunciante de Marketplace con nombre. Consulte los documentos de Red Hat para conocer los requisitos de los paquetes en cualquier distribución basada en Red Hat o que afirme ser compatible con Red Hat.
Aumento de tamaño del disco de SO
Las instrucciones siguientes se aplican a las distribuciones aprobadas por Linux.
Nota
Antes de continuar, haga una copia de seguridad completa de la VM o realice una instantánea del disco del sistema operativo.
Tanto en Ubuntu 16.x como en las versiones más recientes, la partición raíz del disco del sistema operativo y los sistemas de archivos se expandirán automáticamente para usar todo el espacio contiguo libre en el disco raíz por cloud-init, siempre que haya un poco de espacio libre para la operación de cambio de tamaño. En este caso, la secuencia es simplemente
- Incremente el tamaño del disco del SO según se detalló anteriormente.
- Reinicie la máquina virtual y, a continuación, acceda a la máquina virtual mediante la cuenta de usuario raíz.
- Compruebe que el disco de SO ahora presenta un tamaño mayor del sistema de archivos.
Como se muestra en el ejemplo siguiente, se ha cambiado el tamaño del disco de SO del portal a 100 GB. El sistema de archivos /dev/sda1 montado en / muestra ahora 97 GB.
df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 314M 0 314M 0% /dev
tmpfs tmpfs 65M 2.3M 63M 4% /run
/dev/sda1 ext4 97G 1.8G 95G 2% /
tmpfs tmpfs 324M 0 324M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 324M 0 324M 0% /sys/fs/cgroup
/dev/sda15 vfat 105M 3.6M 101M 4% /boot/efi
/dev/sdb1 ext4 20G 44M 19G 1% /mnt
tmpfs tmpfs 65M 0 65M 0% /run/user/1000
user@ubuntu:~#
Expansión sin compatibilidad con la SKU de máquina virtual clásica sin tiempo de inactividad
Si usa una SKU de máquina virtual clásica, es posible que no admita la expansión de discos sin tiempo de inactividad.
Use el siguiente script de PowerShell para determinar con qué SKU de máquina virtual está disponible:
Connect-AzAccount
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}
foreach($vmSize in $vmSizes){
foreach($capability in $vmSize.Capabilities)
{
if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
{
$vmSize.Name
}
}
}