Tutorial: Creación y uso de discos con conjuntos de escalado de máquinas virtuales con Azure PowerShell

Se aplica a: ✔️ máquinas virtuales Linux ✔️ máquinas virtuales Windows ✔️ conjuntos de escalado uniformes

Los conjuntos de escalado de máquinas virtuales usan discos para almacenar el sistema operativo, las aplicaciones y los datos de las máquinas virtuales. Al crear y administrar un conjunto de escalado, es importante elegir un tamaño de disco y la configuración adecuada para la carga de trabajo esperada. Este tutorial explica cómo crear y administrar discos de máquina virtual. En este tutorial, aprenderá a:

  • Discos del SO y temporales.
  • Discos de datos.
  • Discos Estándar y Premium.
  • Rendimiento de disco.
  • Conexión y preparación de los discos de datos

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Nota

En este artículo se usa el módulo Az de PowerShell, que es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Uso de Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.

Para iniciar Azure Cloud Shell:

Opción Ejemplo o vínculo
Seleccione Pruébelo en la esquina superior derecha de un bloque de código. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. Iniciar Cloud Shell en una nueva ventana
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:

  1. Inicie Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.

  4. Seleccione Entrar para ejecutar el código.

Discos de Azure predeterminados

Cuando se crea o se escala un conjunto de escalado, se conectan automáticamente dos discos a cada instancia de máquina virtual.

Disco del sistema operativo: hospeda el sistema operativo de las instancias de máquina virtual. Pueden tener un tamaño de hasta 2 terabytes. El disco del sistema operativo lleva de forma predeterminada la etiqueta /dev/sda . La configuración de almacenamiento en caché del disco del sistema operativo está optimizada para el rendimiento del sistema operativo. Debido a esta configuración, el disco del sistema operativo no debe hospedar aplicaciones o datos. Para aplicaciones y datos, use discos de datos, que se detallan más adelante en este artículo.

Disco temporal: los discos temporales usan una unidad de estado sólido que se encuentra en el mismo host de Azure que la instancia de máquina virtual. Son discos de gran rendimiento y se pueden usar para operaciones tales como el procesamiento temporal de los datos. Sin embargo, si la instancia de máquina virtual se mueve a un nuevo host, los datos almacenados en un disco temporal se eliminarán. El tamaño del disco temporal se determina por el tamaño de la instancia de máquina virtual. Los discos temporales llevan la etiqueta /dev/sdb y tienen un punto de montaje de /mnt.

Tamaños de disco temporal

Tipo Tamaños comunes Tamaño máximo de disco temporal (GiB)
Uso general Series A, B y D 1600
Proceso optimizado Serie F 576
Memoria optimizada Series D, E, G y M 6144
Almacenamiento optimizado Serie L 5630
GPU Serie N 1440
Alto rendimiento Series A y H 2000

Discos de datos de Azure

Se pueden agregar discos de datos adicionales si necesita instalar aplicaciones y almacenar datos. Los discos de datos deben usarse en cualquier situación donde desee un almacenamiento de datos duradero y con capacidad de respuesta. Cada disco de datos tiene una capacidad máxima de 4 TB. El tamaño de la instancia de máquina virtual determina cuántos discos de datos se pueden conectar. Para cada vCPU de la máquina virtual, se pueden asociar dos discos de datos.

Discos de datos máximos por máquina virtual

Tipo Tamaños comunes Discos de datos máximos por máquina virtual
Uso general Series A, B y D 64
Proceso optimizado Serie F 64
Memoria optimizada Series D, E, G y M 64
Almacenamiento optimizado Serie L 64
GPU Serie N 64
Alto rendimiento Series A y H 64

Tipos de disco de máquina virtual

Azure proporciona dos tipos de disco.

Disco estándar

Standard Storage está respaldado por unidades de disco duro y ofrece un almacenamiento rentable con un buen rendimiento. Los discos estándar son ideales para cargas de trabajo de desarrollo y prueba rentables.

