miércoles, 31 de agosto de 2011

Creación de VGs V2.X

Usar un VG con layout 2.X tiene como ventaja ampliar los limites dados por la implementacion 1.0 de LVM. Para ver estos nuevos valores maximos solo basta con correr el comando lvmadm

lvmadm -t
--- LVM Limits ---
VG Version                  1.0        
Max VG Size (Tbytes)        510                  
Max LV Size (Tbytes)        16                   
Max PV Size (Tbytes)        2                    
Max VGs                     256     
Max LVs                     255     
Max PVs                     255     
Max Mirrors                 2           
Max Stripes                 255         
Max Stripe Size (Kbytes)    32768                    
Max LXs per LV              65535          
Max PXs per PV              65535          
Max Extent Size (Mbytes)    256                      

VG Version                  2.0        
Max VG Size (Tbytes)        2048                
Max LV Size (Tbytes)        256                  
Max PV Size (Tbytes)        16                   
Max VGs                     512                  
Max LVs                     511     
Max PVs                     511     
Max Mirrors                 5           
Max Stripes                 511         
Max Stripe Size (Kbytes)    262144                   
Max LXs per LV              33554432       
Max PXs per PV              16777216       
Max Extent Size (Mbytes)    256                      

VG Version                  2.1        
Max VG Size (Tbytes)        2048                
Max LV Size (Tbytes)        256                  
Max PV Size (Tbytes)        16                   
Max VGs                     2048                 
Max LVs                     2047    
Max PVs                     2048    
Max Mirrors                 5           
Max Stripes                 511         
Max Stripe Size (Kbytes)    262144                   
Max LXs per LV              33554432       
Max PXs per PV              16777216       
Max Extent Size (Mbytes)    256                      

VG Version                  2.2        
Max VG Size (Tbytes)        2048                
Max LV Size (Tbytes)        256                  
Max PV Size (Tbytes)        16                   
Max VGs                     2048                 
Max LVs                     2047    
Max PVs                     2048    
Max Mirrors                 5           
Max Stripes                 511         
Max Stripe Size (Kbytes)    262144                   
Max LXs per LV              33554432       
Max PXs per PV              16777216       
Max Extent Size (Mbytes)    256                      
Min Unshare unit(Kbytes)    512                     
Max Unshare unit(Kbytes)    4096                    
Max Snapshots per LV        255

Para crear un VG con layout LVM 2.X podemos realizarlo de 2 formas

La mas practica,

<root@test2:/>vgcreate -V 2.0 -s 16m -S 512t /dev/vg02 /dev/disk/disk7
Volume group "/dev/vg02" has been successfully created.
Volume Group configuration for /dev/vg02 has been saved in /etc/lvmconf/vg02.conf

O la forma tradicional de crear un VG realizando el mkdir y el mknod especificando el numero de dispositivo

<root@test2:/>mkdir /dev/vg02
<root@test2:/>mknod /dev/vg02/group c 128 0x001000


<root@test2:/>vgcreate -V 2.0 -s 16m -S 512t /dev/02 /dev/disk/disk7
Volume group "/dev/02" has been successfully created.
Volume Group configuration for /dev/02 has been saved in /etc/lvmconf/02.conf

Ya podemos ver que la sintaxis del vgcreate y los devices numbers (major y minor) han cambiado con la implementación de LVM 2.0

Paso a explicar los flags del vgcreate

-V indica la version de VG, al momento son 1.0, 2.0, 2.1 y 2.2 el default es 1.0
-s indica el tamaño del physical extent, en las versiones 1.0 de LVM su valor default es 4, en versiones 2.X es un parametro requerido a la hora de crear el VG
-S Valido solo para LVM 2.x e indica el tamaño máximo del VG, en el ejemplo anterior tamaño máximo que puede crecer el VG es de 512 Terabytes. Esta opción acepta los sufijos m(mega), g(giga), t(tera) y p(peta)

Otra opción muy ventajosa que provee el vgcreate al generar VGs con el nuevo layout es si queremos hacer un VG de gran tamaño, nos puede sugerir el tamaño mínimo de PE. Dado que hay una relación entre le tamaño del PE y el tamaño máximo del VG.
El comando funciona en 2 modalidades, podemos usarlo conjunto a la opcion -s o -S, con lo cual podemos ver el tamaño máximo que puedo direccionar dado un tamaño de PE o bien puedo especificar el tamaño máximo de VG y ver el tamaño sugerido de PE para direccionar ese máximo.

Por ejemplo,

Aquí obtengo el tamaño máximo de VG que puedo direccionar con un PE de 8MBs
<root@test2:/>vgcreate -V 2.0 -s 8m -E
Max_VG_size=256t:extent_size=8

Ahora corro el comando a la inversa, es decir si quiero un VG con un maximo de 256TBs, necesito un PE de 8MBs
<root@test2:/>vgcreate -V 2.0 -S 256t -E
Max_VG_size=256t:extent_size=8m

Flags que son invalidos en VGs 2.x

-l maxima cantidad de LVs
-e cantidad maxima de extents
-p cantidad maxima de PVs

Ya que al crear el VG 2.x este toma de forma automática los valores máximos

<root@test2:/>vgdisplay vg02
--- Volume groups ---
VG Name                     /dev/vg02
VG Write Access             read/write  
VG Status                   available              
Max LV                      511  
Cur LV                      0    
Open LV                     0    
Max PV                      511    
Cur PV                      1    
Act PV                      1    
Max PE per PV               1048576      
VGDA                        2
PE Size (Mbytes)            16            
Total PE                    222          
Alloc PE                    0            
Free PE                     222          
Total PVG                   0      
Total Spare PVs             0            
Total Spare PVs in use      0                  
VG Version                  2.0    
VG Max Size                 512t    
VG Max Extents              33554432  

Ahora, respecto a los device special files, estos han cambiado los VGs 2.x usan como major number 128, (recordemos que los 1.0 usan como major 64).
También cambia la estructura de los minor, en la versión 1.0 para identificar al VG se usan los dos bytes mas significativos, en la versión 2.x estos aumentan a los tres bytes mas significativos

