gratifiant > comp.* > comp.stockage

Eric Belhomme (15/11/2019, 21h58)
Bonjour,

J'ai sauvé de la poubelle un shelf HP D2700. Juste le shelf de disque,
sans controlleur.

J'avais dans l'idée de le connecter en direct-attach sur mon serveur à
l'aide d'une carte LSI SAS2008 (en fait une Dell H200 reflashée avec le
firmware P20 de LSI)

J'ai connecté les 2 ports de la carte SAS sur chacun des 2 contrôlleurs
de la D2700, l'idée étant de faire derrière du multipath afin d'ajouter
un peu de résilience et de pouvoir optimiser la bande passante entre les
deux cannaux 6Gbps...

Mais il se passe manifestement des choses étranges... Voici ce que
m'affiche un lsscsi :

[0:0:0:0] disk HP MM1000FBFVR HPD8 /dev/sdo
[0:0:1:0] disk HP MM1000FBFVR HPD8 /dev/sdp
[0:0:2:0] disk HP MM1000FBFVR HPD8 /dev/sdq
[0:0:3:0] disk HP MM1000FBFVR HPD8 /dev/sdr
[0:0:4:0] disk HP MM1000FBFVR HPD8 /dev/sds
[0:0:5:0] disk HP MM1000FBFVR HPD8 /dev/sdt
[0:0:6:0] disk HP EG0900FCVBL HPD5 /dev/sdu
[0:0:7:0] disk HP EG0900FCVBL HPD5 /dev/sdv
[0:0:8:0] disk HP EG0900FCVBL HPD5 /dev/sdw
[0:0:9:0] disk HP EG0900FCVBL HPD5 /dev/sdx
[0:0:10:0] disk HP EG0900FCVBL HPD5 /dev/sdy
[0:0:11:0] disk HP EG0900FCVBL HPD5 /dev/sdz
[0:0:12:0] disk HP EG0900FCVBL HPD5 /dev/sdaa
[0:0:13:0] disk HP EG0900FBVFQ HPDE /dev/sdab
[0:0:14:0] disk HP EG0900FCVBL HPD3 /dev/sdac
[0:0:15:0] disk HP EG0900FCVBL HPD3 /dev/sdad
[0:0:16:0] disk HP EG0900FCVBL HPD5 /dev/sdae
[0:0:17:0] disk HP EG0900FCVBL HPD5 /dev/sdaf
[0:0:18:0] disk HP EG0900FCVBL HPD5 /dev/sdag
[0:0:19:0] disk HP EG0900FCVBL HPD5 /dev/sdah
[0:0:20:0] disk HP EG0900FCVBL HPD5 /dev/sdai
[0:0:21:0] disk HP EG0900FCVBL HPD5 /dev/sdaj
[0:0:22:0] disk HP EG0900FCVBL HPD5 /dev/sdak
[0:0:23:0] enclosu HP D2700 SAS AJ840A 0148 -
[0:0:24:0] disk HP MM1000FBFVR HPD8 /dev/sdal
[0:0:25:0] disk HP MM1000FBFVR HPD8 /dev/sdam
[0:0:26:0] disk HP MM1000FBFVR HPD8 /dev/sdan
[0:0:27:0] disk HP MM1000FBFVR HPD8 /dev/sdao
[0:0:28:0] disk HP MM1000FBFVR HPD8 /dev/sdap
[0:0:29:0] disk HP MM1000FBFVR HPD8 /dev/sdaq
[0:0:30:0] disk HP EG0900FCVBL HPD5 /dev/sdar
[0:0:31:0] disk HP EG0900FCVBL HPD5 /dev/sdas
[0:0:32:0] disk HP EG0900FCVBL HPD5 /dev/sdat
[0:0:33:0] disk HP EG0900FCVBL HPD5 /dev/sdau
[0:0:34:0] disk HP EG0900FCVBL HPD5 /dev/sdav
[0:0:35:0] disk HP EG0900FCVBL HPD5 /dev/sdaw
[0:0:36:0] disk HP EG0900FCVBL HPD5 /dev/sdax
[0:0:37:0] disk HP EG0900FBVFQ HPDE /dev/sday
[0:0:38:0] disk HP EG0900FCVBL HPD3 /dev/sdaz
[0:0:39:0] disk HP EG0900FCVBL HPD3 /dev/sdba
[0:0:40:0] disk HP EG0900FCVBL HPD5 /dev/sdbb
[0:0:41:0] disk HP EG0900FCVBL HPD5 /dev/sdbc
[0:0:42:0] disk HP EG0900FCVBL HPD5 /dev/sdbd
[0:0:43:0] disk HP EG0900FCVBL HPD5 /dev/sdbe
[0:0:44:0] disk HP EG0900FCVBL HPD5 /dev/sdbf
[0:0:45:0] disk HP EG0900FCVBL HPD5 /dev/sdbg
[0:0:46:0] disk HP EG0900FCVBL HPD5 /dev/sdbh
[0:0:47:0] enclosu HP D2700 SAS AJ840A 0148 -

On voit que chaque disque est effectivement énuméré deux fois, en
revanche ils se retrouve tous sur la même "target" alors que je
m'attendais à avoir une Target par canal SAS. Normal ?

Au cul de la D2700, chaque carte controlleur a un double digit, je
suppose qu'ils indiquent justement le numéro de Target de chaque
controlleur, or là, les deux indiquent "01". Et je ne vois aucun bouton,
ni aucun cavalier qui permette de modifier ça sur les cartes controlleur.
Il y a bien ce qui ressemble à un port ethernet, mais il s'agit du port
"MGF" qui est un port de diagnostic qui n'a rien à voir avec ethernet...

Je ne suis pas un expert Sto, mais j'ai cru comprendre que la
configuration du shelf se fait directement via un protocole de
signalisation sur le bus SAS. La question est donc la suivante :

Comment, lorsqu'on ne dispose pas des outils prévus par le constructeur,
peut-on configurer les contrôleurs d'un shelf SAS ? avec quels outils ?

Je dois probablement mal chercher, mais je n'ai *rien* trouvé qui traite
du sujet. Pourtant, si protocole il y a, je suis bien certain qu'il est
implémenté sous Linux, et qu'il y a des outils qui le supportent !
Eric Belhomme (17/11/2019, 16h15)
On Fri, 15 Nov 2019 19:58:37 +0000, Eric Belhomme wrote:

> Il y a bien ce qui ressemble à un port ethernet, mais il s'agit du port
> "MGF" qui est un port de diagnostic qui n'a rien à voir avec ethernet... Bon je me réponds à moi-même... J'ai un peu avancé dans mes recherches.


Je suis tombé sur cet article:


qui explique comment se connecter sur le port série d'une tête MSA. J'ai
donc démonté une des 2 cartes controlleur, et effectivement sur le PCB,
on voit que ce fameux port RJ45Z est connecté sur un chip Cypress
CY8C21334, un SoC généraliste pourvu de multiples GPIOs, bus I2C... et
UART, ce qui corroborre l'hypothèse du port série !

Je me bricole donc un cable adaptaeur série, et m'y connecte en console.
à 115200 bauds, ça discute !

==NEW bootloader, rev match

Shelf identification.000007ff.01.....GT.done.

===================================
Product Revision: 0148
Build Time: Nov 27 2012 13:13:43
Link Rate: 06Gbit (Image: 06g)
Encl Identifier: 50014380-23526100
Module Address: 50014380-2352613c
Shelf ID: 01 Port: 0b Flash: 1
===================================

01b6:

HMP FW matches
0
0
0
0
0
2
0
7
== 0027
LDC1 FW matches 1.02 == 1.02
LDC2 FW matches 1.02 == 1.02
7SEG FW matches 0.10 == 0.10

All Codeloads complete

Event logs loaded.
Time loaded: 01-Jan-2000 00:00:06

La CLI est vraiment minimaliste. Pas d'aide en ligne, par de completion,
nada... Soit tu sais ce que tu fais, soit tu passes ton chemin ! Bien que
je ne sache pas trop ce que je fais, je suis têtu. Il n'y a pas d'aide ni
de doc de cette CLI ? qu'à cela ne tienne, je vais partir à la pêche aux
infos en regardant le firmware du shelf (que j'avais déjà téléchargé pour
mise à jour). un coup de "strings" sur ce fichier et je découvre pas mal
de commandes:

menu Menu of commands
prompt Prompt on/off
dbs Database Read: dbs <page>
reset Reset MIPS :
info Display Shelf Info.
stat Display Shelf Stats.
logRead Read Event Log.
hmpRead Read from Health Monitor PIC.
hmpDisp Dsply local data from HM PIC
eeRead Read from EE.
wellWr Write to wellness log.
wellRd Read from wellness log.
sidSet Set Shelf ID 0-99.
pfSet Set Print Flags.
fanTach Toggle Tach Display
tempDisp Toggle Temperature Display
prtErrCnt Read Port Error Counts.
logClear Clear logs.
drvBypass Bypass Drives.
drvSpin Spin Slots
pwrOn Power On Slots
pwrOff Power Off Slots
vhpIn Virtual Hot Plug In
vhpOut Virtual Hot Plug Out
phyOn Turn on external phy
phyOff Turn off external phy
ssnSet Set Salable SN, ascii chars
spnSet Set Salable PN, ascii chars
fanSet Set fan speed
hmpWrite Write to Health Monitor PIC
tstMode ELMO test Mode
eeWrite Write to EE.
masDbg Show Masterhip Parameters
prbsOn Start PRBS tests
prbsOff Stop PRBS tests
prbsChk Check PRBS results
mtxTable Print mutex table
logDump Log Dump: logdump
memDump Memory Dump: memdump <adr> <# wds> <clmns>
dwld Download: dwld -fl|-se <offset> <hexdata0>...
rd_32 32-bit Read : rd_32 <address> <# of 32 bit words>
wr_32 32-bit Write : wr_32 <address> <data> [<address>
<data>, ...]
rd_16 16-bit Read : rd_16 <address> <# of 16 bit words>
wr_16 16-bit Write : wr_16 <address> <data> [<address>
<data>, ...]
rd_8 8-bit Read : rd_8 <address> <# of 8 bit words>
wr_8 8-bit Write : wr_8 <address> <data> [<address>
<data>, ...]
qinfo Query flash partition informations,internal debug use only
rd_ecbi ECBI read: rd_ecbi <address> [<address>, ...]
wr_ecbi ECBI write: wr_ecbi <address> <data> [<address>
<data>, ...]
ind_sel Indirect select: ind_sel <table> <data>
ind_ecbi_rd Indirect ECBI read: ind_ecbi_rd <address> [<address>, ...]
rd_see Read SEEPROM : rd_see <offset> <num bytes>

Ces commandes sont clairement très bas niveau, on manipule directement du
bit, donc autant dire que sans la doc qui va avec, c'est excessivement
dangereux...
J'ai tout de même tenté la commande "sidSet", qui m'a effectivement
changé l'id affiché à l'arrière... mais sur les deux controlleurs en même
temps
Discussions similaires