Vai al contenuto

Estendere lo spazio su disco di un'appliance virtuale

Le appliance virtuali si riempiono: registrazioni, archivi, database e log si accumulano sulle partizioni che li ospitano. Questa pagina estende una di quelle partizioni affinché utilizzi tutto lo spazio disponibile sul disco — su un Mediation Controller o su un Edge Gateway.

L'operazione si esegue normalmente a caldo, senza impatto sulla produzione.

Una condizione, e non è negoziabile

I comandi seguenti presuppongono la disposizione dei dischi e il partizionamento forniti con l'appliance. Se i dischi o il partizionamento di questa macchina virtuale sono stati modificati manualmente, essi non si applicano: eliminano e ricreano una partizione, e lo farebbero partendo da presupposti non più validi. In tal caso, contattare il supporto Systancia anziché adattare i comandi da sé.

È tollerata una sola modifica: quella che questa stessa procedura ha già effettuato. La pagina è pensata per essere applicata di nuovo — un'appliance estesa in questo modo resta idonea, e ogni nuovo ampliamento del disco virtuale viene trasmesso alla partizione allo stesso modo.

Prima di iniziare

Eseguire questi quattro passaggi nell'ordine. Il primo è quello che rende recuperabile il resto.

1. Eseguire il backup della macchina virtuale

Eseguire un backup della macchina virtuale prima di ogni altra cosa. L'estensione riscrive la tabella delle partizioni: un backup è ciò che trasforma un'operazione fallita in un ripristino anziché in una reinstallazione.

2. Estendere il disco virtuale dall'hypervisor

Aggiungere lo spazio necessario al disco dell'appliance, dal proprio hypervisor. Questo passaggio da solo non cambia nulla all'interno della macchina — il sistema operativo continua a vedere la dimensione precedente finché non vengono eseguiti i comandi seguenti.

L'opzione è in grigio? Cercare uno snapshot

Un hypervisor rifiuta di estendere il disco di una macchina virtuale che contiene uno snapshot. Se l'opzione non è disponibile, verificare se ne resta uno e rimuoverlo — quindi estendere il disco.

3. Facoltativamente, creare uno snapshot

Una volta esteso il disco, è possibile creare uno snapshot della macchina, come via di ritorno immediata per i comandi che seguono. Crearlo dopo l'estensione del disco, mai prima: uno snapshot è precisamente ciò che impedirebbe tale estensione.

4. Applicare l'estensione all'interno dell'appliance

Solo allora eseguire i comandi della sezione successiva.

Quale partizione estendere

I comandi accettano una directory ed estendono la partizione che la contiene. È possibile indicare qualsiasi directory del sistema, con un'eccezione.

/boot è escluso

Non indicare /boot. I comandi agiscono sul volume LVM dell'appliance, dal quale /boot è escluso. Il campo sottostante rifiuta tale percorso.

In pratica, due directory per appliance crescono più rapidamente delle altre — sono il motivo abituale per cui si esegue questa procedura:

Appliance Directory Che cosa contiene
Mediation Controller /var I dati del Mediation Controller, tra cui il database.
Mediation Controller /var/log I log di sistema.
Edge Gateway /var/lib/ipdiva/carerecord/archives Gli archivi grafici delle sessioni registrate.
Edge Gateway /var/log I log di sistema.

Indicare una directory, non una partizione

Non è necessario sapere quale partizione o quale volume logico contenga che cosa: i comandi lo ricavano dalla directory che viene loro indicata. Eseguire df -h sull'appliance per vedere quale si sta esaurendo.

Estendere la partizione

Aprire una sessione SSH sull'appliance, come root, quindi eseguire i comandi corrispondenti.

È possibile personalizzare la variabile dei comandi seguenti:

Valore personalizzato Variabile Commento
TARGET_DIRECTORY Directory la cui partizione deve essere estesa — vedere Quale partizione estendere.

Oppure compilare il campo con una delle tre directory che si saturano per prime:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
directory=TARGET_DIRECTORY

echo 1 > /sys/class/block/sda/device/rescan

start_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}'`
mountpoint=`df $directory | awk 'NR==2 {print $1}'`

echo -e "d\n2\nn\ne\n2\n\n\nn\n$start_lvm_partition\n\nn\nt\n5\n8E\nw" | fdisk /dev/sda

pvresize /dev/sda5
lvresize -l +100%FREE $mountpoint
resize2fs $mountpoint
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
directory=TARGET_DIRECTORY

echo 1 > /sys/class/block/sda/device/rescan

start_last_lvm_partition=`fdisk -l /dev/sda | grep LVM | awk '{print $2}' | sort -nr | head -n1`
last_lvm_partition=`fdisk -l /dev/sda | grep $start_last_lvm_partition | awk '{print $1}'`
mountpoint=`df $directory | awk 'NR==2 {print $1}'`

echo -e "d\n${last_lvm_partition: -1}\nn\np\n${last_lvm_partition: -1}\n$start_last_lvm_partition\n\nn\nt\n${last_lvm_partition: -1}\n8E\nw" | fdisk /dev/sda

pvresize $last_lvm_partition
lvresize -l +100%FREE $mountpoint
resize2fs $mountpoint

Che cosa fanno i comandi

Concatenano quattro operazioni: far sì che il kernel veda la nuova dimensione del disco senza riavviare, riscrivere l'ultima partizione LVM affinché raggiunga la fine del disco, assegnare quello spazio a LVM, poi estendervi il file system. Le due varianti differiscono solo per la disposizione delle partizioni di ciascuna appliance — scegliere quella corrispondente alla macchina su cui ci si trova.

Verificare lo spazio libero prima e dopo

Eseguire df -h sulla directory prima e dopo. Il guadagno deve corrispondere allo spazio aggiunto al passaggio 2.

Se il file system non è cresciuto, non rieseguire subito i comandi: la tabella delle partizioni è già stata riscritta e una seconda passata sulla stessa dimensione del disco partirebbe da uno stato che essi non prevedono. Segnalare invece l'esito al supporto Systancia.

Rieseguirli è legittimo in un caso, ed è quello ordinario: quando è stato aggiunto altro spazio al disco virtuale. Ricominciare dal passaggio 1 — l'intera procedura si applica di nuovo, backup compreso.