Versión 1.0
Autor:Falko Timme
Última actualización:2015-02-09
Esta guía muestra cómo trabajar con LVM (Administración de volúmenes lógicos) en Linux. También describe cómo usar LVM junto con RAID1 en un capítulo adicional. Como LVM es un tema bastante abstracto, este artículo viene con una imagen de Debian Etch VMware que puede descargar e iniciar, y en ese sistema Debian Etch puede ejecutar todos los comandos que ejecuto aquí y comparar sus resultados con los míos. A través de este enfoque práctico, debería acostumbrarse a LVM muy rápido.
Sin embargo, ¡no doy ninguna garantía de que este tutorial funcione para usted!
1 nota preliminar
Este tutorial se inspiró en dos artículos que leí:
- http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html
- http://www.debian-administration.org/articles/410
Estos son excelentes artículos, pero difíciles de entender si nunca antes ha trabajado con LVM. Es por eso que he creado esta imagen Debian Etch VMware que puede descargar y ejecutar en VMware Server o VMware Player (consulte https://www.howtoforge.com/import_vmware_images para obtener información sobre cómo hacerlo).
Instalé todas las herramientas que necesitamos durante el transcurso de esta guía en el sistema Debian Etch (ejecutando
apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs
) para que no tengas que preocuparte por eso.
La red del sistema Debian Etch está configurada a través de DHCP, por lo que no tiene que preocuparse por las direcciones IP en conflicto. La contraseña de root es howtoforge. También puede conectarse a ese sistema con un cliente SSH como PuTTY. Para averiguar la dirección IP del sistema Debian Etch, ejecute
ifconfig
El sistema tiene seis discos duros SCSI, /dev/sda - /dev/sdf. /dev/sda se usa para el propio sistema Debian Etch, mientras que usaremos /dev/sdb - /dev/sdf para LVM y RAID. /dev/sdb - /dev/sdf cada uno tiene 80 GB de espacio en disco. Al principio, actuaremos como si cada uno tuviera solo 25 GB de espacio en disco (por lo tanto, usaremos solo 25 GB en cada uno de ellos), y en el curso del tutorial "reemplazaremos" nuestros discos duros de 25 GB con discos duros de 80 GB, demostrando así cómo puede reemplazar discos duros pequeños por otros más grandes en LVM.
El artículo http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html usa discos duros de 250GB y 800GB, pero algunos comandos como pvmove toman mucho tiempo con tales tamaños de disco duro, por eso decidí usar discos duros de 25 GB y 80 GB (eso es suficiente para entender cómo funciona LVM).
1.1 Resumen
Descargue esta imagen de Debian Etch VMware (~310 MB) e inícielo así. Inicie sesión como root con la contraseña howtoforge.
Diseño LVM 2
Básicamente, LVM se ve así:
Tiene uno o más volúmenes físicos (/dev/sdb1 - /dev/sde1 en nuestro ejemplo), y en estos volúmenes físicos crea uno o más grupos de volúmenes (por ejemplo, servidor de archivos), y en cada grupo de volúmenes puede crear uno o más volúmenes lógicos. Si usa varios volúmenes físicos, cada volumen lógico puede ser más grande que uno de los volúmenes físicos subyacentes (pero, por supuesto, la suma de los volúmenes lógicos no puede exceder el espacio total que ofrecen los volúmenes físicos).
Es una buena práctica no asignar todo el espacio a los volúmenes lógicos, sino dejar algo de espacio sin usar. De esa manera, puede ampliar uno o más volúmenes lógicos más adelante si siente la necesidad de hacerlo.
En este ejemplo, crearemos un grupo de volúmenes llamado servidor de archivos y también crearemos los volúmenes lógicos /dev/fileserver/share, /dev/fileserver/backup y /dev/fileserver/media (que usará solo la mitad del espacio ofrecidos por nuestros volúmenes físicos por ahora, de esa manera podemos cambiar a RAID1 más adelante (también descrito en este tutorial)).
3 Nuestra primera configuración de LVM
Descubramos nuestros discos duros:
fdisk -l
La salida se ve así:
server1:~# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ 83 Linux
/dev/sda2 19 2450 19535040 83 Linux
/dev/sda4 2451 2610 1285200 82 Linux swap / Solaris
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sde doesn't contain a valid partition table
Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdf doesn't contain a valid partition table
Todavía no hay particiones en /dev/sdb - /dev/sdf. Crearemos las particiones /dev/sdb1, /dev/sdc1, /dev/sdd1 y /dev/sde1 y dejaremos /dev/sdf intacto por ahora. Actuamos como si nuestros discos duros tuvieran solo 25 GB de espacio en lugar de 80 GB por ahora, por lo que asignamos 25 GB a /dev/sdb1, /dev/sdc1, /dev/sdd1 y /dev/sde1:
fdisk /dev/sdb
server1:~# fdisk /dev/sdb
El número de cilindros para este disco está establecido en 10443.
No hay nada de malo en eso, pero es mayor de 1024,
y podría, en ciertas configuraciones, causar problemas con:
1) software que se ejecuta en el momento del arranque (por ejemplo, versiones antiguas de LILO)
2) software de arranque y partición desde otros sistemas operativos
(por ejemplo, DOS FDISK, OS/2 FDISK)
Comando (m para ayuda): <-- m
Comando de acción
a alternar una marca de arranque
b editar bsd disklabel
c alternar el indicador de compatibilidad con DOS
d eliminar una partición
l listar los tipos de partición conocidos
m imprimir este menú
n agregar una nueva partición
o crear una nueva tabla de particiones de DOS vacía
p imprimir la tabla de particiones
q salir sin guardar los cambios
s crear una nueva etiqueta de disco de Sun vacía
t cambiar la id del sistema de una partición
u cambiar las unidades de visualización/entrada
v verificar la tabla de particiones w escribir tabla en disco y salir
x funcionalidad extra (solo expertos)
Comando (m para ayuda): <-- n
Comando de acción
e extendido
p partición primaria (1-4)
<-- p
Número de partición (1-4): <-- 1
Primer cilindro (1-10443, predeterminado 1):<--
Usando el valor predeterminado 1
Último cilindro o +tamaño o +tamañoM o +tamañoK (1-10443, predeterminado 10443): <-- +25000M
Comando (m para ayuda): <-- t
Partición seleccionada 1
Código hex (escriba L para listar los códigos): <-- L
0 Vacío 1e oculto W95 Fat1 80 Old Minix Be Solaris Boot
1 Fat12 24 NEC DOS 81 Minix/Old Lin Bf Solaris
2 Root Xenix 39 Plan 9 82 Linux Swap/So C1 Drdos/SEC (Fat-
3 Xenix USR 3C Partitionmagic 83 Linux C4 DRDOS/SEC (grasa-
4 grasa <32m 40 Venix 80286 84 OS/2 oculto C:C6 DRDOS/SEC (Fat-
5 extendido C Boot de preparación 85 Linux extendido C7 Syrinx
6 Fat16 42 SFS 86 NTFS Volumen Conjunto DA DA DATOS Non-FS
7 HPFS/NTFS 4D QNX4.X 87 NTFS Volumen Conjunto DB CP/M/CTOS/. <
8 aix 4e qnx4.x 2nd Parte 88 Linux Entenerxt de Dell Utilidad
9 AIX Bootable 4F Qnx4.x 3ra Parte 8e Linux LVM DF Bootit
A OS /2 Boot Manag 50 Ontrack DM 93 AMEBABA E1 DOS Access
B W95 Fat32 51 Ontrack DM6 Aux 94 AMOBA BBT E3 DOS R /O
C W95 FAT32 (LBA) 52 CP /M 9F BSD /OS E4 Speedstor
E W95 FAT16 ( Lba) 53 Ontrack DM6 Aux A0 IBM ThinkPad Hi Eb Beos FS
F W95 Ext'd (LBA) 54 OntrackDM6 A5 FreeBSD EFI EFI GPT
10 OPUS 55 EZ-DRive A6 OpenBSD EFI (FAT-12 /16/
11 FAT12 oculto 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 speedstor
14 Fat16 oculto <3 61 Speedstor A9 Netbsd F4 Speedstor
16 Hidden Fat16 63 Gnu Hurd o Sys Ab Darwin Boot F2 DOS Secundario
17 Hidden HPFS /NTF 64 NETWARE DE NOVELLO B7 BSDI FS FS FS fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Oculto W95 FAT3 70 DiskSecure Mult bb Asistente de arranque hid ff BBT
1c FAT3 Oculto/W95 /> Código hexadecimal (escriba L para listar códigos): <-- 8e
Tipo de sistema cambiado de partición 1 a 8e (Linux LVM)
Comando (m para ayuda): <-- w
¡La tabla de particiones se ha modificado!
Llamar a ioctl() para volver a leer la tabla de particiones.
Sincronizar discos.
Ahora hacemos lo mismo con los discos duros /dev/sdc - /dev/sde:
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
Entonces corre
fdisk -l
otra vez. La salida debería verse así:
server1:~# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ 83 Linux
/dev/sda2 19 2450 19535040 83 Linux
/dev/sda4 2451 2610 1285200 82 Linux swap / Solaris
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdf doesn't contain a valid partition table
Ahora preparamos nuestras nuevas particiones para LVM:
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sde1" successfully created
Vamos a revertir esta última acción con fines de entrenamiento:
pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Labels on physical volume "/dev/sdb1" successfully wiped
Labels on physical volume "/dev/sdc1" successfully wiped
Labels on physical volume "/dev/sdd1" successfully wiped
Labels on physical volume "/dev/sde1" successfully wiped
Entonces corre
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
de nuevo:
server1:~# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sde1" successfully created
Ahora corre
pvdisplay
para conocer el estado actual de sus volúmenes físicos:
server1:~# pvdisplay
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID G8lu2L-Hij1-NVde-sOKc-OoVI-fadg-Jd1vyU
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 40GJyh-IbsI-pzhn-TDRq-PQ3l-3ut0-AVSE4B
--- NEW Physical volume ---
PV Name /dev/sdd1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 4mU63D-4s26-uL00-r0pO-Q0hP-mvQR-2YJN5B
--- NEW Physical volume ---
PV Name /dev/sde1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 3upcZc-4eS2-h4r4-iBKK-gZJv-AYt3-EKdRK6