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
  • 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 Provalo 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.

Questa procedura richiede una macchina virtuale esistente e usa le $azRegionvariabili , $azResourceGroup, $azVMNamee $azDataDiskName definite in Creare una macchina virtuale.

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

Creare il disco dati

In questa sezione viene creato un disco dati gestito usando le $azRegionvariabili , $azResourceGroupe $azDataDiskName definite in Creare una macchina virtuale.

  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.

Questa sezione usa le $azResourceGroupvariabili , $azVMNamee $azDataDiskName e il disco gestito scollegato a cui fa $dataDisk riferimento in Creare il disco dati.

  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.

Questa sezione richiede l'accesso amministratore locale alla macchina virtuale denominata da $azVMName e al disco dati non inizializzato collegato da Collega il disco dati.

  1. Accedere al portale di Azure.

  2. Individuare la macchina virtuale a cui è stato collegato il disco dati. Creare una connessione Desktop remoto 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 un disco del sistema operativo gestito Azure o un disco dati quando la macchina virtuale richiede una maggiore capacità di archiviazione.

Questa procedura richiede una macchina virtuale esistente con un disco del sistema operativo gestito collegato o un disco dati e usa le $azResourceGroup variabili e $azVMName definite in Creare una macchina virtuale.

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'unità del sistema operativo più grande. In questi casi, potrebbe essere necessario espandere il disco del sistema operativo di una macchina virtuale.

Aggiornare le dimensioni del disco

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

Importante

Se il disco soddisfa i requisiti in Espandi senza tempi di inattività, è possibile ignorare i passaggi 2 e 6.

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

Dopo aver espanso i dischi, è necessario espandere il volume nel sistema operativo per sfruttare i vantaggi del disco più grande.

  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 un disco di macchina virtuale, è necessario arrestare la macchina virtuale. Usare il cmdlet Stop-AzVM per arrestare la macchina virtuale. Viene chiesto di confermare l'operazione.

    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 la macchina si è arrestata 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 il disco gestito usando il cmdlet Update-AzDisk .

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

    Il disco gestito viene aggiornato 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 usando 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 con il disco del sistema operativo espanso o il disco dati. Creare una connessione RDP (Desktop remoto 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 usando 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. Nella finestra di PowerShell nella macchina virtuale remota usare il cmdlet Get-Volume per verificare che il volume sia stato espanso correttamente.

    Get-Volume -DriveLetter $driveLetter
    

    Verificare che il valore Size rifletta la dimensione del volume espanso.

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.

Questa procedura richiede una macchina virtuale esistente con un hdd Standard collegato o un'unità SSD Standard. Usa le variabili $azResourceGroup e $azVMName definite in Crea una macchina virtuale.

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 la macchina si è arrestata 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 il disco gestito usando il Update-AzDisk cmdlet .

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

    Il disco gestito viene aggiornato. Usare il codice di esempio seguente per verificare che lo SKU del disco sia 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.

Questa procedura richiede una macchina virtuale esistente con un disco dati collegato e usa le $azResourceGroupvariabili , $azVMNamee $azDataDiskName definite in Creare una macchina virtuale.

  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. Scollegare quindi il disco dalla macchina virtuale usando 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 restano assegnati e continuano a generare costi fino a quando non vengono eliminati. Questo comportamento predefinito aiuta a prevenire la perdita di dati causata dall'eliminazione involontaria.

Questa procedura richiede un disco dati scollegato e usa le $azResourceGroup variabili e $azDataDiskName definite in Creare una macchina virtuale.

Lo script di PowerShell seguente usa il cmdlet Get-AzDisk per recuperare il disco dati denominato da $azDataDiskName. Lo script conferma che il disco è scollegato prima di usare il cmdlet Remove-AzDisk per eliminarlo.

$dataDisk = Get-AzDisk `
    -ResourceGroupName $azResourceGroup `
    -DiskName $azDataDiskName `
    -ErrorAction Stop

if ($null -ne $dataDisk.ManagedBy) {
    throw "Disk $($dataDisk.Name) is still attached. Detach it before deletion."
}

$confirm = Read-Host "Delete unattached disk $($dataDisk.Name)? (Y/N)"
if ($confirm.ToUpperInvariant() -eq 'Y') {
    Remove-AzDisk `
        -ResourceGroupName $azResourceGroup `
        -DiskName $dataDisk.Name `
        -Force
    Write-Host "Unattached disk $($dataDisk.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 le risorse non sono più necessarie, eliminare il gruppo di risorse, la macchina virtuale e tutte le risorse correlate. Usare il cmdlet Remove-AzResourceGroup 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 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

In questo tutorial hai imparato come:

  • Creare, connettere e inizializzare un disco dati
  • Verificare lo stato di 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.