CN109597793B - 一种提升文件系统io性能的方法 - Google Patents
一种提升文件系统io性能的方法 Download PDFInfo
- Publication number
- CN109597793B CN109597793B CN201811472081.XA CN201811472081A CN109597793B CN 109597793 B CN109597793 B CN 109597793B CN 201811472081 A CN201811472081 A CN 201811472081A CN 109597793 B CN109597793 B CN 109597793B
- Authority
- CN
- China
- Prior art keywords
- space
- file
- continuous
- file system
- free space
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机系统软件专业技术领域,涉及一种提升文件系统IO性能的方法,该方法用于解决单一链式碎片化空间分配方法导致大文件读写删除等操作频繁与底层设备IO,造成文件系统性能降低的问题。一种提升文件系统IO性能的方法包括3个关键方面:1.在创建特定文件时查找并为其预先分配指定大小的连续空间;2.根据连续空间地址信息向特定文件写入数据,并及时维护与更新地址信息;3.根据连续空间地址信息从特定文件读取数据。实施本发明设计的链式碎片化与连续空间相结合的混合分配方法后,能够在合理的空间利用率下有效提升特定文件的IO性能。
Description
技术领域
本发明属于计算机系统软件专业技术领域,具体提出一种提升文件系统IO性能的方法。
背景技术
文件系统以链表方式管理逻辑分区的空间分配时,会造成空间碎片化的问题,特别是对大文件进行IO操作时,在链表查找地址会耗费大量时间,从而降低文件系统的整体IO性能。针对以链表方式管理空间分配的文件系统,如果对于空间碎片化的问题处理不当,长时间使用文件系统后整体性能将急剧下降。如何在合理的空间利用率下有效解决空间碎片化造成的文件系统IO性能下降是需要重点研究的问题。因此,提出一种提升文件系统IO性能的方法。
发明内容
本发明的目的:
为了解决单一链式碎片化空间分配方法导致大文件读写删除等操作频繁与底层设备IO,造成文件系统性能降低的问题,以结合多种空间分配方法在合理的空间利用率下有效提升文件系统的整体IO性能,特提出本发明。
本发明的技术方案:
一种提升文件系统IO性能的方法,其特征在于,包括以下步骤:
步骤1:在文件系统启动时,创建链式碎片化空间分配管理结构,根据块标记判断其为已分配或空闲状态,以链表方式维护每一个文件的空间使用情况;
步骤2:在文件系统启动时,创建连续空间分配管理结构,主要成员包括连续空闲空间的起始块号与块数目、所属的文件句柄以及文件是否使用连续空间地址索引的标记;
步骤3:在文件系统正常运行创建文件时,当选择为该文件预先分配连续空闲空间,则遍历整个碎片化空间链表尝试找到满足预先分配条件的连续空闲空间;
步骤4:如果指定了预先分配大小,则找到当前空间第一个不小于预先分配大小的连续空闲空间,转向步骤5;如果未指定预先分配大小,则找到当前空间最大的连续空闲空间,直接将其标记为已分配,转向步骤6;如果无法找到满足条件的连续空闲空间,则执行完毕,返回失败;
步骤5:在文件系统正常运行创建文件时,当已找到满足预先分配条件的连续空闲空间时:如果该连续空闲空间等于预先分配大小,则直接将该链表元素标记为已分配;如果该连续空闲空间大于预先分配大小,则其分裂两个链表元素,一个大小等于预先分配大小并将其标记为已分配,另一个则成为一段新的空闲空间,然后根据分配的结果在该文件句柄中填充连续空间分配管理结构各成员;
步骤6:在文件系统正常运行中,当选择以预先分配空间方式打开文件时,检查该文件真正的空间使用情况:如果该文件仅存在一个连续使用空间,则将文件是否使用连续空间地址索引标记为真,转向步骤7;如果该文件使用超过一个的不连续空间,则将其标记为假,转向步骤9;
步骤7:在文件系统正常运行中,以预先分配空间方式创建并打开文件后,向该文件写入数据时,将在预先分配的连续空间直接进行线性索引,不从空间链表中查找地址空间信息,在文件关闭时将同步更新文件的真正大小;
步骤8:在文件系统正常运行中,以预先分配空间方式创建并打开文件后,从该文件读取数据时,将在预先分配的连续空间直接进行线性索引,不从空间链表中查找地址空间信息,执行完毕;
步骤9:在文件系统正常运行中,读写文件时通过空间链表索引进行逻辑地址向物理地址的转换,执行完毕。
所述的文件系统以链表方式管理空间分配。
所述的文件系统的逻辑分区大于1GB。
本发明具有的优点效果:
实施本发明所述的方法后,可解决单一链式碎片化空间分配方法导致大文件读写删除等操作频繁与底层设备IO,造成文件系统性能降低的问题。
附图说明
图1为空间混合分配方法示意图。
图2为空间混合分配方法执行流程图。
具体实施方式
以链表方式管理空间分配的文件系统,由于每个文件可能会被多次打开并追加写入数据,所以文件使用的空间并不连续且以链表的方式互相连接。当一个文件的数据越来越多,所包含的不连续空间将会越来越多,查找的耗时也会越来越长。单一的链式空间分配不足以解决空间碎片化的问题,所以针对大文件应结合连续空间分配方法以提升其IO性能,如图1。本发明的核心技术方案如下:
1).在文件系统启动时,创建链式碎片化空间分配管理结构与连续空间分配管理结构。
在文件系统启动时,首先创建链式碎片化空间分配管理结构,根据块标记判断其为已分配或空闲状态,以链表方式维护每一个文件的空间使用情况。其次创建连续空间分配管理结构,主要成员包括连续空闲空间的起始块号与块数目、所属的文件句柄以及文件是否使用连续空间地址索引的标记等。
2).在文件系统运行中,创建文件时连续空闲空间的查找与分配。
在文件系统正常运行创建文件时,当选择为该文件预先分配连续空闲空间,则遍历整个碎片化空间链表尝试找到满足预先分配条件的连续空闲空间。
当已找到满足预先分配条件的连续空闲空间时:如果该连续空闲空间等于预先分配大小,则直接将该链表元素标记为已分配;如果该连续空闲空间大于预先分配大小,则其分裂两个链表元素,一个大小等于预先分配大小并将其标记为已分配,另一个则成为一段新的空闲空间。然后根据分配的结果在该文件句柄中填充连续空间分配管理结构各成员。
3).在文件系统运行中,读写文件时连续空间的线性索引。
在文件系统正常运行中,当选择以预先分配空间方式打开文件时,检查该文件真正的空间使用情况:如果该文件仅存在一个连续使用空间,则将文件是否使用连续空间地址索引标记为真;如果该文件使用超过一个的不连续空间,则将其标记为假。
以预先分配空间方式创建并打开文件后,向该文件写入数据时,将在预先分配的连续空间直接进行线性索引,不再需要从空间链表中查找地址空间信息,在文件关闭时将同步更新文件的真正大小,如图2。
以预先分配空间方式创建并打开文件后,从该文件读取数据时,将在预先分配的连续空间直接进行线性索引,不再需要从空间链表中查找地址空间信息,如图2。
具体的,使用本发明所述的一种提升文件系统IO性能方法的具体实施例的工作步骤如下:
1)在SATA设备上配置一个FAT文件系统逻辑分区,其中SATA设备物理扇区大小为512B,逻辑分区大小为2GB(包含4194304个物理扇区),逻辑分区类型为FAT32(FAT表中一个表项大小为4B),逻辑分区单个簇大小为4KB(包含8个物理扇区)。
2)在文件系统启动时,创建链式碎片化空间分配管理结构,根据FAT表中标记判断各个簇为已分配或空闲状态,以链表方式维护每一个文件的簇使用情况。
3)在文件系统启动时,创建连续空间分配管理结构,主要成员包括连续空闲簇的起始簇号与簇数目、所属的文件句柄以及文件是否使用连续空间地址索引的标记等。
4)在文件系统正常运行中,创建一个新文件且为其预先分配256MB的连续空闲空间,根据1)中所述,FAT文件系统空间管理的最小单位为簇,256MB连续空闲空间对应65536个连续空闲簇,遍历整个碎片化空间链表尝试找到不小于65536个簇数目的连续空闲簇。
5)当已找到不小于65536个簇数目的连续空闲簇时:如果其正好包含65536个簇,则直接将该链表元素标记为已分配,同步在FAT表中更新相关簇;如果其包含的簇数目大于65536,则其分裂两个链表元素:一个连续空闲簇包含65536个簇,将其在链表标记为已分配,同步在FAT表中更新相关簇的使用情况;另一个则成为一段新的空闲簇。
6)假设找到的连续空闲簇起始簇号为1000,则根据分配结果在该文件句柄中填充连续空间分配管理结构各成员:将连续空闲簇起始簇号与簇数目分别设置为1000与66536,将文件句柄设置为新文件句柄,将文件是否使用连续空间地址索引标记为真。
7)向该文件写入128MB数据时,不再需要从FAT表中查找空闲簇,将在1000~66536个连续空闲簇中直接进行线性索引,然后将
128MB数据写入1000~33768空闲簇中,接着在文件关闭时将同步更新文件真正大小,并在FAT表中更新相关簇的使用情况。
8)从该文件偏移128KB处读取64MB数据时,不再需要从FAT表中查找该文件的簇,将在1000~33768个连续簇中直接进行线性索引,然后将从1032~17416簇中读取64MB数据。
按照上述工作步骤执行即可实现发明所达到的效果。
Claims (3)
1.一种提升文件系统IO性能的方法,其特征在于,包括以下步骤:
步骤1:在文件系统启动时,创建链式碎片化空间分配管理结构,根据块标记判断其为已分配或空闲状态,以链表方式维护每一个文件的空间使用情况;
步骤2:在文件系统启动时,创建连续空间分配管理结构,主要成员包括连续空闲空间的起始块号与块数目、所属的文件句柄以及文件是否使用连续空间地址索引的标记;
步骤3:在文件系统正常运行创建文件时,当选择为该文件预先分配连续空闲空间,则遍历整个碎片化空间链表尝试找到满足预先分配条件的连续空闲空间;
步骤4:如果指定了预先分配大小,则找到当前空间第一个不小于预先分配大小的连续空闲空间,转向步骤5;如果未指定预先分配大小,则找到当前空间最大的连续空闲空间,直接将其标记为已分配,转向步骤6;如果无法找到满足条件的连续空闲空间,则执行完毕,返回失败;
步骤5:在文件系统正常运行创建文件时,当已找到满足预先分配条件的连续空闲空间时:如果该连续空闲空间等于预先分配大小,则直接将该链表元素标记为已分配;如果该连续空闲空间大于预先分配大小,则其分裂两个链表元素,一个大小等于预先分配大小并将其标记为已分配,另一个则成为一段新的空闲空间,然后根据分配的结果在该文件句柄中填充连续空间分配管理结构各成员;
步骤6:在文件系统正常运行中,当选择以预先分配空间方式打开文件时,检查该文件真正的空间使用情况:如果该文件仅存在一个连续使用空间,则将文件是否使用连续空间地址索引标记为真,转向步骤7;如果该文件使用超过一个的不连续空间,则将其标记为假,转向步骤9;
步骤7:在文件系统正常运行中,以预先分配空间方式创建并打开文件后,向该文件写入数据时,将在预先分配的连续空间直接进行线性索引,不从空间链表中查找地址空间信息,在文件关闭时将同步更新文件的真正大小;
步骤8:在文件系统正常运行中,以预先分配空间方式创建并打开文件后,从该文件读取数据时,将在预先分配的连续空间直接进行线性索引,不从空间链表中查找地址空间信息,执行完毕;
步骤9:在文件系统正常运行中,读写文件时通过空间链表索引进行逻辑地址向物理地址的转换,执行完毕。
2.根据权利要求1所述的一种提升文件系统IO性能的方法,其特征在于,所述的文件系统以链表方式管理空间分配。
3.根据权利要求1所述的一种提升文件系统IO性能的方法,其特征在于,所述的文件系统的逻辑分区大于1GB。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811472081.XA CN109597793B (zh) | 2018-12-04 | 2018-12-04 | 一种提升文件系统io性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811472081.XA CN109597793B (zh) | 2018-12-04 | 2018-12-04 | 一种提升文件系统io性能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109597793A CN109597793A (zh) | 2019-04-09 |
CN109597793B true CN109597793B (zh) | 2023-02-17 |
Family
ID=65960675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811472081.XA Active CN109597793B (zh) | 2018-12-04 | 2018-12-04 | 一种提升文件系统io性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109597793B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286871B (zh) * | 2020-12-31 | 2021-03-16 | 湖南源科创新科技有限公司 | 面向多主机fat文件系统的簇分配方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567003B (zh) * | 2009-05-27 | 2012-05-16 | 清华大学 | 并行文件系统中资源的管理和分配方法 |
TWI420305B (zh) * | 2010-10-08 | 2013-12-21 | Phison Electronics Corp | 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法 |
CN107239526B (zh) * | 2017-05-27 | 2020-11-13 | 河南思维轨道交通技术研究院有限公司 | 文件系统实现方法、碎片整理方法、操作位置定位方法 |
-
2018
- 2018-12-04 CN CN201811472081.XA patent/CN109597793B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109597793A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2631821B1 (en) | File storage method and device thereof | |
US7921142B2 (en) | Method and apparatus for storing and accessing data records on solid state disks | |
WO2020038186A1 (zh) | 数据迁移方法、装置及存储设备 | |
CN103229164B (zh) | 数据访问方法和装置 | |
CN105830059A (zh) | 文件访问方法、装置及存储设备 | |
CN103823865A (zh) | 一种数据库主存索引方法 | |
US10162746B2 (en) | Allocating additional requested storage space for a data set in a first managed space in a second managed space | |
JP2006293981A (ja) | データベース格納方法、および、データベース格納システム | |
CN105824879B (zh) | 一种基于PostgreSQL块存储设备的迁移方法 | |
CN104850358A (zh) | 一种磁光电混合存储系统及其数据获取和存储方法 | |
US20140019706A1 (en) | System and method of logical object management | |
CN104077235A (zh) | 分割物理块的方法及存储器系统 | |
CN104536903A (zh) | 一种按数据属性分类存放的混合存储方法及系统 | |
US9557937B2 (en) | Systems, methods, and computer program products implementing hybrid file structures for data storage | |
CN104054071A (zh) | 访问存储设备的方法和存储设备 | |
US10976946B2 (en) | Method and computer system for managing blocks | |
CN103838853A (zh) | 一种基于不同存储介质的混合文件系统 | |
CN102169460A (zh) | 变长数据管理方法及装置 | |
CN102915340A (zh) | 一种扩展的基于b+树对象文件系统 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
CN111522507A (zh) | 一种低延迟的文件系统地址空间管理方法、系统及介质 | |
CN109597793B (zh) | 一种提升文件系统io性能的方法 | |
CN109947669A (zh) | Kv存储设备的地址转换方法与系统 | |
CN106055269A (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 |