LVM Documentacion
LVM Documentacion
LVM Documentacion
0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Objetivos:
Se persiguen dos objetivos:
En primer lugar, repasar brevemente la forma en que linux accede y gestiona los sistemas
de archivos (discos y particiones) existentes en un equipo.
Seguidamente, vamos a realizar una instalación del sistema operativo ubuntu de una forma
que permitirá una flexibilidad posterior para realizar ampliaciones en el espacio de disco
destinado al sistema. Así, si la cantidad de datos durante la vida crece y se ocupa todo el
disco, se podrá fácilmente añadir otro disco duro e incorporarlo al espacio del sistema de
archivos sin tener que reinstalar nada, ni desechar lo ya almacenado.
Conceptos básicos
Ficheros y carpetas
Cuando un usuario almacena información en un computador, lo hace en forma de archivos
(o ficheros). Cada fichero tiene un nombre (y habitualmente una extensión a ese nombre que
determina un icono concreto asociado). También hay otros atributos del fichero: fecha de
creación, tamaño, permisos, etc. Aunque para reconocer cada fichero un usuario se guía por
el nombre (y la extensión o el icono).
Dispositivos
En Linux, los discos duros y otras unidades de almacenamiento, reciben nombres especiales
y estandarizados. Cada dispositivo se "ve" cómo un fichero virtual, que reside en una
carpeta especial. Es decir: hay un fichero en un directorio concreto, que representa a todo un
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
disco duro, unidad USB, o CDROM. Escribir o leer de ese fichero equivale a escribir o leer del
disco duro. Hay un criterio para dar nombres. Así, el primer disco duro del ordenador recibe
el nombre de /dev/sda (ruta completa), el segundo /dev/sdb, etc.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Puntos de montaje
En el caso más simple, en el que sólo tenemos una partición en un único disco duro,
los ficheros y carpetas de este gran árbol de directorios residen todos en dicha partición, tal
como refleja la siguiente ilustración:
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
En el caso anterior, decimos que " / está montado en la partición primera del disco duro
(conocida como /dev/sda1). Y el comando mount nos puede dar una información acerca de
ello
En algunos casos es deseable tener dos particiones diferentes o dos discos distintos
con sus particiones, cada una con carpetas y ficheros que tienen diferente ubicación y
propósito. Existen varios motivos para desear tener varias particiones, o incluso, es
obligatorio si usamos memorias usb, cederrones o dvd, o varias unidades de disco.
Cuando disponemos de varias particiones, una de ellas será la principal porque el
directorio raíz ( / ) estará montado en esa misma, y el resto de particiones estarán montadas
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
El comando mount se puede usar (sin parámetros) para ver las particiones que hay
montadas
Cuando tenemos más de un disco duro, la situación no cambia mucho. Al final lo que
importa son las particiones existentes (estén en el disco que estén, o incluso en un usb) y
cada una de ellas se puede montar en una carpeta diferente.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Como ya se ha dicho, en Windows, cada dispositivo o partición es tratado por separado. De
forma que al tener varias particiones y diferentes discos , cada uno de ellos se identifica con
una letra. En linux, para hacer más fácil la adaptación de usuarios de windows, se ofrecen
muchas veces herramientas gráficas que muestran accesos directos a los puntos de
montaje donde están los dispositivos y particiones montados. Esto acerca el aspecto y
experiencia a la de windows:
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Instalación habitual
Durante la instalación de linux, se elige obligatoriamente la partición donde se montará la
raíz "/". Y además, es posible indicar dónde se montarán el resto de particiones que el
usuario desee. Esto sólo tiene sentido hacerlo si deseas que algún directorio importante de
la instalación esté en una partición separada. Es el caso de la imagen anterior, "/boot" (que
es un directorio importante para arrancar) es un directorio que reside en una partición
diferente a la raíz "/" y probablemente ello se haya configurado en la instalación.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Para el caso de particiones que deben montarse siempre, bien porque así se instaló o
porque el usuario decide después que son importantes, se establece un mecanismo de
montaje automático en el inicio. En unix se destina un fichero de configuración especial para
indicar -durante el inicio- qué particiones se montan, en qué directorio y con qué
condiciones. El fichero es / etc/fstab.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Linux dispone de un sistema que permite organizar las particiones y usarlas de una manera
flexible y escalable. "Escalable", en informática, significa "que pueden hacerse grande sin
haber deshacer nada de lo que ya hay hecho". Genéricamente se le llama "Volúmenes
lógicos" o "Gestión de volúmenes lógicos"
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Cuando se agrupen varias particiones físicas juntas, la información, se reparte entre ellas
por el gestor de volúmenes lógicos siguiendo un criterio y organización propio (que puede
configurarse, si se desea)
La realidad es un poco más compleja que en el diagrama anterior.. Existen 3 entidades que
debemos conocer. (apréndete los nombres)
● Volume Group (Grupo de Volúmenes). Es una agrupación de varios PV. Los VG están
ahí para ofrecer un espacio de almacenamiento único que internamente está dividido
en varios PV. A diferencia de los PV, los VG pueden crecer fácilmente, simplemente
añadiendo más PV.
● Logical Volume (Volumen Lógico). El volumen lógico es una partición virtual que
toma su espacio de algún Volume Group. El volumen lógico se formatea como si
fuese una partición, se monta y se pueden guardar ficheros y carpetas, pero esta
información se reparte a lo ancho de todos los volúmenes físicos del grupo de
volúmenes del cual toma parte el volúmen lógico.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
La diferencia entre un PV y una partición física, es que en una partición física normal
existe un sistema de ficheros completo dentro de la partición. Con los PV, un fichero o
carpeta puede estar esparcido en varios PV (dentro del mismo VG) y por ello la organización
de los ficheros no es igual, internamente los PV tienen una organización especial. Se
"marcan" de alguna manera las particiones físicas como PV (o los discos enteros, ¡Sin
particionar!).
El diagrama anterior refleja algo que no es tanto un ejemplo como una realidad: la
partición /boot no se recomienda que sea montada en un LV
1. Durante la instalación, de forma automática y asistida, sin que vemos todos los
pasos intermedios
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Instalación
Prepara una imagen ISO de un Ubuntu Server 18.04. R
Crea una máquina con 1Gb RAM y un disco duro de 10Gb (exactamente, así coincidirán las
capturas con tu práctica). Aunque no es importante en este tema, puedes crear dos
interfaces de red para el futuro. Llama "Principal" al disco duro que vas a crear durante la
especificación de la máquina:
Arranca la máquina para instalar y completa los pasos fáciles habituales (teclado, idioma,
etc...
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Llegados a la red, hay que elegir lo adecuada en cada una de las tarjetas.
Fíjate en las direcciones MAC para asociar cada tarjeta detectada por linux a cada pestaña
de la configuración en Virtual Box.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
La situación es la siguiente:
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Si cambio ese espacio, debería ver todo el espacio asignado al mismo LV
En nuestro caso vamos a seguir con lo propuesto y más adelante ampliaremos la
instalación. De momento reiniciamos, y verificamos el estado del sistema con los comandos
siguientes:
● mount, sacará un montón de líneas, de entre las cuales sólo interesan la siguientes
● lsblk mostrará todos los discos duros, sus particiones, tipos y puntos de montaje.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Al arrancar el sistema, es conveniente examinar con el comando l sblk la presencia del nuevo
disco duro.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Este disco podría, o incluso, debería particionarse. Pero vamos a convertirlo, todo él, en un
physical volume. Usa el comando
pvcreate /dev/sdb
Y finalmente, vamos a crear un volúmen lógico llamado almacen-lv, que tomará su espacio
del nuevo grupo de volúmenes, al que hemos llamado "almacen-vg". Para ello, hay que usar
el comando lvcreate e indicar el grupo de volúmenes, el tamaño del volumen lógico y el
nombre del nuevo LV
Como puedes ver, vamos a dimensionar el volumen con 500Mb y no el Gb entero. Más
adelante se verá la intención.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
El volumen lógico se puede usar ya como cualquier partición física, con la diferencia de que
más adelante se podrá ampliar. Pero, al igual que cualquier partición, se le debe dar formato.
Usamos el comando habitual y el dispositivo o partición a formatear ya no es algo así como
/dev/sdb3, sino que es otro dispositivo diferente, aunque también dentro de /dev
mkfs.ext4 /dev/mapper/almacen--vg-almacen--lv
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Una vez listo el volumen, podemos montarlo donde queramos. Vamos a crear una carpeta
llamada "almacen" en la raíz, y allí montaremos el volumen lógico
mkdir /almacen
mount /dev/mapper/almacen--vg-almacen--lv /almacen
El nombre del directorio y el del volumen lógico son los mismos porque así lo hemos
decidido, no hay ninguna regla.
Échale un vistazo a todo con los comandos para revisar pvs, vgs, lsblk, df, etc
El fichero fstab tiene una línea por punto de montaje y en ella se indica la siguiente
información:
● Partición o sistema de ficheros a montar. (por ejemplo /dev/sda1), aquí, siendo un
LV hay que especificar almacen--vg-almacen--lv
● Punto de montaje: "/almacen". El directorio que hemos creado para ello.
● Tipo: En nuestro caso "ext4". Es el sistema con el que hemos formateado el volumen.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
● Opciones: "defaults". Las opciones predeterminadas para ext4 son: rw, suid, dev,
exec, auto, nouser, async.
● Dump: Utilizado por el programa dump («volcado») para decidir cuándo hacer una
copia de seguridad. Añadiremos 1 o 0 porque no tenemos el programa instalado
● Pass: Utilizado por fsck para decidir el orden en el que los sistemas de archivos
serán comprobados. Las entradas posibles son 0, 1 y 2. El sistema de archivos raíz
(«root») debe tener la más alta prioridad: 1 -todos los demás sistemas de archivos
que desea comprobar deben tener un 2-. La utilidad fsck no comprobará los
sistemas de archivos que vengan ajustados con un valor 0 en <pass>.
Ampliación de la instalación
Durante el resto del documento vamos a realizar una serie de pasos más complejos
divididos en tres bloques que se resumen a continuación
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Particionar el disco
Este disco, a diferencia de /dev/sdb (que está íntegramente tratado como un PV) va a ser
particionado. Existen varias herramientas para particionar un disco, posiblemente gparted
sea la más conocida y cómoda de las que existen, pero al estar en un servidor sin interfaz
gráfica no nos es posible usarla. Debemos utilizar fdisk que es la herramienta básica más
universal y extendida. Ojo! porque es un poco especial su uso, por su simplicidad (nada de
menús )
Iniciamos fdisk :
# fdisk /dev/sdc
Ahora se muestra la pantalla principal de fdisk, donde se espera que pulsemos una letra con
la que elegir la acción a realizar. La letra "m" muestra una ayuda de los comandos
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
disponibles. Y la letra "p" muestra un estado del disco -que siempre es recomendable
revisar-. En nuestro caso, para crear una partición
pulsamos "n"
pulsamos p
A continuación nos pide el número de partición, como no hay ninguna, o bien escribimos 1, o
confirmamos la propuesta con [enter].
Ahora vamos a dar las dimensiones de la partición. fdisk internamente trabaja con números
de sector que determinan el principio y final de una partición. Se nos suele proponer el
primer sector libre (no asignado a ninguna partición), e igualmente se nos propone el último
sector libre, asignando el máximo espacio posible.
A continuación puedes ver una captura con los comandos escritos hasta ahora
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Cambiar el tipo de partición se consigue con otro comando "cambiar Tipo de partición"
Como sólo tenemos una partición creada, no nos pregunta qué partición queremos cambiar,
forzosamente es la 1. Cuando existan más particiones, sí que lo preguntará. Ahora debemos
indicar el tipo de partición mediante un código. Para el caso de particiones ext1,2,3 y 4 el
tipo de partición lleva el código 83
Escribe w
Repite lo realizado hasta aquí y crea dos particiones más, una de 300Mb y la otra de 400Mb
que ocuparán todo el disco. Cuando esté todo hecho, el comando lsblk debería mostrar lo
siguiente
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
pvcreate /dev/sdc1
Repite lo mismo con las otras dos nuevas particiones y para realizar una revisión de los
volúmenes físicos ejecuta:
pvs
Añadir PV a VG
Vamos a añadir el PV /dev/sdc1 al vg ubuntu-vg y /dev/sdc2 al vg almacen-vg. De momento
dejaremos el tercer PV sin asignar.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Dado que los Volume Groups (VG) ya están creados, no debemos seguir el
procedimiento hecho antes mediante el comando "vgcreate". Ahora, una vez creado,
debemos extender el grupo de volúmenes de la siguiente manera
Con ello, habremos modificado los volúmenes y deberíamos realizar una revisión del estado.
vgdisplay almacen-vg
El resultado es
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
mkfs.ext4 /dev/mapper/almacen--vg-srv--lv
mkdir /srv
y añadimos la línea correspondiente al fichero /etc/fstab (este era el fichero que indicaba
qué carpetas se montan en el inicio)
mount /srv
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Observa este nuevo volumen lógico srv-lv. Se expande a dos volúmenes físicos dentro del
VG en el que está y por ello se puede ver la carpeta /srv en dos PV diferentes de dos discos
distintos.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
vgdisplay ubuntu-vg
Como puedes ver, quedan aproximadamente 5.3 Gb. Esto es porque sólo habíamos ocupado
5 de los 10 Gb disponibles en el primer PV creado inicialmente durante la partición y los
0.3Mb son los añadidos durante este punto en /dev/sdc1. Ahora vas a realizar la ampliación
de un volumen lógico. Para observar mejor lo que ocurre, a cada paso que des, ejecuta el
comando df para ver el espacio libre y constatar algún cambio.
Pero ocurre que seguiríamos dejando tanto espacio libre, que no usaríamos el nuevo PV
añadido al VG. Aunque no sirva más que para experimentar, vamos a ampliar el tamaño del
volumen lógico forzando a usar el nuevo volumen físico añadido /dev/sdc1. Además, vamos
a intentar ampliar 500Mb que son más de los que el volumen físico tiene. El comando es el
mismo prácticamente. Tan solo hay que añadir al final el volumen físico a usar.
El resultado no es satisfactorio:
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
Pedimos más de lo que hay libre. Y además, nos lo dice en "extents", que son los trocitos en
los que divide el espacio disponible. Visto el contratiempo, vamos a aumentar todo el
espacio posible usando ese volumen físico, lo cual se logra dejando a parte el argumento
sobre el tamaño
Se han obtenido casi 300Mb más de espacio. Finalmente hay que redimensionar el sistema
de archivos con
resize2fs /dev/ubuntu-vg/ubuntu-lv
El comando anterior trabaja con sistemas de archivos ubicados dentro de una partición.
Permite renunciar a aprovechar todo
Ahora lsblk ya va mostrando una situación más compleja cada vez. El directorio / está
extendido a dos volúmenes físicos distintos, mientras que su VG tiene todavía espacio libre.
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
4. Crear un tercer vg "backup-vg" a partir los PV que quden por usar en el disco añadido
5. Crear un LV "backup-lv" a partir de este nuevo "Volume Group".
6. f¡
Licenciattribution-NoDerivatives 4.0 International (CC BY-ND 4.0) - Ignacio PG
https://creativecommons.org/licenses/by-nd/4.0/
1. Meterla en un LVM
2. Con fdisk ampliarla
3. Estudiar los efectos
4. y la forma de aprovechar el nuevo espacio sin destruir los datos existentes
pvscan
pvdisplay