Disco Premium

Los discos Premium están respaldados por discos de latencia reducida y alto rendimiento basados en SSD. Estos discos se recomiendan para las máquinas virtuales que ejecutan cargas de trabajo de producción. Premium Storage es compatible con las máquinas virtuales de las series DS, DSv2, GS y FS. Al seleccionar el tamaño de un disco, el valor se redondea al alza al siguiente tipo. Por ejemplo, si el tamaño del disco es inferior a 128 GB, el tipo de disco es P10. Si el tamaño de disco está entre 129 y 512 GB, el tamaño es un P20. Cualquier tamaño por encima de 512 GB equivale a un tipo P30.

Rendimiento del disco Premium

Tipo de disco de Premium Storage P4 P6 P10 P20 P30 P40 P50
Tamaño del disco (redondeo hacia arriba) 32 GB 64 GB 128 GB 512 GB 1024 GB (1 TB) 2048 GB (2 TB) 4095 GB (4 TB)
Máximo de IOPS por disco 120 240 500 2,300 5.000 7 500 7 500
Rendimiento de disco. 25 MB/s 50 MB/s 100 MB/s 150 MB/s 200 MB/s 250 MB/s 250 MB/s

Aunque la tabla anterior identifica las IOPS máximas por disco, se puede obtener un mayor nivel de rendimiento dividiendo varios discos de datos. Por ejemplo, una máquina virtual Standard_GS5 puede conseguir 80 000 IOPS como máximo. Para más información sobre el número máximo de IOPS por máquina virtual, consulte los tamaños de máquinas virtuales Windows.

Creación y conexión de discos

Puede crear y conectar discos durante la creación de un conjunto de escalado o a un conjunto de escalado existente.

A partir versión 2019-07-01 de la API, puede establecer el tamaño del disco del sistema operativo en un conjunto de escalado de máquinas virtuales con la propiedad storageProfile.osDisk.diskSizeGb. Después del aprovisionamiento, es posible que tenga que expandir o volver a particionar el disco para hacer uso de todo el espacio. Obtenga más información sobre la expansión del disco aquí.

Conexión de discos durante la creación del conjunto de escalado

Cree un conjunto de escalado de máquinas virtuales con New-AzVmss. Cuando se le solicite, escriba el nombre de usuario y la contraseña de las instancias de máquina virtual. Para distribuir el tráfico a las instancias individuales de VM, también se crea un equilibrador de carga. El equilibrador de carga incluye reglas para distribuir el tráfico en el puerto TCP 80, y permitir el tráfico de Escritorio remoto en el puerto TCP 3389 y la conexión remota de PowerShell en el puerto TCP 5985.

