Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili
Questo articolo illustra l'espansione dei dischi del sistema operativo e dei dischi dati per una macchina virtuale Linux. È possibile aggiungere dischi dati per fornire più spazio di archiviazione 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.
Questo disco ha una capacità massima di 4.095 GiB. Tuttavia, molti sistemi operativi vengono partizionati con record di avvio principale (MBR) per impostazione predefinita. Il record di avvio principale (MBR) limita le dimensioni utilizzabili a 2 TiB. Se sono necessari più di 2 TiB, valutare la possibilità di collegare dischi dati per l'archiviazione dei dati. Se è necessario archiviare i dati sul disco del sistema operativo e richiedere spazio aggiuntivo, convertirli in una tabella di partizione GUID (GPT).
Avviso
Assicurarsi sempre che il file system sia in uno stato integro e che il tipo di tabella della partizione del disco (GPT o MBR) possa supportare le nuove dimensioni. Eseguire il backup dei dati prima di eseguire operazioni di espansione del disco. Per altre informazioni, vedere Avvio rapido di Backup di Azure.
Identificare un oggetto disco dati di Azure all'interno del sistema operativo
Quando si espande un disco dati con diversi dischi dati nella macchina virtuale, potrebbe essere difficile correlare i numeri di unità logica (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 utilizzo del disco, punto di montaggio e dispositivo, con il comando df
.
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, che il /opt/db/data
file system è quasi pieno e si trova nella /dev/sdd1
partizione. L'output di df
mostra il percorso del dispositivo se il disco viene montato usando il percorso del dispositivo o l'UUID (preferito) nella scheda fstab. Si noti la colonna Tipo, che indica il formato del file system. Il formato è importante in un secondo momento.
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 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
Espansione 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.
Importante
Questa limitazione non si applica ai dischi SSD Premium v2 o Ultra.
Se un disco HDD Standard, SSD Standard o Ssd Premium è pari o inferiore a 4 TiB, 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.
- È supportato solo per i dischi dati.
- Non è supportato per i dischi condivisi.
- Deve essere installato e usare una delle opzioni seguenti:
- L'interfaccia della riga di comando di Azure più recente.
- Modulo di Azure PowerShell più recente.
- Il portale di Azure.
- Un modello di Azure Resource Manager con una versione dell'API che è
2021-04-01
o più recente.
- Non è disponibile in alcune macchine virtuali classiche. Usare questo script per ottenere un elenco di prodotti vm classici che supportano l'espansione senza tempi di inattività.
Espandere con dischi Ultra e SSD Premium v2
L'espansione di dischi Ultra e dischi SSD Premium v2 senza tempi di inattività presenta le limitazioni aggiuntive seguenti:
- Non è possibile espandere un disco mentre si verifica anche una copia in background dei dati su tale disco. Un esempio è quando viene eseguito il riempimento di un disco dagli snapshot.
- È possibile espandere le macchine virtuali usando controller NVMe con dischi Ultra o dischi SSD Premium v2 senza tempi di inattività con questa anteprima pubblica. Poiché questa versione è un'anteprima pubblica, è consigliabile usarla solo per testare la funzionalità di espansione senza tempi di inattività. Non espandere le macchine virtuali nell'ambiente di produzione.
Nelle aree seguenti è possibile espandere le macchine virtuali che usano controller NVMe con dischi Ultra o dischi SSD Premium v2 senza tempi di inattività. Usare il portale di Azure, l'interfaccia della riga di comando di Azure o il modulo Azure PowerShell:
- Sud-est asiatico
- Brasile meridionale
- Canada centrale
- Germania centro-occidentale
- India centrale (attualmente non supportata nelle macchine virtuali V6)
Nelle aree seguenti è possibile espandere le macchine virtuali che usano controller NVMe con dischi Ultra o dischi SSD Premium v2 senza tempi di inattività. Usare solo l'interfaccia della riga di comando di Azure o un modulo di Azure PowerShell. Non è attualmente possibile usare il portale di Azure:
- Asia orientale
- Stati Uniti centro-occidentali (attualmente non supportati nelle macchine virtuali V6)
Attendere fino a 10 minuti per riflettere le dimensioni corrette nelle macchine virtuali Windows e nelle macchine virtuali Linux. Per le macchine virtuali Linux, è necessario eseguire una funzione di ripetizione dell'analisi di Linux. Per una macchina virtuale Windows che non dispone di un carico di lavoro, è necessario eseguire una funzione di analisi di Windows. È possibile ripetere l'analisi immediatamente, ma se il tempo è entro 10 minuti, potrebbe essere necessario ripetere l'analisi per visualizzare le dimensioni corrette.
Espandere 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 si ha già una VM da usare, vedere Creare e preparare una macchina virtuale con dischi dati.
Negli esempi seguenti sostituire i nomi dei parametri segnaposto come myResourceGroup e myVM con i propri valori.
Importante
Se il disco soddisfa i requisiti in Espandi senza tempi di inattività, è possibile ignorare i passaggi 1 e 3.
La compattazione di un disco esistente non è supportata e potrebbe comportare la perdita di dati.
Dopo aver espanso i dischi, espandere il volume nel sistema operativo per sfruttare i vantaggi del disco più grande.
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
Per espandere il disco rigido virtuale è necessario deallocare la macchina virtuale. L'arresto della macchina virtuale tramite
az vm stop
non comporta il rilascio delle risorse di calcolo. Per rilasciare le risorse di calcolo, usareaz vm deallocate
.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,size:diskSizeGB,Tier:sku.tier}' \ --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
Quando si espande un disco gestito, le dimensioni vengono arrotondate a quelle del disco gestito più vicino.
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
È possibile usare molti strumenti per eseguire il ridimensionamento delle partizioni. Gli strumenti descritti nella parte restante di questo articolo sono gli stessi usati da determinati processi automatizzati, ad esempio cloud-init. Come descritto qui, lo growpart
strumento con il gdisk
pacchetto fornisce la compatibilità universale con i dischi GPT perché le versioni precedenti di alcuni strumenti come fdisk
non supportavano GPT.
Rilevare una dimensione del disco modificata
Se hai usato la procedura indicata in precedenza per espandere un disco dati senza tempi di inattività, le dimensioni del disco segnalate non cambiano fino a quando il dispositivo non viene risconfitato. Il rescanning avviene normalmente solo durante il processo di avvio. Per rieseguire la scansione su richiesta, usare la procedura seguente. Quando si usano i metodi in questo articolo, si noti che in questo esempio il disco dati è attualmente /dev/sda
e viene ridimensionato da 256 GiB a 512 GiB.
Identificare le dimensioni attualmente riconosciute nella prima riga di output di
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
Inserire un carattere
1
nel file di ripetizione dell'analisi per il dispositivo. Si noti il riferimento asda
nell'esempio. L'identificatore del disco cambia se viene ridimensionato un dispositivo disco diverso.echo 1 | sudo tee /sys/class/block/sda/device/rescan
Verificare che le nuove dimensioni del disco siano ora 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. Seguire queste istruzioni come linee guida. Sostituire il dispositivo del disco dati (ad esempio, /dev/sda
), numeri di partizione, nomi di volume, punti di montaggio e formati di file system, se necessario.
Considerate tutte le linee guida del sistema operativo Linux come generiche e come se potessero essere applicate a qualsiasi distribuzione, ma generalmente corrispondono alle convenzioni dell'editore del marketplace specificato. Consultare la documentazione di Red Hat per i requisiti del pacchetto su qualsiasi distribuzione basata su Red Hat o che dichiara compatibilità con Red Hat.
Aumentare le dimensioni del disco del sistema operativo
Le istruzioni seguenti si applicano a distribuzioni approvate da Linux.
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, la partizione radice del disco del sistema operativo e dei file system viene espansa automaticamente per usare tutto lo spazio contiguo libero sul disco radice da cloud-init. Per l'operazione di ridimensionamento deve essere disponibile una piccola quantità di spazio disponibile. In questo caso, la sequenza consiste nel:
- Aumentare le dimensioni del disco del sistema operativo come descritto in precedenza.
- Riavviare la macchina virtuale e quindi accedere alla macchina virtuale usando l'account utente radice .
- Verificare che il disco del sistema operativo visualizzi ora una dimensione del file system maggiore.
Come illustrato nell'esempio seguente, il disco del sistema operativo è stato ridimensionato a 100 GB dal portale. Il /dev/sda1
file system 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:~#
Espandere senza tempi di inattività del supporto SKU di macchina virtuale classico
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
}
}
}