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!
Top Related