2010-10-25 38 views
2

Tout comme dans la question principale, y a-t-il un moyen de le faire? (Autre que d'induire une charge élevée de io) Peut-être une installation au fond du noyau qui contrôle cela?Existe-t-il un moyen de contrôler par programmation les voyants d'activité du disque dur sur Linux?

Je cherche à écrire un petit script pour identifier les disques défectueux dans ma matrice RAID. (Clignotant la lumière d'activité dans un certain motif répétitif, etc.)

J'ai lu toutes les bonnes idées ici: https://serverfault.com/questions/64239/physically-identify-the-failed-hard-drive Malheureusement, je n'ai marqué aucun de mes disques et ils sont tous pris en sandwich, donc en regardant les numéros de série est dehors.

+0

Écrire dans un fichier sur un disque? (Je suppose que la tension physique alimente la lumière, mais je ne sais rien dans ce domaine) – new123456

+0

Je me demandais juste - avez-vous déjà eu du succès? J'ai le même problème moi-même, et il serait gentil de pouvoir simplement faire clignoter les voyants d'activité individuels ... – ToVine

Répondre

2

Les voyants d'activité sont généralement câblés sur le contrôleur de disque de la carte mère. Il n'y a pas de fonction OS pour les contrôler directement. Cependant, si vous savez quel lecteur est problématique dans le logiciel, et qu'il n'est pas monté (pour être sûr), vous pouvez probablement dd soit vers ou à partir de celui-ci (je ne m'attends pas à ce que tout le disque soit mauvais?) la lumière. Par exemple:

#!/bin/bash 

badDrive=$1 
while true ; do 
    dd -if "$badDrive" -of "/dev/null" -bs 512 -count 204800 conv=noerror >/dev/null 2>&1 
    sleep 2 
done 

Cela 100MiB lire à partir du lecteur ignorant des erreurs de lecture, sommeil deux secondes, puis le faire à nouveau. Transmettez le chemin du périphérique de disque dur, par exemple /dev/sda.

Cependant, vous devrez trouver un moyen de supprimer le script avant d'insérer un nouveau lecteur. Sinon, vous aurez de très mauvaises performances et cela pourrait causer d'autres problèmes.

+0

Comme je l'ai dit plus haut, le but était d'identifier les disques défectueux dans un réseau de baies hot swap en utilisant le activité menée comme un identifiant. – rnavarro

1

Vous pouvez, dans votre programme, appelez son

baddrive (Checkdrivestatus)

et limiter à 10 cycles. De cette façon, vous pouvez exécuter flashbaddrive, à son tour, checkdrivestatus et le passer à baddrive pour flasher le disque défectueux pendant 10 secondes environ et découper.

J'imagine que vous devriez regarder mdadm pour voir à quoi ressemble l'interface par programmation, mais cela ferait l'affaire à partir de la ligne de commande.

Sur les caddies de disque dur, ils sont généralement sortis de l'interface sata/scsi/ide ou d'une prise de la carte contrôleur.

Savez-vous d'où provient la lumière? Vous pouvez faire une recherche d'informations sur le modèle, interroger le disque en question directement et désactiver. Si le disque a souvent échoué, vous pouvez toujours le retirer de la carte de circuit imprimé.

une autre stratégie est d'accéder aux disques séquentiellement/dev/sda, sdb, sdc, sde, sdf, etc ... et vous pouvez voir si la lumière colle, ou si elle ne s'allume pas. un lecteur totalement mort peut tuer la lumière en fonction de la façon dont le contrôleur est configuré pour y accéder.