Gestión de particiones en discos y LVM

  Tech / SysAdmin

Siguiendo con la aclamada serie «vfmBOFH haciendo malabares con motosierras», vamos a ver cómo saltarnos un par de pasos en la gestión de las ampliaciones de particiones / discos con capa LVM por encima.

Vamos a ver el siguiente supuesto:

inicial

 

Vemos que tanto la partición raíz como el punto de montaje /mnt/expand están próximos al 100% de ocupación. En el caso de la partición raíz, el PV que aloja al VG/LV de sistema está en la partición física /dev/vda2 y el PV del LV/VG expand ocupa el dispositivo físico /dev/vdb sin usar particionado. Un ejemplo de cada, qué apropiado :-P

Vamos a aumentar el tamaño de los discos virtuales en 10GB cada uno y luego vamos a redimensionar «al vuelo» la capa LVM sin modificar el esquema de particionado. Empezemos por el dispositivo /dev/vdb que como hemos visto, es un PV directo sin una tabla de particiones por debajo:

[root@template-centos7 ~]# fdisk -l /dev/vdb

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 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

[root@template-centos7 ~]# pvresize /dev/vdb
Physical volume "/dev/vdb" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
[root@template-centos7 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_template-centos7 1 2 0 wz--n- 29,51g 0
vg_expand 1 1 0 wz--n- 20,00g 10,00g
[root@template-centos7 ~]# lvextend -l +100%FREE /dev/mapper/vg_expand-lv_expand
Size of logical volume vg_expand/lv_expand changed from 10,00 GiB (2559 extents) to 20,00 GiB (5119 extents).
Logical volume lv_expand successfully resized.
[root@template-centos7 ~]# resize2fs /dev/mapper/vg_expand-lv_expand
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg_expand-lv_expand is mounted on /mnt/expand; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg_expand-lv_expand is now 5241856 blocks long.
[root@template-centos7 ~]# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/mapper/centos_template--centos7-root 27G 25G 1,2G 96% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6,6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda1 497M 189M 309M 38% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg_expand-lv_expand 20G 8,9G 9,9G 48% /mnt/expand
[root@template-centos7 ~]#

Ahora la chicha. Toca redimensionar una partición. Cuidadín y atentos:

[root@template-centos7 ~]# fdisk -l /dev/vda

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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
Identificador del disco: 0x000af804

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048    62914559    30944256   8e  Linux LVM
[root@template-centos7 ~]# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Orden (m para obtener ayuda): p

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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
Identificador del disco: 0x000af804

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048    62914559    30944256   8e  Linux LVM

Orden (m para obtener ayuda): d


Número de partición (1,2, default 2): 2 <--Ojito con la partición que borramos

Partition 2 is deleted
Orden (m para obtener ayuda): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Número de partición (2-4, default 2):
Primer sector (1026048-83886079, valor predeterminado 1026048):
Se está utilizando el valor predeterminado 1026048
Last sector, +sectors or +size{K,M,G} (1026048-83886079, valor predeterminado 83886079):
Se está utilizando el valor predeterminado 83886079
Partition 2 of type Linux and of size 39,5 GiB is set


##########Recreamos la partición como estaba, pero asignándole el espacio extra ########## ##########En algunos casos, fdisk se lía con los sectores de inicio y final de ########### ##########las particiones, será cuestión de ponerle como inicio el sector que ############ ##########nos aparece en la línea 30, campo "Fin" (1026047)+1#############################

Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.

WARNING: Re-reading the partition table failed with error 16: Dispositivo o recurso ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Se están sincronizando los discos.
[root@template-centos7 ~]# partx -a /dev/vda
partx: /dev/vda: error adding partitions 1-2
[root@template-centos7 ~]# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Orden (m para obtener ayuda): p

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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
Identificador del disco: 0x000af804

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/vda1   *        2048     1026047      512000   83  Linux


/dev/vda2 1026048 83886079 41430016 83 Linux <--Ojocuidao, que tiene que ser tipo LVM

Orden (m para obtener ayuda): t
Número de partición (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.

WARNING: Re-reading the partition table failed with error 16: Dispositivo o recurso ocupado.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Se están sincronizando los discos.
[root@template-centos7 ~]# partx -a /dev/vda
partx: /dev/vda: error adding partitions 1-2

Vemos que he entrado en fdisk dos veces: una para re-crear la partición y otra para cambiarle el tipo. Puede hacerse en un único paso, pero yo prefiero escribir las tablas de particiones a cada cambio. Cada uno es cadascual.

[root@template-centos7 ~]# pvs
  PV         VG                      Fmt  Attr PSize  PFree
  /dev/vda2  centos_template-centos7 lvm2 a--  29,51g    0
  /dev/vdb   vg_expand               lvm2 a--  20,00g    0
[root@template-centos7 ~]# fdisk -l /dev/vda

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 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
Identificador del disco: 0x000af804

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048    83886079    41430016   8e  Linux LVM


[root@template-centos7 ~]# pvresize /dev/vda2 <-- Una vez re-creada la partición, procedemos igual

  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
[root@template-centos7 ~]# pvs
  PV         VG                      Fmt  Attr PSize  PFree
  /dev/vda2  centos_template-centos7 lvm2 a--  39,51g 10,00g
  /dev/vdb   vg_expand               lvm2 a--  20,00g     0
[root@template-centos7 ~]# vgs
  VG                      #PV #LV #SN Attr   VSize  VFree
  centos_template-centos7   1   2   0 wz--n- 39,51g 10,00g
  vg_expand                 1   1   0 wz--n- 20,00g     0
[root@template-centos7 ~]# lvextend -l +100%FREE /dev/mapper/centos_template--centos7-root
  Size of logical volume centos_template-centos7/root changed from 27,51 GiB (7042 extents) to 37,51 GiB (9602 extents).
  Logical volume root successfully resized.
[root@template-centos7 ~]# resize2fs /dev/mapper/centos_template--centos7-root
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/centos_template--centos7-root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 5
The filesystem on /dev/mapper/centos_template--centos7-root is now 9832448 blocks long.

[root@template-centos7 ~]# df -h
S.ficheros                                Tamaño Usados  Disp Uso% Montado en


/dev/mapper/centos_template--centos7-root 37G 25G 11G 70% /

devtmpfs                                    487M      0  487M   0% /dev
tmpfs                                       497M      0  497M   0% /dev/shm
tmpfs                                       497M   6,6M  490M   2% /run
tmpfs                                       497M      0  497M   0% /sys/fs/cgroup
/dev/vda1                                   497M   189M  309M  38% /boot
tmpfs                                       100M      0  100M   0% /run/user/0

 

Tacháaaan!
YsbKHg1

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.