Espandere i dischi rigidi virtuali in una macchina virtuale Linux

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Questo articolo descrive come espandere i dischi gestiti per una macchina virtuale Linux. È possibile aggiungere dischi dati per fornire spazio di archiviazione aggiuntivo ed è anche possibile espandere un disco dati esistente. Le dimensioni predefinite del disco rigido virtuale per il sistema operativo sono in genere di 30 GB in una macchina virtuale Linux in Azure. Questo articolo illustra l'espansione di dischi del sistema operativo o dischi dati. Non è possibile espandere le dimensioni dei volumi con striping.

Un disco del sistema operativo ha una capacità massima di 4.095 GiB. Per impostazione predefinita, tuttavia, molti sistemi operativi vengono partizionati con il record di avvio master (MBR). Il record di avvio principale (MBR) limita le dimensioni utilizzabili a 2 TiB. Se sono necessari più di 2 TiB, creare e collegare dischi dati e usarli per l'archiviazione dei dati. Se è necessario archiviare i dati sul disco del sistema operativo e richiedere spazio aggiuntivo, convertirli in tabella di partizione GUID (GPT).

Avviso

Assicurarsi sempre che il file system sia in uno stato integro, il tipo di tabella della partizione del disco (GPT o MBR) supporterà le nuove dimensioni e assicurarsi che i dati vengano sottoposti a backup prima di eseguire operazioni di espansione del disco. Per altre informazioni, vedere la guida introduttiva Backup di Azure.

Identificare l'oggetto disco dati di Azure all'interno del sistema operativo

Nel caso di espansione di un disco dati quando sono presenti diversi dischi dati nella macchina virtuale, potrebbe essere difficile correlare i LUN di Azure ai dispositivi Linux. Se il disco del sistema operativo richiede l'espansione, viene chiaramente etichettato nel portale di Azure come disco del sistema operativo.

Per iniziare, identificare la relazione tra l'utilizzo del disco, il punto di montaggio e il dispositivo con il df comando .

df -Th
Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/sda1                 xfs        97G  1.8G   95G   2% /
<truncated>
/dev/sdd1                 ext4       32G   30G  727M  98% /opt/db/data
/dev/sde1                 ext4       32G   49M   30G   1% /opt/db/log

Qui è possibile vedere, ad esempio, il /opt/db/data file system è quasi pieno e si trova nella /dev/sdd1 partizione. L'output di df mostra il percorso del dispositivo indipendentemente dal fatto che il disco sia montato dal percorso del dispositivo o dall'UUID (preferito) nella scheda fstab. Prendere nota anche della colonna Tipo, che indica il formato del file system. Questo è importante in seguito.

Individuare ora il LUN correlato a /dev/sdd esaminando il contenuto di /dev/disk/azure/scsi1. L'output del comando seguente ls mostra che il dispositivo noto come /dev/sdd all'interno del sistema operativo Linux si trova in LUN1 quando si esamina il portale di Azure.

sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep  9 21:54 ./
drwxr-xr-x. 4 root root  80 Sep  9 21:48 ../
lrwxrwxrwx. 1 root root  12 Sep  9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root  12 Sep  9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root  13 Sep  9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root  12 Sep  9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root  13 Sep  9 21:54 lun2-part1 -> ../../../sde1

Espandere un disco gestito di Azure

Espandi senza tempi di inattività

È possibile espandere i dischi gestiti senza deallocare la macchina virtuale. L'impostazione della cache host del disco non cambia se è possibile espandere o meno un disco dati senza deallocare la macchina virtuale.

Questa funzionalità presenta le limitazioni seguenti:

  • Supportato solo per i dischi dati.
  • Se un disco ha dimensioni pari o minori di 4 TiB, è necessario deallocare la macchina virtuale e scollegare il disco prima di espanderlo oltre 4 TiB. Se un disco ha dimensioni già maggiori di 4 TiB, è possibile espanderlo senza deallocare la macchina virtuale e scollegare il disco.
  • Non supportato per dischi Ultra o dischi SSD Premium v2.
  • Non supportato per i dischi condivisi.
  • Installare e usare:
  • Non disponibile in alcune macchine virtuali classiche. Usare questo script per ottenere un elenco di SKU di MACCHINE virtuali classiche che supportano l'espansione senza tempi di inattività.

