为什么我的SATA设备显示在/ proc / scsi / scsi下?


10

我的系统上有3个SATA设备。它们显示在下/proc/scsi/scsi,尽管它们不是SCSI设备。为什么我的SATA设备显示在SCSI目录下?

$ cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD2500AAJS-6 Rev: 01.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: TSSTcorp Model: CDDVDW TS-H653Z  Rev: 4303
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST3320620AS      Rev: 3.AA
  Type:   Direct-Access                    ANSI  SCSI revision: 05

Answers:


18

它们显示为SCSI设备,因为驱动程序将SCSI与下一个内核层(通用磁盘驱动程序)进行通信。对于具有所有内核编译时配置的所有内核版本上的所有SATA驱动程序,实际上并非如此,但这很常见。甚至PATA设备也可以在该级别显示为SCSI(再次取决于内核版本和内核编译时配置以及是否使用ide-scsi模块)。

驱动程序是否对物理设备说SCSI并不重要。通常,确实如此。用于与PATA / SATA光盘驱动器和其他设备通信的ATAPI是基于SCSI的协议封装。但是,PATA / SATA磁盘不使​​用ATAPI。驱动程序的libata集还包括ATA命令集和SCSI之间的转换器,以便您可以将PATA / SATA磁盘放在SCSI子系统的保护下。内核内部独立的ide接口具有更多的历史意义。

您会注意到,出于相同的原因,USB磁盘也显示为SCSI(它们在USB总线上也说SCSI)。这同样适用于火线


许多IDE设备是否使用SCSI,它们是否在下面显示/proc/scsi?在另一个系统上,我有一个IDE DVD驱动器,该驱动器在列出/proc/ide/hdb/model
Stefan Lasiewski 2010年

@Stefan:所有非古老的IDE硬件设备都向控制器讲SCSI。如果进行了相应的编译,所有(我认为)IDE驱动程序都可以对通用磁盘层说SCSI(或者也许我应该说看起来像SCSI),但是它们(和一些SATA驱动程序)也可以看起来像IDE。
吉尔(Gilles)'所以

Gilles,能否请您详细介绍一下各个层(从硬件层到Linux上层)?我猜我们有一些类似的东西:设备(物理驱动器),SATA主机控制器(PHY HBA),低级驱动程序(接收SCSI命令,与PHY HBA对话),SCSI核心中间层(scsi_mod.ko),libata或scsi磁盘-driver(sd_mod.ko),阻止(可通过/ dev / sdX获得)。你同意吗?
Totor

我的意思是“您能指定吗” ...
Totor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.