Almacenamiento de datos Administración UNIX: Almacenamiento de datos Jesús Montes Sánchez jmontes@fi.upm.es Septiembre 2012 En UNIX la información puede estar almacenada en uno o mas 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...) jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 1/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 2/30 Tipos de dispositivos Gestión 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 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 3/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 4/30
Dispositivos y particiones 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... 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) jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 5/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 6/30 Dispositivos y particiones Sistemas de ficheros 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 Solaris: format AIX: smit 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+... jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 7/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 8/30
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 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 9/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 10/30 Montaje automático Estrategias de organización 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. 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 11/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 12/30
Estrategias de organización Cuotas de disco 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 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 13/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 14/30 Backup Decisiones de 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 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... jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 15/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 16/30
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 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... jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 17/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 18/30 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 sd01 sd02 sd03 md1 Tecnología RAID Redundant Array of Independent Disks Tipos: Lineal: Concatenación RAID 0: Modo alternado RAID 1: Discos espejos RAID 4: Disco de paridad RAID 5: Bloques de paridad Puede haber discos de sobra (spare disks), que sirven de reserva jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 19/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 20/30
Tecnología RAID mdadm (Linux Software 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 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 21/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 22/30 mdadm - Ejemplos Volúmenes lógicos 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 Mecanismo para gestionar el espacio de forma dinámica Redimiensionar particiones Utilizar varios dispositivos como soporte Proporcionado por: LVM (Linux, AIX) Veritas VM (HP-UX) sd01 sd02 sd03 Agregar un nuevo disco al RAID /dev/md0 Sun Volume Manager mdadm --manage --add /dev/md0 /dev/sdd jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 23/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 24/30
lvm (LVM TOOLS 2.0) 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: Volúmenes físicos (discos o particiones) Grupos de volúmenes 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 Volúmenes lógicos Al finalizar, cada volúmen lógico se puede montar como una partición lvm incluye un conjunto de herrameintas para gestionar todos éstos sd01 sd02 sd03 Posteriormente se podrán agregar nuevos volúmenes fisicos al grupo, cambiar el tamaño de los volúmenes lógicos, etc. jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 25/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 26/30 lvm (LVM TOOLS 2.0) lvm - Ejemplo Gestíon de volúmenes físicos pvcreate pvremove pvdisplay Gestíon de grupos volúmenes físicos vgcreate vgremove vgdisplay vgscan Gestíon de volúmenes lógicos lvcreate lvremove lvdisplay lvextend lvreduce man lvm para ver el listado completo Otras herramientas útiles resize2fs 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 27/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 28/30
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 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 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 29/30 jmontes@fi.upm.es Administración UNIX: Almacenamiento de datos 30/30