Creare un disco gestito di Azure

Assicurarsi di avere installato la versione più recente dell'interfaccia della riga di comando di Azure e di aver eseguito l'accesso a un account Azure tramite az login.

Questo articolo richiede una VM esistente in Azure con almeno un disco dati collegato e preparato. Se non è già disponibile una macchina virtuale che è possibile usare, vedere Creare e preparare una macchina virtuale con dischi dati.

Negli esempi seguenti sostituire i nomi dei parametri di esempio con i propri valori, ad esempio gruppodi risorse e macchinavirtuale.

Importante

Se il disco soddisfa i requisiti in Espandi senza tempi di inattività, è possibile ignorare il passaggio 1 e 3.

  1. Non è possibile eseguire operazioni sui dischi rigidi virtuali mentre la macchina virtuale è in esecuzione. Deallocare la macchina virtuale con az vm deallocate. L'esempio seguente dealloca la VM denominata myVM nel gruppo di risorse myResourceGroup:

    az vm deallocate --resource-group myResourceGroup --name myVM
    

    Nota

    Per espandere il disco rigido virtuale è necessario deallocare la macchina virtuale. L'arresto della macchina virtuale con az vm stop non rilascia le risorse di calcolo. Per rilasciare le risorse di calcolo, usare az vm deallocate.

  2. Vedere un elenco di dischi gestiti presenti nel gruppo di risorse con az disk list. L'esempio seguente mostra un elenco di dischi gestiti nel gruppo di risorse denominato myResourceGroup:

    az disk list \
        --resource-group myResourceGroup \
        --query '[*].{Name:name,Gb:diskSizeGb,Tier:accountType}' \
        --output table
    

    Espandere il disco richiesto con az disk update. L'esempio seguente espande il disco gestito denominato myDataDisk per portarlo a 200 GB:

    az disk update \
        --resource-group myResourceGroup \
        --name myDataDisk \
        --size-gb 200
    

    Nota

    Quando si espande un disco gestito, le dimensioni vengono arrotondate a quelle del disco gestito più vicino. Per consultare una tabella delle dimensioni e dei livelli dei dischi disponibili, vedere Panoramica di Azure Managed Disks - Prezzi e fatturazione.

  3. Avviare la macchina virtuale con az vm start. L'esempio seguente avvia la VM denominata myVM nel gruppo di risorse myResourceGroup:

    az vm start --resource-group myResourceGroup --name myVM
    

Espandere il file system e una partizione del disco

Nota

Sebbene siano disponibili molti strumenti che possono essere usati per eseguire il ridimensionamento della partizione, gli strumenti descritti nel resto di questo documento sono gli stessi strumenti usati da determinati processi automatizzati, ad esempio cloud-init. Come descritto qui, lo growpart strumento con il gdisk pacchetto fornisce la compatibilità universale con dischi GPT (GUID Partition Table), come le versioni precedenti di alcuni strumenti come fdisk non supportavano GPT.

Rilevamento di una dimensione del disco modificata

Se un disco dati è stato espanso senza tempi di inattività usando la procedura indicata in precedenza, le dimensioni del disco non verranno modificate fino a quando il dispositivo non viene riscansato, che normalmente avviene solo durante il processo di avvio. Questa nuova analisi può essere chiamata su richiesta con la procedura seguente. In questo esempio è stato rilevato l'uso dei metodi in questo documento che il disco dati è attualmente /dev/sda e che è stato ridimensionato da 256 GiB a 512 GiB.

  1. Identificare le dimensioni attualmente riconosciute nella prima riga di output da fdisk -l /dev/sda

    sudo fdisk -l /dev/sda
    
    Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
    Disk model: Virtual Disk
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x43d10aad
    
    Device     Boot Start       End   Sectors  Size Id Type
    /dev/sda1        2048 536870878 536868831  256G 83 Linux
    
  2. Inserire un 1 carattere nel file di ripetizione dell'analisi per il dispositivo. Si noti che il riferimento a sda, questo cambierebbe se un dispositivo disco diverso è stato ridimensionato.

    echo 1 | sudo tee /sys/class/block/sda/device/rescan
    
  3. Verificare che le nuove dimensioni del disco siano state riconosciute

    sudo fdisk -l /dev/sda
    
    Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors
    Disk model: Virtual Disk
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0x43d10aad
    
    Device     Boot Start       End   Sectors  Size Id Type
    /dev/sda1        2048 536870878 536868831  256G 83 Linux
    

Nella parte restante di questo articolo viene usato il disco del sistema operativo per gli esempi della procedura per aumentare le dimensioni di un volume a livello di sistema operativo. Se il disco espanso è un disco dati, usare le indicazioni precedenti per identificare il dispositivo disco dati e seguire queste istruzioni come linee guida, sostituendo il dispositivo disco dati (ad esempio /dev/sda), numeri di partizione, nomi di volume, punti di montaggio e formati di file system, se necessario.

Tutte le linee guida del sistema operativo Linux devono essere visualizzate come generiche e possono essere applicate in qualsiasi distribuzione, ma in genere corrispondono alle convenzioni dell'editore del marketplace denominato. Fare riferimento ai documenti di Red Hat per i requisiti del pacchetto in qualsiasi distribuzione che richiede la compatibilità di Red Hat, ad esempio CentOS e Oracle.

Aumentare le dimensioni del disco del sistema operativo

Le istruzioni seguenti si applicano alle distribuzioni Linux approvate.

Nota

Prima di procedere, creare una copia di backup completa della macchina virtuale o almeno creare uno snapshot del disco del sistema operativo.

In Ubuntu 16.x e versioni successive cloud-init espanderà automaticamente la partizione radice del disco del sistema operativo e dei file system per usare tutti gli spazi contigui gratuiti sul disco radice, purché sia presente un piccolo spazio disponibile per l'operazione di ridimensionamento. Per questa circostanza la sequenza è semplicemente

  1. Aumentare le dimensioni del disco del sistema operativo come descritto in precedenza
  2. Riavviare la macchina virtuale e quindi accedere alla macchina virtuale usando l'account utente radice .
  3. Verificare che il disco del sistema operativo ora visualizzi dimensioni del file system aumentate.

Come illustrato nell'esempio seguente, il disco del sistema operativo è stato ridimensionato a 100 GB dal portale. Il file system /dev/sda1 montato su / ora visualizza 97 GB.

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  314M     0  314M   0% /dev
tmpfs          tmpfs      65M  2.3M   63M   4% /run
/dev/sda1      ext4       97G  1.8G   95G   2% /
tmpfs          tmpfs     324M     0  324M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     324M     0  324M   0% /sys/fs/cgroup
/dev/sda15     vfat      105M  3.6M  101M   4% /boot/efi
/dev/sdb1      ext4       20G   44M   19G   1% /mnt
tmpfs          tmpfs      65M     0   65M   0% /run/user/1000
user@ubuntu:~#

Espansione senza tempi di inattività del supporto dello SKU della macchina virtuale classica

Se si usa uno SKU di macchina virtuale classico, potrebbe non supportare l'espansione dei dischi senza tempi di inattività.

Usare lo script di PowerShell seguente per determinare gli SKU di macchina virtuale con cui è disponibile:

Connect-AzAccount
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}

foreach($vmSize in $vmSizes){
    foreach($capability in $vmSize.Capabilities)
    {
       if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
        {
            $vmSize.Name
       }
   }
}