Archivo de la categoría: Disco duro

Monitorizar temperatura de disco duro con hddtemp

hddtemp es un comando de Linux que permite monitorizar la temperatura del disco duro de vuestro equipo. Es un comando que hay que ejecutar como root (o con sudo). Hay que pasarle como parámetro el disco duro que queremos monitorizar. Ejemplo:

[ user ] [~] > /usr/sbin/hddtemp /dev/sdb
/dev/sdb: ST9750420AS: 39°C

Si lo queréis ejecutar con vuestro usuario debéis aplicarle el setuid bit de esta forma:

chmod u+s /usr/sbin/hddtemp

Con esto se consigue que el programa hddtemp adquiera los permisos el propietario del mismo (root).

Yendo un paso más allá, podéis incorporar esta información en conky. Conky es un programa para monitorizar cosas en vuestro PC y, en general, mostrar información al respecto. En este caso particular, nos mostraría constantemente la temperatura del disco duro.

Detectando fallos de disco con S.M.A.R.T.

En un anterior artículo os mencioné que existía una tecnología llamada S.M.A.R.T. que sirve para detectar los fallos de los discos duros y poder actuar antes de que sea demasiado tarde. Os comenté que ya os hablaría en otro artículo de ella. Bien, pues ha llegado el momento 😉

Las siglas de S.M.A.R.T. significan Self Monitoring Analysis and Reporting Technology, y como su nombre indica, es una tecnología que sirve para analizar, monitorizar y obtener informes de los parámetros que influyen en la vida de los discos duros.

Para poder usar esta tecnología, ésta debe estar soportada por el disco duro (prácticamente todos los discos duros actuales, si no todos, la soportan) y también por la BIOS (lo que también suele suceder), donde tiene que estar habilitada.

Dado que es una tecnología que sirve para almacenar datos estadísticos de errores y uso del disco duro que os permitirán anticiparos a la pérdida de datos, no hay razón para no activarla. En algún foro leí una vez que la única podría ser que usárais algún tipo de disco flash de los primeros que no soportaran esta tecnología y, por tanto, al estar activada en BIOS, os diera problemas para arrancar (puesto que el disco no la soporta). En cualquier otro caso (que será el 99,99%) os recomiendo que la activéis.

Para consultar los datos que se van guardando sobre el estado del disco duro, existen muchas utilidades (tanto para Linux como para Mac y Windows). En mi caso, me voy centrar en la utilidad para Linux llamada smartmontools.

Para instalarla, ya sabéis (en debian y derivadas):

aptitude install smartmontools (*)

Esto os proporciona el comando smartctl, con el que podréis realizar varios tests y ver la información recogida por S.M.A.R.T. en vuestro disco duro. A continuación vamos a ver algún ejemplo.

smartctl -i /dev/sdx

donde /dev/sdx el disco duro que queréis chequear (/dev/sda, /dev/sdb…; si son IDE: /dev/hda, /dev/hdb…).

Este comando nos da distinta información del disco duro (número de serie, versión del firmware, si está habilitada o no la funcionalidad SMART…):

# smartctl -i /dev/sdb
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-19-generic] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: ST9750420AS
Serial Number: 5WS3JZ6F
LU WWN Device Id: 5 000c50 04521203c
Firmware Version: 0002DEM1
User Capacity: 750.156.374.016 bytes [750 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Fri Nov 15 09:56:34 2013 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Otro ejemplo:

# smartctl -H /dev/sdb
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-19-generic] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Please note the following marginal Attributes:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
190 Airflow_Temperature_Cel 0x0022 067 035 045 Old_age Always In_the_past 33 (0 18 33 24 0)

Este comando muestra información sobre el estado de salud general del disco. Si pone PASSED, como en el ejemplo mostrado, el disco duro está Ok. Si mostrara algo como FAILING, entonces tenemos que pensar en hacer backup inmediatamente.

En concreto, os pongo el ejemplo de otro disco duro que tengo que me ha dado algún que otro problema últimamente:

