CN102609486A - 一种Linux文件系统的数据读写加速方法 - Google Patents

一种Linux文件系统的数据读写加速方法 Download PDF

Info

Publication number
CN102609486A
CN102609486A CN2012100189423A CN201210018942A CN102609486A CN 102609486 A CN102609486 A CN 102609486A CN 2012100189423 A CN2012100189423 A CN 2012100189423A CN 201210018942 A CN201210018942 A CN 201210018942A CN 102609486 A CN102609486 A CN 102609486A
Authority
CN
China
Prior art keywords
file system
file
data
write
linux
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.)
Pending
Application number
CN2012100189423A
Other languages
English (en)
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.)
WUXI SOUL STORAGE TECHNOLOGY Co Ltd
Original Assignee
WUXI SOUL STORAGE TECHNOLOGY 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 WUXI SOUL STORAGE TECHNOLOGY Co Ltd filed Critical WUXI SOUL STORAGE TECHNOLOGY Co Ltd
Priority to CN2012100189423A priority Critical patent/CN102609486A/zh
Publication of CN102609486A publication Critical patent/CN102609486A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种Linux文件系统的数据读写加速方法,涉及计算机的数据存储技术,具体方法是:开始写入数据时,Linux文件系统判断文件是否以快速标识指针方式打开,如果是,文件系统先锁定内核模块缓冲区,然后使用缓冲区的地址,通过磁盘的驱动写入到磁盘;如果不是,文件系统的写流程将传入的数据拷贝(copy)到文件系统的pagecache中;写入以快速标识指针的方式完成后,缓冲区被文件系统所释放。内核模块通过此方法写入文件,就不必通过文件系统pagecachecopy,降低了CPU的开销。这样在内核态实现的各种软件程序都能够在做I/O的时候,显著的降低CPU开销,提高整个系统的性能。

Description

