LEDs am Festplatteneinschub ohne HBA unter Linux zum Blinken bringen
Dieser Artikel beschreibt, wie man an SAS Backplanes angeschlossene Festplatteneinschübe in einem Server unter Linux mittels ledmon/ledctl bzw. sgpio zum Blinken bringen kann. Dadurch können zum Beispiel defekte Festplatten lokalisiert werden und es kann sichergestellt werden, dass keine funktionierende Festplatte aus einem Software RAID entfernt wird. Ebenso wird gezeigt, wie man am Beispiel einer BPN-SAS-825TQ SAS/SATA Backplane die Jumper für den SGPIO-Modus korrekt setzt und dessen Sideband-Konnektoren korrekt verkabelt.
Testumgebung
Nachfolgender Abschnitt beschreibt die verwendete Testumgebung auf und zeigt die vorbereitenden Schritte vor der eigentlichen Installation von ledmon/ledctl.
Testhardware
Die Testhardware besteht unter anderem aus den folgenden Komponenten:
- 2HE Intel Single-CPU SC825 Server
- Supermicro X9SCM-F Mainboard
- BPN-SAS-825TQ SAS/SATA Backplane
- Die Festplatten bzw. SSDs sind hier direkt am Mainboard angeschlossen, d.h. ohne Hardware RAID Controller.
Testbetriebssystem
In diesem Beispiel wird CentOS 7.2 verwendet, die Funktionsweise ist unter Debian bzw. Ubuntu analog. Die installierte CentOS-Version kann zum Beispiel mit dem nachfolgenden Befehl angezeigt werden.
# cat /etc/centos-release CentOS Linux release 7.2.1511 (Core)
Verkabelung
Für das erfolgreiche Anblinken ist eine Verkabelung der beiden Sideband-Konnektoren (SIDEBAND #1 und SIDEBAND #2) der Backplane mit den beiden T-SGPIO 0/1 Konnektoren auf dem Mainboard mit zwei achtpoligen Datenkabeln (CBL-0157L-01) erforderlich.
- T-SGPIO 0 <-- CBL-0157L-01 --> SIDEBAND #1
- T-SGPIO 1 <-- CBL-0157L-01 --> SIDEBAND #2
Jumpereinstellungen
Die Jumper des BPN-SAS-825TQ Backplanes müssen für den SGPIO-Modus ggf. angepasst werden. Nachfolgende Tabelle zeigt die korrekten Jumperstellungen. Wichtiger Hinweis: Die Jumper JP38, JP40, JP41 und JP50 sind im Gegensatz zu den anderen relevanten Jumper vertikal angeordnet.
Jumper | Jumper Einstellung | Hinweise |
---|---|---|
JP33 | 1-2 | Controller ID #1 |
JP34 | 1-2 | Backplane ID #1 1-2: ID#0 |
JP36 | 1-2 | Controller ID #2 |
JP37 | 1-2 | Backplane ID #2 1-2: ID#0 |
JP38 | Offen (Jumper entfernt) | I²C Reset #2 |
JP40 | Geschlossen (Jumper gesetzt) | I²C Reset_SDOUT#1 |
JP41 | Geschlossen (Jumper gesetzt) | I²C Reset_SDOUT#2 |
JP42 | 1-2 | I²C Backplane ID_SDIN#1 |
JP43 | 1-2 | I²C Backplane ID_SDIN#2 |
JP50 | Offen (Jumper entfernt) | I²C Reset #1 |
Konfiguriertes BPN-SAS-825TQ Backplane
Nachfolgendes Bild zeigt ein bereits korrekt für den SGPIO-Modus gejumpertes BPN-SAS-825TQ Backplane.
BPN-SAS3-825TQ
Die Jumperkonfiguration der SAS3-fähigen Backplane BPN-SAS3-825TQ ist identisch vorzunehmen, diese beiden Backplanes verwenden ebenso den identischen MegaRAC MG9072 SAS/SATA Enclosure Management Controller.[1]
ledmon / ledctl
Der nachfolgende Abschnitt erläutert die beiden Bestandteile ledmon und ledctl der Intel Enclosure LED Utilities, zeigt die Installation unter CentOS, sowie deren gängigen Befehle. ledmon stellt hierbei den Daemon dar und ledctl fungiert als Applikation für den User.
Installation
Bei Red-Hat-Distributionen werden Pakete mittels des Paketmanagers yum installiert.
[root@centos7 ~]# yum install ledctl Geladene Plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.inode.at * extras: mirror.inode.at * updates: mirror.inode.at Abhängigkeiten werden aufgelöst [...] Installieren: ledmon x86_64 0.79-4.el7 base 56 k Als Abhängigkeiten installiert: sg3_utils-libs x86_64 1.37-5.el7 base 63 k [...] Installiert: ledmon.x86_64 0:0.79-4.el7 Abhängigkeit installiert: sg3_utils-libs.x86_64 0:1.37-5.el7 Komplett!
ledmon
Die ledmon Applikation stellt den Daemon-Prozess der Intel Enclosure LED Utilities zur Verfügung.[2] Damit kann der Status von Software-RAID Devices (ausschließlich mdraid), sowie einzelne Block Devices (z.B. /dev/sda) überwacht werden. Diese Applikation genießt die höchste Priorität beim Zugriff auf die LEDs und sie verwendet SGPIO und das SES-2 Protokoll zur Steuerung der LEDs. Es implementiert das International Blinking Pattern Interpretation (IBPI) Schema der SFF-8489 Spezifikation für SGPIO.[3][4]
Hinweis: Einige Gehäuse bzw. Backplanes halten sich nicht exakt an die SFF-8489 Spezifikation, deshalb kann es bei diesen Produkten sein, dass sie nicht korrekt nach der angeführten Spezifikation blinken oder nur einen Teil des Schemas unterstützen.
Einschränkung: Laut Manpage kann nicht festgelegt werden, welche RAID-Volumen überwacht werden, es werden alle RAID Devices überwacht.
Konfiguration
ledmon bietet einige Konfigurationsmöglichkeiten, es kann das Abfrageintervall von sysfs gesetzt, der Konfigurationspfad und der Logpfad angepasst werden.
[root@centos7 ~]# ledmon -h Intel(R) Enclosure LED Monitor Service 0.79 Copyright (C) 2009-2013 Intel Corporation. Usage: ledmon [OPTIONS] Mandatory arguments for long options are mandatory for short options, too. --interval=VALUE Set time interval to VALUE seconds. The smallest interval is 5 seconds. --config=PATH, -c PATH Use alternate configuration file (not yet implemented). --log=PATH Use local log file instead /var/log/ledmon.log global file. --help Displays this help text. --version Displays version and license information. Refer to ledmon(8) man page for more detailed description. Bugs should be reported at: http://sourceforge.net/p/ledmon/bugs
ledctl
ledctl ist die Userspace Applikation, um die LEDs z.B. eines Backplanes zu steuern. Für die Steuerung der LEDs mittels ledctl sind root-Rechte erforderlich. Weitere Informationen und Parameter zu ledctl finden Sie in den Manpages.[5]
Konfiguration
ledctl bietet vielfältige Möglichkeiten zur Konfiguration und um die Devices anzublinken. Der Aufruf von ledctl -h bestätigt dies mit einer umfangreichen Ausgabe möglicher Parameter.
[root@centos7 ~]# ledctl -h Intel(R) Enclosure LED Control Application 0.79 Copyright (C) 2009-2013 Intel Corporation. Usage: ledctl [OPTIONS] pattern=list_of_devices ... Mandatory arguments for long options are mandatory for short options, too. --log=PATH, -l PATH Use local log file instead /var/log/ledctl.log global file. --config=PATH, -c PATH Use alternate configuration file (not yet implemented). --help, -h Displays this help text. --version, -v Displays version and license information. Patterns: Common patterns are: locate, locate_off, normal, off, degraded, rebuild, rebuild_p, failed_array, hotspare, pfa, failure, disk_failed SES-2 only patterns: ses_abort, ses_rebuild, ses_ifa, ses_ica, ses_cons_check, ses_hotspare, ses_rsvd_dev, ses_ok, ses_ident, ses_rm, ses_insert, ses_missing, ses_dnr, ses_active, ses_enbale_bb, ses_enable_ba, ses_devoff, ses_fault Automatic translation form IBPI into SES-2: locate=ses_ident, locate_off=~ses_ident, normal=ses_ok, off=ses_ok, degraded=ses_ica, rebuild=ses_rebuild rebuild_p=ses_rebuild, failed_array=ses_ifa, hotspare=ses_hotspare pfa=ses_rsvd_dev, failure=ses_fault, disk_failed=ses_fault Refer to ledctl(8) man page for more detailed description. Bugs should be reported at: http://sourceforge.net/p/ledmon/bugs
Steuerung der LEDs mittels ledctl
- Anblinken einer einzigen LED am Beispiel von sda:
# ledctl locate={ /dev/sda }
# ledctl locate=/dev/sda
- Deaktivieren der blinkenden LED:
# ledctl locate_off={ /dev/sda }
# ledctl locate_off=/dev/sda
- Anblinken mehrerer LEDs:
# ledctl locate={ /dev/sd[a-c] }
# ledctl locate=/dev/sda,/dev/sdb,/dev/sdc
- Deaktivieren der blinkenden LEDs:
# ledctl locate_off={ /dev/sd[a-c] }
# ledctl locate_off=/dev/sda,/dev/sdb,/dev/sdc
- Das Anblinken funktioniert alternativ ebenso mit:
# ledctl locate={ /sys/block/sdX }
sgpio als Alternative
Als Alternativ-Tool zu ledmon/ledctl bietet sich sgpio, das sogenannte Captive Backplane LED Control Utility an. Es wurde von einem Intel-Mitarbeiter entwickelt und funktioniert auf ähnliche Art und Weise wie ledctl. Weitere Informationen und Parameter finden Sie in den Manpages: [6]
Installation
Die Installation erfolgt ebenso mittels yum:
root@centos7 ~]# yum install sgpio
Konfiguration
sgpio bietet ebenso einige Parameter, hier kann entweder mittels -d das Device oder mit -p der Port angeblinkt werden.
[root@centos7 ~]# sgpio -h SGPIO tool for intelligent hard disk drive backplanes Usage: sgpio [[-d|--disk] <sda,sdb,sdc,etc...> | [-p|--port] <0,1,2,etc...>] [-s|--status] <fault|locate|rebuild|off> [-f|--freq] <1,2,3,etc...> Error: State of LED must be specified!
Steuerung der LEDs mittels sgpio
- Anblinken einer einzigen LED am Beispiel von sda:
# sgpio -d sda -s locate
# sgpio -p 0 -s locate
- Deaktivieren der blinkenden LED:
# sgpio -d sda -s off
- Anblinken mehrerer LEDs:
# sgpio -d sda,sdb,sdc -s locate
- Deaktivieren der blinkenden LEDs:
# sgpio -d sda,sdb,sdc -s off
Einzelnachweise
- ↑ MegaRAC® MG9072 SAS/SATA Enclosure Management Controller (ami.com)
- ↑ ledmon(8) - Linux man page (linux.die.net)
- ↑ International Blinking Pattern Interpretation (en.wikipedia.org)
- ↑ SFF-8489 Specification revision 0.4 (ftp.seagate.com)
- ↑ ledctl(8) - Linux man page (linux.die.net)
- ↑ sgpio(1) - Linux man page (linux.die.net)
Autor: Thomas Niedermeier Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates. |