Ejercicio: Incorporación de discos de datos a máquinas virtuales

Completado

Su bufete de abogados está ampliando su carga de casos y tiene la tarea de crear un nuevo servidor web Linux para almacenar documentos críticos de diversos orígenes: clientes, otros bufetes de abogados y oficinas de cumplimiento de la ley. El servidor web le permiten cargar documentos y almacenarlos en el disco.

Sugerencia

Este ejercicio usa Linux como ejemplo, pero el proceso básico de creación de máquinas virtuales y adición de discos es el mismo para Windows. La diferencia principal es la forma de particionar y formatear el disco. En Windows, puede conectarse a la máquina virtual a través de Escritorio remoto y usar las herramientas integradas de administración de discos o implementar un script de PowerShell que sea similar al script de Bash que usaremos aquí.

El objetivo es crear una máquina virtual Linux y asociar un nuevo disco duro virtual (VHD) llamado uploadDataDisk1 para almacenar el directorio /uploads.

Establecer los valores predeterminados de CLI de Azure

La CLI de Azure le permite establecer valores predeterminados para que no tenga que repetirlos cada vez que ejecute un comando.

Puede especificar la ubicación o región de Azure predeterminada. Esta ubicación es donde se coloca la máquina virtual de Azure.

Lo ideal es que esta localización esté cerca de los clientes. En este caso, seleccione la región más cercana a usted de las ubicaciones disponibles para el espacio aislado de Azure.

El espacio aislado gratuito permite crear recursos en un subconjunto de las regiones globales de Azure. Seleccione una región de la lista al crear los recursos:

  • westus2
  • southcentralus
  • centralus
  • eastus
  • westeurope
  • southeastasia
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. Ejecute az configure para establecer la ubicación predeterminada que quiera usar. Reemplace eastus con la ubicación que eligió en el paso anterior.

    az configure --defaults location=eastus
    

    Sugerencia

    Puede usar el botón Copiar para copiar los comandos en el Portapapeles. Para pegarlos, haga clic con el botón derecho en una nueva línea en el terminal de Cloud Shell y seleccione Pegar, o bien use el método abreviado de teclado Mayús+Insert (⌘+V en macOS).

  2. Establezca el nombre del grupo de recursos predeterminado en el grupo de recursos preconfigurado que creó para el espacio aislado de Azure: [grupo de recursos de espacio aislado]

    az configure --defaults group="<rgn>[sandbox Resource Group]</rgn>"
    

Creación de una máquina virtual Linux

Aquí, crea una máquina virtual Linux para hospedar el servidor web.

  1. Ejecute el comando az vm create para crear la máquina virtual Ubuntu Linux.

    az vm create \
      --name support-web-vm01 \
      --image Canonical:UbuntuServer:16.04-LTS:latest \
      --size Standard_DS1_v2 \
      --admin-username azureuser \
      --generate-ssh-keys
    
    • El nombre de la máquina virtual es support-web-vm01.
    • Su tamaño es Standard_DS1_v2.
    • El nombre de usuario de administrador es azureuser. En la práctica, este nombre puede ser el que quiera.
    • El argumento --generate-ssh-keys genera un par de claves SSH que le permiten conectarse a la máquina virtual a través de SSH.

    La maquina virtual tarda unos minutos en implementarse. Cuando la máquina virtual esté preparada, obtendrá información sobre ella en formato JSON. Este es un ejemplo:

    {
      "fqdns": "",
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Compute/virtualMachines/support-web-vm01",
      "location": "eastus",
      "macAddress": "00-0D-3A-10-63-0A",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.4",
      "publicIpAddress": "104.211.38.211",
      "resourceGroup": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
      "zones": ""
    }
    

    Nota

    En esta lección usará esta máquina virtual para aprender a administrar discos. En la práctica, es posible que también instale el servidor web y otro software y después ejecute az vm open-port para que los puertos estén disponibles para el mundo exterior.

Adición de un disco de datos vacío a la máquina virtual

Aquí, crea un disco de datos vacío y lo adjuntará a la máquina virtual. Al principio, el disco de datos tiene un tamaño de 64 GB. Más adelante, montará este disco en el directorio /uploads en la máquina virtual.

Sugerencia

Con fines de aprendizaje, va a crear la máquina virtual y el disco de datos en pasos independientes. En la práctica, puede especificar el argumento --data-disk-sizes-gb al comando az vm create para agregar discos de datos cuando se cree la máquina virtual.

  1. Ejecute el siguiente comando az vm disk attach para agregar un nuevo disco vacío a la máquina virtual.

    az vm disk attach \
      --vm-name support-web-vm01 \
      --name uploadDataDisk1 \
      --size-gb 64 \
      --sku Premium_LRS \
      --new
    

    Este comando:

    • Asigna el nombre uploadDataDisk1 al disco.
    • Establece el tamaño en 64 GB.
    • Especifica el uso del almacenamiento prémium con redundancia local.

Para usar el disco, tiene que crear particiones y formatearlo. Lo haremos a continuación.

Inicializar y formatear el disco de datos

La unidad de datos vacía debe inicializarse y formatearse. El proceso para hacerlo es el mismo que para un disco físico.

