Esercizio - Aggiungere un disco dati a una macchina virtuale

Completato

L'attività dello studio legale presso cui si lavora sta aumentando ed è necessario creare un nuovo server Web Linux per archiviare documenti critici provenienti da varie fonti, ossia clienti, altri studi legali e forze dell'ordine. Il server Web consente di caricare i documenti e archiviarli su disco.

Suggerimento

Questo esercizio usa Linux come esempio, ma il processo di base per la creazione di macchine virtuali e l'aggiunta di dischi è lo stesso per Windows. La differenza principale riguarda il partizionamento e la formattazione del disco. In Windows è possibile connettersi alla macchina virtuale tramite Desktop remoto e usare gli strumenti integrati di Gestione disco o distribuire uno script PowerShell simile allo script Bash che si userà per questo esercizio.

L'obiettivo è creare una VM Linux e collegare un nuovo disco rigido virtuale (VHD) denominato uploadDataDisk1 per archiviare la directory /uploads.

Impostare i valori predefiniti dell'interfaccia della riga di comando di Azure

L'interfaccia della riga di comando di Azure consente di impostare i valori predefiniti in modo che non sia necessario ripetere questa operazione ogni volta che si esegue un comando.

È possibile specificare il valore predefinito della posizione o dell'area geografica di Azure. Questa è la posizione in cui si trova la macchina virtuale di Azure.

La posizione è preferibilmente non accessibile ai clienti. In questo caso, selezionare l'area più vicina tra le località disponibili per l'ambiente sandbox di Azure.

La sandbox gratuita consente di creare risorse in un subset delle aree globali di Azure. Selezionare un'area nell'elenco durante la creazione delle risorse:

  • westus2
  • Stati Uniti centro-meridionali
  • centralus
  • eastus
  • westeurope
  • Asia sud-orientale
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. Usare il comando az configure per impostare la località predefinita da usare. Sostituire eastus con la posizione scelta nel passaggio precedente.

    az configure --defaults location=eastus
    

    Suggerimento

    È possibile usare il pulsante Copia per copiare i comandi negli Appunti. Per incollare, fare clic con il pulsante destro del mouse su una nuova riga nel terminale di Cloud Shell e scegliere Incolla oppure usare i tasti di scelta rapida MAIUSC+INS (⌘+V in macOS).

  2. Impostare il nome del gruppo di risorse predefinito per il gruppo di risorse preconfigurato creato tramite la sandbox di Azure: [gruppo di risorse sandbox]

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

Creare una macchina virtuale Linux

