可升级存储器架构的制作方法

文档序号:6622755阅读:224来源:国知局
专利名称:可升级存储器架构的制作方法
在此结合优先权文件,1999年12月7日递交的美国临时申请No.60/169,373作为参考。
可升级存储器架构(Scalable Storage Architecture,SSA)是一种集成的存储解决方案,它在硬件和软件上都具有很高的可升级性和冗余性。
可升级存储器架构系统集成了网络存储所需的所有组件,并提供了可升级和冗余的存储空间,以及具有灾难恢复能力。其特点在于包括集成的和即时的备份,这保持了数据的完整性,使得无需外部备份。它还为历史数据的存储和检索提供了归档和分级存储管理(HSM)的功能。
随着新的数据应用的增加,数据存储的需求也在增加。例如,娱乐需要存储大量视频、音频和其它类型的文档数据。科学市场需要大量数据的存储。在医学领域,需要存储多种来源的数据,以满足因特网用户检索和利用那些健康相关数据的需求。
于是,积累数据的需求导致了存储需求的危机。并且,在单个企业中缺乏信息技术和存储人员来管理这样一个存储需求任务。并且,具有作为关键组件的存储功能的网络管理日益复杂。还有,现存的存储技术被自己的体系结构所限制,因此,它们不具有显著的易访问性和可升级性。
因此,所需要的是具有高的可升级性、易管理性、广泛分布性、完全冗余性和投资效率高的数据存储和访问的方法。这样的性能对于数据所属的个人和组织来说可能是很遥远的。并且,这种数据存储性能可以满足娱乐业、化学和地质部门、金融部门、医疗档案和图像部门通信、因特网和政府存储的需要。
本发明的进一步的目的是向个人和企业提供数据入库操作。
本发明的另一个目的是为娱乐、科学、医疗和其它数据密集型行业提供增长和数据存储。
本发明的另一个目的是消除单个企业对信息技术和进行数据存储和检索的人员的需求。
本发明的另一个目的是为信息存储提供可访问和可升级的存储体系结构。
通过以下的说明,本领域的技术人员可以更清楚地理解本发明的这些和其它目的。
本发明包括一种以易访问和可升级方式存储大量数据的系统和方法。本发明是一种完全集成的系统,包括主存储介质,例如固态磁盘阵列和硬盘列阵;副存储介质,例如磁带和磁光库;和用于从各种存储设备访问信息的控制器。存储设备本身是高度集成的,并且允许存储和快速访问存储在系统中的数据。并且,本发明提供了冗余的副存储器,所以在发生故障的情况下可以恢复数据并快速高效地提供给用户。
本发明包括连接本发明的存储系统的专用高速网络。根据数据需要、数据使用期限、数据访问次数和其它标准,可以在存储设备之间高速传送文件和数据。冗余性消除了发生故障的单个点,因此,一个单独的故障不会损坏存储在系统内数据的完整性。