# smartctl -H /dev/sdl
smartctl 6.2 2013-04-20 r3812 [x86_64-linux-3.11.0-13-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
Failed Attributes:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
 5 Reallocated_Sector_Ct 0x0033 001 001 036 Pre-fail Always FAILING_NOW 4095

Como véis, tiene problemas (y no pequeños). El problema es que están fallando muchos sectores (ha habido muchos realojamientos de sectores). Total, que me tengo que comprar otro.

Ahora probemos este comando:

smartctl -A /dev/sdb

Con este comando se muestran diferentes atributos SMART del disco duro (en concreto, se muestran 30):

smartctl_a

En este caso ponemos una captura de pantalla para que se vean más claros los datos del ejemplo.

Aspectos interesantes de los datos aportados por el comando anterior:

  • RAW_VALUE es el valor crudo, es decir, el valor real. Por ejemplo, el número de horas que lleva el disco encendido.
  • VALUE. El valor RAW_VALUE es convertido a un número entre 1 y 253 por un algoritmo ejecutado en el propio firmware del disco. Aquí, los números bajos son malos y los altos son buenos. Si un valor es igual o está por debajo del umbral (columna THRES, de THREShold), diremos que el disco ha fallado y aparecerá en la columna WHEN_FAILED. Si esta columna aparece vacía es que todo va bien (las cosas no están fallando). Si hay valores en sus filas, entonces debemos empezar a pensar en hacer backup y cambiar de disco.
  • TYPE. Vemos dos posibilidades: Pre-fail y Old-age. Quiere decir que si observamos un fallo en algún atributo de tipo Pre-fail, se espera un fallo inminente del disco. Si falla en alguno de Old-age, es que se ha alcanzado el final de la vida del disco.

Además de smartctl se incluye, en el paquete smartmontools, el demonio smartd. Éste se encarga de realizar monitorización periódica de los discos del equipo y tomar las acciones que se le indiquen en su fichero de configuración, como enviar un mail al administrador de sistemas, por ejemplo.

Para más información al respecto podéis visitar la wiki oficial del proyecto aquí.

 

(*) Yo siempre uso aptitude, pero podéis usar igualmente apt-get. También podéis usar la utilidad de vuestra distro para instalar software (Synaptic, Muon…). Si queréis usar aptitude pero no está instalada (en las últimas versiones de Ubuntu/Kubuntu/… ocurre), haced esto:

apt-get install aptitude

Reparar disco duro con sectores defectuosos

Introducción

La vida útil de los discos duros es limitada, y más con el uso que les damos actualmente; ¿quién no se ha comprado un disco de 1 TB y al poco tiempo lo tenía completamente lleno?

Por eso, es bueno hacer copias de seguridad con cierta periodicidad, dependiendo ésta de la criticidad de los datos (del valor que tengan para nosotros) y de la frecuencia de modificación de los mismos.

Si no tenemos la precaución de hacer estas copias de seguridad y ocurre un fallo en el disco duro es probable que perdamos todo, y la recuperación de nuestros archivos, si aún es posible, puede tener un coste que se puede escapar de un bolsillo normal y corriente (como el mío por ejemplo). Vamos, que en estos casos casi merece más la pena hacer de nuevo el viaje al Caribe que enviar el disco a reparar para recuperar las fotos del que hicimos el año pasado.

En ocasiones no se estropea completamente el disco, sino que da fallo en algún sector (sector es la unidad lógica mínima de un disco duro, para entendernos). Esto lo notamos cuando vamos a copiar un archivo a o desde un disco duro y se queda un rato «pensando», dando error de copia al final (normalmente de «redundancia cíclica»).

El que en un disco duro comiencen a fallar los sectores es señal de que es el principio del fin del mismo. Esto no tiene por qué suponer que haya que tirarlo, ni mucho menos, pero yo no dejaría en dicho disco mis fotos más preciadas (al menos, no sin tener un par de copias más en otros lugares).

A pesar de estos pequeños fallos podemos seguir utilizándolo con la particularidad de que cuando vaya a usar ese sector o sectores defectuosos probablemente volverá a dar fallo. ¿Cómo aislamos estos sectores de forma que el sistema operativo no los use más y así no provoque estos fallos? Esto es lo que vamos a tratar de contestar en lo que resta de post, porque vamos a ver cómo hacer esto (en GNU/linux, por supuesto) con distintas herramientas, como badblocks o fsck -entre otras-.

Badblocks

Cito de la Wikipedia (lo explican genial, como siempre): «badblocks es una utilidad disponible para Linux que permite localizar y aislar los sectores defectuosos de una unidad de disco».

Por tanto, ejecutando dicha utilidad (aunque se puede usar también como parte de la utilidad e2fsck) podemos recopilar una lista de sectores defectuosos encontrados. Esta lista la podemos guardar en un fichero de texto plano que luego podemos pasarle como argumento al comando que realiza el formateo para que tenga en cuenta dichos sectores defectuosos y no los use.

Por tanto, primero ejecutaríamos la utilidad badblocks sobre nuestro disco (pongamos que es, por ejemplo /dev/sdb, aunque podemos especificar también una partición, como «/dev/sdb5»):

# badblocks -svn /dev/sdb -o sectores_defectuosos.txt

donde:

-s –> muestra una barra de proceso
-v –> modo verbose (muestra los errores encontrados)
-n –> usa el modo no destructivo
-o –> especifica el fichero donde se guarda la salida

Al ejecutar dicho comando aparecerá algo como:

Revisando los bloques dañados en modo lectura-escritura no destructiva

Esto quiere decir que no se van a borrar los datos que tenemos en el disco. Aparecerá un porcentaje que va subiendo muy lentamente, así que armaros de paciencia porque es un proceso lento (pensad que va sector a sector y en un disco de 500 GB, por ejemplo, tiene más de 1000 millones de sectores (de 512 bytes cada uno).

Ahora formatearíamos el disco duro (o partición). Si lo queremos en fat32, lo haríamos así:

mkdosfs -F32 -v -l sectores_defectuosos.txt -n LABEL /dev/sdb

Si lo queremos en ext4 haríamos esto:

mkfs.ext4 -v -l sectores_defecuosos.txt -L LABEL /dev/sdb

donde:

-v –> modo verbose (muestra toda la salida de mensajes)
-l –> Le indicamos el fichero que contiene la lista de sectores defectuosos
-n/-L –> Especifica la etiqutea (LABEL o nombre de Volumen) del disco o partición (en mkdosfs esta opción es con «-n» y en mkfs.ext4 -en mke2fs en general- se usa la opción «-L»)

Otras posibilidades

Con mkfs.ext4

También se podría hacer ambas cosas al mismo tiempo de esta forma:

mkfs.ext4 -c /dev/sdb

donde:

-c Es para marcar los bloques defectuosos. Si pusiéramos -cc hace una búsqueda pero no destructiva

Con fsck.ext4

También se puede pasar un chequeo (con fsck) y pedirle que repare todos los fallos que encuentre:

fsck.ext4 -c -p /dev/sdb

donde:

-c (ídem del anterior)
-p Busca y repara los errores

Utilidades de los fabricantes de discos duros

Cada marca tiene su propia utilidad (la cuál, en principio, sólo vale para los discos de esa marca). Suelen funcionar bastante bien. En particular, yo he probado la de Seagate en alguna ocasión con buen resultado. En este caso, la utilidad se llama Seatools y tenéis la posibilidad de descargaros una iso con la que podéis arrancar (previo a quemar un CD con ella, obviamente) vuestro equipo y lanzarla directamente para revisar vuestro(s) disco(s) duro(s).

S.M.A.R.T

Por último, comentaros que existe una tecnología llamada SMART que permite monitorizar el estado del disco de forma que se pueda uno anticipar a un fallo grave pudiendo recuperar los datos antes. Pero de esto hablaremos en otro artículo.

Apuntes finales

Con las utilidades badblocks (en windows tendríamos chkdsk, con resultados similares), estamos solucionando el problema a nivel del sistema de ficheros. Esto quiere decir que nosotros lanzamos la utilidad para que se marquen los sectores defectuosos y el sistema operativo será consciente de ello, de forma que la próxima vez que vaya a escribir en los mismos, al verlos marcados, no lo haga y busque otros «sanos».

Sin embargo, es menester comentar -ya para terminar este artículo- que los propios discos duros también realizan su detección de sectores defectuosos, de tal forma que si en una escritura de un sector observan que éste tiene algún problema, directamente lo descartan y usan otro, siendo todo esto transparente al sistema operativo. Mediante S.M.A.R.T. al que hacíamos referencia antes (y del que probablemente hablaremos en un artículo próximo) se pueden consultar estos cambios, de forma que si vemos que se están produciendo muchos, podemos comenzar a plantearnos cambiar de disco duro.

Hay mucha información sobre esto en Internet. En partcicular, os recomiendo empezar por aquí.

Espero que os haya resultado útil el artículo.