Este es un tema muy extenso ya que se pueden realizar muchos cambios trabajando con LVM. Pero vamos a enfocarnos en cada uno de los aspectos del objetivo.
Para esto vamos a partir de que ya sabemos como crear particiones y tambien sabemos como cambiar el “type” a “Linux LVM”. En los siguientes ejemplos vamos a tomar como base la siguiente tabla de particiones:
[root@class2 ~]# fdisk -l /dev/sdb Disk /dev/sdb: 1288 MB, 1288491008 bytes, 2516584 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xfb405b3a Device Boot Start End Blocks Id System /dev/sdb1 2048 411647 204800 8e Linux LVM /dev/sdb2 411648 821247 204800 8e Linux LVM /dev/sdb3 821248 1230847 204800 8e Linux LVM [root@class2 ~]#
Ahora vamos a explicar por separado cada una de las partes fundamentales de LVM.
Crear y eliminar volumenes fisicos:
Para crear vamos a utilizar el comando “pvcreate”. Este comando lo que hace es preparar la particion para ser utilizaza posteriormente en un grupo de volumen. Es valido aclarar que se puede crear directamente el volumen de grupo sin crear el fisico. Pero por motivos de aprendizaje es mejor ir paso a paso.
Vamos a preparar las tres particiones de la siguiente forma como volumenes fisicos:
[root@class2 ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. Physical volume "/dev/sdb3" successfully created. [root@class2 ~]#
Como ven ya tenemos los volumenes fisicos. Pueden hacerlo uno a la vez, pero en este punto podemos hacerlo en solo un comando.
Para ver los volumenes fisicos que tenemos en el sistema, lo podemos lograr de dos formas:
[root@class2 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rhel lvm2 a-- 6.00g 4.00m /dev/sdb1 lvm2 --- 200.00m 200.00m /dev/sdb2 lvm2 --- 200.00m 200.00m /dev/sdb3 lvm2 --- 200.00m 200.00m [root@class2 ~]#
El comando “pvs” nos muestra un resumen, pero para ver una salida mas detallada utilizamos “pvdisplay”
[root@class2 ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name rhel PV Size 6.00 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1535 Free PE 1 Allocated PE 1534 PV UUID fEYFuS-j8o7-euhi-MpRJ-caXu-R2FX-BMzhgq "/dev/sdb1" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID VZ635p-1vCd-aXYW-sSxy-2uLJ-f1Lc-k5bTdq "/dev/sdb2" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID TYJgBN-SVyX-z8sR-RvOh-LX6x-1Dc7-CFp0A2 "/dev/sdb3" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb3 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID N3DqX6-MMkO-abkf-FXbN-ZBoC-KHaG-hA0I74 [root@class2 ~]#
Como ven, el comando nos mostro todos los volumenes fisicos, pero tambien podemos decirle que solo nos muestre uno, eso lo hariamos de la siguiente forma:
[root@class2 ~]# pvdisplay /dev/sdb1 "/dev/sdb1" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID VZ635p-1vCd-aXYW-sSxy-2uLJ-f1Lc-k5bTdq [root@class2 ~]# pvdisplay /dev/sdb2 "/dev/sdb2" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID TYJgBN-SVyX-z8sR-RvOh-LX6x-1Dc7-CFp0A2 [root@class2 ~]# pvdisplay /dev/sdb3 "/dev/sdb3" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb3 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID N3DqX6-MMkO-abkf-FXbN-ZBoC-KHaG-hA0I74 [root@class2 ~]#
Ahora ya tenemos un poco mas de detalles. Por ejemplo pueden ver si el volumen fisico ya ha sido asignado a algun grupo. En este caso el campo “VG Name” esta en blanco. Pero vamos a ver la diferencia con otro que ya este dentro de un grupo.
[root@class2 ~]# pvdisplay /dev/sda2 --- Physical volume --- PV Name /dev/sda2 VG Name rhel PV Size 6.00 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1535 Free PE 1 Allocated PE 1534 PV UUID fEYFuS-j8o7-euhi-MpRJ-caXu-R2FX-BMzhgq [root@class2 ~]#
Como ven, este volumen fisico esta dentro del grupo “rhel”. Tambien ahora tenemos otros datos interesantes como “PE Size”.
Tambien pueden ejecutar “pvscan”, es una forma de hacer un scan al sistema en busca de volumenes fisicos.
Ahora bien, para eliminar cual piensan que sea el comando. Pues estan en lo cierto “pvremove”
[root@class2 ~]# pvremove /dev/sdb3 Labels on physical volume "/dev/sdb3" successfully wiped. [root@class2 ~]#
Como ven aqui hemos eliminado “sdb3”. Bien simple verdad. Pues hasta este punto ya hemos logrado la primera parte. Ahora continuaremos con los restantes pasos.
En mi ejemplo voy a volver a crear este volumen, ya que lo voy a utilizar mas adelante.
Ahora vamos asignar volúmenes físicos a grupos de volúmenes. Aqui podemos crear un grupo nuevo o agregar el volumen fisico a un grupo existente.
Vamos a comenzar con la creacion de un grupo nuevo utilizando sdb1 y sdb2. Cuando agregamos a un grupo existente no existen muchas opciones, por lo que el trabajo se hace mas simple.
Primero comprovamos los grupos que tenemos de dos maneras tal como lo realizamos anteiormente:
[root@class2 ~]# vgs VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- 6.00g 4.00m [root@class2 ~]# vgdisplay --- Volume group --- VG Name rhel System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 6.00 GiB PE Size 4.00 MiB Total PE 1535 Alloc PE / Size 1534 / 5.99 GiB Free PE / Size 1 / 4.00 MiB VG UUID nNdhJQ-hTri-wfVp-69cw-l1uy-IJqy-iJ6Lys [root@class2 ~]#
Con “vgdisplay” nos muestra la informacion mas detallada, pero es valido aclarar que si tenemos mas de un grupo podemos mostrar solo la informacion del grupo que usted quiera con “vgdisplay rhel”
Entonces para agregar los volumenes fisicos al grupo “rhel” ejecutamos lo siguiente:
[root@class2 ~]# vgextend rhel /dev/sdb1 /dev/sdb2 Volume group "rhel" successfully extended [root@class2 ~]#
Entonces ahora pasamos a la verificacion:
[root@class2 ~]# vgs ; vgdisplay VG #PV #LV #SN Attr VSize VFree rhel 3 2 0 wz--n- 6.38g 396.00m --- Volume group --- VG Name rhel System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 3 Act PV 3 VG Size 6.38 GiB PE Size 4.00 MiB Total PE 1633 Alloc PE / Size 1534 / 5.99 GiB Free PE / Size 99 / 396.00 MiB VG UUID nNdhJQ-hTri-wfVp-69cw-l1uy-IJqy-iJ6Lys [root@class2 ~]#
Bien simple verdad. en la version resumida tenemos que en el grupo hay ahora 3 volumenes fisicos y tenemos un espacio disponible de 396m. Hasta este punto creo que no hay problemas.
Ahora vamos a crear un grupo nuevo, pero para esto voy a regresarme a crear una particion nueva.
[root@class2 ~]# fdisk -l /dev/sdb Disk /dev/sdb: 1288 MB, 1288491008 bytes, 2516584 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xfb405b3a Device Boot Start End Blocks Id System /dev/sdb1 2048 411647 204800 8e Linux LVM /dev/sdb2 411648 821247 204800 8e Linux LVM /dev/sdb3 821248 1230847 204800 8e Linux LVM /dev/sdb4 1230848 2516583 642868 5 Extended /dev/sdb5 1232896 2516583 641844 8e Linux LVM [root@class2 ~]#
He creado sdb5 dentro de la particion extendida.
Vamos a crear un grupo utilizando sdb3, el nombre del grupo que vamos a darle es “datos1”, y todos los demas valores los vamos a dejar por defecto.
[root@class2 ~]# vgcreate datos1 /dev/sdb3 Volume group "datos1" successfully created [root@class2 ~]#
Muy simple verdad. Ahora como siempre vamos a verificar:
[root@class2 ~]# vgdisplay datos1 --- Volume group --- VG Name datos1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 196.00 MiB PE Size 4.00 MiB Total PE 49 Alloc PE / Size 0 / 0 Free PE / Size 49 / 196.00 MiB VG UUID T9Jmcp-PCfX-wA8K-JA7k-PTxg-DRcL-M0KkYN [root@class2 ~]#
Ahora vamos a crear el grupo datos2 con sdb5 y vamos a establecer el “PE Size”, vamos a tomar para este ejemplo el valor de 16M.
Para esto solo debemos utilizar la opcion correcta en la creacion del grupo. Si tienen dudas, pueden ejecutar “vgcreate –help”
[root@class2 ~]# vgcreate datos2 -s 16M /dev/sdb5 Physical volume "/dev/sdb5" successfully created. Volume group "datos2" successfully created [root@class2 ~]# vgdisplay datos2 --- Volume group --- VG Name datos2 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 624.00 MiB PE Size 16.00 MiB Total PE 39 Alloc PE / Size 0 / 0 Free PE / Size 39 / 624.00 MiB VG UUID XI0r3i-afLk-iJDp-pM71-NseF-OBGe-CuDxNw [root@class2 ~]#
Como pueden observar, el “PE Size” se ha establesido. Este valos lo vamos a utilizar en la creacion de volumenes logicos. Pero se preguntaran como elimino un grupo. Pues para esto ejecutamos lo siguiente:
[root@class2 ~]# vgremove datos2 Volume group "datos2" successfully removed [root@class2 ~]# vgs VG #PV #LV #SN Attr VSize VFree datos1 1 0 0 wz--n- 196.00m 196.00m rhel 3 2 0 wz--n- 6.38g 396.00m [root@class2 ~]#
Pero como tenemos que seguir con este ejercicio, este grupo lo volvere a crear.
[root@class2 ~]# vgcreate datos2 -s 16M /dev/sdb5 Volume group "datos2" successfully created [root@class2 ~]# vgs VG #PV #LV #SN Attr VSize VFree datos1 1 0 0 wz--n- 196.00m 196.00m datos2 1 0 0 wz--n- 624.00m 624.00m rhel 3 2 0 wz--n- 6.38g 396.00m [root@class2 ~]#
Ahora bien, creo que es momento de comenzar a crear los volumenes logicos.
Aqui tambien aplican algunos comando que ya hemos visto, solo con la diferencia de que comienzan con “lv…”
[root@class2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root rhel -wi-ao---- 5.29g swap rhel -wi-ao---- 716.00m [root@class2 ~]# lvdisplay --- Logical volume --- LV Path /dev/rhel/root LV Name root VG Name rhel LV UUID AMKnhn-1YOT-kAb4-qDwn-s4P4-xHGu-lHEIPs LV Write Access read/write LV Creation host, time class2.example.com, 2017-04-25 08:03:00 -0700 LV Status available # open 1 LV Size 5.29 GiB Current LE 1355 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 --- Logical volume --- LV Path /dev/rhel/swap LV Name swap VG Name rhel LV UUID bH26KF-gkJa-I1Cn-SeOc-fNO6-YYZo-uKQIu1 LV Write Access read/write LV Creation host, time class2.example.com, 2017-04-25 08:03:01 -0700 LV Status available # open 2 LV Size 716.00 MiB Current LE 179 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 [root@class2 ~]#
Ahora bien, en la creacionde volumenes logicos, podemos especificar el valor absoluto en “M,G,T” o bien en “LE”. El valor de “Logical Extends” va sujeto al valos de “PE” del grupo al que va a pertenecer el volumen logico. Ejemplo de esto es; si creamos un volumen con 100 LE, entonces el vamos final del volumen sera la multiplicacion de 100 y el valor que tenga el grupo defeinido en “PE”
Entonces visto esto vamos a crear algunos volumenes logicos. Los comando se explican por si solos. Por lo que no creo que necesiten mas explicacion. Las opciones que utilizo las pueden verificar en “man lvcreate” o en “lvcreate –help”
[root@class2 ~]# lvcreate datos1 -n lv_datos1 -L 100M Logical volume "lv_datos1" created. [root@class2 ~]# lvcreate datos1 -n lv_datos2 -l 10 Logical volume "lv_datos2" created. [root@class2 ~]# [root@class2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_datos1 datos1 -wi-a----- 100.00m lv_datos2 datos1 -wi-a----- 40.00m root rhel -wi-ao---- 5.29g swap rhel -wi-ao---- 716.00m [root@class2 ~]# lvdisplay /dev/datos1/lv_datos1 /dev/datos1/lv_datos2 --- Logical volume --- LV Path /dev/datos1/lv_datos1 LV Name lv_datos1 VG Name datos1 LV UUID VfNQDM-957l-hRnH-DlNj-Czcz-Wo7w-BKtANh LV Write Access read/write LV Creation host, time class2.example.com, 2017-04-25 09:10:15 -0700 LV Status available # open 0 LV Size 100.00 MiB Current LE 25 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 --- Logical volume --- LV Path /dev/datos1/lv_datos2 LV Name lv_datos2 VG Name datos1 LV UUID YML1B3-alc1-mAb2-yfjS-4nc6-vzJO-kXBcKN LV Write Access read/write LV Creation host, time class2.example.com, 2017-04-25 09:11:33 -0700 LV Status available # open 0 LV Size 40.00 MiB Current LE 10 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 [root@class2 ~]#
Aqui tienen dos volumenes logicos, con su respectiva verificacion. Solo noten que cuando utilizo “-L” en valor lo doy en M,G. Pero si queremos especificar el valor en “LE” entonces utilizamos “-l”.
En este ejemplo he utilizado para la creacion el grupo “datos1”.
Vamos a realizar lo mismo, pero esta vez con el grupo “datos2”, el cual tienes un valor diferente en “PE”
[root@class2 ~]# lvcreate datos2 -n lv_datos2 -L 50M Rounding up size to full physical extent 64.00 MiB Logical volume "lv_datos2" created. [root@class2 ~]# lvcreate datos2 -n lv_datos1 -l 5 Logical volume "lv_datos1" created. [root@class2 ~]#
Ahora vamos a ver como quedaron estos dos volumenes logicos
[root@class2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_datos1 datos1 -wi-a----- 100.00m lv_datos2 datos1 -wi-a----- 40.00m lv_datos1 datos2 -wi-a----- 80.00m lv_datos2 datos2 -wi-a----- 64.00m root rhel -wi-ao---- 5.29g swap rhel -wi-ao---- 716.00m [root@class2 ~]# lvdisplay /dev/datos2/lv_datos2 /dev/datos2/lv_datos1 --- Logical volume --- LV Path /dev/datos2/lv_datos2 LV Name lv_datos2 VG Name datos2 LV UUID PXAMLJ-taRU-xrkF-ZyG3-7cFp-X7Vy-9ncQIM LV Write Access read/write LV Creation host, time class2.example.com, 2017-04-25 09:15:10 -0700 LV Status available # open 0 LV Size 64.00 MiB Current LE 4 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:4 --- Logical volume --- LV Path /dev/datos2/lv_datos1 LV Name lv_datos1 VG Name datos2 LV UUID X6GHEf-krf1-BHHo-hF8w-h9Hn-nQmi-4WRYi0 LV Write Access read/write LV Creation host, time class2.example.com, 2017-04-25 09:15:34 -0700 LV Status available # open 0 LV Size 80.00 MiB Current LE 5 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:5 [root@class2 ~]#
Muy simple verdad. Solo hagan su matematica. Como este grupo tiene definido 16M de “PE”, entonces la multiplacion nos arroja que el volumen vas ser de 80M.
Ahora solo les queda darle un sistema de archivos y montar el volumen logico para ser utilizado. Pero esto ya lo hemos visto, asi que ahora es tiempo de que usted practique lo aprendido hoy.
Bien explicado… !! con esto se pasa si o si el RHCSA