Logical Volume Manager
# file --special-files /dev/mapper/datavg-nom_lv /dev/mapper/datavg-nom_lv: Linux rev 1.0 ext2 filesystem data (mounted or unclean)
ANTECEDENTES
Tenemos un disco duro con dos particiones:
/dev/sda1 | /boot |
/dev/sda5 | extendida LVM |
Hemos trasteado el LVM y no arranca. Para montar LVM desde una live-cd:
1. Arrancar desde la live-cd
2. Buscar el VG:
vgscan
3. Activar el VG:
vgchange -a y vg_encontrado_paso_2
4. Montar el LV en cuestión, en mi caso el raíz:
4.1 mkdir /mnt/auxiliar
4.2 mount /dev/mapper/vg_encontrado_paso_2-root /mnt/auxiliar
https://www.redhat.com/archives/linux-lvm/2006-August/msg00081.html
ANTECEDENTES
Tenemos un VG (Grupo de Volúmenes) con 3 LV (Volumen Lógico):
/ /home /swap
Queremos achicar el LV /home para dejar espacio con el objeto de crear en ese espacio liberado un cuarto LV, donde montar /var
1. (Todo como root) obtenemos información del VG:
clear && lvdisplay
--- Logical volume --- LV Name /dev/volumen/root VG Name volumen LV UUID ErCMtp-5H0L-cUv9-AS7L-B1Gq-9fuM-xFtcDN LV Write Access read/write LV Status available # open 1 LV Size 6,68 GB Current LE 1709 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/volumen/swap_1 VG Name volumen LV UUID ly0S8s-MC2A-31yG-1dba-NYZk-ohQ0-yg1o6l LV Write Access read/write LV Status available # open 2 LV Size 2,59 GB Current LE 664 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Name /dev/volumen/home VG Name volumen LV UUID uQkCYh-3u1z-s6yq-0dpA-Q6MK-5PIO-7zAoy9 LV Write Access read/write LV Status available # open 1 LV Size 65,00 GB Current LE 16639 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2
2. Desmontar la partición (por si las moscas, pero creo que desde el kernel 2.6 con sistemas de ficheros EXT3 NO es necesario). Es mejor si salimos del entorno gráfico:
umount /dev/mapper/volumen-home
3. Entrar en la consola de lvm y realizar unas operaciones:
3.1 lvm 3.2 Buscamos VG:
vgscan
3.3 Activamos el VG:
vgchange -a y VolGroup00
3.4 Generamos los ficheros de dispositivos ¿?:
vgmknodes
3.5 Salimos de la consola lvm:
exit
4. Achicar el sistema de ficheros
4.1 Comprobar el sistema de ficheros del LV:
e2fsck -f /dev/mapper/volumen-home
4.2 Redimensionar la partición ¿? (por ejemplo a 35 Gigas):
resize2fs /dev/mapper/volumen-home 35G
5. Achicar el LV:
5.1 Entrar en la consola lvm:
lvm
5.2 Reducir el LV (NOTA: según el tutorial la ruta es distinta, pero a mí tras avisarme que se podían perder datos me funcionó):
lvreduce -L36G /dev/volumen/home
O:
lvextend -L36G /dev/volumen/home
Creo que tanto da que da lo mismo
5.3 Salir de la consola:
exit
6. Expandir el sistema de ficheros al tamaño total del volumen.
resize2fs /dev/mapper/volumen-home
A mi me dijo que no se hacia nada
7. Aqui se puede volver a montar el sismte a de ficheros y ver los cambios. Más simple reiniciar
lvreduce -L19G /dev/mapper/fixe-home
fixe:/home/jose/Desktop/Downloads# lvdisplay --- Logical volume --- LV Name /dev/fixe/root VG Name fixe LV UUID pi5FAr-znWl-Wkma-a5FB-Lvku-Mmv3-e1vcJO LV Write Access read/write LV Status available # open 1 LV Size 332.00 MB Current LE 83 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/fixe/usr VG Name fixe LV UUID AHwTdB-ev37-LmDi-4ldW-k0fT-GD3Z-ajzZjl LV Write Access read/write LV Status available # open 1 LV Size 4.66 GB Current LE 1192 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Name /dev/fixe/var VG Name fixe LV UUID 41g0b1-YrLd-cHte-AoOT-Wtuz-4OSy-B59aJl LV Write Access read/write LV Status available # open 1 LV Size 2.79 GB Current LE 715 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2 --- Logical volume --- LV Name /dev/fixe/swap_1 VG Name fixe LV UUID ndI2u3-Si6h-tB1U-lLoB-b7o6-cjQt-pIGoAH LV Write Access read/write LV Status available # open 2 LV Size 3.84 GB Current LE 983 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:3 --- Logical volume --- LV Name /dev/fixe/tmp VG Name fixe LV UUID PuyyLe-lwAF-xsK3-XSbX-UabV-YKea-ZUnLl4 LV Write Access read/write LV Status available # open 1 LV Size 380.00 MB Current LE 95 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:4 --- Logical volume --- LV Name /dev/fixe/home VG Name fixe LV UUID DTGGm1-lOem-0po1-BApp-ave5-wh2p-qLWCVk LV Write Access read/write LV Status available # open 1 LV Size 19.00 GB Current LE 4864 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:5
lvreduce -L19G /dev/mapper/fixe-home
WARNING: Reducing active and open logical volume to 19.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce home? [y/n]: y Reducing logical volume home to 19.00 GB Logical volume home successfully resized
lvextend -L1G /dev/mapper/fixe-root
Extending logical volume root to 1.00 GB Logical volume root successfully resized
resize2fs /dev/mapper/fixe-root
resize2fs 1.41.3 (12-Oct-2008) Filesystem at /dev/mapper/fixe-root is mounted on /; on-line resizing required old desc_blocks = 2, new_desc_blocks = 4 Performing an on-line resize of /dev/mapper/fixe-root to 1048576 (1k) blocks. The filesystem on /dev/mapper/fixe-root is now 1048576 blocks long.
resize2fs /dev/mapper/fixe-home
resize2fs 1.41.3 (12-Oct-2008) Filesystem at /dev/mapper/fixe-home is mounted on /home; on-line resizing required On-line shrinking from 6564864 to 4980736 not supported.
Tenemos 80 Gb en home y queremos pasar 20 a una unidad de apoyo
1. Siempre es mejor desmontar
umount /dev/vg_manager2/lv_home
2. Achichar espacio en disco, en este caso el nuevo tamanyo sera 60G
resize2fs /dev/vg_manager2/lv_home 60G
3. Achicar Logical Volume:
lvreduce -L60G /dev/vg_manager2/lv_home
4. Crear el nuevo LV con todo el espacio libre:
lvcreate -n lv_iso -l 100%FREE vg_manager2
5. Formatear el nuevo LV
mkfs.ext4 /dev/vg_manager2/lv_iso
Ahora ya se pueden montar los 2 LV
(Creo que todo como root)
1. Obtenemos el nombre del Grupo de Volúmenes
calero:~# vgscan Reading all physical volumes. This may take a while... Found volume group "calero" using metadata type lvm2
2. Renombramos:
vgrename calero nuevo_nombre_vg
(Creo que todo como root)
1. Obtenemos el nombre de todos los Volúmenes Lógicos del Grupo de Volúmenes:
calero:~# clear && lvdisplay
LV Name /dev/calero/root
VG Name calero LV UUID KopwfX-2SZG-JJNg-H0xs-6dnb-zwmB-zBUMZR LV Write Access read/write LV Status available # open 1 LV Size 6,52 GB Current LE 1668 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Name /dev/calero/swap_1 VG Name calero LV UUID sGM4EI-QMBx-428v-B7nc-OcHB-KSnj-H9I1ze LV Write Access read/write LV Status available # open 2 LV Size 2,53 GB Current LE 648 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Name /dev/calero/home VG Name calero LV UUID jlNSaR-X2mN-l6Cs-epeu-PDRv-3iqi-izAUBP LV Write Access read/write LV Status available # open 1 LV Size 65,24 GB Current LE 16702 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2
2. Renombramos el Volumen Lógico que queramos:
lvrename /dev/calero/home nuevo_nombre_lv
Añadimos el disco físicamente
Al hacer un fdisk veremos que lo tenemos sin particionar
# fdisk -l Disk /dev/hda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 1305 10377990 8e Linux LVM Disk /dev/hdd: 2147 MB, 2147483648 bytes 16 heads, 63 sectors/track, 4161 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Disk /dev/hdd doesn't contain a valid partition table
1. Creamos partición LVM
Con fdisk creamos una partición en /dev/hdb1 y la creamos tipo LVM:
# fdisk /dev/hdd Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 4161. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-4161, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-4161, default 4161): Using default value 4161 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/hdd: 2147 MB, 2147483648 bytes 16 heads, 63 sectors/track, 4161 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/hdd1 1 4161 2097112+ 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
2. Creación PV
# pvcreate /dev/hdd1 Physical volume "/dev/hdd1" successfully created
3. Ampliamos VG
# vgextend VolGroup00 /dev/hdd1 Volume group "VolGroup00" successfully extended
4. Ampliamos LV
De los 2Gb añadimos solo 1Gb:
# lvextend -L +1G /dev/VolGroup00/LogVol00 /dev/hdd1
Extending logical volume LogVol00 to 10.12 GB Logical volume LogVol00 successfully resized
Vemos que todavía queda 1Gb libre (Free PE/Size 32/1.00GB):
# vgdisplay
VG Name VolGroup00
System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 6 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 11.88 GB PE Size 32.00 MB Total PE 380 Alloc PE / Size 348 / 10.88 GB Free PE / Size 32 / 1.00 GB VG UUID bB6L14-jB12-AmVc-IhZ0-PsK0-2kUe-nAvaTZ
Para ampliar al máximo de file system es sin ningún parámetro:
# lvextend /dev/VolGroup00/LogVol00 /dev/hdd1
Extending logical volume LogVol00 to 11.09 GB Logical volume LogVol00 successfully resized
5. Ampliamos FS
# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006) Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2654208 (4k) blocks. The filesystem on /dev/VolGroup00/LogVol00 is now 2654208 blocks long.
Referencia:
http://www.linuxnetadmin.com/2008/01/how-to-add-disk-space-with-lvm-on-linux.html
TODAVÍA NO ESTÁ TERMINADO EL ARTÍCULO
b) Crear un LV con el espacio libre de un VG:
1. Obtener el espacio libre del VG en cuestión:
vgdisplay ... Free PE / Size 3839 / 15 GB ...
2. Crear el LV de nombre 'var' con un tamaño de 15 gigas:
Opción 1: lvcreate -n var--size 15G nombre_VG Opción 2: lvcreate -n var -l 3839 nombre_VG
4. Doy formato al nuevo volumen (sistema de ficheros EXT3)
mke2fs -j /dev/mapper/nombre_VG-var
5. Si es menester, lo meto en el /etc/fstab:
6. Arranca ok, pero no lo monta. Para ver el resultado:
lvdisplay
Aparece el nuevo volumen, con el valor '# open' a '0'
Antecedentes
La secuencia es:
1º crear un PV (Volumen Físico)
2º crear 1 VG (Grupo de Volúmenes) para ese PV
3º crear 1/+ LV (Volúmenes Lógicos) para ese VG
5. Crear un PV (Volumen Físico) en una partición:
pvcreate /dev/sda7
6. Crear un VG (Grupo de Volúmenes)
vgcreate vg /dev/sda7
7. Activarlo
vgchange -a y vg
1. Desactivar todas la swap (se podría especificar la que usa el LV):
swapoff -a
2. Reducir 1 GB el tamaño del LV que usamos para swap
lvreduce /dev/vg/swap -L -1G
WARNING: Reducing active logical volume to 4.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg/swap? [y/n]
Pulsar 'y' y 'enter'
Size of logical volume vg/swap changed from 5.00 GiB (1280 extents) to 4.00 GiB (1024 extents). Logical volume vg/swap successfully resized.
3. Formatear como swap el dispositivo del LV
mkswap /dev/vg/swap
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) no label, UUID=1c3bd974-d6c4-46e4-9f64-bc2445f9e200
4. Montar swap (previsamente ya tiene su entrada en '/etc/fstab'):
swapon -va
swapon: /dev/mapper/vg-swap: found signature [pagesize=4096, signature=swap] swapon: /dev/mapper/vg-swap: pagesize=4096, swapsize=4294967296, devsize=4294967296 swapon /dev/mapper/vg-swap
5. Comprobar
cat /proc/swaps
Filename Type Size Used Priority /dev/dm-1 partition 4194300 0 -2
free -h
total used free shared buff/cache available Mem: 31Gi 408Mi 21Gi 1.0Mi 9.6Gi 30Gi Swap: 4.0Gi 0B 4.0Gi
Tenemos que desmontar /home
Miramos las particiones:
root@debian:~# df -h Filesystem Size Used Avail Use% Mounted on udev 3.8G 0 3.8G 0% /dev tmpfs 783M 688K 783M 1% /run /dev/mapper/debian--vg-root 22G 1.5G 20G 7% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/mapper/debian--vg-var 7.6G 262M 6.9G 4% /var /dev/mapper/debian--vg-home 85G 40K 81G 1% /home /dev/mapper/debian--vg-tmp 1.4G 40K 1.3G 1% /tmp /dev/sda1 455M 99M 332M 23% /boot tmpfs 783M 0 783M 0% /run/user/0 tmpfs 783M 0 783M 0% /run/user/1000
Miramos LVM
root@debian:~# lvdisplay --- Logical volume --- LV Path /dev/debian-vg/root LV Name root VG Name debian-vg LV UUID sM1VB5-QkRX-BXM1-No2F-S23M-YwQU-Cg5351 LV Write Access read/write LV Creation host, time debian, 2023-10-04 18:21:09 -0400 LV Status available # open 1 LV Size 22.25 GiB Current LE 5697 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Path /dev/debian-vg/var LV Name var VG Name debian-vg LV UUID u5Hxq6-k9eJ-25WS-AK02-afVC-o76u-vlYnyd LV Write Access read/write LV Creation host, time debian, 2023-10-04 18:21:09 -0400 LV Status available # open 1 LV Size <7.73 GiB Current LE 1978 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1 --- Logical volume --- LV Path /dev/debian-vg/swap_1 LV Name swap_1 VG Name debian-vg LV UUID r88cII-vYx4-aAmF-85yJ-vjq6-8jkR-vS5JtK LV Write Access read/write LV Creation host, time debian, 2023-10-04 18:21:09 -0400 LV Status available # open 2 LV Size 976.00 MiB Current LE 244 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:2 --- Logical volume --- LV Path /dev/debian-vg/tmp LV Name tmp VG Name debian-vg LV UUID mZHGHj-VUxN-QQhR-q8Lb-DAvW-E9sn-8ZuZ15 LV Write Access read/write LV Creation host, time debian, 2023-10-04 18:21:09 -0400 LV Status available # open 1 LV Size 1.37 GiB Current LE 351 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:3 --- Logical volume --- LV Path /dev/debian-vg/home LV Name home VG Name debian-vg LV UUID 69Y7rL-hzIr-21jn-KV3R-8qP5-XLdg-arYSL7 LV Write Access read/write LV Creation host, time debian, 2023-10-04 18:21:10 -0400 LV Status available # open 1 LV Size <86.43 GiB Current LE 22126 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:4
Quitamos 40Gbs a /home:
lvreduce -L -40G /dev/debian-vg/home
WARNING: Reducing active and open logical volume to <46.43 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce debian-vg/home? [y/n]: y Size of logical volume debian-vg/home changed from <86.43 GiB (22126 extents) to <46.43 GiB (11886 extents). Logical volume debian-vg/home successfully resized.
Vemos que hay 40Gb libres:
root@debian:~# vgdisplay --- Volume group --- VG Name debian-vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 5 Max PV 0 Cur PV 1 Act PV 1 VG Size 118.76 GiB PE Size 4.00 MiB Total PE 30403 Alloc PE / Size 20156 / 78.73 GiB Free PE / Size 10247 / <40.03 GiB VG UUID RjQDgJ-Nz9a-WDQG-4JoJ-KPHc-CUG4-zed2BI
Se las añadimos a /var
lvextend -L +40G /dev/debian-vg/var
Size of logical volume debian-vg/var changed from <7.73 GiB (1978 extents) to <47.73 GiB (12218 extents). Logical volume debian-vg/var successfully resized.
Vemos que todavía no lo ha añadido:
df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/debian--vg-root 22G 1.5G 20G 7% / /dev/mapper/debian--vg-home 85G 40K 81G 1% /home /dev/mapper/debian--vg-tmp 1.4G 40K 1.3G 1% /tmp /dev/mapper/debian--vg-var 7.6G 262M 6.9G 4% /var
Pero con lvdisplay si aparece:
--- Logical volume --- LV Path /dev/debian-vg/var LV Name var VG Name debian-vg LV UUID jud91P-5LXr-t0KI-5KSM-nim3-Xhvk-oSwkw5 LV Write Access read/write LV Creation host, time debian, 2023-10-04 19:47:42 -0400 LV Status available # open 1 LV Size <47.73 GiB Current LE 12218 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:1
Hay que extender el FS:
resize2fs /dev/debian-vg/var
resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/debian-vg/var is mounted on /var; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 6 The filesystem on /dev/debian-vg/var is now 12511232 (4k) blocks long.
Ahora si que aparece:
root@debian:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/debian--vg-root 22G 1.5G 20G 7% / /dev/mapper/debian--vg-home 85G 40K 81G 1% /home /dev/mapper/debian--vg-tmp 1.4G 40K 1.3G 1% /tmp /dev/mapper/debian--vg-var 47G 262M 45G 1% /var