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

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.

Requisitos previos

  • Use el entorno de Bash en Azure Cloud Shell.

    Iniciar Cloud Shell en una nueva ventana

  • Si lo prefiere, instale la CLI de Azure para ejecutar sus comandos de referencia.

    • Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.

    • Cuando se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.

    • Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.

  • En este artículo se necesita la versión 2.0.29 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

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 máquina virtual, se pueden conectar dos discos de datos hasta un máximo de 64 discos por máquina virtual.

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 un disco de latencia reducida y alto rendimiento basado 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 Linux.

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

En primer lugar, cree un grupo de recursos con el comando az group create. En este ejemplo se crea un grupo de recursos denominado myResourceGroup en la región eastus.

az group create --name myResourceGroup --location eastus

Cree un conjunto de escalado de máquinas virtuales con el comando az vmss create. En el ejemplo siguiente se crea un conjunto de escalado llamado myScaleSet y se generan claves SSH si estas no existen aún. Se crean dos discos con el parámetro --data-disk-sizes-gb. Es el primer disco tiene un tamaño de 64 GB y, el segundo disco, de 128 GB:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image UbuntuLTS \
  --upgrade-policy automatic \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 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 az vmss disk attach. En el ejemplo siguiente, se conecta un disco adicional de 128 GB:

az vmss disk attach \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --size-gb 128

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 az vmss extension set, que prepara todos los discos de datos conectados sin formato:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

Para confirmar que los discos se han preparado correctamente, conéctese mediante SSH a una de las instancias de máquina virtual. Para mostrar la información de conexión del conjunto de escalado, use az vmss list-instance-connection-info:

az vmss list-instance-connection-info \
  --resource-group myResourceGroup \
  --name myScaleSet

Use su propia dirección IP pública y número de puerto para conectarse a la primera instancia de máquina virtual, tal y como se muestra en el ejemplo siguiente:

ssh azureuser@52.226.67.166 -p 50001

Examine las particiones en la instancia de máquina virtual, tal y como se indica a continuación:

sudo fdisk -l

La salida del ejemplo siguiente muestra que los tres discos están conectados con la instancia de máquina virtual: /dev/sdc, /dev/sdd, and /dev/sde. Cada uno de esos discos tiene una única partición que usa todo el espacio disponible:

Disk /dev/sdc: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa47874cb

Device     Boot Start       End   Sectors Size Id Type
/dev/sdc1        2048 134217727 134215680  64G 83 Linux

Disk /dev/sdd: 128 GiB, 137438953472 bytes, 268435456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd5c95ca0

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdd1        2048 268435455 268433408  128G 83 Linux

Disk /dev/sde: 128 GiB, 137438953472 bytes, 268435456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9312fdf5

Device     Boot Start       End   Sectors  Size Id Type
/dev/sde1        2048 268435455 268433408  128G 83 Linux

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

sudo df -h

La siguiente salida de ejemplo muestra que los tres discos tienen sus sistemas de archivos montados correctamente en /datadisks:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        30G  1.3G   28G   5% /
/dev/sdb1        50G   52M   47G   1% /mnt
/dev/sdc1        63G   52M   60G   1% /datadisks/disk1
/dev/sdd1       126G   60M  120G   1% /datadisks/disk2
/dev/sde1       126G   60M  120G   1% /datadisks/disk3

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 conexión SSH a la instancia de máquina virtual:

exit

Enumeración de los discos conectados

Para ver información acerca de los discos conectados a un conjunto de escalado, use az vmss show y consulte virtualMachineProfile.storageProfile.dataDisks:

az vmss show \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --query virtualMachineProfile.storageProfile.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:

[
  {
    "additionalProperties": {},
    "caching": "None",
    "createOption": "Empty",
    "diskSizeGb": 64,
    "lun": 0,
    "managedDisk": {
      "additionalProperties": {},
      "storageAccountType": "Standard_LRS"
    },
    "name": null
  },
  {
    "additionalProperties": {},
    "caching": "None",
    "createOption": "Empty",
    "diskSizeGb": 128,
    "lun": 1,
    "managedDisk": {
      "additionalProperties": {},
      "storageAccountType": "Standard_LRS"
    },
    "name": null
  },
  {
    "additionalProperties": {},
    "caching": "None",
    "createOption": "Empty",
    "diskSizeGb": 128,
    "lun": 2,
    "managedDisk": {
      "additionalProperties": {},
      "storageAccountType": "Standard_LRS"
    },
    "name": null
  }
]

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 az vmss disk detach y especifique el LUN del disco. Los LUN se muestran en la salida de az vmss show, en la sección anterior. En el ejemplo siguiente, se desconecta el LUN 2 del conjunto de escalado:

az vmss disk detach \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --lun 2

Limpieza de recursos

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

az group delete --name myResourceGroup --no-wait --yes

Pasos siguientes

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

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