Me pareció interesante compartir con ustedes este tema. Este es un post realizado desde una investigación (en el post se encuentra material de diferentes páginas y varias partes fueron traducidas así que las disculpas del caso con cualquier error en la traducción).
LVM es un Administrador de Volúmenes Lógicos para el kernel Linux. Con LVM se puede abstraer el espacio de almacenamiento y tener “particiones virtuales” para facilitar su modificación. Los bloques básicos que construyen LVM son:
Physical volume/Volúmenes físicos (PV): Particiones en el disco rígido ( puede ser sobre tanto sobre un disco o sobre un archivo de loopback) donde se tener un grupo de volúmenes Posee una cabecera especial y esta dividida en extensiones físicas Piense en los volúmenes físicos como un gran edificio de bloques que pueden ser usados para armar tus discos rígidos
Volume group/Grupo de volúmenes (VG): Son grupos de volúmenes físicos que son usados como volúmenes de almacenamiento ( como si fueran un solo disco). Contienen volúmenes lógicos Piense en los grupos de volúmenes como discos rígidos
Logical volume/Volúmenes lógicos (LV): Una "partición virtual/lógica" que reside en un grupo de volúmenes y esta compuesta por extensiones físicas Piense en volúmenes lógicos como particiones normales.
Physical extenúe/Extensiones físicas (PE): Una pequeña parte de un disco (usualmente 4MB) que puede ser asignada a un volumen lógico Piense en las Extensiones físicas como partes de los discos que pueden ser asignadas a cualquier partición
Recuperando el sistema a traves de espejo LVM nivel 1 y ejecutando, actualización / recompilación del kernel
Si su sistema esta configurado con un espejo LVM nível 1, este articulo le ayudará a recuperar el sistema después de una falla, o hasta en el caso de que usted desea hacer una actualización de su servidor y recompilar su kernel entre otros.
El espejo LVM es una optima opción para aquellos que no poseem una placa controladora RAID (lo que es dificil actualmente), pero va mas alla. A pesar de un RAID 5, El espejo LVM le ayudará en este caso, teniendo en cuenta el reflejo no se romperá directamente a través del controlador.
Distribción utilizada: Red Hat Enterprise 6.1
Version LVM: LVM 2.0
Cantidad de discos: 2 discos de 20G
Estructura dos discos y particionamiento:
Verificando si los discos estan relacionados a un PV:
En la salida del comando ingresado anteriormente, verificamos que existen 3 PVs asociados al VG rootvg.
Verificando el VGs:
En la salida del comando ingresado anteriormente verificamos que en el VG rootvg existen 3PVs y 7 LVs.
Verificando la estructura del espejo LVM nivel 1:
Obs.: Linux todavía no puede trabajar con / boot en el LVM, a diferencia de otros Unix como AIX, Solaris y HP-UX. Así que tenemos que hacer una copia de nuestro / boot para preservar el gestor de arranque.
Haciendo una copia del /boot
En este paso, vamos a ejecutar una simple copia de nuestro /boot, pues como explique anteriormente, Linux (LVM) no acepta que coloquemos /boot en el LVM.
Volviendo a nuestra estructura de discos y particionamientos, poseemos una partición fuera del LVM: /dev/sdb1
Vamos a crear un sistema de archivos para esta partición, montarla y hacer el backup del /boot actual.
Vamos a utilizar el comando blkid :
El comando de arriba creara un file system ext4 sobre la partición /dev/sdb1
Iniciando la copia del /boot para otro disco:
Copia finalizada con exito.
Rompiendo el espejo - cambiando disco
Rompiendo espejo LVM (nível 1)
En este momento vamos a romper el espejo para tener una copia del sistema hasta el momento, sugiero que todos los servicios esten parados y el acceso al servidor para usuarios sean bloqueados, para que tengamos una imagen del sistema mas completa posible.
Rompiendo el espejo del LVM:
Para crear un espejo usamos 'flags -m' informando 'degree' (degrau), que deseariamos crear. En nuestro caso, fue 1, para la creación del espejo.
En este momento vamos a utilizar un 'degree 0' para romper el espejo.
Vamos a quitar el disco "/dev/sda2" del grupo "rootvg" para visualizar los PS (Physical Segments) relacionados a sus PE (Physical extent), vamos a ejecutar el comando de abajo para visualizar las informaciones necesarias.
Removiendo el disco /dev/sda2 del espejo rootvg, conforme a lo especificado abajo:
Despues de romer el espejo, el comando de abajo informará que no existe ningun espejo activo:
Vamos, en este momento, a retirar el disco /dev/sda2, que en verdad es un PV, ejecutando el comando de abajo:
Ejecutando el comando de abajo para listar todos los PVs relacionados a un VG, vamos a verificar que no existe ningun VG relacionado al PV /dev/sda2.
Hasta este punto no tuvimos ningún problema y nuestro espejo fue roto o quebrado.
Alterando el disco que sera iniciado
Acabamos de ejecutar la rotura de nuestro espejo nivel 1, tneemos nuestra partición /boot identica al disco SDA.
Vamos entonces a mover el disco que sera inicial-izado por el SO.
Para realizar esta modificación, seguimos los pasos de abajo utilizando el comando: fdisk /dev/sdb
Y modificar el disco que iniciará junto con el sistema "sdb" (no demostrare como es hecha esa configuración).
Después de configurar el disco que iniciara, con el comando de abajo nos devolverá las informaciones:
Y tendremos nuestro espejo (nível 1) interrumpido y con todas las informaciones hasta el momento de quiebre del sistema, y podemos ejecutar con tranquilidad la recompilación del kernel, actualizar el servidor sin miedo de fallas, redimensionar discos etc.
En caso de que ocurra algun error en uno de los procesos realizados mas arriba, solo entramos como 'single user' y configurar el disco 'sda' para iniciar junto con el SO y listo.nto.
Primeramente que es LVM?
LVM es un Administrador de Volúmenes Lógicos para el kernel Linux. Con LVM se puede abstraer el espacio de almacenamiento y tener “particiones virtuales” para facilitar su modificación. Los bloques básicos que construyen LVM son:
Physical volume/Volúmenes físicos (PV): Particiones en el disco rígido ( puede ser sobre tanto sobre un disco o sobre un archivo de loopback) donde se tener un grupo de volúmenes Posee una cabecera especial y esta dividida en extensiones físicas Piense en los volúmenes físicos como un gran edificio de bloques que pueden ser usados para armar tus discos rígidos
Volume group/Grupo de volúmenes (VG): Son grupos de volúmenes físicos que son usados como volúmenes de almacenamiento ( como si fueran un solo disco). Contienen volúmenes lógicos Piense en los grupos de volúmenes como discos rígidos
Logical volume/Volúmenes lógicos (LV): Una "partición virtual/lógica" que reside en un grupo de volúmenes y esta compuesta por extensiones físicas Piense en volúmenes lógicos como particiones normales.
Physical extenúe/Extensiones físicas (PE): Una pequeña parte de un disco (usualmente 4MB) que puede ser asignada a un volumen lógico Piense en las Extensiones físicas como partes de los discos que pueden ser asignadas a cualquier partición
Recuperando el sistema a traves de espejo LVM nivel 1 y ejecutando, actualización / recompilación del kernel
Introducción
Si su sistema esta configurado con un espejo LVM nível 1, este articulo le ayudará a recuperar el sistema después de una falla, o hasta en el caso de que usted desea hacer una actualización de su servidor y recompilar su kernel entre otros.
El espejo LVM es una optima opción para aquellos que no poseem una placa controladora RAID (lo que es dificil actualmente), pero va mas alla. A pesar de un RAID 5, El espejo LVM le ayudará en este caso, teniendo en cuenta el reflejo no se romperá directamente a través del controlador.
Vamos al grano:
Distribción utilizada: Red Hat Enterprise 6.1
Version LVM: LVM 2.0
Cantidad de discos: 2 discos de 20G
Análisis de estructura - copia del /boot
Estructura dos discos y particionamiento:
# fdisk -l /dev/sda /dev/sdb
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004454b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 33 262144 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 33 2611 20708352 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdef721d9
Device Boot Start End Blocks Id System
/dev/sdb1 1 34 273073+ 83 Linux
/dev/sdb2 35 2610 20691720 5 Extended
/dev/sdb5 35 166 1060258+ 83 Linux
/dev/sdb6 167 2610 19631398+ 83 Linux
Verificando si los discos estan relacionados a un PV:
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rootvg lvm2 a- 19.73g 5.20g
/dev/sdb5 rootvg lvm2 a- 1.00g 416.00m
/dev/sdb6 rootvg lvm2 a- 18.72g 4.67g
En la salida del comando ingresado anteriormente, verificamos que existen 3 PVs asociados al VG rootvg.
Verificando el VGs:
# vgs
VG #PV #LV #SN Attr VSize VFree
rootvg 3 7 0 wz--n- 39.45g 10.28g
En la salida del comando ingresado anteriormente verificamos que en el VG rootvg existen 3PVs y 7 LVs.
Verificando la estructura del espejo LVM nivel 1:
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
jbosslv rootvg mwi-ao 5.00g jbosslv_mlog 100.00
locallv rootvg mwi-ao 2.00g locallv_mlog 100.00
rootlv rootvg mwi-ao 1.00g rootlv_mlog 100.00
swaplv rootvg mwi-ao 1.00g swaplv_mlog 100.00
tmplv rootvg mwi-ao 512.00m tmplv_mlog 100.00
usrlv rootvg mwi-ao 3.03g usrlv_mlog 100.00
varlv rootvg mwi-ao 2.00g varlv_mlog 100.00
Obs.: Linux todavía no puede trabajar con / boot en el LVM, a diferencia de otros Unix como AIX, Solaris y HP-UX. Así que tenemos que hacer una copia de nuestro / boot para preservar el gestor de arranque.
Haciendo una copia del /boot
En este paso, vamos a ejecutar una simple copia de nuestro /boot, pues como explique anteriormente, Linux (LVM) no acepta que coloquemos /boot en el LVM.
Volviendo a nuestra estructura de discos y particionamientos, poseemos una partición fuera del LVM: /dev/sdb1
# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdef721d9
Device Boot Start End Blocks Id System
/dev/sdb1 1 34 273073+ 83 Linux
/dev/sdb2 35 2610 20691720 5 Extended
/dev/sdb5 35 166 1060258+ 83 Linux
/dev/sdb6 167 2610 19631398+ 83 Linux
Vamos a crear un sistema de archivos para esta partición, montarla y hacer el backup del /boot actual.
Vamos a utilizar el comando blkid :
# mkfs.ext4 -j /dev/sdb1
El comando de arriba creara un file system ext4 sobre la partición /dev/sdb1
# blkid | grep sdb
/dev/sdb1: UUID="0d99c5fb-4e35-4616-aac3-0ad6f091d81f" TYPE="ext4"
/dev/sdb5: UUID="7otW2q-utkP-it3v-e8xy-M97Z-rbDl-nESC9Q" TYPE="LVM2_member"
/dev/sdb6: UUID="Vfdz15-LMIz-U5aD-7XVj-97hP-I30q-xGHjQ3" TYPE="LVM2_member"
Iniciando la copia del /boot para otro disco:
# mkdir /boot.2
# mount /dev/sdb1 /boot.2
# cp -ap /boot/* /boot.2/
Copia finalizada con exito.
Rompiendo el espejo - cambiando disco
Rompiendo espejo LVM (nível 1)
En este momento vamos a romper el espejo para tener una copia del sistema hasta el momento, sugiero que todos los servicios esten parados y el acceso al servidor para usuarios sean bloqueados, para que tengamos una imagen del sistema mas completa posible.
Rompiendo el espejo del LVM:
Para crear un espejo usamos 'flags -m' informando 'degree' (degrau), que deseariamos crear. En nuestro caso, fue 1, para la creación del espejo.
En este momento vamos a utilizar un 'degree 0' para romper el espejo.
Vamos a quitar el disco "/dev/sda2" del grupo "rootvg" para visualizar los PS (Physical Segments) relacionados a sus PE (Physical extent), vamos a ejecutar el comando de abajo para visualizar las informaciones necesarias.
# pvdisplay -m
--- Physical volume ---
PV Name /dev/sda2
VG Name rootvg
PV Size 19.75 GiB / not usable 15.00 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 1263
Free PE 364
Allocated PE 899
PV UUID 3sGMLy-k2pl-Ehof-lZ3o-MDKc-jGHS-jev0cW
--- Physical Segments ---
Physical extent 0 to 127:
Logical volume /dev/rootvg/locallv_mimage_1
Logical extents 0 to 127
Physical extent 128 to 191:
Logical volume /dev/rootvg/rootlv_mimage_1
Logical extents 0 to 63
Physical extent 192 to 255:
Logical volume /dev/rootvg/swaplv_mimage_1
Logical extents 0 to 63
Physical extent 256 to 256:
Logical volume /dev/rootvg/tmplv_mlog
Logical extents 0 to 0
Physical extent 257 to 450:
Logical volume /dev/rootvg/usrlv_mimage_1
Logical extents 0 to 193
Physical extent 451 to 770:
Logical volume /dev/rootvg/jbosslv_mimage_1
Logical extents 0 to 319
Physical extent 771 to 898:
Logical volume /dev/rootvg/varlv_mimage_1
Logical extents 0 to 127
Physical extent 899 to 1262:
FREE
Removiendo el disco /dev/sda2 del espejo rootvg, conforme a lo especificado abajo:
# lvconvert -m0 root/locallv /dev/sda2:0-127
Volume group "root" not found
# lvconvert -m0 rootvg/locallv /dev/sda2:0-127
Logical volume locallv converted.
# lvconvert -m0 rootvg/rootlv /dev/sda2:128-191
Logical volume rootlv converted.
# lvconvert -m0 rootvg/swaplv /dev/sda2:192-255
Logical volume swaplv converted.
# lvconvert -m0 rootvg/tmplv /dev/sda2:256-256
Logical volume tmplv converted.
# lvconvert -m0 rootvg/usrlv /dev/sda2:257-450
Logical volume usrlv converted.
# lvconvert -m0 rootvg/jbosslv /dev/sda2:451-770
Logical volume jbosslv converted.
# lvconvert -m0 rootvg/varlv /dev/sda2:771-898
Logical volume varlv converted.
Despues de romer el espejo, el comando de abajo informará que no existe ningun espejo activo:
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
jbosslv rootvg -wi-ao 5.00g
locallv rootvg -wi-ao 2.00g
rootlv rootvg -wi-ao 1.00g
swaplv rootvg -wi-ao 1.00g
tmplv rootvg -wi-ao 512.00m
usrlv rootvg -wi-ao 3.03g
varlv rootvg -wi-ao 2.00g
Vamos, en este momento, a retirar el disco /dev/sda2, que en verdad es un PV, ejecutando el comando de abajo:
# vgreduce rootvg /dev/sda2
Removed "/dev/sda2" from volume group "rootvg"
Ejecutando el comando de abajo para listar todos los PVs relacionados a un VG, vamos a verificar que no existe ningun VG relacionado al PV /dev/sda2.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 lvm2 a- 19.75g 19.75g
/dev/sdb5 rootvg lvm2 a- 1.00g 1.00g
/dev/sdb6 rootvg lvm2 a- 18.72g 4.19g
Hasta este punto no tuvimos ningún problema y nuestro espejo fue roto o quebrado.
Alterando el disco que sera iniciado
Acabamos de ejecutar la rotura de nuestro espejo nivel 1, tneemos nuestra partición /boot identica al disco SDA.
Vamos entonces a mover el disco que sera inicial-izado por el SO.
Para realizar esta modificación, seguimos los pasos de abajo utilizando el comando: fdisk /dev/sdb
Y modificar el disco que iniciará junto con el sistema "sdb" (no demostrare como es hecha esa configuración).
Después de configurar el disco que iniciara, con el comando de abajo nos devolverá las informaciones:
# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004454b
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 33 262144 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 33 2611 20708352 8e Linux LVM
Y tendremos nuestro espejo (nível 1) interrumpido y con todas las informaciones hasta el momento de quiebre del sistema, y podemos ejecutar con tranquilidad la recompilación del kernel, actualizar el servidor sin miedo de fallas, redimensionar discos etc.
En caso de que ocurra algun error en uno de los procesos realizados mas arriba, solo entramos como 'single user' y configurar el disco 'sda' para iniciar junto con el SO y listo.nto.