Para tareas únicas, conéctese manualmente a la máquina virtual a través de SSH y ejecute los comandos que necesite. Sin embargo, para que el proceso sea más repetitivo y con menos tendencia a errores, puede especificar sus comandos en un script de Bash o un script de PowerShell (si está disponible).

El uso de un script para automatizar el proceso tiene una ventaja adicional: el script sirve como documentación para explicar cómo se realiza el proceso. Otros usuarios pueden leer el script para entender cómo se ha configurado el sistema. Si necesita cambiar el proceso, solo tiene que modificar el script y probarlo en una máquina virtual temporal creada desde cero antes de implementar el cambio en producción.

Para automatizar el proceso en esta lección, puede usar la extensión de script personalizado. La extensión de script personalizado es una manera fácil de descargar y ejecutar scripts en máquinas virtuales de Azure. Es solo una de las numerosas formas de configurar el sistema después de que la máquina virtual esté en funcionamiento.

Puede almacenar los scripts en el almacenamiento de Azure o en una ubicación pública como GitHub. Puede ejecutar scripts manualmente o como parte de una implementación más automatizada. Aquí, ejecuta un comando de la CLI de Azure para descargar un script de Bash prefabricado desde GitHub y ejecutarlo en su máquina virtual.

Con fines de aprendizaje, también vamos a ejecutar algunos comandos en la máquina virtual para comprobar que la máquina virtual está configurada como quería.

  1. Ejecute az vm show para obtener la dirección IP pública de la máquina virtual y guarde la dirección IP como una variable de Bash.

    ipaddress=$(az vm show \
      --name support-web-vm01 \
      --show-details \
      --query [publicIps] \
      --output tsv)
    
  2. Ejecute el siguiente comando ssh para ejecutar el comando lsblk en la máquina virtual a través de una conexión SSH con los datos variables de ipaddress que creó en el paso anterior. Recuerde que azureuser era el nombre de usuario de administrador que usamos cuando creamos la máquina virtual. Si ha elegido un nombre diferente, use ese en su lugar. Escriba cuando se le solicite.

    ssh azureuser@$ipaddress lsblk
    

    La salida del comando debe tener el siguiente aspecto.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    sdc       8:32   0   64G  0 disk 
    sda       8:0    0   30G  0 disk 
    ├─sda14   8:14   0    4M  0 part 
    ├─sda15   8:15   0  106M  0 part /boot/efi
    └─sda1    8:1    0 29.9G  0 part /
    

    Observe que la unidad de 64 GB (sdc) que creó no está montada. La unidad aparece de esta manera porque aún no se inicializa.

  3. Ejecute el siguiente comando az vm extension set para ejecutar el script de Bash prefabricado en la máquina virtual.

    Advertencia

    El script modifica /etc/fstab. Si archivo /etc/fstab se modifica incorrectamente, puede provocar que no se pueda arrancar el sistema. Pruebe siempre los cambios de configuración en un sistema temporal creado desde cero antes de implementar en producción. Vea la documentación sobre la distribución para obtener información sobre cómo modificar correctamente este archivo. En producción, también se recomienda crear una copia de seguridad de este archivo para restaurar la configuración si es necesario.

    az vm extension set \
      --vm-name support-web-vm01 \
      --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-add-and-size-disks-in-azure-virtual-machines/master/add-data-disk.sh"]}' \
      --protected-settings '{"commandToExecute": "./add-data-disk.sh"}'
    

    Mientras se ejecuta el comando, puede examinar el script de Bash en una pestaña independiente del explorador.

    En resumen, el script:

    • Crea particiones de la unidad /dev/sdc.
    • Crea un sistema de archivos ext4 en la unidad.
    • Crea el directorio /uploads, que usamos como nuestro punto de montaje.
    • Adjunta el disco al punto de montaje.
    • Actualiza /etc/fstab para que la unidad se monte automáticamente después de reiniciar el sistema.
  4. Para comprobar la configuración, ejecute el mismo comando ssh como hizo anteriormente para ejecutar el comando lsblk en la máquina virtual a través de una conexión SSH.

    ssh azureuser@$ipaddress lsblk
    

    Deberá comprobar que sdc/sdc1 se particiona y se monta en el directorio /uploads según lo esperado.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    sdc       8:32   0   64G  0 disk 
    └─sdc1    8:33   0   64G  0 part /uploads
    sda       8:0    0   30G  0 disk 
    ├─sda14   8:14   0    4M  0 part 
    ├─sda15   8:15   0  106M  0 part /boot/efi
    └─sda1    8:1    0 29.9G  0 part /
    

Sugerencia

Algunos kernels de Linux admiten operaciones TRIM para descartar los bloques no usados del disco. Esta característica está disponible en los discos de Azure y puede ahorrarle dinero si crea archivos grandes y luego los elimina. En la documentación de Azure se explica cómo activar esta característica.

Resumen

Ha creado un disco de datos y lo ha adjuntado a la máquina virtual. Ha usado la extensión de script personalizado para ejecutar un script de Bash prefabricado en la máquina virtual para que el proceso sea más repetitivo. El script de Bash crea particiones del disco, lo formatea y lo monta para que el servidor web pueda escribir en él.

Ahora que el disco de datos en la máquina virtual está preparado, vamos a profundizar en varios tipos de discos que puede crear. La decisión principal es elegir entre el almacenamiento Estándar o Premium.