Come estendere una partizione PV Linux online dopo la crescita del disco virtuale


14

VMware consente di estendere le dimensioni di un disco virtuale online, quando la VM è in esecuzione. I prossimi passi previsti per il sistema Linux sono:

  1. estendi la partizione: elimina e creane una più grande con fdisk
  2. estendere le dimensioni del PV con pvresize
  3. utilizzare le estensioni gratuite per le lvresizeoperazioni
  4. e quindi resize2fsper il file system

Ma sono bloccato sul primo passo: fdiske sfdiskcontinuo a visualizzare le vecchie dimensioni per il disco.

Il mio disco è un disco virtuale SCSI collegato grazie al controller logico LSI virtuale.

Come aggiornare la dimensione del disco virtuale e le informazioni sulla tabella delle partizioni disponibili nel kernel Linux senza riavviare ?

Per quanto ne so tutti i passaggi sono possibili per Windows in esecuzione, senza riavvio e anche senza alcuna azione da parte dell'utente grazie agli strumenti VMWare. Su Linux, mi aspetto di fare anche tutti i passaggi online e so già che i passaggi 2, 3 e 4 funzionano online. Ma il primo: modificare le dimensioni della partizione dichiarate nella tabella delle partizioni (ancora) sembra richiedere un riavvio.

Aggiornamento: Il mio sistema è un Debian Lenny con kernel 2.6.26 e il disco che ho esteso è il disco principale con un PV di grandi dimensioni contenente il "root" LV per "/".

Risposte:


9

Puoi farlo senza riavviare. pvresize non ridimensiona il volume fisico fino a quando la partizione non viene aggiornata con lo spazio aggiunto. È necessario copiare la partizione e ricrearla con la nuova dimensione completa del disco, dopo aver rieseguito la scansione delle unità affinché possa vedere lo spazio aggiuntivo in primo luogo.

Maggiori informazioni: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/


Sono d'accordo, ma qualunque cosa ho fatto per ripetere la scansione dell'unità SCSI, non ho mai visto le nuove dimensioni del disco in fdisk, quindi sono rimasto bloccato fino al primo riavvio. E "partprobe" è un nuovo comando per me. Devo assolutamente provare questa procedura ... Grazie.
Yves Martin,

Per informazioni partprobeè un comando dal partedprogetto.
Yves Martin,

Se non vedevi le dimensioni del nuovo disco, fdiskil problema non riguarda LVM. Dovrei chiederti come stavi eseguendo la scansione dal momento che di solito mi rileva la nuova dimensione del disco. Inoltre non partizionerò i dischi su cui userò LVM se posso aiutarlo. Se si utilizza pvcreatel'intero disco, l'aggiornamento della tabella delle partizioni è solo un'altra cosa da fare quando si va a ridimensionarlo.
Bratchley,

14

L'altra risposta fornita non risponde alla tua domanda, ho identificato il comando corretto per ripetere la scansione di un disco già collegato.

Dobbiamo ripetere la scansione del tuo disco già collegato, prima identificare quale disco vuoi ripetere la scansione.

ls /sys/class/scsi_disk/

Nel mio esempio, vedo un link simbolico chiamato 0:0:0:0, quindi eseguiamo nuovamente la scansione di questo disco scsi.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

Ho appena esteso anche il mio disco VMware e ho dovuto cercare altre risposte per trovare il comando corretto. Speriamo che questo salverà i futuri ricercatori da inutili tentativi.


Ha funzionato perfettamente!
Emil Styrke,

Puoi anche trovare i dischi con il loro nome "/ dev /" in /sys/block/modo da poter usare ad es /sys/block/sda/device/rescan.
mwfearnley,

4

Per quanto il file system di root /sia montato sul disco che è stato ridimensionato, la tabella delle partizioni e le dimensioni del disco non vengono aggiornate da una nuova scansione SCSI con Linux 2.6.26.

Spero davvero che presto andrà meglio con le versioni più recenti del kernel.

Quindi ho dovuto:

  • riavviare una prima volta per vedere la nuova dimensione del disco in fdisk
  • eliminare la vecchia partizione PV primaria in fdisk
  • creare una voce di partizione con lo stesso numero e avviare il settore fino alla fine del disco
  • riavviare una seconda volta O eseguire partprobedal partedpacchetto solo se /non è montato lì
  • Ora posso correre pvresizeper ottenere nuovo spazio libero lvextende resize2fsallocare un po 'più di spazio in un file system

Mi è stato consigliato semplicemente di scartare quella stupida vecchia tabella delle partizioni ed eseguire pvcreatedirettamente sul dispositivo poiché Grub2 è in grado di caricare un'immagine del kernel direttamente da un file system su una partizione LVM. Ma una tale configurazione non è affatto ovvia con gli installatori di distribuzione.

