Instalación, Configuración y Pruebas sobre un sistema RAID
Autores: César Caamaño Beiro, Héctor González Velasco y Noé Vázquez González
Fecha: 15 de mayo de 2004
Ver o hacer comentarios sobre este trabajoEl principal objetivo de este trabajo es explicar cómo instalar y configurar un nivel RAID-0 (Redundant Array of Independent (or Inexpensive) Disks) sobre dos discos con interfaz SATA (Serial ATA) gracias a las controladoras integradas en la placa base.
Además de ello se explicará la forma de transformar un disco duro con tecnologría ATA/IDE a SATA mediante un adaptador, cómo instalar Windows XP y Linux Suse 8.1 sobre los discos duros en RAID, y se mostrarán algunas pruebas y medidas realizadas con benchmarks sobre diferentes tipos de sistemas de ficheros.
Vamos a empezar explicando qué son los discos Serial ATA y cuales son las ventajas sobre los discos duros P-ATA que se han venido utilizando hasta el momento. (Desde la aparición del Serial ATA, se acostumbra a denominar al ATA normal como ATA paralelo (P-ATA) para no confundirlos.)
Serial ATA es un nuevo interfaz de conexión en bus diseñado principalmente para la transferencia de datos entre un computador y un disco duro.
Serial ATA tiene tres ventajas principales sobre su predecesora:Inicialmente, el Serial ATA alcanza una velocidad de sólo 150 MegaBytes por segundo, la que no es mucho mayor que la alcanzada por el ATA paralelo (133 MB/seg), pero a diferencia del P-ATA, la nueva interface tiene mucha mayor capacidad de crecimiento. El 2005 aparecerá el Serial ATA II, que duplica la velocidad hasta llegar a 300 MB/seg y se espera que los 600 MB/seg (SATA III) se alcancen para el año 2007.
Los buses paralelos, como el P-ATA, tienen dificultad para alcanzar grandes velocidades debido a que mantener sincronizadas todas las líneas de datos es difícil. En cambio, Serial ATA usa la tecnología de LVDS ("Low Voltage Differential Signaling" o Señalización Diferencial de Bajo Voltaje) para sus señales. Esta tecnología utiliza dos hilos para cada canal por los cuales se transmite una intensidad muy pequeña (3 mA) para conseguir que la diferencia de voltaje entre ambos sea muy pequeña (300 mV) y reducir así los efectos de la capacitancia e inductancia. Si además de esto se trenzan los hilos se consigue una disminución del ruido.
Es discutible la necesidad de tales velocidades, teniendo en cuenta que muy pocos discos pueden exceder los 60 MB/seg de transferencia sostenida.
En lugar del ancho y corto cable de los discos P-ATA (de 80 conductores y sólo 45 cm de longitud), el cable Serial ATA es mucho mas delgado, con sólo 7 conductores y una longitud de hasta 1 metro. Este cambio en el cableado permite mejorar la ventilación interna de los PCs. También, la relación Master/Slave del estándar P-ATA ha sido eliminada, pues los cables S-ATA sólo admiten un disco en cada cable.
Con respecto del cable de energía, los discos Serial ATA usan ahora un conector diferente al P-ATA, para permitir la capacidad de conexión "en caliente" (es decir, el disco puede ser conectado y desconectado del PC mientras este se encuentra en funcionamiento). El nuevo conector de energía tiene 15 pines y entrega tres voltajes diferentes: 3.3 Volts, 5 V y 12 V.
Existen soluciones alternativas para la utilización conjunta de Discos SATA y P-ATA. En nuestro caso hemos utilizado un adaptador denominado Serillel. Éste permite la conexión de un disco duro P-ATA mediante un cable SATA. Requiere alimentación externa mediante un molex de 3 pines y su precio ronda los 30€.
Contamos con un disco SATA 150 Maxtor 6Y160M0 (7200rpm, Buffer 8MB, 160GB, 9.3ms tiempo medio de búsqueda) y un disco ATA 133 Maxtor 6Y120L0 (7200rpm, Buffer 2MB, 120GB, 9.3ms tiempo medio de busqueda). Utilizamos un adaptador para discos duros de ATA100/133 a SATA150, Serillel.
ABIT NF7-S, que posee una controladora SATA-RAID SiliconImage 3112a con dos canales y soporte para RAID0 y RAID1.
Dos cables SATA y dado que el disco duro SATA soporta las conexiones de alimentación tradicionales, no será necesario un adaptador de corriente.
Es preciso recopilar todos los drivers y software necesario para la configuración y arranque con dispositivos SATA y RAID, dado que es necesario tanto a la hora de instalar Windows como Linux. En la página de SiliconImage, se pueden encontrar los drivers necesarios para Windows y también se puede encontrar un kernel precompilado con el driver de la controladora incluido sólo para algunas distribuciones. A día de hoy, no hay otra forma de conseguir el driver de la controladora para Linux de ninguna otra forma más que utilizando ese kernel precompilado.
Para empezar, deberemos reunir todo el software y drivers que hayamos conseguido y asegurarnos de que tenemos todo lo necesario para hacer que el sistema vuelva a funcionar. Por tanto, tendremos, los dos discos duros ya mencionados, los cables SATA, el adaptador para uno de los discos duros, los disquetes con los drivers y los cds con el software.
Una vez que estuvieron montados ambos discos duros sobre las ranuras de la caja, se colocó el adaptador a uno de los discos duros. A continuación se instalaron los cables SATA, desde la placa a los disco y al adaptador. Se estableció el disco SATA en el canal 1 y el PATA reciclado en el canal 2. Por último, se conectaron los cables de alimentación tanto a los discos como al adaptador.
En la BIOS es necesario activar la controladora SATA, si no lo estaba, en el apartado de Integrated Peripheals, On Board PCI Device.
Con la controladora activada, en cada arranque se cargará la BIOS de la controladora justo antes del Post, que nos detectará los
discos además de dejarnos acceder a la configuración de la controladora, donde podremos administrar el RAID, en el caso de que se quiera utilizar.
Una vez dentro de la BIOS de la controladora, podremos crear o borrar un conjunto (SET) de discos, así como realizar un formateo a
bajo nivel.
Cabe destacar, que todas estas opciones suministradas por esta BIOS suponen la pérdida completa de todos los datos que hubiera en los
discos afectados.
Entraremos en crear un nuevo SET, donde podremos elegir el tipo de RAID que deseamos: Striped o Mirrored.
En la siguiente pantalla elegiremos el tamaño del chunk (bloque en que se divide la información que irá a cada disco) y el orden de los discos. En este caso la controladora soporta tamaños entre 4Kb y 128Kb.
Como en esta práctica se pretende medir el rendimiento máximo que darían estos discos, se eligió RAID0 y se fue variando para cada prueba el tamaño de chunk entre todos los disponibles.
Se ha utilizado el benchmark HDtach para medir el rendimiento general de los discos sin tener en cuenta el sistema operativo que se tenga instalado. Como se puede observar en los resultados, la propiedad denominada Read Burst Speed, que es una medida de la cantidad de información que el disco puede bombear desde su buffer a través del bus SATA son 110 MB/s. Esta velocidad, solía ser, con un dispositivo IDE, de aproximadamente 80 MB/s con un buffer de 8MB. Con esto se comprueba que ya se supera la barrera de rendimiento que nos daba el bus IDE, que estaba situada en los 100MB/s, pero aún está lejos la frontera de esta primera versión de SATA que está situada en 150MB/s.
Los siguientes resultados son un resumen de la información obtenida con HD Tach:
Todas las pruebas y resultados individuales se pueden ver en las siguientes imágenes:
En la instalación de Windows XP es necesario especificar que se requerirán drivers no incluidos en la distribución. Esto se hace pulsando la tecla F6 al inicio de la instalación y teniendo preparado un disquete con los drivers del fabricante, que se pedirá más adelante durante la instalación. Por lo demás, la instalación es idéntica a cualquier otro sistema.
Una vez seleccionado que vamos a instalar el controlador para dispositivo de almacenamiento masivo, deberemos escoger en la siguiente pantalla el driver adecuado de los disponibles en el disquete.
Una vez instalado Windows correctamente, con soporte para nuestra controladora; ya sea porque se haya instalado sobre el raid o,
como es este caso, esté instalado en un disco IDE; se procederá a crear las particiones sobre las que haremos los test más adelante.
Utilizando la herramienta de sistema de Administración de discos, se crearon dos particiones primarias de 20GB, una NTFS y otra FAT32.
Ésta operación, fue repetida de la misma forma para cada tamaño de chunk y cada test que se realizó.
Las pruebas de rendimiento realizadas con SiSoft Sandra sobre Windows XP para
los 2 sistemas de archivos que utiliza este sistema operativo reflejan que
la configuración para un óptimo rendimiento del RAID son: FS: FAT32. TAMAÑO
CHUNK: 128 K. WRITE CACHE: ACTIVADA.
Sin Embargo las difencias de tasas de L/E de FAT con respecto a NTFS son
mínimas (al rededor de 0,20 MB/s) Por lo que respecta a sistemas de archivos
en windows la diferencia es despreciable. Lo que si incremeta el rendimiento
como era de esperar es el sistema SATA-RAID. Por ejemplo un disco PATA100
7200rpm logra al rededor de 30 MB/s en pruebas sobre sistemas de archivos
y un disco SATA150 7200rpm consigue alrededor de 35Mb/s, nuestro SATA-RAID
(1ATA133 7200rpm +1SATA150 7200rpm) rinde al rededor de 55 Mb/s.
Por ultimo resaltar que la cache de escritura incremeta de manera considerable
el rendimiento del disco como podemos ver en las primeras pruebas en muy
recomedable que esté simpre activa.
Aquí se muestran resumidos los resultados obtenidos con Sisoft Sandra:
Siguiendo estos enlaces se pueden ver todos los resultados obtenidos en las pruebas de rendimiento:
Para linux se ha utilizado un kernel precompilado obtenido de la web del fabricante, dado que tanto los módulos de soporte de RAID sobre esta controladora están todavía en desarrollo. Ya se soportan los discos sata de la misma, pero sin RAID. Este kernel no es público, es decir, el código no es abierto lo que dificulta en parte el desarrollo de esta compatibilidad.
Se soportan, por tanto, sólo unas distribuciones muy específicas, detalladas en la zona de descarga de este fichero. Se debe señalar la inestabilidad demostrada de este kernel, que ya se avisaba en algunos foros, que hace que el sistema deje de responder en un punto sin posibilidad de recuperación. En nuestro caso se eligió SUSE 8.1, para la que se proporcionan unos ficheros [Quick] [Full] con pasos a seguir para completar la instalación de este núcleo con el soporte deseado.
Primero se debe crear un disquete, bien sea desde linux o desde windows que contenga la imagen de disquete que proporciona este paquete. Insertar el CD de instalación de la distribución linux adecuada, en este caso SuSE 8.1 y presionar Ctrl-Alt antes de que la instalacion comience, durante el menú de arranque del CD. Insertar el disquete e introducir 'noapic' como opción de arranque. Continuar con la nueva instalación normalmente.
En este caso, sólo dio tiempo a realizar las pruebas sobre una particion EXT3 de 20GB antes de que el kernel se volviera inestable, por tanto se adjuntarán sólo pruebas para este sistema de ficheros con tamaño de chunk de 32KB. En linux se creó la partición mencionada utilizando cfdisk, y se formateó adecuadamente con mkfs.
Como ya se dijo anteriormente, sólo se realizaron las pruebas sobre un tamaño de chunk de nuestro Set, no obstante, fueron lo
suficientemente amplias como para hacer un estudio preciso desde linux. El programa utilizado fue el IOZone, realizando un test
estándar automático sobre una partición EXT3.
En todas estas gráficas se aprecian claramente los efectos producidos por las cachés, tanto de CPU, como del sistema como de los discos,
viéndose también el punto en el que las caches dejan de tener efecto al ser superadas en tamaño por las operaciones realizadas.
También quedan bien definidos los puntos en los que deja de tener efecto una de las partes, como puede ser la de buffer y pasa al
rendimiento real una vez superada.
Mide el rendimiento resultante de escribir un nuevo fichero, con la sobrecarga de 'metadatos' que conlleva (información del directorio, espacio ocupado, etc.).
Este test, evalúa el rendimiento resultante de escribir un fichero ya existente. De esta forma, los metadatos no deben escribirse por
que ya lo están.
Se puede observar el rendimiento claramente superior al anterior, sobre todo con fichero y bloques pequeños, llegando a ser casi
cinco veces superior.
Mide la capacidad de lectura de un fichero existente.
Obtiene el resultado de haber leído un fichero que ya había sido leído recientemente. De esta forma, se aprovecha la caché que pueda
tener el sistema operativo de los ficheros que acaban de ser utilizados.
También en este caso, se puede notar claramente que el rendimiento es superior cuando el fichero y los bloques son pequeños.
En este test se realizan accesos a lo largo del fichero de forma aleatoria. Aquí influyen mucho factores de los discos como el tiempo
de búsqueda o el número de discos.
En este caso, se observa que el rendimiento de las lecturas aleatorias es algo superior a las lecturas secuenciales, esto se debe a
que existen dos discos y de esta forma responden mejor a las lecturas aleatorias.
Se realizan escrituras en lugares aleatorios del fichero, también influye mucho aquí el tiempo de búsqueda y el número de discos. Aquí también se obtiene un mejor rendimeinto que en el de escritura se cuencial.
Con este test, se obtienen resultados provenientes de haber leído el fichero hacia atrás, justo la forma contraria a la habitual, no
obstante, hay muchas aplicaciones que utilizan este método de lectura. Es una buena idea para observar el rendimiento ya que muchos
sistemas operativos tienen mecanismos para mejorar el rendimiento de lecturas hacia delante, pero no así al revés.
Queda claro, después de ver estos resultados, que el rendimiento es pobre comparado con las lecturas hacia delante, no teniendo
apenas efecto las caches del sistema y obteniéndose un resultado final menor.
En este test se realizan escrituras sucesivas de un bloque concreto de un fichero. De esta forma, se puede comparar el rendimiente
cuando los datos caben en la cache (con el bloque suficientemente pequeño) y cuando no caben.
En este test, queda claro el tremendo efecto de la caché cuando el dato cabe en ella y se vuelve a confirmar el rendimiento cuando
las cachés y sistemas de mejora de rendimiento se superan, pues se obtienen los mismos resultados.
Se simula el comportamiento de una aplicación, haciendo secuencias de lecturas y búsquedas, comportamiento no optimizado por ningún
sistema operativo. Con este test se pueden detectar algunas anomalías en el rendimiento, dependiendo de como coincidadn las lecturas y
búsquedas, detectando tambíen discos que hagan de cuello de botella, en un Set como el nuestro, por ejemplo.
Se observa que en este test,la caché de la CPU tiene mucho que decir, dando un enorme rendimiento, el resto de zonas son coincidentes
con tests anteriores.
Este test mide el rendimiento obtenido a raiz de usar la función de libreria fwrite() para crear un nuevo fichero, que realiza
escrituras con buffer This test measures the performance of writing a file using the library function fwrite(). Ésta función es muy
utilizada en las aplicaciones, por tanto, es interesante ver su rendimiento.
Se puede ver, en este test, una curiosa gráfica, que remarca un alto rendimiento en las zonas en las que los datos caben en el
buffer que utiliza fwrite(), decayendo claramente cuando éste se ve superado.
Se mide el rendimiento de fwrite() sobre un fichero existente, ahorrando la parte de los metadatos. Se observa que la forma de la gráfica es muy similar a la anterior, sólo que el rendimiento en este test es mayor que el doble que el anterior, fruto de las mejoras de rendimiento que ofrecen los sistemas.
En este, se mide el redimiento de la funcion de librería fread(), que también utiliza un buffer de lectura y también es ampliamente utilizada por las aplicaciones. El rendimiento aquí es algo inferior al de lectura sin utilizar fread().
Mide el rendimiento de fread() sobre ficheros leídos recientemente. Aqui, el rendimiento es casi el doble que el anterior, gracias, una vez más, a los mecanismos de optimización de este tipo de operaciones proporiconados por los sistemas.
Analizando los resultados de estas pruebas sobre EXT3, refiriéndonos a cuando las caches del sistema no tienen efecto, los resultados son aproximadamente los mismos, si comparamos los detalles ofrecidos por Sandra y por IOZone veremos que las diferencias son mínimas, quedando unos por encima de otros alternativamente y sin notables variaciones.
Para llevar a cabo esta tarea, en la página del fabricante, se puede descargar una utilidad en java, que por tanto, nos puede servir tanto para windows como para linux, en la cual podemos comprobar bastantes detalles de los discos y el Set, así como un historial de eventos sucedidos desde la creación del mismo.
Desde esta aplicación podemos obtener información detallada de los discos, como el modo en el que están funcionando o si tienen o no activada la caché de escritura.
También se pueden visualizar detalles de la controladora, desde la versión hasta el driver, pasando por la IRQ en la que se encuentra, etc.
Finalmente nos plantea un esquema del Set que hemos montado, facilitando en cierta forma la disposición que hemos elegido. Aunque en este caso sea sencilla, habrá casos en los que sea de gran utilidad.
Una vez observados los resultados del test, y sobre todo, después de convivir un tiempo con un RAID de este tipo, se podría decir que realmente merece la pena, intentar mejorar de alguna manera, el cuello de botella de los sistemas actuales: los dispositivos de almacenamiento permanente.
Ésta es una solución relativamente barata, en los ordenadores que se venden hoy en dia, ya que poseen todos una controladora SATA-RAID, y muchas suelen traer el material necesario (cables y adaptarores) para que sea montado con facilidad.
Es decir, que hoy en día, se podría reducir el coste del montaje de un SET como éste, al precio de un disco duro decente, es decir, unos 100€. Algo que podría echar para atrás a la gente, es lo relativo a la fiabilidad de el RAID0, porque tiene el doble de posibilidades de fallar que el disco aislado de toda la vida. Esto es cierto, pero la probabilidad de que falle un disco de los que se venden actualmente (con un trato adecuado) es muy baja.
Como ejemplo, este SET, lleva en funcionamiento unas treinta mil horas con una exigencia de trabajo elevada. Además, uno de los discos ha sido usado previamente durante más de un año. Y, actualmente, no ha habido ningun problema de ningún tipo con estos discos.
Por tanto, se recomienda el uso de este sistema como una forma económica de mejorar en buena parte el rendimiento de un equipo.