跳转到主要内容

D.6 贯穿各层的问题

点到点链路和交换机取代总线

随着 Moore 定律不断降低组件成本,点到点链路与交换机越来越普及。处理器、磁盘、LAN 速度提高,I/O 带宽需求随之上升;总线成本优势又在缩小,因此桌面计算机和服务器中的总线已时日无多。这一趋势在本书上一版时始于高性能计算机,到 2011 年已遍及存储领域。图 D.18 列出旧的总线标准及替代方案。

新一代接口的位数与带宽按单方向计算,双向合计则翻倍。新设计使用的导线少得多,因此常通过提供多倍导线数与带宽的版本来扩展吞吐量。

标准宽度(位)长度(m)时钟频率MB/s最大 I/O 设备数
并行 ATA80.5133 MHz1332
Serial ATA223 GHz300?
SCSI161280 MHz32015
Serial Attach SCSI110(DDR)37516,256
PCI32/640.533/66 MHz533?
PCI Express20.53 GHz250?
图 D.18 并行 I/O 总线及其点到点替代方案。带宽与导线数按单方向给出,双向发送时带宽翻倍。问号及 SAS 时钟栏的“DDR”按原表保留。

块服务器与 filer

到目前为止,我们基本没有讨论操作系统在存储中的作用。就像编译器决定如何使用指令集,操作系统决定硬件提供的哪些 I/O 技术真正得到利用。它通常在磁盘块之上提供文件抽象。逻辑单元、逻辑卷、物理卷,是 Microsoft 与 UNIX 系统中描述磁盘块子集合的相关术语。

逻辑单元是磁盘阵列向外提供的存储元素,通常由阵列的一部分磁盘构成;服务器将其看作一个虚拟“磁盘”。在 RAID 阵列中,逻辑单元被配置成某种 RAID 布局,例如 RAID 5。物理卷是文件系统访问逻辑单元时使用的设备文件。逻辑卷又提供一层虚拟化,让文件系统可以把物理卷拆成多个部分,或跨多个物理卷条带化。逻辑单元是阵列对操作系统呈现虚拟盘的抽象;物理卷、逻辑卷则是操作系统把这些虚拟盘划分成更小、独立文件系统的抽象。

介绍了块集合的术语之后,需要问:文件这一抽象应在哪里维持——服务器中,还是存储区域网络另一端?

传统答案是服务器。服务器按块访问存储并维护元数据。多数文件系统使用文件缓存,因此服务器还必须保持文件访问的一致性。磁盘既可能直接连接,即位于服务器内部并接到 I/O 总线,也可能经存储区域网络连接;两者都是服务器向存储子系统传送数据块。

另一种答案是磁盘子系统自身维护文件抽象,服务器用文件系统协议与之通信。例如 UNIX 的网络文件系统(Network File System,NFS),以及 Windows 的通用 Internet 文件系统(Common Internet File System,CIFS)。这类设备称为网络附加存储(NAS),因为这样提供文件服务的存储,再直接附着于服务器就没有意义。不过名称有些不准确:FC-AL 一类存储区域网络,也可用于连接块服务器。只提供文件服务和文件存储的 NAS 设备,通常称为 filer。Network Appliance 是最早生产 filer 的公司之一。

把存储放上网络的驱动力,是让多台计算机更容易共享信息,让操作员更容易维护共享系统。

异步 I/O 与操作系统

磁盘花在机械延迟上的时间,通常远多于传输数据。因此,提高 I/O 性能的自然途径是并行化,让多个磁盘同时为一个程序访问数据。

直观的做法是请求数据,随即尝试使用它。操作系统切换到其他进程,数据到达后再切回请求者。这称为同步 I/O:进程等待数据从磁盘读出。

另一种方式是请求发出后进程继续运行,直到试图读取请求的数据时才阻塞。这样的异步 I/O允许进程不断发请求,使多个 I/O 同时进行。其思想与乱序 CPU 中的缓存相同:通过多个未完成事件提高带宽。

表格阅读