CN107679182A - 一种目录配置方法及装置 - Google Patents

一种目录配置方法及装置 Download PDF

Info

Publication number
CN107679182A
CN107679182A CN201710911123.4A CN201710911123A CN107679182A CN 107679182 A CN107679182 A CN 107679182A CN 201710911123 A CN201710911123 A CN 201710911123A CN 107679182 A CN107679182 A CN 107679182A
Authority
CN
China
Prior art keywords
file
filename
storage device
directory entry
concordance list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710911123.4A
Other languages
English (en)
Other versions
CN107679182B (zh
Inventor
夏锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710911123.4A priority Critical patent/CN107679182B/zh
Publication of CN107679182A publication Critical patent/CN107679182A/zh
Application granted granted Critical
Publication of CN107679182B publication Critical patent/CN107679182B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开一种目录配置方法及装置,涉及存储技术领域,解决了磁盘空间消耗较大、遍历查找性能差的问题。该方法包括:接收用于请求创建第一文件的第一请求,获取第一文件的第一文件名以及第二文件名;将第一计算值写入第一索引表中,第二计算值写入第二索引表中,第一计算值为根据第一文件名和预设算法计算得到的,第二计算值为根据第二文件名和预设算法计算得到的,第一文件所属的目录包括第一索引表、第二索引表和顺序表;在顺序表的第一目录项中写入第一文件名、第二文件名以及第一文件的索引号;将第一目录项的标识写入第一索引表;将第一目录项的标识写入第二索引表。

Description

一种目录配置方法及装置
技术领域
本申请实施例涉及存储技术领域,尤其涉及一种目录配置方法及装置。
背景技术
一般情况下,存储设备需要存储大量的文件。为了管理文件的相关信息,存储设备中设置有文件系统,即用于管理文件的程序。文件系统提供了一个结构化的数据存储和组织形式。在文件系统中,用目录表示该文件系统的数据组织结构。
当文件系统支持网络文件系统(Network File System,NFS)协议时,由于NFS协议对文件名大小写敏感,因此字符大小写不同的两个文件名可以在目录中同时存在。在NFS协议中,字符大小写不同的两个文件名已经在目录中同时存在的情况下,若该文件系统还支持通用网络文件系统(Common Internet File System,CIFS)协议,由于CIFS协议对文件名大小写不敏感,因此字符大小写不同的两个文件名会被认为是相同的文件名。为了解决这个问题,存储设备通常将重名文件进行重命名,然后将重命名后的文件名保存于目录中。
目前,在某一文件的目录同时被NFS客户端和CIFS客户端共享的情况下,存储设备将该目录中的数据在磁盘上以树型结构有序组织,且该目录在磁盘上对应两个树型结构:敏感文件名视图树和非敏感文件名视图树。敏感文件名视图树和非敏感文件名视图树均包括有目录中每个文件的文件名以及索引号。由于对于某一目录而言,存储设备需要创建两个树型结构,因此磁盘空间消耗较大,遍历查找性能差。
发明内容
本申请实施例提供一种目录配置方法及装置,能够解决现有的目录配置方法中磁盘空间消耗较大、遍历查找性能差的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种目录配置方法,存储设备接收用于请求创建第一文件的第一请求后,获取第一文件的第一文件名以及获取第一文件的第二文件名,这里,第一文件名为第一文件在第一文件协议中与其他文件名不冲突的名称,第二文件名为第一文件在第二文件协议中与其他文件名不冲突的名称;存储设备将第一计算值写入第一索引表中,将第二计算值写入第二索引表中,第一计算值为根据第一文件名和预设算法计算得到的,第二计算值为根据第二文件名和预设算法计算得到的,第一文件所属的目录包括第一索引表、第二索引表和顺序表,第一索引表与第一文件协议对应,第二索引表与第二文件协议对应;存储设备在顺序表的第一目录项中写入第一文件名、第二文件名以及第一文件的索引号;将第一目录项的标识写入第一索引表,第一索引表存储有第一计算值与第一目录项的标识之间的对应关系;存储设备将第一目录项的标识写入第二索引表,第二索引表存储有第二计算值与第一目录项的标识之间的对应关系。
可选的,上述第一文件名可以第一文件的敏感文件名,上述第二文件名可以为第一文件的非敏感文件名。或者,上述第一文件名可以第一文件的非敏感文件名,上述第二文件名可以为第一文件的敏感文件名。本申请中,对于同一文件,第一索引表中目录项的标识和第二索引表中目录项的标识相同,二者同时指向顺序表中的同一目录项,且同时指向的目录项中存储了该文件的敏感文件名、非敏感文件名以及该文件的索引号。本申请的目录将敏感文件名的结构和非敏感文件名的结构融合为一体,而无需再创建两个树型结构,有效了降低了磁盘空间的消耗。此外,若某一文件的敏感文件名和非敏感文件名相同,则目录项中只需存储一个文件名即可,进一步地降低了磁盘空间的消耗。
可选的,在本申请的一种可能的实现方式中,第一文件协议为NFS协议,第二文件协议为CIFS协议,上述“存储设备获取第一文件的第二文件名”的方法为:存储设备根据第一文件名和预设算法计算第一计算值;存储设备根据第一计算值和第一预设索引关系,确定第一文件名在第一文件协议中是否与其他文件名冲突;当第一文件名在第一文件协议中与其他文件名不冲突时,存储设备转换第一文件名,转换后的第一文件名为第二文件名。
NFS协议对文件名大小写敏感,CIFS协议对文件名大小写不敏感,在NFS协议中不与其他文件名冲突的第一文件名,在CIFS协议中可能与其他文件名冲突。因此,存储设备需要转换第一文件名,以获取在CIFS协议中与其他文件名不冲突的文件名。
可选的,在本申请的另一种可能的实现方式中,上述顺序表占用的存储空间包括至少一个区段,每个区段包括多个间隔,第一目录项占用一个区段中的至少一个间隔。本申请中的目录还包括日志区,日志区包括位图,位图包括多个位,每个位表示顺序表中与该位对应的间隔是否被占用。存储设备在顺序表的第一目录项中写入第一文件名、第二文件名以及第一文件的索引号之后,还将与第一间隔对应的位的状态设置为被占用,第一间隔为第一目录项占用的间隔。
可选的,在本申请的另一种可能的实现方式中,存储设备还接收用于请求删除第一文件的删除请求;相应的,存储设备响应删除请求,从第一索引表中获取第一目录项的标识;存储设备根据第一目录项的标识,在第一目录项中获取第二文件名;存储设备删除第一索引表中的第一目录项的标识与第一计算值之间的对应关系,并删除第二索引表中的第一目录项的标识与第二计算值之间的对应关系;存储设备将与第一间隔对应的位的状态设置为未被占用。
可选的,在本申请的另一种可能的实现方式中,上述日志区还包括日志列表,该日志列表用于记录释放日志,释放日志用于指示被解除占用的间隔。在将与第一间隔对应的位的状态设置为未被占用后,存储设备还在释放日志中添加第一日志,该第一日志用于表示第一间隔被解除占用。
在删除文件时,存储设备并未对顺序表中的数据进行任何处理,提高了批量删除文件的性能。
可选的,在本申请的另一种可能的实现方式中,上述日志列表还用于记录重用日志,重用日志用于指示被重新占用的间隔。相应的,存储设备还执行下述流程:在接收用于请求创建第二文件的第二请求后,获取第二文件的第三文件名以及获取第二文件的第四文件名,第三文件名为第二文件在第一文件协议中与其他文件名不冲突的名称,第四文件名为第二文件在第二文件协议中与其他文件名不冲突的名称;将第三计算值写入第一索引表中,将第四计算值写入第二索引表中,第三计算值为根据第三文件名和预设算法计算得到的,第四计算值为根据第四文件名和预设算法计算得到的;当释放日志的数量大于或等于第一预设阈值时,将第一目录项中的第一文件名、第二文件名以及第一文件的索引号更新为第三文件名、第四文件名以及第二文件的索引号;将第一目录项的标识写入第一索引表和第二索引表,第一索引表存储第三计算值与第一目录项的标识之间的对应关系,第二索引表存储第四计算值与第一目录项的标识之间的对应关系;将与第一间隔对应的位的状态设置为被占用;在重用日志中添加第二日志,第二日志用于表示第一间隔被重新占用。
存储设备在重新使用第一区段的第一间隔时,并未直接删除与该第一区段的第一间隔对应的释放日志,而是直接添加了第二日志,这样,存储设备将删除的随机IO变成了写入的顺序IO,提升了IO性能。
可选的,在本申请的另一种可能的实现方式中,当重用日志的数量大于或等于第二阈值时,存储设备删除第一日志和第二日志。
存储设备整理释放日志和重用日志,一个释放日志和相应的重用日志可以抵消,这样,日志列表仅仅保留与已被释放、且未被重用的存储空间对应的释放日志,大大减少了日志列表中日志的数量,降低了存储空间的利用率。
可选的,在本申请的另一种可能的实现方式中,存储设备还可以接收客户端发送的包括上述第二文件名的数据读取请求,该数据读取请求用于请求读取第一文件的数据;响应该数据读取请求,存储设备根据第二文件名执行一次哈希,计算得到第二计算值;存储设备从第二索引表中,获取与第二计算值对应的第一目录项的标识,并从第一目录项的标识所指示的第一目录项中,获取第一文件的索引号,这样,存储设备根据第一文件的索引号,能够获取第一文件的数据。在获取到第一文件的数据后,存储设备向客户端发送第一文件的数据。
存储设备通过计算第二文件名的哈希值,即可确定出存储第一文件的索引号的目录项的标识,提高了查找性能。
可选的,在本申请的另一种可能的实现方式中,存储设备还可以接收客户端发送的遍历目录请求,该客户端支持第一文件协议;响应该遍历请求,存储设备从目录的位图中确定位图中状态为被占用的位(将这一类型的位简称为目标位),并从顺序表中获取与目标位对应的目录项,这样,存储设备能够从获取到的目录项中提取属于第一协议的文件名,进而该存储设备向客户端发送其提取到的文件名。
第二方面,提供一种存储设备,该存储设备包括接收单元、获取单元以及写单元。具体的,接收单元,用于接收用于第一请求,第一请求用于请求创建第一文件。获取单元,用于响应上述接收单元接收到的第一请求,获取第一文件的第一文件名以及获取第一文件的第二文件名,第一文件名为第一文件在第一文件协议中与其他文件名不冲突的名称,第二文件名为第一文件在第二文件协议中与其他文件名不冲突的名称。写单元,用于将第一计算值写入第一索引表中,将第二计算值写入第二索引表中,第一计算值为根据第一文件名和预设算法计算得到的,第二计算值为根据第二文件名和预设算法计算得到的,第一文件所属的目录包括第一索引表、第二索引表和顺序表,第一索引表与第一文件协议对应,第二索引表与第二文件协议对应,以及用于在顺序表的第一目录项中写入上述获取单元获取到的第一文件名、第二文件名以及第一文件的索引号,以及用于将第一目录项的标识写入第一索引表,第一索引表存储有第一计算值与第一目录项的标识之间的对应关系,以及用于将第一目录项的标识写入第二索引表,第二索引表存储有第二计算值与第一目录项的标识之间的对应关系。
可选的,在本申请的一种可能的实现方式中,上述第一文件协议为NFS协议,第二文件协议为CIFS协议。在这种情况下,本申请中的存储设备还包括计算单元,该计算单元用于根据上述获取单元获取到的第一文件名和预设算法计算第一计算值。相应的,本申请中的存储设备还包括确定单元,该确定单元用于根据上述计算单元计算出的第一计算值和第一预设索引关系,确定第一文件名在第一文件协议中是否与其他文件名冲突。本申请中的存储设备还包括转换单元,该转换单元用于当上述确定单元确定第一文件名在第一文件协议中与其他文件名不冲突时,转换第一文件名,转换后的第一文件名为第二文件名。
可选的,在本申请的一种可能的实现方式中,上述顺序表占用的存储空间包括至少一个区段,每个区段包括多个间隔,上述第一目录项占用一个区段中的至少一个间隔;本申请中的目录还包括日志区,该日志区包括位图,该位图包括多个位,每个位表示顺序表中与该位对应的间隔是否被占用。相应的,本申请中的存储设备还包括设置单元,该设置单元,用于在上述写单元在顺序表的第一目录项中写入第一文件名、第二文件名以及第一文件的索引号之后,将与第一间隔对应的位的状态设置为被占用,第一间隔为第一目录项占用的间隔。
可选的,在本申请的一种可能的实现方式中,上述接收单元还用于接收用于请求删除第一文件的删除请求。上述获取单元,还用于响应上述接收单元接收到的删除请求,从第一索引表中获取第一目录项的标识,以及还用于根据第一目录项的标识,在第一目录项中获取第二文件名。本申请中的存储设备还包括删除单元,该删除单元用于删除第一索引表中的第一目录项的标识与第一计算值之间的对应关系,并删除第二索引表中的第一目录项的标识与第二计算值之间的对应关系。相应的,上述设置单元,还用于将与第一间隔对应的位的状态设置为未被占用。
可选的,在本申请的一种可能的实现方式中,上述日志区还包括日志列表,该日志列表用于记录释放日志,释放日志用于指示被解除占用的间隔。本申请中的存储设备还包括添加单元,该添加单元用于在释放日志中添加第一日志,第一日志用于表示第一间隔被解除占用。
可选的,在本申请的一种可能的实现方式中,上述日志列表还用于记录重用日志,重用日志用于指示被重新占用的间隔。上述接收单元,还用于接收第二请求,第二请求用于请求创建第二文件的第二请求。上述获取单元,还用于在接收单元接收到第二请求后,获取第二文件的第三文件名以及获取第二文件的第四文件名,第三文件名为第二文件在第一文件协议中与其他文件名不冲突的名称,第四文件名为第二文件在第二文件协议中与其他文件名不冲突的名称。上述写单元,还用于将第三计算值写入第一索引表中,将第四计算值写入第二索引表中,第三计算值为根据第三文件名和预设算法计算得到的,第四计算值为根据第四文件名和预设算法计算得到的。本申请中的存储设备还包括更新单元,该更新单元用于当释放日志的数量大于或等于第一预设阈值时,将第一目录项中的第一文件名、第二文件名以及第一文件的索引号更新为第三文件名、第四文件名以及第二文件的索引号。上述写单元,还用于将第一目录项的标识写入第一索引表和第二索引表,第一索引表存储第三计算值与第一目录项的标识之间的对应关系,第二索引表存储第四计算值与第一目录项的标识之间的对应关系。上述设置单元,还用于将与第一间隔对应的位的状态设置为被占用。上述添加单元,还用于在重用日志中添加第二日志,第二日志用于表示第一间隔被重新占用。
可选的,在本申请的一种可能的实现方式中,本申请中的存储设备还包括删除单元,该删除单元用于当重用日志的数量大于或等于第二阈值时,删除第一日志和第二日志。
第三方面,提供一种该存储设备,该存储设备包括:一个或多个处理器、存储器、通信接口。其中,存储器、通信接口与一个或多个处理器耦合;存储设备通过通信接口与客户端通信;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,存储设备执行如上述第一方面及其各种可能的实现方式的目录配置方法。
第四方面,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令;当其在存储设备上运行时,使得存储设备执行如上述第一方面及其各种可能的实现方式的目录配置方法。
第五方面,还提供一种包含指令的计算机程序产品,当其存储设备上运行时,使得存储设备执行如上述第一方面及其各种可能的实现方式的目录配置方法。
在本申请中,上述存储设备的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请中第二方面、第三方面、第四方面、第五方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面、第三方面、第四方面、第五方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。
附图说明
图1为现有技术中目录按照敏感与非敏感文件名的有序存储方式存储的结构示意图;
图2为现有技术中目录按照敏感文件名顺序存储方式存储的结构示意图;
图3为本申请实施例提供的目录配置系统的结构示意图;
图4为本申请实施例提供的存储设备的结构示意图;
图5为本申请实施例提供的Hash表的结构示意图;
图6为本申请实施例提供的目录配置方法的流程示意图一;
图7为本申请实施例提供的目录配置方法的流程示意图二;
图8为本申请实施例提供的目录配置方法的流程示意图三;
图9为本申请实施例提供的目录配置方法的流程示意图四;
图10为本申请实施例提供的目录配置方法的流程示意图五;
图11为本申请实施例提供的存储设备的结构示意图一;
图12为本申请实施例提供的存储设备的结构示意图二。
具体实施方式
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
文件系统提供了一个结构化的数据存储和组织形式,其使用文件和树形目录的抽象逻辑概念代替了硬盘、光盘等存储设备使用数据块的概念,为用户访问和查找文件提供了方便。为了管理目录下的子文件和子目录,目录的数据需要保存该目录下所有子文件的名字和索引(inode)号。其中,文件名是用户可见的,用户通过文件名来管理和访问文件;inode号是文件系统中文件的内部索引,用于关联该文件的元数据与该文件的数据。由于文件系统会记录文件的文件名和inode号,因此,在文件系统的应用场景中,用户无需关心文件的数据存储在存储设备的哪些数据块上,只需要记住文件所属的目录和文件名就可以完成对文件中的数据的访问。
目前,有些文件系统既可支持NFS协议,还可支持CIFS协议。由于NFS协议对文件名大小写敏感,因此,字符大小写不同的两个文件名可以在NFS协议中同时存在。由于CIFS协议对文件名大小写不敏感,因此,字符大小写不同的两个文件名则会被认为是相同的文件名。
示例性的,在NFS客户端的同一目录中,可同时存在文件名分别为“abc”和“ABC”的两个文件。在CIFS客户端的同一目录中,若已经存在文件名为“abc”的文件,则不允许再创建文件名为“ABC”的文件。
由于NFS协议和CIFS协议对文件名大小写是否敏感的处理不同,因此,如果同一文件的目录同时被NFS客户端和CIFS客户端共享,在NFS客户端不重名的文件在CIFS客户端下则会有重名的可能性,并且重名的文件将不能被正确访问。
针对这一问题,通常的解决方法为:存储设备将后续创建的文件“ABC”在CIFS客户端的目录中重命名,如“ABC~1”。这样,用户使用NFS客户端可看到该目录下存在“abc”和“ABC”两个文件,使用CIFS客户端可看到该目录下存在“abc”和“ABC~1”两个文件。所以,相同目录在不同协议的客户端上,其可见的文件名可能是不同的。
因而,在同一文件系统中,目录的布局需要同时支持敏感文件名的访问和非敏感文件名的访问。
目前,存储设备中目录的布局方式通常包括:敏感与非敏感文件名的有序存储方式、以及敏感与非敏感文件名的顺序存储方式。
1)敏感与非敏感文件名的有序存储方式
有序存储方式是指将目录中的所有子文件(或子目录)按照文件名的哈希(hash)值有序的在磁盘上存储。
可选的,目录中的数据在存储设备的磁盘上以树型结构有序组织。由于同一文件在NFS协议和CIFS协议中的文件名可能不同,因此,对于同一目录,存储设备设置有两个不同的树型结构:大小写敏感(Case Sensitive,CS)文件名视图树和大小写非敏感(CaseInsensitive,CI)文件视图树。
在CS文件名视图树中,存储设备根据每个文件的文件名计算哈希值,然后存储设备按照哈希值从小到大的顺序依次排列索引值,这里索引值表示文件名和文件的索引号。在CI文件名视图树中,存储设备将每个文件的文件名所包括的英文字母均转换为小写,并根据转换后的文件名计算哈希值,然后按照哈希值从小到大的顺序依次排列索引值。
示例性的,如图1所示,用户使用NFS客户端在同一级目录中依次成功创建a、b、A、B四个文件,这四个文件的inode号分别为inode1、inode2、inode3、inode4,这四个文件名的哈希值按照从小到大的顺序排列为key(A)、key(B)、key(a)、key(b)。由于NFS协议对文件名大小写敏感,因此,在CS文件名视图树下,用户可见的文件名为a、b、A、B,相应的,在CS文件名视图树中,索引值按照文件名的哈希值从小到大的顺序依次排列为A-inode3、B-inode4、a-inode1、b-inode2。由于CIFS协议对文件名大小写不敏感,因此,在CIFS协议中,文件名a和文件名A冲突,文件名b和文件名B冲突。存储设备将后续创建的文件A和文件B分别重命名为A~1和B~1,然后将所有文件名包括的英文字母转换为小写,这样,在CIFS协议中上述四个文件的文件名分别为a~1、b~1、a、b。存储设备根据转换后的文件名计算哈希值,若哈希值按照从小到大的顺序排列为key(a)、key(a~1)、key(b)、key(b~1),则在CI文件名视图树中,索引值按照文件名的哈希值从小到大的顺序依次排列为a-inode1、A~1-inode3、b-inode2、B~1-inode4。
此外,由于在更新某一文件在某一视图树中的文件名后,还需相应的更新该文件在另一视图树中的文件名,因此,CS文件名视图树和CI文件名视图树中的每个索引值均需保存同一文件在两个不同视图树中的文件名。结合上述图1,也就是说,图1示出的每个索引值中,除了存储本视图树中的文件名与inode号外,还会存储另外一个视图树中的文件名。
示例性的,对于图1中的文件A,在CS文件名视图树中,与文件A对应的索引值的内容为A-A~1-inode3,在CI文件名视图树中,与文件A对应的索引值的内容为A~1-A-inode3。这样,若用户使用NFS客户端将文件A的名字重命名为C,则存储设备需在CS文件名视图树中将文件名A更新为C,存储设备根据A-A~1-inode3可获取到该文件在CI文件名视图树中的名称为A~1,这样,存储设备可在CI文件名视图树中将文件名A~1更新为C。
需要说明的是,在有序存储方式中,目录中的数据除了以树形结构有序组织之外,还可以是以哈希表、有序链表等其他有序数据结构有序组织。
有序存储方式中,由于目录中的数据在磁盘上是有序排列的,因此,在客户端访问该目录时,存储设备无需将目录中的数据在内存中单独排序。此外,在有序存储方式中,目录的结构可以无限扩展,支持创建海量的子文件和子目录。
但是,有序存储方式中,对于同一目录,存储设备需要创建两个树型结构,磁盘空间消耗较大。由于目录中的数据是按照文件名的哈希值从小到大的顺序排列,因此目录的数据分布较为离散,数据的输入/输出(Input/Output,I/O)性能较低。
2)按敏感文件名顺序存储方式
顺序存储方式是指目录中的所有子文件(或子目录)按照创建的先后顺序在磁盘上依次存储。具体的,存储设备按照创建的先后顺序在磁盘上依次存储敏感文件名和文件的索引号。当客户端访问该目录时,存储设备将该目录中的所有数据加载到内存中,并在内存中创建CS文件名视图树和CI文件名视图树。
示例性的,如图2所示,用户使用NFS客户端在同一级目录中依次成功创建a、b、A、B四个文件,这四个文件的inode号分别为inode1、inode2、inode3、inode4,则该目录中的数据在存储设备的磁盘中以表1的形式存储。
表1
a-inode1
b-inode2
A-inode3
B-inode4
当客户端访问该目录时,存储设备将该目录中的所有数据加载到内存中,并在内存中创建CS文件名视图树和CI文件名视图树。图2中的CS文件名视图树和CI文件名视图树可以参考上述对图1的描述,此处不再进行详细赘述。
顺序存储方式消耗了极少的磁盘空间,数据刷盘的I/O数量较少,输入性能较高,但是,随机查找性能非常低。在目录下的子文件(子目录)非常多的场景中,存储设备需要通过逐一遍历目录中的数据才能找到指定的文件。例如,客户端访问上述表1中的文件B,存储设备需要将所有的子文件依次扫描,最后才能找到文件B的inode号。
此外,在顺序存储方式中,由于存储设备是在内存中创建CS文件名视图树和CI文件名视图树,当为该目录分配的内存被释放时,CI文件名视图树中文件名和文件之间的对应关系可能发生变化,导致CIFS客户端无法准确的获取到文件数据。
示例性的,用户使用NFS客户端在同一级目录中依次成功创建A、a、a~1三个文件后,存储设备在内存中创建CS文件名视图树和CI文件名视图树。CI文件名视图树中的文件名均为大小写非敏感的名称,在创建CI文件名视图树时,存储设备先记录文件A的名称“A”,然后再记录文件a的文件名“a”,此时,“a”与“A”冲突,因此,存储设备将文件a的文件名“a”更新为“a~1”。接着,存储设备记录文件a~1的文件名“a~1”,此时,存储设备之前记录的文件名“A”和“a~1”均与文件a~1的文件名“a~1”冲突,因此,存储设备将文件a~1的文件名“a~1”更新为“a~1~1”。这样,存储设备创建的CI文件名视图树中的文件名分别为A、a~1(对应文件a)、a~1~1(对应文件a~1)。相应的,用户使用CIFS客户端看到的文件名为A、a~1、a~1~1。
若用户使用NFS客户端删除了文件A,间隔一段时间后,用户又重新创建了一个命名为A,索引号为Inode4的文件,此时,目录的数据在存储设备的磁盘上的顺序就变成了a、a~1、A(重新创建的文件)。若用户长时间未使用CIFS客户端访问目录,则存储设备删除之前在内存中创建的CI文件名视图树。在重新创建文件名为A,索引号为Inode4的文件后,用户使用CIFS客户端访问目录的情况下,存储设备会重新创建CI文件名视图树。存储设备重新创建的CI文件名视图树中的文件名分别为a(对应文件a)、a~1(对应a~1)、A~1~1(对应重新创建的文件A)。这样,用户使用CIFS客户端看到的文件名为a、a~1、A~1~1。
但是,用户第一次看到的a~1(对应文件a)是索引号为inode2的文件;第二次看到的a~1(对应a~1)则是索引号为inode3的文件。由于删除文件A之后,又重新创建了另外一个文件名为A的文件,导致其他文件名与文件之间的对应关系发生了变化,使得CIFS客户端无法准确的获取到文件数据。
针对上述有序存储方式和顺序存储方式存在的问题,本申请实施例提供一种目录配置方法,存储设备在磁盘中配置了包含有第一索引表、第二索引表以及顺序表的目录,第一索引表用于存储第一文件系统中文件名的哈希值以及记录有文件名和文件的索引号的目录项的标识,第二索引表与第一索引表类似,不同的是,第二索引表与另一个文件协议对应。对于某一文件而言,顺序表的一个目录项中存储了该文件的敏感文件名、非敏感文件名以及该文件的索引号。本申请中的目录将敏感文件名的结构和非敏感文件名的结构融合为一体,而无需再创建两个树型结构,有效地降低了存储设备中磁盘空间的消耗。本申请目录中的所有数据均存储于磁盘中,存储设备无需在内存中进行排序,内存的占用率较低。第一索引表和第二索引表中均记录了目录项的标识,且目录项中同时存储了该文件的敏感文件名和非敏感文件名,有效的保证了文件与文件名之间对应关系的稳定性,使得CIFS客户端能够准确的获取到文件数据。
此外,本申请实施例的目录还包括日志区,通过在日志区中逐一记录释放日志,完成文件的批量删除,优化了在单个目录中删除文件的IO性能。
本申请实施例提供的目录配置方法适用于目录配置系统。图3为本申请实施例提供的目录配置系统的结构示意图。如图3所示,该目录配置系统包括至少一个客户端30和存储设备31,每个客户端30均与存储设备31通过网络连接。每个客户端30与存储设备31通信,能够访问存储设备31存储的数据。存储设备31包括处理器和存储器,存储器中存储有文件系统,该文件系统用于管理目录。
其中,图3中的客户端30与存储设备31可以部署于同一设备上,也可以独立部署,本申请实施例对此不作具体限定。特别的,若客户端30与存储设备31部署于同一设备,则该设备为通用计算机设备,该设备可以仅支持一个操作系统,也可以支持两个或更多的操作系统。
本申请实施例以客户端30与存储设备31独立部署为例进行说明。
客户端30可以为电脑、手机、平板电脑等终端设备,该客户端30的硬件结构与通用的计算机设备的硬件结构相同,此处不再进行详细赘述。客户端30的操作系统可以为Linux操作系统,也可以为Windows操作系统,还可以为其他操作系统,本申请实施例对此不作具体限定。若客户端30的操作系统为Linux操作系统,则该客户端30为上述NFS客户端。若客户端30的操作系统为Windows操作系统,则该客户端30为上述CIFS客户端。
存储设备31可以为块设备、网络附加存储(Network Attached Storage,NAS)设备等设备,本申请实施例对此不作具体限定。
图4是本申请实施例提供的一种存储设备的结构示意图,该存储设备应用于图3所示的目录配置系统中。参见图4,该存储设备包括:通信接口40、处理器41和存储器42。其中,通信接口40、处理器41与存储器42之间通过系统总线43连接,并完成相互间通信。
通信接口40用于与其他设备通信,例如向客户端30发送文件的数据。
存储器42可用于存储目录的所有数据,也可以用于存储软件程序以及应用模块,处理器41通过运行存储在存储器42的软件程序以及应用模块,从而执行存储设备的各种功能应用以及目录配置。
存储器42可主要包括存储程序区420和存储数据区421,其中,存储程序区420可存储操作系统、至少一个功能所需的应用程序,比如更新第一文件在目录中的文件名等;存储数据区421可存储目录的数据。本申请实施例中,目录包括第一索引表、第二索引表、日志区和顺序表。目录包括的各个部分的详细解释参考后续描述,这里不对其进行详细描述。在本申请实施方式中,所述操作系统可以为Windows操作系统,也可以是Linux操作系统。
在本申请实施例中,存储器42可以包括易失性存储器,例如非挥发性动态随机存取内存(Nonvolatile Random Access Memory,NVRAM)、相变化随机存取内存(PhaseChange RAM,PRAM)、磁阻式随机存取内存(Magnetic RandomAccess Memory,MRAM)等;存储器32还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、闪存器件,例如反或闪存(NOR flash memory)或是反及闪存(NAND flash memory)。非易失存储器储存处理器41所执行的操作系统及应用程序。处理器41从非易失存储器加载运行程序与数据到内存并将数据内容储存于大量储存装置中。
存储器42可以是独立存在,通过系统总线43与处理器41相连接。存储器42也可以和处理器41集成在一起。
处理器41是存储设备的控制中心。处理器41利用各种接口和线路连接整个存储设备的各个部分,通过运行或执行存储在存储器42内的软件程序和/或应用模块,以及调用存储在存储器42内的数据,执行存储设备的各种功能和处理数据,从而对存储设备整体监控。
处理器41可以仅包括中央处理器(Central Processing Unit,CPU),也可以是CPU、数字信号处理器(Digital Signal Processor,DSP)以及通信单元中的控制芯片的组合。在本申请实施方式中,CPU可以是单运算核心,也可以包括多运算核心。在具体实现中,作为一种实施例,处理器41可以包括一个或多个CPU,例如图4中的处理器41包括CPU 0和CPU 1。
系统总线43可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该系统总线43可以分为地址总线、数据总线、控制总线等。本申请实施例中为了清楚说明,在图4中将各种总线都示意为系统总线43。
为了便于理解本申请实施例提供的目录配置方法,首先介绍本申请实施例中存储设备的存储数据区421所存储的目录。
本申请实施例中的存储设备将目录在磁盘的存储结构按照目录数据的偏移地址的从小到大的顺序依次划分为第一索引表、第二索引表、日志区和顺序表这四部分。第一索引表与第一文件协议对应,第二索引表与第二文件协议对应。也就是说,第一索引表是在第一文件协议的基础上创建的,第二索引表是在第二文件协议的基础上创建的。
为了便于理解,本申请实施例以第一文件协议为NFS协议,第二文件协议为CIFS协议为例进行说明。具体的,由于NFS协议对文件名大小写敏感,因此,第一索引表又称为CS索引表。由于CIFS协议对文件名大小写非敏感,因此,第二索引表又称为CI索引表。相应的,本申请实施例中存储设备的存储数据区421所存储的目录包括CS索引表、CI索引表、日志区和顺序表这四部分。这四部分的具体内容如下:
1)CS索引表
可选的,CS索引表保存有根据某一文件在NFS协议的文件名计算出的Hash值与目录项(该目录项存储有该文件的文件名和索引号)的标识之间的对应关系。目录项的具体内容请参考后续介绍。
本申请实施例中的CS索引表不仅限于通常理解的表格,该CS索引表的数据结构可以为Hash表,也可以为B+树结构,还可以为有序数组结构,还可以为AVL树结构,还可以为其它能够实现CS索引表的功能的结构,本申请实施例对此不作具体限定。
为了便于描述,本申请实施例以CS索引表的数据结构为Hash表为例进行说明。结合上述描述,表2示出了本申请实施例中CS索引表的结构。
表2
Hash值 目录项的标识
Hash 1 区段(Segment)1+间隔(slot)1
Hash 3 区段3+间隔5
…… ……
表2中的Hash值为存储设备根据预设的Hash算法将CS文件名计算出的64位的Hash值,目录项的标识用于表示顺序表(后续介绍)中的一个固定位置,由区段ID和间隔ID组成,该位置存放了对应文件的文件名和索引号。
这样,在NFS客户端访问某一文件的数据时,存储设备计算出该文件的CS文件名的Hash值,便可在CS索引表中获取到对应的目录项的标识,从而根据获取到的目录项的标识得到该文件的索引号,进而根据该文件的索引号读取该文件的数据。
可选的,在物理上,存储设备预留第一存储空间,如0~1GB,存储CS索引表中的数据,并按照4KB大小将该第一存储空间划分为不同的数据块(block)。数据块之间存在指向关系,相应的,这些数据块组成了Hash表。
Hash表以Hash值为索引,将64位的Hash值按位从低到高分为了3级Hash段。目前,存储设备共使用hash值中的30位,hash值中的其余34位暂未使用。相应的,第一级Hash段和第二级Hash段的长度为11位,第三级Hash段的长度为8位。3级Hash段最多支持3级Hash表。前面两级Hash表中的每个数据块记录有用于指向下一级Hash表中某一数据块的指针信息,最后一级Hash表中的每个数据块记录有目录项的标识。存储设备在获取到某一Hash值后,根据该Hash值和预先存储的Hash表可确定出系统中是否已经存储有与该Hash值对应的文件名。
示例性的,图5示出了存储设备预先生成的3级Hash表,第一级Hash表和第二级Hash表中的数据块均用于存储指向下一级Hash表中某一数据块的指针信息,第三级Hash表中的数据块存储有文件名和索引号。存储设备在获取到CS文件名后,计算该CS文件名的Hash值,并将该Hash值按位从低到高分为了3级Hash段:第一级Hash段、第二级Hash段以及第三级Hash段。若第一级Hash段的内容为00000000000、第二级Hash段的内容为00000000000,第三级Hash段的内容为00000000,存储设备根据第一级Hash段的内容“00000000000”,在图5示出的第一级Hash表查找,获取到在第二级Hash表的数据块1;再根据第二级Hash段的内容“00000000000”,在图5示出的第二级Hash表查找,获取到在第三级Hash表的数据块2,数据块2中存储有与“00000000”对应的文件名和索引号。
需要说明的是,本申请实施例中的Hash表是存储设备随着创建文件逐渐生成的。
2)CI索引表
CI索引表的数据结构与上述CS索引表的数据结构一致。唯一不同的是,CI索引表中的Hash值是采用CI文件名计算出的。具体的,存储设备将CI文件名中的所有英文字母转换为小写,然后将转换后的文件名根据预设的Hash算法,计算出64位的Hash值。
在物理上,存储设备预留第二存储空间,如1G~2G,存储CI索引表中的数据,并按照4KB大小将该第二存储空间划分为不同的数据块。这些数据块组成了Hash表。这里的Hash表与CS索引表中的Hash表相同,此处不再进行详细赘述。
3)日志区
在物理上,存储设备预留第三存储空间,如2G~3G,存储日志区中的数据。
日志区包括位图和日志列表。其中,位图占用第三存储空间中前128兆字节(MB)的空间,位图包括多个位,每个位表示顺序表中与该位对应的间隔(后续介绍)是否被占用。例如,位图中其中一位的数值为“0”,表示与该位对应的间隔未被占用,数值为“1”表示与该位对应的间隔已被占用。第三存储空间中除位图所占的空间之外,剩余的存储空间均用于存储日志列表,日志列表用于记录释放日志和重用日志,释放日志用于指示被解除占用的间隔,重用日志用于指示被重新占用的间隔。可选的,日志列表中的日志以数组方式顺序组织。
4)顺序表
顺序表用于存储目录数据,即存储某一文件的文件名和该文件的索引号。本申请实施例将文件名和文件的索引号称为目录项,这样,顺序表可存储多个目录项,每个目录项包括一个文件的文件名和该文件的索引号。多个目录项按照创建时间的先后顺序依次排列。
具体的,若某一文件的CS文件名和CI文件名相同,则与该文件对应的目录项包括该文件的一个文件名和索引号。示例性的,表3示出了该场景中目录项的结构。
表3
文件名 索引号
若某一文件的CS文件名和CI文件名不同,则与该文件对应的目录项包括该文件的CS文件名、CI文件名和索引号,且该文件的CS文件名和该文件的CI文件名均与该文件的索引号对应。示例性的,表4示出了该场景中目录项的结构。表4中,CS文件名和CI文件名均对应同一索引号。
表4
在物理上,存储设备将存放顺序表的数据的存储空间划分成至少一个区段(segment),每个区段占用的存储空间大小为8KB,将每个区段划分成至少一个等长的间隔(slot)。每个区段最多包括256个间隔,每个间隔占用的存储空间大小为32字节(Byte,B)。每个区段ID的长度为3字节(Byte,B),每个间隔ID的长度为1B。
顺序表中的每个目录项均占用一个区段中的至少一个间隔。当某一目录项占用多个间隔时,该目录项的位置信息由第一个间隔的ID表示。同一个目录项的数据不能跨区段存放。综上,本申请实施例中,通过区段ID和间隔ID便能唯一确认一个目录项的位置。相应的,本申请实施例中使用区段ID和间隔ID作为目录项的标识。
下面结合图3所示的目录配置系统的结构示意图,图4所示的存储设备的结构示意图,以及上述目录结构对本申请提供的目录配置方法进行详细描述。
为了便于描述,本申请实施例以用户使用NFS客户端请求创建第一文件为例,即以第一文件协议为NFS协议,第二文件协议为CIFS协议为例进行说明。相应的,第一索引表为CS索引表,第二索引表为CI索引表。
具体的,请参见图6,图6为本申请实施例提供的一种目录配置方法的流程示意图。如图6所示,本实施例提供的目录配置方法中,步骤S600由图3所示的客户端30执行,具体可由客户端设备30的处理器执行。另外,步骤S601~S611由图3所示的存储设备31,具体可由图4所示的存储设备中的处理器41执行。
如图6所示,本申请实施例提供的目录配置方法具体包括如下步骤。
S600、NFS客户端向存储设备发送用于请求创建第一文件的第一请求,该第一请求包括第一文件名。
S601、存储设备获取第一文件名,并根据第一文件名和预设算法,计算第一计算值。
可选的,若CS索引表的数据结构为Hash表,CS索引表的结构如表2所示,则本申请实施例中的预设算法为预设的Hash算法。存储设备根据第一文件名和预设的Hash算法,计算第一文件名的Hash值。
结合上述CS索引表的描述可知,若CS索引表的数据结构为除Hash表之外的其他结构,则预设算法可以为其他可计算文件名的算法,本申请实施例对此不作具体限定。
本申请后续内容均以预设算法为预设的Hash算法为例进行说明。
S602、存储设备根据第一计算值和第一预设索引关系,判断第一文件名在NFS协议中是否与其他文件名冲突。
容易理解的是,若CS索引表的数据结构为Hash表,则第一预设索引关系为Hash表。若CS索引表的数据结构为除Hash表之外的其他结构,则预设索引关系为其他索引关系,且该索引关系与CS索引表的数据结构对应。
这里以第一预设索引关系为Hash表为例进行说明。结合前面描述,Hash表存储有所有已创建的文件的文件名和索引号,以及指向存储文件名和索引号的块的各级指针信息。
具体的,存储设备在获取到第一计算值后,即在存储设备获取到第一文件名的Hash值后,将该Hash值按位从低到高划分为3段,并根据与NFS协议对应的Hash表确定第一文件名的Hash值对应的块是否记录有有效的文件名和索引号。若已经记录,则存储设备确定第一文件名在NFS协议中与其他文件名冲突,这样的话,无法创建第一文件,该存储设备向NFS客户端发送失败响应。若没有记录,则存储设备确定第一文件名在NFS协议中与其他文件名不冲突。若存储设备确定第一文件名在NFS协议中与其他文件名不冲突,存储设备执行S603。若冲突,则创建文件失败。
S603、存储设备确定第一文件在NFS协议中的名称为第一文件名。
S604、存储设备转换第一文件名,并根据转换后的第一文件名和预设算法计算第二计算值。
具体的,存储设备将第一文件名中所有英文字母转换为小写,并根据转换后的第一文件名和预设算法计算第二计算值。这里,存储设备计算第二计算值的方法可以参考上述存储设备计算第一计算值的方法,此处不再进行详细赘述。
S605、存储设备根据第二计算值和第二预设索引关系,判断转换后的第一文件名在第二文件协议中是否与其他文件名冲突。
第二预设索引关系与上述第一预设索引关系类似,不同的是,第二预设索引关系与CIFS协议对应,而第一预设索引关系与NFS协议对应。
存储设备判断转换后的第一文件名在第二文件协议中是否与其他文件名冲突的方法与上述存储设备判断第一文件名在NFS协议中是否与其他文件名冲突的方法类似,此处不再进行详细赘述。
具体的,若存储设备确定转换后的第一文件名在第二文件协议中与其他文件名冲突,则存储设备执行S606;若存储设备确定转换后的第一文件名在第二文件协议中与其他文件名不冲突,则存储设备执行S607。
S606、存储设备对转换后的第一文件名进行重命名,直至重命名后的文件名在第二文件协议中与其他文件名不冲突。
具体的,存储设备将转换后的第一文件名追加后缀“~1”,直至追加后缀的文件名在第二文件协议中与其他文件名不冲突,这样,存储设备将在第二文件协议中与其他文件名不冲突的文件名确定为第二文件名。
示例性的,若第二文件协议中已经存在文件名“abc”,第一文件名为“ABC”,转换后的第一文件名为“abc”,则转换后的第一文件名在第二文件协议中与其他文件名冲突,存储设备将转换后的第一文件名“abc”重命名为“abc~1”,这样,“abc~1”在第二文件协议中与其他文件名不冲突。因此,存储设备将“abc~1”确定为第二文件名。
S607、存储设备将转换后的第一文件名确定为第二文件名。
若转换后的第一文件名在第二文件协议中与其他文件名不冲突,则存储设备可直接将换换后的第一文件名确定为第二文件名。
需要说明的是,若第一文件名未包括英文大写字母,则转换后的第一文件名与第一文件名相同,这样的话,若转换后的第一文件名在第二文件协议中与其他文件名不冲突,本申请实施例中第一文件名与第二文件名相同。
示例性的,若第二文件协议中已经存在文件名“abc”,第一文件名为“cd”,转换后的第一文件名为“cd”,转换后的第一文件名在第二文件协议中与其他文件名不冲突,存储设备将““cd”确定为第二文件名。这里第一文件名与第二文件名相同。
S608、存储设备将第一计算值写入CS索引表中,并将第二计算值写入CI索引表中。
第一计算值为第一文件名的Hash值,第二计算值为第二文件名的Hash。结合上述表2,存储设备将第一文件名的Hash值写入CS索引表中。由于CI索引表与CS索引表的结构相同,因此,存储设备也可将第二文件名的Hash值写入CI索引表中。
S609、存储设备在顺序表的第一目录项中写入第一文件名、第二文件名以及第一文件的索引号。
存储设备在存放顺序表的数据的存储空间中依次分配区段和间隔,并在分配好的区段和间隔中存储目录项的数据,即存储文件名和索引号。由于存储设备是依次分配区段和间隔,若存储设备在一个目录中批量创建文件时,所有记录文件名和索引号的目录项在顺序表中连续分布,数据下盘时的IO也是连续性的,这样,提高了创建文件的性能。
本申请实施例以第一目录项占用第一区段中的第一间隔为例进行说明。存储设备分配第一区段中的第一间隔,并在第一区段中的第一间隔中记录第一目录项的数据,即记录第一文件名、第二文件名以及第一文件名的索引号。
需要说明的是,若第一文件名与第二文件名相同,则存储设备在第一目录项中写入第一文件名(或第二文件名)以及第一文件的索引号,此时,第一目录项的结构可以参考上述表3所示。若第一文件名与第二文件名不同,则存储设备在第一目录项中写入第一文件名、第二文件名以及第一文件的索引号,此时,第一目录项的结构可以参考上述表4所示。
S610、存储设备将与第一间隔对应的位的状态设置为被占用。
结合上述描述,本申请实施例中的目录还包括日志区。日志区包括位图,位图中的每个位表示与该位对应的间隔是否被占用。当存储设备在第一目录项中写入第一文件名、第二文件名以及第一文件的索引号后,存储设备将与第一间隔对应的位的状态设置为被占用。
S611、存储设备将第一目录项的标识写入CS索引表和CI索引表中。
此外,结合上述表2可知,CS索引表还包括目录项的标识,该目录项的标识用于表示文件名和索引号的存储位置。相应的,CI索引表也还包括目录项的标识。
存储设备在第一目录项中写入第一文件名、第二文件名以及第一文件的索引号之后,将该第一目录项占用的区段的ID以及间隔的ID写入CS索引表和CI索引表中。这样,存储设备在接收到访问第一文件的数据的请求后,该存储设备可根据CS索引表或CI索引表获取到第一文件的索引号,进而获取第一文件的数据。
存储设备在执行S611后,向NFS客户端发送成功响应。
本申请实施例中,对于同一文件,CS索引表中目录项的标识和CS索引表中目录项的标识相同,二者同时指向顺序表中的同一目录项,且同时指向的目录项中存储了该文件的敏感文件名、非敏感文件名以及该文件的索引号。本申请的目录将敏感文件名的结构和非敏感文件名的结构融合为一体,而无需再创建两个树型结构,有效了降低了磁盘空间的消耗。此外,若某一文件的CS文件名和CI文件名相同,则目录项中只需存储一个文件名即可,进一步地降低了磁盘空间的消耗。
此外,在某一文件的CS文件名和CI文件名不相同的情况下,CI文件名写入目录项,目录项的数据存储于存储设备的磁盘中,由于磁盘结构持久化,因此本申请实施例中CI文件名和文件之间的对应关系稳定,不会出现CIFS客户端无法准确的获取到文件数据的问题。
从图6示出的实施例可以看出,存储设备可成功创建第一文件。相应的,存储设备也可响应于客户端的请求删除第一文件,这样,存储设备相应的重新配置目录。
为了便于理解,本申请实施例以用户使用NFS客户端请求删除第一文件为例,即以第一文件协议为NFS协议,第二文件协议为CIFS协议为例进行说明。相应的,第一索引表为CS索引表,第二索引表为CI索引表。
具体的,结合上述图6示出的实施例,如图7所示,本申请实施例提供的目录配置方法包括:
S700、NFS客户端向存储设备发送用于请求删除第一文件的删除请求。
删除请求包括第一文件名。
S701、响应删除请求,存储设备从第一索引表中获取第一目录项的标识。
具体的,存储设备获取第一文件名,并根据第一文件名和预设算法,计算第一计算值。在计算出第一计算值后,存储设备从CS索引表中获取与第一计算值对应的目录项的标识。从上面描述可知,在创建第一文件时,存储设备在CS索引表中记录了第一计算值与第一目录项的标识之间的对应关系。因此,存储设备可从第一索引表中获取到第一目录项的标识。
S702、存储设备根据第一目录项的标识,在第一目录项中获取第二文件名。
由于第一文件的CS文件名和CI文件名可能相同,也可能不同。因此,存储设备无法直接利用第一文件名在CI索引表中进行相关操作。
从前面描述可知,第一目录项存储有第一文件名、第二文件名以及第一文件的索引号,因此,存储设备可从第一目录项中获取到第二文件名。
S703、存储设备删除CS索引表中的第一目录项的标识与第一计算值之间的对应关系,并删除CI索引表中的第一目录项的标识与第二计算值之间的对应关系。
存储设备在获取到第一文件名和第二文件名后,删除CS索引表中的第一目录项的标识与第一计算值之间的对应关系,并删除CI索引表中的第一目录项的标识与第二计算值之间的对应关系。
可选的,由于一个文件对应一个目录项的标识,因此,本申请实施例中的存储设备在获取到第一目录项的标识后,也可直接在CI索引表中查找第一目录项的标识,并确定出与第一目录项的标识对应的第二文件名。这样,存储设备也能删除CS索引表中的第一目录项的标识与第一计算值之间的对应关系,并删除CI索引表中的第一目录项的标识与第二计算值之间的对应关系。
S704、存储设备在日志列表记录的释放日志中添加第一日志。
具体的,存储设备在删除CS索引表中的第一目录项的标识与第一计算值之间的对应关系,并删除CI索引表中的第一目录项的标识与第二计算值之间的对应关系之后,在日志列表中添加第一日志,该第一日志用于表示第一间隔被解除占用。
可选的,第一日志包括删除标识、第一区段ID和第一间隔ID。
S705、存储设备将与第一间隔对应的位的状态设置为未占用。
可选的,存储设备可以先执行S704,后执行S705,可以先执行S705,后执行S704,还可以同时执行S704和S705,本申请实施例对此不作具体限定。
存储设备在执行S701-S705后,向NFS客户端发送成功响应。
在删除文件时,存储设备并未对顺序表中的数据进行任何处理,提高了批量删除文件的性能。
进一步地,由于在删除文件时,存储设备并未对顺序表中的数据进行任何处理,因此,目录项中的数据仍然占用间隔。在日志列表所包括的释放日志的数量大于或等于第一预设阈值的情况下,存储空间的浪费率太高,存储设备重新利用已被释放的存储空间。具体的,存储设备将日志列表中的所有释放日志列表加载到内存中,并根据每一释放日志所记录的标识确定对应的存储空间大小,存储设备选择一个大小合适的存储空间存储重新创建的文件的文件名和索引号。
本申请实施例以存储设备重新占用第一区段的第一间隔为例进行说明,即以存储设备重新写入第一目录项中的内容为例进行说明。具体的,结合图7,如图8所示,本申请实施例提供的目录配置方法包括:
S800、NFS客户端向存储设备发送用于请求创建第二文件的第二请求。
第二请求包括第三文件名,第三文件名为第二文件的名称。
S801、存储设备确定第三文件名和第四文件名。
第三文件名为第二文件在第一文件协议中与其他文件名不冲突的名称,第四文件名为第二文件在第二文件协议中与其他文件名不冲突的名称。
S802、存储设备获取第三计算值和第四计算值,并将第三计算值写入CS索引表中,将第四计算值写入CI索引表中。
第三计算值为存储设备根据第三文件名和预设算法计算得到的,第四计算值为根据存储设备第四文件名和预设算法计算得到的。
S800-S802可以参考上述S600-S608,此处不再进行详细赘述。
S803、当释放日志的数量大于或等于第一预设阈值时,存储设备确定重新占用第一间隔,将第一目录项中的第一文件名、第二文件名以及第一文件的索引号更新为第三文件名、第四文件名以及第二文件的索引号。
由于在图7所示的实施例中,存储设备在删除第一文件时并未对第一目录项中的信息进行任何处理,因此,此时,第一目录项中的信息仍然是第一文件名、第二文件名和第一文件的索引号。在存储设备重新占用第一间隔时,存储设备相应的修改第一目录项中的信息。具体的,存储设备将第一目录项中的第一文件名、第二文件名以及第一文件的索引号更新为第三文件名、第四文件名以及第二文件的索引号。
S804、存储设备将第一目录项的标识写入CS索引表和CI索引表。
与上述S611类似,存储设备将第一目录项的标识写入CS索引表和CI索引表。这样,CS索引表存储了第三计算值与第一目录项的标识之间的对应关系,CI索引表存储了第四计算值与第一目录项的标识之间的对应关系。
S805、存储设备将与第一间隔对应的位的状态设置为被占用。
S806、存储设备在日志列表记录的重用日志中添加第二日志。
第二日志用于表示第一间隔被重新占用。
可选的,第二日志包括重用标识、第一区段ID和第一间隔ID。
在S806之后,存储设备向NFS客户端发送成功响应。
可以看出,本申请实施例中的存储设备在重新使用第一区段的第一间隔时,并未直接删除与该第一区段的第一间隔对应的释放日志,而是直接添加了第二日志,这样,存储设备将删除的随机IO变成了写入的顺序IO,提升了IO性能。
进一步地,当日志列表中的重用日志的数量大于或等于第二阈值的情况下,存储设备整理释放日志和重用日志,一个释放日志和相应的重用日志可以抵消,这样,日志列表仅仅保留与已被释放、且未被重用的存储空间对应的释放日志,大大减少了日志列表中日志的数量,降低了存储空间的利用率。
可以理解的是,上述图6、图7以及图8均以存储设备接收到NFS客户端发送的请求为例进行说明。存储设备接收到CIFS客户端发送的请求后,其处理过程与上述图6、图7以及图8所示的流程类似。不同的是,存储设备先处理CI索引表,后处理CS索引表。
本申请实施例提供的目录配置方法,还适用于存储设备查找某一文件的数据和遍历目录中所有文件的应用场景。
现对存储设备查找某一文件的数据的应用场景进行描述。本申请实施例以CIFS客户端请求获取存储设备在上述图6示出的实施例中创建的第一文件的数据为例进行说明。
具体的,如图9所示,本申请实施例提供的目录配置方法包括:
S900、CIFS客户端向存储设备发送包括第二文件名的数据读取请求。
数据读取请求用于请求读取第一文件的数据,所述第二文件名为第一文件在CIFS协议的名称。
S901、存储设备根据第二文件名执行一次哈希,计算得到第二计算值。
S902、存储设备从CI索引表中,获取与第二计算值对应的第一目录项的标识。
S903、存储设备从第一目录项的标识所指示的第一目录项中,获取第一文件的索引号。
S904、存储设备根据第一文件的索引号,获取第一文件的数据。
S905、存储设备向CIFS客户端客户端发送第一文件的数据。
现对存储设备遍历目录的应用场景进行描述。本申请实施例以CIFS客户端请求获取目录中的所有文件名为例进行说明。
具体的,如图10所示,本申请实施例提供的目录配置方法包括:
S1000、CIFS客户端向存储设备发送遍历请求。
S1001、存储设备响应遍历请求,从目录的位图中确定目标位。
目标位为位图中状态为被占用的位。被占用的位说明与该位对应的间隔中存储有有效数据。
S1002、存储设备从顺序表中获取与目标位对应的目录项。
S1003、存储设备从获取到的目录项中提取属于CIFS协议的文件名。
从前面描述可知,目录项中可能包括第一文件名和第二文件名,第一文件名与NFS协议对应,第二文件名与CIFS协议对应。因此,存储设备在获取到与目标位对应的目录项后,需从获取到的目录项中提取出属于CIFS协议的文件名。
S1004、存储设备向CIFS客户端发送提取到的文件名。
可以看出,本申请实施例中的目录结构,存储设备的遍历、查找性能较高。
本申请实施例提供一种存储设备,该存储设备用于执行以上目录配置方法中的存储设备所执行的步骤。本申请实施例提供的存储设备可以包括相应步骤所对应的模块。
本申请实施例可以根据上述方法示例对存储设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图11示出上述实施例中所涉及的存储设备的一种可能的结构示意图。如图11所示,存储设备包括接收单元1100、获取单元1101、写单元1102、计算单元1103、确定单元1104、转换单元1105、设置单元1106、删除单元1107、添加单元1108以及更新单元1109。接收单元1100用于支持该存储设备执行上述实施例中的S600、S700、S800、S900、和/或S1000等,和/或用于本文所描述的技术的其它过程;获取单元1101用于支持该存储设备执行上述实施例中的S601、S701、S702、S802、S902、S903、S1002、和/或S1003等,和/或用于本文所描述的技术的其它过程;写单元1102用于支持该存储设备执行上述实施例中的S608、S609、S611、S802、和/或S804等,和/或用于本文所描述的技术的其它过程;计算单元1103用于支持该存储设备执行上述实施例中的S601、S604、和/或S901等,和/或用于本文所描述的技术的其它过程;确定单元1104用于支持该存储设备执行上述实施例中的S602、S603、S605、和/或S1001等,和/或用于本文所描述的技术的其它过程;转换单元1105用于支持该存储设备执行上述实施例中的S604等,和/或用于本文所描述的技术的其它过程;设置单元1106用于支持该存储设备执行上述实施例中的S610、S705、和/或S805等,和/或用于本文所描述的技术的其它过程;删除单元1107用于支持该存储设备执行上述实施例中的S703等,和/或用于本文所描述的技术的其它过程;添加单元1108用于支持该存储设备执行上述实施例中的S704、和/或S806等,和/或用于本文所描述的技术的其它过程;更新单元1109用于支持该存储设备执行上述实施例中的S803等,和/或用于本文所描述的技术的其它过程。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的存储设备包括但不限于上述模块,例如存储设备还可以包括存储单元1110。存储单元1110可以用于存储该存储设备的程序代码和数据。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
示例性的,在采用集成的单元的情况下,本申请实施例提供的存储设备的结构示意图如图12所示。在图12中,该存储设备包括:处理模块120、通信模块121和存储模块122。处理模块120用于对存储设备的动作进行控制管理,例如,执行上述获取单元1101、写单元1102、计算单元1103、确定单元1104、转换单元1105、设置单元1106、删除单元1107、添加单元1108以及更新单元1109执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信模块121用于支持存储设备与其他设备之间的交互,例如,执行上述接收单元1100执行的步骤。存储模块122用于存储存储设备的程序代码和数据,例如存储上述存储单元1110所保存的内容。
这里,处理模块120与上述图4中的处理器41对应,通信模块121与上述图4中的通信接口40对应,存储模块122与上述图4中的存储器42对应。
相应的,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在存储设备上运行时,使得存储设备执行上述方法实施例所示的方法流程中存储设备执行的各个步骤。
在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种目录配置方法,其特征在于,包括:
接收用于请求创建第一文件的第一请求后,获取所述第一文件的第一文件名以及获取所述第一文件的第二文件名,所述第一文件名为所述第一文件在第一文件协议中与其他文件名不冲突的名称,所述第二文件名为所述第一文件在第二文件协议中与其他文件名不冲突的名称;
将第一计算值写入第一索引表中,将第二计算值写入第二索引表中,所述第一计算值为根据所述第一文件名和预设算法计算得到的,所述第二计算值为根据所述第二文件名和所述预设算法计算得到的,所述第一文件所属的目录包括所述第一索引表、所述第二索引表和顺序表,所述第一索引表与所述第一文件协议对应,所述第二索引表与所述第二文件协议对应;
在所述顺序表的第一目录项中写入所述第一文件名、所述第二文件名以及所述第一文件的索引号;
将所述第一目录项的标识写入所述第一索引表,所述第一索引表存储有所述第一计算值与所述第一目录项的标识之间的对应关系;
将所述第一目录项的标识写入所述第二索引表,所述第二索引表存储有所述第二计算值与所述第一目录项的标识之间的对应关系。
2.根据权利要求1所述的目录配置方法,其特征在于,所述第一文件协议为网络文件系统NFS协议,所述第二文件协议为通用网络文件系统CIFS协议,所述获取所述第一文件的第二文件名,具体包括:
根据所述第一文件名和所述预设算法计算所述第一计算值;
根据所述第一计算值和第一预设索引关系,确定所述第一文件名在所述第一文件协议中是否与其他文件名冲突;
当所述第一文件名在所述第一文件协议中与其他文件名不冲突时,转换所述第一文件名,所述转换后的第一文件名为所述第二文件名。
3.根据权利要求1或2所述的目录配置方法,其特征在于,所述顺序表占用的存储空间包括至少一个区段,每个区段包括多个间隔,所述第一目录项占用一个区段中的至少一个间隔;所述目录还包括日志区,所述日志区包括位图,所述位图包括多个位,每个位表示所述顺序表中与该位对应的间隔是否被占用;
在所述顺序表的第一目录项中写入所述第一文件名、所述第二文件名以及所述第一文件的索引号之后,所述目录配置方法还包括:
将与第一间隔对应的位的状态设置为被占用,所述第一间隔为所述第一目录项占用的间隔。
4.根据权利要求3所述的目录配置方法,其特征在于,所述目录配置方法还包括:
接收用于请求删除所述第一文件的删除请求;
响应所述删除请求,从所述第一索引表中获取所述第一目录项的标识;
根据所述第一目录项的标识,在所述第一目录项中获取所述第二文件名;
删除所述第一索引表中的所述第一目录项的标识与所述第一计算值之间的对应关系,并删除所述第二索引表中的所述第一目录项的标识与所述第二计算值之间的对应关系;
将与所述第一间隔对应的位的状态设置为未被占用。
5.根据权利要求4所述的目录配置方法,其特征在于,所述日志区还包括日志列表,所述日志列表用于记录释放日志,所述释放日志用于指示被解除占用的间隔;所述目录配置方法还包括:
在所述释放日志中添加第一日志,所述第一日志用于表示所述第一间隔被解除占用。
6.根据权利要求5所述的目录配置方法,其特征在于,所述日志列表还用于记录重用日志,所述重用日志用于指示被重新占用的间隔,所述目录配置方法还包括:
接收用于请求创建第二文件的第二请求后,获取所述第二文件的第三文件名以及获取所述第二文件的第四文件名,所述第三文件名为所述第二文件在第一文件协议中与其他文件名不冲突的名称,所述第四文件名为所述第二文件在第二文件协议中与其他文件名不冲突的名称;
将第三计算值写入所述第一索引表中,将第四计算值写入所述第二索引表中,所述第三计算值为根据所述第三文件名和所述预设算法计算得到的,所述第四计算值为根据所述第四文件名和所述预设算法计算得到的;
当所述释放日志的数量大于或等于第一预设阈值时,将所述第一目录项中的所述第一文件名、所述第二文件名以及所述第一文件的索引号更新为所述第三文件名、所述第四文件名以及所述第二文件的索引号;
将所述第一目录项的标识写入所述第一索引表和所述第二索引表,所述第一索引表存储所述第三计算值与所述第一目录项的标识之间的对应关系,所述第二索引表存储所述第四计算值与所述第一目录项的标识之间的对应关系;
将与所述第一间隔对应的位的状态设置为被占用;
在所述重用日志中添加第二日志,所述第二日志用于表示所述第一间隔被重新占用。
7.根据权利要求6所述的目录配置方法,其特征在于,所述目录配置方法还包括:
当所述重用日志的数量大于或等于第二阈值时,删除所述第一日志和所述第二日志。
8.一种存储设备,其特征在于,包括:
接收单元,用于接收用于第一请求,所述第一请求用于请求创建第一文件;
获取单元,用于响应所述接收单元接收到的所述第一请求,获取所述第一文件的第一文件名以及获取所述第一文件的第二文件名,所述第一文件名为所述第一文件在第一文件协议中与其他文件名不冲突的名称,所述第二文件名为所述第一文件在第二文件协议中与其他文件名不冲突的名称;
写单元,用于将第一计算值写入第一索引表中,将第二计算值写入第二索引表中,所述第一计算值为根据所述第一文件名和预设算法计算得到的,所述第二计算值为根据所述第二文件名和所述预设算法计算得到的,所述第一文件所属的目录包括所述第一索引表、所述第二索引表和顺序表,所述第一索引表与所述第一文件协议对应,所述第二索引表与所述第二文件协议对应,以及用于在所述顺序表的第一目录项中写入所述第一文件名、所述第二文件名以及所述第一文件的索引号,以及用于将所述第一目录项的标识写入所述第一索引表,所述第一索引表存储有所述第一计算值与所述第一目录项的标识之间的对应关系,以及用于将所述第一目录项的标识写入所述第二索引表,所述第二索引表存储有所述第二计算值与所述第一目录项的标识之间的对应关系。
9.根据权利要求8所述的存储设备,其特征在于,所述第一文件协议为网络文件系统NFS协议,所述第二文件协议为通用网络文件系统CIFS协议,所述存储设备还包括计算单元;
所述计算单元,用于根据所述获取单元获取到的所述第一文件名和所述预设算法计算所述第一计算值;
所述存储设备还包括确定单元;
所述确定单元,用于根据所述计算单元计算出的所述第一计算值和第一预设索引关系,确定所述第一文件名在所述第一文件协议中是否与其他文件名冲突;
所述存储设备还包括转换单元;
所述转换单元,用于当所述确定单元确定所述第一文件名在所述第一文件协议中与其他文件名不冲突时,转换所述第一文件名,所述转换后的第一文件名为所述第二文件名。
10.根据权利要求8或9所述的存储设备,其特征在于,所述顺序表占用的存储空间包括至少一个区段,每个区段包括多个间隔,所述第一目录项占用一个区段中的至少一个间隔;所述目录还包括日志区,所述日志区包括位图,所述位图包括多个位,每个位表示所述顺序表中与该位对应的间隔是否被占用;
所述存储设备还包括设置单元;
所述设置单元,用于在所述写单元在所述顺序表的第一目录项中写入所述第一文件名、所述第二文件名以及所述第一文件的索引号之后,将与第一间隔对应的位的状态设置为被占用,所述第一间隔为所述第一目录项占用的间隔。
11.根据权利要求10所述的存储设备,其特征在于,
所述接收单元,还用于接收用于请求删除所述第一文件的删除请求;
所述获取单元,还用于响应所述接收单元接收到的所述删除请求,从所述第一索引表中获取所述第一目录项的标识,以及还用于根据所述第一目录项的标识,在所述第一目录项中获取所述第二文件名;
所述存储设备还包括删除单元;
所述删除单元,用于删除所述第一索引表中的所述第一目录项的标识与所述第一计算值之间的对应关系,并删除所述第二索引表中的所述第一目录项的标识与所述第二计算值之间的对应关系;
所述设置单元,还用于将与所述第一间隔对应的位的状态设置为未被占用。
12.根据权利要求11所述的存储设备,其特征在于,所述日志区还包括日志列表,所述日志列表用于记录释放日志,所述释放日志用于指示被解除占用的间隔;所述存储设备还包括添加单元;
所述添加单元,用于在所述释放日志中添加第一日志,所述第一日志用于表示所述第一间隔被解除占用。
13.根据权利要求12所述的存储设备,其特征在于,所述日志列表还用于记录重用日志,所述重用日志用于指示被重新占用的间隔;
所述接收单元,还用于接收第二请求,所述第二请求用于请求创建第二文件的第二请求;
所述获取单元,还用于在所述接收单元接收到所述第二请求后,获取所述第二文件的第三文件名以及获取所述第二文件的第四文件名,所述第三文件名为所述第二文件在第一文件协议中与其他文件名不冲突的名称,所述第四文件名为所述第二文件在第二文件协议中与其他文件名不冲突的名称;
所述写单元,还用于将第三计算值写入所述第一索引表中,将第四计算值写入所述第二索引表中,所述第三计算值为根据所述第三文件名和所述预设算法计算得到的,所述第四计算值为根据所述第四文件名和所述预设算法计算得到的;
所述存储设备还包括更新单元;
所述更新单元,用于当所述释放日志的数量大于或等于第一预设阈值时,将所述第一目录项中的所述第一文件名、所述第二文件名以及所述第一文件的索引号更新为所述第三文件名、所述第四文件名以及所述第二文件的索引号;
所述写单元,还用于将所述第一目录项的标识写入所述第一索引表和所述第二索引表,所述第一索引表存储所述第三计算值与所述第一目录项的标识之间的对应关系,所述第二索引表存储所述第四计算值与所述第一目录项的标识之间的对应关系;
所述设置单元,还用于将与所述第一间隔对应的位的状态设置为被占用;
所述添加单元,还用于在所述重用日志中添加第二日志,所述第二日志用于表示所述第一间隔被重新占用。
14.根据权利要求13所述的存储设备,其特征在于,所述存储设备还包括删除单元;
所述删除单元,用于当所述重用日志的数量大于或等于第二阈值时,删除所述第一日志和所述第二日志。
CN201710911123.4A 2017-09-29 2017-09-29 一种目录配置方法及装置 Active CN107679182B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710911123.4A CN107679182B (zh) 2017-09-29 2017-09-29 一种目录配置方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710911123.4A CN107679182B (zh) 2017-09-29 2017-09-29 一种目录配置方法及装置