图1显示了根据本发明的可升级存储器架构中的集成组件;图2显示了根据本发明的可升级存储器架构中的冗余硬件的结构示意图;图3显示了根据本发明的可升级存储器架构中的扩展光纤通道(fiber channel)的结构示意图;图4显示了根据本发明的可升级存储器架构中的块集合装置的结构示意图5显示了根据本发明实施例的存储控制软件;图6显示了根据本发明实施例的带有IFS文件系统算法的框图结构;图7显示了根据本发明实施例的失效接管(failover)算法流程图。
优选实施例说明为了提供本发明更彻底的说明,在下面的说明书中对特定的数字资料,例如磁盘特性、磁盘块的大小、块指针的字节数等等进行了详细的说明。然而,没有这些特定的细节,本发明对于本领域的技术人员也是明了的。在其它例子中,没有详细说明众所周知的特点和方法,以免使本发明变得不清晰。
可升级存储器架构(SSA)系统集成了所有网络存储所需的组件,并提供了高度可升级的和冗余的存储空间。SSA包括用于保持数据完整性的集成的和即时的备份,从而使外部存储变得没有必要。SSA还为历史数据的存储和检索提供了归档和分级存储管理(HSM)功能。
本发明的一个方面是一种用于数据的鲁棒存储(robust storage)的冗余的和可升级的系统。本系统包括由数据和元数据(metadata)存储器组成的主存储介质,和副存储介质。主存储介质带有冗余存储元件,用于提供所存数据的即时备份。存储在主存储介质上的数据完全复制到副存储介质上。元数据组(sets of metadata)存储在元数据存储介质上。
本发明的另一个方面是一种利用带有主存储器、副存储器和元数据存储器的系统进行数据鲁棒存储的方法。本方法包括通过在主、副存储器间复制数据而冗余地存储数据。本方法还包括在主存储器中删除数据的功能,这些数据的检索单独依靠副存储器,由此可以为其它数据空出主存储器空间。
参照图1,SSA硬件包括在所示的SSA集成组件体系内的集成组件。冗余控制器10,12是相同配置的计算机,优选的是基于康柏Alpha中央处理器(CPU)。它们各自运行自己的Linux内核和根据本发明执行SSA的软件(如下所述)。另外,每个控制器10、12使用各自镜像于热交换硬盘驱动器上的操作系统(OS)独立启动。每个控制器拥有自己的双重热交换电源。控制器10、12管理着一系列的分级存储设备。例如,固态磁盘架28包括用于对客户元数据的最快速访问的固态磁盘。下一级的访问由一系列的硬盘14、16、18、20、22、24、26代表。硬盘提供对数据的快速访问,虽然不如访问存储在固态磁盘28上的数据那么快。不需要频繁访问但需要相当快速反应的数据存储在磁光库(magneto optical library)30的光盘上。这个库包含很多光盘,在其上存储着用户数据,以及访问这些光盘的自动机构。最后,不那么具有时间限制性的数据存储在磁带上,例如,8毫米Sony AIT自动磁带库32。这个设备在磁带上存储大量数据,当需要时,恰当地安装磁带,数据恢复并传给客户。
根据数据存档规则,最需要的和以最及时的方式需要的数据存储在硬盘14-26上。随着数据寿命的延长,这些数据写到光盘上并存储在光盘库30中。
最后,旧数据(例如,根据企业的数据保持规则)随后移到8毫米磁带并存储在磁带库32中。数据存档规则可以由单独的公司制定并传给本发明的操作者,或者当数据存储和恢复规则不明确时,设定为某种默认值。
独立的OS镜像使得在SSA不离线的情况下可以升级整个系统的OS。如将在后面看到的,在正常的操作中,两个控制器都分担工作量。然而,每一个控制器在另一个发生故障的情况下都可以接管另一个的功能。在发生故障的情况下,第二个控制器接管整个系统的功能并且系统工程师安全地替换磁盘或安装新的OS。于是由幸存的控制器恢复双重控制器结构。在OS的完全升级情况下,第二个可以用相同的方法恢复。由于本发明中SSA系统内的冗余,相同的机制可以用于在不停止用户的数据服务情况下升级控制器的硬件。
参照图2,显示了根据本发明的可升级存储器架构中的冗余硬件的结构示意图。由于互联的内在冗余,一个组件发生故障可以不损坏数据的完整性。可以承受多个组件故障的特定组合。
参照图3,每个控制器可以任意拥有多个硬件接口。这些接口分属三种类型存储附加接口,网络接口和控制台或控制/监控接口。存储附加接口包括小型计算机系统接口(SCSI)-30a,30b,32a,32b(具有不同形式,例如低压微分(LVD)或高压微分(HVD))和光纤通道-34a,36a,34b,36b。网络接口包括,但不限于10/100/1000Mb以太网、异步传输模式(ATM)、光纤分布式数据接口(FDDI)、和带有传输控制协议/网际协议(TCP/IP)的光纤通道。控制台或控制/监控接口包括串行口,例如RS-232。优选实施例使用了外部设备互联(PCI)卡,特别是热交换PCI。
所有的存储接口,除了那些用于OS磁盘的,都与它们在第二控制器上的对应接口相连。所有的存储器都在控制器10、12之间与SCSI或FC相连,形成了一个在两端带有控制终端串的串。所有的SCSI或FC环都由外部终结器在各控制器的末端终结,以消除当一个控制器向下传时产生的终结问题。
参照图3,如上所述,为了不出现单点故障,在本发明中控制器10、12分别控制数据存储。例如,固态磁盘28、磁光库30和磁带库32分别通过SCSI接口30a、32a、30b、32b连接冗余控制器10,12。并且,硬盘14、16、18-26也经由光纤通道转换器38、40到每个冗余控制器的光纤通道接口34a、36a、34b、36b连接到冗余控制器10、12上。可见,每个冗余控制器10、12连接着本发明的所有存储部件,所以当任意一个控制器出现故障时,另一个控制器可以接管所有的存储器并恢复运转。
图3显示了光纤通道结构的扩展,图4显示了改进的扩展(块集合设备)。
参照图4,显示了为进一步扩展留有余地的SSA的替代结构。冗余控制器10a、10b分别包含冗余光纤通道连接器70、72、74、76。每个控制器的光纤通道连接器与块集合设备42、44相连。于是在控制器10a、10b中,光纤通道连接器70、74分别与块集合设备42相连。另外,控制器10a的光纤通道连接器72和控制器10b的光纤通道连接器76又与块集合设备44相连。
块集合设备以可升级的方式为硬盘存储单元的扩展留有余地。每个块集合设备包含光纤通道连接器,它们使得可以连接到冗余控制器42、44和冗余硬盘列阵上。例如,块集合设备42、44分别通过冗余光纤通道转换器38、40连接到硬盘14-26上,冗余光纤通道转换器38、40又分别通过光纤通道连接器62、64和54、56连接到块集合设备42、44上。
另外,块集合设备42、44分别通过光纤通道58、60和46、48连接到冗余控制器10a、10b上。另外,块集合设备42、44分别带有扩展光纤连接器66、68和50、52,用于在需要时连接附加的硬盘驱动器。
1.优选的是,SSA产品基于Linux操作系统。对于SSA软件体系结构,有六个首选的基本组件适用于Alpha CPU架构的模块化64位版本的Linux内核;2.最小化的标准Linux用户级组件集;3.SSA存储模块;
4.用于管理和配置冗余的用户数据访问接口;5.管理、配置、报告和监测接口;和6.用于冗余的健康监视报告和接口。
为了避免维持单独的发展树(development tree),本发明使用标准Linux内核。此外,本系统大部分的主要组件可以以内核模块的形式安装,这样可以根据需要装载入内核。这种标准模块的方法使存储器的使用最小化,并简化了从调试到系统升级的产品开发。
对于OS,本发明使用RedHat Linux发行版的改进版本。这个版本根据需要重建Linux源文件使系统运行在Alpha平台上。一旦这个完成,Alpha自身OS重新打包为RedHat软件包管理程序(RPM)二进制格式以简化版本和配置管理。本发明包括有用的网络应用、配置和分析工具,以及标准的文件/文本处理程序。
参照图5,显示了SSA存储模块。SSA存储模块分为如下五个主要部分1.IFS文件系统78、79,它是SSA使用的专用文件系统;2.虚化监控进程(Virtualization daemon,VD)80;3.数据库服务器(DBS)82;4.重新打包服务器(Repack Server,RS)84;和5.副存储单元(SSU)86。
IFS是为满足SSA系统而新创建的文件系统。IFS的独特特点是它的管理文件的能力,这些文件的元数据和数据可能存储在多个单独的具有不同特性(例如,查询速度、数据带宽等等)的物理存储器中。
IFS既可作为内核空间模块78实现又可作为用户空间IFS通讯模块79实现。IFS内核模块78可以不用重新启动机器而插入或移除。
任何Linux文件系统都由两个组件构成。一个是虚文件系统(Virtual File System,VFS)88,这是Linux内核的必备部分。它与硬件无关并通过系统调用接口90与用户空间通讯。在SSA系统中,任何与IFS 78、79所属文件相关的调用(call)都由Linux的VFS 88转向到IFS内核模块78。另外,与现存的文件系统对比,还存在一些以新颖的方式执行的同时普遍存在的系统调用,它们需要与用户空间的通讯来完成即时备份和归档/HSM功能。这些调用是创建、打开、关闭、解开(unlink)、读取和写。
为了处理某个系统调用,IFS内核模块78可以与IFS通讯模块79通讯,IFS通讯模块79位于用户空间。这种通讯通过共享存储器接口92进行的,以提高速度和避免引起内核调度的混乱。IFS通讯模块79也和SSA产品的其它三个组件相连。如图6所示,还有数据库服务器82、虚化监控进程(daemon)80和副存储单元86。
数据库服务器(DBS)82存储着IFS所属文件的信息,例如文件的识别号(索引节(inode)号+存储文件元数据的主介质号)、文件的副本数、相对于它们写入时间的时间戳(timestamp)、存储数据的存储器号码和相关信息。它还维持着介质内进行智能存储的空闲空间的信息、文件系统的后视图(快照特性)、设备识别码、设备特性(即,读/写速度,磁带数目和类型,负荷,利用率等)和其它配置信息。
DBS 82用于SSA的每个组件。在请求时(被动地)存储和检索信息。可以使用任何SQL数据库服务器。在所述的实施例中,使用简单MySQL服务器来实施本发明。
虚化监控进程(VD)80负责从IFS主介质清除数据。它监视IFS文件系统所使用的硬盘空间容量。如果空间容量超过一定的极限,它与DBS通讯并接收数据已经转移到副介质的文件名列表。然后,为了从主介质清除这些文件的数据,VD与IFS通讯,IFS然后删除文件的主体,于是释放了额外的空间,直到达到空闲空间的预设目标。这个过程称作“虚化”(virtualization)。在主介质不存在数据体或存在部分数据体的文件称为“虚(virtual)”。
使用智能算法来选择哪个文件应该首先虚化。这个算法可以由不同的算法设置或代替。在本实施例中,由于副存储器的访问时间长,非虚化(un-virtualize)操作很耗时,所以虚化算法选择最近最少使用(Least Recently Used,LRU)文件并根据文件的大小排序来虚化最大的文件,以使在IFS上虚化的文件数最少。
副存储单元(Secondary Storage Unit,SSU)86是一个软件模块,用于管理每个副介质存储器(Secondary Media Storage Device,SMSD),例如鲁棒(robotically)操作磁带或光盘库。每个SMSD具有一个SSU软件组件,用于提供SMSD设备使用的多个程序来提高读/写效率。可以向系统添加任意数量的SMSD。当添加SMSD时,它的SSU向DBS注册它自己以成为SSA系统的一部分。当移除SMSD时,它的SSU从DBS中注销自己。
当需要从IFS向SMSD写数据时,IFS 78在IFS通讯模块79辅助下与DBS 82通讯,并获得存储数据副本的SSU 86的地址。IFS通讯模块79于是连接SSU 86(如果还没连接)并要求SSU 86从文件系统检索数据。SSU 86于是直接从磁盘拷贝数据。这样就没有冗余的数据传输(数据不通过DBS,因此路径最短)。
当从磁带移除大的数据块时,会导致出现大块的介质非利用区域。这会大大降低从这些磁带读取数据的效率。为了修复这个缺点,通过指令将数据从重新打包服务器84重写(重新打包)到新的磁带上,在这个过程中释放了原始磁带。重新打包服务器(RS)84管理这个任务。RS 84负责在SMSD上保持数据的高效打包。在DBS 82的辅助下,RS 84监视磁带的内容。实施IFS是一种具有现在的新式文件系统(例如IRIX的XFS,Veritas,Ext2,BSD的FFS,等等)的大多数特征的文件系统。这些特征包括64位地址空间,日志,快照特征回叫图(snapshot-like feature called backviews),安全反删除,快速目录搜索,等等。IFS还具有其它文件系统不具有的特点,例如分别将元数据和数据写到不同的分区/设备的能力,不仅能添加还可以安全移除分区/硬盘驱动器的能力。它可以增加和减小它的大小,保持IFS镜像的历史等等。
现在Linux OS使用32位Ext2文件系统。这意味着文件系统所在的分区的大小限制在4万亿字节(terabyte)以内,并且每个文件的大小限定在2千兆字节(gigabyte)以下。这些数值远低于需要处理几万亿字节文件的文件系统的要求。IFS是64位的文件系统。这允许单个文件系统(不包括副存储器)大小达到134,217,700千兆兆字节(petabyte),单个文件最大为8129千兆兆字节。文件系统配置本发明使用UFS类的文件系统配置。这个磁盘格式系统是基于块(block)的,可以支持通常从1kB到8Kb的几个块大小,使用索引节(inodes)来描述文件,并包含几个特别的文件。一个最常用类型的特别文件是目录文件,它仅仅是一个特殊格式的文件,用于描述与索引节相关联的名字。该文件系统还使用一些其它的文件类型用于记录文件系统的元数据超级块(superblock)文件,块使用位图文件(bbmap)和索引节印像(imap)文件。超级块用于描述磁盘整体的信息。bbmap文件包含指示块位于何处的信息。imap文件指示索引节在设备上的位置。文件系统的多磁盘处理所述的文件系统可以处理多个独立的磁盘。这些磁盘无需具有相同的容量、访问速度或读/写速度。在文件系统的创建时间选择一个磁盘作为主盘,它也可以称作元数据存储设备。其它的磁盘变成副盘,它们也可以称为数据存储设备。主盘容纳主超级块、副超级块的副本和所有副盘的全部bbmap文件和imap文件。在本发明的实施例中,一个固态磁盘用作主盘。固态磁盘具有非常高的读和写操作速度特性,并且它的寻道时间接近为0,这加速了文件系统的元数据操作。固态磁盘还具有充分高的可靠性,即普通的磁—机械磁盘。在本发明的另一个实施例中使用一个小的0+1 RAID列阵作为主盘来降低系统的成本并提供同样高的可靠性和差不多的元数据操作速度。
超级块包含磁盘信息,例如块的大小,设备上的块数目,空闲块数,磁盘上允许的索引节数的范围,装有此文件系统的其它磁盘的数目,这个磁盘的16字节序列号,以及其它信息。
主盘存有关于副设备的附加信息(称为设备表)。当在一组磁盘上创建文件系统或将一个磁盘添加到一个已创建的文件系统内时(后面将说明这个过程),分配给每个副盘一个唯一的序列号,序列号写入相应的超级块。设备表是一个简单的具有固定大小的记录列表,这个记录是由以块为单位的磁盘容量值、描述在OS内核中怎样访问这个磁盘的数以及序列号组成的。
当文件系统安装好后,只有主设备名传到所安装的系统调用。文件系统代码读取主超级块并从中得到设备表的大小。然后文件系统读取设备表并通过读它的超级块而检验可否访问每一个所列的设备,并检验设备表中的序列号是否等于副盘的超级块中的序列号。如果一个或多个序列号不相配,则文件系统代码从内核中得到所有可用的块设备的列表并试图从每一个中读取序列号。即使一些副设备改变了它们的设备号,这个过程也允许快速查找所有副盘的适当列表。它还确定是否丢失了设备。后面将论述当一个或多个副盘丢失后数据的恢复。
设备表中的磁盘索引是所述文件系统中磁盘的内部标识符。
文件系统中所有的磁盘块指针以64位的数存储在磁盘上,如上所述,前16位表示磁盘的标识符。这样,文件系统可以支持多达65536个独立的磁盘,每个磁盘包含多达248个块。作为磁盘标识符的块地址的位数可以根据具体应用的需要而改变。
对于在某一时间或当磁盘添加时把每个副盘添加到文件系统中,在主盘上创建三个文件副超级块的副本,bbmap和imap。
每个磁盘的bbmap是一个简单的位图,位的索引是块号,位的内容描述了分配状况1代表分配的块,0代表空闲的块。
每个磁盘的imap是一个简单的64位的数表。索引是索引节号减去这个磁盘上第一分配的索引节(取自这个磁盘的超级块),值是索引节所在的块号,或者如果没有使用索引节号则为0。磁盘索引节本发明中所描述的文件系统的磁盘索引节与为先前基于块的索引节文件系统所描述的磁盘索引节相似标记,所有权,许可,几个存储在索引节中的数据,和以字节为单位的文件大小和15个64位块指针(如前面所述),其中有12个直接,1个间接,1个双倍间接和1个三倍间接。主要的不同是三个附加数。一个16位数用于存储描述关于在副存储介质上这个文件的备份副本的索引节状态的标记是否存在副本,磁盘上的文件是完整的还是文件的一部分,和其它在后文中描述的相关的标记。第二个数是一个包含遗传标记的短数字。第三个数是一个64位的数字,表示磁盘上的文件从第一字节起的字节数(占据磁盘的字节)。在本发明中任意文件都可以存在几种形式,仅在磁盘上,在磁盘上并在备份介质上,部分在磁盘上和在备份介质上,仅在备份介质上。文件的所有备份副本是完整的备份整个文件。当文件备份后,上述的文件可以删节到包括0字节的任意字节。这种不完整文件称为虚(virtual),这种删节称为虚化。新的占据磁盘的字节数存储在上述的数字内,文件的字节数没有修改,所以不管它是否是虚的,文件系统报告正确的整个文件的大小。当访问虚文件时,备份子系统开始从文件的磁盘分区恢复丢失的部分。
日志(joumaling)是一个防范OS崩溃使文件系统坚固的处理。如果OS崩溃,当FS的元数据没有反映数据时,FS可能处于不一致的状态。为了消除这种不一致,需要文件系统检查(fsck)。因为它强迫系统通过每个索引节线性运行,进行完全的元数据和数据完整性检查,所以运行这种检查会消耗很长时间。日志程序使文件系统在所有时间保持一致性并避免长时间的FS检查程序。
在实施中,日志是带有关于文件系统元数据信息的一个文件。在正常的文件系统中,当改变文件的数据时,元数据首先改变,数据本身再更新。在日志系统中,元数据的更新首先写入日志中,实际数据更新后,这些日志条目才重新写入适当的索引节和超级块。并不奇怪,与通常(非日志)的文件系统相比,这个处理消耗的时间略微延长(30%)。但是,这个代价对于在系统崩溃时数据的鲁棒是可以忽略的。
一些其它现存文件系统使用日志,然而,日志通常写在文件系统本身所处的同一个磁盘上,由于每次日志修改都需要两次额外的搜索,这减慢了所有文件系统的操作。IFS日志系统解决了这个问题。在IFS中,日志写在一个独立的设备上,例如固态磁盘上,它的读/写速度与内存的速度相似,实际上没有搜索时间,于是几乎完全消除了日志的系统开销。
在IFS中日志的另一个用途是备份系统元数据到副存储器。将日志纪录分批并传送到CM,随后以一定类型的元数据更新DBS表并把元数据发送到SSU以存储在副设备上。这种机制用于提供高效的、可以用于灾难恢复和一定程度后视(Back View)的元数据备份,后面将分别讨论。
软更新(soft update)是另一种在内核崩溃时保持系统一致性和可恢复性的技术。这种技术使用精确的序列来更新文件数据和元数据。因为软更新包含一种非常复杂的机制,这个机制需要很多代码(因此,系统时间),并且它不能完全保证文件系统的一致性,IFS在部分版本中使用软更新作为日志的补充。
快像(snapshot)是现存技术,用于即时得到文件系统的只读映像。快像是在预定的时间间隔内得到的文件系统映像。它们用于提取关于系统过去时间的元数据的信息。用户(或系统)可以使用它们来确定一段时间以前目录和文件的内容是什么。
“后视”是SSA的一个新颖独特的特征。从用户的观点看,它是“快照”的方便形式。因为重新创建文件系统所需要的所有元数据都存储在副存储器上,并且它的大部分也复制到DBS表中,如果元数据/数据还没有从副存储器中消失,则以一定的精度(大约5分钟,取决于那时文件系统的更新活跃度)重建在过去任意时间点的文件系统是价值不高的。用户可以设定元数据和数据在副存储器中保留的时间长度。在这种过去文件系统状态元数据的只读映像中,所有文件都是虚的。如果用户试图访问一个文件,他将开始一个从副存储器中恢复适当的文件数据的程序。
安全恢复(secure undelete)是一个在今天的几乎所有文件系统中都有的特征。它很难在常规的文件系统中执行。由于SSA系统的结构,因为对于任意给定时刻的文件系统已经至少包含了两个副本,所以IFS能够容易执行安全恢复。当用户删除一个文件时,它的副本仍然存储在副介质内,并且只有在预定和配置的时间内或者在外部用户的要求下才能被删除。这个文件的一个记录仍然储存在DBS中,因此,在这段时间内可以安全恢复文件。
存在于今天的文件系统中一个共同的情形是相当慢的目录搜索过程(搜索一个内部有多于一千个条目的目录需要几分钟)。这是由于多数文件系统在目录内存储数据的方法决定的目录条目的线性列表。另一方面,对于条目的布置,IFS使用了基于条目名字的字母排序的b-树结构,这可以大幅提高目录搜索速度。
通常,在文件系统中每次数据需要更新时,元数据(索引节,目录,和超级块)不得不也更新。后者的更新操作非常频繁,几乎耗用的时间和文件本身更新的时间相同,并在其下的硬件设备中添加至少一个额外的搜索操作。与现存的文件系统比较,IFS可以提供一个新颖的特征文件元数据和数据分别存储在单独的设备上。这样通过将元数据存在单独的、快速的设备(例如,固态磁盘)上解决了严重的时间问题。
这个特性还允许文件系统在几个分区上的分布式存储。每个分区的元数据和关于所有IFS分区的类属信息(以类属超级块的形式)可以存储在一个快速设备上。使用这种设计,当一个新的设备添加到系统时,它的元数据存储在独立介质并且更新介质的超级块。如果移走设备,则删除元数据并且系统更新类属超级块,否则清除。为了鲁棒性,属于某一分区的元数据的副本在这个区域内创建。在每次卸载IFS时或在每固定时间间隔或设定的时间间隔内更新这个副本。
IFS中的每一个64位数据指针包含设备地址部分和块地址部分。在本发明的一个实施例中,块指针的高16位用于设备识别,其余的48位用作设备内的块地址。在IFS控制下,这种块指针允许存储所有设备上的所有块。显然,IFS中的文件可以超越设备的界限。
能够在几个设备上存储文件系统的能力使文件系统的大小不依赖于存储设备的容量。这种机制还可以实现无需高成本的系统稳定性,和与标准的稳定性提供方法(如RAID磁盘列阵)相比,较少的空间占用面积。它还省去了将多个物理磁盘合并为一个逻辑磁盘的标准工具的使用(如LVM)。大部分的重要数据(主要是元数据)和新创建的数据可以由文件系统编码自动在独立的设备(可以连接到不同的总线以防止总线故障)上创建镜像。这种方法不需要价格昂贵的附加的硬件设备(如RAID控制器)或另外的通常运行缓慢的复杂的软件层(如RAID软件),I/O和计算消耗(由于奇偶计算)。一旦新创建的数据由SSA系统复制在副介质上,可以取消分配和重新使用冗余副本(镜像)所占用的空间。于是,为了得到这种额外的稳定性,仅仅需要昂贵的介质存储空间的一小部分来做镜像,得到由奇偶RAID结构提供的高水平的稳定性并且不需要奇偶计算的系统开销。这个部分取决于副存储器存储数据的能力,并可以通过提供充分数量的独立的副存储器(如磁带或光盘)来保持合理的小百分比。
在IFS中,系统调用,例如creat(),open(),read(),write()和unlink()具有特殊的执行过程,下面将进行说明。creat()新文件一旦创建,IFS就通过通讯模块与DBS通讯,产生一个新的对应于新文件的数据库条目。open()当用户打开一个文件,IFS首先检查文件的数据是否在主介质上(例如硬盘)。如果在,IFS作为“常规”文件系统运行并打开这个文件。如果文件不在硬盘上,则IFS与DBS通讯,确定哪个SMSD包含文件的副本。然后IFS为这个文件分配空间。当通讯模块未与SSU连接时,IFS连接它。产生一个将文件从副存储器恢复到所分配空间的请求。然后适当的SSU恢复数据,保持IFS的更新(这样,即使在传输过程中,IFS也可以通过read()向用户提供恢复的数据)。所有操作对简单打开文件的用户是透明的。显然,打开一个存储在SMSD上的文件要比打开一个已经存在于主磁盘上的文件耗费较多的时间。read()当打开一个存储在SMSD上的大文件时,把所有数据一次地传到主介质上是效率很低的,用户要等待这个过程结束才能取得其它数据。IFS在索引节中维持一个表示文件有多少数据存储在主介质上的变量(在磁盘和内存内)。这允许read()在数据从副介质上一恢复就向用户返回数据。使read()更有效率,可以进行预读。write(),close()系统管理员定义在副本更新的时间间隔内系统内需要有多少个文件的副本。当关闭一个新文件时,IFS与DBS通讯并得到适当的SMSD的数据。然后它连接SMSD并要求创建文件的副本。SSU于是直接从磁盘向副存储器进行复制,这减轻了IFS和网络的传输过载。当主磁盘和副存储器处于相同的光纤通道内时,通过使用FC直接传输命令,可以进一步简化和优化网络数据传输。
IFS还保持一个内存结构,其反映所有打开用于写的文件的状况。它可以记住open()调用的时间和最后write()的时间。独立的IFS线程(thread)为打开时间已超过预定时间(按5分钟-4小时的顺序)的文件监视这个结构。如果这些文件被修改了,这个线程创建它们的“快照”,并发出信号通知合适的SSU来创建这个“快照”的副本。由此,在系统崩溃的情况下,程序中的工作保持着一个重新恢复的机会。
当用户删除(unlink())文件时,文件并不立刻从SMSD移走。除了通常的从主存储器删除文件和元数据结构外,还更新文件的DBS纪录以反映删除时间。系统管理员可以预先设定文件被用户删除后在系统内保留的时间长度。当时间过期后,删除所有的副本和BDS内的条目。如果需要,为了安全原因,用户可以改变这种机制,立刻永久删除文件。这其中使用了特殊的输入输出控制(ioctl)调用。
通讯模块(CM)作为IFS和存储系统内所有其它模块之间的桥梁。它作为多线程服务器运行。当IFS需要与DBS或SSU通讯时,分配CM线程来执行通讯。
MySQL数据库服务器用于实现DBS,虽然也可以使用Postgres或Sybase Adaptive Server这样的服务器。DBS包含IFS内的文件、副存储介质、副存储器内的数据位置、历史和现存元数据的所有信息。这些信息包括文件名,索引节,创建次数,删除和最后修改,文件所存储的设备的id和文件的状态(例如,是否被更新)。每个文件的数据库密钥是它的索引节号和映射为唯一标识符的设备id。文件名仅仅用于安全恢复(undelete)操作(如果用户需要恢复删除的文件,IFS发送一个包含文件名和DBS名的请求,然后根据名字查询它)。DBS还包含关于SMSD设备的信息,它们的特性和当前操作状态。并且,所有SSA在DBS中存储着它们的配置值。
VS作为定期获得IFS硬盘状态信息的监控进程(daemon)。当达到了规定大小的阈值,VS连接DBS并获得其数据可以从主介质删除的文件的列表。可以根据它们最后修改的时间和它们的大小选择这些文件(先删除旧的、大的文件)。一旦它拥有了要删除文件的列表,VS列表传给IFS通讯模块。通讯模块负责向IFS和DBS发送信息。
重新打包服务器作为监控进程(daemon)执行。它监控每个SMSD的负荷。RS定期连接DBS并获得需要重新打包的设备的列表(例如,磁带的数据与空闲空间的比率太小,没有再可向它添加的数据)。当需要和低水平允许时,RS连接合适的SSU并要求它将它的(少数的)数据内容重新写到新的磁带上。
每个副介质存储设备(SMSD)逻辑上与它自己的SSU软件配对。SSU作为多线程服务器执行。当一个新的SMSD连接到SSA系统时,启动一个新的SSU服务,于是产生一个连接DBS的线程。将关于SSU参数的信息发送到DBS并注册SMSD。保持SSU和DBS之间的通讯直到SMSD中断连接或发生故障。它被DBS用于通知应该从SMSD删除的文件。它还用于显示SMSD的状态参数,例如它的负载情况。
当IFS需要向(或从)SMSD写(或读)文件时,如果还未连接,则它连接合适的SSU,这产生一个线程与IFS通讯。这种连接可以通过常规的网络,或者如果IFS和SSU运行于同一个控制器上,可以通过共享存储器接口。能够达到的同时读/写的数目等于SMSD内驱动器的数目。SSU总是优先读请求。
当RS确定设备需要重新打包时,它也需要不时地与SSU通讯(例如从高度碎片的(fragmented)磁带向新磁带写数据)。当RS连接到SSU时,SSU生成新的线程来服务这个请求。RS的请求的优先权最低,仅仅当SMSD处于空闲状态或有(可配置地)充分数目的空闲驱动器时才被接受。
用户数据访问接口分为下面的访问方法和相应的软件组件1.网络文件系统(NFS)服务器,用于处理NFS v.2,3和可能的4,或WebNFS;2.公用因特网文件系统(CIFS)服务器;3.文件传输协议(FTP)服务器;和4.超文体传输协议/HTTP安全(HTTP/HTTPS)服务器。
可以使用knfsd的高度优化和改进版本。根据这个软件的GNU公共许可,这些改进可以用于Linux共同体。以此来避免这个非常重要和复杂的软件的长的开发和调试过程。
现存的knfsd仅仅支持NFS v.2和3。可以在代码上进行一些优化工作。本发明也可以使用Sun Microsystem的NFS确认工具来使这个软件完全符合NFS的规范。NFS v.4一旦发布,本发明也可以将这个协议并入knfsd。
Samba部件可以提供对微软Windows(9x,2000和NT)客户端的访问。Samba是一个非常可靠的、高度优化的、被积极支持/发展的免费软件产品。一些存储器供应商已经使用Samba来提供CIFS访问。
本发明可以配置Samba来排除它的域控制器和打印共享特征。本发明也可以进行广泛的测试来确保与CIFS协议最大限度的配合。可以安装第三方ftp daemon来进行FTP访问。当前的可选择的有NcFTPd和WU-FTPd。
与C2Net有一个初步协议,Stronghold secure http服务器的生成者使用它们的产品作为本发明的http/https服务器,用作数据服务器和配置/报告接口。
用户的需求会鼓励本发明合并其它的访问协议(例如Macintosh专有的文件共享协议)。由于IFS能够作为常规的、向用户提供数据服务的控制器上的本地文件系统,因此这不会引起任何问题。
管理和配置分为下面三种访问方法和相应的软件组件1.配置工具;2.报告工具;和3.配置访问接口。
配置工具可以实施为一组perl脚本(script),它们能够以两种方式运行通过命令行的交互式,或在http服务器上通过perlmod。第二种执行方式可以输出html格式网页以让管理员的网页浏览器使用。
多数配置脚本可以为各个组件修改DBS纪录。配置工具应该能够至少修改下面的参数(通过各个组件)●OS配置IP地址,网络掩码,默认网关,用于每个外部(用户可见)接口的域名服务器(DNS)/网络信息系统(NIS)服务器。相同的工具可以使不同的接口向上或向下。简单网络管理协议(SNMP)配置。
●IFS配置添加和移走磁盘,强制清除磁盘(删除所有数据),全局地或为单个文件/目录设置HSM副本数目,标记文件为非虚(磁盘固定),存储删除文件的时间,快照时间表、创建历史映像,等等。
●迁移服务器指定最大/最小磁盘空闲空间,迁移频率等等。
●SSU添加或移走SSU,配置自动机(robot),检查介质目录,为场外存储或入库(vaulting)输出介质,添加介质,改变介质状态,等等。
●重新打包服务器重新打包频率,重新打包优先级,触发数据/空闲空间比率,等等。
●访问控制NFS,CIFS,FTP,和HTTP/HTTPS客户端和访问控制列表(区分所有协议或全局),为安全和其它原因废除不需要的访问方法。
●失效接管(Failover)配置为维护/更新强制进行失效接管。
●通报配置配置syslog过滤器,关键事件和统计的e-mail收信方。
报告工具可以以与配置工具相似的方式生成,用作命令行和基于HTTPS。可以通过SNMP而得到一些统计信息。也可以通过SNMP陷阱(trap)报告某些事件(例如,设备故障,关键状况等等)。一些类型的统计、状况、和配置信息类型可以通过报告接口生成●正常运行时间,容量,每层和全局所用空间,包括每个访问协议设计图表(pattern graph)的访问统计,客户端IP,等等。
●硬件状况检查工作状态,每个设备层的负载,等等。
●每个SSU层的副介质目录,数据和清空介质请求,等等。
●OS统计负载,网络接口统计,错误/冲突统计,等等。
●用于有效统计、事件和请求报告的E-mail。
本发明可以提供下面五种基本配置和报告接口1.HTTPS使用带有我们的脚本的C2Net Stronghold产品,如在3.6.1和3.6.2所述。
2.经由有限外壳(shell)的命令行,可以通过串行控制台或通过ssh(telnet可选,默认的为禁止)访问。
3.SNMP,用于被动统计报告。
4.SNMP陷阱(trap),用于有效事件报告。
5.E-mail,用于有效统计、事件和请求报告。
系统日志可以在SSA产品中起到重要作用。两种控制器都可以运行我们的改进型syslog daemon的它们自己的副本。它们可以本地地将它们所有的消息记入文件和远程地记入其它控制器。它们还可以将信息通过E-mail过滤器发送到技术支持小组和/或用户的本地系统管理员。
本发明可以使用现有的免费软件syslog daemon作为基础。它可以用后面的特征来增强●不向外部syslog设施发送外部(起源于网络)消息的能力。这个特征对于避免在两个控制器之间形成日志循环是必需的。
●为接听远程消息绑定特定的网络接口的能力。这个特征可以防止SSA产品的一些外部服务攻击。本发明可以设置syslog为仅仅接听两个控制器之间来自专有网络的消息。
●将消息记入管道(pipe)和消息列队的能力。这种能力对于能够将消息发给对特定触发事件采取行动(向系统管理员和/或技术支持发送e-mail这样的行为)的外部过滤器是必需的。
●检测日志目的文件的故障并中止向它记入日志。这对于避免万一发生远程日记接收或本地管道(pipe)/列队错误而丢失所有的日志功能是必须的。
两个控制器都可以使用专有网络的heartbeat包和几个管线通道环路相互监控。这允许检测控制器的故障和专有网络/Fc网络故障。当整个控制器发生故障时,继续运行的控制器通知数据基地支援组并接管失效控制器的功能。图7显示了事件的顺序。
以上根据优选实施例描述了本发明,然而,在不脱离本发明范围的情况下,可以对所述的实施例进行各种修改和改进。
权利要求
1.一种冗余的和可升级的存储系统,用于数据的鲁棒存储,该系统包括主存储介质,包括提供存储在其上的数据的即时备份的冗余存储单元;副存储介质,存储在主存储介质上的数据在它上面作镜像;和元数据存储介质,在其上存储元数据组,所述元数据组表示主存储介质和副存储介质的内部数据组织。
2.根据权利要求1所述的冗余和可升级存储系统,其特征在于,所述的元数据存储系统包括固态磁盘。
3.根据权利要求1所述的冗余和可升级存储系统,其特征在于,所述的主存储系统包括硬盘驱动器。
4.根据权利要求3所述的冗余和可升级存储系统,其特征在于,所述的副存储介质包括光盘库。
5.根据权利要求3所述的冗余和可升级存储系统,其特征在于,所述的副存储介质包括磁带库。
6.一种使用具有主存储设备、副存储设备和元数据存储设备的系统来鲁棒存储数据的方法,该方法包括在主存储设备上冗余地存储数据;准备对应于将从主存储设备向副存储设备镜像的数据的元数据;在元数据存储设备上存储所述元数据;从主存储设备向副存储设备镜像数据;以及可选地虚化主存储设备上的数据。
7.根据权利要求6所述的鲁棒存储数据的方法,其特征在于,根据最近最少使用算法选择要虚化的数据。
8.一种管理多个存储设备的数据存储空间的方法,该方法包括独立地对每个存储设备编址;在存储设备的子集中存储元数据;在其余的存储设备上存储数据;以及使用包含设备标识符的数据块指针。
9.一种访问存储系统的历史状态的方法,该方法包括在副存储设备上存储数据,并且不管数据在主存储设备上是否已经修改,在副存储设备上保持数据;在副存储设备上存储元数据;在被请求时,应用户的请求取出对应于存储系统状态的元数据;由取出的元数据重建存储系统的只读映像;取出对应于取出的元数据的数据的只读历史副本。
全文摘要
可升级存储器架构(SSA)系统集成了网络存储所需的所有组件,并提供了高度可升级和冗余的存储空间。SSA包括用于保持数据完整性的集成的和即时的备份,从而使得无需外部备份。SSA还提供了用于存储和取出历史数据的归档和分级存储管理(HSM)功能。保持了一组元数据,其描述所有存储设备的布置。因而,存储空间的管理对于用户是透明的。
文档编号G06F17/30GK1408083SQ00816854
公开日2003年4月2日 申请日期2000年12月6日 优先权日1999年12月7日
发明者丹尼斯V·格拉西莫夫, 伊琳娜V·格拉西莫夫 申请人:数据基础公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1