Laboratorio 2: Sistemas de Archivos

Slides:



Advertisements
Presentaciones similares
Teoría de Sistemas Operativos
Advertisements

Tema 4: Sistema de Archivos NFS
Teoría de Sistemas Operativos Sistemas Archivos de Red
LVM Introduccion Comandos Basicos Ejemplos.
Capa de Acceso de Red (Network Access Layer). Definición: Es la primera capa del modelo TCP/IP. Ofrece la capacidad de acceder a cualquier red física,
Sistemas de archivos. Sistemas de archivos 2 Objetivo del SdA  Ocultar al usuario los detalles relativos al almacenamiento de información en dispositivos.
Proyecto ROOTVE V2: Control de versiones con Subversion Grupo de Investigación y Desarrollo en Seguridad de la Información - GIDSI.
Sistemas de Ficheros Jornadas Tecnicas GUL UC3M Jesús Espino García Centro de Recursos de Información y Software Libres.
PRESENTACIÓN DRUPAL Versión 0.1 Por Ricardo Chang.
Sistemas de Archivos Sergio Belkin. Licencia de la presentación Usted es libre de: copiar, distribuir, exhibir, y ejecutar la obra hacer obras derivadas.
¡LOS SERVIDORES DE FTP Y NUBE!
COMUNICACIÓN Y TIC Ángela Espinosa Hayler Peñaranda.
Administración de Sistemas Gestores de Bases de Datos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Gestor de paquetes Instalar y eliminar software (GUI y consola)
WINDOWS Elvira Abajo Lera Octubre, 2008.
Tecnologías 2º ESO.
MANEJO DE TEXTO Y OBJETOS AVANZADOS ENCABEZADOS Y PIES DE PÁGINA
Linux Objetivo: El alumno conocerá la importancia del sistema operativo Linux, así como sus funciones.
HERRAMIENTAS DE INFORMATICA
File Transfer Protocol (FTP)
U.T. 11: Introducción A Las Bases De Datos
GNU LINUX APRENDIENDO A USAR LA TERMINAL ISC. HIRAM GUERRERO CASTILLO
Servidor NFS “NETWORK FILE SYSTEM”.
BASES DE DATOS.
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
DOCUMENTO FUNCIONAL Versión 1.0 GIM ANDROID 2014
INSTALACION LINUX UBUNTU
DOCUMENTO FUNCIONAL Versión 1.0 GIM ANDROID 2015
Formación SICdrive Componentes de SICdrive El Backend El Frontend.
Unidad 7: Nivel Interno Algunos Conceptos Importantes
Novell Netware Autores: Cerrina Maria Josefina, Coto Marcelo,
Modelo de 3 capas. Qué es la arquitectura de una aplicación? La arquitectura se refiere a la forma en la que es diseñada tanto física como lógicamente.
Ing. Victor Padilla Farías. LINUX INTRODUCCIÓN Si conserva un antiguo 386 ó 486, puede que lo quiera aprovechar con Linux. No va a alcanzar velocidades.
Ing. Victor Padilla Farías. LINUX INTRODUCCIÓN Si conserva un antiguo 386 ó 486, puede que lo quiera aprovechar con Linux. No va a alcanzar velocidades.
Proceso de resolución de un nombre de dominio
PROVEEDOR DATA WAREHOUSE TERADATA
ORGANIZACIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL
ADMINISTRACIÓN DE USUARIOS
ICAS REDES Y SUBREDES LIA. Reginaldo Sánchez Carranza.
Instalación de Ubuntu, disco raid y algunos comandos Linux
Parte 4 HTML.
Emanuel Cardona Guzman
Instalaciones Desatendidas
Conceptos Relacionados Unidad I. Parte A.
EXPLORADOR DE WINDOWS 7. Explorador de Windows El Explorador es una herramienta indispensable en un Sistema Operativo ya que con ella podemos organizar.
HIPERVÍNCULO Escarlet Hernández Casas 1F MATUTINO.
Soporte al Sistema Operativo
Declaración de operaciones
Tecnologías 2º ESO.
Estructura de Sistemas Operativos CAMPOS CHACALTANA, ANTHONY.
Estructura de los sistemas Operativos 1. Componentes de un sistema operativo  Administración de procesos  Administración de memoria  Subsistema de Entrada/Salida.
2 Es el dispositivo digital lógico de interconexión de equipos que opera en la capa de enlace de datos del modelo OSI. Su función es interconectar dos.
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
ADMINISTRACIÓN DE USUARIOS Y GRUPOS Linux es un sistema multiusuario, por lo tanto, la tarea de añadir, modificar, eliminar y en general administrar usuarios.
MANEJO DE UBUNTU COMANDOS SHELL / TERMINAL.
Intr. a la creación y gestión de páginas web
ADMINISTRACIÓN DE SOFTWARE DE UN SISTEMA INFORMÁTICO LINUX SBACKUP.
Gestión de Recursos compartidos.. Aspectos fundamentales del usó compartido Existen dos maneras de compartir archivos y carpetas: desde el equipo y desde.
Curso Redes (IS20) -Capítulo 5 1 Redes (IS20) Ingeniería Técnica en Informática de Sistemas Práctica 3- Estudio de tráfico sobre LAN
INSTALACIÓN DE WINDOWS 7.. Instalar Windows 7. Manual de instalación del sistema operativo En este tutorial vamos a explicar detalladamente los pasos.
Instalación y creación de una maquina virtual. 2/2/ La mayoría de las computadoras modernas son lo suficientemente potentes como para ejecutar varios.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS CHACALIAZA BOZA MARGARET AMARLLY.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS CHACALIAZA BOZA MARGARET AMARLLY.
Estructura de los Sistemas Operativos
ING. NANCY BASILIO MARCELO ADMINISTRACIÓN REDES DE COMPUTADORAS.
Taller de Bases de Datos Ingeniería en Sistemas Computacionales M. en I.S.C Mariana Carolyn Cruz Mendoza Por Alexis Orlando Rebollar Lopez.
Transcripción de la presentación:

Laboratorio 2: Sistemas de Archivos Sistemas de archivos en Linux Sistemas de archivos en capas NFS Gestión de volúmenes lógicos

Laboratorio 2: Sistemas de Archivos Sistemas de archivos en Linux Sistemas de archivos en capas NFS Gestión de volúmenes lógicos

Sistemas de archivos en Linux Linux usa sistema de archivos virtual: Existe un único árbol de directorios (una única raíz) Volúmenes adicionales se montan en directorios del árbol (único) de directorios Se pueden combinar distintos sistemas de archivos / galeria/ backup/ fotos/ videos/ / home/ usr/ nfs-srv/ jperez/ joanpeca/ mnt/ Sobre el árbol único de directorios podemos montar volúmenes conteniendo otros sistemas de archivos en diferentes soportes, tanto locales (un pendrive, por ejemplo) como remotos (un servidor de archivos NFS, por ejemplo). Una vez montado, seguimos teniendo un único árbol de directorio. / software/ shared/ eclipse/ java10/

Sistemas de archivos en Linux Archivos de dispositivos: Linux asocia a cada dispositivo un archivo especial en directorio /dev Algunos archivos importantes: sda, sdb... etc: Unidades completas sda1, sda2... etc: Particiones de unidad (de sda, en este caso) cdrom, sr0, sr1... etc: Unidades ópticas null: Cubo de la basura. Todo lo que se escribe en este dispositivo se ignora. zero: Siempre que se lee de este dispositivo se obtiene cero

Sistemas de archivos en Linux Comando: lsblk Propósito: Lista los dispositivos de bloques (unidades) disponibles en el sistema Formato: lsblk [opciones] [unidad] unidad: Archivo de dispositivo de la unidad sobre la que se muestra información. Si se omite, se muestran todas las unidades del sistema. Por defecto, organiza particiones en vista de árbol. Opciones habituales: -f: Muestra información sobre sistemas de archivos contenidos en unidades -S: Muestra información solo sobre unidades SCSI