Publications (2)

Publication Number Publication Date
CN107679182A true CN107679182A (zh) 2018-02-09
CN107679182B CN107679182B (zh) 2020-05-08

Family

ID=61139444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710911123.4A Active CN107679182B (zh) 2017-09-29 2017-09-29 一种目录配置方法及装置

Country Status (1)

Country Link
CN (1) CN107679182B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491966A (zh) * 2018-10-22 2019-03-19 郑州云海信息技术有限公司 一种文件查找方法及相关装置
CN111506545A (zh) * 2020-03-31 2020-08-07 新华三技术有限公司成都分公司 一种文件管理的方法和装置
CN113139195A (zh) * 2021-04-21 2021-07-20 统信软件技术有限公司 一种数据加密方法及计算设备
CN113362489A (zh) * 2020-03-06 2021-09-07 联合汽车电子有限公司 车辆测量文件的创建方法、电子设备和存储介质
CN117271440A (zh) * 2023-11-21 2023-12-22 深圳市云希谷科技有限公司 一种基于freeRTOS文件信息存储方法、读取方法及相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067822A (zh) * 2006-05-03 2007-11-07 国际商业机器公司 用于元数据的分级存储管理的方法和系统
CN101674332A (zh) * 2009-10-23 2010-03-17 成都市华为赛门铁克科技有限公司 基于网络的存储空间管理方法及服务器
CN101980203A (zh) * 2010-10-29 2011-02-23 中国科学院声学研究所 一种用于高清媒体的嵌入式文件系统
CN103024219A (zh) * 2011-09-27 2013-04-03 深圳市普联技术有限公司 一种基于iad设备的语音处理方法、系统及iad设备
US20150378834A1 (en) * 2011-09-30 2015-12-31 Emc Corporation Efficient building of restore list

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067822A (zh) * 2006-05-03 2007-11-07 国际商业机器公司 用于元数据的分级存储管理的方法和系统
CN101674332A (zh) * 2009-10-23 2010-03-17 成都市华为赛门铁克科技有限公司 基于网络的存储空间管理方法及服务器
CN101980203A (zh) * 2010-10-29 2011-02-23 中国科学院声学研究所 一种用于高清媒体的嵌入式文件系统
CN103024219A (zh) * 2011-09-27 2013-04-03 深圳市普联技术有限公司 一种基于iad设备的语音处理方法、系统及iad设备
US20150378834A1 (en) * 2011-09-30 2015-12-31 Emc Corporation Efficient building of restore list

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491966A (zh) * 2018-10-22 2019-03-19 郑州云海信息技术有限公司 一种文件查找方法及相关装置
CN113362489A (zh) * 2020-03-06 2021-09-07 联合汽车电子有限公司 车辆测量文件的创建方法、电子设备和存储介质
CN111506545A (zh) * 2020-03-31 2020-08-07 新华三技术有限公司成都分公司 一种文件管理的方法和装置
CN113139195A (zh) * 2021-04-21 2021-07-20 统信软件技术有限公司 一种数据加密方法及计算设备
WO2022222350A1 (zh) * 2021-04-21 2022-10-27 统信软件技术有限公司 一种数据加密方法及计算设备
CN113139195B (zh) * 2021-04-21 2023-10-13 统信软件技术有限公司 一种数据加密方法及计算设备
CN117271440A (zh) * 2023-11-21 2023-12-22 深圳市云希谷科技有限公司 一种基于freeRTOS文件信息存储方法、读取方法及相关设备
CN117271440B (zh) * 2023-11-21 2024-02-06 深圳市云希谷科技有限公司 一种基于freeRTOS文件信息存储方法、读取方法及相关设备

