lsscsi 与 cat /proc/scsi/scsi
[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的更多相关文章
- 查看cpu的信息cat /proc/cpuinfo
cat /proc/cpuinfo processor : vendor_id : GenuineIntel cpu family : model : model name : Intel(R) Co ...
- cat /proc/devices 和ls /dev
对于新手来讲,linux的框架实在是太庞大,况且很多知识点需自己做才能理解 设备 文件 ,设备编号 #ll -a /dev 在每一行都可以看到设备文件.设备编号(主.次) 对于每种硬件设备,系统 ...
- linux cat /proc/cpuinfo
#cat /proc/cpuinfo processor : 0 #逻辑处理器的唯一标识符 vendor_id : AuthenticAMD #CPU厂商ID信息,如果处理器为英特尔处理器,则vend ...
- Linux cat /proc/meminfo 输出分析
$cat /proc/meminfoMemTotal: 2052440 kB //总内存MemFree: 50004 kB //空闲内存Buffers: ...
- 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 ...
- #cat /proc/meminfo 详解
$cat /proc/meminfoMemTotal: 2052440 kB //总内存MemFree: 50004 kB //空闲内存Buffers: ...
- linux查内存操作:cat /proc/meminfo
https://www.cnblogs.com/zhuiluoyu/p/6154898.html cat /proc/meminfo
- 每天记命令:lscpu 和 cat /proc/cpuinfo
[1]lscpu lscpu命令,查看cpu相关的统计信息. socket 就是主板上插cpu的槽的数目,也就是可以插入的物理CPU的个数(比如上例,可以插入1个CPU). core 就是我们平时说的 ...
- linux socket使用情况 ss -s ss -t -a | cat /proc/net/socketstat
Linux系统中,查看SOCKET使用情况可以使用ss命令. 1.命令格式:ss [参数]ss [参数] [过滤]2.命令功能:ss(Socket Statistics的缩写)命令可以用来获取 soc ...
随机推荐
- c语言指针,数组
指针:说简单点就是一个地址.例如int *p,p是个变量,里面放的是地址0x0000,同理,每一个指针,不管什么类型,都是地址,也就是空间都是4个字节(32位机). 以此类推,指针也有指向它的指针in ...
- [Xcode 实际操作]四、常用控件-(11)UIDatePicker日期时间选择器
目录:[Swift]Xcode实际操作 本文将演示日期拾取器的使用. 使用日期拾取器,可以快速设置和选择日期与时间. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] ...
- JS对DOM节点操作整理
获取节点: //按照ID获取 document.getElementById('element'); //按照节点名称获取,返回类数组对象 document.getElementsByTagName( ...
- 解决eclipse双击类名、选中类名出现假死或者非常慢的问题(取消Eclipse鼠标悬停和自定义快捷键)
eclipse(MyEclipse)关闭鼠标移动提示代码功能和自定义快捷键代码提示设置的方法 eclipse(MyEclipse)关闭鼠标移动提示代码功能: eclipse(MyEclipse)--& ...
- chapter06
/** * Created by EX-CHENZECHAO001 on 2018-03-30. */class Chapter06 { } // 6 对象// 用对象作为单例或存放工具的方法// 类 ...
- 剑指Offer——数组中只出现一次的数字(一个很帅的异或解法)
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 看题目脑子里就出现做法了: 遍历,用个HashMap来记录出现的次数,然后再遍历HashMap返回 ...
- Oracle子查询和多表查询
多表查询需要用到表的连接 连接可以分为:(自行百度) 交叉连接(数字逻辑的笛卡尔积,不做解释) 等值连接 例如:select * from t_a, t_b where t_a.xx = t_b.xx ...
- pat1061. Dating (20)
1061. Dating (20) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Sherlock Holmes ...
- android 开发AlertDialog.builder对话框的实现
AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...
- C 碎片五 数组
构造类型数据是有基本类型数据按照一定规则组成的.数组,结构体,共用体都属于构造类型的数据.数组是有序数据的集合,C语言数组中的每一个元素都属于同一个数据类型,用数组名和下标来唯一确定数组中的元素. 一 ...