Administración UNIX: Almacenamiento de datos Juan Hernando jhernando@fi.upm.es Septiembre 2013 jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 1/1 Almacenamiento de datos • En UNIX la información puede estar almacenada en uno o más dispositivos. • Estos dispositivos se montan de manera ordenada para formar un árbol de directorios único. • En el árbol de directorios se pueden combinar dispositivos de distinto tipo (discos duros, DVDs, discos virtuales...) y con distinta organización interna (sistema de ficheros). • Algunos dispositivos se pueden además dividir en particiones para gestionar mejor su espacio. • Los dispositivos se pueden combinar mediante mecanismos hardware o software para crear entidades mas sofisticadas (RAID, volúmenes lógicos...). jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 2/1 Tipos de dispositivos En UNIX se definen dos tipos de dispositivos: • Dispositivos de tipo bloque (discos). • Dispositivos de tipo carácter (cintas). En ciertos UNIX el mismo dispositivo puede ser gestionado en modo bloque y modo carácter. • En modo bloque: montaje y uso. • En modo carácter: Acceso en crudo (raw mode) para operaciones de recuperación. jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 3/1 Gestión de dispositivos 1 Dar formato al soporte • Separación fı́sica entre sectores, pistas, etc • Operación de muy bajo nivel • Casi nunca necesario (en discos viene de fábrica) 2 Particionado • División del disco en zonas asignables a diferentes sistemas de ficheros • Operación de alto nivel de reparto del disco • Solo para discos o similares (no CDs o DVDs) 3 Creación del sistema de ficheros • Creación de las estructuras lógicas de un formato especifico de organización de datos (SF) • Realizado sobre particiones (discos duros) o sobre dispositivos enteros (CDs/DVDs) 4 Montaje y uso del soporte jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 4/1 Dispositivos y particiones En el directorio /dev se encuentra los ficheros especiales para manejar los diferentes dispositivos de almacenamiento • Discos duros: hda, hdb, sda, sdb... • Disco ópticos: sr0, sr1... • Otros dispositivos: fd0... Las particiones permiten organizar el espacio de los discos, dividiéndolo en zonas separadas. UNIX presenta un fichero distinto en /dev para cada partición. • Para el disco /dev/sda las particiones serı́an sda1, sda2... En Linux, los discos también pueden identificarse por su UUID a través de /dev/disk/by-uuid. jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 5/1 Dispositivos y particiones • Una partición es una subdivisión fı́sica de la superficie de un disco duro • Dentro de una partición se puede crear un sistema de ficheros • Normalmente para poder almacenar información ordenada (sistema de ficheros), un disco duro debe tener al menos una partición • El espacio no particionado solo podrá ser accedido “en crudo” (raw mode) jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 6/1 Dispositivos y particiones La información relativa a las particiones se guarda en una tabla (tabla de particiones) al comienzo del disco (hay un espacio reservado para ello) • Indica donde comienza y termina cada partición • Incluye información adicional como el sistema de ficheros o el punto de montaje Herramienta de gestión de la tabla de particiones Depende del SO en concreto (no está en el estándar SUS) • Linux: fdisk, cfdisk, gparted para particiones MBR gdisk, sgdisk, cgdisk para particiones GPT. • Solaris: format • AIX: smit jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 7/1 Sistemas de ficheros El sistema de ficheros organiza la información almacenada en un dispositivo en ficheros y directorios, almacenando permisos y otras propiedades • Sistemas tradicionales (la mayorı́a obsoletos): • Almacenan datos y metadatos • Gestionan el espacio libre de la manera mas eficiente posible • ext2, ufs, hfs, FAT32... • Sistemas transaccionales: • Extienden los SF tradicionales añadiendo logs de operaciones y/o semántica transaccional • Mayor tolerancia a errores y menor tiempo de recuperación • ext3, ext4, ntfs, hfs+... jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 8/1 Sistemas de ficheros Creación del SF El proceso depende del SF escogido, pero en general UNIX incluye herramientas para llevarlo a cabo. • Linux: mkfs.* (mkfs.ext4, mkfs.vfat...) • Solaris: newfs Mantenimiento del SF • El uso puede general errores en el sistema de ficheros, que hay que detectar y corregir • UNIX incluye herramientas que ayudan en esta taréa (fsck en Linux) • Es importante realizar comprobaciones periódicas para evitar errores catastróficos jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 9/1 Montaje • Para poder acceder a los datos dentro del SF de una partición es necesario montarla • El SF se muestra al SO residente con su contenido dentro de un directorio concreto: punto de montaje • En la mayorı́a de UNIX se usa el mandato mount mount [-fnrsvw] [-t vfstype] [-o options] device dir Ejemplo: mount -t ext3 /dev/sdb1 /mnt Para desmontar se emplea umount • El proceso de montaje permite construir el árbol de directorios del sistema • FUSE (el Linux) permite montar sistemas de ficheros en espacio de usuario. Ejemplo: fuseiso imagen.iso /mnt fusermount -u /mnt jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 10/1 Montaje automático • El sistema de ficheros raı́z se monta al arranque • Dependiendo del UNIX, existen determinados ficheros de configuración que contienen tablas de montaje: • Linux: /etc/fstab • Solaris: /etc/ufstab • AIX: /etc/filesystems Estos ficheros indican el dispositivo o partición, punto de montaje, SF, opciones, etc. jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 11/1 Estrategias de organización Es recomendable repartir el árbol de directorios en diferentes SSFF para evitar que los posibles fallos afecten al sistema entero • / (SF raiz): De tamaño justo. Que sirva como base para los demás (“perchero”) • /usr: Tamaño justo, ya que se puede conocer de antemano (aplicaciones del fabricante/distro) • /home: Lo mas grande posible • /usr/local - /opt: Depende de las necesidades adicionales del sistema. En general de gran tamaño • /var: Depende de las polı́ticas de administración y la configuración de las aplicaciones • swap y /tmp: Depende de la carga jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 12/1 Estrategias de organización Es recomendable: • Mantener las cuentas de usuario en un disco diferente al de sistema • Separar los SSFF de mayor acceso en diferentes discos (swap y sistema) • Ubicar las particiones de manera que sea posible redistribuir los discos • Colocar prescindibles (swap, /tmp) entre las que pueden necesitar crecimiento (/home, /usr/local) • Vigilar el porcentaje de disco libre jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 13/1 Cuotas de disco Asocian a cada usuario/grupo un lı́mite de espacio en disco. Las cuotas limitan: • Número máximo de archivos (i-nodos) • Numero máximo de bloques Dos lı́mites: • Soft: informativo • Hard: restrictivo Los lı́mites se aplican a cada sistema de ficheros y se comprueban al arranque y cuando se hace login En Linux: herramienta quota jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 14/1 Backup • Backup: Copia de seguridad de determinados datos de un sistema • Esquemas de backup: • Backups completos: Se copia toda la información • Backups incrementales: Solo los ficheros modificados son copiados • Habitualmente se combinan los dos esquemas Ejemplo: • Cada dı́a se realiza un backup incremental • Una vez a la semana se almacena un backup completo • Normalmente se almacena más de un backup simultáneamente, permitiendo hacer rollback a diferentes momentos del pasado jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 15/1 Decisiones de backup Una estrategia de backup debe incluir: • Estimación del volumen de datos: • Tamaño original de los datos que copiar • Estimación del ratio de compresión • Selección de los ciclos de backup: • Cuándo se realizan y de qué tipo son (completo/incremental) • Automatización (cliente/servidor): • Programación de los backups • Verificación del sistema. Herramientas de backup: rsync, Amanda, KDat, Tivoli.... jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 16/1 Backup sencillo con rsync rsync Herramienta para la copia de datos local y remota • No es una solución de backup en si misma, pero se puede utilizar para crear un backup sencillo • Copia solo diferencias entre los datos de origen y destino, lo que agiliza el proceso • Detecta y propaga cambios en propietario, grupo, permisos y otras propiedades de los archivos • Respeta enlaces simbólicos • Permite definir patrones complejos de inclusión y exclusión de ficheros man rsync para lista completa de opciones jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 17/1 Backup sencillo con rsync Ejemplo Realizar un backup a un servidor remoto • Directorio origen: /home • Servidor destino: server.org • Directorio destino: /backups Mandato para realizar la copia: rsync --recursive /home server.org:/backups/ ¿Como hacer que se ejecute todos los dı́as a las 4 de la madrugada? Regla en /etc/crontab: 0 4 * * * rsync --recursive /home ... jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 18/1 Dispositivos redundantes Dispositivos RAID: • Dispositivo virtual compuesto por varios dispositivos fı́sicos reales agrupados • Proporciona redundancia y mejores prestaciones • Invisible para el SF por encima / /bin /etc / /usr /usr /var /var RAID sd01 /bin /etc sd02 sd03 jhernando@fi.upm.es ≈ md1 Administración UNIX: Almacenamiento de datos 19/1 Tecnologı́a RAID Redundant Array of Independent Disks • • • • • 0 4 ... 0 1 ... 0 3 ... 0 1 5 ... 0 1 ... 1 4 ... 1 3 ... 2 6 ... 0 1 ... 2 5 ... 2 4 ... 3 7 ... 0 1 ... ... 5 ... 3-5 Tipos: ... Lineal: Concatenación RAID 0: Modo alternado RAID 1: Discos espejos RAID 4: Disco de paridad RAID 5: Bloques de paridad 0-2 jhernando@fi.upm.es RAID 0 (Stripe) 3-5 0-2 Puede haber discos de sobra (spare disks), que sirven de reserva RAID 1 RAID 4 RAID 5 (Mirroring) (Parity disk)(Parity blocks) Administración UNIX: Almacenamiento de datos 20/1 Tecnologı́a RAID RAID hardware • Proporcionado por la controladora de disco u otro dispositivo especı́fico (controladora RAID) • Transparente al SO: Lo ve como si fuese un disco normal • Máxima eficiencia, pero requiere hardware adicional RAID software • Proporcionado por un servicio del SO • El SO puede acceder de forma separada a los diferentes componentes del RAID • Menor eficiencia, pero no requiere hardware adicional • En Linux: herramienta mdadm jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 21/1 mdadm (Linux Software RAID) Herrmienta común en GNU/Linux para la creación de RAID software. Permite: • Crear RAIDs (0, 1, 5 etc...) • Reconstruir RAIDs a partir de sus discos • Monitorizar RAIDs creados • Gestionar errores en RAIDs (reemplazar discos, etc.) La página del manual de mdadm muestra todas sus opciones Los RAIDs de mdadm se manejan con ficheros especiales que comienzan por md (/dev/md0, /dev/md1, etc) El estado de los RAIDs existentes se muestra en /proc/mdstat La configuración se guarda en /etc/mdadm/mdadm.conf jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 22/1 mdadm - Ejemplos Crear un RAID 5 mdadm --create --level=5 --raid-devices=4 /dev/md0 /dev/sdb /dev/sdc /dev/sdd /dev/sde Obtener información del RAID /dev/md0 mdadm --detail /dev/md0 Salvar la configuración del RAID /dev/md0 mdadm --detail /dev/md0 --brief >> /etc/mdadm/mdadm.conf Extraer un disco defectuoso del RAID /dev/md0 mdadm --manage --remove /dev/md0 /dev/sdd Agregar un nuevo disco al RAID /dev/md0 mdadm --manage --add /dev/md0 /dev/sdd jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 23/1 mdadm - Ejemplos Redimensionar un RAID Sólo posible si las particiones fı́sicas pueden redimensionarse o si se reemplazan los dispositivos fı́sicos 1 Redimensionar cada partición que forma parte del RAID: • Desconectar la partición del RAID: mdadm /dev/md0 --fail /dev/sdaX --remove /dev/sdaX • Redimensionar la partición o reemplazar el dispositivo. • Añadir de nuevo al RAID y esperar a que la sincronización termine. mdadm --add /dev/md0 /dev/sdaX 2 Redimensionar el dispositivo virtual: mdadm --grow /dev/md0 -z max 3 Finalizada la sincronización, redimensionar el sistema de ficheros. Ej: resize2fs /dev/md0 jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 24/1 Volúmenes lógicos Mecanismo para gestionar el espacio de forma dinámica / /bin /etc /usr • Redimiensionar particiones /var • Utilizar varios dispositivos como soporte LV1 LVM Proporcionado por: • LVM (Linux, AIX) • Veritas VM (HP-UX) LV2 sd01 sd02 sd03 • Sun Volume Manager jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 25/1 lvm (LVM TOOLS 2.0) Es el gestor de volúmenes lógicos mas común en GNU/Linux. Sus tres eleméntos básicos son: / /etc /usr /var • Volúmenes fı́sicos (discos o particiones) • Grupos de volúmenes LV1 jhernando@fi.upm.es LV2 LVM • Volúmenes lógicos lvm incluye un conjunto de herramientas para gestionar todos éstos /bin sd01 sd02 sd03 Administración UNIX: Almacenamiento de datos 26/1 lvm (LVM TOOLS 2.0) ¿Como crear volúmenes lógicos con lvm? 1 Inicializar los volúmenes fı́sicos que se vayan a usar 2 Crear un grupo de volúmenes 3 Crear Uno o mas volúmenes lógicos dentro del grupo 4 Crear el sistema de ficheros dentro de cada volumen lógico Al finalizar, cada volúmen lógico se puede montar como una partición Posteriormente se podrán agregar nuevos volúmenes fisicos al grupo, cambiar el tamaño de los volúmenes lógicos, etc. jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 27/1 lvm (LVM TOOLS 2.0) Gestión de volúmenes fı́sicos Gestión de volúmenes lógicos • pvcreate • lvcreate • pvremove • lvremove • pvdisplay • lvdisplay Gestión de grupos volúmenes fı́sicos • lvextend • lvreduce • vgremove man lvm para ver el listado completo • vgdisplay Otras herramientas útiles • vgcreate • vgscan • resize2fs jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 28/1 lvm - Ejemplo Tenemos tres particiones de 50GB (sdb1, sdc1 y sdd1) y queremos crear dos volúmnes lógicos de 60GB y uno de 10GB Inicializamos los volúmnes fı́sicos pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 Creamos un grupo (llamado dataserver) vgcreate dataserver /dev/sdb1 /dev/sdc1 /dev/sdd1 Creamos los tres volúmenes lógicos lvcreate --name data1 --size 60G dataserver lvcreate --name data2 --size 60G dataserver lvcreate --name data3 --size 10G dataserver jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 29/1 lvm - Ejemplo (continuación) Ahora podemos acceder a los volúmnes lógicos como si fuesen particiones de disco. Sus ficheros especiales son /dev/dataserver/data1, /dev/dataserver/data2, etc. Ampliar su tamaño lvextend -L15G /dev/dataserver/data3 Reducir su tamaño lvreduce -L40G /dev/dataserver/data1 Crear un sistema de ficheros mkfs.ext4 /dev/dataserver/data2 Montar el volúmen en el árbol de directorios mount /dev/dataserver/data2 /mnt jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 30/1 RAIDs y volúmenes lógicos ¿Tiene sentido construir uno o mas volúmenes lógicos sobre un dispositivo RAID? Depende del contexto • Pros: Ventajas de tolerancia a fallos del RAID • Contras: Posible pérdida de rendimiento (sobre todo si RAID software) ¿Tiene sentido construir un RAID a partir de volúmenes lógicos? NO ¿Por qué? La abstracción del espacio de disco en volúmenes lógicos anula las ventajas de tolerancia a fallos del RAID. Además se limita enormemente la flexibilidad de los volúmenes lógicos jhernando@fi.upm.es Administración UNIX: Almacenamiento de datos 31/1