专利名称:一种基于数据容器的高性能私有云存储节点文件系统设计的制作方法
技术领域:
本发明涉及私有云存储的节点文件系统,尤其是对节点数据存储和整体文件访问提供高性能支持。属于云计算技术和计算机软件技术领域。
背景技术:
通常私有云存储系统采用分布式文件系统作为存储的基础。分布式文件系统一般采用单一中心控制节点和多个存储节点的星型结构或无控制节点的完全分布结构。由于前者管理简单、实现容易,所以为大多数私有云存储系统所采用。在这种结构中,控制节点负责元数据的管理,如用户的目录结构、文件名和文件存储位置的映射关系等。文件数据实际存放在某个或几个存储节点上。用户访问文件时,需要通过控制节点获得文件的位置信息和其它信息,然后访问存储节点,获得完整的文件。通常存储节点的管理完全依赖操作系统 提供的文件系统实现,用户文件或分块或完整的作为一个文件存放到节点磁盘空间的某个目录下,访问文件时需要依赖文件系统的目录搜索、文件定位和文件读写功能。当盘空间存放的文件数量到达一定级别时,文件访问性能会大幅下降,当多个用户并发访问文件系统时也会出现更加严重的性能瓶颈。这是因为文件系统固有的设计造成的,缺少对海量文件搜索、定位、读写等操作及并发访问的专门支持,影响了私有云存储的性能。
发明内容
针对传统文件系统性能不足的问题,提出一种高性能的节点文件存储系统的设计,满足私有云存储对于海量文件访问的高性能要求。本发明解决其技术问题所采用的技术方案是用户文件数据分块、分散存放在不同存储节点中,在存储节点上通过磁盘空间映射内存文件构造数据容器,将对磁盘的访问从一定程度上提升为对内存的访问,通过并发访问存储节点和数据块动态组装机制大幅提升文件的访问速度。本发明所述文件数据分块分散存储机制如下用户文件被分割成大小固定的数据块,由控制节点根据策略和规则确定存放在哪些存储节点上。每个数据块被赋予全局唯一的一个编号,每个文件对应了一个由编号组成的数据块表。本发明所述数据容器存放文件数据的机制如下存储节点上的将每个磁盘空间映射为一个大型内存文件,内存文件按独占模式打开成为一个数据容器。数据容器划分为数据块编号索引区、资源比特位图索引表区和数据块区三个部分。每个部分的大小在数据容器创建时根据可用盘空间大小生成。编号索引区由数据块编号、长度和比特位索引值和摘要值记录表构成。每个比特位索引表项按其所在位映射到数据块区的一个块,比特位的值代表对应的数据块位置是否被占用。当写入数据块时,存储节点管理程序为其生成全局唯一的编号,然后搜索资源比特位图,找到第一个未被占用的比特位,将其置位,然后将数据写入到对应的数据块区。最后在编号区中搜索空的记录项插入一条包含该数据块编号、长度、比特位等信息的记录。当读取数据块时,首先检索数据块编号所在的记录,获得对应的比特位,然后直接计算出比特位对应的数据块起始位置,根据长度读取数据。删除数据时,只要将对应的比特位置清空,同时清空编号区对应的记录项。用户访问文件时将存放在某个存储节点上的所有数据块信息列表批量提交给该存储节点,由数据容器根据用户根据当前访问的数据块和后续顺序访问的数据块将对应的磁盘数据换入内存页,同时数据容器总是在内存中预取一部分空闲页面,供新的数据块写入使用。这种预存取机制,可以明显提高访问的速度。数据容器支持多线程共享并发访问,允许对于数据块存储区进行并发访问,对编号索引区和比特位索引区支持互斥共享。本发明所述并发访问和文件动态组装机制如下当用户访问文件时,通过访问控制节点获得文件的数据块列表和对应的数据块信息,由用户端程序根据数据块信息并发访问各个存储节点,获得不同的数据块数据,然后将数据块组成完整的文件提交。
本发明的有益效果是提高存储节点的数据访问和I/O的性能,提高整个文件的访问速度,从而提高整个分布式文件系统的性能。
下面结合附图和实例对本发明做进一步说明。图I表示设计方案中用户文件分块分散存放示意图。图2表示设计方案中一个存储节点的数据容器的结构图
具体实施例方式在图I中,用户文件被分成固定大小的数据块,分别存放在两个不同的存储节点上。每一个数据块被赋予了一个全局唯一的编号,在windows操作系统可以用UUID作为数据块的编号。在控制节点中记录了该文件有关信息,如文件名,数据块编号列表,每个数据块存放的存储节点的标识等。通过这些信息,可以获得完整的文件存储信息。在图2中,存储节点的一个磁盘被映射成一个数据容器。在数据容器中第一个区是数据块编号记录区,每个记录由编号、长度、比特位索引值和摘要值构成。记录的第一位用0/1表示是否是空记录。记录区总数等于存放数据空间的大小除以数据块的长度,如盘空间为2TB,每个数据块大小为4MB,数据块总数为512000个,记录总数也为512000个。第二个区是比特位索引区,每个比特位根据其所在索引位置对应于一个数据块的位置。512000个数据块需要512000个比特位对应,即需要64000个字节。按照顺序,第一个字节的最高比特位对应第I个数据块,第二字节的第2字节对应第10个数据块,数据块起始位置=数据块区的起始地址+数据块长度X比特位索引值。比特位为O或I表示了对应数据块是否被占用。第三个区是数据块存储区,存放具体的文件数据块。
权利要求
1.一种高性能的私有云存储节点文件系统的设计方案,可有效提高节点数据的访问性能和文件整体的访问性能。其特征在于使用了用户文件分块分散存储的机制、磁盘空间映射内存文件的数据容器技术和并发访问及动态文件组装技术。
2.如权利要求I所述的文件分块分散存储机制,其特征在于,利用私有云存储的分布式结构,将用户文件分块、分散在不同的存储节点上,而不以完整的文件形态存在于任何磁盘上,文件名、用户信息、文件数据块的分布信息存储在控制节点上。
3.如权利要求I所述的数据容器机制,其特征在于,在存储节点上,磁盘空间被映射为一个大型的内存文件数据容器,数据容器分为数据块编号索引区、资源比特位图区和数据块存储区。通过编号索引可以快速定位数据块所在位置,通过比特位图可以迅速定位未被占用的数据块存储区位置。通过预存取机制,将用户文件数据块自动换入内存,提高了数据的访问效率。
4.如权利要求I所述的并发访问盒动态组装机制,其特征在于,文件数据块分散存放在不同的存储节点上。通过控制节点可获得完整的文件数据块信息,从而支持客户端程序并发访问不同的存储节点,获取所有的文件数据块,然后动态组装成完整的文件提交给用户。可以成倍提高用户访问文件的速度。
全文摘要
本发明针对传统文件系统性能不足的问题,提出一种高性能的私有云存储节点文件存储系统的设计,满足私有云存储对于海量文件访问的高性能要求。其特征在于以下几个方面一、用户文件数据分块、分散存放在不同存储节点中。二、在存储节点上通过磁盘空间映射内存文件构造数据容器,将对磁盘的访问在一定程度上提升为对内存的访问,从而大幅提高访问速度。三、通过并发访问存储节点和数据块动态组装机制提升文件整体访问速度。
文档编号G06F17/30GK102968423SQ20121008216
公开日2013年3月13日 申请日期2012年3月27日 优先权日2012年3月27日
发明者欧阳浩哲, 叶宇鹏, 聂乾, 陈东雨 申请人:广州市国迈科技有限公司