Sistemas de archivos en Linux Comando: blkid Propósito: Muestra el UUID e información adicional sobre las unidades Formato: blkid [opciones] [unidad] unidad: Unidad sobre la que se muestra información. Si se omite, se muestran todas las unidades del sistema. Por defecto, organiza particiones en vista de árbol. Opciones habituales: consultar página del manual NOTAS: UUID= Universally Unique Indetifier. Identificador único asignado a cada dispositivo Preferible en ocasiones a usar archivos de unidad, ya que estos últimos pueden cambiar

Sistemas de archivos en Linux fdisk: Aplicación (interactiva) para gestión de particiones Formato: fdisk dispositivo Requiere derechos de administración para hacer cambios fdisk –l: Proporciona listado de dispositivo de bloques (no requiere derechos de administración) Para crear una partición de un tipo distinto a “Linux” : crear partición (comando n): se crea partición tipo “Linux” cambiar tipo (comando t). Para listar los tipos de particiones: comando l Los cambios no se hacen permanentes hasta que se escriben (comando w) fdisk –l no necesita derechos de administración

Sistemas de archivos en Linux Comando: dd Propósito: Hace un volcado en crudo entre archivos, bien sean regulares o especiales (de dispositivo) Formato: dd [if=origen] [of=destino] [opciones] origen: Archivo que se lee. Si se omite se usa entrada estándar. destino: Archivo al que se escribe. Si se omite se usa salida estándar. Opciones habituales: ibs=tam: Lee el origen en bloques de tamaño tam. obs= tam: Escribe el origen en bloques de tamaño tam. bs= tam: Usa bloques de tamaño tam tanto en lectura como escritura. count=cuenta: Copia cuenta bloques como máximo dd= disk dump Si se omite el tamaño de bloque, se usa 512 por defecto La opción bs tiene preferencia sobre ibs y obs Un ejemplo curioso de aplicación: si queremos crear un archivo vacío con un número determinado de bloques a cero, podemos hacer: dd if=/dev/zero of=archivo-vacio.img bs=4096 count=1024

Sistemas de archivos en Linux Comando: mkfs Propósito: crea un sistema de archivos sobre un archivo (normalmente) de dispositivo Formato: mkfs [opciones] [-t tipo] archivo [tamaño] archivo: Archivo de dispositivo o regular sobre el que se crea el sistema de archivos tamaño: Número de bloques que se van a usar para el sistema de archivos (por defecto, se usan todos los disponibles). Opciones habituales: -t tipo: tipo de sistema de archivo que se crea: ext2, ext3, ext4, reiserFS, etc - v: proporciona información de manera comunicativa durante la creación del sistema de archivos Se pueden proporcionar opciones específicas al sistema de archivos creado mkfs es actualmente un front end para las distintas aplicaciones que crean los distintos tipos de sistemas de archivos: mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.fat, etc. De hecho, se recomienda el uso de estas herramientas en lugar del front end, que puede dejar de estar disponible en nuevas distribuciones Si no se especifica el sistema de archivos a crear, normalmente el sistema por defecto es ext2 Los sistemas de archivos disponsibles serán aquellos que cuyo administrador de archivos estén instalados en el núcleo como parte del VFS. Consultar la documentación de la distribución a tales efectos. Los distintos sistemas de archivos pueden usar o incluso requerir distintas opciones. Consultar la páquina de ayuda correspondiente a cada sistema de archivos (man mkfs.ext4, etc.) Una curiosidad: se puede crear un sistema de archivos no solo sobre un archivo especial de dispositivo, sino también sobre un archive regular con tamaño suficiente. Por ejemplo, podemos hacer... dd if=/dev/zero of=volumen.img bs=4096 count=1024 mkfs volumen.img Esto creará un sistema de archivos del tipo por defecto (normalmente, ext2) sobre el archivo volumen.img

Sistemas de archivos en Linux Comando: mount Propósito: monta un sistema de archivos sobre un directorio del árbol de archivos Formato: mount [opciones] [–t tipo] dispositivo directorio dispositivo: archivo especial de dispositivo o archivo regular que contiene el sistema de archivos a montar. directorio: Directorio sobre el que se monta. Si contiene archivos, estos quedan ocultos. Si se ha definido un punto de montaje, se puede omitir dispositivo o directorio (Ej: mount /dev/cdrom) Opciones habituales: -t tipo: Tipo del sistema de archivos. Normalmente no es necesario. -r: Monta el sistema de archivo como solo lectura Véase fstab más adelante para más opciones En principio, este comando requiere derechos de administración, con lo que debe usarse conjuntamente con sudo (salvo la excepción que se ve un poco más adelante) Este comando es mucho más amplio que lo aquí explicado. Se recomienda dar un vistazo a su página de manual (man mount) También se recomienda dar una visual al comando lsblk. Muestra información interesante sobre sistemas de archivos

Sistemas de archivos en Linux Comando: umount Propósito: desmonta un sistema de archivos Formato: umount [archivo][directorio] archivo: archivo de dispositivo (o archivo regular conteniendo el mismo) que se desmonta directorio: directorio de montaje que se desmonta Al igual que mount, requiere derechos de administrador (debe usarse con sudo) Se puede desmontar o bien a través del punto de montaje o bien a través del archivo de dispositivo, pero lógicamente, uno de los dos hay que especificar

Sistemas de archivos en Linux Comando: df Propósito: Proporciona información sobre sistemas de archivos Formato: df [opciones] [archivo] archivo: Puede ser... Un archivo o directorio cualquiera en el sistema de archivos La unidad o partición sobre la que reside el sistema de archivos Si no se especifica, se muestra información sobre todos los sistemas de archivos montados. Opciones habituales: -h: Presenta el espacio libre y ocupado en unidades humanas (TB, GB...) -i: En lugar de sobre bloques ocupados y libres, informa sobre nodos-i

Sistemas de archivos en Linux Comando: ln Propósito: crea un enlace directo o simbólico Formato: ln [opciones] destino enlace destino: archivo o directorio al que se enlaza enlace: nombre del enlace que se crea Opciones habituales: -s, --symbolic: Crea enlace simbólico en lugar de directo Nota: No se suele permitir la creación de enlaces directos a directorios

Sistemas de archivos en Linux El archivo /etc/fstab: Contiene información sobre los puntos de montaje del sistema Formato: una línea por cada punto de montaje... # Dispositivo Montaje Tipo Opciones fs-freq fs-passno # ---------------------------------------------------------------------------------------------------------------- /dev/sda2 /usr/local ext4 auto,rw,user,async 0 2 ... Dispositivo: Archivo especial o regular que contiene sistema de archivos También se puede usar UUID o LABEL mediante sintaxis: UUID=uuid (tal como lo proporciona comando blkid) LABEL=etiqueta Los comentarios se incluyen con #. Las líneas en blanco se ignoran y los campos se separan por espacios en blanco o tabuladores

Sistemas de archivos en Linux # Dispositivo Montaje Tipo Opciones fs-freq fs-passno # ---------------------------------------------------------------------------------------------------------------- /dev/sda2 /usr/local ext4 auto,rw,user,async 0 2 ... Montaje: Directorio del árbol de archivos en que se realiza montaje Hay que especifar en qué dispositivo se montará la raíz: “/” Tipo: Tipo de sistema de archivos que usa dispositivo Tipo especial: swap (archivo de paginación, usado por memoria virtual)

Sistemas de archivos en Linux # Dispositivo Montaje Tipo Opciones fs-freq fs-passno # ---------------------------------------------------------------------------------------------------------------- /dev/sda2 /usr/local ext4 auto,rw,user,async 0 2 ... Opciones: lista separada por comas de opciones auto/noauto: Permite/impide montaje automático con mount -a Tras el arranque se hace mount –a user/nouser: Permite/prohíbe montaje de este dispositivo sin derechos de administrador ro/rwo: Monta como de solo lectura / de lectura y escritura sync/async: Usa reserva de escritura directa/diferida exec/noexec: Permite/prohíbe ejecución de programas nofail: no genera error si el montaje no es posible defaults: incluye rw, async, auto, nouser, exec Se recomienda consultar páginas de manual de fstab y de mount para consultar más opciones disponibles

Sistemas de archivos en Linux # Dispositivo Montaje Tipo Opciones fs-freq fs-passno # ---------------------------------------------------------------------------------------------------------------- /dev/sda2 /usr/local ext4 auto,rw,user,async 0 2 ... fs-freq: usado por comando dump para crear respaldo 0: dump no debe crear copia de este dispositivo (por defecto) 1: dump debe crear copia de este dispositivo fs-passno: orden en la que fsck debe verificar integridad 0: fsck no debe verificar integridad este dispositivo al arrancar cualquier otro número: orden en que se verifica integridad Dispositivo que contiene raíz debe verificarse en pasada 1 Dispositivos que tienen mismo número de secuencia se pueden verificar en paralelo La mayoría de las distribuciones ni siquiera instalan dump, con lo que fs-freq suele ser 0

Sistemas de archivos en Linux Orden en que se realiza el montaje: ¡No necesariamente coincide con el orden de fstab! Causa: Puede que se intente paralelizar montajes para mayor eficiencia Si tenemos dependencias entre montajes: Opción: x-systemd.requires_mounts_for=directorio Indica que la línea actual no se puede montar mientras no esté montado el directorio directorio Esta opción es un parche relativamente reciente Si no está disponible: Actualizar núcleo, o... Usar opción noauto, y montar posteriormente en un script Información detallada aquí: https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823

Laboratorio 2: Sistemas de Archivos Sistemas de archivos en Linux Sistemas de archivos en capas NFS Gestión de volúmenes lógicos

Sistemas de archivos en capas Layered File Systems: Permiten el montaje de múltiples sistemas de archivos en un mismo punto de montaje ¡Los sistemas de archivos montados se superponen! / home/ usr/ mnt/ jperez/ joanpeca/ nfs-srv/ / galeria/ backup/ fotos/ videos/ Por supuesto, se pueden superponer tantas capas como necesitemos En caso de ambigüedad en el acceso a un archivo, se aplicarán unas reglas que son muy similares (por no decir las mismas) en todos los sistemas / software/ vstudio/ python/

Sistemas de archivos en capas Aplicación: Escritura en sistemas de archivos de solo lectura Extensión de sistemas de archivos llenos (no recomendado) Creación automatizada de imágenes para contenedores ... Se pueden combinar... Sistemas de solo lectura y sistemas de lectura y escritura Diferentes sistemas de archivos (ext2, ext3, ext4, ReiserFS...) Sistemas de Archivos en capas más importantes: UnionFS aufs OverlayFS Incluido oficialmente en núcleo de Linux desde versión 3.18 Basado en UnionFS Escritura en sistemas de archivos de solo lectura: es lo que se utiliza para los “Live System” (cuando usamos un sistema operativo desde un CD sin instalarlo) Aunque es factible utilizar esta tecnología para poder seguir añadiendo información a un sistema de archivos una vez se ha llenado (en realidad, la información no se añade al sistema de archivos lleno, sino a un sistema de archivos superpuesto) no se recomienda esta técnica para ello. Es preferible usar alguna de las que se verán en los siguientes capítulos UnionFS es un sistema más antiguo. Es utilizado por Docker. Existe un subproyecto llamado unionfs-fuse que implementa el sistema de archivos en capas mediante un servicio en espacio de usuario, en lugar de mediante un módulo en el nucleo. aufs es una reimplementación desde cero con algunas mejoras de UnionFS. No obstante, el autor no consiguió que se incluyese oficialmente en el núcleo de Linux (fue OverlayFS el sistema elegido). Elegiremos OverlayFS porque: No es necesario instalación de ningún tipo de paquete adicional, al estar integrado oficialmente en el núcleo (consecuencia de lo anterior) es posiblemente el sistema más usado

Sistemas de archivos en capas OverlayFS: Los sistemas de archivos se montan... Métodos habituales: comando mount, archivo /etc/fstab Ha de especificarse pseudo-sistema de archivos overlay Principios: Sobre un directorio se monta una capa “superior” (upper) sobre una capa “inferior” (lower) Sistema de archivos superior: suele permitir escritura Sistema de archivos inferior: Puede ser otro overlay Puede ser de sólo lectura A partir de versión 4.0 de núcleo: se admiten múltiples sistemas de archivo inferior Lectura interesante: http://blog.programster.org/overlayfs

Sistemas de archivos en capas Montaje de un overlayfs: los sistemas de archivo superior (upper) e inferior (lower) deben estar montados previamente: Opciones a usar para montar overlayfs: mount –t overlay overlay –o lowerdir=lower,upperdir=upper,workdir=work merged lower: Directorio sobre el que se ha montado capa inferior upper: Directorio sobre el que se ha montado capa superior work: Directorio (vacío) que se debe crear para uso interno IMPOTANTE: Debe estar en mismo sistema de archivos que upper merged: Ruta a directorio sobre el que se monta el overlayfs resultante Ejemplo de demostración de funcionamiento: # Creamos un par de sistemas de archivos usando archivos como si fueran dispositivos de bloques: dd if=/dev/zero of=lower-fs.img bs=4096 count=102400 dd if=/dev/zero of=upper-fs.img bs=4096 count=102400 mkfs -t ext4 lower-fs.img mkfs -t ext4 upper-fs.img # Montamos los sistemas de archivos: mkdir lower sudo mount lower-fs.img $PWD/lower mkdir upper sudo mount upper-fs.img $PWD/upper # mount asignará a root como propietario de los directories montados. Se los asignamos manualmente a usuario actuaL sudo chown $USER:$USER upper lower # Creamos los directorios que usaremos como capa superior y como directorio interno de trabajo, respectivamente: mkdir upper/upper upper/work # Aquí podemos crear si lo deseamos algunos archivos en la capa superior (upper/upper) e inferior (lower). No obstante, eso se puede hacer también a posteriori #... # Montamos el overlayfs ¡cuidado con dejar algún espacio en la cadena que pasamos con –o, que lo liamos! mkdir resultado sudo mount -t overlay overlay -o lowerdir=$PWD/lower,upperdir=$PWD/upper/upper,workdir=$PWD/upper/workdir $PWD/resultado # Ahora se pueden hacer pruebas leyendo y escribiendo y vemos donde quedan los resultados # ... NOTA: Si como capa superior se intentara usar directamente $PWD/upper, el commando daría error, orque no permite que el directorio de trabajo (work) esté dentro de la capa superior. Posibles errores que puede dar: El dispositivo especial overlay no existe: Mensaje engañoso. Revisar las opciones, puede que simplemente sea un error de deletreo en alguna de ellas o en los valores de algunas de las opciones Tipo de Sistema de ficheros incorrecto, opción incorrecta, superbloque incorrecto en overlay, falta la página de códigos o el programa auxiliar, o algún otro error: Como el propio texto del error indica esto puede significar absolutamente cualquier cosa, pero comprobar que el directorio workdir no está *dentro* de upper, lo cual causa este error.