一种Linux文件系统的数据读写加速方法
技术领域
本发明涉及计算机技术,尤其涉及Linux系统的数据读写(I/O)方法。
背景技术
传统的 Linux 文件系统的标准 I/O 接口是基于数据拷贝操作的,即数据读写(I/O)操作会导致数据在操作系统内核地址空间的缓冲区和应用程序用户层地址空间定义的缓冲区之间进行拷贝(copy)。在这种机制中,磁盘驱动采用DMA 方式可以将数据直接从磁盘读到页缓存中,或者将数据从页缓存直接写回到磁盘上,而不能直接在应用程序地址空间和磁盘之间进行数据传输,这样的话,数据在传输过程中需要在应用程序地址空间和页缓存之间进行多次数据拷贝操作。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘 I/O 操作。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限制了系统进行数据传输的性能。
对于这个问题,Linux工作者为应用程序提供标准I/O的接口引入了直接I/O的功能。凡是通过直接 I/O 方式进行数据传输,数据均直接在用户地址空间的缓冲区和磁盘之间直接进行传输,完全不需要页缓存的支持。这样就降低了应用程序做磁盘I/O时CPU开销。这种技术在硬件配置性能较高的服务器或个人计算机中能带来显著的效果。但在CPU配置较低的嵌入式系统中,无法给系统的性能设计带来帮助。而嵌入式系统却广泛使用Linux系统。
嵌入式系统的I/O受限于硬件的配置,又要达到很高的性能,只能把I/O处理模块以内核模块的方式实现,这种方式可以避免应用程序调用系统调用时,操作系统在用户层和内核层做频繁的切换。所以尽管用户层直接I/O的接口虽然已经存在,但在嵌入式的系统中,往往无法被利用。另外例如Linux上NFS server的I/O,也是在内核里实现,就无法使用标准的直接I/O接口。嵌入式系统如果需要提供网络文件系统(NFS)功能,性能就会很差。
现有的嵌入式系统中,由于I/O处理模块以内核模块的形式实现,所以尽管在用户层中存在带直接I/O功能的标准I/O接口,但无法利用直接I/O功能。导致嵌入式系统的文件系统效率比较低。尤其是遇到大量连续数据的传输,尤其困难。
发明内容
为了克服背景技术所述的问题,本发明提出了一种Linux文件系统数据读写加速方法。
本发明运行于一个嵌入式数据存储设备,所述数据存储设备是基于现场可编程门阵列(FPGA)的Linux数据存储装置,含有虚拟存储模块、内核I/O模块和文件系统构成的小型操作系统,连接SCSI/FC接口和网络接口,虚拟存储模块提供虚拟磁带机、虚拟磁盘服务,存储介质是磁盘。本发明的数据读写方法运行于文件系统中,具体是:
1)在Linux 文件系统标准接口增加一个快速标识指针,作为进行快速模式的判断标识;需要做I/O的内核模块通过标准的filp_open()接口,传入快速标识指针和传统的文件标识O_DIRECT参数,打开文件。以页面(page)长度为单位,分配好缓冲区;
2)当内核模块通过filp_write()接口传入缓冲区的指针,开始写入数据时,Linux文件系统判断文件是否以快速标识指针方式打开, 如果是,文件系统先锁定内核模块缓冲区,然后使用缓冲区的地址,通过磁盘的驱动写入到磁盘;如果不是,文件系统的写流程将传入的数据拷贝(copy)到文件系统的page cache中;
3)写入以快速标识指针的方式完成后,缓冲区被文件系统所释放。
本发明的有益效果是:内核模块通过此方法写入文件,就不必通过文件系统page cache copy, 降低了CPU的开销。这样在内核态实现的各种软件程序都能够在做I/O的时候,显著的降低CPU开销,提高整个系统的性能。
附图说明
图1,本发明的实施例硬件组成结构图;
图2,本发明的流程图;
图3,本发明的数据存储装置的结构框图;
图4,现有技术的一般的数据写入系统的步骤示意图;
图5,本发明的技术的数据写入步骤示意图。
具体实施方式
本实施例是一个地震数据采集存储系统,地震数据是连续不断的采集的地震波信息,具有连续性、大容量的特点,根据现有的地震监测组织的数据格式,往往一组数据的容量要有几百兆,而且传输存储过程中不能有缺损,否则会影响监测的准确性。
所以如图1,本实施例采用的一整套数据采集存储系统包括了数据采集服务器1,和带有文件系统的嵌入式数据采集存储器2,两者通过SCSI、FC、TCP/IP网络连接。监测到的数据首先被数据采集服务器获取,然后通过网络让嵌入式数据采集存储器2存储。
在这个系统中,嵌入式数据采集存储器2是基于FPGA的Linux文件系统的数据存储装置,其结构如图2:含有SCSI/FC接口3和网络接口4,作为与网络连接的接口,在FPGA芯片中含有虚拟存储模块5、内核I/O模块6和Linux文件系统7构成一个小型操作系统,然后连接磁盘8作为存储媒介。本装置通过文件系统写入采集的数据,通过I/O内核模块实现数据的存储。磁盘是一般的SATA磁盘组成RAID1。这个嵌入式存储器运行的是Linux系统,本发明方法所述的数据读写加速方法适用于该系统。
如图3所示的流程图,本发明方法的具体步骤是这样的:在文件读写开始以后,首先给文件添加一个快速标识指针,由于一般的Linux文件系统中普通的文件标识是O_DIRECT,所以本实施例中将这个快速标识指针命名为O_DIRECT_K,作为和一般文件的区别。然后在I/O内核模块中以O_DIRECT_K的方式打开文件,以页面(page)长度为单位,分配好对写的缓冲区;I/O内核模块通过调用文件系统标准的读写接口filp_write()接口传入缓冲区的指针,开始写入数据时,Linux文件系统判断文件是否以快速标识指针方式打开, 即是否是以O_DIRECT_K方式打开,如果是,文件系统用get_pages接口先锁定内核模块缓冲区,然后使用缓冲区的地址block写入接口,将缓冲区提交给磁盘驱动,通过磁盘驱动写入到磁盘,写入以快速标识指针的方式完成后,缓冲区被文件系统所释放;如果不是O_DIRECT_K方式打开,文件系统的写流程将传入的数据按照一般的数据读写方法,拷贝(copy)到文件系统的page cache中。
图4、图5是现有技术和本发明方法的数据写入流程对比,图中Y轴是系统模型的多个层,X轴是流程顺序序号。
图4所示的现有技术的流程:
1) 用户层(user space)应用程序,申请好内存,调用系统调用的写指令;
2) 操作系统切换到内核态(kernel space),把用户层申请的内存用cpu copy到文件系统管理的内存中;
3) 驱动将文件系统管理的内存通过dma copy写入到磁盘中,dma copy不占用cpu资源。
图5所示的是本发明技术的流程:
1) IO模块在内核中申请内存,调用文件系统的写入命令;
2) 文件系统把io模块的内存通过get_page锁定;
3) 驱动将内存通过dma copy写入到磁盘中。
比较之下,本发明方案下,避免了一次cpu copy,以及操作系统在内核态和用户态之间的切换,降低了cpu负载,并提高了系统的效率。
本发明的方法,增加了新的读写文件模式,Linux文件系统处理读写磁盘时,直接对块设备读写,避免了数据在缓冲区和文件系统的cache之间拷贝,可以节约CPU资源,提高数据传输速度。对于FPGA系统来说,资源尤为宝贵,本发明可以很好的解决资源问题。
原有的文件读写方式中,需要反复的缓存读写,并且是在用户层进行操作,本发明的方法是在内核层文件系统中进行操作,效率比较高,速度快。

Claims (1)

1.一种Linux文件系统数据读写加速方法,运行于嵌入式数据存储设备,所述数据存储设备是基于现场可编程门阵列(FPGA)的Linux数据存储装置,含有虚拟存储模块、内核I/O模块和文件系统构成的小型操作系统,连接SCSI/FC接口和网络接口,虚拟存储模块提供虚拟磁带机、虚拟磁盘服务,存储介质是磁盘;方法是:
1)在Linux 文件系统标准接口增加一个快速标识指针,作为进行快速模式的判断标识;需要做I/O的内核模块通过标准的filp_open()接口,传入快速标识指针和传统的文件标识O_DIRECT参数,打开文件,以页面(page)长度为单位,分配好缓冲区;
2)当内核模块通过filp_write()接口传入缓冲区的指针,开始写入数据时,Linux文件系统判断文件是否以快速标识指针方式打开, 如果是,文件系统先锁定内核模块缓冲区,然后使用缓冲区的地址,通过磁盘的驱动写入到磁盘;如果不是,文件系统的写流程将传入的数据拷贝(copy)到文件系统的page cache中;
3)写入以快速标识指针的方式完成后,缓冲区被文件系统所释放。
CN2012100189423A 2012-01-20 2012-01-20 一种Linux文件系统的数据读写加速方法 Pending CN102609486A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012100189423A CN102609486A (zh) 2012-01-20 2012-01-20 一种Linux文件系统的数据读写加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012100189423A CN102609486A (zh) 2012-01-20 2012-01-20 一种Linux文件系统的数据读写加速方法

Publications (1)

Publication Number Publication Date
CN102609486A true CN102609486A (zh) 2012-07-25

Family

ID=46526858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012100189423A Pending CN102609486A (zh) 2012-01-20 2012-01-20 一种Linux文件系统的数据读写加速方法

Country Status (1)

Country Link
CN (1) CN102609486A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617039A (zh) * 2013-11-28 2014-03-05 北京华胜天成科技股份有限公司 一种访问用户空间文件系统的方法及装置
CN107577492A (zh) * 2017-08-10 2018-01-12 上海交通大学 加速文件系统读写的nvm块设备驱动方法及系统
CN108089815A (zh) * 2016-11-23 2018-05-29 阿里巴巴集团控股有限公司 一种数据筛选方法和装置
CN110989935A (zh) * 2019-12-06 2020-04-10 中盈优创资讯科技有限公司 Flume系统的数据处理、传输方法及装置
CN111767257A (zh) * 2020-06-28 2020-10-13 星辰天合(北京)数据科技有限公司 基于fuse文件系统和nfs协议的数据传输方法及装置
CN112486410A (zh) * 2020-11-23 2021-03-12 华南师范大学 一种持久性内存文件读写方法、系统、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153614A1 (en) * 2003-02-05 2004-08-05 Haim Bitner Tape storage emulation for open systems environments
CN101419572A (zh) * 2008-11-20 2009-04-29 四川长虹电器股份有限公司 嵌入式设备中大容量Nandflash存储空间的共享方法
CN102147806A (zh) * 2011-03-04 2011-08-10 哈尔滨工程大学 一种在Linux下实现数据快速存储的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040153614A1 (en) * 2003-02-05 2004-08-05 Haim Bitner Tape storage emulation for open systems environments
CN101419572A (zh) * 2008-11-20 2009-04-29 四川长虹电器股份有限公司 嵌入式设备中大容量Nandflash存储空间的共享方法
CN102147806A (zh) * 2011-03-04 2011-08-10 哈尔滨工程大学 一种在Linux下实现数据快速存储的方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617039A (zh) * 2013-11-28 2014-03-05 北京华胜天成科技股份有限公司 一种访问用户空间文件系统的方法及装置
CN103617039B (zh) * 2013-11-28 2017-02-01 北京华胜天成科技股份有限公司 一种访问用户空间文件系统的方法及装置
CN108089815A (zh) * 2016-11-23 2018-05-29 阿里巴巴集团控股有限公司 一种数据筛选方法和装置
CN107577492A (zh) * 2017-08-10 2018-01-12 上海交通大学 加速文件系统读写的nvm块设备驱动方法及系统
CN110989935A (zh) * 2019-12-06 2020-04-10 中盈优创资讯科技有限公司 Flume系统的数据处理、传输方法及装置
CN111767257A (zh) * 2020-06-28 2020-10-13 星辰天合(北京)数据科技有限公司 基于fuse文件系统和nfs协议的数据传输方法及装置
CN111767257B (zh) * 2020-06-28 2024-05-31 北京星辰天合科技股份有限公司 基于fuse文件系统和nfs协议的数据传输方法及装置
CN112486410A (zh) * 2020-11-23 2021-03-12 华南师范大学 一种持久性内存文件读写方法、系统、装置及存储介质
CN112486410B (zh) * 2020-11-23 2024-03-26 华南师范大学 一种持久性内存文件读写方法、系统、装置及存储介质

Similar Documents

Publication Publication Date Title
US10754550B2 (en) Optimized data placement for individual file accesses on deduplication-enabled sequential storage systems
Wang et al. SSD in-storage computing for list intersection
CN103999058B (zh) 带驱动器系统服务器
US7991758B2 (en) System and method for performing a search operation within a sequential access data storage subsystem
US9311252B2 (en) Hierarchical storage for LSM-based NoSQL stores
US9996557B2 (en) Database storage system based on optical disk and method using the system
US9015413B2 (en) Management of data using inheritable attributes
US9870176B2 (en) Storage appliance and method of segment deduplication
CN102609486A (zh) 一种Linux文件系统的数据读写加速方法
US9135262B2 (en) Systems and methods for parallel batch processing of write transactions
US20080016390A1 (en) Apparatus, system, and method for concurrent storage pool migration and backup
US20140215127A1 (en) Apparatus, system, and method for adaptive intent logging
CN104267912A (zh) 一种nas加速方法及系统
CN109598156A (zh) 一种写时重定向引擎快照流方法
CN103516549B (zh) 一种基于共享对象存储的文件系统元数据日志机制
CN106469123A (zh) 一种基于nvdimm的写缓存分配、释放方法及其装置
Adams et al. Respecting the block interface–computational storage using virtual objects
WO2023185111A1 (zh) 一种数据文件的快速存取方法及装置
Son et al. Optimizing I/O operations in file systems for fast storage devices
WO2015153748A1 (en) High-speed data storage
CN102929935A (zh) 一种基于事务的大容量数据读写方法
CN104793892B (zh) 一种加速磁盘随机输入输出(io)读写的方法
US9646014B1 (en) Systems and methods for selective defragmentation
US8732343B1 (en) Systems and methods for creating dataless storage systems for testing software systems
Jensen High Throughput Tertiary Storage in HPC Environments

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant after: SOUL Storage Technology (Wuxi) Co., Ltd.

Address before: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant before: Wuxi SOUL Storage Technology Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: WUXI SOUL STORAGE TECHNOLOGY CO., LTD. TO: SOUL STORAGE TECHNOLOGY UXI O., LTD.

C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant after: WUXI SOUL DATA COMPUTING CO., LTD.

Address before: 214000 Jiangsu Province, Wuxi City District Zhenze Road No. 18 Jiangsu Software Outsourcing Industrial Park Building 6 layer A Taurus

Applicant before: SOUL Storage Technology (Wuxi) Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SOUL STORAGE TECHNOLOGY UXI O., LTD. TO: SOUL DATA COMPUTING (WUXI) CO., LTD.

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120725