SES2 LED控制
SES2 LED控制
1、磁盘LED控制的背景及需求
磁盘阵列中每个磁盘都对应多个LED灯,常用来指示磁盘的状态和行为。 比如当磁盘出现故障需要定位、磁盘缺失、正常在线或者正在读写等情况下,可以通过SAS Enclosre Service来控制enclosure上每个drive对应的LED灯 。初次接触SES2的同学可能觉得它比较抽象,可以把它和BMC类比,整个enclosure也是由嵌入式CPU(比如ARM)及外围电路组成的一个独立系统,可以完成对每个drive LED、内部风扇、电源的设置、温度的监测等功能。
2、磁盘LED控制的原理和过程
为了统一SAS expander和enclosure的设计,业内提出了统一的控制接口标准,包括GPIO和I2C两种。当主机需要读取或者控制enclosure内部器件的状态时,host CPU把命令发送到作为initiator的SAS expander,然后SAS expander通过统一的接口规范向作为target的enclosure内部的控制器传送控制命令,enclosure执行最终的硬件操作。
上面是从数据链路层看到的数据流,对上层的应用层而言,其下所有的协议和约定都是透明的,用户只需要了解具体SAS expander支持的LED类型和数量、硬件实现的LED用途和数量,在linux系统下就可以直接调用sg_ses命令即可。
下面以我最近做的针对某款服务器上drive bay上的LED控制的需求进行举例说明。实际工作中我需要控制任意drive的绿灯, 这里涉及到磁盘定位和 LED控制两个问题:
(1)如何实现磁盘定位
在 类似ipmitool的sg_ses命令中加—index参数,可以指定控制某个特定的盘。比如—index=2,就是控制从 编号为 0开始的 index=2的盘,客户自己可以通过上面的选项对应点亮的drive的位置来确定index和磁盘槽位的对应关系,进而实现磁盘定位。
(2)如何实现控制 LED正确报警
根据 笔者使用的LSI SASxx40 系列 expander手册、SFF-8485等规范以及硬件手册,可以看到实际使用的drive bay上有两个LED,红色的一个是用作状态(status)的,绿色的一个是用来指示活动(activity)。其中activity LED默认的工作模式是只要在线就是绿色常亮,只要有读写就是绿色闪烁。我们可以遵循当前对activity LED的控制,只控制status LED。通过sg_ses命令帮助文档可以看到,它支持ident、locate、fault、devoff、insert、remove等操作。需要注意的是上面不同的操作可能共享相同的对LED的控制方式,比如在笔者的这款机器上,ident/locate都会让红色的status LED闪烁,而falt/missing参数只会让等点红。为此,用户可能需要逐一尝试所有的操作,归纳总结出所有可能的status LED状态,然后结合上层业务需要选用合适的控制方式。比如笔者的这套系统,就可按如下方案 使用 Drive bays 上的 LED灯:
LED Type |
Status – meanning Pairs |
Need to be controlled ? |
Green LED (Activity LED) |
Blink - read/write ongoing No Green – no read/write ongoing |
No |
Red LED (Status LED) |
Blink – locate/ident Red - missing Red - Fault Blink at other frequency - TBD |
Yes |
下面是相关的参考命令:
lsscsi -g #确定哪个sg是expander
sg_ses -ee
sg_ses --index=2 --set=ident /dev/sg17
sg_ses --index=2 --clear=active /dev/sg17
sg_ses --index=2 --set=2:1 /dev/sg17
sg_ses --index=2 --clear=2:1 /dev/sg17
sg_ses --index=0 --clear=2:1 /dev/sg17
sg_ses --index=9 --clear=active /dev/sg17
sg_ses --index=9 --set=fault /dev/sg17
sg_ses --index=8 --set=locate /dev/sg17
sg_ses --index=9 --set=missing /dev/sg17
sg_ses --index=7 --set=fault /dev/sg17
sg_ses --index=7 --set=active /dev/sg17
sg_ses --index=6 --set=devoff /dev/sg17
sg_ses --index=9 --set=insert /dev/sg17
sg_ses --index=9 --set=insert /dev/sg17
sg_ses --index=5 --set=remove /dev/sg17
sg_ses --index=4 --set=dnr /dev/sg17
sg_ses --index=3 --set=ident /dev/sg17
总而言之,对SES2的调用,需要结合具体sas expander的规格、板卡硬件设计、SFF-8485等规范和业务所有可能的user case,利用现有的sg_ses/lsscsi等工具,进行系统全面的考量和设计,才能简单有效地满足客户和业务需求。
3、参考文档和链接
https://en.wikipedia.org/wiki/SES-2_Enclosure_Management
https://en.wikipedia.org/wiki/SGPIO
http://www.docin.com/p-81485148.html
http://sg.danny.cz/sg/sg_ses.html
http://www.alldatasheet.com/datasheet-pdf/pdf/303320/DDK/SAS-RA29-S1AA-FG.html
本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1839036 ,如需转载请自行联系原作者
SES2 LED控制相关推荐
- APA102C全彩色LED控制IC
简 介: 测试了APA102C的工作机制.利用MM32F3277 MicroPython中的SPI控制APA102C工作. 关键词: APA102C,MM32F3277,SPI #mermaid-sv ...
- 极域电子教室软件怎么脱离控制_新疆灵感科技技术汇总~LED控制卡常见软、硬件问题...
许多技术员在操作LED电子显示屏的时候,经常显示屏的软件或者硬软出现异常,那是怎么回事呢?一.软件应用1.为什么显示的时候某显示项只闪一下就消失了? 在预览脚本或在屏幕上显示脚本的时候,发现某项一闪而 ...
- am335x linux修改ip,Linux 修改代码以支持LED 控制(board-am335xevm)
Linux 修改代码以支持LED 控制(board-am335xevm) Note: All the codes are changed at the file board-am335xevm.c d ...
- 【单片机应用】项目一 发光二极管LED控制
发光二极管LED控制 一.LED介绍 二.LED的工作原理 三.小项目:点亮一个LED 点亮一个发光二极管 认识PROTEUS 用PROTEUS设计第一个LED控制电路 工作过程 LED点亮程序 点亮 ...
- Ardunio开发实例-红外遥控器解码与LED控制
红外遥控器解码与LED控制 红外遥控是一种无线.非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系 ...
- 通用GPIO驱动和apk(含jni),支持所有GPIO,支持LED控制,支持友善6410/210开发板,支持安卓2.3/4.0,内核2.6/3.0
转自:http://www.arm9home.net/read.php?tid-27259.html GPIO Driver and apk(include jni) support All GPIO ...
- ESP32-CAM GPIO LED 控制 - uPython
ESP32-CAM GPIO LED 控制 - uPython ESP32-CAM 内建有两个发光二极管(light-emitting diode, 以下简称 LED)外设,分别是接在通用型之输入输出 ...
- 志良电子关于LED控制卡显示内容上下行有虚点的问题研究(一)
问题描述: 在调试一块LED控制板时发现在显示的内容上下行,根据显示内容应该是熄灭的LED灯却亮着,亮度比正常显示的LED灯低很多. 调试过程: LED显示相关函数如下,LED屏为单色屏,1/16扫描 ...
- 《按键消抖与LED控制》实验的个人思考与总结
2019/01/08,第一个判断是否有按键按下的操作好像有问题,有空在修改! 红色为修改部分: 问题描述: 当三个独立按键的某一个被按下后,相应的LED被点亮:再次按下后,LED熄灭,按键控制LED亮 ...
最新文章
- java优先队列的入队函数_Java内置的优先队列PriorityQueue
- 企业级应用WebLogic11g集群配置与项目实施_WebLogic部署培训教程
- 几个常见的Python面试题分享,帮你顺利求职
- 最近很火的人生重开模拟器HTML网页源码
- node.js 使用domain模块捕获异步回调中的异常
- EL表达式及其定义和使用 转
- 名校大厂 AI 高手云集,芒果 TV 音视频算法大赛硕果累累
- 网关屏蔽mac地址,linux下修改mac地址方法
- 快速计算代码行小工具
- 【建模算法】蒙特卡罗模拟法(Python实现)
- android 横向长图,Android实现截超长图
- 简单matlab仿真实例教程,simulink仿真教程
- 通过雷达图的面积进行总体对比分析是不可靠的!
- 磁盘被写保护怎样去掉
- A problem occurred configuring root project ‘xxx‘.
- scala中sorted,sortby,sortwith的用法(转)
- 【JavaScript 笔记】基础内容
- 【python】爬取正在上映的豆瓣电影信息(etree、xpath)
- 获得当前窗口的hwnd的方法整理
- 多核处理器_一台手机的核心!处理器的top5你知道吗?
热门文章
- ECharts 入门真的很简单
- 嵌入式相关的硬件平台
- Linux软件安装的几种方法 (一)—— apt-get
- 字符串的存储方式以及静态存储区域、栈、堆
- uefi linux开发环境,开发者为 Linux 添加了一系列 RISC-V UEFI 支持补丁
- php 解析数组,如何用PHP解析array数组
- c 语言中的菱形继承,C++中的菱形继承深入分析
- mathematica 基础及其在数学建模中的应用_Mathematica 在高考数学与高等数学等学习中的简单应用与思考...
- 广州计算机专业王健,王健 - 教师简历 CV- 武汉大学计算机学院
- 手机java做贪吃蛇_如何用Java写一个贪吃蛇游戏