linux命令lsscsi详解(代码片段)

一口Linux 一口Linux     2022-12-01     664

关键词:

@

想要弄明白lsscsi命令,首先我们必须搞清楚什么是SCSI,以及常见的硬盘接口,常用的硬盘参数。

一、什么是scsi

SCSI(Small Computer System Interface)是一套完整的数据传输协议,其主要功能是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI技术可谓是最重要的脊梁。

SCSI协议位于操作系统和外部资源之间,它具有一系列的功能组件,操作系统对外部设备(如磁盘、磁带、光盘、打印机等)的I/O操作均可以通过SCSI协议来实现,一般情况下,SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。

 

二、常见硬盘接口

1. IDE接口的硬盘

其英文名称:Integrated Drive Electronics,常见的2.5英寸IDE硬盘接口它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。

IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,这种类型的接口随着接口技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。

其特点为:价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。

 

2. SCSI接口硬盘

SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。

SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。

其特点为:传输速率高、读写性能好、可连接多个设备、可支持热插拔,但是价格相对来说比较贵。

 

3. SATA接口类型

其英文名称为:Serial Advanced Technology Attachment。使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。

Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。

串行接口还具有结构简单、支持热插拔的优点。

三、 lsscsi命令

lsscsi列出scsi/sata设备信息,比如硬盘驱动器,光盘驱动器。

1. lsscsi 命令安装

-bash: lsscsi command not found
 
#Debian
apt-get install lsscsi
 
#Ubuntu
apt-get install lsscsi
 
#Alpine
apk add lsscsi
 
#Arch Linux
pacman -S lsscsi
 
#Kali Linux
apt-get install lsscsi
 
#CentOS
yum install lsscsi
 
#Fedora
dnf install lsscsi
 
#Raspbian
apt-get install lsscsi
 
#Docker
docker run cmd.cat/lsscsi lsscsi

2. lsscsi命令英文手册

详细命令说明地址

https://sg.danny.cz/scsi/lsscsi.html

 

2. 命令格式

lsscsi 命令语法:

lsscsi [选项] [H:C:T:L]

lsscsi 命令选项:

选项含义
-g显示SCSI通用设备文件名称
-k显示内核名称而不是设备节点名
-d显示设备节点的主要号码和次要号码
-H列出当前连接到系统的SCSI主机而不是SCSI设备
-l显示每一个SCSI设备(主机)的附加信息
-c相对于执行 cat /proc/scsi/scsi 命令的输出
-p显示额外的数据完整性(保护)的信息
-t显示传输信息
-L以“属性名=值”的方式显示附加信息
-v当信息找到时输出目录名
-y<路径>假设sysfs挂载在指定路径而不是默认的 “/sys”
-s显示容量大小。
-c用全称显示默认的信息。
-d显示设备主,次设备号。
-g显示对应的sg设备名。
-H显示主机控制器列表,-Hl,-Hlv。
-l显示相关属性,-ll,-lll=-L。
-v显示设备属性所在目录。
-x以16进制显示lun号。
-p输出DIF,DIX 保护类型。
-P输出有效的保护模式信息。
-i显示udev相关的属性
-w显示WWN
-t显示相应传输信息(ATA,FC,SBP,ISCSI,SPI,SAS,SATA,USB),-Ht,-tl.(包括sas地址)

3. 结果含义

 

四、命令举例

lsscsi 列出所有 SCSI 设备:

peng@ubuntu:~$ lsscsi
[3:0:0:0]    cd/dvd  NECVMWar VMware SATA CD01 1.00  /dev/sr0 
[32:0:0:0]   disk    VMware,  VMware Virtual S 1.0   /dev/sda 

lsscsi -L列出所有具有详细属性的 SCSI 设备:

peng@ubuntu:~$ lsscsi -L
[3:0:0:0]    cd/dvd  NECVMWar VMware SATA CD01 1.00  /dev/sr0 
  device_blocked=0
  iocounterbits=32
  iodone_cnt=0x229
  ioerr_cnt=0x4
  iorequest_cnt=0x23a
  queue_depth=1
  queue_type=none
  scsi_level=6
  state=running
  timeout=30
  type=5
[32:0:0:0]   disk    VMware,  VMware Virtual S 1.0   /dev/sda 
  device_blocked=0
  iocounterbits=32
  iodone_cnt=0x37370
  ioerr_cnt=0x3
  iorequest_cnt=0x37370
  queue_depth=32
  queue_type=simple
  scsi_level=3
  state=running
  timeout=180
  type=0

lsscsi -s列出所有具有人类可读磁盘容量的 SCSI 设备:

peng@ubuntu:~$ lsscsi -s
[3:0:0:0]    cd/dvd  NECVMWar VMware SATA CD01 1.00  /dev/sr0        -
[32:0:0:0]   disk    VMware,  VMware Virtual S 1.0   /dev/sda    536GB

五、其他

1. Linux下scsi相关文件节点

/proc/scsi/

peng@ubuntu:~$ cd /proc/scsi/
peng@ubuntu:/proc/scsi$ ls
device_info  mptspi  scsi  sg

peng@ubuntu:/proc/scsi$ cat scsi
Attached devices:
Host: scsi32 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05

/sys/class/scsi_host

peng@ubuntu:/sys/class/scsi_host$ ls
host0   host12  host16  host2   host23  host27  host30  host5  host9
host1   host13  host17  host20  host24  host28  host31  host6
host10  host14  host18  host21  host25  host29  host32  host7
host11  host15  host19  host22  host26  host3   host4   host8

/sys/class/scsi_device

peng@ubuntu:/sys/class/scsi_device$ ls
3:0:0:0  32:0:0:0

/sys/class/scsi_disk

peng@ubuntu:/sys/class/scsi_disk$ ls
32:0:0:0

/sys/class/scsi_generic

peng@ubuntu:/sys/class/scsi_generic$ ls
sg0  sg1

/sys/bus/scsi

peng@ubuntu:/sys/bus/scsi$ ls
devices  drivers  drivers_autoprobe  drivers_probe  uevent
peng@ubuntu:/sys/bus/scsi/devices$ ls
3:0:0:0   host11  host16  host20  host25  host3   host5  target3:0:0
32:0:0:0  host12  host17  host21  host26  host30  host6  target32:0:0
host0     host13  host18  host22  host27  host31  host7
host1     host14  host19  host23  host28  host32  host8
host10    host15  host2   host24  host29  host4   host9

其中target3:0:0

对应

host:bus:id:lun

2. Linux 开启 SCSI 日志调试功能

  • 1.编译选项中需开启 CONFIG_SCSI_LOGGING

 

  • 2.该编译选项说明

drivers/scsi/Kconfig:213
config SCSI_LOGGING
    bool "SCSI logging facility"
    depends on SCSI
    ---help---
      This turns on a logging facility that can be used to debug a number
      of SCSI related problems.

      If you say Y here, no logging output will appear by default, but you
      can enable logging by saying Y to "/proc file system support" and
      "Sysctl support" below and executing the command

      echo <bitmask> > /proc/sys/dev/scsi/logging_level

      where <bitmask> is a four byte value representing the logging type
      and logging level for each type of logging selected.

      There are a number of logging types and you can find them in the
      source at <file:drivers/scsi/scsi_logging.h>. The logging levels
      are also described in that file and they determine the verbosity of
      the logging for each logging type.

      If you say N here, it may be harder to track down some types of SCSI
      problems. If you say Y here your kernel will be somewhat larger, but
      there should be no noticeable performance impact as long as you have
      logging turned off.
  • 3.logging 类型源码文件位置(有说明)

-> drivers\\scsi\\scsi_logging.h
  • 4.使用说明

/*
 * Note - the initial logging level can be set here to log events at boot time.
 * After the system is up, you may enable logging via the /proc interface.
 */
unsigned int scsi_logging_level;
#if defined(CONFIG_SCSI_LOGGING)
EXPORT_SYMBOL(scsi_logging_level);
#endif

scsi_logging_level 被定义成int类型(32bit),该机制使用了30个bit,从低位到高位每3bit为一个logging level从SCSI_LOG_ERROR_SHIFT到SCSI_LOG_IOCTL_SHIFT(SCSI_LOG_XXX_SHIFT为不同level的移位数),每个level使用的bit数都是3,所以 SCSI_LOG_XXX_BITS 均为3

  • 5.scsi_logging_level 值可以在 boot 命令行设置也可以开启设备后在 /proc 文件系统中设置:

-1   - Enable scsi events to syslog.         // 开启所有scsi log
0    - Disable scsi events to syslog.        // 关闭所有scsi log


命令:

echo 0/-1 > /proc/sys/dev/scsi/logging_level

linux命令lsscsi详解(代码片段)

...接口1.IDE接口的硬盘2.SCSI接口硬盘3.SATA接口类型三、lsscsi命令1.lsscsi命令安装2.lsscsi命令英文手册2.命令格式3.结果含义四、命令举例五、其他1.Linux下scsi相关文件节点2.Linux开启SCSI日志调试功能想要弄明白lsscsi命令,首先我们... 查看详情

linux操作系统笔记基础命令(代码片段)

文章目录linux基础命令cd命令详解ls命令详解pwd命令详解hostname命令详解clear命令详解who、whoami、w命令which命令cal命令详解ldd命令详解scp命令详解ssh命令linux用户权限useradd命令详解usermod命令详解userdel命令详解groupadd命令详解groupdel... 查看详情

linux知识盲区整理(代码片段)

Linux知识盲区整理grep相关用法整理linux命令详解之pwd命令USERADD命令详解Linux下的chkconfig命令详解Linuxntsysv命令grep相关用法整理grep命令用法解析linux命令详解之pwd命令pwd来查看当前目录的绝对路径默认,使用连接文件,直接... 查看详情

linux操作命令分类详解-压缩备份(代码片段)

...录系列文章1、备份还原1.1 tar 备份还原文件2、压缩解压命令2.1打包跟压缩的区别2.2tar打包压缩命令2.3gzip/gunzip 压缩解压命令2.4zip/unzip 压缩解压命令2.5压缩解压命令总结系列文章Linux操作命令分类详解-命令速查(一)Li... 查看详情

lscpu详解(每周一个linux命令系列)(代码片段)

(3)lscpu详解(每周一个linux命令系列)linux命令lscpu详解引言:今天的命令是用来看cpu信息的lscpulscpu我们先看manlscpudisplayinformationabouttheCPUarchitecture翻译:显示cpu架构信息具体的描述如下:lscpugathersCPUarchitectureinformationfromsysfs,/proc/cpuinf 查看详情

ps详解(每周一个linux命令系列)(代码片段)

(5)ps详解(每周一个linux命令系列)linux命令ps详解引言:今天的命令是用来看进程状态的ps命令ps我们先看manpsps-reportasnapshotofthecurrentprocesses.翻译:显示当前进程的快照。ps是ProcessStatus的缩写具体的描述如下:DESCRIPTIONpsdisplaysinformatio... 查看详情

linux中的sudoer详解(代码片段)

...有两类:管理员用户---root普通用户--其他我们在学习sudo命令之前,肯定学习过su(switchuser)命令,su命令是用来切换用户身份的命令,而sudo命令是一种切换用户来执行某种操作的命令su和sudo的区别:su命令的主要 查看详情

每周一个linux命令之---uptime详解(代码片段)

每周一个linux命令之---uptime详解linux命令uptime详解引言:从今天开始,每周更新一个对程序员有用的linux命令,我真的没敢写每天一个,我怕我坚持不下去,每周一个还是可以的。既然每周一个了,就肯定不能拿ls,chmod这种命令... 查看详情

常用linux命令(分类详解!!)(代码片段)

Linux常用命令一、文件与目录操作1.1ls/ll命令1.2rm命令1.3cd命令1.4pwd命令1.5tree树形结构1.6mkdir命令1.7mv命令1.8cp命令1.9ln命令1.10touch命令1.11find命令1.12whereis命令二、关机三、系统(信息及日志位置)3.1系统信息3.2系统日志放... 查看详情

linux操作命令分类详解-进程查找其他(代码片段)

...sudo1.1sudo使用步骤1.2常用参数搭配1.3实例2、上传文件工具命令3、系统进程命令3.1ps显示当前进程的状态3.2kill 删除执行中的程序或工作4、查找命令4.1find查找命令4.2locate快速查找命令4.3whereis查找文件命令4.4which环境变量目录里查... 查看详情

linux之apt命令详解(代码片段)

一、apt的简介apt命令可以说是Linux系统下最为重要的命令,安装、更新、卸载软件,升级系统内核都离不开apt命令。apt的全称是AdvancedPackagingTool是Linux系统下的一款安装包管理工具。最初需要在Linux系统中安装软件,需要自行编译... 查看详情

linux命令详解(同步更新)(代码片段)

linux目录结构常用快捷键Ctrl+C中断正在执行的程序Ctrl+Z挂起正在执行的程序Ctrl+D退出当前的Shell,该快捷键的功能相当于exit基本操作命令mandatecalbclscdcat/more/less/tac/nl/head/tailmkdir/rmdir(rm)/touch/cp/mvwhich/whereis/locate/findvi编辑器 查看详情

linux系统监控命令详解(代码片段)

1.top命令top命令经常用来监控Linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。输入top命令1.1系统运行时间和平均负... 查看详情

linux操作命令分类详解-命令速查(代码片段)

目录系列文章1、前言1.1Linux常用快捷键和基本命令思维导图1.2命令提示符2、Linux快捷键2.1常用快捷键2.2快捷键分类介绍3、命令速查3.1文件和目录3.2查看文件内容3.3文本处理3.4查找3.5压缩和解压3.6yum工具3.7网络3.8其他4、关机、重... 查看详情

linux命令详解之ls命令(代码片段)

ls命令概述ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似。当执行ls命令时,默认显示的只有非隐藏文件的文件名、以文件名进行排序及文件名代表的颜色显示。当不加参数时,默认列出当前目录的列表信息。ls命令... 查看详情

linux下du命令详解(代码片段)

du是DiskUsage的缩写,Linux上最受欢迎的命令之一,它用来估算文件或目录占用的磁盘空间,它也是很基础的命令,使用Linux的人都应该掌握它的用法du命令及语法Usage:du[OPTION]...[FILE]...du[OPTION]...--files0-from=F常用的选项如下:-a:显示目... 查看详情

linux命令--exportfs命令详解(代码片段)

exportfs命令exportfs命令和nfs-utils这个包一起安装的例子:假设在第一次配置nfs的共享目录,之后需要新增、更改某些机器或共享的目录;首先需要更改配置文件,然后重启NFS服务,但如果远程客户端正在使用NFS服务,正在挂载着... 查看详情

linux运维12:history命令详解(代码片段)

 系列专题:Linux运维入门教程    history命令来自于英文单词历史,其功能是用于显示与管理历史命令记录。Linux系统默认会记录用户所执行过的所有命令,可以使用history命令查阅它们,也可以对其记录进行修改... 查看详情