[root@localhost ~]# lsscsi
[0:0:0:0]    disk    SEAGATE  ST300MM0048      N001  /dev/sda
[0:0:2:0]    disk    ATA      INTEL SSDSC2BB80 0112  /dev/sdc
[0:0:3:0]    disk    ATA      HGST HUS726060AL T7JM  /dev/sdd
[0:0:4:0]    disk    ATA      HGST HUS726060AL T7JM  /dev/sde
[0:0:5:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdf
[0:0:6:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdg
[0:0:7:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdh
[0:0:8:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdi
[0:0:9:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdj
[0:0:10:0]   disk    ATA      HGST HUS726060AL TAF0  /dev/sdk
[0:0:11:0]   disk    ATA      HGST HUS726060AL TAF0  /dev/sdl
[0:0:12:0]   disk    ATA      HGST HUS726060AL TAF0  /dev/sdm
[0:0:13:0]   enclosu CHENBRO  80H10323607      0611  -       
[0:0:14:0]   disk    ATA      INTEL SSDSC2BB80 0112  /dev/sdn
[11:65535:1:0]disk    Huawei   VBS fileIO       1.0   /dev/sdb
[11:65535:2:0]disk    Huawei   VBS fileIO       1.0   /dev/sdo
[root@localhost ~]# cat /proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 12 Lun: 00
  Vendor: ATA      Model: HGST HUS726060AL Rev: TAF0
  Type:   Direct-Access                    ANSI  SCSI revision: 06
Host: scsi0 Channel: 00 Id: 13 Lun: 00
  Vendor: CHENBRO  Model: 80H10323607      Rev: 0611
  Type:   Enclosure                        ANSI  SCSI revision: 05
Host: scsi0 Channel: 00 Id: 14 Lun: 00
  Vendor: ATA      Model: INTEL SSDSC2BB80 Rev: 0112
  Type:   Direct-Access                    ANSI  SCSI revision: 06
Host: scsi11 Channel: 65535 Id: 01 Lun: 00
  Vendor: Huawei   Model: VBS fileIO       Rev: 1.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi11 Channel: 65535 Id: 02 Lun: 00
  Vendor: Huawei   Model: VBS fileIO       Rev: 1.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05

前面第一列数字是什么?

lsscsi显示的第一列是scsi设备在内核中展示的各级编号,根据编号可以唯一确定一个设备,

如果使用 cat /proc/scsi/scsi 来查看会显得好理解一些:

从编号可以看出,第一级是host,第二级是channel,第三级是target编号,第四级是LUN号

h == hostadapter id (first one being 0)
c == SCSI channel on hostadapter (first one being 0)
t == ID
l == LUN (first one being 0) 各个数字之间的关系是什么?

一个主板可能接多个host,比如上面的服务器,在有多个sas芯片的情况下,肯定就有多个host。一个sas芯片又可以分割为多个通道,也就是channel,也叫bus。一个通道下多个target,一个target下多个lun。

如果一个硬盘支持双通道,那么在scsi层,就是展示为两个scsi标号。


内核中对scsi层的抽象是怎么做的?

对于device,有个scsi_device的抽象,host成员指向它归属的scsi_host,siblings成员嵌入到host的__device成员中。同时,

它的 sdev_gendev 成员的parent指向 对应的scsi_target的dev地址,这个只要熟悉linux的驱动模型就能理解了。

SCSI 子系统处理块访问请求

当 SCSI 子系统的请求队列处理函数被通用块层调用后,SCSI 中间层会根据块访问请求的内容,生成、初始并提交 SCSI 命令 (struct scsi_cmd) 到 SCSI TARGET 端。

scsi这些是按层级去描述对应通信的设备的,分别为host级,bus级,target级,device级。前面提到的scsi_device就是device层的抽象,对应的是lun,可能是磁盘,也可能是光盘之类的,

如果是磁盘,则还会生成一个scsi_disk的对象,光盘的话,则会产生一个 scsi_cd 的对象来和scsi_device 对应。

在scsi总线扫描的时候,每当探测到一个设备,就会调用scsi_alloc_sdev()函数,然后里面会继续调用scsi_alloc_queue(),

也就是当内核识别到一个scsi设备之后,需要为该设备设置一个request_queue,这个动作在下面完成,具体怎么识别到scsi_device ,有一堆探测的流程,在此不展开。

lsscsi 与 cat /proc/scsi/scsi的更多相关文章

  1. 查看cpu的信息cat /proc/cpuinfo

    cat /proc/cpuinfo processor : vendor_id : GenuineIntel cpu family : model : model name : Intel(R) Co ...

  2. cat /proc/devices 和ls /dev

    对于新手来讲,linux的框架实在是太庞大,况且很多知识点需自己做才能理解 设备 文件 ,设备编号  #ll  -a /dev  在每一行都可以看到设备文件.设备编号(主.次) 对于每种硬件设备,系统 ...

  3. linux cat /proc/cpuinfo

    #cat /proc/cpuinfo processor : 0 #逻辑处理器的唯一标识符 vendor_id : AuthenticAMD #CPU厂商ID信息,如果处理器为英特尔处理器,则vend ...

  4. Linux cat /proc/meminfo 输出分析

    $cat /proc/meminfoMemTotal:        2052440 kB //总内存MemFree:           50004 kB //空闲内存Buffers:        ...

  5. 2017-07-02(free uptime cat /proc/cpuinfo uname lsb_release)

    free -b 字节为单位显示 -k KB为单位显示,默认显示就是KB -m 以MB为单位显示 -g 以GB为单位显示 free -m free 显示说明 uptime 跟top命令第一行内容相同 c ...

  6. #cat /proc/meminfo 详解

    $cat /proc/meminfoMemTotal:        2052440 kB //总内存MemFree:           50004 kB //空闲内存Buffers:        ...

  7. linux查内存操作:cat /proc/meminfo

    https://www.cnblogs.com/zhuiluoyu/p/6154898.html cat /proc/meminfo

  8. 每天记命令:lscpu 和 cat /proc/cpuinfo

    [1]lscpu lscpu命令,查看cpu相关的统计信息. socket 就是主板上插cpu的槽的数目,也就是可以插入的物理CPU的个数(比如上例,可以插入1个CPU). core 就是我们平时说的 ...

  9. linux socket使用情况 ss -s ss -t -a | cat /proc/net/socketstat

    Linux系统中,查看SOCKET使用情况可以使用ss命令. 1.命令格式:ss [参数]ss [参数] [过滤]2.命令功能:ss(Socket Statistics的缩写)命令可以用来获取 soc ...

随机推荐

  1. JS实现自动轮播图效果(js案例)

    现在很多网站都有轮播图,这篇文章主要为大家详细介绍了js实现轮播图的完整代码及原理,需要的小伙伴可以参考一下. 1.轮播图主要功能: 1.  图片自动轮播(主图切换同时下面导航图片也会跟着变化) 2. ...

  2. AT2689 Prime Flip

    传送门 这个题是真的巧妙 首先一个很巧妙的思路,差分 考虑假如\(a_i!=a_{i-1}\),则\(b_i=1\),否则\(b_i=0\) 这样一来,一个区间的翻转就变成了对于两个数的取反了 然后我 ...

  3. 洛谷 P1536 村村通(并查集)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1536 思路: 这道题可以看出是并查集的思想,然后用一个while嵌套一下,输入一条路的两个端点,就 ...

  4. Linux下iptables总结

    linux下防火墙iptables 工作于网络或主机边缘,对进出本网络或本主机的网络报文安装事先设定好的匹配规则进行检查,对能够被规则所匹配的报文按照规则定义的处理机制进行处理的组件 通常情况下ipt ...

  5. docker jvm 占用高的问题定位

    定位流程 先使用一些轻便的工具查看总体情况, 如果情况糟糕, 再使用重量级的工具 jstack       查看线程数是否过多 jstat -gc -gcutil 查看gc次数和时间是否过多, 各个分 ...

  6. Eventlet Greenlet

    Eventlet是一个用来处理和网络相关的python网络库,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做greenthread. 所谓并发,就是开启了多个greenthread, ...

  7. vs2017 运行所选代码生成器时出错

    [转]https://blog.csdn.net/sunshineyang1205/article/details/80211313 ASPNET MVC Core中像Controller中添加控制器 ...

  8. matlab 打不开excel文件

    方法论 excel的后缀为.xls, matlab是无法识别的, 需要将其另存为.xlsx文件格式 打开excel, 点击save as, 选中保存的文件格式是.xlsx即可

  9. ACdream 1430——SETI——————【后缀数组,不重叠重复子串个数】

    SETI Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statist ...

  10. jquery.validate+jquery.form表单验证提交

    1.通过jquery.validate的submitHandler选项,即当表单通过验证时运行回调函数.在这个回调函数中通过jquery.form来提交表单: <script type=&quo ...