viernes, 18 de octubre de 2013

Gestión de volúmenes lógicos

LVM es una implementación que consiste en un administrador de volúmenes lógicos para el núcleo de Linux. Fue originalmente escrito en 1998 por Heinz Mauelshagen, quien se basó sobre el administrador de volúmenes de Veritas, el cual solía ser utilizado en en sistemas HP-UX.
Básicamente, LVM2 permite hacer lo siguiente:
  • Cambio de tamaño de grupos de volúmenes.
  • Cambio de tamaño de volúmenes lógicos.
  • Instantáneas de lectura y escritura (a partir de LVM2).
  • RAID0 de volúmenes lógicos.
LVM carece de soporte para implementar RAID1 o RAID5, por lo que se recomienda configurar este tipo de arreglos RAID, trabajando con volúmenes lógicos por encima de los arreglos RAID.
LVM se compone de tres partes:
  1. Volúmenes físicos (pv, physical volume). Son particiones en el disco duro, con la bandera 8e. Se pueden dividir en extensiones físicas (pe o physical extents).
  2. Volúmenes lógico (lv o logical volume). Se componen de volúmenes físicos. Se pueden dividir en extensiones lógicas (le, logical extents).
  3. Grupos de volúmenes (vg o volume group). Se componen de uno o más volúmenes lógicos utilizados y volúmenes físicos sin utilizar. Son unidades administrativas donde se agrupan los recursos.

Procedimientos.

Crear un volumen lógico a partir de un disco duro nuevo.

Ejecute el mandato parted para crear una nueva etiqueta en el disco duro nuevo.
parted /dev/sdb mklabel msdos
Utilice nuevamente el mandato parted para crear una partición primaria tipo ext4, que tendrá 10240 GB (inicio en 1, fin en 10240):
parted /dev/sdb mkpart primary ext4 1 10480
Cambie el tipo de partición a LVM:
parted /dev/sdb set 1 lvm on
Para visualizar la tabla de particiones y verificar que se ha creado una partición primaria de 10240 MB, tipo LVM, ejecute lo siguiente:
parted /dev/sdb print
Lo anterior debe devolver una salida similar al al siguiente:
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Numero  Inicio  Fin     Tamaño  Typo     Sistema de ficheros  Banderas
 1      1049kB  10.5GB  10.5GB  primary                       lvm
Para presentar la nueva partición ante el núcleo del sistema, ejecute el mandato partprobe del siguiente modo:
partprobe /dev/sdb1
Nota.
Si lo anterior falla, ejecute el mandato hdaparm del siguiente modo:
hdparm -z /dev/sdb
Para crear un volumen físico, ejecute el mandato pvcreate del siguiente modo:
pvcreate /dev/sdb1
Ejecute el mandato pvscan para verificar el procedimiento anterior:
pvscan
Lo anterior deberá devolver una salida similar a la siguiente:
  PV /dev/sda2   VG VolGroup00 lvm2 [53.80 GiB / 0    free]
  PV /dev/sda3   VG VolGroup01 lvm2 [8.00 GiB / 0    free]
  PV /dev/sdb1                  lvm2 [9.76 GiB]
  Total: 3 [71.55 GiB] / in use: 2 [61.79 GiB] / in no VG: 1 [9.76 GiB]
Para crear el grupo de volúmenes denominado VolDatos, ejecute el mandato vgcreate del siguiente modo:
vgcreate VolDatos00 /dev/sdb1
Ejecute el mandato vgscan para verificar el procedimiento anterior:
vgscan
Lo anterior deberá devolver una salida similar a la siguiente:
  Reading all physical volumes.  This may take a while...
  Found volume group "VolDatos00" using metadata type lvm2
  Found volume group "VolGroup00" using metadata type lvm2
  Found volume group "VolGroup01" using metadata type lvm2
Para crear un volumen lógico, denominado Datos00, perteneciente al grupo de volúmenes denominado VolDatos, asignando el 100% de las extensiones lógicas libres, ejecute el mandato lvcreate del siguiente modo:
lvcreate -l 100%FREE VolDatos00 -n Datos00
Ejecute el mandato lvscan para verificar el procedimiento anterior:
lvscan
Lo anterior deberá devolver una salida similar a la siguiente:
  ACTIVE            '/dev/VolDatos00/Datos00' [9.76 GiB] inherit
  ACTIVE            '/dev/LogVol00/LogVol01' [53.80 GiB] inherit
  ACTIVE            '/dev/LogVol01/LogVol00' [8.00 GiB] inherit
Para dar formato al nuevo volumen lógico, ejecute el mandato mkfs.ext4 del siguiente modo:
mkfs.ext4 /dev/VolDatos00/Datos00
Ejecute el mandato mkdir para crear el punto de montaje /datos:
mkdir /datos
Para montar el volumen lógico en el directorio /datos, ejecute lo siguiente:
mount /dev/VolDatos00/Datos00 /datos
Ejecute el mandato df para verificar el procedimiento anterior:
df
Lo anterior deberá devolver una salida similar a la siguiente:
S.ficheros         Bloques de 1K   Usado    Dispon Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
                      26351440    221008  26130432   1% /
tmpfs                   319096        88    319008   1% /dev/shm
/dev/sda1               198337     24376    163721  13% /boot
/
/dev/mapper/VolDatos00-Datos00
                      10071208    153560   9406060   2% /datos
Para que el volumen lógico se monte automáticamente al iniciar el sistema, edite el archivo /etc/fstab:
vim /etc/fstab
Añada el siguiente contenido:
/dev/mapper/VolDatos00-Datos00   /datos   ext4   defaults,noatime,nodiratime   1 2
Desmonte y monte de nuevo el volumen lógico para verificar que todo trabaje correctamente.
umount /datos
mount /datos

Mover contenidos desde un volumen físico a otro en un nuevo disco duro.

Asumiendo que se ha realizado todo el procedimiento anterior y que el contenido actual del volumen lógico es menor al tamaño del nuevo volumen físico añadido al volumen lógico, sólo se requiere utilizar el mandato pvmove para mover el contenido de un volumen físico a otro.
pvmove /dev/sda1 /dev/sdb1
Una vez terminado el movimiento, asumiendo que el tamaño del volumen físico en /dev/sdb1, es igual o mayor al del volumen físico en /dev/sda1, sólo resta eliminar /dev/sda1 del volumen lógico.
vgreduce VolGroup00 /dev/sda1

Añadir un volumen físico a un volumen lógico existente, a partir de espacio libre sin particionar en un disco duro.

Se asume un escenario donde:
  • Se utilizará el mismo disco duro del procedimiento anterior y que corresponde al dispositivo /dev/sdb
  • El grupo de LVM al cual se añadirá el disco es VolGroup00
  • Que el volumen lógico que se hará crecer con un nuevo volumen físicos, será LogVol00.
Determine el espacio disponible del disco duro, ejecutando el mandato parted del siguiente modo:
parted /dev/sdb unit MB print free
Determine en qué MB comienza el espacio libre.
Para crear una nueva partición de aproximadamente 5120 MB, ejecute el mandato parted del siguiente modo:
parted /dev/sdb mkpart primary ext4 10481 15600
Nota.
Es posible que el sistema devuelva una advertencia que indica que se necesita reiniciar para que el núcleo de Linux pueda leer la nueva tabla de particiones:
Aviso: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Dispositivo o recurso ocupado). As a result, it may not reflect all of your changes until after reboot.
Ignore la advertencia y continúe trabajando. De ser necesario, reinicie el sistema más adelante o bien ejecute el mandato partprobe del siguiente modo:
partprobe /dev/sdb2
Si lo anterior falla, ejecute el mandato hdaparm del siguiente modo:
hdparm -z /dev/sdb
Cambie el tipo de partición a LVM:
parted /dev/sdb set 2 lvm on
Para visualizar la tabla de particiones y verificar que se ha creado una partición primaria de 5120 MB, tipo LVM, ejecute lo siguiente:
parted /dev/sdb print
Lo anterior deberá devolver una salida similar a la siguiente:
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Numero  Inicio  Fin     Tamaño  Typo     Sistema de ficheros  Banderas
 1      1049kB  10.5GB  10.5GB  primary                       lvm
 2      10.5GB  15.6GB  5119MB  primary                       lvm
Para crear un volumen físico, ejecute el mandato pvcreate del siguiente modo:
pvcreate /dev/sdb2
Ejecute el mandato pvscan para verificar el procedimiento anterior:
pvscan
Lo anterior deberá devolver una salida similar a la siguiente:
  PV /dev/sda2   VG VolGroup00 lvm2 [53.80 GiB / 0    free]
  PV /dev/sda3   VG VolGroup01 lvm2 [8.00 GiB / 0    free]
  PV /dev/sdb2                 lvm2 [4.77 GiB]
  Total: 4 [76.32 GiB] / in use: 3 [71.55 GiB] / in no VG: 1 [4.77 GiB]
Para añadir este volumen físico, que corresponde a la partición /dev/sdb2, al grupo de volúmenes denominado VolGroup00, ejecute el mandato vgextend del siguiente modo:
vgextend VolGroup00 /dev/sdb2
Lo anterior debe devolver una salida similar a la siguiente:
  Volume group "VolGroup00" successfully extended
Para asignar el 100% nuevo espacio libre disponible, provisto por el nuevo volumen físico añadido al grupo de volúmenes denominado VolGroup00, al volumen lógico LogVol00, ejecute el mandato lvextend del siguiente modo:
lvextend -l +100%FREE /dev/VolGroup00/LogVol00
Lo anterior debe devolver una salida similar a la siguiente:
  Extending logical volume LogVol00 to 31.66 GiB
  Logical volume LogVol00 successfully resized
Para cambia el tamaño del sistema de archivos y que éste utiliza el nuevo espacio libre recién asignado al volumen lógico, ejecute el mandato resize2fs del siguiente modo:
resize2fs /dev/VolGroup00/LogVol00
Lo anterior debe devolver una salida similar a la siguiente:
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Datos/LogVol00 is mounted on /home; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/Datos/LogVol00 to 8300544 (4k) blocks.
El sistema de ficheros en /dev/VolGroup00/LogVol00 tiene ahora 8300544 bloques.
Ejecute df, con la opción -h, para ver el nuevo tamaño de del sistema de archivos alojado en /dev/VolGroup00/LogVol00:
df -h
Lo anterior debe devolver una salida similar a la siguiente:
S.ficheros            Size  Used Avail Use% Montado en
/dev/mapper/VolGroup00-LogVol00
                       32G  216M   30G   1% /
/dev/sda1             194M   24M  160M  13% /boot
/dev/mapper/VolDatos00-Datos00
                      9.7G  229M  8.9G   3% /datos

Quitar una unidad física a un volumen lógico.

Antes de proceder, es importante contar con un respaldo de los datos almacenados en el volumen lógico al cual se le quitará la unidad física. Verifique que el respaldo es confiable.
Este procedimiento requiere que el volumen lógico esté sin montar. Si se trata de un volumen lógico cuyo sistema de archivos esté en uso, como /, /usr o /var, el procedimiento debe hacerse desde un disco vivo o bien utilizando el disco de instalación en modo de rescate.
Inicie el sistema con el disco de instalación en modo de rescate.
Ejecute el mandato df y desmonte todas las particiones que estén debajo del directorio /mnt/sysimage.
Ejecute el mandato fsck, con la opción -f, para verificar la partición a reducir.
fsck -f /dev/VolGroup00/LogVol00
Para determinar el tamaño al que debe reducirse el sistema de archivos, ejecute el mandato parted del siguiente modo:
parted /dev/sdb print
Ejecute el mandato resize2fs para reducir el tamaño del sistema de archivos, a una cantidad
Desmonte la partición
Ejecute el mandato pvdisplay para determinar el tamaño de las particiones /dev/sda2 y /dev/sdb2 y cuantas extensiones físicas contienen cada una.
pvdisplay /dev/sda2 /dev/sdb2
Lo anterior debe devolver una salida similar a la siguiente:
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               53.80 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              13772
  Free PE               0
  Allocated PE          13772
  PV UUID               jZCHg7-ub0R-kziP-hCy6-V12S-tXRm-2qXont
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               VolGroup00
  PV Size               4.77 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              1220
  Free PE               0
  Allocated PE          1220
  PV UUID               lk6bMt-3vci-yw1p-Te2w-KPot-kpje-l18cAB
Primero hay que reducir el tamaño del sistema de archivos involucrado, de modo que el nuevo tamaño sea ligeramente menor al tamaño del volumen físico que se continuará utilizando en el volumen lógico, siempre y cuando el espacio utilizado del sistema de archivos sea menor al tamaño del volumen físico que se conservara. Si se reduce el tamaño del sistema de archivos, a uno menor al del espacio utilizado por el contenido actual, se perderán todos los datos.
Asumiendo un escenario como el del ejemplo de arriba, donde el tamaño del volumen físico que se conservará es de 53.80 GB, defina 52 GB.
resize2fs /dev/VolGroup00/LogVol00 52G
Lo anterior debe devolver una salida similar a la siguiente:
Resizing the filesystem on /dev/Datos/LogVol00 to 7077888 (4k) blocks.
El sistema de ficheros en /dev/Datos/LogVol00 tiene ahora 7077888 bloques.
Vuelva a verificar el volumen lógico con el mandato fsck, del siguiente modo:
fsck -f /dev/VolGroup00/LogVol00
Asumiendo un escenario donde el volumen físico que se eliminará del volumen lógico tiene 1220 extensiones, para restar del volumen lógico estas extensiones físicas, ejecute el mandato lvresize del siguiente modo:
lvresize -l -1220 /dev/VolGroup00/LogVol00
Lo anterior le mostrará una advertencia, la cual indica que tiene un alto riesgo reducir el tamaño del volumen lógico y que es posible se pierdan todos los datos. Es precisamente por ésto que se redujo primero el tamaño del sistema de archivos.
  WARNING: Reducing active logical volume to 26.90 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol00? [y/n]:
Si el tamaño del sistema de archivos es menor al tamaño que se asignará después de eliminar las extensiones, correspondientes al volumen físico que se eliminará, puede responder con una y sin temor a perder los datos contenidos en el volumen lógico.
  WARNING: Reducing active logical volume to 26.90 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol00? [y/n]:y
  Reducing logical volume LogVol00 to 26.90 GiB
  Logical volume LogVol00 successfully resized
Para eliminar el volumen físico del grupo de volúmenes denominado VolGroup00, ejecute lo siguiente:
vgreduce VolGroup00 /dev/sdb2
Lo anterior debe devolver una salida similar a la siguiente:
  Removed "/dev/sdb2" from volume group "Datos"
Como precaución, se redujo el tamaño del sistema de archivos a una cantidad menor a la disponible en el volumen físico que se conservó. Ésto deja espacio libre que probablemente se quiera utilizar. Para cambiar el tamaño del sistema de archivos y que tome todo el espacio disponible en el volumen lógico, ejecute el mandato resize2fs del siguiente modo:
resize2fs /dev/VolGroup00/LogVol00
Lo anterior debe devolver una salida similar a la siguiente:
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Datos/LogVol00 is mounted on /home; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/Datos/LogVol00 to 7051264 (4k) blocks.
El sistema de ficheros en /dev/Datos/LogVol00 tiene ahora 7051264 bloques.
Vuelva a verificar la partición, ejecutando el mandato fsck del siguiente modo.
fdisk -f /dev/VolGroup00/LogVol00
Monte la partición en el directorio que le corresponda y verifique que contiene datos. Al terminar reinicie el sistema y retire el disco de rescate.

Fuente: http://www.alcancelibre.org/staticpages/index.php/gestion-volumenes-logicos?query=particionar

No hay comentarios:

Publicar un comentario