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

文档序号:8487789阅读:来源:国知局
应用系统发送的I/O请求。
[0156]步骤1102,判断I/O请求类型是否是大数据块I/O连续写请求,如果是,则执行步骤1103 ;否则执行步骤1106。
[0157]I/O写请求的参数形式为WRITE (文件名,文件大小,BUFFER);I/O读请求的形式为READ (文件名,文件大小,BUFFER);根据BUFFER的大小可以确定该I/O请求是否为对大数据块的操作,例如,当参数为WRITE,且BUFFER参数超过预设阈值(根据实际应用场景确定)时,则该I/O请求类型为大数据块I/O写请求。
[0158]本步骤中,根据当前所处理的I/O请求与I/O请求队列中相邻的I/O请求的类型、以及I/o请求读写的位置判断是否为连续写;
[0159]例如,若步骤1101接收的I/O请求为大数据块I/O写请求,且I/O请求队列中该大数据块I/o读请求相邻的前一个(或多个)I/O请求、以及相邻的后一个(或多个)I/O请求均为针对大数据块的I/o写请求,且写磁盘的位置连续,则判定步骤1101接收的I/O请求为大数据块I/o连续写请求。
[0160]步骤1103,查询是否存在文件索引节点,如果存在则执行步骤1104,否则,调用本地文件系统Open ()函数创建文件索引节点,并执行步骤1104。
[0161]当不存在文件索引节点时,表示I/O写请求所请求写入的文件之前并不存在,则需要创建对应的文件索引节点。
[0162]步骤1104,本地文件系统调用块设备接口进行写操作。
[0163]当确定I/O请求为针对大数据块的操作时,调用块设备接口,由块设备进行相应的操作,如前述步骤904至909所述,这里不再赘述。
[0164]步骤1105,结束当前处理。
[0165]步骤1106,判断I/O请求类型是否为大数据块I/O连续读请求,如果是则执行步骤1107 ;否则,执行步骤1109。
[0166]I/O写请求的参数形式为WRITE (文件名,文件大小,BUFFER);I/O读请求的形式为READ (文件名,文件大小,BUFFER);根据BUFFER的大小可以确定该I/O请求是否为对大数据块的操作,例如,当参数为READ,且BUFFER参数超过预设阈值(根据实际应用场景确定)时,则该I/O请求类型为大数据块I/O读请求。
[0167]本步骤中,根据当前所处理的I/O请求与I/O请求队列中相邻的I/O请求的类型、以及I/o请求读写的位置判断是否为连续读;
[0168]例如,若步骤1101接收的I/O请求为大数据块I/O读请求,且I/O请求队列中该大数据块I/o读请求相邻的前一个(或多个)I/O请求、以及相邻的后一个(或多个)I/O请求均为针对大数据块的I/o读请求,且读磁盘的位置连续,则判定步骤1101接收的I/O请求为大数据块I/O连续读请求。
[0169]步骤1107,调用块设备的Read ()函数进行读操作。
[0170]对于大数据块I/O连续读请求、以及大数据块I/O连续写请求,使用块设备进行响应,可以明显提闻响应速度。
[0171]步骤1108,结束当前处理。
[0172]步骤1109,判断I/O请求类型是否为大数据块I/O随机读请求或大数据块I/O随机写请求,如果是大数据块I/o随机写请求则执行步骤1110和步骤1111,如果是大数据块I/o随机读请求则执行步骤1111 ;否则执行步骤1113。
[0173]I/O写请求的参数形式为WRITE (文件名,文件大小,BUFFER);I/O读请求的形式为READ (文件名,文件大小,BUFFER);根据BUFFER的大小可以确定该I/O请求是否为对大数据块的操作,例如,当参数为WRITE,且BUFFER参数超过预设阈值(根据实际应用场景确定)时,则该I/O请求为大数据块I/O写请求。
[0174]本步骤中,根据当前所处理的I/O请求与I/O请求队列中相邻的I/O请求的类型、以及I/o请求读写的位置判断是否为随机写或随机读;
[0175]例如,若步骤1101接收的I/O请求为大数据块I/O写请求,且I/O请求队列中该大数据块I/o读请求相邻的前一个(或多个)1/0请求、以及相邻的后一个(或多个)1/0请求均为针对大数据块的I/o写请求,且写磁盘的位置不连续,则判定步骤1101接收的I/O请求为大数据块I/O随机写请求。
[0176]步骤1110,查询是否存在文件索引节点,如果存在则执行步骤1111 ;否则,调用HDFS客户端的Open ()函数生成文件索引节点,并执行步骤1111。
[0177]步骤1111,调用HDFS系统进行并行读或并行写操作。
[0178]当步骤1109中判定步骤1101接收的I/O请求为大数据块I/O随机读请求时,进行相应的并行读操作;当步骤1109判定步骤1101接收的I/O请求为大数据块I/O随机写请求时,进行相应的并行写操作。
[0179]步骤1112,结束当前处理。
[0180]步骤1113,判断I/O类型是否是小数据块I/O连续读请求或小数据块I/O连续写请求,如果是小数据块I/o连续写请求则执行步骤1114和步骤1115 ;如果是小数据块I/O连续读请求则执行步骤1115 ;如果既不是小数据块I/O连续读请求,也不是小数据块I/O连续写请求,则执行步骤1117。
[0181]I/O写请求的参数形式为WRITE (文件名,文件大小,BUFFER);I/O读请求的形式为READ (文件名,文件大小,BUFFER);根据BUFFER的大小可以确定该I/O请求是否为对大数据块的操作,例如,当参数为WRITE,且BUFFER参数超过预设阈值(根据实际应用场景确定)时,则该I/O请求为小数据块I/O写请求。
[0182]本步骤中,根据当前所处理的I/O请求与I/O请求队列中相邻的I/O请求的类型、以及I/O请求读写的位置判断是否为连续写或连续读;
[0183]例如,若步骤1101接收的I/O请求为小数据块I/O写请求,且I/O请求队列中该小数据块I/o读请求相邻的前一个(或多个)1/0请求、以及相邻的后一个(或多个)1/0请求均为针对小数据块的I/o写请求,且写磁盘的位置连续,则判定步骤1101接收的I/O请求为小数据块I/o连续写请求;相应地,如果I/O请求队列中该小数据块I/O读请求相邻的前一个(或多个)I/o请求、以及相邻的后一个(或多个)I/O请求均为针对小数据块的I/O写请求,且写磁盘的位置不连续,则判定步骤1101接收的I/O请求为小数据块I/O随机写请求。
[0184]步骤1114:查询是否存在文件索引节点,如果存在则执行步骤1115 ;否则,调用本地文件系统Open ()函数生成文件索引节点,并执行步骤1115。
[0185]步骤1115,调用块存储设备读操作或写操作。
[0186]步骤1116,结束当前处理。
[0187]步骤1117,调用HDFS分布式系统进行读写操作。
[0188]本步骤中,对于教育云中以上所述类型I/O请求之外的I/O请求,例如小数据块I/O随机写请求、以及小数据块I/O随机读请求,均调用HDFS分布式系统进行读写操作。
[0189]步骤1118,结束处理。
[0190]综上,与传统的单一云存储技术相比,本实施例基于数据I/O类型进行分布式存取,充分利用各种存储技术的优点,也就是说I个文件读写可以分别通过读写块设备和分布式文件系统实现,或者说I个用户的数据可能分别存在于块设备和分布式文件系统,调用哪种文件系统响应I/o请求取决于I/O请求的类型。因此,本所述记载的I/O请求处理方法,具有明显的I/o性能优势。
[0191]为了说明本发明实施例的技术方案所带来的有益效果,发明人进行了如下测试:
[0192]部署测试环境如下:客户端20台个人电脑(PC),每台机器配置2核CPU,200G磁盘以及2G内存;教育云应用系统采用10台PC作为服务器,所有服务器组成集群;FC-SAN存储系统采用3台FC-SAN存储设备,FC-SAN存储上的虚拟磁盘按照磁盘阵列(RAID,RedundantArrays of Inexpensive Disks)5配置;HDFS分布式文件系统按照20台PC配置,其中2台PC作为Master, 18台PC作为Slave,数据副本为4 ;
[0193]其中,I/O性能测试工具采用1meter工具。
[0194]首先1meter模拟1000个I/O随机读写请求,分别在单独的FC-SAN存储设备、HDFS分布式文件以及基于Cloud-VFS的混合存储环境下进行测试,数据显示基于Cloud-VFS的I/O性能与HDFS分布式文件系统接近,FC-SAN存储性能最差。
[0195]其次,1meter模拟1000个大数据I/O读写请求,数据块大小为100兆字节,测试数据显示基于Cloud-VFS的混合存储环境性能最优,为HDFS性能的8倍;在数据块为400兆字节的情况下,Cloud-VFS的I/O性能是HDFS的17.3倍。
[0196]最后,模拟同时存在多种I/O请求的情况,1000个I/O随机读写请求、1000个大数据I/O写请求,数据块大小为100兆字节、1000个小数据I/O连续写请求,在此情况下,Cloud-VFS的I/O性能是FC-SAN的3倍,是HDFS的11倍。<
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1