Esercitazione: gestire i dischi con Azure PowerShell

Le macchine virtuali (VM) di Azure usano dischi per archiviare sistema operativo (OS), applicazioni e dati. Quando si crea una VM, è importante scegliere dimensioni del disco e configurazione appropriate per il carico di lavoro previsto.

Questa esercitazione illustra la distribuzione e la gestione dei dischi delle macchine virtuali. In questa esercitazione apprenderai a:

  • Creare, connettere e inizializzare un disco dati
  • Verificare lo stato di un disco
  • Inizializzare un disco
  • Espandere e aggiornare un disco
  • Rimuovere ed eliminare un disco

Prerequisiti

È necessario disporre di un account Azure con una sottoscrizione attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice o di comando. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. Screenshot che mostra un esempio di Prova per Azure Cloud Shell.
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Pulsante per avviare Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o in un blocco di comando) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux o selezionando CMD+MAIUSC+V in macOS.

  4. Premere Invio per eseguire il codice o il comando.

Creazione di una macchina virtuale

Per svolgere questa esercitazione è necessario disporre di una macchina virtuale. Seguire i passaggi descritti in questa sezione per crearne una.

Prima di iniziare, trovare la variabile $azRegion che si trova nella prima riga di codice di esempio e aggiornare il valore in modo da riflettere l'area desiderata. Ad esempio, per specificare l'area Stati Uniti centrali, usare $azRegion = "Central US". Usare quindi il codice per distribuire una macchina virtuale all'interno di un nuovo gruppo di risorse. Vengono richiesti i valori di nome utente e password per l'account amministratore locale della macchina virtuale.

$azRegion = "[Your Region]"
$azResourceGroup = "myDemoResourceGroup"
$azVMName = "myDemoVM"
$azDataDiskName = "myDemoDataDisk"

New-AzVm `
    -Location $azRegion `
    -ResourceGroupName $azResourceGroup `
    -Name $azVMName `
    -Size "Standard_D2s_v3" `
    -VirtualNetworkName "myDemoVnet" `
    -SubnetName "myDemoSubnet" `
    -SecurityGroupName "myDemoNetworkSecurityGroup" `
    -PublicIpAddressName "myDemoPublicIpAddress"

L'output conferma la corretta creazione della macchina virtuale.

ResourceGroupName        : myDemoResourceGroup
Id                       : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoTestVM
VmId                     : [{GUID}]
Name                     : myDemoVM
Type                     : Microsoft.Compute/virtualMachines
Location                 : centralus
Tags                     : {}
HardwareProfile          : {VmSize}
NetworkProfile           : {NetworkInterfaces}
OSProfile                : {ComputerName, AdminUsername, WindowsConfiguration, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState        : Succeeded
StorageProfile           : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : mydemovm-abc123.Central US.cloudapp.azure.com

Viene effettuato il provisioning della macchina virtuale, nonché creati e collegati automaticamente due dischi.

  • Un disco del sistema operativo che ospita il sistema operativo della macchina virtuale.
  • Un disco temporaneo, che viene usato principalmente per operazioni quali l'elaborazione temporanea dei dati.

Aggiungere un disco dati

Se possibile, è consigliabile separare i dati dell'applicazione e dell'utente dai dati correlati al sistema operativo. Se è necessario archiviare i dati dell'utente o dell'applicazione nella macchina virtuale, in genere si creano e si collegano dischi dati aggiuntivi.

Seguire la procedura descritta in questa sezione per creare, collegare e inizializzare un disco dati nella macchina virtuale.

Creare il disco dati

Questa sezione illustra la creazione di un disco dati.

  1. Prima di poter creare un disco dati, è necessario creare un oggetto disco. L'esempio di codice seguente usa il cmdlet New-AzDiskConfig per configurare un oggetto disco.

    $diskConfig = New-AzDiskConfig `
        -Location $azRegion `
        -CreateOption Empty `
        -DiskSizeGB 128 `
        -SkuName "Standard_LRS"
    
  2. Dopo aver creato l'oggetto disco, usare il cmdlet New-AzDisk per effettuare il provisioning di un disco dati.

    $dataDisk = New-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $azDataDiskName `
        -Disk $diskConfig
    

    È possibile usare il cmdlet Get-AzDisk per verificare che il disco sia stato creato.

    Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $azDataDiskName
    

    In questo esempio, l'output conferma che il disco è stato creato. I valori delle proprietà DiskState e ManagedBy confermano che il disco non è ancora collegato.

    ResourceGroupName            : myDemoResourceGroup
    ManagedBy                    :
    ManagedByExtended            : {}
    OsType                       :
    DiskSizeGB                   : 128
    DiskSizeBytes                : 137438953472
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Unattached
    Name                         : myDemoDataDisk
    

Collegare il disco dati

Un disco dati deve essere collegato a una macchina virtuale prima che la macchina virtuale possa accedervi. Completare i passaggi descritti in questa sezione per creare un riferimento per la macchina virtuale, connettere il disco e aggiornare la configurazione della macchina virtuale.

  1. Ottenere la macchina virtuale a cui collegare il disco dati. Il codice di esempio seguente usa il cmdlet Get-AzVM per creare un riferimento alla macchina virtuale.

    $vm = Get-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    
  2. Collegare quindi il disco dati alla configurazione della macchina virtuale con il cmdlet Add-AzVMDataDisk.

    $vm = Add-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName `
        -CreateOption Attach `
        -ManagedDiskId $dataDisk.Id `
        -Lun 1
    
  3. Aggiornare infine la configurazione della macchina virtuale con il cmdlet Update-AzVM.

    Update-AzVM `
        -ResourceGroupName $azResourceGroup `
        -VM $vm
    

    Dopo una breve pausa, l'output conferma che il collegamento è riuscito.

    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    

Inizializzare il disco dati

Dopo aver collegato un disco dati alla macchina virtuale, il sistema operativo deve essere configurato per l'uso del disco. La sezione seguente fornisce indicazioni sulla connessione alla macchina virtuale remota e sulla configurazione del primo disco aggiunto.

  1. Accedere al portale di Azure.

  2. Individuare la macchina virtuale a cui è stato collegato il disco dati. Creare una connessione Remote Desktop Protocol (RDP) e accedere come amministratore locale.

  3. Dopo aver stabilito una connessione RDP alla macchina virtuale remota, selezionare il menu Start di Windows. Immettere PowerShell nella casella di ricerca e selezionare Windows PowerShell per aprire una finestra di PowerShell.

    Immagine di una finestra di connessione al desktop remoto.

  4. Nella finestra di PowerShell aperta, eseguire lo script seguente.

    Get-Disk | Where PartitionStyle -eq 'raw' |
        Initialize-Disk -PartitionStyle MBR -PassThru |
        New-Partition -AssignDriveLetter -UseMaximumSize |
        Format-Volume -FileSystem NTFS -NewFileSystemLabel "myDemoDataDisk" -Confirm:$false
    

    L'output conferma che l’inizializzazione è riuscita.

    DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining   Size
    ----------- --------------- ---------- --------- ------------ ----------------- -------------   ----
    F           myDemoDataDisk  NTFS       Fixed     Healthy      OK                    127.89 GB 128 GB
    

Espandere un disco

È possibile espandere i dischi di Azure per fornire una capacità di archiviazione aggiuntiva quando la macchina virtuale ha poco spazio disponibile nel disco.

Alcuni scenari richiedono l'archiviazione dei dati nel disco del sistema operativo. Ad esempio, potrebbe essere necessario supportare applicazioni legacy che installano componenti nell'unità del sistema operativo. Potrebbe anche essere necessario eseguire la migrazione di un PC fisico o di una macchina virtuale locale con un disco del sistema operativo più grande. In questi casi, potrebbe essere necessario espandere il disco del sistema operativo di una macchina virtuale.

La compattazione di un disco esistente non è supportata e può causare la perdita di dati.

Aggiornare le dimensioni del disco

Seguire questa procedura per ridimensionare il disco del sistema operativo o un disco dati.

  1. Selezionare la macchina virtuale che contiene il disco che verrà ridimensionato con il cmdlet Get-AzVM.

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. Prima di poter ridimensionare il disco di una macchina virtuale, è necessario arrestare la macchina virtuale. Usare il cmdlet Stop-AzVM per arrestare la macchina virtuale. Verrà richiesto di confermare.

    Importante

    Prima di avviare un arresto della macchina virtuale, verificare sempre che non siano presenti risorse o dati importanti che potrebbero essere persi.

    Stop-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Dopo una breve pausa, l'output conferma che il computer è stato arrestato correttamente.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:10:23 PM
    EndTime     : 9/13/2021 7:11:12 PM
    Error       :
    
  3. Dopo l'arresto della macchina virtuale, ottenere un riferimento al sistema operativo o al disco dati collegato alla macchina virtuale con il cmdlet Get-AzDisk.

    Nell'esempio seguente viene selezionato il disco del sistema operativo della macchina virtuale.

    $disk= Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $vm.StorageProfile.OsDisk.Name
    

    Nell'esempio seguente viene selezionato il primo disco dati della macchina virtuale.

        $disk= Get-AzDisk `
            -ResourceGroupName $azResourceGroup `
            -DiskName $vm.StorageProfile.DataDisks[0].Name
    
  4. Ora che si dispone di un riferimento al disco, impostare le dimensioni del disco su 250 GiB.

    Importante

    Le nuove dimensioni devono essere maggiori delle dimensioni del disco esistente. Il valore massimo consentito per i dischi del sistema operativo è 4,095 GB.

    $disk.DiskSizeGB = 250
    
  5. Aggiornare quindi l'immagine del disco con il cmdlet Update-AzDisk.

    Update-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -Disk $disk -DiskName $disk.Name
    

    L'immagine del disco viene aggiornata e l'output conferma le nuove dimensioni del disco.

    ResourceGroupName            : myDemoResourceGroup
    ManagedBy                    : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/virtualMachines/myDemoVM
    Sku                          : Microsoft.Azure.Management.Compute.Models.DiskSku
    TimeCreated                  : 9/135/2021 6:41:10 PM
    CreationData                 : Microsoft.Azure.Management.Compute.Models.CreationData
    DiskSizeGB                   : 250
    DiskSizeBytes                : 268435456000
    UniqueId                     : {GUID}
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Reserved
    Encryption                   : Microsoft.Azure.Management.Compute.Models.Encryption
    Id                           : /subscriptions/{GUID}/resourceGroups/myDemoResourceGroup/providers/Microsoft.Compute/disks/myDemoDataDisk
    Name                         : myDemoDataDisk
    Type                         : Microsoft.Compute/disks
    Location                     : centralus
    
    
  6. Infine, riavviare la macchina virtuale con il cmdlet Start-AzVM.

    Start-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Dopo una breve pausa, l'output conferma che il computer è stato avviato correttamente.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:44:54 PM
    EndTime     : 9/13/2021 7:45:15 PM
    Error       :
    

Espandere il volume del disco nel sistema operativo

Prima di poter sfruttare le nuove dimensioni del disco, è necessario espandere il volume all'interno del sistema operativo. Seguire la procedura seguente per espandere il volume del disco e sfruttare le nuove dimensioni del disco.

  1. Accedere al portale di Azure.

  2. Individuare la macchina virtuale a cui è stato collegato il disco dati. Creare una connessione RDP (Remote Desktop Protocol) ed eseguire l'accesso. Se non si dispone più dell'accesso a un account amministrativo, creare un oggetto credenziale per un nome utente e una password specificati con il cmdlet Get-Credential.

  3. Dopo aver stabilito una connessione RDP alla macchina virtuale remota, selezionare il menu Start di Windows. Immettere PowerShell nella casella di ricerca e selezionare Windows PowerShell per aprire una finestra di PowerShell.

    Immagine di una finestra di connessione al desktop remoto.

  4. Aprire PowerShell ed eseguire lo script seguente. Se opportuno, modificare il valore della variabile -DriveLetter. Ad esempio, per ridimensionare la partizione nell'unità F: usare $driveLetter = "F".

    $driveLetter = "[Drive Letter]" 
    $size = (Get-PartitionSupportedSize -DriveLetter $driveLetter) 
    Resize-Partition `
        -DriveLetter $driveLetter `
        -Size $size.SizeMax
    
  5. Ridurre a icona la finestra RDP e tornare ad Azure Cloud Shell. Usare il cmdlet Get-AzDisk per verificare che il disco sia stato ridimensionato correttamente.

    Get-AzDisk `
        -ResourceGroupName $azResourceGroup | Out-Host -Paging
    

Aggiornare un disco

Esistono diversi modi per rispondere alle modifiche apportate ai carichi di lavoro dell'organizzazione. Ad esempio, è possibile scegliere di aggiornare un HDD Standard con un SSD Premium per gestire un aumento della domanda.

Seguire i passaggi descritti in questa sezione per aggiornare un disco gestito da Standard a Premium.

  1. Selezionare la macchina virtuale che contiene il disco da aggiornare con il cmdlet Get-AzVM.

     $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. Prima di poter aggiornare il disco di una macchina virtuale, è necessario arrestare la macchina virtuale. Usare il cmdlet Stop-AzVM per arrestare la macchina virtuale. Verrà richiesto di confermare.

    Importante

    Prima di avviare un arresto della macchina virtuale, verificare sempre che non siano presenti risorse o dati importanti che potrebbero essere persi.

    Stop-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Dopo una breve pausa, l'output conferma che il computer è stato arrestato correttamente.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:10:23 PM
    EndTime     : 9/13/2021 7:11:12 PM
    Error       :
    
  3. Dopo l'arresto della macchina virtuale, ottenere un riferimento al sistema operativo o al disco dati collegato alla macchina virtuale con il cmdlet Get-AzDisk.

    Nell'esempio seguente viene selezionato il disco del sistema operativo della macchina virtuale.

    $disk= Get-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $vm.StorageProfile.OsDisk.Name
    

    Nell'esempio seguente viene selezionato il primo disco dati della macchina virtuale.

        $disk= Get-AzDisk `
            -ResourceGroupName $azResourceGroup `
            -DiskName $vm.StorageProfile.DataDisks[0].Name
    
  4. Ora che si dispone di un riferimento al disco, impostare lo SKU del disco su Premium_LRS.

    $disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new('Premium_LRS')
    
  5. Aggiornare quindi l'immagine del disco con il cmdlet Update-AzDisk.

    Update-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -Disk $disk -DiskName $disk.Name
    

    L'immagine del disco viene aggiornata. Usare il codice di esempio seguente per verificare che lo SKU del disco sia stato aggiornato.

    $disk.Sku.Name
    

    L'output conferma il nuovo SKU del disco.

    Premium_LRS
    
  6. Infine, riavviare la macchina virtuale con il cmdlet Start-AzVM.

    Start-AzVM `
        -ResourceGroupName $azResourceGroup `
        -Name $azVMName
    

    Dopo una breve pausa, l'output conferma che il computer è stato avviato correttamente.

    OperationId : abcd1234-ab12-cd34-123456abcdef
    Status      : Succeeded
    StartTime   : 9/13/2021 7:44:54 PM
    EndTime     : 9/13/2021 7:45:15 PM
    Error       :
    

Scollegare un disco dati

È possibile rimuovere un disco dati da una macchina virtuale quando si vuole collegarlo a un'altra macchina virtuale o quando non è più necessario. Per impostazione predefinita, i dischi rimossi non vengono eliminati per evitare la perdita involontaria di dati. Un disco rimosso continuerà a comportare costi per l’archiviazione fino a quando non verrà eliminato.

  1. Selezionare prima di tutto la macchina virtuale a cui è collegato il disco con il cmdlet Get-AzVM.

    $vm = Get-AzVM `
       -ResourceGroupName $azResourceGroup `
       -Name $azVMName
    
  2. Rimuovere quindi il disco dalla macchina virtuale con il cmdlet Remove-AzVMDataDisk.

    Remove-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName
    
  3. Aggiornare lo stato della macchina virtuale con il cmdlet Update-AzVM per rimuovere il disco dati.

    Update-AzVM `
        -ResourceGroupName $azResourceGroup `
        -VM $vm
    

    Dopo una breve pausa, l'output conferma che la macchina virtuale è stata aggiornata correttamente.

    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    

Eliminare un disco dati

Quando si elimina una macchina virtuale, i dischi dati ad essa collegati conservano il provisioning e continuano ad essere addebitati fino a quando non vengono eliminati. Questo comportamento predefinito aiuta a prevenire la perdita di dati causata dall'eliminazione involontaria.

È possibile usare lo script di PowerShell di esempio seguente per eliminare i dischi non collegati. Il recupero dei dischi è limitato a myDemoResourceGroup perché l'opzione -ResourceGroupName viene usata con il cmdlet Get-AzDisk.

# Get all disks in resource group $azResourceGroup
$allDisks = Get-AzDisk -ResourceGroupName $azResourceGroup

# Determine the number of disks in the collection
if($allDisks.Count -ne 0) {

    Write-Host "Found $($allDisks.Count) disks."

    # Iterate through the collection
    foreach ($disk in $allDisks) {

        # Use the disk's "ManagedBy" property to determine if it is unattached
        if($disk.ManagedBy -eq $null) {

            # Confirm that the disk can be deleted
            Write-Host "Deleting unattached disk $($disk.Name)."
            $confirm = Read-Host "Continue? (Y/N)"
            if ($confirm.ToUpper() -ne 'Y') { break }
            else {

                # Delete the disk
                $disk | Remove-AzDisk -Force 
                Write-Host "Unattached disk $($disk.Name) deleted."
            }
        }
    }
}

Il disco dati non collegato viene eliminato come mostrato dall'output.

Name      : abcd1234-ab12-cd34-ef56-abcdef123456
StartTime : 9/13/2021 10:14:05 AM
EndTime   : 9/13/2021 10:14:35 AM
Status    : Succeeded
Error     :

Pulire le risorse

Quando non sono più necessari, eliminare il gruppo di risorse, la macchina virtuale e tutte le risorse correlate. È possibile usare lo script di PowerShell di esempio seguente per eliminare il gruppo di risorse creato in precedenza durante questa esercitazione.

Attenzione

Prestare attenzione quando si elimina un gruppo di risorse. Per evitare la perdita di dati importanti, verificare sempre che non siano presenti risorse o dati importanti all’interno del gruppo di risorse prima dell'eliminazione.

    Remove-AzResourceGroup -Name $azResourceGroup

Viene chiesto di confermare l'operazione. Dopo una breve pausa, la risposta True conferma che myDemoResourceGroup è stato eliminato correttamente.

Confirm
Are you sure you want to remove resource group 'myDemoResourceGroup'
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
True

Passaggi successivi

Questa esercitazione ha descritto come:

  • Creare, connettere e inizializzare un disco dati
  • Verificare lo stato di un disco
  • Inizializzare un disco
  • Espandere e aggiornare un disco
  • Rimuovere ed eliminare un disco

Passare all'esercitazione successiva per informazioni su come automatizzare la configurazione della macchina virtuale.