Se crean dos discos con el parámetro -DataDiskSizeGb. El primer disco tiene un tamaño de 64 GB y, el segundo disco, de 128 GB: Cuando se le solicite, proporcione sus propias credenciales administrativas para las instancias de máquina virtual en el conjunto de escalado:

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicyMode "Automatic" `
  -DataDiskSizeInGb 64,128

Se tardan unos minutos en crear y configurar todos los recursos del conjunto de escalado y las instancias de máquina virtual.

Conexión de un disco a un conjunto de escalado existente

También puede conectar discos a un conjunto de escalado existente. Use el conjunto de escalado creado en el paso anterior para agregar otro disco con Add-AzVmssDataDisk. En el ejemplo siguiente, se conecta un disco adicional de 128 GB a un conjunto de escalado existente:

# Get scale set object
$vmss = Get-AzVmss `
          -ResourceGroupName "myResourceGroup" `
          -VMScaleSetName "myScaleSet"

# Attach a 128 GB data disk to LUN 2
Add-AzVmssDataDisk `
  -VirtualMachineScaleSet $vmss `
  -CreateOption Empty `
  -Lun 2 `
  -DiskSizeGB 128

# Update the scale set to apply the change
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -VirtualMachineScaleSet $vmss

Preparación de los discos de datos

Los discos que se crean y conectan a las instancias de máquina virtual del conjunto de escalado son discos sin formato. Para poder usarlos con sus aplicaciones y datos, los discos deben prepararse. Para preparar los discos, cree una partición, cree un sistema de archivos y móntelos.

Para automatizar el proceso en varias instancias de máquina virtual en un conjunto de escalado, puede usar la extensión de script personalizado de Azure. Esta extensión puede ejecutar scripts localmente en cada instancia de máquina virtual, por ejemplo, para preparar los discos de datos conectados. Para obtener más información, consulte Información general de la extensión de script personalizado.

En el ejemplo siguiente se ejecuta un script desde un repositorio de ejemplo de GitHub en cada instancia de máquina virtual con Add-AzVmssExtension, que prepara todos los discos de datos conectados sin formato:

# Get scale set object
$vmss = Get-AzVmss `
          -ResourceGroupName "myResourceGroup" `
          -VMScaleSetName "myScaleSet"

# Define the script for your Custom Script Extension to run
$publicSettings = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File prepare_vm_disks.ps1"
}

# Use Custom Script Extension to prepare the attached data disks
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.8 `
  -Setting $publicSettings

# Update the scale set and apply the Custom Script Extension to the VM instances
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -VirtualMachineScaleSet $vmss

Para confirmar que los discos se han preparado correctamente, conéctese mediante RDP a una de las instancias de máquina virtual.

En primer lugar, obtenga el objeto de equilibrador de carga con Get-AzLoadBalancer. Después, consulte las reglas NAT de entrada con Get-AzLoadBalancerInboundNatRuleConfig. Las reglas NAT muestran el valor de FrontendPort para cada instancia de máquina virtual en la que RDP escucha. Por último, consiga la dirección IP pública del equilibrador de carga con Get-AzPublicIpAddress:

# Get the load balancer object
$lb = Get-AzLoadBalancer -ResourceGroupName "myResourceGroup" -Name "myLoadBalancer"

# View the list of inbound NAT rules
Get-AzLoadBalancerInboundNatRuleConfig -LoadBalancer $lb | Select-Object Name,Protocol,FrontEndPort,BackEndPort

# View the public IP address of the load balancer
Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" -Name myPublicIPAddress | Select IpAddress

Para conectar con su máquina virtual, especifique su propia dirección IP pública y el número de puerto de la instancia de máquina virtual necesaria, tal y como se muestra en los comandos anteriores. Cuando se le solicite, escriba las credenciales usadas al crear el conjunto de escalado. Si se utiliza Azure Cloud Shell, realice este paso desde un símbolo del sistema local de PowerShell o un cliente de Escritorio remoto. En el ejemplo siguiente, se realiza una conexión a una instancia de máquina virtual 1:

mstsc /v 52.168.121.216:50001

Abra una sesión de PowerShell local en la instancia de máquina virtual y examine los discos conectados con Get-Disk:

Get-Disk

La salida del ejemplo siguiente muestra que los tres discos de datos están conectados con la instancia de máquina virtual.

Number  Friendly Name      HealthStatus  OperationalStatus  Total Size  Partition Style
------  -------------      ------------  -----------------  ----------  ---------------
0       Virtual HD         Healthy       Online                 127 GB  MBR
1       Virtual HD         Healthy       Online                  14 GB  MBR
2       Msft Virtual Disk  Healthy       Online                  64 GB  MBR
3       Msft Virtual Disk  Healthy       Online                 128 GB  MBR
4       Msft Virtual Disk  Healthy       Online                 128 GB  MBR

Examine los sistemas de archivos y los puntos de montaje en la instancia de máquina virtual, de la siguiente manera:

Get-Partition

La salida del ejemplo siguiente muestra que los tres discos de datos tienen asignadas letras de unidad:

   DiskPath: \\?\scsi#disk&ven_msft&prod_virtual_disk#000001

