Есть ли способ программно управлять индикаторами активности жесткого диска в Linux?

Как и в основном вопросе, есть ли способ сделать это? (Кроме того, что вызывает высокую нагрузку ввода-вывода) Может быть, какое-то средство глубоко в ядре, которое контролирует это?

Я хочу написать небольшой скрипт для выявления неисправных дисков в моем массиве программных рейдов. (мигание индикатора активности по определенному повторяющемуся шаблону и т. д.)

Я прочитал обо всех хороших идеях здесь: https://serverfault.com/questions/64239/physically-identify-the-failed-hard-drive, к сожалению, я не пометил ни один из своих дисков, и все они зажаты вместе, поэтому просмотр серийных номеров невозможен.


person rnavarro    schedule 25.10.2010    source источник
comment
Записать на файловый диск? (Я предполагаю, что свет питает физическое напряжение, но я ничего не знаю в этой области)   -  person new123456    schedule 25.10.2010
comment
Мне просто интересно - у вас уже есть какие-то успехи? У меня такая же проблема, и было бы неплохо просто мигать отдельными светодиодами активности...   -  person ToVine    schedule 20.05.2015


Ответы (2)


Индикаторы активности обычно жестко подключены к дисковому контроллеру материнской платы. В ОС нет средств для прямого управления ими.

Однако, если вы знаете, какой диск является проблемным в программном обеспечении, и он не смонтирован (просто на всякий случай), вы, вероятно, могли бы dd либо к нему, либо от него (я полагаю, что не весь диск неисправен?) мигать светом. Например:

#!/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

Это будет читать 100 МБ с диска, игнорируя ошибки чтения, спать две секунды, а затем делать это снова. Передайте путь к жесткому диску, например /dev/sda.

Однако вам нужно будет найти способ убить скрипт, прежде чем вставлять новый диск. В противном случае у вас будет очень плохая производительность, и это может вызвать другие проблемы.

person Jonathan    schedule 25.10.2010
comment
Как я уже говорил выше, цель этого состояла в том, чтобы идентифицировать неисправные диски в массиве отсеков для горячей замены, используя индикатор активности в качестве идентификатора. - person rnavarro; 26.10.2010
comment
@ Джонатан, спасибо за ответ. Я написал сценарий на основе вашего ответа. см. gist.github.com/benok/c117badbfb6af744578d48e2ab1d4d4f - person benok; 24.10.2018

Вы могли бы в своей программе вызвать его

baddrive (Checkdrivestatus)

и ограничьте его до 10 циклов.

Таким образом, вы можете запустить flashbaddrive, он, в свою очередь, проверит состояние диска и передаст его в baddrive, чтобы прошить неисправный диск в течение 10 секунд или около того и отключиться.

Я бы предположил, что вам придется посмотреть на mdadm, чтобы увидеть, на что похож интерфейс программно, но это сработало бы из командной строки.

На жестких дисках они обычно работают от интерфейса sata/scsi/ide или от разъема на плате контроллера.

Вы знаете, где рождается свет? Вы можете выполнить поиск информации о модели, запросить диск, о котором идет речь, непосредственно вкл и выкл. Если привод часто выходит из строя, вы все равно можете снять его с печатной платы.

другая стратегия заключается в последовательном доступе к дискам /dev/sda, sdb, sdc, sde, sdf и т. д., и вы сможете увидеть, горит ли индикатор или не загорается. полностью мертвый диск может отключить свет в зависимости от того, как контроллер настроен на доступ к нему.

person CoRe    schedule 15.04.2013