Esercizio - Aggiungere un disco dati a una macchina virtuale

Completato

Lo studio legale sta espandendo il carico dei casi e si è incaricati di creare un nuovo server Web Linux per archiviare documenti critici da varie fonti: clienti, altri studi legali e uffici di applicazione della legge. 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 macchina virtuale Linux e collegare un nuovo disco rigido virtuale denominato uploadDataDisk1 per archiviare la /uploads directory.

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.

Specificare la località o l'area di Azure predefinita. Questa posizione è la posizione in cui si trova la macchina virtuale di Azure.

Idealmente, questa posizione è vicina 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 sul 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

In questo caso 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 macchina virtuale è pronta vengono visualizzate le relative informazioni in formato JSON. Ecco un esempio:

    {
      "fqdns": "",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/680469d8-edB7-42ec-b118-cd80d51741e7/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": "680469d8-edB7-42ec-b118-cd80d51741e7",
      "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

In questo caso viene creato un disco dati vuoto e collegato alla macchina virtuale. Inizialmente, il disco dati è di 64 GB. Successivamente, si monta questo disco nella directory nella /uploads 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 la dimensione del disco su 64 GB.
    • Specifica l'uso dell'archiviazione Premium con ridondanza locale.

Per usare il disco, è necessario partizionarlo e formattarlo. Facciamolo ora.

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 uno script di 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 è necessario modificare il processo, è sufficiente modificare lo script e testarlo in una macchina virtuale temporanea prima di distribuire la modifica nell'ambiente di produzione.

Per automatizzare il processo in questa lezione, 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 preconfigurato da GitHub ed eseguirlo nella macchina virtuale.

A scopo di apprendimento, eseguire anche alcuni comandi nella macchina virtuale per verificare che la macchina virtuale 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 seguente ssh per eseguire il lsblk comando nella macchina virtuale tramite una connessione SSH usando i dati delle ipaddress variabili creati 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 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 creata sdcnon è montata. L'unità è elencata in questo modo perché non è ancora inizializzata.

  3. Eseguire il comando seguente az vm extension set per eseguire lo script Bash preconfigurato nella macchina virtuale.

    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 può osservare 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. È stata usata l'estensione per script personalizzati per eseguire uno script Bash pre-creato nella macchina virtuale per 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 dati nella macchina virtuale è stato preparato, si esaminerà un po' di più sui vari tipi di dischi che è possibile creare. La principale decisione riguarda la scelta tra archiviazione Standard o Premium.