CN103150395B - 基于ssd的文件系统目录路径解析方法 - Google Patents
基于ssd的文件系统目录路径解析方法 Download PDFInfo
- Publication number
- CN103150395B CN103150395B CN201310096933.0A CN201310096933A CN103150395B CN 103150395 B CN103150395 B CN 103150395B CN 201310096933 A CN201310096933 A CN 201310096933A CN 103150395 B CN103150395 B CN 103150395B
- Authority
- CN
- China
- Prior art keywords
- index node
- ssd
- resolved
- component
- file
- 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.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于SSD的文件系统目录路径解析方法,使用SSD作为文件和目录的Inode信息缓存,应用程序访问一个文件或目录时,通过计数型布隆选择器CBF检查目标Inode标签是否在SSD上命中,如果Inode信息在SSD上命中,直接从SSD中读取缓存的Inode信息并返回给文件系统;否则,按照传统的方法逐步解析通向目标文件的目录路径,直到获取相应的Inode信息,解析过程中将每个目录分量对应的Inode信息都加入SSD缓存,以备后续使用,最终将获取的目标Inode信息返回给文件系统。本发明具有目录解析速度快、目录解析加速效果好、并发处理能力强、兼容性好、功耗低、时间和空间开销低的优点。
Description
技术领域
本发明涉及计算机操作系统领域,具体涉及一种面向包含大量文件和目录的文件系统的基于SSD的文件系统目录路径解析方法。
背景技术
文件系统是一种重要的管理存储设备和组织用户数据的方法。目前,大部分文件系统都采用树形结构管理文件。树的内部节点代表目录,叶子节点代表普通文件,从树根到每个文件都有一条唯一的路径。用户访问一个文件时,文件系统需要解析通向该文件的路径。这条路径包含多个分量,每个分量对应一个目录名称。路径解析的过程就是逐个分析这些目录,直到取得目标文件的元信息。
由于数字信息的爆炸式增长,文件系统管理的数据量不断增加,包含的目录和文件逐步增多,在这种大规模的文件系统中,目录路径解析存在两方面的问题。
首先,由于每个目录中包含大量的文件和子目录,解析一个目录需要很长的时间。在Unix类文件系统中,目录被当作一种特殊的文件,这种特殊文件的数据就是该目录下所有普通文件和子目录的元信息。所谓解析一个目录,就是在该目录下的所有文件和子目录中匹配目录路径的下一个分量。这就需要从底层存储设备读出该目录下的所有文件和子目录,然后逐个匹配。由于所包含的文件和子目录数量庞大,以上过程需要多次访问底层存储设备。而以磁盘为代表的底层存储设备是整个存储系统的瓶颈,频繁的磁盘访问使解析一个目录的时延显著延长。另外,线性地匹配一个目录中的所有文件和子目录也需要很长的时间。
其次,由于文件系统包含大量的文件和目录,在文件系统的目录树中,从根节点到叶子节点的路径很长。访问一个文件时,需要解析很长的目录路径。所以,加速文件系统目录路径的解析过程异常重要。目前采用的方法主要有以下几种:
1、Dcache(Directory Cache,目录缓存)。根据局部性原理,近期访问过的目录还会被再次访问。Dcache将近期访问的目录信息保存在内存中。解析目录路径时,先在Dcache中查找。如果一个目录在Dcache中命中,则无需访问磁盘。Dcache对小规模的文件系统尤其有效,但针对包含大量目录的文件系统,Dcache命中率较低。
2、InodeCache(索引节点缓存)。在Unix类文件系统中,每个文件都对应一个Inode(IndexNode,索引节点),Inode中包含文件的所有描述信息,目录路径解析的最终目的就是得到待访问文件的Inode信息。InodeCache保存近期频繁访问文件的Inode信息,如果待访问文件的Inode在缓存中命中,则不用解析通向该文件的目录路径。InodeCache实现在内存中,只能缓存少量的Inode信息,在大规模文件系统中很难发挥作用。
发明内容
本发明要解决的技术问题是提供一种目录解析速度快、目录解析加速效果好、并发处理能力强、兼容性好、功耗低、时间和空间开销低的基于SSD的文件系统目录路径解析方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于SSD的文件系统目录路径解析方法,其实施步骤如下:
1)在内存中初始化计数型布隆选择器(Counting Bloom Filter)的整数数组,维护计数型布隆选择器的多个哈希函数;配置用于缓存索引节点信息的SSD,跳转执行下一步;
2)响应应用程序对文件的读写请求,获取请求文件的绝对路径,跳转执行下一步;
3)根据所述请求文件的绝对路径生成唯一且长度固定的目标索引节点标签,跳转执行下一步;
4)将所述目标索引节点标签代入计数型布隆选择器,通过计数型布隆选择器检查目标索引节点标签是否在SSD上命中,当目标索引节点标签在SSD上命中时,判断应用程序对文件的读写请求是否会修改请求文件的索引节点信息,如果不会修改请求文件的索引节点信息则跳转执行步骤5),如果会修改请求文件的索引节点信息,则从SSD中删除请求文件的索引节点信息并跳转执行步骤7);当目标索引节点标签在SSD上未命中时,跳转执行步骤7);
5)根据目标索引节点标签从SSD上读出指定页上缓存的多个索引节点信息,跳转执行下一步;
6)将目标索引节点标签与读出的多个索引节点信息进行匹配,如果找到匹配目标索引节点标签的索引节点信息,则说明请求文件在SSD上命中索引节点信息,将命中的索引节点信息返回给文件系统,本次目录解析完毕,等待下一次应用程序对文件的读写请求,在收到下一次应用程序对文件的读写请求时跳转执行步骤2);如果没有找到匹配目标索引节点标签的索引节点信息,则跳转执行下一步;
7)获取请求文件的绝对路径的第一层目录作为第一个待解析分量,跳转执行下一步;
8)根据待解析分量的绝对路径生成唯一且长度固定的待解析分量索引节点标签,跳转执行下一步;
9)将待解析分量索引节点标签代入计数型布隆选择器,通过计数型布隆选择器检查所述待解析分量索引节点标签是否在SSD上命中,当待解析分量索引节点标签在SSD上命中时,则跳转执行步骤10),否则跳转执行步骤12);
10)根据待解析分量索引节点标签从SSD上读出指定页上缓存的多个索引节点信息,跳转执行下一步;
11)将待解析分量索引节点标签与读出的多个索引节点信息进行匹配,如果匹配成功则跳转执行步骤15);否则跳转执行步骤12);
12)从磁盘上读取待解析分量的索引节点信息,跳转执行下一步;
13)将待解析分量索引节点标签加入到所述计数型布隆选择器中,跳转执行下一步;
14)将待解析分量的索引节点信息及其索引节点标签写入SSD,跳转执行下一步;
15)判断当前的待解析分量是否为请求文件的绝对路径的最后一个分量,如果是则说明已经找到目标索引节点信息,解析请求文件的绝对路径完毕,跳转执行步骤16);否则获取请求文件的绝对路径的下一层目录作为下一个待解析分量,返回执行步骤8);
16)将目标索引节点信息返回给文件系统,本次目录解析完毕,等待下一次应用程序对文件的读写请求,在收到下一次应用程序对文件的读写请求时跳转执行步骤2)。
作为本发明上述技术方案的进一步改进:
所述步骤3)的详细步骤为:根据请求文件的绝对路径作为输入,使用SHA1(Secure HashAlgorithm,安全哈希算法)算法对请求文件的绝对路径进行哈希运算,将哈希运算得到唯一且长度固定的哈希值作为目标索引节点标签输出,最终跳转执行步骤4);所述步骤8)的详细步骤为:根据待解析分量的绝对路径作为输入,使用SHA1算法对待解析分量的绝对路径进行哈希运算,将哈希运算得到唯一且长度固定的哈希值作为待解析分量索引节点标签输出,最终跳转执行步骤9)。
所述步骤4)中通过计数型布隆选择器检查所述目标索引节点标签是否在SSD上命中的详细步骤为:将目标索引节点标签使用计数型布隆选择器的多个哈希函数进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,如果所述多个位置的整数均大于0,则判定所述目标索引节点标签在SSD上命中,否则判定所述目标索引节点标签在SSD上未命中;所述步骤9)中通过计数型布隆选择器检查所述待解析分量索引节点标签是否在SSD上命中的详细步骤为:将待解析分量索引节点标签使用计数型布隆选择器的多个哈希函数进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,如果所述多个位置的整数均大于0,则判定所述待解析分量索引节点标签在SSD上命中,否则判定所述待解析分量索引节点标签在SSD上未命中;所述步骤13)的详细步骤为:将待解析分量索引节点标签使用计数型布隆选择器的多个哈希函数进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,逐一检查所述多个位置的整数是否已经为最大值,如果任意位置的整数不是最大值则将其加1,最终跳转执行步骤14)。
所述步骤5)的详细步骤为:从160位的目标索引节点标签中截取指定位作为SSD的访存地址,根据所述访存地址从SSD上读出缓存的指定页上缓存的8个索引节点信息,最终跳转执行步骤6);所述步骤10)的详细步骤为:从待解析分量索引节点标签中截取指定位作为SSD的访存地址,根据所述访存地址从SSD上读出缓存的指定页上缓存的8个索引节点信息,最终跳转执行步骤11);所述步骤14)的详细步骤为:将待解析分量的索引节点标签中截取指定位作为SSD的访存地址,根据所述访存地址从SSD中读取对应的一个数据页,采用先进先出的策略将所述数据页的第8个索引节点信息剔除,将所述数据页的前7个索引节点信息依次向后移动1个位置,将待解析分量的索引节点信息以及待解析分量的索引节点标签写入所述数据页的第一个位置,最终将整个数据页使用所述访存地址写回SSD,跳转执行步骤15)。
本发明基于SSD的文件系统目录路径解析方法具有下述优点:
1、本发明针对大规模文件系统中文件和目录较多、目录路径解析时延较长的问题,利用SSD作为Inode信息的缓存,能够实现目录路径解析的加速,相比于内存,SSD容量巨大,能够保存大量的Inode信息;相比之下,Dcache和InodeCache容量不大,取得的命中率有限,不适用于文件和目录很多的文件系统;因此本发明在解析目录路径时,能够取得很高的命中率。SSD读延迟很低,待访问文件的Inode在SSD上命中时,能快速地获取该Inode信息,而且SSD吞吐率高,能支持多线程并发访问同时响应多线程的应用请求,具有目录解析速度快、目录解析加速效果好、并发处理能力强的优点。
2、本发明现有技术的Dcache和InodeCache是兼容的,例如判断SSD是否命中之前可以根据需要先查找Dcache和InodeCache,目录路径解析时,如果在Dcache和InodeCache都不命中,才会试图从SSD上获取Inode信息,具有兼容性好的优点。
3、本发明利用SSD作为Inode信息的缓存,SSD是一种低功耗的存储设备,用SSD作缓存不会显著增加系统的功耗。相反,如果增大Dcache和InodeCache的容量,会增大系统的成本和功耗。
4、本发明通过计数型布隆选择器进行预判目标Inode标签是否在SSD上命中,计数型布隆选择器判断速度快、效率高,能够减少请求SSD但不能成功获取Inode信息的几率,避免不必要的时间开销;而且通过计数型布隆选择器预判后一旦访问SSD,就会以很大的概率成功地从SSD上获取Inode信息,具有时间开销低的优点;而且本发明在内存中只保存计数型布隆选择器结构的整数数组,计数型布隆选择器结构的整数数组只占用很小的空间,所以本发明的空间开销很低;因此本发明具有时间和空间开销低的优点。
附图说明
图1为本发明实施例的方法流程示意图。
具体实施方式
如图1所示,本实施例基于SSD的文件系统目录路径解析方法的实施步骤如下:
1)在内存中初始化计数型布隆选择器(Counting Bloom Filter,CBF)的整数数组,维护计数型布隆选择器的k个哈希函数(h1,h2,h3,…,hk);配置用于缓存索引节点信息(Inode信息)的SSD,跳转执行下一步。
计数型布隆选择器CBF以很低的空间开销记录一个集合中包含的所有元素,它由一个整数数组和一组哈希函数组成。本实施例用SSD作为索引节点(Inode)的缓存,缓存只保存近期访问的Inode信息,应用程序访问一个文件时,文件系统首先试图从SSD中获取Inode信息。如果该Inode在SSD上不命中,访问SSD不会带来任何收益;相反,还会引入一定的延迟。为了避免这种不会带来任何收益的SSD访问,本实施例利用计数型布隆选择器CBF对一个Inode信息是否保存在SSD上作预判。如果CBF确定该Inode信息以很大的概率保存在SSD上,文件系统才会试图从SSD获取Inode信息;否则,直接按传统的方法逐步解析目录路径。CBF能够比较准确地判定一个元素是否包含在一个集合中,只要CBF的参数设定恰当,误判率可以降低到1%以下,因此判断效率非常高、开销非常小。CBF的核心数据结构是一个整数数组,初始化CBF就是为整数数组分配内存空间。CBF在内存中的数据结构为一个整数数组,本实施例将CBF的整数数组保存在内存中,每个整数占3位,同时维护k个哈希函数h1,h2,h3,…,hk。判定元素x是否在CBF表示的集合中时,检查整数数组中h1(x),h2(x),h3(x),…,hk(x)等k个位置的整数,如果k个整数的值都大于0,则说明元素x包含在该集合中。k的具体数量可以根据需要进行调整其具体数量。初始化CBF就是在内存中申请一片连续的空间,存放CBF的整数数组,并将数组的所有元素初始化为0。
2)响应应用程序对文件的读写请求,获取请求文件的绝对路径P,跳转执行下一步。
应用程序欲访问某个文件时,给出指向该文件的目录路径。该目录路径可能起始于文件系统的根目录,这种路径被称为绝对路径;也可能是起始于应用程序的当前目录,这种路径被称为相对路径。因此,应用程序对文件的读写请求给出的可能是绝对路径,也可能是相对当前工作目录的相对路径。当应用程序给出相对路径时,则需要将相对路径转化为绝对路径。由于当前工作目录记录了从目录树的根节点到当前目录的绝对路径,将相对路径转化为绝对路径时,只需将当前工作目录的绝对路径和给出的相对路径拼接即可得到绝对路径。
3)根据请求文件的绝对路径P生成唯一且长度固定的目标索引节点标签(Inode标签)Tp,跳转执行下一步。
得到绝对路径P后,文件系统试图从SSD上直接读出Inode信息。至此,绝对路径是目标Inode的唯一标识。原则上,文件系统能够用绝对路径P匹配缓存中的备选Inode信息,如果一个Inode匹配成功,则说明缓存命中,直接从SSD上读出该Inode即可。但是,考虑到绝对路径P是一个长度不定的字符串,直接进行匹配和存储该字符串的开销都很大,为了便于比较和存储,本实施例计算绝对路径P的SHA1(Secure Hash Algorithm,安全哈希算法)值,生成一个160位的目标Inode标签Tp。由于SHA1能够提供一个很大且分布均匀的哈希空间,在该哈希空间内不会发生哈希冲突,所以Inode标签Tp能唯一标识绝对路径P。
本实施例中,步骤3)的详细步骤为:根据请求文件的绝对路径P作为输入,使用SHA1算法对请求文件的绝对路径进行哈希运算,将哈希运算得到唯一且长度固定(160位)的哈希值作为目标Inode标签Tp输出,最终跳转执行步骤4)。
4)将目标Inode标签Tp代入计数型布隆选择器CBF,通过计数型布隆选择器CBF检查目标Inode标签Tp是否在SSD上命中,当目标Inode标签Tp在SSD上命中时,判断应用程序对文件的读写请求是否会修改请求文件的Inode信息,如果不会修改请求文件的Inode信息则跳转执行步骤5),如果会修改请求文件的Inode信息,则从SSD中删除请求文件的Inode信息并跳转执行步骤7);当目标Inode标签Tp在SSD上未命中时,跳转执行步骤7)。
在访问SSD之前,需要预判目标Inode是否保存在SSD上,只有目标Inode以很大的几率保存在SSD上,才会向SSD发出读请求。预判的具体做法是:检查CBF维护的整数数组中h1(Tp),h2(Tp),h3(Tp),…,hk(Tp)等k个位置的整数,如果这k个整数都大于0,说明Tp以很大的几率出现在SSD上,转步骤5);否则,转步骤7),以传统的方法解析目录路径,本实施例通过上述CBF预判,能够减少请求SSD但不能成功获取Inode信息的几率,避免不必要的时间开销。而且,本实施例目标Inode标签在SSD上命中时还进行判断应用程序对文件的读写请求是否会修改请求文件的Inode信息,如果会修改请求文件的Inode信息,则从SSD中删除请求文件的Inode信息并跳转执行步骤7),通过传统方法逐步解析目录路径,并将最新的Inode写到文件系统中,这种做法将最新的Inode信息保存在文件系统中,SSD上的Inode被作废,从而保证了SSD和文件系统中元信息的一致性。
本实施例中,步骤4)中通过计数型布隆选择器CBF检查目标Inode标签Tp是否在SSD上命中的详细步骤为:将目标Inode标签Tp使用计数型布隆选择器CBF的k个哈希函数(h1(x),h2(x),h3(x),…,hk(x))进行哈希运算,根据哈希运算得到的k个哈希值在内存中的计数型布隆选择器CBF的整数数组中查找对应的k个位置的整数,如果多个位置的整数均大于0,则判定目标Inode标签Tp在SSD上命中,否则判定目标Inode标签Tp在SSD上未命中。
5)根据目标Inode标签Tp从SSD上读出指定页上缓存的多个Inode信息(即备选Inode),跳转执行下一步。
用SSD作为Inode的缓存,管理缓存的传统方法是维护一张表,这张表提供两项功能:(1)记录哪些Inode保存在缓存中;(2)记录这些Inode在缓存中的具体位置。第一项功能用来检测一个Inode是否在缓存中命中,第二项功能则给出命中的Inode在SSD上的地址,供文件系统从SSD上读出Inode信息。但是,基于SSD的缓存容量很大,能够保存大量的Inode信息,传统的方法需要在内存中维护一张很大的表,所以不适用于基于SSD的缓存。为此,本实施例中采用直接相联的方式,将每个Inode信息放到SSD唯一固定的位置上。具体做法是,对于一个特定的Inode信息,截取其Inode标签(160位)的指定位(本实施例中指定位为26位,应用时可根据需要调整指定位的位数)作为SSD的地址,将Inode信息写到SSD的该地址上,这种做法避免了维护一张很大的表,降低了内存开销。由于SSD的最小读写单位是页,页大小一般为4KB,而每个Inode信息为512字节,一页包含8个Inode信息。所以,本实施例中采用了8路组相连策略,根据一个标签从SSD上读取一页数据时,实际上得到8个Inode信息。因此本步骤根据目标Inode标签Tp从SSD上读出指定页上缓存的多个Inode信息时,截取目标Inode标签Tp的26位作为SSD的地址,从SSD上读取一页数据,该数据页包含8个Inode信息,转步骤6)查找目标Inode信息是否出现在8个Inode信息中。
一般而言从目标Inode标签Tp中截取的部分取决于SSD的容量大小,如SSD容量为256GB、页大小为4KB,则截取其中的26位。因此本实施例中,步骤5)的详细步骤为:从160位的目标Inode标签Tp中截取26位作为SSD的访存地址,根据访存地址从SSD上读出缓存的指定页上缓存的8个Inode信息,最终跳转执行步骤6)。
6)将目标Inode标签Tp与读出的多个Inode信息(8个Inode信息)进行匹配,如果找到匹配目标Inode标签的Inode信息,则说明请求文件在SSD上命中Inode信息,将命中的Inode信息返回给文件系统,本次目录解析完毕,等待下一次应用程序对文件的读写请求,在收到下一次应用程序对文件的读写请求时跳转执行步骤2);如果没有找到匹配目标Inode标签Tp的Inode信息,则跳转执行下一步。
由于步骤3)已经根据绝对路径计算了一个目标Inode标签Tp,这个标签唯一的标识一个文件及其对应的Inode信息,该目标Inode标签Tp被包含在Inode中写到SSD上。本步骤依次匹配8个Inode的标签,如果保存在某个Inode中的标签和目标标签相同,说明该Inode在SSD上命中,返回Inode信息给文件系统,转第二步,处理新的文件访问。如果8个Inode都不能成功匹配,转步骤7)按传统方法逐步解析目录路径。
步骤7)~15)为对请求文件的绝对路径的每一个分量进行解析的步骤。
7)获取请求文件的绝对路径P的第一层目录作为第一个待解析分量D(D是P的前缀),跳转执行下一步。
8)根据待解析分量D的绝对路径生成唯一且长度固定的待解析分量Inode标签Td,跳转执行下一步。
与步骤3)根据请求文件的绝对路径P生成唯一的目标Inode标签Tp的详细步骤相似,本实施例中步骤8)根据待解析分量D的绝对路径生成唯一且长度固定的待解析分量Inode标签Td的详细步骤为:根据待解析分量D的绝对路径作为输入,使用SHA1算法对待解析分量D的绝对路径进行哈希运算,将哈希运算得到唯一且长度固定(160位)的哈希值作为待解析分量Inode标签Td输出,最终跳转执行步骤9)。
9)将待解析分量Inode标签Td代入计数型布隆选择器CBF,通过计数型布隆选择器CBF检查待解析分量Inode标签Td是否在SSD上命中,当待解析分量Inode标签Td在SSD上命中时,则跳转执行步骤10),否则跳转执行步骤12)。
与步骤4)通过计数型布隆选择器CBF检查目标Inode标签Tp是否在SSD上命中相似,本实施例步骤9)中通过计数型布隆选择器CBF检查待解析分量Inode标签Td是否在SSD上命中的详细步骤为:将待解析分量Inode标签Td使用计数型布隆选择器CBF的k个哈希函数(h1(x),h2(x),h3(x),…,hk(x))进行哈希运算,根据哈希运算得到的k个哈希值在内存中的计数型布隆选择器CBF的整数数组中查找对应的k个位置的整数,如果多个位置的整数均大于0,则判定待解析分量Inode标签Td在SSD上命中,否则判定待解析分量Inode标签Td在SSD上未命中。检查CBF维护的整数数组中h1(Td),h2(Td),h3(Td),…,hk(Td)等k个位置的整数时,如果这k个整数都大于0,说明Td以很大的几率出现在SSD上,转步骤10);否则,转步骤12)以传统的方法解析目录路径。
10)根据待解析分量Inode标签Td从SSD上读出指定页上缓存的多个Inode信息(8个Inode信息),跳转执行下一步。
与步骤5)的步骤相似,本实施例步骤10)的详细步骤为:从待解析分量Inode标签Td中截取26位作为SSD的访存地址,根据访存地址从SSD上读出缓存的指定页上缓存的8个Inode信息,最终跳转执行步骤11)。
11)将待解析分量Inode标签与读出的多个Inode信息(8个Inode信息)进行匹配,如果匹配成功则跳转执行步骤15);否则跳转执行步骤12)。
每个Inode都包含有一个标签,如果一个Inode中包含的标签为Td,说明找到分量D对应的Inode,转步骤15),判断分量D是否为最后一个分量;如果8个Inode都匹配失败,转步骤12)以传统的方法解析目录路径。
12)从磁盘上读取待解析分量的Inode信息,跳转执行下一步;
13)将待解析分量Inode标签加入到计数型布隆选择器中,跳转执行下一步;
与步骤4)和步骤9)检查Inode标签(目标Inode标签Tp或待解析分量Inode标签Td)是否在SSD上命中相似,本实施例中步骤13)的详细步骤为:将待解析分量Inode标签Td使用计数型布隆选择器CBF的k个哈希函数(h1(x),h2(x),h3(x),…,hk(x))进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,逐一检查多个位置的整数是否已经为最大值,如果任意位置的整数不是最大值则将其加1,最终跳转执行步骤14)。本实施例中,内存中整数数组每一个整数位3位,因此最大值为7,将内存中整数数组中CBF维护的整数数组中h1(Td),h2(Td),h3(Td),…,hk(Td)等k个位置的整数进行加1时,为防止整数溢出当某个整数的值为7时,不将它加1。
14)将待解析分量的Inode信息及其Inode标签Td写入SSD,跳转执行下一步。
因为近期访问的目录可能在不久会再次访问,将Inode信息保存在SSD中能够为下次的目录解析过程加速。与步骤5)和步骤10)读取Inode信息相对应,本实施例中步骤14)的详细步骤为:将待解析分量的Inode标签中截取26位作为SSD的访存地址,根据访存地址从SSD中读取对应的一个数据页,采用先进先出的策略将数据页的第8个Inode信息剔除,将数据页的前7个Inode信息依次向后移动1个位置,将待解析分量的Inode信息以及待解析分量的Inode标签Td写入数据页的第一个位置,最终将整个数据页使用访存地址写回SSD,跳转执行步骤15)。将D对应的Inode放到第一个位置时,需要将Td附加到Inode中,以备后续的匹配。本实施例通过上述步骤,实现了对SSD缓存的Inode信息的先进先出(First In FirstOut,FIFO)的缓存策略,通过先进先出(First In First Out,FIFO)的缓存策略将这8个Inode中最早进入该页面的那个剔除,同时将最早进入该页面的Inode从CBF中删除,能够提高SSD中缓存Inode信息的命中率。
15)判断当前的待解析分量是否为请求文件的绝对路径的最后一个分量,如果是则说明已经找到目标Inode信息,解析请求文件的绝对路径完毕,跳转执行步骤16);否则获取请求文件的绝对路径的下一层目录作为下一个待解析分量,返回执行步骤8);
16)将目标Inode信息返回给文件系统,本次目录解析完毕,等待下一次应用程序对文件的读写请求,在收到下一次应用程序对文件的读写请求时跳转执行步骤2)。
本实施例使用SSD作为文件和目录的Inode信息缓存,每当应用程序访问一个文件或目录时,首先试图从SSD中取得目标文件的Inode信息,通过计数型布隆选择器CBF检查目标Inode标签是否在SSD上命中,如果Inode标签在SSD上命中,则避免了目录路径解析,直接从SSD中读取缓存的Inode信息;否则,按照传统的方法逐步解析通向目标文件的目录路径,直到获取相应的Inode信息,解析过程中将每个目录分量对应的Inode信息都加入SSD缓存,以备后续使用;如果文件的Inode信息被修改,SSD上保存的Inode信息被作废,最新的Ionde信息被写到下层文件系统中,这种写作废协议保证了SSD和下层文件系统的数据一致性。本实施例具有目录解析速度快、目录解析加速效果好、功耗低、并发能力强、时间和空间开销低的优点。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种基于SSD的文件系统目录路径解析方法,其特征在于实施步骤如下:
1)在内存中初始化计数型布隆选择器的整数数组,维护计数型布隆选择器的多个哈希函数;配置用于缓存索引节点信息的SSD,跳转执行下一步;
2)响应应用程序对文件的读写请求,获取请求文件的绝对路径,跳转执行下一步;
3)根据所述请求文件的绝对路径生成唯一且长度固定的目标索引节点标签,跳转执行下一步;
4)将所述目标索引节点标签代入计数型布隆选择器,通过计数型布隆选择器检查目标索引节点标签是否在SSD上命中,当目标索引节点标签在SSD上命中时,判断应用程序对文件的读写请求是否会修改请求文件的索引节点信息,如果不会修改请求文件的索引节点信息则跳转执行步骤5),如果会修改请求文件的索引节点信息,则从SSD中删除请求文件的索引节点信息并跳转执行步骤7);当目标索引节点标签在SSD上未命中时,跳转执行步骤7);
5)根据目标索引节点标签从SSD上读出指定页上缓存的多个索引节点信息,跳转执行下一步;
6)将目标索引节点标签与读出的多个索引节点信息进行匹配,如果找到匹配目标索引节点标签的索引节点信息,则说明请求文件在SSD上命中索引节点信息,将命中的索引节点信息返回给文件系统,本次目录解析完毕,等待下一次应用程序对文件的读写请求,在收到下一次应用程序对文件的读写请求时跳转执行步骤2);如果没有找到匹配目标索引节点标签的索引节点信息,则跳转执行下一步;
7)获取请求文件的绝对路径的第一层目录作为第一个待解析分量,跳转执行下一步;
8)根据待解析分量的绝对路径生成唯一且长度固定的待解析分量索引节点标签,跳转执行下一步;
9)将待解析分量索引节点标签代入计数型布隆选择器,通过计数型布隆选择器检查所述待解析分量索引节点标签是否在SSD上命中,当待解析分量索引节点标签在SSD上命中时,跳转执行步骤10),否则跳转执行步骤12);
10)根据待解析分量索引节点标签从SSD上读出指定页上缓存的多个索引节点信息,跳转执行下一步;
11)将待解析分量索引节点标签与读出的多个索引节点信息进行匹配,如果匹配成功则跳转执行步骤15);否则跳转执行步骤12);
12)从磁盘上读取待解析分量的索引节点信息,跳转执行下一步;
13)将待解析分量索引节点标签加入到所述计数型布隆选择器中,跳转执行下一步;
14)将待解析分量的索引节点信息及其索引节点标签写入SSD,跳转执行下一步;
15)判断当前的待解析分量是否为请求文件的绝对路径的最后一个分量,如果是则说明已经找到目标索引节点信息,解析请求文件的绝对路径完毕,跳转执行步骤16);否则获取请求文件的绝对路径的下一层目录作为下一个待解析分量,返回执行步骤8);
16)将目标索引节点信息返回给文件系统,本次目录解析完毕,等待下一次应用程序对文件的读写请求,在收到下一次应用程序对文件的读写请求时跳转执行步骤2)。
2.根据权利要求1所述的基于SSD的文件系统目录路径解析方法,其特征在于,所述步骤3)的详细步骤为:根据请求文件的绝对路径作为输入,使用SHA1算法对请求文件的绝对路径进行哈希运算,将哈希运算得到唯一且长度固定的哈希值作为目标索引节点标签,最终跳转执行步骤4);所述步骤8)的详细步骤为:根据待解析分量的绝对路径作为输入,使用SHA1算法对待解析分量的绝对路径进行哈希运算,将哈希运算得到唯一且长度固定的哈希值作为待解析分量索引节点标签,最终跳转执行步骤9)。
3.根据权利要求2所述的基于SSD的文件系统目录路径解析方法,其特征在于,所述步骤4)中通过计数型布隆选择器检查所述目标索引节点标签是否在SSD上命中的详细步骤为:将目标索引节点标签使用计数型布隆选择器的多个哈希函数进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,如果所述多个位置的整数均大于0,则判定所述目标索引节点标签在SSD上命中,否则判定所述目标索引节点标签在SSD上未命中;所述步骤9)中通过计数型布隆选择器检查所述待解析分量索引节点标签是否在SSD上命中的详细步骤为:将待解析分量索引节点标签使用计数型布隆选择器的多个哈希函数进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,如果所述多个位置的整数均大于0,则判定所述待解析分量索引节点标签在SSD上命中,否则判定所述待解析分量索引节点标签在SSD上未命中;所述步骤13)的详细步骤为:将待解析分量索引节点标签使用计数型布隆选择器的多个哈希函数进行哈希运算,根据哈希运算得到的多个哈希值在内存中的计数型布隆选择器的整数数组中查找对应的多个位置的整数,逐一检查所述多个位置的整数是否已经为最大值,如果任意位置的整数不是最大值则将其加1,最终跳转执行步骤14)。
4.根据权利要求1或2或3所述的基于SSD的文件系统目录路径解析方法,其特征在于,所述步骤5)的详细步骤为:从160位的目标索引节点标签中截取指定位作为SSD的访存地址,根据所述访存地址从SSD上读出缓存的指定页上缓存的8个索引节点信息,最终跳转执行步骤6);所述步骤10)的详细步骤为:从待解析分量索引节点标签中截取指定位作为SSD的访存地址,根据所述访存地址从SSD上读出缓存的指定页上缓存的8个索引节点信息,最终跳转执行步骤11);所述步骤14)的详细步骤为:将待解析分量的索引节点标签中截取指定位作为SSD的访存地址,根据所述访存地址从SSD中读取对应的一个数据页,采用先进先出的策略将所述数据页的第8个索引节点信息剔除,将所述数据页的前7个索引节点信息依次向后移动1个位置,将待解析分量的索引节点信息以及待解析分量的索引节点标签写入所述数据页的第一个位置,最终将整个数据页使用所述访存地址写回SSD,跳转执行步骤15)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310096933.0A CN103150395B (zh) | 2013-03-25 | 2013-03-25 | 基于ssd的文件系统目录路径解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310096933.0A CN103150395B (zh) | 2013-03-25 | 2013-03-25 | 基于ssd的文件系统目录路径解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150395A CN103150395A (zh) | 2013-06-12 |
CN103150395B true CN103150395B (zh) | 2014-07-23 |
Family
ID=48548472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310096933.0A Active CN103150395B (zh) | 2013-03-25 | 2013-03-25 | 基于ssd的文件系统目录路径解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150395B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942161B (zh) * | 2014-04-24 | 2017-02-15 | 杭州冰特科技有限公司 | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 |
CN107818113B (zh) * | 2016-09-13 | 2023-08-11 | 中兴通讯股份有限公司 | 文件访问位置的确定方法及装置 |
CN106528239B (zh) * | 2016-11-15 | 2019-07-09 | 广州视源电子科技股份有限公司 | 设备功能初始化方法和系统 |
CN107368437B (zh) * | 2017-07-24 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN107958033A (zh) * | 2017-11-20 | 2018-04-24 | 郑州云海信息技术有限公司 | 元数据的查找方法、装置、分布式文件系统及存储介质 |
CN110659154A (zh) * | 2018-06-28 | 2020-01-07 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和装置 |
CN111045991B (zh) * | 2019-12-02 | 2023-03-21 | 深圳市鼎泰富科技有限公司 | 一种基于命令行模式快速打开文件的实现方法 |
CN113094737B (zh) * | 2019-12-23 | 2024-07-05 | 斑马智行网络(香港)有限公司 | 信息处理方法、装置及设备 |
CN111611209A (zh) * | 2020-03-30 | 2020-09-01 | 北京瑞风协同科技股份有限公司 | 一种用于分任务存储虚拟试验数据的方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1508680A (zh) * | 2002-12-20 | 2004-06-30 | 中国科学院计算技术研究所 | 分布式文件系统快速路径解析的方法 |
CN101236569A (zh) * | 2008-02-01 | 2008-08-06 | 浙江大学 | 一种基于ContextFS上下文文件系统的高效动态路径解析方法 |
CN102270229A (zh) * | 2011-07-13 | 2011-12-07 | 中国人民解放军海军计算技术研究所 | 一种bios级系统文件的度量方法 |
CN102521255A (zh) * | 2011-11-17 | 2012-06-27 | 北京锐安科技有限公司 | 一种从快捷方式中快速解析出可执行文件路径的方法 |
-
2013
- 2013-03-25 CN CN201310096933.0A patent/CN103150395B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1508680A (zh) * | 2002-12-20 | 2004-06-30 | 中国科学院计算技术研究所 | 分布式文件系统快速路径解析的方法 |
CN101236569A (zh) * | 2008-02-01 | 2008-08-06 | 浙江大学 | 一种基于ContextFS上下文文件系统的高效动态路径解析方法 |
CN102270229A (zh) * | 2011-07-13 | 2011-12-07 | 中国人民解放军海军计算技术研究所 | 一种bios级系统文件的度量方法 |
CN102521255A (zh) * | 2011-11-17 | 2012-06-27 | 北京锐安科技有限公司 | 一种从快捷方式中快速解析出可执行文件路径的方法 |
Non-Patent Citations (4)
Title |
---|
EXT2文件系统的分析与研究;徐虹等;《成都信息工程学院学报》;20070630;第22卷(第3期);330-333 * |
NTFS文件系统结构分析;王兰英等;《计算机工程与设计》;20060228;第27卷(第3期);418-419,484 * |
徐虹等.EXT2文件系统的分析与研究.《成都信息工程学院学报》.2007,第22卷(第3期),330-333. |
王兰英等.NTFS文件系统结构分析.《计算机工程与设计》.2006,第27卷(第3期),418-419,484. |
Also Published As
Publication number | Publication date |
---|---|
CN103150395A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150395B (zh) | 基于ssd的文件系统目录路径解析方法 | |
Islam et al. | High performance design for HDFS with byte-addressability of NVM and RDMA | |
US9858303B2 (en) | In-memory latch-free index structure | |
Debnath et al. | {ChunkStash}: Speeding Up Inline Storage Deduplication Using Flash Memory | |
US7966289B2 (en) | Systems and methods for reading objects in a file system | |
US11347443B2 (en) | Multi-tier storage using multiple file sets | |
US8051249B2 (en) | Method for preloading data to improve data-retrieval times | |
US9672245B2 (en) | Memory storage apparatus, method of supporting transaction function for database, and memory system | |
CN103530387A (zh) | 一种hdfs针对小文件的改进方法 | |
US9727479B1 (en) | Compressing portions of a buffer cache using an LRU queue | |
Yue et al. | Building an efficient put-intensive key-value store with skip-tree | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
Lee et al. | iLSM-SSD: An intelligent LSM-tree based key-value SSD for data analytics | |
US11016676B2 (en) | Spot coalescing of distributed data concurrent with storage I/O operations | |
KR20160060550A (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
US11144508B2 (en) | Region-integrated data deduplication implementing a multi-lifetime duplicate finder | |
Lee et al. | ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework | |
US12066952B2 (en) | Data processing method and system, device, and medium | |
US20220342851A1 (en) | File system event monitoring using metadata snapshots | |
Guo et al. | HP-mapper: A high performance storage driver for docker containers | |
Doekemeijer et al. | Key-Value Stores on Flash Storage Devices: A Survey | |
US20220342888A1 (en) | Object tagging | |
CN110737397B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
Kim et al. | Improving small file I/O performance for massive digital archives | |
Chen et al. | UMFS: An efficient user-space file system for non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |