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:
- 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).
- 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).
- 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:
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:
Nota. |
Si lo anterior falla, ejecute el mandato hdaparm del siguiente modo:
|
Para crear un volumen físico, ejecute el mandato
pvcreate del siguiente modo:
Ejecute el mandato
pvscan para verificar el procedimiento anterior:
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:
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:
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:
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:
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:
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:
Si lo anterior falla, ejecute el mandato hdaparm del siguiente modo:
|
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:
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:
Ejecute el mandato
pvscan para verificar el procedimiento anterior:
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:
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:
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