SCSI和ATA是完全不同的标准。它们目前都是在INCITS标准组织的主持下开发的,但是是由不同的小组开发的。SCSI隶属于技术委员会T10,而ATA隶属于T13。1个
ATA在设计时就只考虑了硬盘驱动器。SCSI越来越广泛,是控制大容量存储设备,磁带驱动器,可移动光学介质驱动器(CD,DVD,蓝光...),扫描仪和许多其他设备类型的标准方法。
在IDE引入PC领域的1980年代中期,SCSI被推向计算机世界的边缘并不是很明显。SCSI的根基已经建立并且更加强大。几十年来,Unix工作站和Macintosh计算机随SCSI硬盘驱动器一起提供。高端PC至少通常具有用于外围设备的SCSI卡,并且通常还用于系统HDD。早期的个人计算机CD-ROM和磁带驱动器首先以SCSI形式出现。
但是,PC行业正是如此,它一直在推动使用价格较低的ATA标准而不是SCSI。最初的妥协称为ATAPI,它是ATA的扩展,它允许内部了解SCSI的设备通过ATA接口接收那些SCSI命令。在下面的更多内容。
几年后,SCSI获得了ATA命令传递功能,基本上是ATAPI的反函数,从而允许ATA命令通过SCSI总线。此功能的一种用途是通过SCSI 传输ATA SMART命令。smartmontools
做到这一点,例如。
后来,INCITS T10委员会开发了一个称为SCSI / ATA转换(SAT)的标准,该标准将SCSI命令转换为ATA命令,反之亦然。2 Linux内核的libata
库提供了一个SAT Linux中执行,除其他事情。
由于SCSI和ATA协议都控制硬盘驱动器,因此在逻辑上存在一些重叠。两者显然都需要一种方法来查找特定的硬盘驱动器扇区,检索该扇区的内容等。否则,我们将不需要这些转换和传递机制。
SATA实际上“交谈”了SCSI
这与“汽车是粉红色”的说法一样真实。有些车是粉红色的。
ATAPI,ATA传递和SAT只是故事的一部分。继续阅读。
我认为它们在物理层上有所不同是理所当然的,因为它们不共享兼容的电缆。
在旧的并行SCSI世界中确实如此,但是就像SATA取代了PATA一样,SAS也取代了并行SCSI。
SAS和SATA共享相同的驱动器连接器,并且在电气上兼容。SAS控制器可以与SAS和SATA设备通信,但是SAS驱动器不能与仅SATA控制器一起使用。区别在于协商,以及在电缆两端的设备弄清楚它们要与之交谈之后,可以使用的命令。
实际上,许多“ SATA RAID”控制器实际上是SAS RAID控制器。此类控制器通常在卡上具有一个或多个SFF-8087 SAS配对连接器,但是您可以使用SFF-8087至4×SATA分支电缆将SATA驱动器连接至它们。因此,带有两个SFF-8087配对连接器的SAS / SATA RAID卡最多可控制8个驱动器。3
另一常见情况是带有SAS 背板的热插拔驱动器机箱或计算机机箱。背板上通常带有一个SFF-8087连接器,从而允许使用简单的8087-8087电缆从背板到磁盘控制器。如果热插拔托盘中的驱动器是SATA,则无关紧要。当SAS控制器位于将驱动器插入SAS背板的驱动器底座中时,它们可以通过SAS电缆与它们交谈。这些驱动器仍然是SATA驱动器,但使用ATA协议,而不是SCSI。
我也知道ATAPI是SCSI的封装
没错,但ATAPI仅用于设备的其他比硬盘驱动器。该标准存在的主要原因是允许ATA接口传输SCSI命令,例如磁带驱动器的流数据命令,光盘驱动器的“弹出媒体”命令或CD音频光盘的“播放轨道”命令。 。
随着以前通过ATAPI进行SCSI通话的非HDD设备消失或移至其他接口,这一事实变得不那么重要了。低端磁带驱动器不再存在,因此磁带驱动器现在都是SAS。这些天,4扫描仪几乎只使用USB。光盘驱动器正在移动到要通过USB连接的计算机机箱外部,或者完全消失,仅剩下使用ATAPI的越来越少的内部光盘驱动器。
无论如何,通过ATAPI能够理解SCSI的SATA设备仅是有限的“ SCSI设备”。与SCSI相比,此类设备将无法从SAS的大多数优势中受益。尽管与SATA,ATAPI相比,这些功能使SAS具有明显的价值。
如果您想要另一个汽车类比,那么我可以在椭圆形赛道上行驶我的汽车并不能使它成为赛车。
我注意到SCSI已采用SCSI的功能,例如NCQ,FUA,DPO等(如果我记错的话)。但是尚不清楚SCSI命令集的“多少”实际上是共享的还是相似的。
通常,这相当于低端模仿。例如,NCQ与TCQ是不同的东西。如果是SAS设备,则只有带有TCQ的硬盘驱动器。将具有NCQ功能的SATA驱动器插入SAS控制器,它不会突然获得TCQ功能。
也就是说,现代的SATA设备可能比十年前的SCSI设备具有更强大的功能。它肯定会具有更高级别的I / O。
所有这些都是令人困惑和重叠的,因为那是PC硬件世界的本质。没有明确的界限,因为光驱制造商(只是选择一个子行业)确实不希望构建两个完全不同的驱动器,一个是SAS的最高表达,另一个是SATA。因此,他们妥协。他们在定义此类标准的委员会中进行游说,以创建一个单一的标准,使他们可以将SATA驱动器放在SAS总线上,而每个人都很高兴。
在哪里可以找到明确的信息,尤其是它与Linux内核的关系?
最终,您想阅读Linux资料。该libATA
开发者指南也应该是有帮助的。
我不知道所有这些工作原理的简单总结。它设计得并不容易。它旨在适应三十年的硬件发展,相互竞争的标准以及不同的目标。此外,它的设计没有神奇的预见力。简而言之,这是一团糟。唯一真正需要知道混乱的工作原理的人是构建OS内核的人员,设计硬件的人员,以及在较小程度上编写OS内核的驱动程序的人员。对于这么小的干练的干部来说,标准和工作守则就足够了。
今天,Linux调用了大多数可重写的大容量存储设备/dev/sd?
。“ SD”曾经代表“ SCSI磁盘”,其存在仅仅是为了与/dev/hd?
一般意义上的“硬盘”区分开来,但在大多数情况下暗含PATA。这种区别是今天的另一个实际无关紧要的问题。现在,我们有了SSD,USB拇指驱动器,虚拟硬盘驱动器,iSCSI设备等等/dev/sd?
。我建议你开始的“SD”的思想作为短期的“存储设备”,而不是担心该设备是否讲ATA比SATA,ATA以太网,SCSI通过USB,SCSI超过ATAPI,SCSI过SAS,SCSI在IP(iSCSI的),或者您有什么。
核心问题是命名方案通常比方案背后的原因更重要。您在中看到了这一点/dev/scd0
。如今,连接到该/dev
节点的设备更可能是DVD或蓝光驱动器,而不是光盘驱动器。
备选方案-在您/dev
根据连接的确切设备类型命名每个节点的过程中会遇到自己的问题。如果以/dev
节点使用的低级协议命名节点,真的会更好吗?/dev/atapi0
,/dev/sas0
等?或者,也许您更喜欢/dev/atapibluray0
这样?多媒体驱动器呢?/dev/atapicd0
如果将光盘滑入蓝光驱动器,是否也需要公开同一驱动程序?那只是将一个令人困惑的方案替换为另一个。
Linux的/dev/sd?
抽象不是完美的,但很有用。例如,您可以了解到/dev/sda
很可能是启动驱动器的事实,而不必担心该名称背后的电缆,接口协议和介质。如果我告诉你,一个给定的Linux中有一个单一的系统驱动器,光盘驱动器,而且有时有插入其USB拇指驱动器,你可以放心地猜测,他们被称为/dev/sda
,/dev/sdb
和/dev/sdc
分别。
脚注:
SCSI和ATA并没有开始共享母公司标准组织。他们都是以专有的硬盘控制器开始的。SCSI是从Shugart Associates的SASI演变而来的,而ATA / IDE则来自Western Digital,Compaq和CDC之间的后期设计合作。
ANSI后来对两者进行了标准化,大约8年后,ATA-1遵循SCSI-1。
INCITS是ANSI的一种姊妹组织。INCITS通过美国的ANSI和全球的ISO / IEC JTC 1发布最终标准。
当前标准是SAT-3,于2015年5月发布,而我在2018年7月中旬撰写此文件时,SAT-4和SAT-5 正在进行中。后一链接将带您进入正在进行的版本的草案。
我忽略了SATA端口倍增器,SAS扩展器等。
除了与旧并行SCSI系统兼容的模型。