Sistemas de archivos en Linux Montaje desde /etc/fstab: # Dispositivo Montaje Tipo Opciones ... # ---------------------------------------------------------------------------------------------------------------- overlay merged overlay noauto,x-systemd.automount,lowerdir=lower,... ... Dispositivo y tipo de sistema de archivos: especificar overlay en ambos parámetros Montaje: indicar directorio en que se monta overlay Opciones: a la cadena de opciones usada en mount, añadir noauto y x-systemd.automount Evitan que se cuelgue en arranque si falla el montaje fs-freq y fs-passno: dejar a 0 Una aplicación interesante es que la propia raíz del sistema de archivos (/) sea un overlay. El interés por ejemplo puede ser para tener un sistema de sólo lectura con una instalación limpia del sistema, y que todos los cambios se hagan sobre otra capa en otra unidad de lectura y escritura. Esto no se puede hacer directamente desde fstab pues hay que montar en la raíz la capa inferior con el sistema y, en montado en algún lugar, los directorios upper y workdir, y después hay que volver a montar la raíz como un overlay. Esto es algo que no se nos permite hacer desde fstab, montar dos veces sobre un mismo directorio. La solución existe aunque es un pelín más compleja. Se puede encontrar aquí: https://unix.stackexchange.com/questions/420646/mount-root-as-overlayfs

Sistemas de archivos en capas Reglas: lower puede ser a su vez un overlay Los directorios con el mismo nombre en upper y lower fusionan sus contenidos Si hay dos archivos en un mismo directorio con el mismo nombre en upper y lower: el de lower queda oculto Los nuevos archivos y directorios se crean en upper Si se escribe en un archivo que está en lower: El archivo en lower no se modifica Se crea copia modificada en upper Gracias a esto siempre se puede usar un sistema de solo lectura como lower En definitiva: ¡sólo se escribe en la capa upper! Por una serie de cuestiones técnicas, no se puede usar NFS en overlays a menos que el overlay sea de sólo lectura

Laboratorio 2: Sistemas de Archivos Sistemas de archivos en Linux Sistemas de archivos en capas NFS Gestión de volúmenes lógicos

NFS Network File System: Protocolo de nivel de aplicación para creación de sistemas de archivos distribuidos NFS2, NFS3: Seguridad mediante listas de control basadas en direcciones de red NFS4: Seguridad mediante Kerberos (basada en usuarios) home/ shared/ jperez/ joanpeca/ / registry/ server/ software/ shared/ eclipse/ java10/ / media/ usr/ nfs-srv/ stream/ config/ mnt/ registry/ Originalmente desarrollado por Sun Microsystems en 1984 La versión que vamos a tratar es NFS2, por simplicidad y por seguir siendo la más utilizada por cuestiones de compatibilidad Nos permite compartir las ramas que deseemos del árbol de directorios del servidor, y estas pueden ser montadas en el árbol de directorios de los clientes software/ shared/ eclipse/ java10/ nfs-srv/ registry/ software/ shared/ eclipse/ java10/ nfs-srv/ registry/

NFS Procedimiento en servidor: Instalar (si procede) paquete nfs-kernel-server sudo apt-get install nfs-kernel-server Iniciar (si procede) servicio NFS: sudo systemctl start nfs-kernel-server Añadir a archivo /etc/exports los exports a compartir Actualizar los cambios: sudo exportfs -arv Opcional: Medida adicional de seguridad, editar archivos /etc/hosts.allow /etc/hosts.deny Al hacer sudo exportfs –arv incluso los clientes que ya tengan montado el export verán los cambios a partir de ese momento

NFS El archivo /etc/exports: Contiene información sobre los directorios (exports) que se comparten Formato: una línea por cada directorio compartido ¡Cuidado con los espacios en blanco! # Directorio Lista de Control de Acceso # ---------------------------------------------------------------------------------------------------------------- /home/joanpeca warlock.lsi.us.es(rw,async,no_subtree_check) 192.168.1.0/24 (ro) ... Los comentarios se incluyen con #. Las líneas en blanco se ignoran y los elementos se separan por espacios en blanco o tabuladores. Importante: cuidado con los espacios en blanco entre el sujeto y los derechos, y entre los propios derechos. Sueden dar problemas. Directorio: Raíz del árbol de directorios que se comparte Siempre se comparte todo el subárbol por debajo

NFS Lista de control: formada por una secuencia # Directorio Lista de Control de Acceso # ---------------------------------------------------------------------------------------------------------------- /home/joanpeca warlock.lsi.us.es(rw,async,no_subtree_check) 192.168.1.0/24 (ro) ... Lista de control: formada por una secuencia sujeto(lista de derechos y opciones que se le aplican) ¡Cuidado con los espacios en blanco! Sujeto de la lista de control: puede ser... Un nombre de un host Una dirección IP Un rango de direcciones en formato CIDR “*”: representa a cualquier cliente

NFS Derechos y opciones más frecuentes: # Directorio Lista de Control de Acceso # ---------------------------------------------------------------------------------------------------------------- /home/joanpeca warlock.lsi.us.es(rw,async,no_subtree_check) 192.168.1.0/24 (ro) ... Derechos y opciones más frecuentes: ro, rw: Sólo lectura (por defecto), lectura y escritura sync, async: Usar reserva de escritura directa (por defecto), o de escritura diferida subtree_check, no_subtree_check: Comprueba por cada acceso a un archivo que está dentro del árbol compartido (por defecto), o sólo lo comprueba en la apertura root_squash, no_root_squash: mapea usuario root de cliente sobre usuario local nobody, o mapea usuario root de cliente sobre usuario root local Nótese que las opciones sync y async indican cómo ser usará la reserva *en el servidor*. Cómo la usará el cliente se decide al montar el export en el cliente

NFS Mapeo usuarios de cliente sobre servidor: Los usuarios de los clientes no tienen por qué corresponderse con los del servidor Reglas de mapeo: Si existe en servidor un usuario con mismo UID que usuario de cliente: se usa dicho usuario (y su grupo) En caso contrario se usa: Usuario “anonuid” (nobody/nfsnobody...) Grupo “anongid” (nobody/nfsnobody/nogroup...) Para cambiar las identidades anonuid y anongid: opciones... anonuid=UID anongid=GID OJO AL DATO: UID, que no login. Para conocer el UID y el GID de un usuario lo podemos buscar en /etc/passwd con grep usuario /etc/passwd Importante tener en cuenta: aunque el export sea de lectura y escritura, si en el servidor el usuario final que se utilice para efectuar el acceso, no tiene derecho de escritura (o incluso de lectura) no se podrá acceder. Esto es dolor de cabeza habitual en principiantes. Para cambiar este comportamiento: opción all_squash Todos los accesos a este directorio se harán como usuario anonuid y grupo anongid

NFS Medida adicional de seguridad: Archivo hosts.allow: lista de servicios permitidos Archivo hosts.deny: lista de servicios denegados Si un cliente solicita un servicio: Si comprueba en hosts.allow si dicho cliente figura en la lista de dicho servicio. En caso afirmativo, se acepta Si no, se comprueba en hosts.deny si dicho cliente figura en la lista negra de dicho servicio. En caso afirmativo, se deniega Si no, se acepta Sintaxis de ambos archivos: También se puede usar el comodín ALL en la lista de direcciones o hosts # Servicio: Lista de direcciones o hosts # --------------------------------------------------------------------------- ALL: 192.168.1.* mountd: warlock.lsi.us.es, manowar.lsi.us.es ...

NFS Procedimiento en cliente: Instalar (si procede) paquete nfs-common sudo apt-get install nfs-common Para comprobar la lista de exports de un servidor: showmount -e servidor Para montar manualmente un export: mount servidor:export directorio servidor: Nombre o dirección IP de servidor export: Ruta completa de export (tal y como la presenta showmount) directorio: Directorio en que se monta Notas: en ocasiones puede ser necesario especificar –t nfs Salvo indicación contraria en /etc/fstab, es necesario usar sudo Para desmontar se usa umount, como cualquier otro montaje

