Download - Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Transcript
Page 1: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Almacenamiento en disco: mejora de la velocidad y

de la seguridad

Juan Piernas Cánovas([email protected])

III Jornadas por el Software Libre de Elche12 de noviembre de 2005

Page 2: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Algunas preguntas

● ¿Qué queremos realmente de un disco?– Velocidad

– ¡Seguridad!

– Si es posible, ¡las dos cosas a la vez!

● ¿Todo depende del disco que tengamos?– ¡NO!

● ¿Puede el software darnos algo que el hardware no nos ofrezca?– ¡SÍ! El software es una parte fundamental

Page 3: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Índice

● Estructura del almacenamiento● Sistemas de ficheros● Planificadores de E/S● Organización de un disco● Organización de varios discos

Page 4: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Índice

● Estructura del almacenamiento● Sistemas de ficheros● Planificadores de E/S● Organización de un disco● Organización de varios discos

Page 5: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Estructura de un disco

Page 6: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Estructura del sistema de almacenamiento

Disco

Plan. E/S

Múltiples dispositivos (RAID o LVM)

Sistema de ficheros Sistema de ficheros Intercambio

Aplicaciones de usuario

Disco

Plan. E/S

Disco

Plan. E/S

Disco

Plan. E/S

Page 7: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Índice

● Estructura del almacenamiento● Sistemas de ficheros● Planificadores de E/S● Organización de un disco● Organización de varios discos

Page 8: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

¿Qué es un sistemas de ficheros?

● Conjunto de estructuras de datos y algoritmos para guardar datos en un array lineal de bloques

● Ejemplo: Ext2

Page 9: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Tipos de sistemas de ficheros

● Existen 2 grandes tipos:– Transaccionales

– No transaccionales

● Principal diferencia: tiempo de recuperación de la consistencia tras una caída

● ¿Qué sistema de ficheros elegir?– ¡Depende de nuestra carga de trabajo!

Page 10: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Sistemas de ficherosno transaccionales

● Ext2● A favor:

– Se puede convertir en Ext3 sin reformatear

– Código muy probado y depurado

– Muy compatible: ideal para la partición de arranque

● En contra:– Recuperación muy lenta de la consistencia

– Pobre rendimiento en directorios con miles de ficheros

Page 11: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Sistemas de ficherostransaccionales

● Ext3, XFS, JFS y ReiserFS● A favor:

– Recuperación muy rápida de la consistencia tras una caída

– Estructuras de datos escalables (principalmente, árboles B+ y extensiones)

● Mejor rendimiento en directorios con miles de ficheros

● Mejor rendimiento con fich. grandes (XFS y JFS)● Adecuados para sistemas de ficheros de varios

terabytes (XFS, JFS)

Page 12: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Sistemas de ficherostransaccionales

● A favor (continuación):– Cambio de tamaño sin reformatear

– Mejores atributos (XFS)

● En contra:– No son compatibles. Para pasar de uno a otro

hay que reformatear la partición

– Código más complejo: depuración costosa y propensos a errores (JFS)

Page 13: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Comparación de tamaños máximos

Ext2/Ext3 2 TiB 16 TiBReiserFS 1 EiB 16 TiB

XFS 8 EiB 8 EiBJFS 8 EiB 4 PiB

Sistema de Ficheros

Tamaño máximo de fichero

Tamaño máximo del sistema de ficheros

1 GiB (230 bytes) = 1024 MiB1 TiB (240 bytes) = 1024 GiB1 PiB (250 bytes) = 1024 TiB1 EiB (260 bytes) = 1024 PiB

Page 14: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Mejora del rendimiento:opciones de montaje

● Generales:– noatime

● Ext3:– journal=[data|ordered|writeback]

– commit=num_seg

● XFS– logbufs=[2-8]

Page 15: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Mejora del rendimiento:opciones de montaje

● JFS:– nointegrity

● ReiserFS:– notail

– nolog

● Al ser opciones de montaje, todas se pueden usar o no sin reformatear

Page 16: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Mejora del rendimiento:opciones al formatear

● Muy específicas de cada sistema de ficheros

● Ext3:– «-J size=tamaño»

– «-J device=dispositivo»

● XFS:– «-l logdev=dispositivo»

– «-l size=tamaño»

Page 17: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Mejora del rendimiento:opciones al formatear

● XFS (continuación):– «-d agcount=valor»

– «-i size=[256-2048]»

● JFS:– «-j dispositivo_registro»

– «-s tamaño_registro»

● ReiserFS:– «-j dispositivo_registro»

– «-s tamaño_registro»

Page 18: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Ver la configuración actual deun sistema de ficheros

● Herramienta disponible:– Ext2/Ext3: dumpe2fs

– XFS: xfsdump

– JFS: jfs_debugfs

– ReiserFS: reiserfstune

● Permiten ver el valor actual de los parámetros de configuración de cada sistema de ficheros

Page 19: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Ver la configuración actual deun sistema de ficheros

● Ejemplo con Ext3:...........Filesystem features: has_journal resize_inode filetype needs_recovery sparse_super large_file...........Errors behavior: Continue...........Inode count: 2501856Block count: 5002208Reserved block count: 250110Free blocks: 3136909Free inodes: 2239406First block: 0Block size: 4096...........Blocks per group: 32768...........Mount count: 4Maximum mount count: 33Last checked: Thu Jul 7 09:14:58 2005Check interval: 15552000 (6 months)

Page 20: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Índice

● Estructura del almacenamiento● Sistemas de ficheros● Planificadores de E/S● Organización de un disco● Organización de varios discos

Page 21: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Planificadores de E/S

● Son necesarios por las características mecánicas de los discos

● Función:– Cuando hay varias peticiones de E/S

pendientes, determinan el orden en el que se atienden

● A partir de la versión 2.6.9 de Linux es posible:– Indicar uno para cada dispositivo

– Cambiarlo en caliente

Page 22: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Planificadores de E/S

● Planificador noop:– Atención en orden de llegada (FIFO)

– Útil para discos RAM, memorias USB, discos inteligentes, etc.

● Planificador «deadline»:– Asigna un plazo máximo de respuesta a cada

petición (similar al tiempo-real)

– Se atiende inmediatamente a las peticiones con plazo agotado. Si no hay → C-SCAN

– Útil para reducir la latencia de E/S

Page 23: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Planificadores de E/S

● Planificador «deadline» (continuación):Cola: 98, 183, 37, 122, 14, 124, 65, 67La cabeza se encuentra en 53

14 18312412298676537 53

C-SCAN

Page 24: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Planificadores de E/S

● Planificador «anticipatory»:– Añade un pequeño tiempo de espera tras

atender una petición → mejor localidad

– Si expira el tiempo de espera, la siguiente petición se obtiene siguiendo un C-SCAN

– Útil para discos lentos, aunque puede incrementar la latencia de E/S

Page 25: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Planificadores de E/S

● Planificador «cfq»:– CFQ: Complete Fair Queuing

– Intenta distribuir el ancho de banda de E/S disponible equitativamente entre todas las peticiones

– También intenta atender peticiones con plazos de espera máximos e incrementar la localidad

– Útil en sistemas medianos/grandes con varios procesadores y discos

Page 26: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Planificadores de E/S

● El planificador a seleccionar depende de la carga de trabajo

● A diferencia de los sistemas de ficheros, ¡es fácil experimentar!

● Ejemplo de cambio en caliente:

[root@portatil ~]# cat /sys/block/hda/queue/schedulernoop [anticipatory] deadline cfq[root@portatil ~]# echo cfq > /sys/block/hda/queue/scheduler[root@portatil ~]# cat /sys/block/hda/queue/schedulernoop anticipatory deadline [cfq]

Page 27: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Comparación de planificadores de E/S usando bases de datos

Resultados de un test OLTP en una base de datosde 10GB usando Oracle y un computador de

2 procesadores, 4 GB de RAM y 8 discos

Page 28: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Índice

● Estructura del almacenamiento● Sistemas de ficheros● Planificadores de E/S● Organización de un disco● Organización de varios discos

Page 29: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Organización de un único disco

