solaris中fibre channel protocol 驱动的问题以及调试
来源:互联网 发布:网络教育大学生认证 编辑:程序博客网 时间:2024/06/07 00:24
Solaris中的光纤通道驱动结构很复杂,对于fc设备而言,所有的target都被抽象为一个光纤的HBA,fcp/fctl/fp/scsi_vhci等上层伪驱动来封装。
Solaris的fp性能非常好,基本可以达到线速。但是现在发现,在使用一般RAID的时候没有任何问题。但是使用XYRATEX的SBOD时,系统插入光纤盘也非常正常,但一旦插入SATA盘就会出现无法读取任何磁盘信息的问题,当然也没有办法操作读写。
这个问题比较严重,开始我认为是Solaris qlc驱动的问题,因为加载qlogic的 qla驱动,就不在存在这个问题。所以可以用qla作为一个权宜的方法。单问题在于,qla不支持MPIO(或许是配置有误,按qlogic的官方说法,应该是支持的),所有的hba的信息都无法通过fcinfo的取得,性能也存在问题。所以这个问题一定得解决。
后来我发现,这可能并非qlc驱动的问题。因为disk实际上是加载到fp驱动设备树下,而qla却加载到sd设备树下,不是一条路径。所以有可能是fcp/fp的问题。
经过焦头烂额的一周的调试,终于发现确实是fcp的问题,由于此问题涉及fp协议,所以还参考了t11的fcp3r04文档(Fibre Channel Protocol for SCSI, Third Version),值得一提的是t11比较恶心,下载文档非得是他的会员才行。不然不给下。
这个问题实际上是fcp中在 report lun时有一个任务属性标记填错导致的,但是为什么FC磁盘不错误而SATA错误可能推测与TRAY的FC-SATA/SAS的emulex的桥片有关,具体原因不明。
现在,经过测试,性能如下:
SATA FC
write 76.6 109.5
read 91.8 85.9
单位为MB/s,性能非常好。
经过调试,得到经验如下:
1.一定要抓住问题实质,如,调试中我开始认为驱动错误检查太严格导致report lun包不能上报,实际上不是,包本身就是错误的,应该检查发方向的设置,而非收方向的上报。
2.dtrace是个好工具,(如何在boot时执行脚本Dtrace -AFs your_script,After booting type: dtrace -a > log)。
3.一定要熟悉协议,t10/t11组织的各种协议需要找时间好好看看。
- solaris中fibre channel protocol 驱动的问题以及调试
- Fibre channel
- Fibre Channel zoning
- 初探FC:Fibre Channel
- Fibre Channel introduction
- 光纤通道(FC: Fibre Channel)
- Fibre Channel光纤通道详解
- SATA ,SCSI ,Fibre Channel, SAN ,VERITAS
- targetcli搭建Fibre Channel(FC) target
- Fibre Channel光纤通道系统基础(一)
- Fibre Channel光纤通道系统基础(二)
- Fibre Channel光纤通道系统基础(三)
- 在vs2005中遇到的调试问题以及解决办法
- solaris下的调试技术
- # FLume 自定义Channel使用中遇到的问题(1)
- OGR注册OCI Spatial驱动以及gdal源码调试问题
- Swift中protocol的三种实现以及mutating关键词
- 解决solaris系统中不能tar大文件的问题
- .net实例:使用C++调用C#的DLL
- JAVA2核心技术学习(一)
- 循环复用DNS实现多服务器的负载均衡
- 挂断电话的代码片段
- 解決 ASP.NET 中 System.OutOfMemoryException 的問題
- solaris中fibre channel protocol 驱动的问题以及调试
- 服装面辅料编码方案
- 屏幕坐标向OpenGL坐标的转换(完整版)(转载)
- JavaScript正则表达式
- 将datatable表的bool字段显示为想要的汉字 AND希望一行只显示定长字符,多出来的部分以省略号代替
- 一个比较完善的PHP购物车类
- SQL Server中pivot and unpivot的用法 (行列互转)
- Web安全开发:SQL注入攻击和网页挂马
- CMM的体系结构