LVM ha bisogno di una tabella delle partizioni?


18

Sembra che io sia in grado di fare con successo un pvcreate su un dispositivo a blocchi grezzi, senza mai fare il passo della creazione di una tabella delle partizioni. Sono quindi in grado di creare un gruppo di volumi, un volume logico e infine un filesystem, montarlo e testare tramite dd.

Sembra funzionare, ma ho bisogno di un controllo di integrità. È una cattiva idea?

Come posso creare una tabella delle partizioni GPT o MBR su un dispositivo a blocchi non elaborati?

Come uso parted per mostrare quale tipo di tabella delle partizioni è in uso? Ho provato a fare:

parted, seleziona / dev / sdb, stampa e ottengo:

Errore: / dev / sdb: etichetta disco non riconosciuta

Eppure l'unità è attualmente in uso e posso leggere e scrivere su di essa. È l'output previsto quando si esegue LVM su un dispositivo a blocchi non elaborato senza una tabella delle partizioni? qualche idea?

Grazie!

Risposte:


29

Anche se LVM stesso non si preoccupa di avere una vera partizione, una ragione per crearla comunque è informare i programmi di partizionamento che c'è "qualcosa lì". Uno scenario da incubo è un nuovo amministratore di sistema che diagnostica un problema di avvio su un server, avvia un programma di partizionamento, vede dischi non partizionati e conclude che l'unità è corrotta.

Non vedo alcun aspetto negativo nella creazione di una partizione LVM. Fai?


1
+1 per lo scenario. Troppo probabile nella vita reale.
Hennes,

1
+1 per essere perspicaci.
Alexander Janssen,

Grazie per la risposta! Sicuramente non vedo alcun aspetto negativo nell'avere una tabella delle partizioni. Volevo solo confermare con un controllo di integrità. Quindi l'ordine corretto dei livelli è: blocco dispositivo, tabella delle partizioni, gruppo di volumi, volume logico, filesystem, è corretto?
pantaloni da gatto,

8
L'aspetto negativo: se si espande il dispositivo a blocchi e non si utilizzava una tabella delle partizioni, è possibile espandere immediatamente il volume fisico con pvresize. Se hai utilizzato una tabella delle partizioni, devi eliminare la partizione e ricrearla prima con dimensioni maggiori.
sciurus,

1
Fare attenzione è buono, ma respingere la domanda non è una grande risposta. Non è necessario per questa partizione e ci sono aspetti negativi nell'avere una partizione.
bryn,

16

Mentre puoi semplicemente creare un pv dal dispositivo a blocchi non elaborati, di solito cerco di evitarlo in quanto può creare confusione su ciò per cui viene utilizzato il dispositivo a blocchi. Potrebbe anche interrompere alcune delle routine di individuazione automatica che LVM può utilizzare se mancano i file di configurazione.

Ecco un esempio dell'utilizzo di parted per creare un GPT con 1 partizione che è l'intero disco e impostare il flag di partizione su lvm. Mkpart richiede di specificare un file system ma non crea il file system. Sembra essere un bug di vecchia data in parte. Anche l'offset iniziale di 1M è per garantire un corretto allineamento.

parted /dev/sdb
mklabel GPT
mkpart primary ext2 1M 100%
set 1 lvm on

3
"Mkpart richiede di specificare un file system ma non crea il file system." Grazie per averlo menzionato, questo è ENORME nello stabilire la sanità mentale! :)
pantaloni da gatto,

1
Non è più vero mkpart primary 1M 100%funziona e lascia vuoto il campo del file system.
rigido

1
@ 3dinfluence lvm ora esegue automaticamente l'allineamento, dopo molti anni non vedo il caso d'uso reale di utilizzare una partizione per il disco dati definita per lvm
c4f4t0r

5

Se si crea un PV direttamente su un dispositivo di archiviazione virtuale all'interno di un guest KVM, si noterà che i volumi logici dal guest sono visibili sull'hypervisor. Questo può rendere le cose piuttosto confuse se si usano gli stessi nomi di gruppi di volumi e volumi logici su più guest. Potresti anche ricevere alcuni avvisi sull'hypervisor che dice che non riesce a trovare un dispositivo.

Ad esempio, ho ricreato questo problema sul mio hypervisor di prova:

[root@testhost ~]# vgs
  Couldn't find device with uuid dCaylp-1kvL-syiF-A2bW-NTPP-Ehlb-gtfxZz.
  VG          #PV #LV #SN Attr   VSize   VFree  
  vg_main       2   2   0 wz-pn-  19.25g 768.00m
  vg_main       2   2   0 wz-pn-  19.25g 768.00m
  vg_testhost   1   8   0 wz--n- 237.98g 120.15g

Qui puoi vedere 2 gruppi di volumi con lo stesso nome, entrambi da guest che non dovrebbero apparire sull'hypervisor.

Per questo motivo, consiglierei di usare parted o fdisk per creare prima una partizione KVM (come mostrato nella risposta precedente da 3dinfluence), prima di creare un PV e aggiungerlo a un gruppo di volumi. In questo modo, i volumi logici guest rimangono nascosti dall'hypervisor.


1
Questo può essere evitato se si utilizza filterin /etc/lvm/lvm.conf per filtrare tutti i dispositivi a blocchi utilizzati direttamente dalle macchine virtuali.
Mircea Vutcovici,

I dischi sono sempre presenti sull'host - le partizioni non sono semplicemente mappate. kpartx -alo farebbe per te. L'hypervisor ha accesso a tutti i dischi guest, ma i gruppi di volumi non devono essere attivati.
bryn,

4

Un aspetto negativo è che non è possibile aggiungere spazio a caldo a un PV all'interno di una tabella delle partizioni. Questo non è un problema se si utilizza l'intero dispositivo a blocchi per il PV.


A partire dal 2018 è possibile aggiungere spazio su un PV all'interno di una tabella delle partizioni. Ho realizzato questo script che può generare i comandi richiesti per farlo: github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh
Mircea Vutcovici


3

Anche se in passato utilizzavo disklabel MS-DOS o disklabel GPT per PV, preferisco ora utilizzare direttamente LVM sul dispositivo a blocchi principale. Non vi è alcun motivo per utilizzare 2 etichette del disco, a meno che non si abbia un caso d'uso molto specifico (come disco con settore di avvio e partizione di avvio).

I vantaggi di avere LVM direttamente sono:

  • semplicità: non è necessario utilizzare 2 set di strumenti
  • flessibilità: è possibile utilizzare pvmove per spostare i dati da un volume del disco a un altro senza tempi di inattività, è possibile utilizzare snapshot e thin provisioning
  • non è necessario eseguire partprobe o kpartx per dire al kernel che è stato creato / ridimensionato / eliminato un volume. E partprobe / kpartx potrebbe fallire se le partizioni sono in uso e potrebbe essere necessario riavviare
  • forse prestazioni migliori, rispetto all'utilizzo di LVM su MS-DOS o disklable GPT

2
Non sono sicuro del motivo per cui tutti vogliono quella partizione, ma la risposta qui va nella direzione del "perché no". Questa risposta è migliore: non è necessaria una partizione se si intende utilizzare l'intero disco. Avere una partizione può anche rendere il ridimensionamento / estensione dei dischi molto più doloroso.
bryn,

molti amministratori di sistema unix portano questa logica su linux, ricordo che il volume manager di veritas funziona con pubblico e privato, in Linux questo non ha alcun senso
c4f4t0r
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.