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.
Almacenamiento en disco: mejora de la velocidad y de la seguridad - Juan Piernas
1. III Jornadas por el Software Libre de Elche
12 de noviembre de 2005
Almacenamiento en disco:
mejora de la velocidad y
de la seguridad
Juan Piernas Cánovas
(piernas@ditec.um.es)
2. 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
3. Índice
● Estructura del almacenamiento
● Sistemas de ficheros
● Planificadores de E/S
● Organización de un disco
● Organización de varios discos
4. Índice
● Estructura del almacenamiento
● Sistemas de ficheros
● Planificadores de E/S
● Organización de un disco
● Organización de varios discos
6. Estructura del sistema de
almacenamiento
Aplicaciones de usuario
Sistema de ficheros Sistema de ficheros Intercambio
Múltiples dispositivos (RAID o LVM)
Plan. E/S Plan. E/S Plan. E/S Plan. E/S
Disco Disco Disco Disco
7. Índice
● Estructura del almacenamiento
● Sistemas de ficheros
● Planificadores de E/S
● Organización de un disco
● Organización de varios discos
8. ¿Qué es un sistemas de ficheros?
● Conjunto de estructuras de datos y
algoritmos para guardar datos en un array
lineal de bloques
● Ejemplo: Ext2
9. 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!
10. Sistemas de ficheros
no 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
11. Sistemas de ficheros
transaccionales
● 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)
12. Sistemas de ficheros
transaccionales
● 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)
13. Comparación de tamaños
máximos
Sistema de Tamaño máximo de Tamaño máximo del
Ficheros fichero sistema de ficheros
Ext2/Ext3 2 TiB 16 TiB
ReiserFS 1 EiB 16 TiB
XFS 8 EiB 8 EiB
JFS 8 EiB 4 PiB
1 GiB (230 bytes) = 1024 MiB
1 TiB (240 bytes) = 1024 GiB
1 PiB (250 bytes) = 1024 TiB
1 EiB (260 bytes) = 1024 PiB
15. Mejora del rendimiento:
opciones de montaje
● JFS:
– nointegrity
● ReiserFS:
– notail
– nolog
● Al ser opciones de montaje, todas se
pueden usar o no sin reformatear
16. 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»
18. Ver la configuración actual de
un 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
19. Ver la configuración actual de
un sistema de ficheros
● Ejemplo con Ext3:
...........
Filesystem features: has_journal resize_inode filetype
needs_recovery sparse_super large_file
...........
Errors behavior: Continue
...........
Inode count: 2501856
Block count: 5002208
Reserved block count: 250110
Free blocks: 3136909
Free inodes: 2239406
First block: 0
Block size: 4096
...........
Blocks per group: 32768
...........
Mount count: 4
Maximum mount count: 33
Last checked: Thu Jul 7 09:14:58 2005
Check interval: 15552000 (6 months)
20. Índice
● Estructura del almacenamiento
● Sistemas de ficheros
● Planificadores de E/S
● Organización de un disco
● Organización de varios discos
21. 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
22. 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
23. Planificadores de E/S
● Planificador «deadline» (continuación):
Cola: 98, 183, 37, 122, 14, 124, 65, 67
La cabeza se encuentra en 53
14 37 53 65 67 98 122 124 183
C-SCAN
24. 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
25. 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
26. 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/scheduler
noop [anticipatory] deadline cfq
[root@portatil ~]# echo cfq > /
sys/block/hda/queue/scheduler
[root@portatil ~]# cat /sys/block/hda/queue/scheduler
noop anticipatory deadline [cfq]
27. Comparación de planificadores
de E/S usando bases de datos
Resultados de un test OLTP en una base de datos
de 10GB usando Oracle y un computador de
2 procesadores, 4 GB de RAM y 8 discos
28. Índice
● Estructura del almacenamiento
● Sistemas de ficheros
● Planificadores de E/S
● Organización de un disco
● Organización de varios discos
29. 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/capacity
78140160 (en sectores)
[root@portatil ~]# time dd if=/dev/hda of=/dev/null bs=1048576
count=100
..........
real 0m5.900s
..........
[root@portatil ~]# time dd if=/dev/hda of=/dev/null bs=1048576
count=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
30. “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
31. Índice
● Estructura del almacenamiento
● Sistemas de ficheros
● Planificadores de E/S
● Organización de un disco
● Organización de varios discos
32. 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)
33. RAID 0
● Se consigue:
– Un gran dispositivo de
almacenamiento
– E/S paralela en lecturas
y escrituras
● No se consigue:
– Seguridad
34. 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!
35. 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
36. Configuración de un RAID 1 en
Linux
● Aplicación: mdadm
● Ejemplo de creación de un RAID1
mdadm --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)
37. 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
38. 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»