<root@test2:/>ll /dev/*/group
crw-r-----   1 root       sys         64 0x000000 Mar 23 14:39 /dev/vg00/group
crw-r-----   1 root       sys         64 0x010000 Apr  8 16:18 /dev/vg01/group
crw-r-----   1 root       sys        128 0x001000 Sep  2 10:00 /dev/vg02/group

Los archivos de configuración de LVM también han cambiado.
Los VGs 1.0 usan el /etc/lvmtab mientras que los 2.x estan en /etc/lvmtab_p

Migración de VG hecho con LVM 1.0 a 2.x

Si quisiera migrar un VG hecho con layout 1.0, existe un comando llamado vgversion.
A continuación enumero los comandos a seguir para llevar de 1.0 a una versión 2.X igualmente se puede migrar de una versión 2.x a otra superior.


Para identificar el VG utilizo el comando lvmadm que me lista los VG configurados, su versión y los PV que los componen.
En este caso vamos a migrar el vg01 a la versión 2.2. Tener en cuenta que a la fecha el vg00  no puede ser 2.0 


<root@test2:/>lvmadm -l
--- Version 1.0 volume groups ---
VG Name /dev/vg00
PV Name /dev/disk/disk3_p2


VG Name /dev/vg01
PV Name /dev/disk/disk5


--- Version 2.0 volume groups ---
VG Name /dev/02
PV Name /dev/disk/disk7

Una vez identificado el VG ejecutamos el comando vgversion con la opcion de review -r, verbose -v y -V con la version de VG a la que lo queremos llevar


<root@test2:/>vgversion -v -r -V 2.2 vg01
Warning: Volume Group version 2.2 does not support bad block 
relocation. The bad block relocation policy of all logical volumes 
will be set to NONE.
Volume Group version can be successfully changed to 2.2
Review complete. Volume group not modified


Vemos que nos avisa que la opción de bad block relocation no esta mas soportada en 2.x y que el VG se puede migrar sin ningún problema.
Para hacer el cambio de versión el VG debe estar offline, por lo que vamos a desmontar los LVs que están montados y desactivar el VG

<root@test2:/>bdf
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3     671744  411768  258056   61% /
/dev/vg00/lvol1    1081344  347656  728032   32% /stand
/dev/vg00/lvol8    4042752 2888000 1149856   72% /var
/dev/vg00/lvol5    4927488 2107168 2798360   43% /usr
/dev/vg00/lvol4     430080    6008  420888    1% /tmp
/dev/vg00/lvol7    5484544 3958872 1513776   72% /opt
/dev/vg00/lvol6     102400    5520   96128    5% /home
/dev/vg01/lvol1    2043904    2638 1913694    0% /EDB
<root@test2:/>umount /EDB
<root@test2:/>vgchange -a n vg01
Volume group "vg01" has been successfully changed.


Una vez desactivado corremos el vgversion


<root@test2:/>vgversion -v -V 2.2 vg01
Performing "vgchange -a y -l -p -s vg01" to collect data
Activated volume group.
Volume group "vg01" has been successfully activated.
A version 2.x Volume Group with the minor number 0x1000 
already exists.
Warning: Volume Group version 2.2 does not support bad block 
relocation. The bad block relocation policy of all logical volumes 
will be set to NONE.


Old Volume Group configuration for "/dev/vg01" has been saved in "/etc/lvmconf/vgversion_vg01/vg01_1.0.conf"
Deactivating Volume Group "vg01"
Volume group "vg01" has been successfully deactivated.


New Volume Group configuration for "/dev/vg01" has been saved in "/etc/lvmconf/vgversion_vg01/vg01_2.2.conf"
Removing the Volume Group /dev/vg01 from /etc/lvmtab


Applying the configuration to all Physical Volumes from "/etc/lvmconf/vgversion_vg01/vg01_2.2.conf"
Volume Group configuration has been restored to /dev/rdisk/disk5
Creating the Volume Group of version 2.2 with minor number 0x2000.
Adding the Volume Group /dev/vg01 to /etc/lvmtab_p
Original Volume Group Version was 1.0
New Volume Group Version is 2.2
Volume Group version has been successfully changed to 2.2
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf


Una vez ya migrado activo el VG  activamos el vg


<root@test2:/>vgchange -a y vg01      
Activated volume group.
Volume group "vg01" has been successfully changed.


Montamos el FS


<root@test2:/>mount /EDB              


Validamos con un bdf para ver si quedo montado


<root@test2:/>bdf
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3     671744  414504  255336   62% /
/dev/vg00/lvol1    1081344  347656  728032   32% /stand
/dev/vg00/lvol8    4042752 2887992 1149864   72% /var
/dev/vg00/lvol5    4927488 2107168 2798360   43% /usr
/dev/vg00/lvol4     430080    6008  420888    1% /tmp
/dev/vg00/lvol7    5484544 3958872 1513776   72% /opt
/dev/vg00/lvol6     102400    5520   96128    5% /home
/dev/vg01/lvol1    2043904    2638 1913694    0% /EDB


Podemos correr el lvmadm -l para efectivamente ver si el VG cambio de versión


<root@test2:/>lvmadm -l
--- Version 1.0 volume groups ---
VG Name /dev/vg00
PV Name /dev/disk/disk3_p2


--- Version 2.0 volume groups ---
VG Name /dev/02
PV Name /dev/disk/disk7


--- Version 2.2 volume groups ---
VG Name /dev/vg01
PV Name /dev/disk/disk5

No hay comentarios:

Publicar un comentario