Compartir vía


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:
  • 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.

  1. 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, use az vm deallocate.

  2. 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.

  3. 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 gdiskpaquete 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.

  1. 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
    
  2. 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
    
  3. 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

  1. Incremente el tamaño del disco del SO según se detalló anteriormente.
  2. Reinicie la máquina virtual y, a continuación, acceda a la máquina virtual mediante la cuenta de usuario raíz.
  3. 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
       }
   }
}