Per motivi di prestazioni, invece di utilizzare un volume LVM di grandi dimensioni, potrebbe essere sostituito da più volumi con striping piccolo (RAID0). Non esiste alcun comando per trasformare direttamente un volume logico del disco singolo in un volume logico con striping. Questo post spiegherà la procedura per eseguire la conversione.
Nota :Prima di iniziare, eseguire un backup completo del volume o del filesystem.Questa procedura può essere eseguita in un sistema live, senza la necessità di riavviare. Il procedimento consiste nel creare uno specchio tra il volume originale ed i nuovi volumi rigati. Una volta completato il mirroring, possiamo rimuovere il volume originale dal mirror lasciando solo i volumi con striping.
Per poter eseguire la conversione, il numero di estensioni logiche (LE) nel volume logico LVM (LV) deve essere divisibile per il numero di volumi fisici (PV) che verranno utilizzati nel futuro striped LV.
Verificare il numero di LE assegnate:
# lvdisplay --- Logical volume --- LV Path /dev/<VOLUME_GROUP>/<LOGICAL_VOLUME> LV Name <LOGICAL_VOLUME> VG Name <VOLUME_GROUP> LV UUID <VOLUME_UUID> LV Write Access read/write LV Creation host, time <HOSTNAME>, 2020-12-10 08:38:44 +0000 LV Status available # open 1 LV Size <10.00 GiB Current LE 2559 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0
In questo caso, il numero di LE è 2559.
Per conoscere il numero di LE necessarie, puoi utilizzare:
– le =numero di LE assegnate, dal comando precedente (2559 in questo caso)
– pv =numero di PV striped da utilizzare in futuro (es:5)
$ le=2559; pv=5; echo $((le%pv?(le/pv+1)*pv:le)) 2560
In questo caso è necessaria una LE in più. Esempio per estendere la LV:
# lvresize --extents +1 /dev/<VOLUME_GROUP>/<LOGICAL_VOLUME> /dev/sdb Size of logical volume <VOLUME_GROUP>/<LOGICAL_VOLUME> changed from <10 GiB (2559 extents) to <10 giB (2560 extents). Logical volume <VOLUME_GROUP>/<LOGICAL_VOLUME> successfully resized.
Dopo aver preparato il LV, procedere:
1. Aggiungi i nuovi PV al LV creando uno specchio a strisce. Il numero di strisce dovrebbe essere il numero di PV:
# lvconvert --type mirror -m 1 --mirrorlog core --stripes 2 /dev/<VOLUME_GROUP>/<LOGICAL_VOLUME> /dev/<PV1> /dev/<PV2> ... /dev/<PV5>
2. Rimuovere il PV iniziale dal LV:
# lvconvert -m0 <VOLUME_GROUP>/<LOGICAL_VOLUME> /dev/<INITIAL_PV>
3. Rimuovere il PV da LVM:
# vgreduce <VOLUME_GROUP> /dev/<INITIAL_PV> # pvremove /dev/<INITIAL_PV>