lunes, 4 de enero de 2010

Disco SSD para Thinkpad X40/X41

Por si a algún dueño de un IBM/Lenovo Thinkpad X40/X41 le es de utilidad:

Los discos SSD (Solid State Disk) son una muy buena alternativa, aunque muy cara, a los discos duros convencionales. Algunos portátiles caros vienen con discos de este tipo, o bien pueden llevarlos como opción. El precio es elevado, pero a cambio son muy rápidos, pudiendo llegar a 10 veces la velocidad de un disco duro convencional, y eso pueden ser 200, 300, 400 MB/seg... muy, pero que muy rápido. La razón de tal velocidad es la tecnología, en vez de ser un disco magnético que gira a una velocidad determinada, los discos SSD se contruyen con chips de memoria flash, que además de resultar más rápidos consumen menos y no hacen ruido como los discos duros, porque no hay motores ni otras partes móviles.

Yo todavía mantengo vivo mi portátil IBM Thinkpad X40, con 4 años de antigüedad pero que con sus 1.2 Kg de peso está en perfecta forma para navegar por Internet, leer el correo y demás cosas que no requieren una pantalla grande y un equipo muy potente. Lo malo, que todo se le va quedando pequeño o va llegando al fin de su vida útil: la batería originalla sustituí el año pasado (tras tres años de uso, no está mal) por una barata comprada por Internet (y que tras un año ya funciona al 50% de capacidad); la memoria la amplié con motivo de la rebaja total del precio de los módulos originales (los únicos que funcionan, ya lo intenté con otras marcas) de 1GB de IBM , que tras costar durante años cientos de euros, de la noche a la mañana costaban 40); y claro, quedan el disco duro de 40 GB y 4200 rpm, un poco lento, y la tarjeta Wifi de 11 lentos Mb/seg.

Afortunadamente para nosotros existe Internet, Ebay y China, donde se fabrica casi todo lo que nos venden, y como este equipo es obsoleto, es fácil encontrar todo tipo de componentes originales por un precio muy reducido.

Mi primera compra ha sido el disco SSD. El problema, que tiene que ser IDE de 1.8" y todos los discos modernos son SATA, así que no proliferan los discos SSD de este tipo. De hecho, sólo he encontrado uno, no demasiado rápido pero sí a un precio razonable: el KingSpec IDE 1.8" MLC (fácil de encontrar en Ebay buscando "Kingspec SSD Thinkpad X40") . Yo he comprado el de 32 GB por 86 euros (hay de más capacidad a mayor precio), que para mí es más que suficiente, aunque me rechine tremendamente que por ese precio hoy se pueda comprar un disco duro normal de 1.5 TB.

Cambiarlo ha sido coser y cantar, 5 tornillos y listo. Pero como para que las cosas sean más divertidas no pueden funcionar a la primera, el kernel Linux 2.6.30 no reconoce el disco correctamente:
hda: KingSpec KSD-PA18.1-032MJ, ATA DISK drive
hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
hda: drive side 80-wire cable detection failed, limiting max speed to UDMA33
hda: UDMA/33 mode selected
Parece que el problema está en el disco en sí, porque realmente cable IDE como tal no hay, se conecta directamente a la placa base del portátil. El disco se supone que es UDMA/100 y no sólo UDMA/33, pero el kernel al no detectar bien el cable de 80 hilos limita la velocidad a 33 MB/seg, lo que es un poco decepcionante.

La solución está en el fichero Documentation/ide/ide.txt de las fuentes del kernel de Linux. En concreto, hay que decirle al driver IDE que ignore la detección del cable, añadiendo la opción "ide_core.ignore_cable=0" en la linea de arranque del kernel, que en el caso de Debian, como el driver IDE está compilado como módulo se traduce en añadir un fichero en el directorio /etc/modprobe.d con el contenido siguiente: "options ide-core ignore_cable=0". Tras eso hay que ejecutar "update-initramfs -u" para que se reconstruya el initrd y reiniciar el ordenador. Al arrancar de nuevo el mensaje anterior desaparece:
ide: ignoring cable detection for ide0
...
hda: KingSpec KSD-PA18.1-032MJ, ATA DISK drive
hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
hda: UDMA/100 mode selected
Ejecutando "hdparm -t /dev/hda" (prueba de sólo lectura) obtenemos 67.72 MB/sec, y "hdparm -t --direct /dev/hda" (prueba de lectura directa) 79.55 MB/sec, que queda lejos de los 400 MB/seg con los que nos habíamos ilusionado, pero es más de lo que promete el fabricante, así que tendremos que conformarnos :-)

Ejecutando una prueba de lectura escritura con el programa bonnie++, 1.5 GB de RAM y sistema de ficheros XFS, la velocidad de lectura resultante es de 81.14 MB/sec y la de escritura 38.10 MB/sec:
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
tordo 3G 388 85 39019 18 16662 11 918 93 83088 20 124.6 2
Latency 75680us 2678ms 3270ms 67939us 159ms 40758us
Version 1.96 ------Sequential Create------ --------Random Create--------
tordo -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 260 0 +++++ +++ 346 0 280 7 +++++ +++ 257 0
Latency 887ms 14775us 325ms 389ms 7323us 584ms
La misma prueba con el disco antiguo, 512 MB de RAM y sistema de ficheros XFS obtuvo en su día el resultado de 13.71 MB/sec en lectura y 13.60 MB/sec de escritura:
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
tordo 1G 14559 63 13924 4 6491 3 12144 48 14044 4 75.9 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 866 9 +++++ +++ 1046 8 852 12 +++++ +++ 319 3
Eso significa que el disco SSD, comparado con el original y simplificando mucho la comparativa, nos multiplica la velocidad de escritura por 2.8 y la de lectura por 6. ¡A disfrutar!