Also Published As

Publication number Publication date
CN107679182B (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
CN107679182A (zh) 一种目录配置方法及装置
CN107918612B (zh) 键值存储系统数据结构的实现方法和装置
CN101719141B (zh) 基于目录对象的文件处理方法和系统
CN100468402C (zh) 一种数据存储及查询方法
EP1587006A2 (en) Method and system for renaming consecutive keys in a B-tree
CN101983376B (zh) 访问装置、信息记录装置、信息记录系统、文件管理方法和程序
CN101567003A (zh) 并行文件系统中资源的管理和分配方法
WO2007107073A1 (fr) Système de mémoire sur carte à puce, et son procédé de gestion de fichier
CN102306168B (zh) 日志操作方法、装置及文件系统
CN103597440A (zh) 用于创建克隆文件的方法以及采用该方法的文件系统
CN104765794B (zh) 一种数据库分区方法及装置
CN111400334B (zh) 数据处理方法、装置、存储介质及电子装置
CN102768674A (zh) 一种基于路径结构的xml数据存储方法
CN114625696B (zh) 文件恢复方法、装置、电子设备及存储介质
TWI397060B (zh) 物件導向儲存裝置之磁碟配置方法
CN114327290B (zh) 一种磁盘分区的结构、格式化方法和访问方法
CN113688139B (zh) 对象存储方法、网关、设备及介质
JPWO2007099636A1 (ja) ファイルシステム移行方法、ファイルシステム移行プログラム及びファイルシステム移行装置
CN110109866A (zh) 一种文件系统目录的管理方法及设备
JP2024525170A (ja) データ圧縮方法及び装置
CN110633261A (zh) 一种图片存储方法、图片查询方法及装置
CN110502472A (zh) 一种大量小文件的云存储优化方法及其系统
CN115705313A (zh) 一种数据处理方法、装置、设备及计算机可读存储介质
CN110019016A (zh) 提供逻辑键的kv存储设备及其方法
CN110008178B (zh) 分布式文件系统元数据的组织方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant