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

Post on 04-Jul-2015

576 views 0 download

description

La mejor explicación sobre el funcionamiento a nivel lógico de discos duros, medidas de seguridad y mejoras de rendimiento que podemos aplicar. Estas laminas acompañan la ponencia: http://www.youtube.com/watch?v=WMlxj8iM1Vg http://leninmhs.wordpress.com/2012/09/19/disco-duro-en-gnulinux/ El vídeo nos ayuda a entender: Estructura del almacenamiento Sistemas de Archivos: Ext2, Ext3, XFS, JFS y ReiserFS Planificadores de E/S Organización de un disco RAID (Redundant Array of Independent Disks) y LVM (Logical Volume Manager) Ponencia de Juan Piernas sobre discos duros en sistemas basados en GNU/Linux. Grabación realizada en las III Jornadas por el Software Libre de Elche por la Asociación de Usuarios de Software Libre de Elche Kleenux el 12 de noviembre del 2005.

Transcript of 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(piernas@ditec.um.es)

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

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

Índice

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

Índice

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

Estructura de un disco

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

Índice

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

¿Qué es un sistemas de ficheros?

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

● Ejemplo: Ext2

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!

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

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)

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)

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

Mejora del rendimiento:opciones de montaje

● Generales:– noatime

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

– commit=num_seg

● XFS– logbufs=[2-8]

Mejora del rendimiento:opciones de montaje

● JFS:– nointegrity

● ReiserFS:– notail

– nolog

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

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»

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»

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

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)

Índice

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

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

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

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

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

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

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]

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

Índice

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

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

“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

Índice

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

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)

RAID 0

● Se consigue:– Un gran dispositivo de

almacenamiento

– E/S paralela en lecturas y escrituras

● No se consigue:– Seguridad

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!

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

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 piernas@ditec.um.es

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

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

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»

Referencias

● ReiserFS.

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

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

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

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

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

Almacenamiento en disco: mejora de la velocidad y

de la seguridad

Juan Piernas Cánovas(piernas@ditec.um.es)

¡Gracias por la atención prestada!