Sygnalizacja diodami na ramkach HDD bez HBA w Linuksie
W tym artykule opisujemy jak spowodować, aby diody na ramkach wybranych HDD, które są podłączone do backplane'a SAS w serwerze mrugały. Wykorzystujemy do tego ledmon/ledctl lub sgpio w Linuksie. W ten sposób może zostać zlokalizowany niesprawny dysk i zapewnione, że z macierzy nie zostanie usunięty sprawny dysk. Ponadto, na przykładzie backplane'a BPN-SAS-825TQ SAS/SATA, prezentujemy właściwe rozmieszczenie zworek na backplanie w trybie SGPIO i poprawne okablowanie połączeń siedband.
Środowisko testowe
Poniżej jest opisane środowisko testowe i kroki przygotowawcze przed właściwą instalacją ledmon/ledctl.
Sprzęt wykorzystany do testów
Sprzęt składał się między innymi z następujących komponentów:
- Serwer 2U Intel single CPU SC825
- Płyta główna Supermicro X9SCM-F
- Backplane BPN-SAS-825TQ SAS/SATA
- Dyski HDD, SSD są podłączone bezpośrednio do płyty głównej, bez sprzętowego kontrolera RAID.
System operacyjny
W przykładzie został wykorzystany system CentOS 7.2, sposób funkcjonowania w systemie Debian lub Ubuntu wygląda analogicznie. Wersja zainstalowanego systemu CentOS może zostać wyświetlona następującą komendą.
# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
Okablowanie
Dla prawidłowego funkcjonowania konieczne jest połączenie obu łączy sideband (SIDEBAND #1 i SIDEBAND #2) znajdujących się na backplanie z łączami T-SGPIO 0/1 na płycie głównej za pośrednictwem kabli CBL-0157L-01.
- T-SGPIO 0 <-- CBL-0157L-01 --> SIDEBAND #1
- T-SGPIO 1 <-- CBL-0157L-01 --> SIDEBAND #2
Rozmieszczenie zworek
Tryb SGPIO wymaga odpowiedniego rozmieszczenia zworek na backplanie BPN-SAS-825TQ. Poniższa tabela przedstawia lokalizację zworek i ich funkcje. Ważna informacja: zworki (jumper) JP38, JP40, JP41 i JP50 są w przeciwieństwie do innych istotnych zworek umiejscowione pionowo.
Jumper | Lokalizacja zworki (piny) | Opis |
---|---|---|
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 | open (bez zworki) | I²C Reset #2 |
JP40 | close (ze zworką) | I²C Reset_SDOUT#1 |
JP41 | close (ze zworką) | I²C Reset_SDOUT#2 |
JP42 | 1-2 | I²C Backplane ID_SDIN#1 |
JP43 | 1-2 | I²C Backplane ID_SDIN#2 |
JP50 | open (bez zworki) | I²C Reset #1 |
Backplane BPN-SAS-825TQ
Na poniższym zdjęciu znajduje się backplane BPN-SAS-825TQ z prawidłowo rozmieszonymi zworkami w trybie SGPIO.
BPN-SAS3-825TQ
Rozmieszczenie zworek w przypadku backplane'u SAS3 BPN-SAS3-825TQ wygląda identycznie, w obu przypadkach wykorzystywany jest ten sam MegaRAC MG9072 SAS/SATA Enclosure Management Controller.[1]
ledmon / ledctl
W poniższej sekcji są opisane oba komponenty ledmon i ledctl, które wchodzą w skład Intel Enclosure LED Utilities. Przedstawiona jest również instalacja w systemie CentOS, jak i ich wspólne komendy. ledmon udostępnia demona, a ledctl funkcjonuje jako aplikacja dla użytkownika.
Instalacja
W dystrybucjach Red-Hat pakiety są instalowane za pośrednictwem managera pakietów yum.
[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
Resolving Dependencies
[...]
Install:
ledmon x86_64 0.79-4.el7 base 56 k
Installing for dependencies:
sg3_utils-libs x86_64 1.37-5.el7 base 63 k
[...]
Installed:
ledmon.x86_64 0:0.79-4.el7
Dependency Installed:
sg3_utils-libs.x86_64 0:1.37-5.el7
Complete!
ledmon
Aplikacja ledmon udostępnia demona dla Intel Enclosure LED Utilities.[2] W ten sposób może być monitorowany status software RAID device (wyłącznie mdraid), jak i pojedynczych urządzeń blokowych (np. /dev/sda). Ta aplikacja posiada najwyższy priorytet dostępu do diod i wykorzystuje SGPIO i protokół SES-2 do zarządzania nimi. Implementuje standard International Blinking Pattern Interpretation (IBPI) specyfikacji SFF-8489 dla SGPIO.[3][4]
Uwaga: Niektóre obudowy, backplane'y nie trzymają się dokładnie specyfikacji SFF-8489 i dlatego w tych produktach może się zdarzyć, że diody nie funkcjonują tak jak jest to opisane w specyfikacji, lub częściowo spełniają wymagania specyfikacji.
Ograniczenie: Według manpage nie może zostać określone, który wolumen macierzy RAID ma być monitorowany, kontrolowane są wszystkie wolumeny.
Konfiguracja
ledmon oferuje kilka opcji konfiguracyjnych, może zostać skonfigurowany interwał sondowania sysfses, ścieżka do pliku konfiguracyjnego i lokalizacji łogów.
[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 jest aplikacją userspace do kontroli diod np. backplane'ów. Do zarządzania diodami za pośrednictwem ledctl konieczne są uprawnienia użytkownika root. Szczegółowe informacje o ledctl i jego parametrach znajdują się w jego manpage.[5]
Konfiguracja
ledctl oferuje różne możliwości konfiguracji i zarządzania sygnalizacji diodami. Wykonanie komendy ledctl -h potwierdza to poprzez wyświetlenie licznych możliwych parametrów.
[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
Zarządzanie diodami przez ledctl
- Mruganie jednej diody na przykładnie napędu sda:
# ledctl locate={ /dev/sda }
# ledctl locate=/dev/sda
- Wyłączenie mrugającej diody:
# ledctl locate_off={ /dev/sda }
# ledctl locate_off=/dev/sda
- Mruganie większej ilości diod:
# ledctl locate={ /dev/sd[a-c] }
# ledctl locate=/dev/sda,/dev/sdb,/dev/sdc
- Wyłączenie mrugających diod:
# ledctl locate_off={ /dev/sd[a-c] }
# ledctl locate_off=/dev/sda,/dev/sdb,/dev/sdc
- Mruganie może również zostać spowodowane w następujący sposób:
# ledctl locate={ /sys/block/sdX }
sgpio jako alternatywa
Jako alternatywne narzędzie dla ledmon/ledctl może posłużyć sgpio, tak zwane Captive Backplane LED Control Utility, które zostało opracowane przez pracownika firmy Intel i funkcjonuje w podobny sposób jak ledctl. Szczegółowe informacje na temat tego narzędzia i jego parametrów znajduje się w jego manpoge.[6]
Instalacja
Instalacja odbywa się również za pośrednictwem yum:
root@centos7 ~]# yum install sgpio
Konfiguracja
sgpio oferuje również rożne opcje, np. za pośrednictwem parametru -d może zostać włączona dioda przy wybranym dysku, lub z parametrem - p dioda na wybranym porcie.
[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!
Zarządzanie diodami z sgpio
- Mruganie pojedynczej diody na przykładzie sda:
# sgpio -d sda -s locate
# sgpio -p 0 -s locate
- Wyłączenie mrugającej diody:
# sgpio -d sda -s off
- Mruganie kilku diod:
# sgpio -d sda,sdb,sdc -s locate
- Wyłączenie mrugających diod:
# sgpio -d sda,sdb,sdc -s off
Odnośniki
- ↑ 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