要了解lsscsi命令,首先要了解什么是SCSI,常见的硬盘接口,常见的硬盘参数。1.什么是scsi?SCSI(SmallComputerSystemInterface)是一套完整的数据传输协议,其主要功能是在主机和存储设备之间传输命令、状态和块数据。在各种存储技术中,SCSI技术是最重要的支柱。SCSI协议位于操作系统和外部资源之间。它有一系列的功能组件。操作系统对外部设备(如磁盘、磁带、光盘、打印机等)的I/O操作可以通过SCSI协议实现。通常,在大多数情况下,SCSI协议嵌入在设备驱动程序或主机适配器的板载逻辑中。二、普通硬盘接口1、带IDE接口的硬盘英文名称:IntegratedDriveElectronics,普通2.5英寸IDE硬盘接口的本义是指集成了“硬盘控制器”的硬盘驱动器和“盘体”。IDE代表硬盘的一种类型,但在实际应用中,人们也习惯用IDE来称呼最早的IDE类型硬盘ATA-1。这种接口随着接口技术的发展已经被淘汰,其他后来的发展又分支出更多类型的硬盘接口,比如ATA、UltraATA、DMA、UltraDMA等接口都是IDE硬盘。其特点是:价格低廉、兼容性强、性价比高、数据传输慢、不支持热插拔等。2、SCSI接口硬盘SCSI并不是专门为硬盘设计的接口,而是一种高速数据传输技术广泛应用于小型计算机。SCSI接口具有适用范围广、多任务处理、带宽大、CPU占用率低、可热插拔等优点,但其高昂的价格使其难以像IDE硬盘那样普及,因此主要使用SCSI硬盘在中高端服务器和高端工作站。它的特点是:传输速率高,读写性能好,可以连接多个设备,可以支持热插拔,但是价格比较贵。3、SATA接口类型的英文名称为:SerialAdvancedTechnologyAttachment。使用SATA(SerialATA)接口的硬盘也叫串口硬盘,是未来PC硬盘的趋势。SerialATA采用串行连接方式,SerialATA总线采用嵌入式时钟信号,具有更强的纠错能力。与过去相比,它最大的不同是可以检查传输指令(不仅仅是数据)。如果发现错误,会自动纠正,大大提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔等优点。3、lsscsi命令lsscsi列出scsi/sata设备信息,如硬盘、光驱等。1.lsscsi命令安装-bash:lsscsi命令未找到Raspbianapt-get安装lsscsi#Dockerdocker运行cmd.cat/lsscsilsscsi2。lsscsi命令英文手册详细命令说明地址https://sg.danny.cz/scsi/lsscsi.html2。命令格式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以十六进制显示lun编号。-p输出DIF、DIX保护类型。-P输出有效的保护模式信息。-i显示udev相关属性-w显示WWN-t显示相应的传输信息(ATA,FC,SBP,ISCSI,SPI,SAS,SATA,USB),-Ht,-tl。(包括sas地址)3.结果含义4.命令示例lsscsi列出所有SCSI设备:peng@ubuntu:~$lsscsi[3:0:0:0]cd/dvdNECVMWarVMwareSATACD011.00/dev/sr0[32:0:0:0]diskVMware,VMwareVirtualS1.0/dev/sdalsscsi-L列出所有具有详细属性的SCSI设备:peng@ubuntu:~$lsscsi-L[3:0:0:0]cd/dvdNECVMWarVMwareSATACD011.00/dev/sr0device_blocked=0iocounterbits=32iodone_cnt=0x229ioerr_cnt=0x4iorequest_cnt=0x23aqueue_depth=1queue_type=nonescsi_level=6state=runningtimeout=30type=5[32:0:0:0]磁盘VMware,VMware0VirtualS1./dev/sdadevice_blocked=0iocounterbits=32iodone_cnt=0x37370ioerr_cnt=0x3iorequest_cnt=0x37370queue_depth=32queue_type=simplescsi_level=3state=runningtimeout=180type=0lsscsi-s列出所有SCSI具有人类可读磁盘容量设备:peng@ubuntu:~$lsscsi-s[3:0:0:0]cd/dvdNECVMWarVMwareSATACD011.00/dev/sr0-[32:0:0:0]diskVMware,虚拟机1.0/dev/sda536GB五、其他1.Linux下scsi相关文件节点/proc/scsi/peng@ubuntu:~$cd/proc/scsi/peng@ubuntu:/proc/scsi$lsdevice_infomptspiscsisgpeng@ubuntu:/proc/scsi$catscsiAttacheddevices:Host:scsi32通道:00Id:00Lun:00供应商:VMware,型号:VMwareVirtualS版本:1.0类型:直接访问ANSISCSI修订版:02主机:scsi3通道:00Id:00Lun:00供应商:NECVMWar型号:VMwareSATACD01修订版:1.00类型:CD-ROMANSISCSI修订版:05/sys/class/scsi_hostpeng@ubuntu:/sys/class/scsi_host$lshost0host12host16host2host23host27host30host5host9host1host13host17host20host24host28host31host6host10host14host18host21host25host29host32host7host11host15host19host22host26host3host4host8/sys/class/scsi_devicepeng@ubuntu:/sys/class/scsi_device$ls3:0:0:032:0:0:0/sys/class/scsi_diskpeng@ubuntu:/系统/类/scsi_disk$ls32:0:0:0/系统/class/scsi_genericpeng@ubuntu:/sys/class/scsi_generic$lssg0sg1/sys/bus/scsipeng@ubuntu:/sys/bus/scsi$lsdevices驱动程序drivers_autoprobedrivers_probeueventpeng@ubuntu:/sys/bus/scsi/devices$ls3:0:0:0host11host16host20host25host3host5target3:0:032:0:0:0host12host17host21host26host30host6target32:0:0host0host13host18host22host27host31host7host1host14host19host23host28host32host8host10host15host2host24host29host4host9其中target3:0:0对应host:bus:id:lun2。Linux启动SCSI日志调试功能编译选项中需要启动CONFIG_SCSI_LOGGING该编译选项说明drivers/scsi/Kconfig:213configSCSI_LOGGINGbool"SCSIloggingfacility"dependsonSCSI---help---Thisturnsonaloggingfacilitythatcanbeused调试一些与SCSI相关的问题。如果你在这里选择Y,默认情况下不会出现日志输出,但是你可以通过对“/procfilesystemsupport”和“Sysctl”选择Y来启用日志记录support"下面并执行命令echo>/proc/sys/dev/scsi/logging_level其中是一个四字节值,代表所选的每种日志记录类型的日志记录类型和日志记录级别。有许多日志记录类型,您可以在的源代码中找到它们。该文件中还描述了日志记录级别,它们决定了每种日志记录类型的日志记录的详细程度。如果您在这里选择N,它可能更难追踪某些类型的SCSI问题。如果你在这里选择Y你的内核会稍微大一些,但只要你关闭日志记录,就不会有明显的性能影响。日志记录类型源码文件位置(有说明)->drivers\scsi\scsi_logging.h使用说明/**注意-可以在此处设置初始日志记录级别以在启动时记录事件。*系统启动后,您可以通过/proc接口启用日志记录。*/unsignedintscsi_logging_level;#ifdefined(CONFIG_SCSI_LOGGING)EXPORT_SYMBOL(scsi_logging_level);#endifscsi_logging_level定义为int类型(32bit),本机制使用30位,从低到高每3bit为一个loggingCT级别,从SCSI_LOG_ERROR_SHIFT到SCSI_SHG(SCSI_LOG_XXX_SHIFT)为不同级别的移位数),每个级别使用的位数为3,所以SCSI_LOG_XXX_BITS为35。scsi_logging_level的值可以在开机命令行中设置,也可以在设备开机后在/proc文件系统中设置:-1-启用scsi事件到syslog。//打开所有scsilog0-禁用scsi事件到系统日志。//关闭所有scsi日志命令:echo0/-1>/proc/sys/dev/scsi/logging_level