NFS Montaje automático: Añadir punto de montaje a /etc/fstab: # Dispositivo Montaje Tipo Opciones fs-f fs-p # --------------------------------------------------------------------------------------------------------------------- warlock.lsi.us.es:/home/joanpeca /home/jperez nfs auto,rw,user,async 0 0 ... Dispositivo: formato servidor:export (igual que mount) Tipo: especificar nfs Demás campos: idénticas consideraciones a cualquier punto de montaje Para desmontar se usa umount, como cualquier otro montaje

Laboratorio 2: Sistemas de Archivos Sistemas de archivos en Linux Sistemas de archivos en capas NFS Gestión de volúmenes lógicos

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

Administración de Archivos LVM: visión general Logical Volume Manger: Basado en framework Device Mapper Se requiere: Módulo Device Mapper en núcleo (versión > 2.6) Bibliotecas en espacio de usuario de Device Mapper Herramientas administrativas de LVM2 sudo apt-get install lvm2 Device Mapper: Capa de software capaz de: construir volúmenes lógicos mapeados sobre volúmenes físicos Realizar procesamiento intermedio Volumen lógico: se puede mapear sobre parte o la totalidad de uno o más volúmenes físicos Device Mapper Aunque se puede instalar en cualquier momento el paquete lvm2, es mucho más recomendable que esté instalado desde la instalación del sistema El devmapper (Device Mapper), además de crear volúmenes lógicos a partir de los dispositivos físicos de bloque, es capaz de realizar un procesamiento intermedio de la información que se transfiere Administración de Archivos Drivers dispositivos

LVM: visión general Algunas de sus aplicaciones prácticas: Elasticidad del sistema de archivos El tamaño del sistema de archivos puede crecer o decrecer para adaptarse a nuestras necesidades (¡incluso en caliente!) Sustitución en caliente de unidades Podemos sustituir una unidad por otra de mejores prestaciones sin necesidad de detener el sistema Uso de una unidad rápida como “cache” de una lenta Los bloques más frecuentemente usados se mapean sobre la unidad rápida Creación y restauración de instantáneas Permiten guardar estado del sistema de archivo y revertir a dicho estado encualquier momento RAID

LVM: visión general Conceptos: Volumen físico (PV): Unidad que provisiona de espacio de almacenamiento Grupo de volúmenes (VG): Almacén de espacio que se nutre de volúmenes físicos Volumen lógico (LV): Unidad virtual construida en base a espacio obtenido de un grupo de volúmenes VG PV1 PV2 LV1 PV3 PV4 LV1 PV5

LVM: visión general Volumen físico: Se construye sobre una unidad física, por ejemplo... Una unidad completa (ej: /dev/sda) Una partición (ej: /dev/sda1) pvcreate: formatea unidad creando Extensiones Físicas (PE, unidad mínima de asignación de espacio en LVM) Comandos de gestión de volúmenes físicos: pvcreate: crea un volumen físico sobre una unidad física pvremove: elimina una unidad física como volumen físico pvs, pvscan: lista los volúmenes físicos existentes pvdisplay: muestra detalles sobre volúmenes físicos pvmove: migra todos los LE en uso de un vol. físico a otro(s) pvresize: actualiza el tamaño del volumen para adaptarlo a nuevo tamaño de su unidad Unidad física: cualquier dispositivo de bloques. Típicamente, una unidad completa o una partición de una unidad. IMPORTANTE: Todos los comandos de LVM requieren derechos de administración (sudo) pvresize es necesario cuando por ejemplo cambiamos el tamaño de la partición que contiene un volumen.

LVM: visión general Grupo de Volúmenes: Constituye un almacén de espacio Dicho espacio es aportado por Volúmenes Físicos Se utiliza para posteriormente crear Volúmenes Lógicos Comandos de gestión de Grupos de Volúmenes: vgcreate: crea un grupo de volúmenes a partir de uno (o más) volúmenes físicos vgextend/vgreduce: añade o elimina volúmenes lógicos de un grupo de volúmenes vgremove: elimina un grupo de volúmenes vgs, vgscan: lista los grupos de volúmenes existentes vgdisplay: muestra detalles sobre grupos de volúmenes

LVM: visión general Volumen Lógico: Unidades lógicas creadas en un grupo de volúmenes a partir del espacio provisto por los volúmenes físicos El mapeo del espacio puede ser automático, o se pueden especificar distintos tipos (linear, RAID, cache, snapshot...) Archivo de dispositivo asociado: suele ser de la forma: /dev/<nombre grupo>/<nombre volumen> Comandos de gestión de Volúmenes Lógicos: lvcreate: crea un volumen lógico en un grupo de volúmenes lvextend/lvreduce: aumenta o reduce el tamaño de un volumen lvremove: elimina un volumen lógico lvchange: cambia valores de atributos de volúmenes lógicos lvconvert: cambia el tipo de un volumen lógico lvs, lvscan: lista los volúmenes lógicos existentes lvdisplay: muestra detalles sobre volúmenes lógicos Son los archivos de dispositivo /dev/<nombre grupo>/<nombre volumen> los que se usan para montar el dispositivo (o el UUID que se genera para el volumen lógico, en el caso de fstab)

LVM: visión general Comando: pvcreate Propósito: Crea e inicializa un volumen físico LVM sobre una unidad física (unidad completa o partición) Formato: pvcreate unidad1 [...unidadn] [opciones] unidadi: Unidad o unidades que se inicializan Opciones habituales: Consultar página del manual Notas: Se le asigna automáticamente un UUID al volumen creado. La unidad no debe tener información. En caso de tener información, ésta es eliminada. A partir de este momento, la unidad es un conjunto de Extensiones Físicas (PE, unidad de asignación de espacio en LVM)

LVM: visión general Comando: pvremove Propósito: Libera una unidad física de su uso como volumen físico en LVM Formato: pvremove unidad1 [...unidadn] [opciones] unidadi: Unidad o unidades que se liberan Opciones habituales: Consultar página del manual Notas: Para poderse liberar, el volumen lógico no debe tener ningún PE en uso

LVM: visión general Comando: pvmove Propósito: Mueve todos los PE en uso en una unidad a otra(s) unidades del mismo grupo Formato: pvrmove unidad1 [unidad2...unidadn] [opciones] unidad1: Unidad o unidades cuyos PE se mueven unidad2..n: Unidad(es) a las que se mueven los PE Opciones habituales: --atomic: Operación atómica: o se mueven todos los PE, o no se mueve ninguno -b, --background: Realiza la operación como proceso en segundo plano --abort: Aborta cualquier pvmove que esté funcionando en segundo plano Notas: Si no se especifica ninguna unidad destino, se eligen automáticamente pvmove sin argumentos continúa un pvmove anterior que hubiera abortado El motivo por el que podrían no moverse todos los PE es porque el Sistema cayese durante la operación, o porque se abortara manualmente

LVM: visión general Comando: vgcreate Propósito: Crea un grupo de volúmenes conteniendo uno o más volúmenes físicos Formato: vgcreate grupo unidad1 [...unidadn] [opciones] grupo: nombre del grupo que se crea unidadi: Unidad o unidades que soportan los volúmenes físicos que forman el grupo Opciones habituales: Consultar página del manual Notas: Si las unidades no han sido inicializadas como volúmenes lógicos (pvcreate) vgcreate las inicializa antes de introducirlas en el grupo.

LVM: visión general Comando: vgextend Propósito: Añade volúmenes físicos a un grupo de volúmenes ya esistente Formato: vgextend grupo unidad1, [...unidadn] [opciones] grupo: Nombre del grupo al que se añaden los volúmenes unidadi: Unidad o unidades que soportan los volúmenes físicos que se añaden al grupo Opciones habituales: --restoremissing: se utiliza para devolver (sin reinicializar) al grupo una unidad que lo abandonó por un fallo temporal Notas: Si las unidades no han sido inicializadas como volúmenes lógicos (pvcreate) vgextend las inicializa antes de introducirlas en el grupo (salvo si se usa opción --restoremissing)

LVM: visión general Comando: vgreduce Propósito: Elimina volúmenes físicos sin ninguna PE en uso de un grupo de volúmenes Formato: vgreduce grupo [unidad1...unidadn] [opciones] grupo: Nombre del grupo del que se quitan los volúmenes unidadi: Unidad o unidades que soportan los volúmenes físicos que se eliminan del grupo Opciones habituales: -a, --all: Quita todos los volúmenes físicos que no estén en uso --removemissing: Quita todos los volúmenes marcados como no presentes debido a un fallo (siempre y cuando no tengan PE en uso)

LVM: visión general Comando: vgremove Propósito: Elimina grupos de volúmenes, junto con los volúmenes lógicos que contengan Formato: vgremove grupo1, [...grupon] [opciones] grupoi: Grupo o grupos de volúmenes que se eliminan Opciones habituales: Consultar página del manual Notas: Si un grupo tiene volúmenes lógicos, estos se eliminan previa confirmación Los volúmenes físicos quedan disponibles para ser asignados a otros grupos, o para ser eliminados como volúmenes físicos (pvremove).

LVM: visión general Comando: lvcreate Propósito: Crea un volumen lógico usando Extensiones Lógicas (LE) de un grupo como unidad de asignación Formato: lvcreate --name nombre --size/--extents tamaño grupo [volfis][opciones] nombre: nombre del volumen lógico que se crea tamaño: Tamaño del volumen, lógico o en número de extents. Con el tamaño lógico se puede usar sufijos T, G, M... grupo: Grupo en el que se crea el volumen lógico volfis: opcionalmente, se puede indicar uno o más volúmenes físicos. En ese caso, solo provee espacio de dichos volúmenes. Notas: El volumen creado tendrá asociado un archivo /dev/<grupo>/<nombre>. Este será el que usemos en comando mount. El UUID asignado lo podemos obtener con pvdisplay Por defecto, las extensions lógicas tienen el mismo tamaño que las extensions físicas, por lo que en principio da lo mismo hablar de extensiones lógicas o físicas. A partir de ahora, podemos hacer referencia al volume o bien mediante la notación grupo/nombre o bien mediante el archivo de dispositivo /dev/grupo/nombre

LVM: visión general Comando: lvextend Propósito: Aumenta el tamaño de un volumen físico Formato: lvextend --size/--extents +tamaño volumen [opciones] tamaño: Tamaño lógico o número de extents que se añaden. Se debe usar unidades: T, G, M... volumen: Volumen lógico que se extiende Opciones habituales: -r, --resizefs: lvextend utilizará el comando fsadm para adaptar el sistema de archivos contenido al nuevo tamaño Notas: --resizefs: útil cuando el volumen ya contiene un sistema de archivos Si el volumen está montado, no todos los tipos de sistemas de archivos permiten aumentar su tamaño mientras está en uso Si el tamaño no va precedido de “+”, se supone que es un nuevo tamaño absoluto, en lugar de un incremento del tamaño indicado. También se puede usar los prefijos %FREE o %VG en cuyo caso el valor representa respectivamente el porcentaje de espacio libre en el grupo de volúmenes o el porcentaje de espacio total del grupo de volúmenes. Por ejemplo, sudo lvextend --extents +100%FREE lubuntu-vg/root --resize-fs añade al volumen lógico root de lubuntu-vg todo el espacio que queda sin asignar en el grupo lubuntu-vg. El volumen lógico se expresa o bien como “grupo/nombre” o bien como archivo de dispositivo de bloques asociado. El tamaño del Sistema de archivos también se puede cambiar manualmente a posteriori usando fsadm o resize2fs Los sitemas de archivos ext2, ext3, ext4 y ReiserFS permiten cambio de tamaño on-line (mientras está en uso)

LVM: visión general Comando: lvreduce Propósito: Reduce el tamaño de un volumen lógico Formato: lvreduce --size/--extents -tamaño volumen [opciones] tamaño: Tamaño lógico o número de extents que se reducen. Se debe usar unidades: T, G, M... volumen: Volumen lógico que se reduce Opciones habituales: -r, --resizefs: lvreduce utilizará previamente el comando fsadm para adaptar el sistema de archivos contenido al nuevo tamaño Notas: --resizefs: útil cuando el volumen ya contiene un sistema de archivos Si el volumen está montado, muy pocos tipos de sistemas de archivos permiten su reducción de tamaño mientras está en uso Si el tamaño no va precedido de “-”, se supone que es un nuevo tamaño absoluto, en lugar de una reducción del tamaño indicado El volumen lógico se expresa o bien como “grupo/nombre” o bien como archivo de dispositivo de bloques asociado. El tamaño del Sistema de archivos también se puede cambiar manualmente a posteriori usando fsadm o resize2fs El espacio liberado queda a disposición del grupo de volúmenes para su asignación a otros volúmenes De entre los sistemas de archivos habituales, sólo ReiserFS permite disminuir su tamaño on-line (mientras está en uso)

LVM: visión general Comando: lvremove Propósito: Elimina volúmenes lógicos, liberando el espacio que usaban Formato: lvremove volumen1, [...volumenn] [opciones] volumeni: Volumen o volúmenes que se eliminan Opciones habituales: Consultar página del manual Notas: No se puede eliminar un volumen lógico si este está montado Al eliminarse el volumen lógico, el sistema de archivos que contenga se elimina también

LVM: visión general Comando: lvs Propósito: Muestra información selectiva sobre los volúmenes lógicos Formato: lvs [opciones] –o <lista de campos> <lista de campos>: Lista separada por comas y sin espacios en blanco de identificadores de campos a mostrar. Algunos campos: lv_name: Nombre del volumen seg_type: Tipo de volumen lv_health_status: Estado de salud del volumen ... (consular lvs -o help para lista completa de campos) Opciones habituales: -a: Muestra todos los volúmenes, incluso los de uso interno (no montables) NOTA: pvs y gvs funcionan de forma análoga

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

Elasticidad del sistema de archivos Suposición: un sistema de archivos reside sobre un LV datos en un VG de un grupo de volúmenes el volumen lógico sobre el que se aloja un sistema de archivos, se ha quedado pequeño ¡Necesitamos ampliar el volumen lógico! (y el sistema de archivos que contiene) Pasos: Adquirimos nueva unidad y la conectamos al sistema (supongamos que la nueva unidad es /dev/sdd) Usando fdisk, creamos una partición /dev/sdd1 con todo el espacio de la nueva unidad ...

Elasticidad del sistema de archivos 3) Creamos nuevo volumen lógico 4) Añadimos nuevo volumen al grupo 5) Extendemos el volumen Mediante comando df comprobamos que, en efecto, el sistema de archivos que está montado en /home/jperez/mnt, está muy justito... Está al 96% Mediante comando lsblk comprobamos que en efecto, nuestra nueva y flamante unidad tiene una partición que ocupa todo el tamaño de la unidad, en este caso Creamos volumen lógico sobre nuestra unidad física... Lo añadimos al grupo user-vg, al que pertenece la unidad lógica que hay que ampliar. El grupo de volúmenes es una especie de almacén de espacio... Con esto reponemos un poco nuestro almacén Mediante el comando lvscan comprobamos que, en efecto, ahora mismo el volumen lógido /dev/userv-vg/data tiene algo menos de 10GB... ... Así que lo extendemos añadiéndole otros 10GB más... Se nos avisa de que se van a hacer cambios en el sistema de archivo en caliente... Y de nuevo, mediante el comando lvscan, comprobamos que el volumen lógico /dev/userv-vg/data tiene ahora casi 20GB... ... Con lo que el sistema de archivos está ahora al 48%  ¡Voila! 

Elasticidad del sistema de archivos ... Pero nuestras necesidades vuelven a disminuir. Poco después, ya no necesitamos tanto espacio Nos vendría bien recuperar la unidad /dev/sdc1 para otros usos Pasos: ...

Elasticidad del sistema de archivos 1) Reducimos el tamaño del volumen lógico, para liberar espacio en el grupo (sistema de archivos ext4 no soporta reducción en caliente) 2) Movemos todos los bloques ocupados de /dev/sdc1 a otros PV de su grupo (a /dev/sdd1) Mediante el comando lvscan comprobamos que tenemos en enfecto un volumen lógico “data” en el grupo user-vg de 20GB. Según nos dicen, ahí sobra espacio... Mediante el comando pvscan, vemos que el volumen user-vg tiene dos volúmenes físicos, y que el volumen /dev/sdc1 está ocupado al 100% Vamos a reducir el volumen lógico “data” en 15G. Esto liberará esta cantidad de espacio en el grupo user-vg. Usamos el comando lvreduce para ello. Nótese que el sistema de archivos usado (ext4) no permite contracción en caliente, motivo por el que este comando pide confirmación para desmontar el volumen. Una vez reducido el volumen, hacemos de nuevo pvscan. Vemos que ahora el segundo volumen físico, /dev/sdd1, no tiene ningún extent asignado... Lo podríamos liberar entonces, pero decíamos que preferíamos retirar el otro, /dev/sdc1. Por tanto... Movemos haciendo uso del comando pvmove todos los extents ocupados de /dev/sdc1 a otros volúmenes físicos del grupo (sólo está /dev/sdd1, con lo que está claro que será a este volumen al que se moverá la información

Elasticidad del sistema de archivos 3) Quitamos el volumen físico /dev/sdc1 del grupo user-vg 4) Eliminamos /dev/sdc1 como volumen lógico Mediante el comando lvscan comprobamos ¡/dev/sdc a la saca! 

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

Sustitución en caliente de unidades Suposición: una unidad física que provisona espacio a un grupo de volúmenes userv-vg ha quedado obsoleta. La queremos sustituir por una unidad más moderna (sea /dev/sdc la unidad obsoleta a sustituir, con una única partición /dev/sdc1). Pasos (ya conocidos de caso anterior): Adquirimos nueva unidad y la conectamos al sistema (supongamos que la nueva unidad es /dev/sdd) Usando fdisk, creamos una partición /dev/sdd1 con el espacio deseado en la nueva unidad Creamos un volumen lógico en /dev/sdd1: pvcreate /dev/sdd1

Sustitución en caliente de unidades ... Añadimos nuevo volumen lógico al grupo user-vg: vgextend user-vg /dev/sdd1 Movemos todos los extents ocupados de /dev/sdc1 a otros volúmenes físicos del grupo: pvmove /dev/sdc1 Quitamos /dev/sdc1 del grupo: vgreduce user-vg /dev/sdc1 Quitamos el volumen lógico de /dev/sdc1 pvremove /dev/sdc1 ¡Ya podemos retirar /dev/sdc del equipo!

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

Uso de unidades cache + Suposición (caso típico): Disponemos de... Unidad rápida pero pequeña (SSD) Unidad grande pero lenta: (HDD) Idea: mantener información más usada en unidad rápida ¡No es realmente una cache! (=reserva): SSD almacena los bloques que con más frecuencia se usan Una reserva mantiene los bloques más recientemente usados Volumen lógico cache consta de tres volúmenes lógicos: OriginLV: Volumen grande (sobre unidad lenta) CacheDataLV: Volumen pequeño usado como cache (sobre unidad rápida) CacheMetaDataLV: Metadatos de la caché, de uso interno (sobre unidad rápida) Todos estos volúmenes deben pertener al mismo grupo = Cache Pool Los volúmenes CacheDataLV y CacheMetadaLV se combinan en lo que se llama una Cache Pool +

Uso de unidades cache Procedimiento a seguir: Ejemplo: sean... /dev/sdb unidad grande (y lenta) /dev/sdc unidad rápida (y pequeña) Una partición por cada unidad con todo el espacio Crear volumen lógico sobre ambas unidades físicas: pvcreate /dev/sdb1 /dev/sdc1 Crear un grupo de volúmenes con ambos volúmenes: vgcreate cache-vg /dev/sdb1 /dev/sdc1 Crear volúmen lógico de origen: lvcreate --name OriginLV --size 250G cache-vg /dev/sdb1 Nótese que éste se provee de la unidad lenta ...

Uso de unidades cache ... Crear volumen lógico de datos de caché: lvcreate --name CacheDataLV --size 64G cache-vg /dev/sdc1 Nótese que éste se provee de la unidad rápida Crear volumen lógico de metadatos de caché: lvcreate --name CacheMetaDataLV --size 64M cache-vg /dev/sdc1 Su tamaño debe ser la milésima parte del volumen de datos de caché (mínimo, 8MB) Combinar datos y metadatos de cache en un Cache Pool: lvconvert --type cache-pool --poolmetadata cache-vg/CacheMetaDataLV cache-vg/CacheDataLV Se advertirá que se borrará el contenido de los volúmenes (aceptar) Lo que realmente se hace en el punto 6 es: Se crea una CachePool, que toma el nombre (en nuestro caso) CacheDataLV El volumen original CacheDataLV se renombra como CacheDataLV_cdata y se oculta El volumen original CacheMetaDataLV se renombre como CacheDataLV_cmeta y se oculta

Uso de unidades cache ... Enlazar la Cache Pool que se ha creado con OriginLV: lvconvert --type cache --cachepool cache-vg/CacheDataLV cache-vg/OriginLV Se advertirá que se borrará el contenido de la Cache Pool Sugerencia: usar comando lvs para mostrar volúmenes lógicos ¡Estas operaciones pueden hacerse incluso sobre un volumen OriginLV en uso! Para deshacer paso 7: lvconvert --splitcache cache-vg/OriginLV Esto deja volumen OriginLV sin cache y la Cache Pool queda sin uso, o bien... lvconvert --uncache cache-vg/OriginLV Esto desconecta y borra Cache Pool Lo que hemos hecho en el punto 7 es: El volume OriginLV se ha renombrado como OriginLV_corig y se ha ocultado Se ha creado un Nuevo volumeno con el nombre OriginLV que lo ha sustituido Para más información: man 7 lvmcache

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

Creación de instantáneas Instantánea: Volumen lógico que guarda el estado de otro volumen en el momento de la creación de la instantánea Instantánea mediante Copy On Write: Sea VL-A un volumen lógico en un grupo grupo, del que se crea un volumen VL-I como instantánea VL-I está formado por los mismos extents que VL-A en el momento de la creación de la instantánea Cada vez que se modifica VL-A, la modificación se hace sobre extents libres de VL-I CONSECUENCIA: A partir de la creación de la instantánea, el espacio disponible para cambios en VL-A es el espacio asignado a VL-I Una instantánea no es una copia de seguridad porque la información no se replica en ningún momento. No obstante, puede usarse para, una vez “congelado” el sistema de archivos, hacer copia de seguridad de la instantánea ¡Una instantánea no es una copia de seguridad!

