一种存储数据的方法技术

技术编号:9618094 阅读:81 留言:0更新日期:2014-01-30 05:48
一种存储数据的方法,所述方法包括:将构造的小型计算机系统接口SCSI请求加入请求队列;根据所述SCSI请求构造SCSI命令,然后提交底层驱动;由SCSI命令从SCSI存储设备中存储数据后,SCSI层完成输入输出IO。应用本发明专利技术实施例后,能够避免IO的延迟,从而提高整体工作性能。

Method for storing data

A method of storing data, the method comprises the following steps: small computer system interface structure SCSI request to join the request queue; according to the SCSI request to construct the SCSI command, and then submitted to the driver; by the SCSI command from the data stored in SCSI storage, SCSI layer to complete the input and output IO. After applying the embodiment of the invention, the delay of the IO can be avoided so as to improve the overall working performance.

【技术实现步骤摘要】

本申请涉及信息存储
,更具体地,涉及。
技术介绍
目前在Linux系统中,通过在内核构造BIO请求,能够异步提交用户态数据。BIO请求是通用块层向底层提交IO请求的一种通用描述,BIO请求的引入,能够统一不同块设备的IO接口。因为需要兼顾各种块设备的兼容性要求,通过BIO层的IO请求有着非常复杂的处理流程。BIO层会使用Ν00Ρ,CFQ等多种调度算法对IO进行合并和排序,并将IO提交给专门的处理线程进行下发。这样,就存在线程切换和调度算法的开销,导致cpu占用率大大上升,并加大了 IO延迟。参见附图1是基于Iinux系统的AIO的IO流程示意图。101、用户提交异步输入/输出ΑΙ0。102、在AIO内核接口构造块的输入和输出(BIO)请求。bio是Iinux内核中通用块层的一个核心数据结构,描述了块设备的I/o操作,它联系了内存缓冲区与块设备。103、将BIO请求加入请求队列。104、调度请求队列中BIO请求。105、根据BIO请求构造SCSI命令提交至底层驱动。106、SCSI层存储设备通过SCSI命令存储数据,SCSI层完成10。107、判断IO是否正确返回。108、若IO正确返回,则完成10。109、若块层处理错误,执行110。110、IO需要重试,则执行103 ;10不需要重试,则执行108。可见,在102-105中先将BIO请求排队,然后由BIO请求构造SCIS请求。在BIO请求排队的过程耗费时间,相应地增大了 IO延迟。此外,107-110中需要进行通用块层的错误处理。而若在通用块层的IO返回时,已经过了错误处理,并且隐藏具体的错误码从而导致IO延迟返回。比如说如果已经组建raid程序,那么一个IO错误完全可以通过校验算法来纠正,而通用块层的错误处理通常会导致IO延迟返回(最大可达180秒)。某些操作对于延迟很敏感,比如对文件系统元数据的操作,以及说流媒体应用或者。若再经过通用块层提交10,则会带来性能的损失。
技术实现思路
本专利技术实施例提出一种存储数据方法,能够避免IO的延迟,从而提高整体工作性倉泛。本专利技术实施例的技术方案如下:,所述方法包括:将构造的小型计算机系统接口 SCSI请求加入请求队列;根据所述SCSI请求构造SCSI命令,然后提交底层驱动;由SCSI命令从SCSI存储设备中存储数据后,SCSI层完成输入输出10。所述在SCSI层完成IO后进一步包括:进行错误处理,所述错误处理包括SCSI命令中对应的错误码。从上述技术方案中可以看出,在本专利技术实施例中将构造的SCSI请求加入请求队列;由于根据所述SCSI请求构造SCSI命令,然后提交底层驱动。由SCSI命令从SCSI存储设备中存储数据后,SCSI层完成10。因此无需进行排队及调度就可以将SCSI命令直接提交至底层驱动,且减少不必要的错误处理,能够避免IO的延迟,从而提高整体工作性能。【附图说明】图1为基于Iinux系统的AIO的IO流程不意图;图2为存储数据的方法流程示意图。【具体实施方式】为使本专利技术的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本专利技术再作进一步详细的说明。在本专利技术实施例中,以供SCSI作为用户态的请求,直接向下操作SCSI底层设备。绕开块I/o子系统层,避免使用bio结构。因此无需进行排队及调度就可以将SCSI命令直接提交至底层驱动,且减少不必要的错误处理,能够避免IO的延迟,从而提高整体工作性倉泛。参见附图2是存储数据的方法流程示意图,具体包括以下步骤:201、用户提交 10。202、内核模块代理构造SCSI请求。203、将SCSI请求加入请求队列。204、根据SCSI请求构造SCSI命令提交至底层驱动。205、SCSI层存储设备通过SCSI命令存储数据,SCSI层完成10。2O6、完成 IO 过程。此外,在完成IO过程后,可以选择进行错误处理。此处,需要注意的是:上述错误处理不同于现有技术当中的错误处理。由于通用块层的错误码比较简单,不能描述具体的错误类型。而SCSI命令的错误码则多得多,利用在完成IO过程后的错误处理,上层应用可以针对具体的错误,来制定相应的策略。比如说未处理的读错误,可以通过重写来修复。但是写的内容,就必须让上层应用通过raid算法,或者文件系统的校验来计算出来,底层无法处理。以上所述,仅为本专利技术的较佳实施例而已,并非用于限定本专利技术的保护范围。凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。本文档来自技高网
...

【技术保护点】
一种存储数据的方法,其特征在于,所述方法包括:将构造的小型计算机系统接口SCSI请求加入请求队列;根据所述SCSI请求构造SCSI命令,然后提交底层驱动;由SCSI命令从SCSI存储设备中存储数据后,SCSI层完成输入输出IO。

【技术特征摘要】
1.一种存储数据的方法,其特征在于,所述方法包括: 将构造的小型计算机系统接口 SCSI请求加入请求队列; 根据所述SCSI请求构造SCSI命令,然后提交底层驱动; 由SCSI命令从SCSI...

【专利技术属性】
技术研发人员:陈国民
申请(专利权)人:创新科存储技术有限公司创新科存储技术深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1