在下面的描述中,将参考附图,附图构成了本发明的一部分,并 显示了本发明的多个实施例。应该理解,在不偏离本发明的范围的情 况下,可以利用其他实施例,也可以进行结构性的和操作更改。
实施例提供了镜像存储设备的读取和写入优化,以便将镜像存储 设备的总体性能被管理为最佳。
图1显示了根据某些实施例的计算系统的细节。存储控制单元 120包括性能管理器130和一个或多个操作结构140。存储控制单 元120耦合到存储器170。存储器170包括诸如镜像RAID存储 设备之类的镜像存储设备180。存储器170可以包括存储设备阵列, 如直接访问存储设备(DASD)、简单磁盘
捆绑(JBOD)、独立磁盘冗 余阵列(RAID)、虚拟化存储设备等等。
图2显示了在根据某些实施例的RAID阵列配置中配置的存 储设备的镜像对的数据布局。该数据布局是用线性地彼此映射的 RAID阵列配置的逻辑
块地址(LBA)方案和物理存储设备210和 250配置的。逻辑块寻址可以被描述为允许计算机对硬盘进行寻址的 寻址方案。例如,逻辑块地址可以是映射到硬盘上的特定柱面头扇区 地址的28比特值。RAID阵列逻辑和存储设备物理LBA两者都从 逻辑和物理存储设备的范围的顶部到底部线性地映射。
使用图2作为参考,下面的示例提供了本发明的实施例的说明。 RAID阵列配置200包括镜像存储设备210和镜像存储设备250。 在此示例中,镜像存储设备210是硬盘驱动器(HDD0),而镜像存 储设备250也是硬盘驱动器(HDD1)。HDD0和HDD1各自都被分 成两个LBA区域(LBA区域0和LBA区域1)。HDD0和 HDD1各自都具有响应读取和写入请求操作移到特定LBA的读/写 磁头。
对每一个存储设备210、250的读取请求操作只限于垂直区域, 以便读/写磁头的移动只限于单个区域。例如,向HDD0发出LBA 区域0的读取请求操作,而向HDD1发送LBA区域1的读取请 求操作。术语“垂直”用来描述区域相互之间是独立的(即,可以使用 一个区域,而不考虑其使用将如何影响其他区域)。通过管理存储设 备读/写磁头移动,每一个读取请求操作的寻道时间被约束到一个有限 值,该值小于对于读取请求操作在每一个存储设备上提升了无差别的 读/写磁头移动的情况。
实施例链接了读取请求操作和写入请求操作的控制和管理,以最 小化存储设备读/写磁头的整个移动。实施例通过限制向主存储设备上 的主要LBA区域发送的读取和写入请求操作,并批处理到辅助存储 设备上的辅助LBA区域的写入请求操作到一个写入阈值,来控制到 存储设备的某一个区域的存储设备读/写磁头移动,从而取得平衡。一 旦到达写入阈值,就对写入请求操作进行排序,并按优化存储设备读 /写磁头的运动的顺序向存储设备发送这些操作。与启动到存储设备的 辅助LBA区域的写入请求操作的同时,使辅助区域成为读取请求操 作的存储设备的主要LBA区域。写入阈值可以描述为未完成的写入 操作的挂起数量(例如,RAID阵列的总计、存储设备的总计,某些 其他组合的总计)或写入操作延迟计时器到期。
图3A和3B显示了由根据本发明的某些实施例的性能管理器 130执行的逻辑。控制从方框300开始,性能管理器130将区域指 定为第一和第二存储设备的读取和写入请求操作的主要和辅助区域。 每一个存储设备都具有第一区域和第二区域。作为示例,第一存储设 备的第一区域可以是某些读取和写入请求操作(例如,从0-(N/2-1)) 的LBA的那些读取和写入请求操作)的主要区域,而第二存储设备 的第二区域可以是某些其他读取和写入请求操作(例如,从N/2-N的 LBA那些读取和写入请求操作)的主要区域。
在方框302中,性能管理器130接收存储操作。在方框304 中,性能管理器130判断存储操作是否是读取请求操作。如果是, 则继续执行方框306,否则,继续执行方框312。在方框306中, 性能管理器130判断读取请求操作是否是针对第一区域(例如,LBA 区域0)的。如果是,则继续执行方框308,否则,继续执行方框310。 在方框308中,性能管理器130向第一存储设备的指定的主要区域 发出读取请求操作,处理返回到方框302。在某些实施例中,发出读 取请求操作或写入请求操作的过程包括在操作结构140中存储该操 作。在方框310中,性能管理器130向第二存储设备的指定的主要 区域发出读取请求操作,处理返回到方框302。
在方框312中,性能管理器130判断存储操作是否是写入请 求操作。如果是,则继续执行方框314(图3B),否则,继续执行 方框326。在方框326中,性能管理器130执行其他处理。处理从 方框326返回到方框302。
在方框314中,性能管理器130判断是否已经到达写入阈值。 如果是,则继续执行方框322,否则,继续执行方框316。
在方框316中,性能管理器130判断写入请求操作是否是针 对第一区域(例如,LBA区域0)的。如果是,则继续执行方框318, 否则,继续执行方框320。在方框318中,性能管理器130向第一 存储设备的指定的主要区域发出写入请求操作,处理返回到方框302 (图3A)。在某些实施例中,写入请求操作与读取请求操作一起发 给第一区域。在方框320中,性能管理器130将写入请求操作存储 在当前写入请求操作的批中,处理返回到方框302(图3A),其中 当前写入请求是发给第二区域的(例如,LBA区域1)。
在方框322中,由于已经到达写入阈值,性能管理器130按 优化设备读/写磁头的运动的顺序(例如,按按先后顺序放置连续 LBA的写入请求操作)对批处理的写入请求操作进行排序。
在方框324中,性能管理器130启动向第二存储设备的指定的 辅助区域的按序的写入请求操作,并同时使当前辅助区域成为读取和 写入请求操作的新主要区域,使当前主要区域成为读取和写入请求操 作的新辅助区域,并复位写入阈值。例如,如果HDD0最初是主存 储设备,主要LBA区域是LBA区域0,HDD1最初是辅助存储设 备,主要LBA区域是LBA区域1,那么,在到达写入阈值时, HDD0是主存储设备,主要LBA区域是LBA区域1,HDD0是 辅助存储设备,主要LBA区域是LBA区域0。每一个存储设备都 将具有用于判断I/O请求操作的分配的“主要”和“辅助”LBA区域。 处理从方框324返回到方框302(图3A)。
仅仅为加强对实施例的理解,将参考图2提供示例。在时间 T0,HDD0 LBA区域0是用于读取从0到(N/2-1)的RAID阵列 LBA的主要区域,而HDD1 LBA区域1是用于读取从N/2到N 的RAID阵列LBA的主要区域。
由性能管理器130按如下方式对指向RAID阵列的写入请求 操作进行管理:到RAID阵列LBA 0到N/2-1的写入请求操作发 送到HDD0,与操作队列之外的读取请求操作交错,而到RAID阵 列LBA N/2到N的写入请求操作发送到HDD1,与队列之外的读 取请求操作交错。指向阵列LBA 0到N/2-1的到RAID阵列的写 入请求操作被挂在到HDD1的队列中(例如,置于写入操作队列中), 指向阵列LBA N/2到N的到RAID阵列的写入请求操作被挂在 到HDD0的队列中,直到到达写入阈值。
一旦到达写入阈值,就启动转换。转换涉及下面的内容:在时间 T1,HDD0 LBA区域1变成用于读取从N/2到N的RAID阵列 LBA的主要区域,而HDD1 LBA区域0变成用于读取从0到 N/2-1的RAID阵列LBA的主要区域。性能管理器130按如下方 式管理指向RAID阵列的写入请求操作:到RAID阵列LBA 0到 N/2-1的写入请求操作发送到HDD1,与操作结构140之外的读取 请求操作交错,而到RAID阵列LBA N/2到N的写入请求操作发 送到HDD0,与操作结构140之外的读取请求操作交错。指向阵列 LBA 0到N/2-1的到RAID阵列的写入请求操作被挂在到HDD0 的队列中,指向阵列LBA N/2到N的到RAID阵列的写入请求操 作被挂在到HDD1的队列中,直到再次到达写入阈值。在时间T1, 也复位写入阈值。
在某些实施例中,提供了与写入请求操作管理和写入的脉冲串一 起,控制物理存储设备磁头移动寻道延迟的基于阵列/存储设备LBA 的、对特定存储设备的读取请求的镜像RAID实现方式管理。在某 些实施例中,与控制物理存储设备磁头移动和寻道延迟的读取优化一 起,对操作结构140和写入的脉冲串进行管理。
其他实施例细节
所描述的操作可以通过使用标准的编程和/或工程技术,作为方 法、计算机程序产品或设备来实现,以产生
软件、
固件、
硬件或其任 何组合。
每一个实施例都可以呈现完全是硬件、完全是软件或包含硬件和 软件元件两者的实施方式的形式。实施例可以以软件实现,包括但不 仅限于固件、常驻软件、微代码等等。
此外,实施例可以呈现计算机程序产品的形式,该产品可以从计 算机可使用的或计算机可读取的介质进行访问,介质提供了程序代 码,供计算机或任何指令执行系统使用或与它们一起使用。对于此说 明书,计算机可使用的或计算机可读取的介质可以是可以包含、存储、 传递、传播或传输供指令执行系统、设备或存储设备一起使用或与它 们一起使用的程序的任何设备。
所描述的操作可以作为在计算机可使用的或计算机可读取的介 质中维护的代码来实现,其中,处理器可以从计算机可读取的介质中 读取和执行代码。介质可以是
电子的、
磁性的、光学的、电磁的、红 外线的或
半导体系统(或设备或存储设备)或传播介质。计算机可读 取的介质的示例包括半导体或固态存储器,磁带,可移动计算机磁盘, 硬磁盘、光盘、磁存储介质(例如,硬盘驱动器、
软盘、磁带等等)、 易失性和
非易失性存储器存储设备(例如,
随机存取存储器(RAM)、 DRAM、SRAM、
只读存储器(ROM)、PROM、EEPROM、快闪存 储器、固件、可编程逻辑等等)。光盘的当前示例包括光盘-只读存储 器(CD-ROM),光盘读取/写入(CD-R/W),以及DVD。
实现所描述的操作的代码可以进一步以硬件逻辑(例如,集成电 路芯片、可编程
门阵列(PGA)、专用集成
电路(ASIC)等等)来实现。 更进一步,实现所描述的操作的代码可以以“传输
信号”来实现,其中, 传输信号可以通过空中或通过诸如光导
纤维、
铜线等等之类的传输介 质进行传播。其中编码了代码或逻辑的传输信号可以进一步包括无线
电信号、卫星传输、
无线电波、红外信号,蓝牙等等。其中编码了代 码或逻辑的传输信号能够通过发射台发射,并由接收台接收,其中, 可以对传输信号中编码的代码或逻辑进行解码,并存储在接收和发射 台或存储设备中的硬件或计算机可读取的介质中。
计算机程序产品可以包括计算机可使用的或计算机可读取的介 质、硬件逻辑,和/或其中可以实现代码的传输信号。当然,那些精通 相关技术的人将认识到,在不偏离实施例的范围的情况下,可以对此 配置作出许多
修改,计算机程序产品可以包括已知的任何合适的信息 携带介质。
术语“逻辑”可以包括,例如,软件、硬件、固件,和/或软件和 硬件的组合。
某些实施方式可以是提供通过人或自动处理来部署计算
基础架 构(将计算机可读取的代码集成到了计算系统中)的方法,其中,代 码和计算系统组合起来,以便能够执行所描述的实施方式的操作。
图3A和3B的逻辑描述了按特定顺序进行的特定操作。在备 选实施例中,某些逻辑操作可以按不同的顺序执行,也可以加以修改 或删除。此外,还可以向上文所描述的逻辑中添加操作,仍符合所描 述的实施例。此外,这里所描述的操作可以连续地进行,或者,某些 操作可以并行地处理,被描述为由单个
进程执行的操作也可以由分布 式进程执行。
图3A和3B所显示的逻辑可以以软件、硬件、可编程和非可 编程门阵列逻辑或以硬件、软件或门阵列逻辑的某种组合来实现。
图4显示了可以根据某些实施例使用的系统体系结构400。客 户端计算机100和/或存储控制单元120可以实现系统体系结构 400。系统体系结构400适用于存储和/或执行程序代码,并且包括至 少一个通过
系统总线420直接或间
接地连接到存储器元件404的 处理器402。存储器元件404可以包括在程序代码的实际执行过程 中使用的本地存储器,
大容量存储器,以及
高速缓冲存储器,该高速 缓冲存储器提供了至少某些程序代码的临时存储器,以便减少在执行 过程中必须从大容量存储器检索代码的次数。存储器元件404包括
操作系统405和一个或多个计算机程序406。
输入/输出(I/O)设备412、414(包括但不仅限于,
键盘、显示 器、指示设备,等等)可以直接或者通过I/O控制器410连接到系 统。
网络适配器408也可以连接到系统,以使得
数据处理系统通过 私有的或公共网络连接到其他数据处理系统或远程
打印机或存储设 备。
调制解调器,
电缆调制解调器和以太网卡只是几个当前可用的的 网络适配器408的类型。
系统体系结构400可以连接到存储器416(例如,非易失性存 储区域、如磁盘驱动器、光盘驱动器、磁带驱动器等等)。存储器416 可以包括内部存储设备或外接的或可通过网络进行访问的存储器。存 储器416中的计算机程序406可以加载到存储器元件404中,并 由处理器402以已知的方式执行。
系统体系结构400可以包括比所显示的更少的组件,这里所没 有显示的另外的组件,或所显示的组件和另外的组件的某种组合。系 统体系结构400可以包括当前已知的任何计算存储设备,如大型机、
服务器、个人计算机、工作站、
笔记本电脑、手持式计算机、电话存 储设备、网络设备、虚拟化存储设备、存储器控制器等等。
前面的对本发明的实施例的描述只是为了说明和描述。它不是详 尽的说明或将实施例限于所说明的准确的形式。根据上述原理,许多 修改方案和变化也是可以的。实施例的范围不被此详细描述的限制, 而是由所附的
权利要求进行限制。上面的说明、示例和数据提供了产 品的完整的描述,以及实施例的构成的用法。由于在不偏离实施例的 精神和范围的情况下,可以作出许多实施例,实施例都在下面所附的 权利要求或任何随后提出的权利要求,以及它们的等效内容的范围 内。