在大多数计算机中,缓存是一个很重要的技术。事实上,计算机中的所有数据访问都可以看成是基本缓存概念的某种变体。不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存的基本思想。即数据从一个地点拷贝到另一个地点,使之检索起来更快。虽然这
在远距离磁盘镜像中,真实面临的挑战是:服务器总线和局域网或广域网的传输速度的差异,这里的局域网或广域网是用来连接远程设备的。一种情况是,用于存储的“管道”大于用于连网的“管道”,这就是所谓的“大管道”和“小管道”问题。
我们常常认为,AT M 和以太网是企业计算的进展和速度最快的连网技术,考虑到涉及的规划、安装、运行及管理的复杂性,这种认识就不难理解。
在网络的另一端,服务器的N I C接受从工作站来的重定向I / O请求。这个N I C通常具有专门的设备驱动程序,使之能够在很重的负担情况下仍然可以正常工作。当客户请求进入服务器时
在讨论了卷管理器为一个I / O请求产生多个路径后,再探索通过网络实现客户/服务器I / O就很顺理成章了。正像卷管理器可以沿着分开的路径产生多个交替的I / O一样,客户/服务器I / O也使用一个交替的路径,将I / O请求传输到存储设备,即网络。常用来描述客户如何访问服务器上数据的术语称为重定向I / O。
主机I / O控制器很常见。例如,服务器系统可以有两个或多个S C S I控制器,以提供高性能和(或)容错的存储。图3 - 1 7显示了一个带有三个控制器的系统,每一个控制器管理专用I / O总线上的一个设备。如果总线只连接一个设备时总线带宽浪费严重,正如假定设备是一个R A I D子系统,且带有2 0个内部磁盘。
数据库服务器有着十分明确的存储和I / O需要,这正反映了它们所支持的商业应用的个性化特征。例如,事务数据库典型地要求小的、阵发性I / O,而数据挖掘数据库系统则需要长时间的流式I / O。数据库系统已经成为支持各种商业需要的重要工具,为了提供最高的服务质量,它经常根据某类特殊应用的需要提供专门的服务。这就意味着可以针对某个应用特
文件服务器的客户I / O处理程序是一个优化的应用或服务,它把网络客户请求安排到本地存储。虽然这个应用似乎并不显眼,但从文件服务器的角度看,这确实是最重要的应用,服务器必须能够同时支持大量的用户,这便是服务器和桌面系统间的主要差别。
在以上各节中,我们描述了完整的本地I / O路径,现将它们综合起来,显示在图3 - 1 2中。图中左上角的应用发出I / O请求,这个请求可以引发右上端的三个设备执行操作。
存储设备最终将解释I / O请求,并处理这个请求。如果是读/写数据或执行其他的操作,则设备必须产生一个响应。这个响应可能是很简单的确认,如请求已经收到;或者是更复杂的设备及其存储介质的统计信息等,如图3 - 1 0所示。
像第2章所描述的那样,主机I / O控制器是计算机及其存储设备之间的桥梁。主机控制器既可以集成在系统板上,也可以安装在系统的插槽中。当主机适配器作为插卡加入主机I / O总线时,它被称之为主机总线适配器。今天,大多数主机I / O适配器都使用总线控制技术,避免系统C P U 太多地参与I / O处理的细节。
在I / O路径上,设备驱动程序是I / O路径上最后一片系统软件。在设备驱动程序接受来自卷管理器的块I / O请求后,它将管理所请求块的传输,并把它们发送到主机I / O总线上的目标主机I / O 控制器。术语“设备驱动程序”可能会引起误解,因为设备驱动程序并不管理设备,而是管理主机I / O控制器,反过来,由主机I / O控制器管理对存储设备的通信。
我们将以一个字处理应用作为例子,通过跟踪它的I / O操作过程来分析本地I / O路径。数据首先由一个用户产生,或者是直接从键盘键入,或者由其他应用拷贝而来,或者通过诸如语音识别等其他方法产生。然后,用户的字处理软件将给原始数据加上适当的文档标识和描述码,由此格式化原始数据。最后产生的结果将作为电子文件形式存储起来。
完整的客户/服务器I / O路径一般从一个应用开始,这个应用通常运行在工作站或桌面系统上,由它发出文件或数据库服务请求。因此,我们应该从客户本地存储的I / O路径开始分析,本地存储可以看成是单个系统所拥有的那些存储成分。所谓单个系统即该系统没有接入网络。
系统经常被当作为功能栈来分析,特别是网络系统。大部分读者可能都熟悉协议栈,它表示网络通信的功能层。为了分析I / O操作,找出一个类似的模型可能是有益的。图2 - 2 2显示了一个I / O功能栈,它只涉及数据的存储和恢复,不表示任何标准化的接口,只是提供一种对I / O总体上的理解。
在存储网络环境下,主机I / O控制器和存储设备的驱动程序是极端重要的部分。驱动程序是服务器软件中把数据传输到硬件的最后一步,也是从硬件接收数据的第一步。卷管理器和设备驱动程序的通信或者通过一个内部的功能,或者通过操作系统的某种机制。
卷管理器能对多个驱动器上的数据进行分块,以获得性能的提高。其基本思想是:建立一个轮转进程,I / O操作被依次地发送到每一个驱动器,与处理卡片过程相类似。当主机I / O控制器到达最后一个设备时,第一个设备的缓冲区可能已经准备接受下一次的操作,因此操作可以继续进行,否则,在设备准备好后,操作再继续进行。
许多系统都没有称做“卷管理器”的成分,然而,不要因为这个功能的名字不存在,就认为这个功能本身不存在。卷管理器功能差不多是所有系统的组成部分,这个功能使系统可以访问和管理磁盘驱动器及分区,卷管理器可以集成入操作系统,也可以作为一个分离的软件模块。
对许多人来说,文件系统和数据库系统是个很神秘的东西,我们都知道它们是存在的,也知道它们是做什么的,但它们仍然有点像P l a y d o h神奇工厂。数据从一端写入,从另一端读出,容不得我们有半点思考:里面到底发生了什么! 发生的事情之一是详细记录数据存储的位置,这些记录不仅保证了可靠性,也使整个系统维持在一个良好的运行状态。