具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
实施例一
本发明实施例提供了一种远程访问数据的装置,请参阅图1,图1为本发明实施例一揭示的一种远程访问数据的装置的结构图,该装置包括USB磁盘虚拟单元101、指令转换单元102和网络通讯单元103。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
USB磁盘虚拟单元101,用于按照通用串行总线USB协议将设备节点映射成USB海量存储设备端的磁盘,当接收终端主机发送的封装有读写操作命令的通用串行总线USB海量存储类型的数据时,将所述USB海量存储类型的数据解封装,得到所述读写操作命令;
指令转换单元102,用于按照网络块设备NDB协议将作为NDB服务器的数据源装置中的块设备映射成设备节点,当接收到所述读写操作命令时,按照网络块设备NDB协议将所述读写操作命令封装成NDB数据帧,并按照TCP/IP协议,将所述NDB数据帧封装成TCP/IP包;
第一网络通讯单元103,用于将所述TCP/IP包发送给至少一个数据源装置。
其中,NBD系统主要可以分为NBD客户端和NBD服务器,通过NBD协议可以将位于NBD服务器的块设备映射到NBD客户端,形成虚拟的设备节点。当NBD客户端接收到文件系统发来的读写操作命令后,将读写操作命令发送给NBD服务器,在NBD服务器返回数据后,再响应文件系统的读写操作命令。NBD服务器会一直监听网络端口,将NBD客户端发送的读写操作命令转化为对本地的块设备的读写操作,然后将数据返回给NDB客户端。对于NBD客户端侧来看,可以将NBD服务器中的块设备作为本地的块设备来使用,实现数据透明存取和资源共享。
上述数据源装置中的块设备可以是磁盘、磁盘分区、磁盘镜像文件或者连续内存区。
在本实施例中,由远程访问数据的装置中的指令转换单元作为NBD系统中的NBD客户端,对作为NBD服务器的远程的数据源装置中的块设备进行读写操作。另外,由远程访问数据的装置中的同时也作为终端主机的一个USB从设备。主要由远程访问数据的装置中的USB磁盘虚拟单元构成USB从设备侧的USB Gadget Driver,当连接到终端主机后,远程访问数据的装置充当一个USB磁盘。
上述的USB磁盘虚拟单元101包括:第二映射单元1011、接收单元1012和第一解封装单元1013,
第二映射单元1011,用于按照通用串行总线USB协议将设备节点映射成USB海量存储设备端的磁盘;
接收单元1012,用于接收终端主机发送的封装有读写操作命令的通用串行总线USB海量存储类型的数据;
第一解封装单元1013,用于将所述USB海量存储类型的数据进行解封装,得到所述读写操作命令。
上述的指令转换单元102包括:第一映射单元1021、NDB数据帧封装单元1022和TCP/IP包封装单元1023,
第一映射单元1021,用于按照网络块设备NDB协议将作为NDB服务器的数据源装置中的块设备映射成设备节点;
NDB数据帧封装单元1022,用于当接收到所述读写操作命令时,按照网络块设备NDB协议,将所述读写操作命令封装成NDB数据帧;
TCP/IP包封装单元1023,用于按照TCP/IP协议,将所述NDB数据帧封装成TCP/IP包。
上述的第一网路通信单元103包括:网络连接单元1031和NDB连接单元1032,
网络连接单元1031,用于按照TCP/IP协议建立与所述数据源装置的网络连接;
NDB连接单元1032,用于按照NBD协议建立与所述数据源装置的NBD连接,并登录到所述数据源装置。
请参阅图2,进一步的,USB磁盘虚拟单元101还包括:USB连接解除单元1014,用于读写操作结束后,当接收所述终端主机发出的退出磁盘的信息时,按照所述USB协议解除与所述终端主机间的USB连接;指令转换单元102还包括:NBD连接解除单元1024,用于按照所述NBD协议解除与所述数据源装置间的NBD连接,再由所述数据源装置解除对块设备的绑定。
更进一步的,网络通讯单元103还包括:网络连接解除单元1033,用于解除与所述数据源装置间的网络连接。
实施例二
本发明实施例还提供了一种远程访问数据的系统,请参阅图3,图3为本发明实施例二揭示的一种远程访问数据的系统的结构图。该系统包括至少一个数据源装置303和通过USB接口与终端主机301连接的转换装置302,其中,
所述终端主机301,用于按照USB海量存储标准将读写操作命令封装成USB海量存储类型的数据,并将所述USB海量存储类型的数据发送给所述转换装置;
所述转换装置302,用于按照网络块设备NDB协议将作为NDB服务器的数据源装置中的块设备映射成设备节点,再按照通用串行总线USB协议将所述设备节点映射成USB海量存储设备端的磁盘,当接收到所述USB海量存储类型的数据时,将所述USB海量存储类型的数据解封装,得到所述读写操作命令,按照NDB协议将所述读写操作命令封装成NDB数据帧,并按照TCP/IP协议,将所述NDB数据帧封装成TCP/IP包,将所述TCP/IP包发送给至少一个数据源装置;
所述数据源装置303,用于将所述TCP/IP包解封装得到NDB数据帧,并将所述NDB数据帧解封装得到读写操作命令,根据所述读写操作命令完成对块设备的读写操作。
上述的转换装置302包括:USB磁盘虚拟单元3021、指令转换单元3022和第一网络通讯单元3023,
USB磁盘虚拟单元3021,用于按照通用串行总线USB协议将设备节点映射成USB海量存储设备端的磁盘,当接收终端主机发送的封装有读写操作命令的通用串行总线USB海量存储类型的数据时,将所述USB海量存储类型的数据解封装,得到所述读写操作命令;
指令转换单元3022,用于按照网络块设备NDB协议将作为NDB服务器的数据源装置中的块设备映射成设备节点,当接收到所述读写操作命令时,按照网络块设备NDB协议将所述读写操作命令封装成NDB数据帧,并按照TCP/IP协议,将所述NDB数据帧封装成TCP/IP包;
第一网络通讯单元3023,用于将所述TCP/IP包发送给至少一个数据源装置。
上述的数据源装置303包括:第二网络通讯单元3031、磁盘存取单元3032和块设备访问单元3033,
第二网络通讯单元3031,用于接收所述转换装置发送的TCP/IP包;
磁盘存取单元3032,用于将所述TCP/IP包解封装,得到NDB数据帧,将所述NDB数据帧解封装,得到读写操作命令;
块设备访问单元3033,用于根据所述读写操作命令完成对块设备的读写操作。
在本实施例的系统中,转换装置302具有双重角色,一个是作为USB从设备,一个是作为NDB客户端。与此同时,终端主机301作为USB主设备,数据源装置303作为NDB服务器。例如,NDB可以以动态可加载的形式加入Linux内核的标注版本。同时,在Linux2.6内核中实现了USB Gadget Driver,控制USB Device与USB主设备的通信,并使设备表现出各种特定的性能。因此,当转换装置302中的Linux内核中同时移植了USB Gadget Driver和NDB时,转换装置302就可以即作为USB从设备又作为NDB客户端而存在。
由上述实施例可以看出,本发明根据NBD协议,构建了NBD客户端,将作为NBD服务器的数据源装置中的块设备数据映射为设备节点,同时,根据USB协议,将构建的USB客户端作为一个USB从设备上,终端主机作为USB主设备,并进一步根据USB协议将设备节点映射为USB海量存储设备端的磁盘,最终使得终端主机如同访问本地的磁盘一样访问数据源装置中的块设备数据,无须经过磁盘复制转移的过程,大大节省了操作者的时间,提高工作效率。同时,本发明是基于USB/NBD来实现的,不需要对终端主机进行任何特殊改造,对于终端主机来说,访问远程的数据源装置的过程,与访问本地USB海量存储设备的过程完全没有区别,在远程数据源装置一端,只需要安装NBD服务器软件即可,降低了实现数据访问的成本。
此外,在NBD层面的操作,只需要将NBD数据帧封装成TCP/IP包并传输,没有虚拟磁盘文件分配表、索引表等逻辑转换过程因此,可以达到最高的效率和最快的存取速度。
同时,与文件系统的格式无关,无论远程数据源之中的数据是NTFS/FAT16/FAT32/ext2/ext3或任何格式,只要终端主机可以识别,转换装置都可以支持。
同时,根据需要可以同时连接到多个不同的远程数据源,形成多个终端主机可以访问的虚拟磁盘。
实施例三
与上述一种远程访问数据的装置相对应,本发明实施例还提供了一种远程访问数据的方法。请参阅图4,其为实施例一揭示的一种远程访问数据的方法的流程图,该方法包括以下步骤:
步骤401:预先按照网络块设备NDB协议将作为NDB服务器的数据源装置中的块设备映射成设备节点,再按照通用串行总线USB协议将所述设备节点映射成USB海量存储设备端的磁盘;
步骤402:当接收终端主机发送的封装有读写操作命令的通用串行总线USB海量存储类型的数据时,将所述USB海量存储类型的数据进行解封装,得到所述读写操作命令;
步骤403:按照NDB协议将所述读写操作命令封装成NDB数据帧,并按照TCP/IP协议,将所述NDB数据帧封装成TCP/IP包;
步骤404:将所述TCP/IP包发送给至少一个数据源装置,由所述数据源装置将所述TCP/IP包解封装得到NDB数据帧,并将所述NDB数据帧解封装得到读写操作命令,根据所述读写操作命令完成对块设备的读写操作。
其中,所述将TCP/IP包发送给至少一个数据源装置包括:按照TCP/IP协议建立与所述数据源装置的网络连接;按照NBD协议建立与所述数据源装置的NBD连接,并登录到所述数据源装置。
所述网络连接包括:有线网络连接,如Ehernet;无线网络连接,如WiFi或UWB等;或者无线广域网络连接,如GPRS、HSDPA或者WiMAX等。
进一步的,所述方法还包括:读写操作结束后,当接收所述终端主机发出的退出磁盘的信息时,按照所述USB协议解除与所述终端主机间的USB连接;按照所述NBD协议解除与所述数据源装置间的NBD连接,再由所述数据源装置解除对块设备的绑定。还可以再进一步包括:解除与所述数据源装置间的网络连接。
由上述实施例可以看出,本发明根据NBD协议,构建了NBD客户端,将作为NBD服务器的数据源装置中的块设备数据映射为设备节点,同时,根据USB协议,将构建的USB客户端作为一个USB从设备上,终端主机作为USB主设备,并进一步根据USB协议将设备节点映射为USB海量存储设备端的磁盘,最终使得终端主机如同访问本地的磁盘一样访问数据源装置中的块设备数据,无须经过磁盘复制转移的过程,大大节省了操作者的时间,提高工作效率。同时,本发明是基于USB/NBD来实现的,不需要对终端主机进行任何特殊改造,对于终端主机来说,访问远程的数据源装置的过程,与访问本地USB海量存储设备的过程完全没有区别,在远程数据源装置一端,只需要安装NBD服务器软件即可,降低了实现数据访问的成本。
实施例四
请参阅图5,图5为本发明实施例二揭示的一种远程访问数据的系统工作流程图,以一个具体的应用场景为例进行说明,目前,很多电视机现在已经带有USB接口,具有访问USB磁盘的能力,可以从USB磁盘中读取音视频数据并播放,为了实现具有USB接口的电视机访问到远程网络装置中的数据,则具体工作流程包括:
步骤501:将转换装置通过USB接口插入到作为终端主机的电视机中,根据USB协议给转换装置供电,使转换装置启动;
步骤502:转换装置与作为数据源装置的远程网络装置建立网络连接;
其中,所述转换装置包括USB磁盘虚拟单元、指令转换单元和第一网络通讯单元,所述数据源装置包括第二网络通讯单元、磁盘存取单元和块设备访问单元,由转换装置中的第一网络通讯单元与数据源装置中的第二网络通讯单元建立TCP/IP的网络连接。
步骤503:转换装置按照NBD协议,与数据源装置建立NBD连接,并登录到所述数据源装置;
其中,按照NBD协议的规定,指令转换单元相当于NBD系统中的NBD客户端,而在数据源装置中的磁盘存取单元则相当于NBD系统中的NBD服务器。按照NBD协议,当NBD客户端和NBD服务器之间建立了NBD连接关系后,NBD客户端可以登录到NBD服务器,进而进行数据访问。同时,转换装置中的指令转换单元可以和一个或多个数据源装置中的磁盘存取单元进行上述NBD连接。
步骤504:在转换装置中的指令转换单元按照网络块设备NBD协议将数据源装置中的块设备映射成设备节点;
其中,在Linux系统中,数据源装置等磁盘设备中的数据以块设备的形式存在,当数据源装置的中的块设备通过数据源装置中的第二网络通讯单元和转换装置中的第一网络通讯单元传输到转换装置中后,转换装置对所述设备节点的操作也就是对相应的块设备进行操作。这里,指令转换单元以设备文件方式把本来不在转换装置中的块设备虚拟成了一个或多个设备节点,即虚拟磁盘块设备文件。对于转换装置而言,就可以把数据源装置完全当成是一个或多个本地磁盘。
步骤505:当转换装置中的指令转换单元通知USB虚拟单元虚拟磁盘块设备文件已经准备好后,USB磁盘虚拟单元按照USB协议将设备节点映射成USB海量存储设备端的磁盘;
步骤506:USB磁盘虚拟单元根据USB协议的标准,模拟USB接口插入的过程,使得终端主机开始枚举USB设备;
步骤507:终端主机识别出转换装置,将其作为一个USB海量存储设备的磁盘;
步骤508:终端主机向转换装置发送封装有读写操作命令的USB海量存储类型的数据;
步骤509:转换装置中的USB磁盘虚拟单元把终端主机发来的USB海量存储类型的数据解封装,得到读写操作命令;
步骤510:USB磁盘虚拟单元将解封装得到的读写操作命令发送给指令转换单元;
步骤511:指令转换单元将接收到的读写操作命令按照网络块设备NDB协议将所述读写操作命令封装成NDB数据帧,并按照TCP/IP协议,将所述NDB数据帧封装成TCP/IP包;
步骤512:指令转换单元将此TCP/IP包传递给第一网络通讯单元;
步骤513:第一网路通讯单元将TCP/IP包通过网络传输发送给数据源装置中的第二网络通讯单元;
步骤514:数据源装置中的第二网络通讯单元将TCP/IP包发送给磁盘存取单元;
步骤515:磁盘存取单元将TCP/IP包解封装,得到的NBD数据帧,再将NBD数据帧解封装,得到读写操作命令;
步骤516:磁盘存取单元将解封装得到的读写操作命令发送给块设备访问单元;
步骤517:块设备访问单元根据所述读写操作命令完成对块设备的读写操作;
其中,当进行读写操作后,还可以进一步反馈执行结果或者返回所需读取的数据,则逆向地,从数据源装置中的块设备访问单元返回NBD数据帧,完成步骤508到步骤517之间的逆过程,一直传递到终端主机之中。
进一步的,读写操作结束后,当接收所述终端主机发出的退出磁盘的信息时,按照所述USB协议解除与所述终端主机间的USB连接;按照所述NBD协议解除与所述数据源装置间的NBD连接,再由所述数据源装置解除对块设备的绑定。还可以再进一步包括:解除与所述数据源装置间的网络连接。
通过上述流程,当将转换装置插入到作为主机终端的电视机之后,可以把远程一台计算机或者网络存储设备之中所存放的数据虚拟成一个USB的磁盘来直接使用。另外,对于可以读取USB磁盘的数码相框产品,也可以通过本发明的方法访问远程计算机或网络存储设备之中的照片、电影或音乐。
以上对本发明所提供的一种远程访问数据的方法、装置和系统进行了详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。