Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- La CLI de Azure más reciente.
- El módulo de Azure PowerShell más reciente.
- Azure Portal
- Una plantilla de Azure Resource Manager con una versión de API que sea
2021-04-01
o más reciente.
- 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.
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, 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 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.
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.
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. Anote la referencia asda
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
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:
- Aumente el tamaño del disco del sistema operativo como se ha descrito 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 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
}
}
}