Qui si crea una macchina virtuale Linux per ospitare il server Web.

  1. Eseguire il comando az vm create per creare una macchina virtuale 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
    
    • Il nome della macchina virtuale è support-web-vm01.
    • La dimensione è Standard_DS1_v2.
    • Il nome utente dell'amministratore è azureuser. In realtà, questo nome può essere uno qualsiasi.
    • L'argomento --generate-ssh-keys genera una coppia di chiavi SSH tramite cui l'utente può connettersi alla macchina virtuale tramite SSH.

    La distribuzione della VM richiede alcuni minuti. Quando la VM è pronta vengono visualizzate le relative informazioni in formato JSON. Ecco un esempio:

    {
      "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

    In questa lezione questa macchina virtuale viene usata per imparare a gestire i dischi. In pratica, si potrebbe anche installare un server Web e altro software ed eseguire az vm open-port per rendere disponibili al mondo esterno le porte necessarie.

Aggiungere un disco dati vuoto alla macchina virtuale

Qui si crea un disco dati vuoto e lo si collegherà alla VM. Inizialmente, la dimensione del disco dati è 64 GB. In un secondo momento, si monterà il disco nella directory /uploads della macchina virtuale.

Suggerimento

Ai fini dell'apprendimento, la macchina virtuale e il disco dati verranno creati in due fasi distinte. In pratica, è possibile specificare l'argomento --data-disk-sizes-gb per il comando az vm create per aggiungere dischi dati quando viene creata la macchina virtuale.

  1. Eseguire il comando az vm disk attach seguente per aggiungere un nuovo disco vuoto alla macchina virtuale.

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

    Questo comando:

    • Denomina il disco uploadDataDisk1.
    • Imposta le dimensioni su 64 GB.
    • Specifica di usare l'archiviazione premium con ridondanza locale.

Per usare il disco, è necessario partizionarlo e formattarlo. Di seguito viene illustrato come procedere.

Inizializzare e formattare il disco dati

L'unità dati vuota deve essere inizializzata e formattata. Il processo per farlo è identico a quello usato per i dischi fisici.

Per le attività occasionali è possibile connettersi manualmente alla VM tramite SSH ed eseguire i comandi necessari. Tuttavia, per rendere il processo più ripetibile e meno soggetto a errori, è possibile specificare i comandi in uno script Bash o PowerShell (se disponibile).

L'uso di uno script per automatizzare il processo comporta un altro vantaggio: lo script funge da documentazione per la modalità di esecuzione del processo. Altri utenti possono leggere lo script e comprendere come è configurato il sistema. Se si presenta l'esigenza di modificare il processo, è possibile modificare lo script e testarlo su una VM temporanea prima di distribuire le modifiche all'ambiente di produzione.

Per automatizzare il processo in questa lezione, è possibile usare l'estensione per script personalizzati. L'estensione per script personalizzati è un modo semplice per scaricare ed eseguire script nelle macchine virtuali di Azure. È solo uno dei tanti modi in cui è possibile configurare il sistema dopo aver preparato e attivato la macchina virtuale.

È possibile archiviare gli script in Archiviazione di Azure o in una posizione pubblica, ad esempio GitHub. Gli script possono essere eseguiti manualmente o come parte di una distribuzione più automatizzata. In questo caso, si esegue un comando dell'interfaccia della riga di comando di Azure per scaricare uno script Bash predefinito da GitHub ed eseguirlo nella VM.

Ai fini dell'apprendimento, si eseguiranno anche alcuni comandi nella VM per verificare che sia configurata come previsto.

  1. Eseguire az vm show per ottenere l'indirizzo IP pubblico della macchina virtuale e salvare l'indirizzo IP come una variabile Bash.

    ipaddress=$(az vm show \
      --name support-web-vm01 \
      --show-details \
      --query [publicIps] \
      --output tsv)
    
  2. Eseguire il comando ssh seguente per eseguire il comando lsblk nella VM tramite una connessione SSH che usa la variabile dati ipaddress creata nel passaggio precedente. È importante ricordare che azureuser è il nome utente amministratore usato per creare la macchina virtuale. Se si sceglie un nome diverso, usare quello. Immettere yes quando richiesto.

    ssh azureuser@$ipaddress lsblk
    

    L'output del comando deve essere simile al seguente.

    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 /
    

    Si noti che l'unità da 64 GB (sdc) creata non è montata. L'unità è elencata in questo modo perché non è ancora inizializzata.

  3. Eseguire il comando az vm extension set seguente per eseguire lo script Bash predefinito nella VM.

    Avviso

    Lo script modifica /etc/fstab. Se il file /etc/fstab non viene modificato in modo corretto, il sistema potrebbe non essere disponibile per l'avvio. Testare sempre le modifiche alla configurazione in un sistema temporaneo prima di distribuirle nell'ambiente di produzione. Per informazioni su come modificare correttamente il file, fare riferimento alla documentazione della distribuzione. Nell'ambiente di produzione è anche consigliabile creare un backup del file in modo che, se necessario, sia possibile ripristinare la configurazione.

    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"}'
    

    Durante l'esecuzione del comando, è possibile esaminare lo script Bash in una scheda separata del browser.

    Per riassumere, lo script:

    • Esegue il partizionamento dell'unità /dev/sdc.
    • Crea un file system ext4 nell'unità.
    • Creare la directory /uploads, usata come punto di montaggio.
    • Collega il disco al punto di montaggio.
    • Aggiorna /etc/fstab in modo che l'unità venga montata automaticamente dopo il riavvio del sistema.
  4. Per verificare la configurazione, eseguire lo stesso comando ssh usato in precedenza per eseguire il comando lsblk nella macchina virtuale tramite una connessione SSH.

    ssh azureuser@$ipaddress lsblk
    

    Si dovrebbe constatare che sdc/sdc1 è partizionata e montata nella directory /uploads prevista.

    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 /
    

Suggerimento

Alcuni kernel di Linux supportano la funzionalità TRIM per rimuovere i blocchi inutilizzati sui dischi. Questa funzionalità è disponibile per i dischi di Azure e consente di risparmiare denaro se si creano file di grandi dimensioni che poi vengono eliminati. Vedere la documentazione di Azure per informazioni su come attivare questa funzionalità.

Riepilogo

Durante l'esercizio è stato creato un disco dati e collegato alla macchina virtuale. L'estensione per script personalizzati è stata usata per eseguire uno script Bash predefinito nella VM e rendere il processo più ripetibile. Lo script Bash partiziona, formatta e monta il disco in modo da renderlo accessibile in scrittura al server Web.

Ora che il disco della VM è pronto, esaminiamo più in dettaglio i vari tipi di dischi che è possibile creare. La principale decisione riguarda la scelta tra archiviazione Standard o Premium.