【技术实现步骤摘要】
面向持久内存文件系统的事务写优化框架的方法及系统
本专利技术涉及计算机系统结构
,具体地,涉及一种面向持久内存文件系统的事务写优化框架的方法及系统。
技术介绍
一致性是事务的最重要特性之一。文件系统维护数据的一致性状态对技术人员也是一项极大挑战。现有的一致性方法,如日志,将数据的double-write两次写操作执行在一个事务中,使得动作要么全部发生,要么都不发生。持久内存这一新型的存储设备,具有非易失、可字节寻址和高性能等特性,传统的一致性实现无法充分利用存储设备的可字节寻址特性,同时事务自身的局限性,将double-write限制在关键路径上。因此,专门针对持久内存设备的特性设计和优化一种面向持久内存文件系统的事务机制是十分必要且具有积极的意义。同时,现有技术中鲜有这方面的研究。在本领域,涉及的术语如下:元数据:描述文件数据的数据,主要是描述文件属性,如文件的大小,文件的访问权限等属性信息DRAM:DynamicRandomAccessMemory,动态随机存储器,即现阶段广泛使用的内存,其 ...
【技术保护点】
1.一种面向持久内存文件系统的事务写优化框架的系统,其特征在于,包括:/n模块M1:写文件输入元数据模块,动态备份写文件系统中的元数据以及支持元数据故障恢复;/n模块M2:写文件输入数据模块,保证写文件数据的一致性,并在发生故障时恢复一致性状态;/n模块M3:当完成输入元数据模块和数据模块后,原子性决策逻辑模块判断文件元数据和数据操作的原子性;并将原子性决策逻辑模块判断后的最新的元数据信息和/或数据信息写回元数据模块和/或数据模块;/n所述元数据模块:动态备份写文件系统中的元数据以及支持元数据故障恢复;/n所述数据模块:保证写文件数据的一致性,并在发生故障时恢复一致性状态; ...
【技术特征摘要】 【专利技术属性】
1.一种面向持久内存文件系统的事务写优化框架的系统,其特征在于,包括:
模块M1:写文件输入元数据模块,动态备份写文件系统中的元数据以及支持元数据故障恢复;
模块M2:写文件输入数据模块,保证写文件数据的一致性,并在发生故障时恢复一致性状态;
模块M3:当完成输入元数据模块和数据模块后,原子性决策逻辑模块判断文件元数据和数据操作的原子性;并将原子性决策逻辑模块判断后的最新的元数据信息和/或数据信息写回元数据模块和/或数据模块;
所述元数据模块:动态备份写文件系统中的元数据以及支持元数据故障恢复;
所述数据模块:保证写文件数据的一致性,并在发生故障时恢复一致性状态;
所述原子性决策逻辑模块:由决策原子性逻辑单元组成,用于保障元数据与数据操作的原子性。
2.根据权利要求1所述的一种面向持久内存文件系统的事务写优化框架的系统,其特征在于,所述模块M1包括:
元数据模块包括:元数据备份数据存储管理单元、元数据检索管理单元、元数据预处理单元以及元数据写回管理单元;
模块M1.1:在程序运行的初始化阶段,在持久内存中划分出一块持久区域作为元数据备份数据存储管理单元,存放文件元数据备份数据;
模块M1.2:在程序运行的初始化阶段,在动态随机存储器创建元数据检索管理单元的数据结构;
所述元数据检索管理单元包括:两颗红黑树和一个繁忙链表;
在动态随机存储器中创建两颗红黑树;一颗元数据备份空闲红黑树统计元数据备份数据存储管理单元的空闲插槽;另一颗元数据备份已用红黑树记录元数据备份数据存储管理单元已经使用的插槽;两颗红黑树的节点由最小索引号和最大索引号组成;在初始化阶段,元数据备份已用红黑树是一颗空树;元数据备份空闲红黑树则包含一个节点,所述节点的最小索引号为0,最大索引号为所有插槽的个数减1;
在动态随机存储器中另外创建一颗最近最少使用的红黑树;最近最少使用的红黑树的节点由索引号、最后一次修改时间、链表指针、插槽号四个域组成;在初始化阶段,所述最近最少使用的红黑树是一颗空树;
在动态随机存储器中创建一个繁忙链表,繁忙链表的每一个节点由插槽号、链表指针两个域构成,所述繁忙链表记录当前正在执行操作的元数据,不能被其他的元数据替换;
模块M1.3:元数据预处理单元以元数据的索引号和最后一次修改时间为索引值,判断当前要执行操作的元数据是否已经存在于元数据备份数据存储管理单元;
当在最近最少使用的红黑树中找到,则当前元数据已经备份,直接本地修改文件元数据信息;
当所述元数据信息在最近最少使用的红黑树中没有找到,则执行操作的元数据并没有备份,查找所述的元数据备份空闲红黑树,当所述的元数据备份空闲红黑树不是空树,即还有空闲插槽分配,则返回空闲插槽号,获取当前元数据备份数据存储管理单元中空闲的插槽,用于备份元数据信息;
当所述的元数据备份空闲红黑树是颗空树,即当前所有插槽都在使用中,则需要剔除一个最近最少使用插槽并写入新的元数据信息;依次遍历最近最少使用的红黑树中的节点,获取节点指向的元数据信息以及所占用的插槽编号;判断当前节点所指向的插槽是否用于记录当前正在执行操作的元数据的繁忙链表,当所述最近最少访问节点所指向的插槽用于记录当前正在执行操作的元数据,即元数据位于繁忙链表时,则重新遍历下一个最近最少使用的节点;
当所述最近最少访问节点所指向插槽没有用于记录当前正在执行操作的元数据,即元数据不在繁忙链表中,则替换插槽中的元数据信息,同时将最近最少使用节点从最近最少使用的红黑树中删除,添加由新的元数据信息创建的节点;
所述元数据备份数据存储管理单元包括一个动态备份数组,所述动态备份数组中的每一个元素都是一个文件的元数据信息;
所述元数据备份空闲红黑树快速分配和释放元数据备份数据存储管理单元的空闲插槽,红黑树中的每一个节点包括当前节点中最小分配的空闲插槽和最大分配的空闲插槽;
所述元数据备份已用红黑树,记录当前已经做备份的元数据信息,每一个节点由索引节点号、最后一次修改时间、链表指针、空闲插槽号四个域组成;
所述繁忙链表用于记录当前正在执行元数据或文件数据操作的元数据备份地址,即链表中每个节点由链表指针和动态备份数组中的插槽号组成;
所述元数据预处理单元包括:提供对元数据备份数据的预处理操作。
3.根据权利要求1所述的一种面向持久内存文件系统的事务写优化框架的系统,其特征在于,所述模块M2包括:
数据模块包括:数据备份存储管理单元、数据检索单元、数据合并管理单元和数据写回管理单元;
模块M2.1:在程序执行的初始化阶段,在持久内存中划分出一块持久区域用于存放文件数据和文件数据的日志,文件数据块和文件数据日志块大小相同;
模块M2.2:数据备份存储管理单元中叶子节点由文件数据日志块构成;在程序执行的初始化阶段,在持久内存中划分出一块持久区域作为文件数据日志块的索引区域,即所述数据备份存储管理单元;所述文件数据的日志数据的索引区域记录文件数据日志块的地址信息;日志索引区域中每一个节点由文件写入地址、数据长度、文件数据日志块地址、下一个指针四个域构成;
模块M2.3:数据模块中的数据检索单元由一个全局链表、数据块链表和一颗文件数据日志块索引红黑树构成:
在程序执行的初始化阶段,在持久内存中创建全局链表;
在程序执行的初始化阶段,在动态随机存储器中创建数据检索单元中的数据块链表记录文件数据块和文件数据日志块;所述数据块链表中每一个节点由最小索引号、最大索引号和链表指针三个域构成;
将文件数据日志索引节点组织为一颗红黑树,即所述数据检索单元的文件数据日志块索引红黑树;在分配和释放日志索引节点的过程中,红黑树能够旋转节点以保持树的平衡;将每个文件获得的文件数据日志索引节点组织成基数树;
所述全局链表中的节点即数据备份存储管理单元中基数树的叶子节点;
所述数据块链表记录文件数据块和文件日志数据块的信息;
所述文件数据日志块索引红黑树用于组织文件数据日志块的索引数据节点;
模块M2.4:在程序执行的初始化阶段,在动态随机存储器中创建数据写回管理单元中的写回链表和读写回链表;
写回链表在初始化阶段是空链表,存放的节点是日志索引节点;读写回链表在初始化阶段也是空链表,存放的节点同样是日志索引节点;所述两个链表不会存在重复的日志索引节点;
写回链表存放所有要写回文件的数据,当数据在被写回文件之前被用户访问,则数据从写回链表迁移到读写回链表中;
模块M2.5:在程序执行的初始化阶段,在动态随机存储器中创建文件数据的写操作的文件日志链表,即数据合并管理单元的节点单链表,所述节点单链表中节点由日志索引节点构成,写入文件的数据要先写入文件日志数据块中,日志数据块则保存在节点单链表中;
模块M2.6:日志索引节点的红黑树中分配一个空闲日志索引节点,计算写入当前数据块的偏移量和写入长度,并记录在所分配的日志索引节点中;
模块M2.7:在数据块链表中分配一个空闲数据块;
模块M2.8:将分配的空闲数据块地址记录在日志索引节点的文件数据日志块地址中;
模块M2.9:将用户要写的数据写入分配的空闲数据块;
模块M2.10:查找要写入文件的数据备份存储管理基数树,判断当前要写入数据日志块的日志索引节点是否存在;
若当前要写入数据日志块的日志索引节点已经存在,则将新分配的日志索引节点添加到已经存在的日志索引节点的下一个指针域,同时将已经存在的日志索引节点从写回链表移除,然后添加到日志链表中;
若日志索引节点不存在,则将所述日志索引节点添加到文件的基数树和日志链表中;
若用户要写的数据没有写完,则转到模块M2.6继续执行;
模块M2.11:合并日志链表的日志索引节点;
所述数据备份存储管理单元由一颗基数树构成,基数树由叶子节点和非叶子节点构成,非叶子节点记录叶子节点或非叶子节点的地址,叶子节点记录备份的数据块;叶子节点由数据的位置、数据长度、指针块、下一个指针四个域组成;
所述数据合并管理单元由一个节点单链表构成;所述单链表将对同一数据块的覆盖写或交叉写合并为一个数据块,减少数据的写回次数。
4.根据权利要求1所述的一种面向持久内存文件系统的事务写优化框架的系统,其特征在于,所述模块M3包括:
模块M3.1:创建一个transaction事务,添加START标志;
模块M3.2:当完成元数据模块和数据模块后,则添加COMMIT提交标志;否则,添加ABORTION终止标志;
模块M3.3:若事务成功COMMIT提交,则文件日志链表中的日志索引节点添加到写回链表,同时更新元数据备份数据的状态;
所述原子性决策逻辑模块由队列构成,所述队列中每一个成员都是一个transaction事务,队列中具有两个指针,head指针和tail指针,分别指向队列中第一个事务和最后一个事务,保证元数据与数据操作的原子性,即要么都发生,要么都不发生。
5.根据权利要求4所述的一种面向持久内存文件系统的事务写优化框架的系统,其特征在于,所述模块M3.3包括:
模块M3.3.1:执行元数据写回管理单元将本地元数据信息写入元数据备份数据存储管理单元,保证文件元数据的一致性;
模块M3.3.2:执行数据写回管理单元,将基数树中记录的数据块追加至全局链表中;
所述元数据写回管理单元包括在文件元数据和文件数据操作结束后,将最新的元数据信息写回元数据备份数据存储管理单元中,保证元数据的一致性;
所述数据写回管理单元由一个写回链表和一个读写回链表构成;在完成文件元数据和文件数据操作后,将所述基数树中记录的数据块追加至所述数据模块中的数据检索单元的全局链表和所述写回链表中;
所述读写回链表当前数据出现在全局链表和写回链表,但是尚未将数据从写回链表中写回文件数据块中,此时用户请求访问当前数据块,则将数据块由写回链表转移到读写回链表中。
技术研发人员:黄林鹏,郑圣安,沈艳艳,陈雨亭,晏艳,
申请(专利权)人:上海交通大学,清华大学,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。