● No todas las zonas de un disco son igual de rápidas. Ejemplo:[root@portatil ~]# cat /proc/ide/hda/capacity78140160 (en sectores)[root@portatil ~]# time dd if=/dev/hda of=/dev/null bs=1048576count=100..........real 0m5.900s..........[root@portatil ~]# time dd if=/dev/hda of=/dev/null bs=1048576count=100 skip=38054..........real 0m8.369s (¡Casi un 42% más lento!)..........

● Además, el tiempo de mover las cabezas (tiempo de búsqueda) es el que suele tener más peso

Page 30: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

“Consejos” para mejorar el rendimiento de un disco

● Use varias particiones (intercambio, raíz, /home, /var, arranque, etc.), con SSFF y opciones de montaje distintos

● Si hay una partición que se usa mucho:– Que sea lo más pequeña posible

– Que se encuentre en la zona rápida

● Si el uso de las particiones es similar:– Sitúe la más usada en el centro del disco

– Coloque las otras alrededor, dejando las menos usadas en los extremos

Page 31: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Índice

● Estructura del almacenamiento● Sistemas de ficheros● Planificadores de E/S● Organización de un disco● Organización de varios discos

Page 32: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Organización de varios discos

● Si tenemos varios discos, podemos conseguir:– Un dispositivo con una gran capacidad de

almacenamiento

– Mejorar el rendimiento

– Mejorar la seguridad de nuestros datos

● Es posible conseguir las tres cosas a la vez mediante RAID (Redundant Array of Independent Disks) y LVM (Logical Volume Manager)

Page 33: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

RAID 0

● Se consigue:– Un gran dispositivo de

almacenamiento

– E/S paralela en lecturas y escrituras

● No se consigue:– Seguridad

Page 34: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

RAID 1

● Se consigue:– ¡Seguridad!

– E/S paralela en lecturas

● No se consigue:– Escrituras en paralelo

– Un gran dispositivo de almacenamiento

● ¡Buena opción para un PC!

Page 35: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

RAID 5

● Se consigue:– ¡Seguridad!

– E/S paralela en lecturas y escrituras

– Un gran dispositivo de almacenamiento

● Problema:– Escrituras pequeñas por

cálculo de paridad

– Mínimo, 3 discos

Page 36: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Configuración de un RAID 1 en Linux

● Aplicación: mdadm

● Ejemplo de creación de un RAID1mdadm --create /dev/md1 --level=1 --raid-devices=2/dev/hd[ac]2

● Fich. de configuración: /etc/mdadm.conf

DEVICE /dev/hda* /dev/hdc*

ARRAY /dev/md1 devices=/dev/hda2,/dev/hdc2 level=raid1

MAILADDR [email protected]

● Cambiar el tipo de la partición a «fd» (Linux raid autodetect)

Page 37: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Convertir un disco con datos y otro sin datos en un RAID 1

● Paso 1. Crear un RAID1 de 1 disco para el disco con datos:mdadm --create /dev/md1 --force --level=1--raid-devices=1 /dev/hda2

● Paso 2. Añadir el nuevo disco al array como disco de repuesto (spare):mdadm /dev/md1 -a /dev/hdc2

● Paso 3. Activar el nuevo disco:mdadm --grow /dev/md1 -n 2

Page 38: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

RAIDs y sistemas de ficheros

● Algunos SSFF de Linux tienen opciones especiales para los niveles 0, 4, 5 y 6 de RAID

● Ext2/Ext3:– «-E stride=tamaño»

● XFS:– «-d sunit=valor»

– «-d swidth=valor»

Page 39: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Referencias

● ReiserFS.

– http://www.namesys.com● XFS.

– http://oss.sgi.com/projects/xfs● JFS.

– http://jfs.sourceforge.net● LVM2.

– http://sources.redhat.com/lvm2

Page 40: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Referencias

● RAID y MDADM.

– http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html● Planificadores.

– http://www.wlug.org.nz/LinuxIoScheduler● Discos (características).

– http://www.seagate.com

– http://www.maxtor.com

Page 41: Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas

Almacenamiento en disco: mejora de la velocidad y

de la seguridad

Juan Piernas Cánovas([email protected])

¡Gracias por la atención prestada!