关于 IBM PC 驱动器技术的更完整讨论可以在 增强型 IDE/Fast-ATA 常见问题解答 主页找到,该页面也定期发布在 Usenet 新闻组上。还有一个专门介绍 ATA 和 ATAPI 信息与软件 的网站。
在这里,我将仅介绍为了理解这项技术并开始设置所需的内容。
这是您的数据所在的物理设备,尽管操作系统使各种类型看起来相当相似,但实际上它们可能非常不同。了解其工作原理在您的设计工作中非常有用。软盘驱动器不在此文档的范围之内,但是如果需求量很大,我或许会被说服在此处添加一些内容。
物理上,磁盘驱动器由一个或多个盘片组成,盘片包含使用安装在相对于自身固定的可移动磁头上的传感器读入和读出的数据。因此,数据传输在所有表面上同时发生,从而定义了磁道的柱面。驱动器也分为包含多个数据字段的扇区。
因此,驱动器通常以其几何结构来指定:柱面数、磁头数和扇区数 (CHS)。
由于各种原因,现在存在许多转换介于
基本上,这是一团糟,也是造成许多困惑的根源。有关更多信息,强烈建议您阅读 Large Disk mini-HOWTO
介质技术决定了重要的参数,例如读/写速率、寻道时间、存储大小以及它是读/写还是只读。
这是典型的读写海量存储介质,并且与计算机世界中的所有其他事物一样,它有许多不同的类型,具有不同的属性。通常,这是最快的技术,并提供读/写功能。盘片以恒定角速度 (CAV) 旋转,物理扇区密度可变,以更有效地利用磁介质区域。换句话说,通过增加外磁道的逻辑扇区数,每单位长度的比特数大致保持恒定。
旋转速度的典型值是 4500 和 5400 RPM,但也使用 7200 RPM。最近,10000 RPM 也已进入大众市场。寻道时间约为 10 毫秒,传输速率因类型而异,但通常为 4-40 MB/秒。对于极端高性能驱动器,您应该记住,性能需要消耗更多的电力,这些电力会以热量的形式散发出去,请参阅关于 电源和散热 的要点。
请注意,这里正在进行几种类型的传输,并且这些传输以不同的单位引用。首先是盘片到驱动器缓存的传输,通常以 Mbits/秒为单位引用。这里的典型值约为 50-250 Mbits/秒。第二阶段是从内置驱动器缓存到适配器的传输,这通常以 MB/秒为单位引用,此处典型的引用值是 3-40 MB/秒。但是请注意,这假设数据已在缓存中,因此,为了从驱动器获得最大读取速度,有效传输速率将急剧下降。
光读/写驱动器存在,但速度较慢且不太常见。它们曾在 NeXT 机器中使用,但速度慢是许多抱怨的根源。速度慢主要是由于代表数据存储的相变的热性质。即使使用相对强大的激光器来诱导相变,其效果仍然比磁驱动器中使用的磁效应慢。
如今,许多人使用 CD-ROM 驱动器,顾名思义,它是只读的。存储容量约为 650 MB,传输速度可变,具体取决于驱动器,但可以超过 1.5 MB/秒。数据存储在螺旋形的单磁道上,因此谈论其几何结构是没有意义的。数据密度恒定,因此驱动器使用恒定线速度 (CLV)。寻道也较慢,约为 100 毫秒,部分原因是螺旋形磁道。最近的高速驱动器使用 CLV 和 CAV 的混合方式,以最大限度地提高性能。这也减少了因需要达到正确的旋转速度以进行读取而导致的访问时间。
一种新型号 (DVD) 即将问世,单张光盘的容量高达约 18 GB。
这是可用技术中相对较新的成员,尤其是在便携式计算机以及嵌入式系统中广受欢迎。由于不包含任何可移动部件,因此它们在访问和传输速率方面都非常快。最流行的类型是闪存 RAM,但也使用了其他类型的 RAM。几年前,许多人对磁泡存储器寄予厚望,但事实证明它相对昂贵且不太常见。
通常,使用 RAM 磁盘被认为是一个坏主意,因为通常更明智的做法是将更多 RAM 添加到主板上,并让操作系统将内存池划分为缓冲区、缓存、程序和数据区域。只有在非常特殊的情况下,例如时间裕量短的实时系统,RAM 磁盘才可能是一个明智的解决方案。
如今,闪存 RAM 的存储容量已达到数十兆字节,人们可能会尝试将其用于计算机中的快速临时存储。然而,这里存在一个巨大的问题:闪存 RAM 的重写数据次数是有限的,因此将 swap
、/tmp
或 /var/tmp
放在这样的设备上肯定会大大缩短其寿命。相反,将闪存 RAM 用于经常读取但很少写入的目录将大大提高性能。
为了最大限度地延长闪存 RAM 的寿命,您需要使用特殊的驱动程序,这些驱动程序将均匀地使用 RAM 并最大限度地减少块擦除的次数。
此示例说明了将目录结构拆分到多个设备上的优势。
固态驱动器没有真正的柱面/磁头/扇区寻址,但出于兼容性原因,驱动程序会模拟此寻址,以便为操作系统提供统一的接口。
有大量的接口可供选择,价格和性能差异很大。如今,大多数主板都包含 IDE 接口,它是现代芯片组的一部分。
许多主板还包含 Symbios(前身为 NCR)制造的 SCSI 接口芯片,该芯片直接连接到 PCI 总线。检查您拥有的接口以及您拥有的 BIOS 支持。
曾经有一段时间,这是既定的技术,那时 20 MB 非常了不起,与今天的容量相比,让您觉得恐龙曾经漫步地球,带着这些驱动器。像恐龙一样,这些驱动器已经过时,与我们今天拥有的驱动器相比,它们速度慢且不可靠。Linux 支持此功能,但强烈建议您三思而后行,考虑要将什么放在此驱动器上。有人可能会争辩说,包含合适版本的 DOS 的紧急分区可能很合适。
实际上,ESDI 是对“大型”计算机上广泛使用的 SMD 接口的改编,使用了 ST506 接口使用的电缆组,与 SMD 使用的 60 针 + 26 针连接器对相比,它更便于封装。ST506 是一种“哑”接口,它完全依赖于控制器和主机来完成所有工作,从计算磁头/柱面/扇区位置到跟踪磁头位置等等。ST506 要求控制器从恢复的数据中提取时钟,并逐位控制介质上详细磁道特征的物理位置。如果包括 MFM、RLL 和 ERLL/ARLL 调制方案的使用,它的寿命约为 10 年。另一方面,ESDI 具有智能性,通常在单个驱动器上使用三到四个独立的微处理器,以及用于格式化磁道、传输数据、执行寻道等的高级命令。从数据流中恢复时钟是在驱动器上完成的,驱动器驱动时钟线并以 NRZ 形式呈现其数据,但纠错仍然是控制器的任务。ESDI 允许使用可变比特密度记录,或者,就此而言,任何其他调制技术,因为它是在本地生成并在驱动器上解析的。尽管 ESDI 中使用的许多技术后来被纳入 IDE,但正是 SCSI 的日益普及导致了 ESDI 在计算机中的消亡。ESDI 的寿命约为 10 年,但主要用于服务器和其他“大型”系统,而不是 PC。
技术的进步使驱动器电子设备从 ISA 插槽卡迁移到驱动器本身,集成驱动器电子设备应运而生。它简单、便宜且速度相当快,因此 BIOS 设计人员提供了计算机行业司空见惯的那种障碍。IDE 限制为 16 个磁头,BIOS 限制为 1024 个柱面,这两者的结合导致了臭名昭著的 504 MB 限制。再次遵循计算机行业的传统,通过一种笨拙的方法修补了该障碍,我们得到了各种各样的转换方案和 BIOS 补丁。这意味着您需要非常仔细地阅读安装文档,并检查您拥有的 BIOS 及其日期,因为 BIOS 必须告诉 Linux 您拥有的驱动器大小。幸运的是,使用 Linux,您还可以使用驱动器参数直接告诉内核您拥有的驱动器大小,请彻底检查 LILO 和 Loadlin 的文档。另请注意,IDE 等同于 ATA,AT 连接。IDE 使用 CPU 密集型编程输入/输出 (PIO) 在驱动器之间传输数据,并且不具备更高效的直接内存访问 (DMA) 技术的能力。最高传输速率为 8.3 MB/秒。
这 3 个术语大致等效,fast-ATA 是 ATA-2,但 EIDE 还包括 ATAPI。ATA-2 是当今大多数人使用的,它速度更快,并且具有 DMA。最高传输速率提高到 16.6 MB/秒。
一种新的、更快的 DMA 模式,其速度大约是 EIDE PIO 模式 4(33 MB/秒)的两倍。具有和不具有 Ultra-ATA 的磁盘可以混合在同一条电缆上,而不会降低速度更快的适配器的速度。Ultra-ATA 接口在电气上与普通的 Fast-ATA 接口相同,包括最大电缆长度。
ATA/66 已被 ATA/100 取代,并且最近我们又获得了 ATA/133。虽然接口速度已显着提高,但磁盘通常受到盘片到缓存限制的限制,如今该限制约为 40 MB/秒。
有关更多信息,请阅读 Maxtor 提供的这些概述和白皮书:关于 ATA/133 接口的 快速驱动器技术 和关于突破 137 GB 限制的 大驱动器技术。
一个新的标准已经达成一致,即 Serial-ATA
接口,该接口由 串行 ATA 组织于 2001 年 8 月宣布支持。
优点很多:简单的细连接器,而不是笨重的老式电缆垫,后者还会阻碍气流,更高的速度(约 150 MB/秒)和向后兼容性。
ATA 数据包接口旨在支持使用 IDE 端口的 CD-ROM 驱动器,并且与 IDE 一样,它便宜且简单。
小型计算机系统接口是一种多用途接口,可用于连接从驱动器、磁盘阵列、打印机、扫描仪等各种设备。这个名称有点用词不当,因为它传统上一直被高端市场以及工作站使用,因为它非常适合多任务环境。
标准接口是 8 位宽,可以寻址 8 个设备。还有一个 16 位宽版本,在相同的时钟频率下速度快两倍,可以寻址 16 个设备。主机适配器始终算作一个设备,通常编号为 7。也可以使用 32 位宽的总线,但这通常需要一组双电缆来承载所有线路。
旧标准为 5 MB/秒,而较新的 fast-SCSI 将其提高到 10 MB/秒。最近,超高速 SCSI(也称为 Fast-20)问世,8 位宽总线的传输速率为 20 MB/秒。新的低压差分 (LVD) 信号传输允许实现这些高速以及比以前更长的电缆。
最近又引入了一个更快的标准:SCSI 160(最初名为 SCSI 160/m),它能够在 16 位宽总线上实现惊人的 160 MB/秒的速度。支持仍然很少,但对于少数可以持续传输 40 MB/秒的 10000 RPM 驱动器来说已经足够了。将 6 个这样的驱动器放在 RAID 上将使这样的总线饱和,并且还会使大多数 PCI 总线饱和。显然,这仅适用于当今最高端的服务器。有关此标准的更多信息,请访问 Ultra 160 SCSI 主页
Adaptec 刚刚宣布为其 SCSI 160 主机适配器发布 Linux 驱动程序。当更多信息可用时,将会有更多信息发布。
现在也可以使用 SCSI/320。
更高的性能是以更高的成本为代价的,通常高于 (E)IDE。正确端接和高质量电缆的重要性怎么强调都不为过。SCSI 驱动器通常也比 IDE 驱动器质量更高。此外,添加 SCSI 设备往往比添加更多 IDE 驱动器更容易:通常,只需插拔设备即可;有些人这样做时无需关闭系统电源。当您有多个系统并且可以将设备从一个系统拿到另一个系统(如果其中一个系统由于某种原因发生故障)时,此功能最方便。
如果您使用 SCSI,则应该阅读许多有用的文档,包括 SCSI HOWTO 以及 Usenet 新闻组上发布的 SCSI FAQ。
SCSI 还具有以下优势:您可以轻松地将其连接到磁带驱动器以备份数据,以及一些打印机和扫描仪。甚至可以在计算机之间将其用作非常快速的网络,同时在同一总线上共享 SCSI 设备。工作正在进行中,但由于确保连接的不同计算机之间的缓存一致性存在问题,这是一项非常重要的任务。
SCSI 编号也用于仲裁。如果多个驱动器请求服务,则编号最低的驱动器将被授予优先级。
请注意,较新的 SCSI 卡将同时支持一系列不同类型的 SCSI 设备,所有设备都以各自优化的速度运行。
我不打算对硬件发表太多评论,但我觉得我应该对布线做一点说明。这似乎是一件技术含量非常低的设备,但可悲的是,它是许多令人沮丧的问题的根源。在当今的高速下,人们应该将电缆更多地视为射频设备,它对阻抗匹配有固有的要求。如果您不采取预防措施,可靠性将大大降低或完全失效。某些 SCSI 主机适配器对此比其他适配器更敏感。
屏蔽电缆当然比非屏蔽电缆好,但价格要高得多。稍加注意,您可以从便宜的非屏蔽电缆中获得良好的性能。
Cable Select
(ATA 驱动器),您可以将驱动器跳线设置为电缆选择,并使用电缆来确定主盘和从盘。这不是很常用。
Bus Speed (MHz) | Max Length (m)
--------------------------------------------------
5 | 6
10 (fast) | 3
20 (fast-20 / ultra) | 3 (max 4 devices), 1.5 (max 8 devices)
xx (differential) | 25 (max 16 devices
--------------------------------------------------
有关 SCSI 布线和端接的更多信息,可以在网络上的各种网页上找到。
这是驱动器接口的另一端,是连接到计算机总线的部分。计算机总线的速度和驱动器的速度应大致相似,否则您的系统中就会出现瓶颈。将 RAID 0 磁盘阵列连接到 ISA 卡是毫无意义的。如今,大多数计算机都配备了 32 位 PCI 总线,能够实现 132 MB/秒的传输速度,这在不久的将来不应成为大多数人的瓶颈。
随着驱动器电子设备迁移到驱动器,成为 (E)IDE 接口的剩余部分非常小,可以轻松地安装到 PCI 芯片组中。SCSI 主机适配器更复杂,通常包含自己的小型 CPU,因此更昂贵,并且未集成到当今可用的 PCI 芯片组中。技术发展可能会改变这种情况。
某些主机适配器配备了单独的缓存和智能功能,但这基本上是在猜测操作系统,因此增益在很大程度上取决于所使用的操作系统。一些更原始的操作系统(恕不赘言)获得了巨大的收益。另一方面,Linux 拥有如此多的智能功能,因此增益要小得多。
为 DPT 控制器编写驱动程序的 Mike Neuffer 表示,DPT 控制器足够智能,如果有足够的缓存内存,它将大大提高性能,并建议那些在使用智能控制器时几乎没有获得收益的人只是没有使用足够智能的缓存控制器。
为了提高吞吐量,有必要找出最明显的瓶颈,然后消除它们。在某些系统中,特别是在连接了大量驱动器的系统中,使用多个并行工作的控制器是有利的,无论是对于 SCSI 主机适配器还是通常内置 2 个通道的 IDE 控制器。Linux 支持这一点。
某些 RAID 控制器具有 2 或 3 个通道,并且跨所有通道分配磁盘负载是有好处的。换句话说,如果您有两个要 RAID 的 SCSI 驱动器和一个双通道控制器,则应将每个驱动器放在单独的通道上。
除了在同一台机器中同时拥有 SCSI 和 IDE 之外,还可以拥有多个 SCSI 控制器。查看 SCSI-HOWTO,了解您可以组合哪些控制器。此外,您很可能需要告诉内核,它应该探测多个 SCSI 或多个 IDE 控制器,而不仅仅是一个。这是在启动时使用内核参数完成的,例如使用 LILO。查看 SCSI 和 LILO 的 HOWTO,了解如何执行此操作。
如果正确配置磁盘,多板系统可以提供显着的 speed 提升,尤其是对于 RAID0。确保您交错控制器和驱动器,以便以正确的顺序将驱动器添加到 md RAID 设备。如果控制器 1 连接到驱动器 sda
和 sdc
,而控制器 2 连接到驱动器 sdb
和 sdd
,那么您将通过按 sda - sdc - sdb - sdd
而不是 sda - sdb - sdc - sdd
的顺序添加来获得更多的并行性,因为超过一个集群的读取或写入更有可能跨越两个控制器。
相同的方法也适用于 IDE。大多数主板通常配备 4 个 IDE 端口
hda
主盘 主盘hdb
主盘 从盘hdc
辅助盘 主盘hdd
辅助盘 从盘hda - hdc - hdb - hdd
的顺序进行 RAID,因为这很可能会并行化两个通道。
提供以下表格只是为了说明可能的速度,但请记住,这些是理论上的最大速度。所有传输速率均以 MB/秒为单位,总线宽度以位为单位。
IDE : 8.3 - 16.7
Ultra-ATA : 33 - 66
SCSI :
Bus width (bits)
Bus Speed (MHz) | 8 16 32
--------------------------------------------------
5 | 5 10 20
10 (fast) | 10 20 40
20 (fast-20 / ultra) | 20 40 80
40 (fast-40 / ultra-2) | 40 80 --
--------------------------------------------------
ISA : 8-12
EISA : 33
VESA : 40 (Sometimes tuned to 50)
PCI
Bus width (bits)
Bus Speed (MHz) | 32 64
--------------------------------------------------
33 | 132 264
66 | 264 528
--------------------------------------------------
这是一个非常非常困难的主题,我只会对这个雷区发表一些谨慎的评论。首先,制作具有任何实际意义的可比较基准测试更加困难。然而,这并没有阻止人们尝试...
相反,可以使用基准测试来诊断您自己的系统,以检查其运行速度是否应该达到,也就是说,没有减速。此外,当从简单文件系统切换到 RAID 时,您会期望性能显着提高,因此,性能增益的缺乏会告诉您某些地方出了问题。
当您尝试进行基准测试时,您不应自己编写,而应查找 iozone
和 bonnie
并非常仔细地阅读文档。尤其要确保您的缓冲区大小大于您的 RAM 大小,否则您测试的是您的 RAM 而不是磁盘,这将为您提供不切实际的高性能。
可以使用 hdparm -tT
获得一个非常简单的基准测试,该基准测试既可以用于 IDE 驱动器,也可以用于 SCSI 驱动器。
有关基准测试和多种平台软件的更多信息,请查看 ACNC 基准测试页面以及 此页面 以及 Benchmarking-HOWTO。
还有 bonnie、bonnie++ 和 iozone 的官方主页。
花絮:Bonnie 旨在查找瓶颈,这个名字是为了向 Bonnie Raitt 致敬,“她知道如何使用一个”,正如作者所说。
SCSI 提供比 EIDE 更高的性能,但价格更高。端接更复杂,但扩展难度不大。拥有超过 4 个(或在某些情况下为 2 个)IDE 驱动器可能很复杂,使用宽 SCSI,每个适配器最多可以有 15 个驱动器。某些 SCSI 主机适配器具有多个通道,从而进一步增加了可能的驱动器数量。
对于 SCSI,您必须为每个主机适配器分配一个 IRQ,该适配器最多可以控制 15 个驱动器。对于 EIDE,您需要为每个通道分配一个 IRQ(最多可以连接 2 个磁盘,主盘和从盘),这可能会导致冲突。
RLL 和 MFM 通常太旧、太慢且不可靠,因此用途不大。
SCSI-3 正在进行中,有望很快发布。更快的设备已经在宣布,最近提出了 80 MB/秒,然后是 160 MB/秒的怪兽级规范,并且最近也已在商业上上市。这些设备基于 Ultra-2 标准(使用 40 MHz 时钟)并结合了 16 位电缆。
一些制造商已经宣布了 SCSI-3 设备,但这目前还为时过早,因为该标准尚未最终确定。随着传输速度的提高,PCI 总线的饱和点越来越近。目前,64 位版本的限制为 264 MB/秒。PCI 传输速率将来会从当前的 33 MHz 提高到 66 MHz,从而将限制提高到 528 MB/秒。
ATA 的发展仍在继续,并通过新的 ATA/100 标准提高了性能。由于大多数 ATA 驱动器在从盘片的持续传输方面都比此速度慢,因此对于大多数人来说,性能提升将很小。
更令人感兴趣的是串行 ATA 的发展,其中扁平电缆将被高速串行链路取代。这使得布线比今天简单得多,并且还解决了布线阻碍驱动器上气流的问题。
另一个趋势是驱动器越来越大。我听说有可能在单个驱动器上获得 75 GB 的容量,但这相当昂贵。目前,性价比最高的存储容量约为 30 GB,但这个容量也在不断增加。DVD 的推出将在不久的将来产生重大影响,单张光盘的容量接近 20 GB,您可以拥有甚至来自世界各地主要 FTP 站点的完整副本。关于未来,我们唯一可以合理确定的事情是,即使它不会变得更好,它肯定会变得更大。
附录:在我第一次写完这篇文章后不久,我读到 CD-ROM 的最大有用速度是 20 倍,因为在这些速度下,机械稳定性将是一个太大的问题。大约一个月后,第一批商用 24 倍速 CD-ROM 就上市了... 目前,您可以获得 40 倍速,毫无疑问,更高速度的产品正在研发中。
一个将 SCSI 封装在 TCP/IP 上的项目,称为 iSCSI 已经启动,并且出现了一个 Linux iSCSI 实现。
我个人的观点是,EIDE 或 Ultra ATA 是启动系统的最佳方式,特别是如果您打算在机器上也使用 DOS。如果您计划在未来多年扩展系统或将其用作服务器,我强烈建议您购买 SCSI 驱动器。目前,宽 SCSI 稍微贵一些。通常,使用标准宽度 SCSI,您更有可能物有所值。SCSI 总线还有差分版本,可以增加电缆的最大长度。价格上涨幅度更大,因此不建议普通用户使用。
除了磁盘驱动器之外,您还可以将某些类型的扫描仪和打印机甚至网络连接到 SCSI 总线。
另请记住,随着您扩展系统,您将消耗越来越多的功率,因此请确保您的电源额定功率足以胜任这项工作,并且您有足够的冷却。许多 SCSI 驱动器都提供顺序启动选项,这对于大型系统来说是一个好主意。另请参阅 电源和散热。