LEDs am Festplatteneinschub ohne HBA unter Linux zum Blinken bringen

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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:

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.

Jumpereinstellungen für den SGPIO-Modus

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

Foto Thomas Niedermeier.jpg

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.

Icon-Twitter.png 

Das könnte Sie auch interessieren

Festplatteneinschub an HBA blinken lassen unter Linux
Linux Multi-Queue Block IO Queueing Mechanism (blk-mq)