AHCI, ATA, RAID 比较

BIOS 里的 SATA setting 有 AHCI mode, ATA mode, RAID mode,g 了些资料。以下大部分内容源于 differencebetween,根据自己的理解整理而成。

AHCI vs ATA

ATA(AT Attachment) 是一个很久远的标准,最初是定义诸如硬盘等存储设备和 CPU 的接的标准。一共有两种类型的 ATA,第一种叫 Parallel ATA(PATA),第二种叫 Serial ATA(SATA),现在使用 ATA 这个词汇默认是指前者,也就是 PATA,他是在 SATA 之前出现的。而 AHCI 则是为 SATA 设计的控制器接口,AHCI(Advanced Host Controller Interface) 的全称是 Serial ATA Advance Host Controller Interface,他定义了存储设备和主机之间的信息如何传递。
AHCI 是一个相对较新的技术,跟老的 ATA(PATA)不兼容,因此,只有 SATA 接口的主板和硬盘才能使用 AHCI 这个技术。当使用 SATA 的时候,依然可以选择是使用 AHCI 还是古老的 PATA 实现,一些配有 SATA 控制器的设备可能由于驱动等原因无法使用 AHCI 可以选择 ATA 的模式,他是兼容性最好的一种,但是性能也相对较差。
PATA 的实现在 DELL 的服务器的 BIOS SATA setting 里面叫做 ATA mode,而 AHCI 的则叫 AHCI mode。因此对症下药的话,SATA/SAS 的硬盘一般选择 AHCI mode。
相比使用 ATA mode,AHCI 有两个最明显的优势,第一个就是热插拔(hot-plugging),第二个则是原生指令队列(NCQ, Native Command Queuing),该技术会让磁盘的寻道时间缩短,NCQ 除了需要有 AHCI 模式的支持外,其 OS 也需要有对应的 driver 支持。

总结一下:
1. AHCI 是一个控制器的接口,ATA 则是用来存储设备的标准
2. AHCI 不兼容于 ATA
3. AHCI 有不少 ATA 无法提供的高级功能

AHCI vs RAID

AHCI 是由 Intel 为 SATA 接口定义的一种操作模式,该技术不会对 SATA 的速度造成任何的影响,但是他在 SATA 的基础上了新增了一些高级功能;而 RAID(Redundant Array of Independent Disk) 相比之下是个古老的技术,他可以提高磁盘的 IO 以及可靠性。由于 AHCI 是由 Intel 发明的,该项功能只能使用在 Intel 的芯片上,其他厂商的则无法使用 AHCI 功能;而 RAID 作为一个标准,很多厂商都可以实现。

总结:
1. AHCI 是为 SATA 接口的硬盘设计的一种操作模式,RAID 则是一项通过多块硬盘组合来提高磁盘性能以及可靠性的机制
2. RAID 相比 AHCI 是一个比较老的技术
3. AHCI 是被 Intel 拥有的专有技术,RAID 则被众多厂商支持的

AHCI vs SATA

SATA 是为了取代 PATA 而出现的技术,相比 PATA,他拥有很多的优势,包括更快的数据传输速度,包括 NCQ 以及热插拔在内的 AHCI 技术。为了尽可能的实现 SATA 的兼容,大部分的厂商提供了包括 AHCI 以及 Legacy IDE(ATA) 的操作模式,前者上面已经提到,后者则是为了给比较老的设备提供兼容。

SATA vs SATA II

最近 5 年内的大部分应该是 SATA,SATA 控制器的很好辨认,比较窄的 cable 以及红色的连接器,目前还出现了 SATA II,最大的区别就是速度有了进一步的提升,前者最大只有 150MB/s 而后者则达到了 300MB/s。

总结:
1. SATA II 比 SATA 更快
2. SATA II 向下兼容于 SATA
3. SSD 更适合使用 SATA II,HDD 则适合使用 SATA

上面介绍的 SATA 按照不同的时间还可以分为 SATA-1, SATA-2 等,对明显的区别就是速度上的提升,可以参考这里

AHCI 从 2.6.19 开始支持,可以看到 2.6.32-220.el6.x86_64 默认已经支持了 AHCI 了:
# lsmod
Module                  Size  Used by

ahci                   40455  0

# dmesg  | grep ahci
ahci 0000:00:1f.2: version 3.0
ahci 0000:00:1f.2: PCI INT A -> GSI 20 (level, low) -> IRQ 20
ahci 0000:00:1f.2: irq 103 for MSI/MSI-X
ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x1f impl SATA mode
ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ems apst
ahci 0000:00:1f.2: setting latency timer to 64
scsi1 : ahci
scsi2 : ahci
scsi3 : ahci
scsi4 : ahci
scsi5 : ahci
scsi6 : ahci

# dmesg  | grep ncq
ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ems apst

ref:
http://www.differencebetween.net/technology/difference-between-sata-and-sata-ii/
http://www.differencebetween.net/technology/difference-between-ahci-and-sata/
http://www.differencebetween.net/technology/difference-between-ahci-and-raid/
http://en.wikipedia.org/wiki/Parallel_ATA
http://en.wikipedia.org/wiki/Serial_ATA