Creación de instantáneas Creación de una instantánea: Comando lvcreate, usando opción --snapshot, indicando el LV del que se toma: lvcreate --name VL-I --size tam --snapshot grupo/VL-A tam: en este caso es el espacio disponible para cambios Si la instantánea se llena se descarta (importante que no ocurra) Para ver espacio ocupado en la instantánea: comando lvdisplay Si queda poco espacio para cambios: ampliar mediante lvextend Crecimiento automático de instantáneas: editar /etc/lvm/lvm.conf Parámetro snapshot_autoextend_threshold: Porcentaje llegado al cual se amplía automáticamente el espacio de la instantánea Parámetro snapshot_autoextend_percent: Porcentaje en que se amplía Para ver el sistema de archivos “congelado”, podemos montar el volumen VL-I creado. Aplicaciones Recuperar algún archivo Realizar copia de seguridad de la instantánea ...

Creación de instantáneas Descartar una instánea: Eliminar el volumen lógico de la instantánea mediante comando lvremove: lvremove grupo/VL-I Restaurar una instántea: Comando lvconvert con opción --merge sobre volumen de la instantánea: lvconvert --merge grupo/VL-I Tanto el volumen original como el de instantánea no deben estar en uso (desmontar previamente) Tras la fusión, el volumen de la instantánea se elimina Si se hubiera escrito en volumen de instantánea, los cambios pasan al volumen original

Gestión de volúmenes Lógicos LVM: Visión general Elasticidad del sistema de archivos Sustitución en caliente de unidades Uso de unidades cache Creación de instantáneas RAID

RAID Dos posibilidades: Núcleo de Linux dispone de soporte para RAID RAID Hardware: dispositivos externos y autónomos conectados al sistema por SAS, SCSI, etc. RAID Software: varias unidades en el sistema, y la política de gestión RAID se lleva a cabo por parte del sistema operativo Núcleo de Linux dispone de soporte para RAID Posibilidades: Gestión mediante herramienta específica de administración RAID mdadm (multi-device administration) Requiere instalación paquete mdadm Solución clásica, hasta ahora la más usada Gestión mediante LVM Solución más moderna y más simple Trabajo en progreso, pero en rápida evolución Ejemplos de RAID hardware: https://www.hpe.com/us/en/product-catalog/storage/disk-storage.hits-12.html A partir de la versión 2.6.38-rc1 del núcleo de Linux el device mapper hace uso del soporte MD del núcleo de Linux, proporcionando a LVM la posibilidad de hacer uso de RAID LVM puede integrarse sin problemas con volúmenes RAID creados mediante mdadm, pero usaremos un enfoque LVM puro por la mayor flexibilidad que ofrece. En nuestra opinión terminará convirtiéndose en el estándar. Para ampliar información: man 7 lvmraid man mdadm

Tolerancia a fallos en PV’s RAID Creación de un volumen RAID: Comando lvcreate, usando opción --type, para indicar nivel RAID que se crea sin especificar grupo e indicando el LV del que se toma: lvcreate --name VL --size tam --type nivel grupo [PV1..PVn] --tam: tamaño del volumen (como cualquier otro vol. Lógico) PVi: Volúmenes físicos que se emplean. En caso de no especificarse, se elegirán automáticamente dependiendo de nivel RAID Nivel: nivel raid a crear: --type Nº min PV’s Tolerancia a fallos en PV’s raid0 2 - raid1 N-1 raid4 3 1 raid5 raid6 5 raid10 4 Todos los volúmenes menos uno de cada espejo

RAID Consideraciones creación RAID: RAID0, RAID4, RAID5, RAID6 y RAID7 usan bandas (stripes): --stripesize tam: Tamaño de la banda (en Kilobytes) --stripes: Número de bandas. Determina número de volúmenes a usar: RAID0, RAID10: Volumenes = stripes RAID4, RAID5: Volumenes = stripes + 1 RAID6: Volumenes= stripes + 2 RAID0, RAID10 hacen mirroring: --mirrors n: Número de espejos. También determina número de volúmenes a usar: RAID0: Volumenes= mirrors + 1 RAID10: Volumenes= (mirrors-1)*2 Estos parámetros son opcionales en comando lvcreate. Si no se especifica --stripesize se usa tamaño por defecto, y si no se usa --stripes o --mirrors, en principio se determina a través del número de volúmenes y del tamaño

RAID = + + Sincronización: Sincronización = proceso por el que (re-)construye el contenido de los volúmenes físicos que proveen de espacio el volumen RAID Se lleva a cabo la sincronización... Al activar un volumen RAID por primera vez (creación) Tras añadir o sustituir un volumen físico al volumen RAID Para conocer progreso de sincronización: lvs [RAID-VL] -a -o name,sync_percent Si no se especifica un volumen lógico RAID-VL, se mostrará la información para todos los volúmenes lógicos. La salida puede ser un poco confusa ya que el campo “sync_percent” no procede en volúmenes lógicos que no sean RAID Si a un RAID1 le añadimos por ejemplo un volumen físico adicional, ese volumen debe contener una copia del contenido de la información en los demás volúmenes. En este caso, la sincronización consistiría en la realización de esta copia Atento con los espacios en blanco, la cadena “name,sync_percent” es un único parámetro, con lo que ahí no debe haber ningún espacio en blanco RAID-VL = PV1 + PV2 PV3 +

RAID Estado de salud de las unidades: Excepto RAID0, los demás tipos de volúmenes RAID pueden funcionar con algún dispositivo fallando Comprobación del estado de salud de un volumen RAID: lvs [RAID-VL] -o name,lv_health_status,active Posibles estados anómalos de salud que puede informar: Partial: Volumen está funcionando en ausencia de algún volumen físico Refresh needed: Un dispositivo ha fallado temporalmente. Se requiere refrescar el volumen. Mismatches exists: Se han detectado inconsistencias. Se requiere scrubbing Atribute Active: Indica si el volumen está activo o no Si el volumen no está activo no se puede montar Si lv_health_status no muestra nada sobre un volumen, es que no hay de qué preocuparse Si tras un rearranque alguna de las unidades físicas que provisionan espacio a un volumen lógico RAID han desaparecido, es muy posible que el volumen lógico RAID se marque como no activo. Será necesario activarlo para poder usarlo (si el nivel RAID usado lo permite)

RAID Estado de salud de las unidades (cont.): Para activar un volumen no activo: lvchange --activate y RAID-VL RAID-VL: Volumen RAID que se refresca Refrescar un volumen: sincronizar información en unidades que han estado temporalmente fuera de uso: lvchange --refresh RAID-VL

RAID Inconsistencias entre los volúmenes físicos: Pueden aparecer errores de sincronización debidos a Fallos en los dispositivos Degradación de la información posterior a su escrita Scrubbing: detección (y corrección) de inconsistencias lvchange --syncaction acción RAID-VL acción: Acción a llevar a cabo. Puede ser... check: sólo comprobar consistencia entre volúmenes físicos repair: comprobar consistencia y sincronizar en caso de error RAID-VL: Volumen RAID que se comprueba Para comprobar el progreso de la comprobación: lvs [RAID-VL] -a -o name,raid_sync_action,sync_percent Para verificar número de correcciones una vez acabado: lvs [RAID-VL] -a -o name,raid_mismatch_count

RAID Sustitución de volúmenes físicos: La unidad física que aloja un volumen físico puede fallar Ante un fallo en una unidad: sustitución de volúmenes Dos posibles escenarios Volumen físico a sustituir aún visible Volumen físico a sustituir ya no es visible Comandos a usar, respectivamente: lvconvert --replace PV RAID-VL [PV1..PVn] lvconvert --repair LV [PV1..PVn] PV: Volumen físico (aún visible) a sustituir RAID-VL: Volumen RAID sobre el que se opera PVi: Nuevo(s) volumen(es) físico(s) por el/los que se sustituye. Si no se especifica ninguna, elegirá otro(s) volumen del grupo. Tras hacer un lvconvert --repair es buena idea quitar del grupo los PV desaparecidos haciendo un vgreduce --removemissing <nombre del grupo> Para más información, consultar man 7 lvmraid

¡Gracias!