PartitionNumber  DriveLetter  Offset   Size  Type
---------------  -----------  ------   ----  ----
1                F            1048576  64 GB  IFS

   DiskPath: \\?\scsi#disk&ven_msft&prod_virtual_disk#000002

PartitionNumber  DriveLetter  Offset   Size   Type
---------------  -----------  ------   ----   ----
1                G            1048576  128 GB  IFS

   DiskPath: \\?\scsi#disk&ven_msft&prod_virtual_disk#000003

PartitionNumber  DriveLetter  Offset   Size   Type
---------------  -----------  ------   ----   ----
1                H            1048576  128 GB  IFS

Los discos en cada instancia de máquina virtual del conjunto de escalado se preparan automáticamente de la misma manera. A medida que conjunto de escalado escale verticalmente, se conectan los discos de datos necesarios a las nuevas instancias de máquina virtual. La extensión de script personalizado también se ejecuta para preparar automáticamente los discos.

Cierre la sesión de conexión a Escritorio remoto con la instancia de máquina virtual.

Enumeración de los discos conectados

Para ver información acerca de los discos conectados a un conjunto de escalado, use Get-AzVmss de la siguiente manera:

Get-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet"

En la propiedad VirtualMachineProfile.StorageProfile, se muestra la lista de DataDisks. Se muestra información sobre el tamaño del disco, la capa de almacenamiento y el LUN (número de unidad lógica). La salida del ejemplo siguiente muestra los tres discos de datos conectados con el conjunto de escalado:

DataDisks[0]                            :
  Lun                                   : 0
  Caching                               : None
  CreateOption                          : Empty
  DiskSizeGB                            : 64
  ManagedDisk                           :
    StorageAccountType                  : PremiumLRS
DataDisks[1]                            :
  Lun                                   : 1
  Caching                               : None
  CreateOption                          : Empty
  DiskSizeGB                            : 128
  ManagedDisk                           :
    StorageAccountType                  : PremiumLRS
DataDisks[2]                            :
  Lun                                   : 2
  Caching                               : None
  CreateOption                          : Empty
  DiskSizeGB                            : 128
  ManagedDisk                           :
    StorageAccountType                  : PremiumLRS

Desconexión de un disco

Cuando ya no se necesita un disco determinado, se puede desconectar del conjunto de escalado. El disco se quita de todas las instancias de máquina virtual del conjunto de escalado. Para desconectar un disco de un conjunto de escalado, use Remove-AzVmssDataDisk y especifique el LUN del disco. Los LUN se muestran en la salida de Get-AzVmss, en la sección anterior. En el ejemplo siguiente, se desconecta el LUN 3 del conjunto de escalado:

# Get scale set object
$vmss = Get-AzVmss `
          -ResourceGroupName "myResourceGroup" `
          -VMScaleSetName "myScaleSet"

# Detach a disk from the scale set
Remove-AzVmssDataDisk `
  -VirtualMachineScaleSet $vmss `
  -Lun 2

# Update the scale set and detach the disk from the VM instances
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -VirtualMachineScaleSet $vmss

Limpieza de recursos

Para quitar el conjunto de escalado y los discos, elimine el grupo de recursos y todos sus recursos con Remove-AzResourceGroup. El parámetro -Force confirma que desea eliminar los recursos sin pedir confirmación adicional. El parámetro -AsJob devuelve el control a la petición de confirmación sin esperar a que finalice la operación.

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

Pasos siguientes

En este tutorial, aprendió a crear y utilizar discos con conjuntos de escalado con Azure PowerShell:

  • Discos del SO y temporales.
  • Discos de datos.
  • Discos Estándar y Premium.
  • Rendimiento de disco.
  • Conexión y preparación de los discos de datos

Vaya al siguiente tutorial para aprender a usar una imagen personalizada para las instancias de máquina virtual de su conjunto de escalado.