Crear y eliminar volúmenes físicos, asignar volúmenes físicos a grupos de volúmenes, crear y borrar volúmenes lógicos

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.

Comentarios

Entradas populares de este blog

Orange Pi IoT 2G Flashear memoria NAND

Configurar modem GSM en la Orange Pi 2G IoT (Orange España)

Usar datos gratis para proyectos IoT FreedomPop y Orange Pi 2G IoT (también Simyo).