Mostrando entradas con la etiqueta hd. Mostrar todas las entradas
Mostrando entradas con la etiqueta hd. Mostrar todas las entradas

Cambiar disco fallido en RAID software (mdadm)

mdadm es un método de implementar a nivel software las facilidades del RAID a nivel hardware. Aunque en la actualidad, especialmente los servidores de producción, suelen traer todos consigo la posibilidad de crear diferentes tipos de RAID hardware, es cierto que pueden no traerlo. En ese caso y como proteger nuestros datos (y por lo tanto la disponibilidad de los mismos) debería de estar por encima de todo, la opción de tener disponible una solución de RAID puede resultar francamente útil y para hacerlo está mdadm.
mdadm crea el RAID, pero no evita que un disco pueda fallar. Sí tenéis una salida similar a la siguiente,
shell> mdadm -D /dev/md0
/dev/md0:
        Version : 00.90.00
  Creation Time : Thu Ene  2 12:27:05 2014
     Raid Level : raid1
     Array Size : 64128 (62.63 MiB 65.67 MB)
    Device Size : 64128 (62.63 MiB 65.67 MB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Ene  2 18:54:59 2014
          State : active, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 40e3ae0f:fd3ef12a...
         Events : 0.91

Number  Major  Minor  RaidDevice  State
0       0      0      0           faulty removed
1       8      1      1           active sync   /dev/sda1
querrá decir que uno de los discos que compone el RAID ha fallado. Como se puede observar, hay dos discos en el RAID y uno de ellos ya no está presente (/dev/sdb1).
La solución ahora pasa por marcar el RAID como fallido, cambiar el disco y volver a reconstruir el RAID nuevamente. Para hacerlo, os dejo aquí los pasos.
  • Indicamos al RAID que la partición ha fallado
    shell> mdadm --manage /dev/md0 --fail /dev/sdb1
    
  • Eliminamos la partición de RAID
    shell> mdadm --manage /dev/md0 --remove /dev/sdb1
    
  • Apagamos el equipo y cambiamos el disco
  • Replicamos estructura del disco sda al nuevo disco sdb
    shell> sfdisk -d /dev/sda | sfdisk /dev/sdb
    
  • Incluimos en nuevo disco en el RAID
    shell> mdadm --manage /dev/md0 --add /dev/sdb1
    
  • Esperamos a que sincronicen los datos (según el tipo de RAID)
    Durante este tiempo se puede trabajar perfectamente con el equipo, aunque irá un poco más lento, probablemente.
Si algún día lo tenéis que usar, espero que os sea de ayuda y sino, mejor que mejor.
Leer más

Comandos interesantes, ioping

Recientemente he publicado una entrada sobre iostat, cómo usarlo y cómo interpretar los resultados que se obtenían de su ejecución. Hoy acabo de descubrir una nueva utilidad que sirve para hacer algo muy similar. No ofrece tanta información, pero sí la importante y de forma sencilla y rápida nos permite consultar el rendimiento de entrada/salida de un disco. Esta nueva herramienta se llama ioping. Sí, ping I/O. Está disponible en los repositorios de Ubuntu y también en los de Debian, aunque actualmente sólo de testing en adelante.
ioping permite obtener el rendimiento del acceso a disco de un equipo al igual que si estuviésemos ejecutando un ping a la red. De hecho, qué mejor que un ejemplo de la salida para verlo,
shell> ioping -c 10 -s 1M -D /tmp
1048576 bytes from /tmp (ext4 /dev/sda1): request=1 time=34.0 ms
1048576 bytes from /tmp (ext4 /dev/sda1): request=2 time=23.0 ms
1048576 bytes from /tmp (ext4 /dev/sda1): request=3 time=23.2 ms
...

--- /tmp (ext4 /dev/sda1) ioping statistics ---
10 requests completed in 9268.4 ms, 37 iops, 37.4 mb/s
min/avg/max/mdev = 23.0/26.7/34.0/4.4 ms
Por lo tanto, ioping permite obtener la latencia de entrada/salida de disco pudiéndonos ser útil para saber la potencia de lectura o escrita que el disco ofrece, empleando o no la caché. Las principales opciones que presenta son:
  • -c count
    Se ejecuta count veces y luego termina ofreciendo una estadística de resultados.
  • -s size
    Establece el tamaño de la lectura/escritura que realizará.
  • -L
    Realiza las operaciones de forma secuencial y no aleatorias.
  • -C
    Comprueba la latencia del disco empleando la caché.
  • -D
    Comprueba la latencia escribiendo en disco directamente.
Para más información, consultar la página de su manual.
Página oficial de ioping: code.google.com/ioping

La entrada Comandos interesantes, ioping la puede leer en Puppet Linux.
Leer más

Mimando y controlando los discos

Los discos duros son una de las partes fundamentales de nuestros equipos. Efectivamente, al igual que sin procesador o RAM, un equipo sin disco no puede funcionar (salvemos las distros en live), pero el disco sin embargo es la parte más fundamental por que es donde guardamos toda la información. Controlar el estado de vida del disco es muy importante, al igual que es hacer una buena copia de seguridad de todos nuestros datos. Desde GNU/Linux tenemos la posibilidad de vigilar los discos de forma sencilla con la utilidad smartmontools. Gracias a estar magnífica herramienta podemos obtener una serie de parámetros sobre los discos, desde temperatura hasta número de horas que lleva en funcionamiento. Y también, como era de esperar, recibir alertas en caso de que el disco esté dando algún tipo de fallo.
Vamos a comenzar por instalarlo. smartmontools está prácticamente disponible en los repositorios de cualquier distribución. En Debian/Ubuntu,
shell> apt-get install smartmontools
Tras esto, ya tenemos disponible el comando smartctl y el daemon smartd. Vamos a comenzar por ver la información que se puede extraer con el comando y luego veremos cómo configurar el daemon para que nos alerte de situaciones anómalas en los discos del equipo.
  • Información general
    Con la opción -i obtenemos información general del disco en cuestión. Versión del firmware, dispositivo, modelo, número de serie, etc.
    shell> smartctl -i /dev/sda
    === START OF INFORMATION SECTION ===
    Model Family:     Western Digital Caviar SE Serial ATA family
    Device Model:     WDC WD1600JS-08NCB1
    Serial Number:    WD-WMANM7963047
    Firmware Version: 10.02E01
    User Capacity:    160,041,885,696 bytes
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   7
    ATA Standard is:  Exact ATA specification draft version not indicated
    Local Time is:    Mon Apr  1 11:26:09 2013 CEST
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
  • Información detallada
    La opción -a nos ofrece la misma información que la anterior y a mayores más detalles como las horas de funcionamiento, la temperatura, veces que se ha encendido, etc.
    shell> smartctl -a /dev/sda
    === START OF INFORMATION SECTION ===
    Model Family:     Western Digital Caviar SE Serial ATA family
    Device Model:     WDC WD1600JS-08NCB1
    Serial Number:    WD-WMANM7963047
    Firmware Version: 10.02E01
    User Capacity:    160,041,885,696 bytes
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   7
    ATA Standard is:  Exact ATA specification draft version
    Local Time is:    Mon Apr  1 11:28:57 2013 CEST
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    See vendor-specific Attribute list for marginal Attributes.
    
    ...
    
    SMART Attributes Data Structure revision number: 16
    Vendor Specific SMART Attributes with Thresholds:
    ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE
      1 Raw_Read_Error_Rate     0x000f   200   200   051    Pre-fail
      3 Spin_Up_Time            0x0003   179   178   021    Pre-fail
      4 Start_Stop_Count        0x0032   100   100   000    Old_age
      5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail
      7 Seek_Error_Rate         0x000f   200   200   051    Pre-fail
      9 Power_On_Hours          0x0032   044   044   000    Old_age
     10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail
     11 Calibration_Retry_Count 0x0012   100   100   051    Old_age
     12 Power_Cycle_Count       0x0032   100   100   000    Old_age
    190 Airflow_Temperature_Cel 0x0022   064   041   045    Old_age
    194 Temperature_Celsius     0x0022   111   088   000    Old_age
    196 Reallocated_Event_Count 0x0032   200   200   000    Old_age
    197 Current_Pending_Sector  0x0012   200   200   000    Old_age
    198 Offline_Uncorrectable   0x0010   200   200   000    Old_age
    199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age
    200 Multi_Zone_Error_Rate   0x0009   200   200   051    Pre-fail
    
    SMART Error Log Version: 1
    No Errors Logged
    
    SMART Self-test log structure revision number 1
    Num  Test_Description  Status              Remaining  LifeTime(h)
    # 1  Short offline     Completed without error   00%     41414
    
    ...
    
  • Test de estado
    La opción -H realiza un pequeño test que indica si el estado del disco es correcto
    shell> smartctl -H /dev/sda
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED
    
    o incorrecto y está a punto de morir.
    shell> smartctl -H /dev/sda
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: FAILED!
    
  • Test con datos relevantes
    smartctl también se puede programar para que realice un test al disco y obtener más datos. Dependiendo del test a realizar la información se devolverá en el momento o tardará en realizarse.
    shell> smartctl -t short /dev/sda
    === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
    Testing has begun.
    Please wait 2 minutes for test to complete.
    Test will complete after Mon Apr 5 18:28:37 2013
    
    Use smartctl -X to abort test.
    
    En caso de que tarde en devolvernos los datos, estos podrán ser consultados a posteriori tal que así,
    shell> smartctl -l selftest /dev/sda
    === START OF READ SMART DATA SECTION ===
    SMART Self-test log structure revision number 1
    Num  Test_Description  Status              Remaining  LifeTime(h)
    # 1  Short offline   Completed without error     00%     41414
    
  • Más información sobre smartctl en la página de su manual.
smartmontools también incluye un pequeño demonio que permite ejecutarse, controlar y enviar información del estado de los discos que le indiquemos que controle. Por defecto dicha información la enviará a syslog. Para configurar el daemon tendremos que editar el fichero /etc/default/smartmontools,
enable_smart="/dev/sda /dev/sdb"
start_smartd=yes
Y arrancar el daemon.
shell> /etc/init.d/smartmontools start
La primera variable nos indica los diferentes discos a monitorizar y la segunda permite que se arranque como servicio. A partir de ahora nos irá dando información de los discos y en caso de que hay algo "raro" en los mismos nos alertará por syslog. Por ejemplo,
Device: /dev/sda, FAILED SMART self-check. BACK UP DATA NOW!
Device: /dev/sda, Failed SMART usage Attribute: 5 Reallocated_Sector_Ct.
Device: /dev/sda, Self-Test Log error count increased from 4 to 5
Espero que os sea de utilidad y acordaros: BACK UP DATA NOW!

La entrada Mimando y controlando los discos la puedes leer en Puppet Linux.
Leer más

iostat

iostat es una de esas utilidades de GNU/Linux que todo administrador debería de conocer y comprender perfectamente. iostat permite monitorizar los parámetros de entrada/salida de los diferentes dispositivos del sistema, para observar los diferentes ratios de transferencia.
Una de las típicas salidas de iostat es la siguiente,



shell> iostat
Linux 2.6.32-5-686 (desktop)   03/31/13   _i686_ (2 CPU)

avg-cpu:  %user       %nice     %system   %iowait    %steal  %idle
           4,25        0,00        1,01      0,51      0,00  94,22

Device:     tps  Blk_read/s  Blk_wrtn/s  Blk_read  Blk_wrtn
sda        7,32       66,51      112,61    835334   1414278
Aunque aquí nos muestra también el consumo de CPU del sistema, la parte más importante está a continuación y es la que se refiere a los discos. De hecho, si llamamos a iostat para que nos saque información continuada de los discos, vemos que se suprime la información relativa a la carga de CPU.
shell> iostat -d 2 3
Linux 2.6.32-5-686 (desktop)   03/31/13   _i686_ (2 CPU)

Device:     tps   kB_read/s   kB_wrtn/s   kB_read   kB_wrtn
sda       11,79      210,97       95,91   1171053    532364

Device:     tps   kB_read/s   kB_wrtn/s   kB_read   kB_wrtn
sda        2,79       80,45        0,00       144         0

Device:     tps   kB_read/s   kB_wrtn/s   kB_read   kB_wrtn
sda       24,16        0,00      191,01         0       340
Pero el problema de iostat no está en conseguir hacer funcionar el comando, sino en saber interpretar la salida. Saber qué significa tps, kB_wrtn, etc. Esto es muy sencillo,
  • tps
    Es la transferencia a disco por segundo.
  • Bls_read/s (kB_read/s, MB_read/s)
    Es la cantidad de bloques leídos por segundo.
  • Bls_wrtn/s (kB_wrtn/s, MB_wrtn/s)
    Representa la cantidad de bloques escritos por segundo.
  • Blk_read (kB_read, MB_read)
    Bloques totales leídos.
  • Blk_wrtn (kB_wrtn, MB_wrtn)
    Bloques totales escritos.

La entrada iostat la puedes leer en Puppet Linux.
Leer más

Comandos interesantes, badblocks

A quién no lo ha pasado que su disco duro le ha dado fallos o tiene algún sector defectuoso. Muchas veces el disco con el uso presenta algún sector defectuoso al que no se puede acceder y que por lo tanto dicha información se va perdiendo, así como capacidad del disco. En Windows existía el famoso chkdsk (checkdisck) y en GNU/Linux está el comando badblocks, que hace algo muy similar, aunque con mayor potencia. badblocks, a parte de recuperar los posibles sectores defectuosos del disco, también permite realizar un escaneo del mismo más exhaustivo, así como realizar un formateo del dispositivo rellenando con valores aleatorios todos los sectores.
Vamos a ver su funcionamiento con unos ejemplos.
  • Escaneo en modo RO
    Este tipo de escaneo hará sólo una lectura de los datos, pero en ningún momento escribirá nada en el disco, por lo que la información no correrá peligro.
    shell> badblocks -svf /dev/sda
    
  • Escaneo en modo RW
    Al contrario que el anterior modo, aquí sí se perderán datos. El escaneo se encargará de leer cada bloque, escribirlo con un valor y volver a leerlo.
    shell> badblocks -nsvf /dev/sda
    
  • Escaneo en modo W
    En este caso, se escribirá en cada sector un patrón y se comprobará que se lee correctamente. Al igual que en el modo RW, toda la información se perderá.
    shell> badblocks -wsvf /dev/sda
    
    En caso de que se añada el flag random, los valores escritos serán completamente aleatorios, lo que conducirá a una destrucción más segura de los datos del disco.
    shell> badblocks -t random -wsvf /dev/sda
    
El significado de las principales opciones que badblocks permite son:
  • - s: Muestra el progreso.
  • - v: Modo detallado.
  • - n: Modo RW no destructivo.
  • - w: Modo escritura (destructivo).
  • - t random: Escribe (o lee) de forma y con valores aleatorio.
  • - f: Repara los sectores dañados.
La entrada Comandos interesantes, badblocks la puedes leer en Puppet Linux.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios