almacenamiento en disco: mejora de la velocidad y de la seguridad - juan piernas
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
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
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 [email protected]
● 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([email protected])
¡Gracias por la atención prestada!