Compartir a través de


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 (SO) y discos de datos para una máquina virtual Linux. Puede agregar discos de datos para proporcionar más espacio de almacenamiento y también puede expandir un disco de datos existente. El tamaño predeterminado del disco duro virtual para el sistema operativo suele ser de 30 GB en una máquina virtual 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 manera 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 requerir espacio adicional, conviértalos en una tabla de particiones GUID (GPT).

Advertencia

Asegúrese siempre de que el sistema de archivos tenga un estado correcto y el tipo de tabla de particiones de disco (GPT o MBR) pueda admitir el nuevo tamaño. Realice 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 de un objeto de disco de datos de Azure en el sistema operativo

Al expandir un disco de datos que tiene varios discos de datos en la máquina virtual, puede resultar difícil relacionar los números de unidad lógica (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í puede ver, por ejemplo, que el /opt/db/data sistema de archivos está casi lleno y se encuentra en la /dev/sdd1 partición. La salida de df muestra la ruta del dispositivo, ya sea que el disco se monte usando la ruta del dispositivo o el UUID (preferido) en el fstab. Observe 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 comando siguiente ls muestra que el dispositivo conocido como /dev/sdd dentro del sistema operativo Linux se encuentra en LUN1 cuando se examina 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.

Importante

Esta limitación no se aplica a discos Ssd Premium v2 o Ultra.

Si un disco HDD estándar, SSD estándar o SSD Premium es de 4 TiB o menos, desasigne la máquina virtual y desasocie el disco antes de expandirlo más allá 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.

  • Solo se admite para discos de datos.
  • No se admite para discos compartidos.
  • Debe instalarse y usar una de las siguientes opciones:
  • No está disponible en algunas máquinas virtuales clásicas. Use este script para obtener una lista de productos de máquina virtual clásica que admiten la expansión sin tiempo de inactividad.

Expansión con discos Ultra y SSD Premium v2

La expansión de discos Ultra y discos SSD Premium v2 sin tiempo de inactividad tiene las siguientes limitaciones adicionales:

  • No se puede expandir un disco mientras se produce una copia en segundo plano de los datos en ese disco. Un ejemplo es cuando se está rellenando un disco a partir de instantáneas.
  • Puede expandir máquinas virtuales mediante controladores NVMe con discos Ultra o discos SSD Premium v2 sin tiempo de inactividad con esta versión preliminar pública. Dado que esta versión es una versión preliminar pública, solo debe usarla para probar la funcionalidad de expansión sin tiempo de inactividad. No expanda máquinas virtuales en producción.

En las siguientes regiones, puede expandir las máquinas virtuales que usan controladores NVMe con discos Ultra o discos SSD Premium v2 sin tiempo de inactividad. Use Azure Portal, la CLI de Azure o el módulo de Azure PowerShell:

  • Sudeste Asiático
  • Sur de Brasil
  • Centro de Canadá
  • Centro-oeste de Alemania
  • India Central (actualmente no se admite en máquinas virtuales V6)

En las siguientes regiones, puede expandir las máquinas virtuales que usan controladores NVMe con discos Ultra o discos SSD Premium v2 sin tiempo de inactividad. Use solo la CLI de Azure o un módulo de Azure PowerShell. Actualmente no puede usar Azure Portal:

  • Asia Oriental
  • Centro-oeste de EE. UU. (actualmente no se admite en máquinas virtuales V6)

Espere hasta 10 minutos para que se refleje el tamaño correcto en las máquinas virtuales Windows y Linux. En el caso de las máquinas virtuales Linux, debe realizar una función de repetición de examen de Linux. Para una máquina virtual Windows que no tenga una carga de trabajo, debe realizar una función de reescaneo de Windows. Puede volver a examinar inmediatamente, pero si el tiempo está en un plazo de 10 minutos, es posible que tenga que volver a examinarlo para mostrar el tamaño correcto.

Expansión del 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 marcador de posición como myResourceGroup y myVM por sus propios valores.

Importante

Si el disco cumple los requisitos de Expansión sin tiempo de inactividad, puede omitir los pasos 1 y 3.

No se admite la reducción de un disco existente y podría provocar la pérdida de datos.

Después de expandir los discos, expanda el volumen del 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
    

    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 en el 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
    

    Si expande un disco administrado, el tamaño actualizado se redondea al tamaño de disco administrado más próximo.

  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

Puede usar muchas herramientas para redimensionar particiones. Las herramientas detalladas en el resto de este artículo son las mismas que usan determinados procesos automatizados, como cloud-init. Como se describe aquí, la growpart herramienta con el gdisk paquete proporciona compatibilidad universal con discos GPT porque las versiones anteriores de algunas herramientas, como fdisk no admitían GPT.

Detección de un tamaño de disco cambiado

Si ha usado el procedimiento mencionado anteriormente para expandir un disco de datos sin tiempo de inactividad, el tamaño del disco notificado no cambia hasta que se vuelve a examinar el dispositivo. El volver a examinar normalmente solo se produce durante el proceso de arranque. Para llamar a este examen a petición, use el procedimiento siguiente. Cuando use los métodos de este artículo, observe que en este ejemplo el disco de datos está actualmente /dev/sda y se ha cambiado de 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. Anote la referencia a sda en el ejemplo. El identificador de disco cambia si se cambia el tamaño de un dispositivo de disco diferente.

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. Compruebe que ahora se reconoce el nuevo tamaño de disco.

    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 utiliza el disco del sistema operativo para los ejemplos del procedimiento de aumento del tamaño de un volumen a nivel del sistema operativo. Si el disco expandido es un disco de datos, use las instrucciones anteriores para identificar el dispositivo de disco de datos. Siga estas instrucciones como una guía. Sustituya el dispositivo de disco de datos (por ejemplo, /dev/sda), números de partición, nombres de volumen, puntos de montaje y formatos del sistema de archivos, según sea necesario.

Considere toda la orientación del sistema operativo Linux como genérica y que podría aplicarse a cualquier distribución, aunque generalmente coincide con las convenciones del editor de mercado mencionado. Consulte la documentación de Red Hat para conocer los requisitos del paquete en cualquier distribución basada en Red Hat o que reclama la compatibilidad de Red Hat.

Aumento de tamaño del disco de SO

Las instrucciones siguientes se aplican a las distribuciones aprobadas por Linux.

Antes de continuar, realice una copia de seguridad completa de la máquina virtual o, como mínimo, tome una instantánea del disco del sistema operativo.

En Ubuntu 16.x y versiones posteriores, la partición raíz del disco del sistema operativo y los sistemas de archivos se expanden automáticamente para usar todo el espacio contiguo libre en el disco raíz mediante cloud-init. Debe haber disponible una pequeña cantidad de espacio libre para la operación de cambio de tamaño. En este caso, la secuencia es:

  1. Aumente el tamaño del disco del sistema operativo como se ha descrito 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 del sistema operativo ahora muestra un mayor tamaño 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 /dev/sda1 sistema de archivos montado en / ahora muestra 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 de 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
       }
   }
}