Aggiornamento: Ho appena verificato con Debian GNU / Linux Jessie 8.2 con kernel 3.16 e parted3.2, partprobeora ha esito positivo dopo l'edizione della tabella delle partizioni cfdisksenza riavvio. pvresizefunziona subito dopo.

Se si desidera estendere un PV memorizzato come partizione PC logica, ad esempio /dev/sda5su partizione primaria estesa /dev/sda2, non utilizzare fdiskma preferire parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5

I comandi alla fine non funzionano # parted / dev / sda2 -1 -> parted: opzione non valida - '1'
Oskar Berggren

3

È necessario ripetere la scansione dei dischi prima di poter creare la partizione più grande.

In Centos puoi farlo entro

ls /sys/class/scsi_host

quindi per ogni host

echo "- - -" > /sys/class/scsi_host/host#/scan

(sostituisci # con il numero)

C'è anche un altro passaggio a quanto sopra che sta espandendo ext o qualunque file system che stai usando dopo aver ridimensionato la partizione.

Dovrai comunque smontare quella partizione anche se ad un certo punto. Quello che tendiamo a fare è aggiungere un secondo disco vmware e usare lvm per estenderlo sul nuovo disco (e ridurre il vecchio se si tratta di un rimpiazzo) poiché ciò consente che l'intero processo avvenga dal vivo.


Il mio sistema è un Debian e corro rescan-scsi-bus.sh da scsitools. Penso che sia equivalente al comando che proponi su / sys / class / scsi_host ma "fdisk" mostra ancora le vecchie dimensioni sul mio disco ...
Yves Martin

Riconosce un nuovo disco VMware quando si esegue nuovamente la scansione?
JamesRyan,

No. Questo disco esiste già, non è nuovo. La dimensione del disco è stata aumentata nel client vSphere.
Yves Martin,

Lo capisco, ma dovresti provare ad aggiungerne uno nuovo per vedere se la tua scansione lo risolve per restringere il problema
JamesRyan,

Sono d'accordo con te e so già per pratica che l'aggiunta di un nuovo disco SCSI a una macchina Linux può essere eseguita online per tutti i passaggi elencati. Poiché la VM può funzionare per 10 anni ... Temo il numero totale di dischi in un prossimo futuro ...
Yves Martin

2

Come risposta aggiornata, su Ubuntu 16.04.1 sono stato in grado di fare quanto segue per ridimensionare un volume da 1024 GB a 1,4 TB:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

Non fdiskrichiesto e lo spazio era immediatamente disponibile.


3
Sei fortunato. Il motivo è perché non hai una tabella delle partizioni ma il PV diretto è attivo /dev/sdb, che è probabilmente il tuo disco secondario dei dati dell'applicazione, ma non il tuo primo disco con il sistema (per menzionare che configuro i miei sistemi allo stesso modo!). La mia domanda riguardava l'estensione dell'ultimo PV / partizione di un tale "disco di sistema" (clonato da un modello), per quanto le distribuzioni Linux non supportino l'installazione su PV diretto mentre il kernel Linux e GRUB dovrebbero essere in grado di avviarsi ed eseguire sul disco di sistema senza alcuna tabella delle partizioni.
Yves Martin,

Punto valido. Per coloro che lo trovano tramite Google: tienilo a mente.
peelman,

1

Non ci hai fornito dettagli sufficienti per dirti gli esatti comandi di cui hai bisogno, ma essenzialmente dovrai usare il lvextendcomando per estendere il volume logico, quindi il e2fsckcomando e quindi il resize2fscomando per espandere effettivamente il tuo filesystem. Ognuno di questi comandi avrà bisogno di parametri aggiuntivi, in particolare le informazioni sul dispositivo e sul file system, che non possiamo fornire, ma dovrai conoscerli, basta usare l'opzione --help per ciascun comando per dirti come usarli in modo specifico, inoltre che probabilmente finisce per utilizzare la pvdisplay, lvdisplaye mountcomandi per contribuire a colmare questi parametri.


Conosco tutti i comandi per altri passaggi. La mia domanda è: come far crescere la partizione primaria utilizzata come PV senza riavviare?
Yves Martin,

Scusa, intendi solo pvresize?
Chopper3

Sono d'accordo che la mia domanda non era abbastanza esplicita (anche con la parte in grassetto). pvresize è citato come passaggio 2. Sono bloccato al passaggio 1: aumentare la dimensione della partizione "PCAT".
Yves Martin,

Hai già aumentato la dimensione .vmdk tramite VSClient?
Chopper3

3
Per confermare, /sbin/rescan-scsi-busnon modificare le dimensioni del disco esistente. Ma lo echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'fa
Yves Martin il

0

Nessuno ha pubblicato un set completo di comandi, quindi eccoci qui:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

Mi dispiace disturbare, ma trovo che aggiungere disco, partizione e PV ad ogni crescita del disco sia "brutto" e non ridimensionare. La mia domanda riguardava l'estensione di una partizione primaria esistente su disco senza aggiungere disco o partizione o PV.
Yves Martin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.