CN106126555A - 一种文件管理方法及文件系统 - Google Patents
一种文件管理方法及文件系统 Download PDFInfo
- Publication number
- CN106126555A CN106126555A CN201610429365.5A CN201610429365A CN106126555A CN 106126555 A CN106126555 A CN 106126555A CN 201610429365 A CN201610429365 A CN 201610429365A CN 106126555 A CN106126555 A CN 106126555A
- Authority
- CN
- China
- Prior art keywords
- file
- write
- data
- request
- affairs
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
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
本发明公开了一种文件管理方法及文件系统,涉及系统管理领域。为解决现有的大容量文件系统不能用于实时操作系统且结构复杂的问题而发明。包括:接收上层应用发送的数据请求;当所述数据请求为写入请求时,解析写入文件路径,得到写入文件ID;获取写入文件头信息;获取写入数据逻辑块号;当所述写入数据逻辑块号大于当前文件最大逻辑块号时,分配物理块;如果分配成功,将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;获取写入数据物理块号;将所述写入请求对应的数据写入所述写入数据物理块号对应的物理块;修改文件头,得到写入结果,并向所述上层应用返回所述写入结果。
Description
技术领域
本发明涉及系统管理领域,具体地,涉及一种文件管理方法及文件系统。
背景技术
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时删除文件等。
对于传统的Linux文件系统,由于上层应用程序的呼叫需要经由内核的内核缓冲层和内核级接口发送给大容量文件系统,因此对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂。
发明内容
本发明提供一种文件管理方法及文件系统,能够用于实时操作系统,且结构简单。
一方面,本发明实施例提供一种文件管理方法,包括:S10、通过预设外部接口接收上层应用发送的数据请求;S11、当所述数据请求为写入请求时,通过预设目录访问模块根据所述写入请求解析写入文件路径,得到写入文件ID;S12、通过预设文件访问模块以所述写入文件ID作为物理块号获取写入文件头信息;S13、通过所述文件访问模块根据所述写入请求获取写入数据逻辑块号;S14、当所述写入数据逻辑块号大于当前文件最大逻辑块号时,通过预设B+树算法模块分配物理块;S15、如果分配成功,通过所述B+树算法模块将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;S16、通过所述B+树算法模块根据所述写入文件头信息获取写入数据物理块号;S17、通过所述文件访问模块将所述写入请求对应的数据写入所述写入数据物理块号对应的物理块;S18、通过所述文件访问模块根据所述写入文件头信息修改文件头,得到写入结果,并通过所述外部接口向所述上层应用返回所述写入结果。
另一方面,本发明实施例提供一种文件管理系统,包括:
外部接口,用于接收上层应用发送的数据请求;
目录访问模块,与所述外部接口相连,用于当所述数据请求为写入请求时,根据所述写入请求解析写入文件路径,得到写入文件ID;
文件访问模块,与所述目录访问模块相连,用于以所述写入文件ID作为物理块号获取写入文件头信息;根据所述写入请求获取写入数据逻辑块号;
B+树算法模块,与所述文件访问模块相连,用于当所述写入数据逻辑块号大于当前文件最大逻辑块号时,分配物理块;如果分配成功,将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;根据所述写入文件头信息获取写入数据物理块号;
所述文件访问模块,还用于将所述写入请求对应的数据写入所述写入数据物理块号对应的物理块;根据所述写入文件头信息修改文件头,得到写入结果;
所述外部接口,还用于向所述上层应用返回所述写入结果。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
附图说明
图1为本发明实施例1提供的文件管理方法的流程图;
图2为本发明实施例2提供的文件管理方法的流程图;
图3为本发明实施例3提供的文件管理方法的流程图;
图4为本发明实施例4提供的文件管理方法的流程图;
图5为本发明实施例5提供的文件管理方法的流程图一;
图6为本发明实施例6提供的文件管理方法的流程图二;
图7为本发明实施例7提供的文件管理方法的流程图;
图8为本发明实施例8提供的文件管理装置的结构示意图一;
图9为本发明实施例9提供的文件管理装置的结构示意图二。
具体实施方式
下面结合附图和实施例对本发明进一步说明。但这些例举性实施方式的用途和目的仅用来例举本发明,并非对本发明的实际保护范围构成任何形式的任何限定,更非将本发明的保护范围局限于此。
实施例1
如图1所示,本发明实施例提供一种文件管理方法,包括:
步骤101,通过预设外部接口接收上层应用发送的数据请求。
在本实施例中,上层应用需要进行文件写入、挂载、删除、恢复等操作时,可以向文件管理系统发送对应的数据请求,使文件管理系统通过预设外部接口接收该数据请求。
步骤102,当该数据请求为写入请求时,通过预设目录访问模块根据该写入请求解析写入文件路径,得到写入文件ID。
在本实施例中,通过步骤102解析写入文件路径的过程包括:首先将写入文件路径以“\”或“/”分割为多个字符串,每个字符串代表一级目录,然后从根目录开始逐级目录查找对应文件名、取出文件ID并打开文件,直至所有字符串查找完成,得到最后的一个字符串所对应的文件ID即为写入文件ID。
其中,目录也是一种特殊的文件,只是目录文件保存的是文件名到“文件ID”的对应关系,目录文件包含多个目录项,每个目录项内容包括:目录项长度、文件ID和文件名。
以文件路径/aaa/bbb/ccc为例,该路径以“/”字符分为三级。首先取出aaa,在根目录文件中下查找“文件名”为aaa的目录项,获取该项的“文件ID”,根据“文件ID”打开aaa目录文件(读取文件头)。再在aaa目录中查找bbb对应的目录项并打开目录文件,以此类推,直至找到ccc的目录项,获取到该目录项的“文件ID”即“写入文件ID”。
步骤103,通过预设文件访问模块以该写入文件ID作为物理块号获取写入文件头信息。
在本实施例中,通过该步骤103获取写入文件头信息的过程包括:读取该物理块号对应物理块的内容到内存中的文件头结构。文件ID即为文件头块的块号,如文件ID为3,则读取第3块的内容。
步骤104,通过文件访问模块根据该写入请求获取写入数据逻辑块号。
在本实施例中,写入请求包括:写入位置、写入长度以及实际写入数据逻辑块号。其中,获取写入数据逻辑块号的过程可以为将写入位置除以预设块大小。
步骤105,当该写入数据逻辑块号大于当前文件最大逻辑块号时,通过预设B+树算法分配物理块。
在本实施例中,通过步骤105分配的物理块数量=(写入位置+写入长度)/块大小–当前文件最大逻辑块号;其中,如果“(写入位置+写入长度)/块大小”有余数,则“物理块数量”再加1。
步骤106,如果分配成功,通过B+树算法模块将分配的物理块添加到写入文件头信息对应的写入文件B+树中。
在本实施例中,为了能够根据写入文件头信息获取写入数据物理块号,首先要通过步骤106将分配的物理块添加到写入文件头信息对应的写入文件B+树中。
步骤107,通过B+树算法模块根据写入文件头信息获取写入数据物理块号。
在本实施例中,通过步骤107获取写入数据物理块号的过程包括:从文件头信息中的B+树根节点开始,执行以下步骤:
1、在节点中查找小于或等于“步骤104所获取到的逻辑块号”的最大key值。获取该key所在项。
2、如果该项“类型”为非叶子节点,则根据“子节点物理块号”读取子节点,回到第1步。
3、如果该项“类型”为叶子节点,则可计算得到物理块号,计算公式如下:
写入数据物理块号=起始物理块号+(步骤104所获取到的写入数据逻辑块号-key)。其中,叶子节点的结构包含的字段为key、上述起始物理块号和块数量。
步骤108,通过文件访问模块将写入请求对应的数据写入该写入数据物理块号对应的物理块。
步骤109,通过该文件访问模块根据写入文件头信息修改文件头,得到写入结果,并通过外部接口向上层应用返回该写入结果。
在本实施例中,通过文件访问模块修改文件头,具体包括修改文件头中的“文件长度”和“文件修改时间”两个字段。该写入结果具体为实际写入数据的长度。
其中,“文件长度”的修改方式为将“文件长度”修改为文件写入完成后的长度。如原文件长度为10,写入请求为“偏移:9,长度:6,数据:××××××”,则写入完成后文件长度为15。而如果写入请求为“偏移:2,长度:2,数据:××”,则写入完成后文件长度还是10,无需修改。当“写入偏移+写入长度”大于当前文件长度时才需要修改“文件长度”。
“文件修改时间”的修改方式为将“文件修改时间”改为当前时间(当前时间通过操作系统接口获取)。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
实施例2
如图2所示,本发明实施例提供一种文件管理方法,包括:
步骤201至步骤207,接收上层应用发送的数据请求,并获取写入数据物理块号;该过程与图1所示的步骤101至步骤107相似,在此不再一一赘述。
步骤208,通过预设加密模块对该写入请求对应的数据进行加密,得到加密数据。
步骤209,通过文件访问模块将该加密数据写入该写入数据物理块号对应的物理块。该过程与图1所示的步骤108相似,在此不再一一赘述。
步骤210,修改文件头,并返回写入结果,该过程与图1所示的步骤109相似,在此不再一一赘述。
为了使本实施例提供的文件管理方法,支持文件系统层的数据加密,可以在数据写入之前,首先通过步骤208进行加密。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
实施例3
如图3所示,本发明实施例提供一种文件管理方法,包括:
步骤301,通过预设外部接口接收上层应用发送的数据请求。该过程与图1所示的步骤101相似,在此不再一一赘述。
步骤302,通过预设事务处理模块分配事务,得到写入事务ID。
步骤303至步骤306,当数据请求为写入请求时,获取写入文件ID、写入文件头信息和写入数据逻辑块号,并分配物理块。该过程与图1所示的步骤102至步骤105相似,在此不再一一赘述。
步骤307,通过事务处理模块将该分配过程写入事务。
步骤308,如果分配成功,通过B+树算法模块将分配的物理块添加到写入文件头信息对应的写入文件B+树中。该过程与图1所示的步骤106相似,在此不再一一赘述。
步骤309,通过事务处理模块将该添加过程写入事务。
步骤310至步骤311,获取写入数据物理块号并将数据写入物理块。该过程与图1所示的步骤107至步骤108相似,在此不再一一赘述。
步骤312,通过文件访问模块修改文件头,得到写入结果,并通过事务处理模块将该修改过程写入事务。
步骤313,通过事务处理模块分别写入事务头和事务数据到预设事务log,并标记事务为未完成状态。
步骤314,通过事务处理模块写入事务数据到事务头对应的扇区。
步骤315,通过事务处理模块标记事务为一致态,并通过外部接口向上层应用返回写入结果。
在本实施例中,以修改文件头为例子,如果文件系统将块大小设置为4个扇区,文件ID为3,文件头长度为2个扇区。那么修改文件头时会写入第12(4×3)扇区开始的2个扇区,即第12,13扇区。“写入事务”即当使用事务提交时,数据不会立即写入第12、13扇区,而是在扇区列表中增加一个区间,假设当前区间数为0,则区间数增加到1,同时设置“区间1起始扇区”为12,“区间1扇区数量”为2,再将2个扇区文件头数据保存到“事务数据扇区1”和“事务数据扇区2”。这整个过程都是在操作事务的内存结构,没有磁盘操作。所有磁盘操作在事务提交过程中完成,具体过程为首先将整个事务内存结构写入事务log磁盘区域(注意这里还是没有写入第12,13扇区),标记事务为“未完成状态”,再将文件头写入第12,13扇区,最后标记事务为“一致态”。
在本实施例中,通过事务处理模块能够实现文件系统的掉电保护。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
实施例4
如图4所示,本发明实施例提供一种文件管理方法,该方法与图1所示的相似,区别在于,还包括:
步骤110,当数据请求为挂载请求时,根据挂载请求读取预设超级块,获取事务头log块位置、大小以及磁盘空闲块管理文件ID和根目录文件ID。
步骤111,通过预设事务处理模块检查事务完整性。
在本实施例中,步骤111包括通过事务处理模块根据事务头log块位置查找未完成的事务,并将未完成的事务对应的数据写入到对应的扇区;通过事务处理模块标记事务为完成状态。其中,写入的扇区的位置记录在事务的事务头中。
在本实施例中,检查事务完整性是文件系统掉电保护最关键的一步。如果文件系统在写入事务头和事务数据之前意外断电,则放弃(不处理)本次事务,所有对文件元数据的改动都不会发生;如果文件系统在写入事务头和事务数据之后且返回写入结果之前意外断电,则重做事务,即重新将写入事务数据到事务头对应的扇区并返回写入结果。
即事务检查模块只需要处理“在写入事务头和事务数据之后且返回写入结果之前意外断电”的事务。那么如何判断事务是“在写入事务头和事务数据之后且返回写入结果之前意外断电”?判断事务头结构中的“事务状态”字段,如果为“未完成态”则表示事务“在写入事务头和事务数据之后且返回写入结果之前意外断电”。
步骤112,如果事务完整,根据磁盘空闲块管理文件ID通过文件访问模块读取空闲文件管理头。
步骤113,根据根目录文件ID通过文件访问模块读取根目录文件头。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
实施例5
如图5所示,本发明实施例提供一种文件管理方法,该方法与图1所示的相似,区别在于,还包括:
步骤114,当数据请求为文件删除请求时,通过目录访问模块根据文件删除请求解析删除文件路径,查找删除目录项,得到删除文件ID。
在本实施例中,通过步骤114获取删除文件ID的过程与通过步骤102获取写入文件ID的过程相似,在此不再一一赘述。
步骤115,通过目录访问模块删除该删除目录项。
步骤116,通过文件访问模块根据删除文件ID获取删除文件头信息。
步骤117,通过文件访问模块对删除请求对应的文件进行处理,得到删除处理结果。
在本实施例中,通过步骤117对删除请求对应的文件进行处理的过程包括:通过文件访问模块判断删除请求对应的B+树层数是否大于2;如果大于2,通过文件访问模块将删除请求对应的文件链入预设已删除队列,得到删除处理结果;否则,通过文件访问模块将删除请求回收至预设B+树空间,得到删除处理结果。其中,删除请求对应的B+树层数可以根据删除请求对应的B+树节点中记录的信息确定。
在本实施例中,将删除请求对应的文件链入已删除队列,该过程与步骤105的分配物理块的过程配合,能够提高删除效率。步骤105分配物理块时,优先从已删除队列中的文件B+树分配物理块;如果已删除队列为空,则从空闲块管理B+树分配物理块;文件系统格式化时将所有物理块添加到空闲块管理B+树。
步骤118,通过外部接口向上层应用返回该删除处理结果。
进一步的,如图6所示,在步骤115之前,还包括:步骤119,通过预设事务处理模块分配事务,得到删除事务ID。
此时,在步骤115之后,步骤116之前,还包括:步骤120,通过事务处理模块将该删除过程写入事务;
在步骤117之后,步骤118之前,还包括:步骤121,通过事务处理模块将该处理过程写入事务。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
实施例6
如图7所示,本发明实施例提供一种文件管理方法,该方法与图1所示的相似,区别在于,还包括:
步骤122,当数据请求为恢复请求时,通过预设数据恢复模块将预设所有数据块加入预设磁盘空闲块B+树。
步骤123,通过数据恢复模块建立文件头节点块链表以及B+树叶子节点块链表。
在本实施例中,通过步骤121建立链表的过程包括:通过数据恢复模块扫描所有物理块,判断是否存在块标识为文件头节点类型且格式化ID为超级块中的格式化ID且文件ID不是空闲块管理文件ID的物理块;如果存在,将该物理块加入文件头节点块链表,并从磁盘空闲块B+树中删除该物理块;判断是否存在块标识为B+树叶子节点类型且格式化ID为超级块中的格式化ID且文件ID不是空闲块管理文件ID的物理块;如果存在,将该数据块加入B+树叶子节点块链表,从磁盘空闲块B+树删除该物理块,并将该叶子节点块中记录的所有物理块区间均从磁盘空闲块B+树中删除。
步骤124,对于文件头节点块链表中每个文件头节点块,清除该文件头节点块的B+树根节点字段。
步骤125,从B+树叶子节点块链表中查找文件ID为当前文件头块号的B+树叶子节点,并将该B+树叶子节点根据第一个物理块区间的key值插入当前文件B+树。
在本实施例中,当找到匹配的叶子节点块时,将其内容读取到对应的内存区域,被标记的子节点1即为第一个物理块区间。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
实施例7
如图8所示,本发明实施例提供一种文件管理系统,包括:
外部接口801,用于接收上层应用发送的数据请求;
目录访问模块802,与所述外部接口相连,用于当所述数据请求为写入请求时,根据所述写入请求解析写入文件路径,得到写入文件ID;
文件访问模块803,与所述目录访问模块相连,用于以所述写入文件ID作为物理块号获取写入文件头信息;根据所述写入请求获取写入数据逻辑块号;
B+树算法模块804,与所述文件访问模块相连,用于当所述写入数据逻辑块号大于当前文件最大逻辑块号时,分配物理块;如果分配成功,将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;根据所述写入文件头信息获取写入数据物理块号;
所述文件访问模块,还用于将所述写入请求对应的数据写入所述写入数据物理块号对应的物理块;根据写入文件头信息修改文件头,得到写入结果;
所述外部接口,还用于向所述上层应用返回所述写入结果。
在本实施例中,通过外部接口、目录访问模块、文件访问模块和B+树算法模块实现文件管理的过程,与本发明实施例1-6提供的过程相似,在此不再一一赘述。
进一步的,如图9所示,本实施例提供的文件管理系统,还包括:
事务处理模块805,分别与所述外部接口和文件访问模块相连,用于分配事务,得到写入事务ID;将物理块的分配过程写入事务;将物理块的添加过程写入事务;将文件头的修改过程写入事务;分别写入事务头和事务数据到预设事务log,并标记事务为未完成状态;写入事务数据到所述事务头对应的扇区;标记事务为一致态。
在本实施例中,通过事务处理模块实现掉电保护的过程,与本发明实施例3和实施例5提供的过程相似,在此不再一一赘述。
本发明具有如下有益效果:直接通过外部接口接收数据请求,能够提高大容量文件系统的访问效率;此外,直接将写入文件ID作为物理块号,简化了大容量文件系统的结构。本发明实施例提供的技术方案,解决了现有技术中对于没有内核缓冲层的实时操作系统,无法使用该大容量文件系统;此外,传统的Linux文件系统一般使用单独的模块管理文件ID,大容量文件系统的结构复杂的问题。
以上实施例的先后顺序仅为便于描述,不代表实施例的优劣。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种文件管理方法,其特征在于,包括:
S10、通过预设外部接口接收上层应用发送的数据请求;
S11、当所述数据请求为写入请求时,通过预设目录访问模块根据所述写入请求解析写入文件路径,得到写入文件ID;
S12、通过预设文件访问模块以所述写入文件ID作为物理块号获取写入文件头信息;
S13、通过所述文件访问模块根据所述写入请求获取写入数据逻辑块号;
S14、当所述写入数据逻辑块号大于当前文件最大逻辑块号时,通过预设B+树算法模块分配物理块;
S15、如果分配成功,通过所述B+树算法模块将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;
S16、通过所述B+树算法模块根据所述写入文件头信息获取写入数据物理块号;
S17、通过所述文件访问模块将所述写入请求对应的数据写入所述写入数据物理块号对应的物理块;
S18、通过所述文件访问模块根据所述写入文件头信息修改文件头,得到写入结果,并通过所述外部接口向所述上层应用返回所述写入结果。
2.根据权利要求1所述的文件管理方法,其特征在于,在所述S17之前,还包括:
S19、通过预设加密模块对所述写入请求对应的数据进行加密,得到加密数据;
所述S17具体为:通过所述文件访问模块将所述加密数据写入所述写入数据物理块号对应的物理块。
3.根据权利要求1或2所述的文件管理方法,其特征在于,
在所述S10之后所述S11之前,还包括:S20、通过预设事务处理模块分配事务,得到写入事务ID;
所述S14,包括:S141、当所述写入数据逻辑块号大于当前文件最大逻辑块号时,通过预设B+树算法模块分配物理块;S142、通过所述事务处理模块将该分配过程写入事务;
所述S15,包括:S151、如果分配成功,通过所述B+树算法模块将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;S152、通过所述事务处理模块将该添加过程写入事务;
所述S18,包括:S181、通过所述文件访问模块修改文件头,得到写入结果,并通过所述事务处理模块将该修改过程写入事务;S182、通过所述事务处理模块分别写入事务头和事务数据到预设事务log,并标记事务为未完成状态;S183、通过所述事务处理模块写入事务数据到所述事务头对应的扇区;S184、通过所述事务处理模块标记事务为一致态,并通过所述外部接口向所述上层应用返回所述写入结果。
4.根据权利要求1或2所述的文件管理方法,其特征在于,当所述数据请求为挂载请求时,所述方法还包括:
S21、根据所述挂载请求读取预设超级块,获取事务头log块位置、大小以及磁盘空闲块管理文件ID和根目录文件ID;
S22、通过预设事务处理模块检查事务完整性;
S23、如果事务完整,根据所述磁盘空闲块管理文件ID通过所述文件访问模块读取空闲文件管理头;
S24、根据所述根目录文件ID通过所述文件访问模块读取根目录文件头。
5.根据权利要求1或2所述的文件管理方法,其特征在于,当所述数据请求为文件删除请求时,所述方法还包括:
S25、通过所述目录访问模块根据所述文件删除请求解析删除文件路径,查找删除目录项,得到删除文件ID;
S26、通过所述目录访问模块删除所述删除目录项;
S27、通过所述文件访问模块根据所述删除文件ID获取删除文件头信息;
S28、通过所述文件访问模块对所述删除请求对应的文件进行处理,得到删除处理结果;
S29、通过所述外部接口向所述上层应用返回所述删除处理结果。
6.根据权利要求5所述的文件管理方法,其特征在于,所述S28,包括:
S281、通过所述文件访问模块判断所述删除请求对应的B+树层数是否大于2;如果大于2,执行S282;否则,执行S283;
S282、通过所述文件访问模块将所述删除请求对应的文件链入预设已删除队列,得到删除处理结果;
S283、通过所述文件访问模块将所述删除请求回收至预设B+树空间,得到删除处理结果。
7.根据权利要求5所述的文件管理方法,其特征在于,
在所述S26之前,还包括:S30、通过预设事务处理模块分配事务,得到删除事务ID;
所述S26包括:S261、通过所述目录访问模块删除所述删除目录项;S262、通过所述事务处理模块将该删除过程写入事务;
所述S28包括:S281、通过所述文件访问模块对所述删除请求对应的文件进行处理,得到删除处理结果;S282、通过所述事务处理模块将该处理过程写入事务。
8.根据权利要求1或2所述的文件管理方法,其特征在于,当所述数据请求为恢复请求时,所述方法还包括:
S31、通过预设数据恢复模块将预设所有数据块加入预设磁盘空闲块B+树;
S32、通过所述数据恢复模块建立文件头节点块链表以及B+树叶子节点块链表;
S33、对于所述文件头节点块链表中每个文件头节点块,清除该文件头节点块的B+树根节点字段;
S34、从所述B+树叶子节点块链表中查找文件ID为当前文件头块号的B+树叶子节点,并将该B+树叶子节点根据第一个物理块区间的key值插入当前文件B+树。
9.一种文件管理系统,其特征在于,包括:
外部接口,用于接收上层应用发送的数据请求;
目录访问模块,与所述外部接口相连,用于当所述数据请求为写入请求时,根据所述写入请求解析写入文件路径,得到写入文件ID;
文件访问模块,与所述目录访问模块相连,用于以所述写入文件ID作为物理块号获取写入文件头信息;根据所述写入请求获取写入数据逻辑块号;
B+树算法模块,与所述文件访问模块相连,用于当所述写入数据逻辑块号大于当前文件最大逻辑块号时,分配物理块;如果分配成功,将分配的物理块添加到所述写入文件头信息对应的写入文件B+树中;根据所述写入文件头信息获取写入数据物理块号;
所述文件访问模块,还用于将所述写入请求对应的数据写入所述写入数据物理块号对应的物理块;根据所述写入文件头信息修改文件头,得到写入结果;
所述外部接口,还用于向所述上层应用返回所述写入结果。
10.根据权利要求9所述的文件管理系统,其特征在于,还包括:
事务处理模块,分别与所述外部接口和文件访问模块相连,用于分配事务,得到写入事务ID;将物理块的分配过程写入事务;将物理块的添加过程写入事务;将文件头的修改过程写入事务;分别写入事务头和事务数据到预设事务log,并标记事务为未完成状态;写入事务数据到所述事务头对应的扇区;标记事务为一致态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610429365.5A CN106126555B (zh) | 2016-06-16 | 2016-06-16 | 一种文件管理方法及文件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610429365.5A CN106126555B (zh) | 2016-06-16 | 2016-06-16 | 一种文件管理方法及文件系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126555A true CN106126555A (zh) | 2016-11-16 |
CN106126555B CN106126555B (zh) | 2019-03-26 |
Family
ID=57469557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610429365.5A Active CN106126555B (zh) | 2016-06-16 | 2016-06-16 | 一种文件管理方法及文件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126555B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932271A (zh) * | 2017-05-27 | 2018-12-04 | 大唐移动通信设备有限公司 | 一种文件管理方法及装置 |
CN110659162A (zh) * | 2019-09-27 | 2020-01-07 | 厦门市美亚柏科信息股份有限公司 | 一种tpsfs文件系统的数据恢复方法、装置、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832527A (en) * | 1993-09-08 | 1998-11-03 | Fujitsu Limited | File management system incorporating soft link data to access stored objects |
CN103577470A (zh) * | 2012-08-03 | 2014-02-12 | 上海交通大学 | 一种提升web服务器性能的文件系统及方法 |
-
2016
- 2016-06-16 CN CN201610429365.5A patent/CN106126555B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832527A (en) * | 1993-09-08 | 1998-11-03 | Fujitsu Limited | File management system incorporating soft link data to access stored objects |
CN103577470A (zh) * | 2012-08-03 | 2014-02-12 | 上海交通大学 | 一种提升web服务器性能的文件系统及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932271A (zh) * | 2017-05-27 | 2018-12-04 | 大唐移动通信设备有限公司 | 一种文件管理方法及装置 |
CN110659162A (zh) * | 2019-09-27 | 2020-01-07 | 厦门市美亚柏科信息股份有限公司 | 一种tpsfs文件系统的数据恢复方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106126555B (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103262043B (zh) | 从差异备份中执行数据库的精细恢复的方法和系统 | |
US6789094B2 (en) | Method and apparatus for providing extended file attributes in an extended attribute namespace | |
CN110018998B (zh) | 一种文件管理方法、系统及电子设备和存储介质 | |
CN105787093B (zh) | 一种基于LSM-Tree结构的日志文件系统的构建方法 | |
CN110647497A (zh) | 一种基于hdfs的高性能文件存储与管理系统 | |
US20110219049A1 (en) | System for permanent file deletion | |
CN100507919C (zh) | 一种fat文件系统及其处理方法 | |
CN108984686A (zh) | 一种基于日志合并的分布式文件系统索引方法和装置 | |
CN106407355A (zh) | 一种数据存储方法及装置 | |
CN106874399B (zh) | 一种联网备份系统及备份方法 | |
CN106446044B (zh) | 存储空间回收方法及装置 | |
CN109496292A (zh) | 一种磁盘管理方法、磁盘管理装置及电子设备 | |
CN104965835B (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN112800007B (zh) | 适用于fat32文件系统的目录项扩展方法和系统 | |
CN103942301A (zh) | 一种面向多数据类型访问应用的分布式文件系统 | |
CN106126555A (zh) | 一种文件管理方法及文件系统 | |
CN102799583B (zh) | 一种面向对象的存取方法及系统 | |
US8135760B1 (en) | Determining the lineage of a content unit on an object addressable storage system | |
CN105677579A (zh) | 缓存系统中的数据访问方法和系统 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN109325005A (zh) | 一种数据处理方法和电子设备 | |
CN112732726B (zh) | 数据处理方法及装置、处理器、计算机存储介质 | |
CN102831240A (zh) | 扩展元数据文件的存储方法和存储结构 | |
CN114185849A (zh) | 文件操作方法、文件操作系统、电子设备及存储介质 | |
CN112131194A (zh) | 一种只读文件系统的文件存储控制方法及装置、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |