云虚拟文件系统及其输入/输出请求处理方法_3

文档序号:8487789阅读:来源:国知局
云应用系统发送的I/O请求;
[0102]确定单元52,用于根据所述I/O请求携带的参数、以及所述I/O请求所请求读磁盘或写磁盘的位置,确定所述I/o请求的类型;
[0103]调用单元53,用于根据所述确定的I/O请求的类型,调用所述分布式文件系统响应所述I/o请求、或调用所述基于块设备的本地文件系统响应所述I/O请求。
[0104]其中,所述I/O请求的类型包括:大数据块I/O连续读请求、大数据块I/O连续写请求、大数据块I/o随机读请求、大数据块I/O随机写请求、小数据块I/O连续读请求、小数据块I/o连续写请求;
[0105]相应地,所述调用单元53,还用于当所述确定的I/O请求的类型为以下类型任意之一时:
[0106]大数据块I/O连续读请求;大数据块I/O连续写请求;小数据块I/O连续读请求;小数据块I/O连续写请求;
[0107]调用所述基于块设备的本地文件系统响应所述I/O请求;
[0108]当所述确定的I/O请求的类型为以下类型任意之一时:
[0109]数据块I/O随机读请求;大数据块I/O随机写请求;
[0110]调用所述分布式文件系统响应所述I/O请求。
[0111]其中,所述接收单元51接收的I/O请求携带读READ参数或写WRITE参数、以及缓存BUFFER参数;
[0112]相应地,所述确定单元52,还用于当所述I/O请求携带READ参数时,确定所述I/O请求为I/O读请求,当所述I/O请求携带WRITE参数时,确定所述I/O请求为I/O写请求;
[0113]当所述BUFFER参数超过预设阈值时,确定所述I/O请求为大数据块I/O请求;当所述BUFFER参数未超过预设阈值时,确定所述I/O请求为小数据块I/O请求;
[0114]当所述I/O请求与I/O请求队列中相邻的I/O请求均携带READ参数时,若所述I/O请求与I/O请求队列中相邻的I/O请求读磁盘的位置连续,则确定所述I/O请求为I/O连续读请求,若所述I/O请求与I/O请求队列中相邻的I/O请求读磁盘的位置不连续,则确定所述I/o请求为I/O随机读请求;
[0115]当所述I/O请求与I/O请求队列中相邻的I/O请求均携带WRITE参数时,若所述I/o请求与I/O请求队列中相邻的I/O请求写磁盘的位置连续,则确定所述I/O请求为I/O连续写请求,若所述I/O请求与I/O请求队列中相邻的I/O请求写磁盘的位置不连续,则确定所述I/o请求为I/O随机写请求。
[0116]其中,所述确定单元52,还用于当所述I/O请求携带WRITE参数时,确定存在与所述I/O请求对应的文件索引节点,触发所述调用单元53 ;当不存在与所述I/O请求对应的文件索引节点时,创建与所述I/O请求对应的文件索引节点,触发所述调用单元53。
[0117]其中,所述调用单元53,还用于当所述确定单元52确定所述I/O请求的类型未与所述类型匹配时,调用所述分布式文件系统响应所述I/o请求。
[0118]实际应用中,所述云虚拟文件系统可以设置于一台或多台服务器上,所述接收单元51、所述确定单元52、所述调用单元53均可由所述服务器中的中央处理器(CPU,CentralProcessing Unit)、数字信号处理器(DSP,Digital Signal Processor)或现场可编程门阵列(FPGA, Field Programmable Gate Array)实现。
[0119]下面以上述云应用系统为教育云应用系统为例,对本发明实施例记载的云虚拟文件系统及其I/o请求处理方法作进一步详细说明,
[0120]如图6所示,在教育云应用系统与块设备文件系统API之间、以及块设备文件系统与HDFS客户端(Client) API之间设置云虚拟文件系统(Cloud-VFS,Cloud-Virtual FileSystem),该云虚拟文件系统通过提供兼容文件系统语义接口,对教育云系统提供符合可移植操作系统接口(P0SIX, Portable Operating System Interface)标准的文件接口,以实现对块设备和分布式文件系统的兼容;块设备通过FC向本地文件系统提供块设备接口以供调用,HDFS Client文件系统通过网际协议(IP, Internet Protocol)与HDFS Master、以及HDFS Slave连接;从而,教育云应用系统可以安全按照POSIX文件系统语义进行数据的处理,包括1/0读请求、1/0写请求以及1/0控制(1CTL)。
[0121]图7为本发明实施例中Cloud-VFS通过调用HDFS处理教育云应用系统1/0请求的实现架构示意图,以I/o请求为I/O读请求为例,如图8所示,云虚拟文件系统通过调用HDFS响应I/O读请求包括以下步骤:
[0122]步骤801,Cloud-VFS接收教育云应用系统的I/O读请求。
[0123]教育云应用系统通过调用Cloud-VFS的读函数,向云虚拟文件系统发起I/O读请求。
[0124]步骤802,Cloud-VFS确定需要调用HDFS响应所述I/O读请求时,调用HDFS ClientAPI。
[0125]步骤803, HDFS Client向HDFS Master发送I/O读请求中的参数信息。
[0126]所述参数信息包括文件名、索引。
[0127]步骤804,HDFS Master向HDFS客户端发送位置和chunk句柄信息。
[0128]所述位置标识I/O读请求所请求读取文件所位于的chunkserver,所述chunk句柄信息标识信息用于位置标识I/O读请求所请求读取的文件。
[0129]步骤805, HDFS Client向相应的chunkserver发送句柄和大小(即文件的字节范围)信息。
[0130]步骤806, HDFS Client 接收 Chunkserver 返回的 chunk 数据。
[0131]步骤807,Cloud-VFS接收HDFS客户端读取的反馈信息。
[0132]HDFS Client通过HDFS Client API向Cloud-VFS发送读结果的反馈信息,例如反馈读取的数据,或读取失败的信息。
[0133]步骤808,Cloud-VFS将接收的反馈信息发送至教育云应用系统。
[0134]相应地,当Cloud-VFS使用图6中的基于块设备的本地文件系统响应教育云应用系统I/o请求时,如图9所示,响应教育云应用系统I/O请求的处理包括以下步骤:
[0135]步骤901,Cloud-VFS接收教育云应用系统的I/O请求。
[0136]所述I/O请求为I/O读请求或I/O写请求。
[0137]教育云应用系统通过调用Cloud-VFS的读函数或写函数的方式,发起相应的I/O读请求或I/O写请求。
[0138]步骤902,Cloud-VFS确定需要调用块设备响应所述I/O请求时,调用本地文件系统。
[0139]本地文件系统的格式可以为第三扩展文件系统(Ext3, Third extended filesystem)。
[0140]步骤903,本地文件系统进行读写I/O处理(如缓冲区处理等)。
[0141]根据所述I/O请求的类型(读或写),进行相应的读I/O处理或写I/O处理。
[0142]步骤904,本地文件系统调用块设备I/O接口。
[0143]步骤905,块设备I/O接口通过FC发送SCSI命令给块设备。
[0144]步骤906,块设备按照SCSI命令进行相应的数据读写操作。
[0145]步骤907,块设备返回反馈信息给本地文件系统。
[0146]所述信息包括读取的数据,或写入数据成功或失败的信息。
[0147]步骤908,本地文件系统返回反馈信息给Cloud-VFS。
[0148]步骤909,Cloud-VFS返回反馈信息给教育云应用系统。
[0149]上述Cloud-VFS是一个接口类型的文件系统,其向下提供块设备接口和分布式文件系统接口 ;向上对教育云应用系统提供标准的API接口。
[0150]因此,云虚拟文件系统(Cloud-VFS)主要实现如下基础功能:
[0151]I)接口应用程序的标准化文件系统API ;
[0152]2)根据I/O负载(类型)进行对应处理的I/O调度处理;
[0153]3)设备I/O开关和本地文件系统AP1、HDFS Client API ;其功能架构如图10所示,通过Cloud_Read ()、Write ()函数实现对应实现数据的读写,通过Open ()、Close ()、1CTL函数对应实现不同文件系统的调用的开启、关闭和I/O传输控制;通过Cloud-VFS的I/O调度算法(),调用HDFS Client API处理I/O请求,或调用本地文件系统AP1、以使本地文件系统调用块设备接口处理I/O请求。
[0154]在一个示例中,Cloud-VFS根据教育云的I/O负载进行分类处理,将I/O请求分为不同的类型进行处理,即调用HDFS处理I/O请求,或调用基于块设备的本地文件系统处理I/O请求,包括以下步骤:
[0155]步骤1101,Cloud-VFS接收教育云
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1