Esercitazione: Gestire i dischi con Azure PowerShell

Le macchine virtuali di Azure usano dischi per archiviare sistemi operativi, applicazioni e dati. Quando si crea una macchina virtuale, è importante scegliere le dimensioni e la configurazione del disco 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, collegare e inizializzare un disco dati
  • Verificare lo stato di un disco
  • Inizializzare un disco
  • Espandere e aggiornare un disco
  • Scollegare ed eliminare un disco

Prerequisiti

È necessario avere 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 in questo articolo, senza dover installare alcun elemento nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un codice o di un blocco di comandi. Selezionando Prova non viene copiato automaticamente il codice o il comando in Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Button to launch Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o blocco di comandi) 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 oppure selezionando CMD+MAIUSC+V in macOS.

  4. Selezionare INVIO per eseguire il codice o il comando.

Creazione di una macchina virtuale

Gli esercizi di questa esercitazione richiedono una macchina virtuale. Seguire i passaggi descritti in questa sezione per crearne uno.

Prima di iniziare, trovare la $azRegion variabile 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 e vengono 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

Quando 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 creeranno e si collegaranno 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 DiskState proprietà 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 un allegato riuscito.

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

Inizializzare il disco dati

Dopo che un disco dati è collegato alla macchina virtuale, il sistema operativo deve essere configurato per l'uso del disco. La sezione seguente fornisce indicazioni su come connettersi alla macchina virtuale remota e configurare il primo disco aggiunto.

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

    Image of a remote desktop connection window.

  4. Nella finestra aperta di PowerShell 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 un'inizializzazione corretta.

    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 capacità di archiviazione aggiuntiva quando la macchina virtuale è insufficiente nello spazio su disco disponibile.

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 locale o di una macchina virtuale con un'unità 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 Get-AzVM cmdlet .

     $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 Stop-AzVM cmdlet 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 Get-AzDisk cmdlet .

    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 è 4.095 GiB per i dischi del sistema operativo.

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

    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 Start-AzVM cmdlet .

    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 questa procedura 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 ha più accesso a un account amministrativo, creare un oggetto credenziali 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.

    Image of a remote desktop connection window.

  4. Aprire PowerShell ed eseguire lo script seguente. Modificare il valore della variabile in base alle -DriveLetter esigenze. 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 al minimo la finestra RDP e tornare ad Azure Cloud Shell. Usare il Get-AzDisk cmdlet 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 a un'unità SSD Premium per gestire una maggiore 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 Get-AzVM cmdlet .

     $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 Stop-AzVM cmdlet 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 Get-AzDisk cmdlet .

    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 Update-AzDisk cmdlet .

    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 Start-AzVM cmdlet .

    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 scollegare un disco dati da una macchina virtuale quando si vuole collegarlo a una macchina virtuale diversa o quando non è più necessario. Per impostazione predefinita, i dischi scollegati non vengono eliminati per evitare la perdita involontaria di dati. Un disco scollegato continuerà a comportare addebiti per l'archiviazione fino a quando non viene eliminato.

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

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

    Remove-AzVMDataDisk `
        -VM $vm `
        -Name $azDataDiskName
    
  3. Aggiornare lo stato della macchina virtuale con il Update-AzVM cmdlet 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 collegati alla macchina virtuale rimangono di cui viene eseguito il provisioning e continuano a incorrere in addebiti fino a quando non vengono eliminati. Questo comportamento predefinito consente di evitare la perdita di dati causata dall'eliminazione involontaria.

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

# 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 scollegato viene eliminato come illustrato 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 in 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 contenuti nel gruppo di risorse prima dell'eliminazione.

    Remove-AzResourceGroup -Name $azResourceGroup

Viene richiesto di confermare. Dopo una breve pausa, la True risposta 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, collegare e inizializzare un disco dati
  • Verificare lo stato di un disco
  • Inizializzare un disco
  • Espandere e aggiornare un disco
  • Scollegare ed eliminare un disco

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