CN100399305C - 计算机网络内的数据块存储 - Google Patents

计算机网络内的数据块存储 Download PDF

Info

Publication number
CN100399305C
CN100399305C CNB028194454A CN02819445A CN100399305C CN 100399305 C CN100399305 C CN 100399305C CN B028194454 A CNB028194454 A CN B028194454A CN 02819445 A CN02819445 A CN 02819445A CN 100399305 C CN100399305 C CN 100399305C
Authority
CN
China
Prior art keywords
network
command
data block
order
networking command
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.)
Expired - Fee Related
Application number
CNB028194454A
Other languages
English (en)
Other versions
CN1561489A (zh
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.)
HP Inc
Hewlett Packard Development Co LP
Original Assignee
Lefthand Networks Inc
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 Lefthand Networks Inc filed Critical Lefthand Networks Inc
Publication of CN1561489A publication Critical patent/CN1561489A/zh
Application granted granted Critical
Publication of CN100399305C publication Critical patent/CN100399305C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了在启动计算机系统和具有数据块存储器(26)的目标计算机系统之间传送数据的能力,其中目标计算机系统相对于启动计算机系统是远程的,它相对于使用的数据块存储器(26)的类型与接口无关的。在一个实施例中,虚拟设备驱动器被使用,它实现相对于数据块存储器(26)与接口无关的命令集。

Description

计算机网络内的数据块存储
技术领域
本发明涉及计算机数据存储,具体涉及在计算机网络内的数据块存储器上的数据存储。
背景技术
典型的计算机系统包括:处理器,用于执行指令;内存,用于存储由处理器执行的指令和指令执行的结果;输入外围设备,用于允许用户与系统交互(例如键盘、鼠标等);输出外围设备,它也使得用户可以与系统交互(例如监控器、打印机等);存储外围设备(例如盘驱动器,磁带驱动器等),它提供由内存提供的数据存储之外的数据存储。当计算机系统在运行时,内存通常包括至少两个程序部分,即操作系统程序和应用程序(例如电子数据表格程序)部分。操作系统程序提供多个功能,包括有关与计算机系统相关的输入和输出外围设备、文件管理以及文件目录的功能。如果应用程序需要执行这些功能的任何一个(例如向视频监控器输出信息),则应用程序向操作系统请求所期望的功能,并且操作系统执行实现所述功能所需要的任何操作。
大规模地,计算机系统通常彼此连接以形成计算机网络。普通网络包括局域网(LAN),其中联网在一起的各个计算机系统分布在较小的区域,诸如在办公室或建筑物内。另一种普通网络是广域网(WAN),其中作为网络的一部分的计算机系统分布在较大的区域上。结果,通常需要第三方通信系统(例如电话和卫星)来实现广域网。
计算机网络的基本优点是一个计算机系统可以从与网络内的另一计算机系统相关联的内存写入数据或读取数据。但是,在计算机系统可以联网在一起和以这种方式读取和写入数据之前,必须克服在计算机系统中安装的操作系统中的许多的“本地”特征中固有的某些限制。详细而言,许多操作系统仅仅能够处理对于与有关与操作系统相关联的计算机系统的存储器进行通信的请求,所述存储器即“本地”存储器。结果,这些操作系统不能处理对于与“远程”存储器,即不与和操作系统相关联的计算机系统相关联的存储器,进行通信的请求。为了克服这个限制,“虚拟设备驱动器”被考虑。
一般,虚拟设备驱动器起作用以使得远程存储器看起来是计算机系统的操作系统的本地存储器,并且管理与远程定位的存储器的通信。虚拟设备驱动器也包括两个部件:启动虚拟设备驱动器,它与计算机系统相关联,启动与远程存储器的通信;目标虚拟设备驱动器,它与和远程存储器相关联的计算机系统相关联。在许多情况下,所述“启动”计算机系统具有存储器,所述存储器相对于所述“目标”计算机系统为远程,并且所述“目标”计算机系统要访问所述存储器。在这种情况下,与计算机系统相关联的所述虚拟设备驱动器通常能够反转角色,即启动虚拟设备驱动器也作为目标虚拟设备驱动器,反之亦然。
为了使得远程存储器对于操作系统看起来是本地存储器,所述“启动虚拟设备驱动器”以与本地存储器和操作系统进行通信的相同的方式来与计算机系统的操作系统通信。但是,为了管理与远程存储器的通信,所述“启动虚拟设备驱动器”与负责通过网络通信基本结构(例如铜电缆、光缆、无线信道等)与在计算机网络中的其他计算机系统进行通信的计算机系统部分通信。这个计算机系统部分通常指的是网络接口,并且通常以网络接口卡的形式来实现。在任何一种情况下,启动虚拟设备驱动器向所述网络接口提供要发送到远程存储器的通信,所述网络接口按照用于通过网络通信基础结构发送通信的协议来封装通信。例如,所述网络接口可以在用于通过因特网传输的TCP/IP协议下封装通信。在响应于通过启动计算机系统而启动的通信从远程存储器接收的通信的情况下,网络接口从网络基本结构协议信息取出所述通信,然后向启动虚拟设备驱动器提供所述通信。所述启动虚拟设备驱动器然后向操作系统发送所述通信以用于任何进一步的处理。
在目标计算机系统(即与远程存储器相关联的计算机系统)中的目标虚拟设备驱动器以与启动虚拟设备驱动器非常相同的方式而操作。详细而言,目标计算机系统的网络接口从启动计算机系统取出所述通信,然后向目标虚拟设备驱动器提供所述通信。作为响应,所述目标虚拟设备驱动器向远程存储器传输所述通信。来自远程存储器的任何响应被提供给目标虚拟设备驱动器,所述目标虚拟设备驱动器使得所述响应被传送到网络接口。网络接口然后封装所述响应或通信,以通过网络基础结构向启动计算机系统传送。
通常,在计算机网络中使用的“虚拟设备驱动器”是与设备协议相关联的。例如,如果远程存储器是SCSI盘驱动器,则在启动计算机中的“启动虚拟设备驱动器”执行与远程SCSI盘驱动器通信所需要的SCSI命令全集。例如,如果在启动计算机上执行的应用要求从远程SCSI盘驱动器读取数据,则在启动计算机上的启动虚拟设备驱动器工作,以便执行所述读取操作所需要的所有必要的SCSI命令通过网络基础结构来通信,并且如果必要的话,处理任何对所述命令的响应。这可能涉及通过网络的几个通信。例如,第一通信可以是用于保证SCSI盘驱动器在工作的状态请求;第二命令可以是用于访问驱动器的请求;第三命令可以是用于将读取头移到期望的数据所位于的轨道上的寻道命令(seek command)。
这个用于在网络中的计算机系统之间传送数据的系统已经充分地工作了一些时间,因为与能够使得数据移动到/从与目标计算机系统相关联的远程存储器的与目标计算机系统相关联的操作系统相比,所述网络基础结构在计算机系统之间传送数据慢得多。换句话说,目标计算机系统,特别是目标计算机系统的操作系统已经能够以基本上利用网络基础结构的可用带宽的速度将数据传送到在计算机网络中的其他计算机系统。
但是,近来,网络基础结构的带宽或速度已经大大地提高。结果,网络基础结构不再是在计算机网络中的一个计算机系统和另一个计算机系统之间传送数据中最慢的因素。相反,目标计算机系统,更具体而言是目标计算机系统的操作系统已经变为最慢的因素。详细而言,因为与目标计算机系统相关联的操作系统通常处理来自在系统上运行的一个或多个应用程序的请求,管理外围设备和执行其他任务,因此所述操作系统仅仅可以将其时间的一部分投入到用于处理与在网络中的其他计算机系统的数据传送。而且,现在操作系统可以投入到这样的传送的时间通常不能充分地利用网络基础结构能够传送数据所使用的带宽或速度。
作为与利用高速网络基础结构的、在计算机网络中的计算机系统之间传送数据相关联的操作系统的限制的结果,已经发展出一种新型的存储系统或设备,即附加在网络的存储器。一种附加在网络的存储系统或设备是专用于数据存储的功能的计算机系统。结果,与附加在网络的存储器相关联的操作系统不像传统的计算机系统一样花费所有时间来直接服务来自应用程序等的请求。这继而使得能够向在网络中的其他计算机系统传送数据的附加在网络的存储器必须比通常的、传统的计算机系统更快。而且,当在计算机网络中安装网络存储器时,所述设备被提供了它在网络内的本身地址,并且因此能够直接访问在网络中的其他计算机系统。这个直接可访问能力也解释为数据传送率。
发明内容
本发明的一个实施例提供了附加在网络的存储器(NAS设备),它便利了与数据块存储器的数据传送,所述数据块存储器与NAS设备相关联或者要与NAS设备相关联的,并且相对于在网络中的其他计算机设备被认为是远程的。在此上下文中的NAS设备指的是网络使能的存储器(即专用于数据存储并且具有其本身的网络地址的设备),但不是被利用来传送文件,而是涉及传送数据块。数据传送的便利基于识别至少两个因素。首先,诸如盘驱动器的、存储在存储介质上的连续区域中的多个字节数据的数据块存储器通常能够执行多个功能,它们通常在一个命令集中被反映。例如,用于盘驱动器的典型命令集可以包括寻找、搜索、安装、卸载、读取和写入命令。第二,需要访问远程定位的数据块存储器的、在计算机上执行的应用程序仅仅需要访问有限数量的功能。结果,通过相对于与NAS设备相关联或要与NAS设备相关联的数据块存储器的命令全集而限制来自网络中的计算机系统的功能或命令的数量,NAS设备便利了数据的传送,其中所述数据块存储器相对于所述在网络中的计算机系统被认为是远程的,所述功能或命令被接收和处理到命令全集的一个子集中。在一个实施例中,所述子集包括读取和写入命令,但是不包括在数据块存储器内的传动器的移动专用的命令。例如,在盘驱动器的情况下,将从所述子集去除具体涉及使用传动器来移动头穿过盘表面的寻道命令。在另一个实施例中,所述多个命令对于至少两种并且最好几种数据块存储器是通用的。结果,在NAS设备和远程计算机之间的数据传送独立于与或要与NAS设备相关联的数据块存储器的类型,或者换句话说,是与接口无关的。以下,将NAS设备处理的来自远程计算机系统的命令称为网络命令。
本发明的NAS设备包括两个接口:(1)用于向网络基础结构(例如LAN或WAN)发送或从网络基础结构接收通信的网络接口,其中所述网络接口能够执行数据分组协议(例如TCP/IP),(2)数据块存储器接口,用于向数据块存储器发送/从数据块存储器接收通信。NAS设备还包括具有数据块存储器处理器(它可以被认为是新型虚拟设备驱动器的目标端)的操作系统。所述数据块存储器处理器能够接收在网络接口接收的网络命令,并且产生执行网络命令所需要的数据块存储器专用的一个或多个命令的串。例如,如果所述处理器从网络接口接收到“读取”网络命令,则处理器可能需要向盘驱动器发出命令以请求所述设备的状态和/或可获得性,保留所述设备,向盘上装上读取/写入头,寻找期望的数据块所位于的轨道,然后搜索在所述数据块所位于的轨道上的扇区,最后向所述设备发出特定的读取命令以使得读取所请求的数据。所述数据块存储器处理器也能够使得向所述数据块存储接口发送任何这样的命令串,以随后传送到数据块存储器。而且,所述处理器能够从所述数据块存储器接口接收对一个命令的任何响应,并且如果必要的话,向网络接口发送数据以通过网络基础结构向请求数据的计算机系统发送。
在一个实施例中,所述数据块存储器处理器包括以并行方式处理网络命令的能力。命令的并行处理可以被概念化为独立的“线程”,每个线程涉及网络命令或相关联的一组网络命令。在一个实施例中,所述处理器包括建立多个命令队列的能力,每个队列具有一个相关联的“线程”,用于执行在它相关联的命令队列中的一个或多个网络命令。所述处理器还包括指导器,它能够将网络命令引导到队列中以处理。在一个实施例中,所述指导器能够监控在多个队列中的负载,并且确定一个命令要布置在哪个队列中,以便实现期望的目的。例如,所述指导器能够实现一种算法,它平衡在多个队列中的负载以便最大化通过量。
本发明的另一个实施例包括计算机结构,它实际上被实现在主计算机上,相对于所述主计算机,所述NAS设备被当作远程设备。所述结构包括具有主机块存储器处理器(它可以被认为是新型虚拟设备驱动器的启动端)的操作系统,它能够处理来自在主计算机上执行的应用程序的文件请求,其中所述文件的至少一部分驻留在与远程NAS设备相关联的数据块存储器上。详细而言,具有所述处理器的操作系统能够从在主计算机上执行的应用程序接收文件请求,将所述文件请求转换为网络命令,并且将所述网络命令向与主计算机相关联的网络接口提供,以便网络接口可以使得网络命令被传送到具有远程数据块存储器的NAS设备。另外,具有所述处理器的操作系统能够接收对在主计算机的网络接口接收的网络命令的回答,并且将所述回答传送到应用程序上。例如,如果在主计算机上执行的应用需要在位于与NAS设备相关联的数据块存储器上的文件“xyz”中包含的数据,则所述应用产生一个请求,所述请求被传送到处理器。所述处理器响应于所述请求将用于文件“xyz”的请求转换或翻译为网络命令,即用于与包括“xyz”文件的NAS设备相关联的数据块存储器上的一个或多个块的块读取命令。另外,所述处理器使得网络命令被传送到主计算机的网络接口,以通过网络基础结构传送到NAS设备。所述NAS设备处理所述网络命令,并且使得包括所请求的“xyz”文件的数据块通过网络基础结构被传送到主计算机的网络接口。数据块继而被传送到处理器。作为响应,所述处理器向请求应用传送或使得请求应用可以获得所述一个或多个块。
本发明的另一个实施例包括一个主计算机,它包括前述的具有主机块存储器处理器的操作系统和用于向网络基础结构发送通信和从网络基础结构接收通信的主机网络接口,其中网络接口实现数据分组协议(例如TCP/IP)。另一个实施例包括网络基础结构,它可以以许多不同的形式被实现,包括LAN和WAN。
本发明的一个实施例涉及一种用于在主计算机和目标计算机之间通信的方法,所述目标计算机诸如NAS设备,它与数据块存储器相关联。所述方法包括:提供网络基础结构,用于在主计算机和目标计算机之间传送通信。所述方法还包括:通过网络基础结构来传送网络命令,即与两个或多个数据块存储器相关联的通用或与接口无关的命令,或在用于数据块存储器的命令全集的子集内的命令。在一个实施例中,通过网络基础结构传送的网络命令包括与数据块存储器相关联的通用或与接口无关的命令、或作为数据块存储器的命令全集的子集的命令,以及不是通用或这样的子集的一部分的命令。例如,在一个实施例中,所述命令包括用于确定网络等待时间的“ping”网络命令和用于中断在主计算机和目标计算机之间的连接的断开连接网络命令。
附图说明
图1是实现本发明的计算机网络的方框图,所述计算机网络包括主计算机、具有相对于主计算机为远程的数据块存储器的目标计算机、用于在主计算机和目标计算机之间传送通信的网络基础结构;
图2图解了“请求”的首标;
图3A-3B分别图解了识别网络命令及其确认;
图4A-4B分别图解了读取网络命令及其确认;
图5A-5B分别图解了写入网络命令及其确认;
图6A-6B分别图解了write/now网络命令及其确认;
图7A-7B分别图解了断开连接网络命令及其确认;
图8A-8C分别图解了“ping”网络命令,所述命令的确认和完成的命令;
图9图解了在NAS设备内的操作系统的块存储器处理器部分的一个实施例;
图10图解了数据块存储器处理器和用于所述处理器的应用程序接口;
图11图解了主机远程块存储器处理器和用于所述处理器的应用程序接口。
具体实施方式
图1是包括本发明的实施例的计算机网络10的方框图。一般,计算机网络10包括:附加在网络的存储器或系统14(以下称为NAS设备14);主计算机16,相对于它,在NAS设备14中的任何数据块存储器被认为是远程的;网络基础结构18,用于在NAS设备14和主计算机16之间传送数据。
NAS设备14包括存储器网络接口22,用于按照分组协议(例如TCP/IP)发送/接收通信到/从网络基础结构18。结果,接口22能够将要通过网络基础结构18发送的通信分组化,并且重新组合从网络基础结构18接收的相关分组。同样包括在NAS设备14中的是块存储器接口24,它在图解的实施例中采取块存储器控制器的形式。块存储器接口24管理与一个或多个数据块存储器26的物理通信。更具体而言,块存储器接口24处理与一个或多个数据块存储器26通信所需要的电子信号序列。
数据块存储器26是以具有指定长度(例如512字节)的块存储数据的数据存储器,其中所述每个块具有唯一的地址。数据块存储器26通常全部是相同的类型,并且全能够保存相同数量的数据(例如,每个能够保存10GB数据的SCSI盘驱动器)。但是,数据块存储器可以是不同类型的(例如盘驱动器或磁带驱动器)或不同子类型的(例如SCSI盘驱动器和ATA盘驱动器)。数据块存储器26也可以保存不同数量的数据。而且,数据块存储器26可以被配置来实现各种存储配置,诸如RAID。
NAS设备14还包括操作系统28,它包括块存储器处理器30,块存储器处理器30能够从网络接口22接收网络命令。网络命令是一种命令,所述命令是在数据块存储器的命令全集的子集内,或者对于多个类型的数据块存储器的命令全集是通用的,或者独立于任何数据块存储器的接口。在一个实施例中,网络命令的子集包括“读取”和“写入”命令,它们是相对于实际的数据块存储器26是通用的或与接口无关的,并且排除多数--如果不是全部--其他的数据块存储器命令。结果,排除了下述命令:它们具体涉及在数据块存储器中的传动器等的运动,诸如涉及将在盘驱动器内的传动器从一个轨道向另一个轨道移动的寻道命令。网络命令的一个集也可以包括在数据块存储器的命令全集内的命令或相对于两个或多个数据块存储器的命令全集通用或与接口无关的命令。例如,网络命令可以包括与网络有关而与数据块存储器无关的命令。例如,“ping”命令可以用于确定网络等待时间。
块存储器处理器30也能够处理网络命令以产生一个网络命令所涉及的特定的一个数据块存储器26的一个或多个设备相关命令的串。例如,如果网络命令是涉及作为数据块存储器26之一的盘驱动器的“读取”网络命令,所述块存储器处理器30可以发出与设备相关的命令,它们保留驱动器,使得传动器将读/写头移动到块所位于的轨道上,读取数据块和将数据置于高速缓冲存储器中,并且从高速缓冲存储器读取数据块。通常,在已知先前命令的结果后产生在一个串内的第二和后续的设备相关命令的每个,因此使得处理器在确定第二和后续命令中考虑到对于一个或多个先前的命令的响应,其中对至少一个先前的命令存在多个可能的结果。例如,如果对设备相关的状态命令的响应指示设备忙,则处理器可以使得重新发出状态命令。但是,如果对于设备相关状态命令的响应指示所述设备可用,则处理器可能发出保留所述设备的命令。块存储器处理器30还能够向块存储器接口传送设备相关的命令,块存储器接口向特定的数据块存储器传送这些命令。另外,块存储器处理器30能够从数据块存储器26接收对命令串的任何回答,并且处理任何回答。块存储器处理器30也能够从满足一个网络命令的数据块存储器26向存储器网络接口22传送任何回答。例如,如果在网络接口接收的网络命令是“读取”网络命令,则处理器30能够使得已经从所述设备读取的数据块被传送到存储器网络接口22上,以便通过网络基础结构18向主计算机16传送。
在一个实施例中,操作系统28是Linux操作系统。其他的操作系统也是可行的。而且,所述操作系统已经被适配以便块存储器处理器30位于所述操作系统的核心内。通过在核心内建立处理器30,避免了对于在NAS设备14中独立安装处理器30的需要。而且,在一个实施例中,包括处理器30的操作系统被存储在一个或多个数据块存储器26上。当需要时,操作系统28被装入内存(未示出)中并且被诸如微处理器的、与NAS设备14相关联的处理引擎(未示出)执行。
对于数据块存储器26,应当理解可以向未安装数据块存储器26的客户提供NAS设备14,以便客户可以安装他们自己的设备。但是,期望在多数情况下,向安装了数据块存储器26的客户提供NAS设备14。
NAS设备14也包括数据缓冲器32,即使在NAS设备14中的特定数据块存储器不在处理数据传送的状态下,数据缓冲器32也通过使得可以经由网络基础结构18传送数据而促进网络性能。例如,如果数据块设备不能处理来自主计算机16的“写入”网络命令,则用于“写入”命令的数据可以被存储在缓冲器32中,并且以后被传送到数据块存储器。
主计算机16包括主机网络接口36,用于按照分组协议(TCP/IP)向网络基础结构18发送/从网络基础结构18接收通信。结果,接口36能够分组化要通过网络基础结构18发送的通信,并且将从网络基础结构18接收的相关分组重新组合。主计算机16也包括应用程序38,当应用程序38被执行时,其至少部分地被装到主计算机16的内存(未示出)中,并且被与主计算机16相关联的处理引擎(未示出)执行。
主计算机16也包括主机操作系统40,主机操作系统40特别用于处理来自应用程序38的请求。当主机操作系统40被执行时,其被至少部分地装入主计算机16的内存(未示出)中,并且被与主计算机16相关联的处理引擎(未示出)执行。主机操作系统40包括主机远程块存储器处理器42,它被特别适配来处理来自应用程序38的请求,所述请求涉及与NAS设备14相关联的数据块存储器26。为了说明,数据块存储器26在主计算机16内被表示为“虚拟”数据块存储器26’。具体地,具有主机远程块存储器处理器42的主机操作系统40用于:(1)接收来自一个应用程序的请求,所述请求涉及从位于数据块存储器26之一上的文件读取数据或向其写入数据,即文件请求;(2)将文件请求翻译为一个或多个网络命令;(3)使得向主机网络接口36传送网络命令;(4)从主机网络接口接收对于先前传送的网络命令的响应;(5)如果适合的话,向所述应用程序发送所述响应。
作为典型的主计算机的示范,主计算机16还包括由存储控制器46管理的一个或多个存储器44。存储器44与数据块存储器26相反,被认为对主计算机16是“本地的”。在所图解的实施例中作为PCI总线的总线48在主机操作系统40和存储控制器46之间提供通信路径。通常,应用程序38和操作系统40每个当不被执行时被存储在一个或多个存储器44中。当执行应用程序38和操作系统40时,其中每个的至少一部分被从一个或多个存储器44装载到主计算机16的内存(未示出)中。
主计算机16也包括数据缓冲器49,即使应用程序38不在处理数据传送的状态下,它通过使得可以经由网络基础结构18传送数据而促进网络性能。例如,如果应用程序38不能处理对于“读取”网络命令的响应,则数据可以被存储在数据缓冲器49中,并且以后被传送到应用程序38。数据缓冲器50也与应用程序38相关联,用于通过提供附加的或替代的数据存储容量而促进网络性能,所述数据存储容量可以当在网络10内的其他元件不处于接受数据传送的状态时被用于存储数据。
网络基础结构16是任何的网络基础结构或网络基础结构的任何组合。例如,网络基础结构16可以以LAN或WAN的形式来实现。另外,网络基础结构可以包括因特网。在物理级,可以按照以太网标准来实现所述网络基础结构。也可以按照其他标准来实现网络基础结构。而且,按照诸如TCP/IP(它在因特网上被主要使用)、Novel、Appletalk和流控制传送协议(SCTP)的分组协议来进行通过基础结构16的通信。SCTP特别用于降低在拥塞的网络中的等待时间。按照其他分组协议的通信也是可行的。
一般,具有主机远程块存储器处理器42的主机操作系统40能够接收从在主机系统中执行的应用程序输出的文件命令,并且将所述文件命令翻译为一个或多个网络命令,所述网络命令按照分组协议被通过网络基础结构发送到NAS设备14,然后被应用到数据块存储器26之一。最小的网络命令集依赖于数据块存储器26的特性。如果数据块存储器26是只读设备,则最小网络命令集是读取命令。如果数据块存储器26是读取/写入设备,则所述最小网络命令集具有读取命令和写入命令。网络命令集通常包括这样的命令:它们不直接涉及从数据块存储器读取或向其写入数据,但是促进在主计算机16和NAS设备14之间的数据传送。在任何情况下,网络命令集必须包括最小命令集。
参见图3-9C,将说明用于主机远程块存储器处理器42的网络命令集。所述网络命令集包括读取块命令和写入块命令,它们相对于所有的数据块存储器是通用或与接口无关的,或者它们是单个数据块存储器的命令全集的子集。在图解的实施例中,所述网络命令集还包括涉及在NAS设备14和主计算机16之间的连接的命令。因而,这些命令既不是对于数据块存储器的通用的也不是单个数据块存储器的命令全集的子集。在所图解的实施例中,这些命令包括用于访问网络等待时间的“ping”命令和用于中断在主计算机16和NAS设备14之间的套接连接(socket connection)的断开连接命令。
主机远程块存储器处理器42以“请求”的形式来实现每个网络命令。所述请求可以依赖于情况而采取几种形式。在图解的实施例中,所述请求能够包括一个或多个子命令。例如,读取请求或读取网络命令包括一个或多个读取子命令,它们每个涉及一个数据块或连续的数据块。也可以实现一个请求以便没有子命令。例如,读取请求或读取网络命令将涉及单个数据块或连续的数据块。在这样的实现方式中,需要多个读取请求来实现与允许多个读取子请求的读取请求相同的效果。也可以实现一个请求以便在读取和写入网络命令的情况下,所述请求仅仅涉及单个数据块。在这个特别的情况下,将需要更多的读取或写入请求,它们涉及一种允许子命令的实现方式,其中每个子命令能够涉及一个数据块或连续数据块。
参见图2,由首标52来识别一个请求。所述首标包括下列字段:(1)命令(command)字段,用于保存网络命令代码;(2)TransactionKey字段,用于保存一个密钥,所述密钥对于用于一个会话的持续时间(即在NAS设备14和主计算机16之间的有效连接期间)的请求是唯一的;(3)ClusterID字段,用于保存与NAS设备14相关联的存储器的簇的唯一标识符,所述存储器能够作为单个资源;(4)LunID字段,用于保存一个唯一标识符,它在簇的环境中指的是在簇内的逻辑分区或卷;(5)CmdCount字段,用于保存在所述请求内表示的命令的总数;(6)纠错CRC字段,用于如果“C”字段等于在后述的识别网络命令中的1,则保存一个纠错循环冗余校验。
参见图3A-3B,将说明识别网络命令。所述识别网络命令被主计算机16使用,以从NAS设备14请求信息和/或向NAS设备14发送信息。预期所述识别网络命令将在主计算机16和NAS设备14之间建立连接后、即在会话的开始立即被发送。主机远程块存储器处理器42用于建立一个“请求”,它仅仅包括识别网络命令。所述识别网络命令的首标部分包括具有0x02值的命令字段。在首标部分中也包括交易密钥、簇ID和lun ID字段。在识别网络命令中的命令计数字段被设置为0x01,它反映出所述请求包括识别网络命令,没有子命令。除了首标部分之外,所述识别网络命令包括C字段、ECCT字段和版本字段。C字段是ECC标记。如果C字段具有值0,则不存在ECC。具有值1的C字段指示存在ECC。ECCT字段指示当C字段被设置为1时使用的纠错算法的类型。版本字段识别在处理网络命令中使用的软件的版本。NAS设备14利用在版本字段中的信息来验证它在使用与主计算机16相同的软件版本。
参见图3B,由NAS设备14发送并被主机远程块存储器处理器42接收的、响应于识别网络命令的确认包括首标,它与识别网络命令或识别请求具有相同的命令、交易密钥、簇ID和lunID字段以及在每个字段中的值。所述确认还包括下面的字段和在字段内的值,它们向处理器42提供在产生后续的网络命令或请求中所使用的信息:(1)BlkSize字段,用于制定对于指定的簇和lun的最小块大小;(2)MaxLBA字段,用于指定由指定的簇和lun表示的最大逻辑块地址;(3)PreferredBlkSize字段,用于指定从NAS设备14看的、用于指定的簇和lun的优选的块大小;(4)MaxCmdsPerRqst字段,用于指定每个请求的子命令的最大数量;(5)MaxBlksPerCmd字段,用于指定可以与读取或写入命令相关联的块的最大数量;(6)序号字段,用于保存用于在LunID字段中识别的lun和在ClusterID字段中识别的簇的使用ASCII的序号;(7)设备编号字段,用于指定与在LunID字段中识别的lun相关联的使用ASCII的设备ID;(8)第二版本号码,用于指定可以与在处理网络命令中使用的软件结合使用的软件和/或硬件的版本号。
参见图4A-4B,将说明读取网络命令。所述读取网络命令被主计算机16使用,以获得在NAS设备14内的数据块存储器26上驻留的一个或多个数据块。所述读取网络命令包括一个或多个读取子命令,它们每个与一个数据块或连续的数据块相关联。读取网络命令的首标部分包括具有值0x10的命令字段。在首标部分中也包括交易密钥、簇ID和lun ID字段。命令计数字段保存一个值,所述值反映在读取网络命令内的读取子命令的数量。除了首标部分之外,读取网络命令还包括至少一个读取子命令,它包括StartLBA、BlkCount和Status/Type字段。StartLBA字段用于指定相对于被识别的簇ID/lun ID的开始逻辑块地址,读取操作要在此开始。BlkCount字段用于指定要在StartLBA字段中指定的开始逻辑块地址开始读取的块的数量。Status/Type字段用于指定在读取子命令中“没有误差”。
对于图4B,将说明由主计算机16、更具体地由主机远程块存储器处理器42响应于先前发送的读取网络命令或读取请求而接收的确认。所述确认包括首标部分,它与在读取网络命令中的首标部分相同。对于在读取网络命令中的每个读取子命令,所述确认也包括具有在读取网络命令中的值的StartLBA和BlkCount字段。Status/Type字段保存一个值,它指示是否在从数据块存储器读取数据中存在误差。而且,如果存在误差,则在这个字段中的值提供所遇到的误差的类型的指示。所述确认也包括数据字段,它具有来自在NAS设备14中的数据块存储器26的被请求的数据。如果在前一个发送的识别网络命令中的C字段被设置为“1”以便使能纠错编码,则所述确认也包括ECC字段,它保存用于在数据字段中的数据的纠错码。
参见图5A-5B,将说明写入网络命令。写入网络命令或写入请求被主计算机16用来向在NAS设备14中的数据块存储器26写入一个或多个数据块。写入网络命令包括一个或多个写入子命令,它们每个涉及一个数据块或连续的数据块。写入网络命令的首标部分包括具有值0X20的命令字段。首标部分还包括交易密钥、簇ID和lun ID字段。命令计数字段保存一个值,所述值反映在写入网络命令内的写入子命令的数量。除了首标部分之外,写入网络命令包括至少一个写入子命令,它包括StartLBA、BlkCount和Status/Type字段。StartLBA字段用于指定相对于被识别的簇ID/lun ID的开始逻辑块地址,写入操作要在此开始。BlkCount字段用于指定要在StartLBA字段中指定的开始逻辑块地址开始写入的块的数量。Status/Type字段用于指定在写入子命令中“没有误差”。写入网络命令还包括一个数据字段,它保存要按照在簇ID、lun ID和StartLBA字段中给出的值被写入到NAS设备14中的数据块存储器26之一的数据。而且,如果在前一个发送的识别网络命令中的C字段被设置为“1”,则写入网络命令包括纠错码,它包括用于在数据字段中给出的数据的纠错码。
参见图5B,将说明由主计算机16、具体由主机远程块存储器处理器42响应于先前发送的写入网络命令或写入请求而接收的确认。在NAS设备14内的操作系统28知道数据已经被接收并准备好被写入数据块存储器26之一后,所述确认由NAS设备14产生并且被发送到主计算机16。结果,在数据被实际写入到物理设备、即数据块存储器26之一之前,所述确认可以被发送到主计算机16。所述确认包括首标部分,它与在写入网络命令中的首标部分具有相同的字段和值。对于在写入网络命令中的每个写入子命令,所述确认也包括具有在写入网络命令中的值的StartLBA和BlkCount字段。Status/Type字段保存一个值,它指示是否在向数据块存储器写入数据中存在误差。而且,如果存在误差,则在这个字段中的值提供所遇到的误差类型的指示。但是,所述确认不包括在写入网络命令中的数据字段中的数据。
参见图6A-6B,将说明write/now网络命令。一般,write/now网络命令与写入网络命令具有相同的目的。即write/now网络命令被主计算机16使用来向在NAS设备14内的数据块存储器26写入数据块。在write/now网络命令和写入网络命令之间的差别在于确认的定时。一旦操作系统28知道数据可以被写入到数据块存储器26之一,则NAS设备14如上所述产生和发送确认。结果,在数据被写入到数据块存储器26之一之前可以发送所述确认。相反,NAS设备14不产生和发送对于write/now网络命令的确认直到数据被实际写入到物理设备、即数据块存储器26之一之后。
参见图6A-6B,所述write/now网络命令包括首标部分,所述首标部分具有带有0x20的值的命令字段。在首标部分内也包括交易密钥、簇ID和lun ID字段。命令计数字段保存反映在write/now网络命令内的写入子命令的数量的一个值。除了首标部分之外,写入网络命令还包括至少一个写入子命令,它包括StartLBA、BlkCount和Status/Type字段。StartLBA字段用于指定相对于被识别的簇ID/lun ID的开始逻辑块地址,写入操作要在此开始。BlkCount字段用于指定要在StartLBA字段中指定的开始逻辑块地址开始写入的块的数量。Status/Type字段用于指定在写入子命令中“没有误差”。写入网络命令还包括一个数据字段,它保存要按照在簇ID、lun ID和StartLBA字段中给出的值被写入到NAS设备14中的数据块存储器26之一的数据。而且,如果在前一个发送的识别网络命令中的C字段被设置为“1”,则写入网络命令包括纠错码,它包含用于在数据字段中给出的数据的纠错码。
参见图6B,将说明由主计算机16、具体由主机远程块存储器处理器42响应于先前发送的write/now网络命令而接收的确认。在数据被实际写入到一个或多个数据块存储器26之前,所述确认被NAS设备14产生和被发送到主计算机16。所述确认包括首标部分,它与在write/now网络命令中的首标部分具有相同的字段和字段中的值。对于在写入网络命令中的每个写入子命令,所述确认也包括StartLBA和BlkCount字段,所述字段中的值与在写入网络命令中的相同。Status/Type字段保存一个值,它指示是否在向数据块存储器写入数据中存在误差。而且,如果存在误差,则在这个字段中的值提供所遇到的误差的类型的指示。但是,所述确认不包括在写入网络命令中的数据字段中的数据。
参见图7A-7B,将说明断开连接网络命令或断开连接请求。断开连接网络命令由主计算机16使用以中断与NAS设备14的套接连接。断开连接网络命令不像其他网络命令那样,也可以被NAS设备14发送到主计算机16以中断连接。如果主计算机16发送断开连接网络命令,在NAS设备14通过处理任何未解决的读取和/或写入操作来响应,发送确认,然后终止连接。如果NAS设备14向主计算机16发送断开连接网络命令,则主计算机16假定不能补救地丢失任何未解决的和未确认的读取或写入网络命令。
参见图7A,断开连接网络命令或断开连接请求包括首标部分,所述首标部分具有带有值0x41的命令字段。首标部分也包括交易密钥、簇ID和lun ID字段。命令计数字段保存值0x01,它反映断开连接网络命令或请求包括断开连接网络命令并且没有子命令。
参见图7B,将说明被断开连接网络命令的接收者产生并且被提供到断开连接网络命令的启动者的确认。所述确认包括与在断开连接网络命令中的字段相同的字段。在确认的字段中的值与在断开连接网络命令的字段的值相同。
参见图8A-8C,将说明“ping”网络命令或ping请求。Ping网络命令被主计算机16用于确定在网络内的等待时间。Ping网络命令象断开连接网络命令一样也可以被NAS设备14发出。为了确定在网络中的等待时间,假定NAS设备14和主计算机16同步,即它们的内部系统时钟同步。通常,在网络启动时使用网络时间协议来实现同步,所述网络时间协议被通称为缩写字NTP。
参见图8A,ping网络命令包括首标部分,所述首标部分具有带有值0x01的命令字段。首标部分也包括交易密钥、簇ID和lun ID字段。命令计数字段保存值0x01,它反映ping网络命令是一个包括ping网络命令并且不包括子命令的请求。ping网络命令还包括“t0”字段,用于保存一个值,所述值反映启动者(即主计算机16或NAS设备14)发出ping网络命令的时间,如在启动者的内部系统时钟上所示。
参见图8B,ping网络命令的确认包括首标部分,所述首标部分包括与ping网络命令相同的字段和在字段中的相同的值。具体地,所述确认包括命令字段、交易密钥、簇ID、lun ID、命令计数和t0字段,每个字段包括与在ping网络命令中相同的值。另外,所述确认包括t1和t2字段。t1字段包括接收者接收ping网络命令的时间,如在接收者的内部系统时钟上所示。t2字段包括由接收者向启动者发送所述确认的时间,如在接收者的内部系统时钟上所示。
参见图8C,对于ping网络命令的完全响应(complete response)包括首标部分,所述首标部分包括与ping网络命令的确认相同的字段和在字段中的相同的值。具体地,所述完全响应包括命令字段、交易密钥、簇ID、lun ID、命令计数和t0、t1和t2字段,每个字段包括在确认的对应字段中提供的值。所述完全响应还包括t3字段,用于保存启动者从接收者接收所述确认的时间,如在启动者的内部系统时钟上所示。
在t0、t1、t2和t3字段中的值被启动者用于确定表示在启动者和接收者之间的等待时间的特定信息。具体地,往返行程时间或等待时间是在t3字段中的值,它小于在t0字段中的值;上载时间或等待时间是在t1字段中的值,它小于在t0字段中的值;下载时间或等待时间是在t3字段中的值,它小于在t2字段中的值。这些值如果期望的话被在NAS设备14中的操作系统28和/或在主计算机16中的操作系统40使用以管理数据的传送。具体地,主机操作系统40可以使用上载、下载和/或往返行程时间以确定等待时间、是否NAS设备14是“有效的”和数据传送的超时期限。
将参照图9来说明块存储器处理器30的实施例。处理器30一般包括管理程序56、请求监听器58和请求指导器60。管理程序56用于:(1)启动请求监听器58;(2)启动请求指导器60;(3)建立用于处理请求或网络命令的工作队列和工作线程,其中按照配置文件(未示出)来建立所述队列和线程。
工作队列是用于保存网络请求或命令的结构。工作线程处理在队列中的网络请求或命令。读取或写入网络命令的读取或写入子命令和识别网络命令的处理涉及:对于与请求的首标部分的簇ID和lun ID字段中的值相关联的物理设备,产生执行所述命令所需要的设备相关命令,并且处理从物理设备对具体设备命令的任何响应。对于设备相关命令的产生,所述线程产生执行命令所需要的一个或多个设备相关命令的串。例如,为了当物理设备是盘驱动器时执行读取网络命令,线程可以发出设备相关命令,所述设备相关命令用于:(1)获得驱动器的状态;(2)如果可以获得驱动器,则针对可能要访问驱动器的其他线程保留所述驱动器;(3)使得在驱动器内的传动器将读取/写入头向开始逻辑块地址所位于的轨道移动;(4)一旦在正确的轨道上,则使得从指定的开始地址开始从驱动器读取指定数量的块。在读取网络命令的情况下,相对于具体设备命令的来自物理设备的任何响应的处理涉及:在确认中提供被请求数据,用于通过网络基础结构向主计算机16传送。在写入网络命令的情况下,所述处理涉及:产生一个确认以通过网络基础结构向主计算机16发送。在write/now网络命令的特定情况下,仅仅在已经向物理设备实际写入数据后提供确认。在可能涉及产生设备相关命令的识别网络命令的情况下,处理涉及产生确认。响应的处理也涉及:响应于具体的设备命令而处理可能发生的任何差错条件。所述线程至少能够至少提供一个差错响应,它被传送到启动设备。在另一个实施例中,线程试图通过发出另一个设备相关的命令而从差错条件恢复。例如,线程可以仅仅重试所述设备相关命令一次或多次。
请求监听器58用于:(1)从网络中的其他元素(在所图解的实施例中仅仅是主计算机16)接受连接;(2)向请求指导器传送从网络中的其他元素接收的请求以用于处理。
请求指导器60用于:(1)从请求监听器58接收请求或网络命令;(2)分离在读取/写入请求内的子命令或网络命令;(3)向网络队列写入网络命令和子命令以便由工作线程处理。通常,管理程序56建立多个工作队列和多个工作线程。在这种情况下,向工作队列分配命令以处理是基于由当前被每个工作线程经历的工作负载的请求指导器的评估。而且,如果网络命令或请求是断开连接网络命令,则指导器60防止工作队列的任何进一步的装载,并且在通过工作线程完成所有队列命令时使得产生确认。指导器60也使得响应于ping网络命令而产生确认。
参见图1,将说明在主计算机16和NAS设备14之间的数据块传送。一般,主机操作系统40的主机远程块存储器处理器42和其他部分操作,以便从在主计算机16内执行的应用程序接收文件命令,将所述文件命令转换为一个或多个读取/写入网络命令,并且向网络接口卡36提供任何这样的网络命令,以按照分组协议通过网络基础结构18传送到NAS设备14。一般,在NAS设备14内的块存储器处理器30通过经由块存储器接口24向数据块存储器26之一发出一个或多个设备相关命令来响应于任何读取/写入网络命令。另外,NAS设备14使得按照分组协议(例如TCP/IP)经由存储器网络接口22和网络基础结构18向主计算机16传送读取/写入网络命令的确认。一般,主计算机16操作以便在由主机网络接口36的分组的任何重新组合后从主机网络接口36向主机远程块存储器处理器42传送确认。主机操作系统40的主机远程块存储器处理器42和其他部分合作,以便处理先前发出的读取/写入网络命令的确认。在读取网络命令的情况下,主机操作系统40的处理器42和其他部分合作来以读取网络命令的形式向请求数据的应用提供从数据块存储器26读取并且在确认中包括的数据。在写入网络命令的情况下,主机操作系统40的处理器42和其他部分通常合作以向应用程序提供一个指示,所述指示用于指示所述应用程序已经以文件命令的形式请求被写入到一个存储器中的数据已经被写入到存储器中了。
作为在图3-9中给出的网络命令的特定实施例的上下文中、在主计算机16和NAS设备14之间的数据块传送的示例,将说明在数据块存储器26之一上驻留的数据块向在主计算机16中执行的应用的传送,其中所述数据块存储器26作为NAS设备14的一部分。通常,在发出读取网络命令之前,主机远程块存储器处理器42通过发出任何识别网络命令来确定格式化所需要的、或在格式化任何读取网络命令中期望的设备特定的信息。识别网络命令按照分组协议经由主机网络接口36、网络基础结构18、存储器网络接口22被传送到块存储器处理器30。作为响应,块存储器处理器30可以向物理设备发出设备相关命令,以便确定确认所需要的信息。在任何情况下,块存储器处理器30产生所述确认并且确定在所述确认中的各个字段的值。处理器30也向存储器网络接口22提供确认,以便经由网络基础结构18被传送到主计算机16。
一旦主机远程块存储器处理器42已经确定:适当地格式化用于数据块存储器26之一的读取网络命令所需要或期望的信息已被获得,则处理器42能够响应于来自在主计算机16上执行的应用程序的读取文件请求而产生读取网络命令。详细而言,主机操作系统40从应用38接收读取文件命令(例如读取文件“xyz”),其中文件“xyz”位于数据块存储器26之一上。根据向识别网络命令提供的确认中的信息,处理器42与主机操作系统40的其他部分合作将读取文件命令翻译为一个或多个读取网络命令。读取网络命令按照分组协议经由主机网络接口36和网络基础结构18被传送到NAS设备14。块存储器处理器30通过向数据块存储器26之一发出适当的设备相关命令以便使得可以读取所需要的数据而处理读取网络命令。一旦已经从用于读取网络命令的设备读取了数据,则处理器30将所述数据置入确认中,并且向存储器网络接口22提供确认,以按照分组协议经由网络基础结构传送到主计算机16。
主机网络接口36接收对于读取网络命令的确认,并且在分组的任何重新组合后,向主机远程块存储器处理器42提供确认。作为响应,主机操作系统40的处理器42和其他部分合作,以向已经发出读取文件命令的应用提供在确认中的数据,所述读取文件命令使得发出读取网络命令。
参见图10和11,将讨论块存储器处理器30的一个实施例和主机远程块存储器处理器42的一个实施例,所述块存储器处理器30包括应用程序接口(API)62,所述主机远程块存储器处理器42具有API 64。API 62和API 64每个用于使得与处理器相关联的软件的层避免采用或被适配来采用在网络10中实现内存和/或存储器的方式。API 62和64还向应用程序提供命令接口,它使得编程人员可以最佳化特定应用的数据块的传送。例如在涉及流视频的应用中,API向应用的编程人员提供最佳化在网络内的数据块传送的能力以便实现流视频应用。在一个实现方式中,API 62和64提供实现网络功能、设备功能和内存功能的能力。
网络功能实现电话类模型,其中进行呼叫和回答呼叫以建立连接。NAS设备14端利用netListen网络功能来监听来自主机16的连接请求;处理的主机16端利用netCall网络功能来提交连接请求;并且处理的NAS设备14端利用netAnswer功能来接受连接请求,即指导在NAS设备14和主机16之间建立连接。一旦建立了连接,则netRead和netWrite网络功能被利用来实现通过所述连接的数据传送。其他的网络功能也是可行的。
NAS设备14端利用devRead和devWrite设备功能来分别从设备读取数据块和向数据块存储器写入数据块。其他文件功能包括:(a)devOpen,用于打开数据块存储器来读取/写入;(b)devClose,用于关闭一个设备以使得其他处理可以访问数据块存储器;(c)devStatus,用于获得数据块存储器的当前状态(例如可用、不可用、备用等)。其他的设备功能也是可行的。
内存功能提供在NAS设备14端和在主计算机16端上的内存的分配和解除分配。
以上所述的实施例进一步意欲解释所知道的实践本发明的最佳方式,并且使得本领域内的其他技术人员能够利用本发明。

Claims (18)

1.一种用于存储数据块的计算机结构,包括:
附加在网络的存储器,包括:
存储器网络接口,能够按照分组协议向网络基础结构发送/从网络基础结构接收通信;
块存储器接口,能够向数据块存储器发送/从数据块存储器接收通信;
存储器操作系统,具有块存储器处理器,它能够:
从所述存储器网络接口接收相对于数据块存储器与接口无关的一组网络命令的一个网络命令;
为了执行所述网络命令,产生用于数据块存储器的一个或多个设备相关命令;
向所述块存储器接口发送所述一个或多个设备相关命令的每个;
从所述块存储器接口接收对于所述一个或多个设备相关命令的响应,其满足网络命令;
向所述存储器网络接口发送对所述网络命令的所述向应。
2.按照权利要求1的计算机结构,其中:
所述一组网络命令包括读取网络命令。
3.按照权利要求1的计算机结构,其中:
所述一组网络命令包括读取网络命令和写入网络命令。
4.按照权利要求1的计算机结构,其中:
所述一组网络命令包括与网络连接相关的命令。
5.按照权利要求4的计算机结构,其中:
所述涉及网络连接的命令包括用于中断网络连接的中断连接命令。
6.按照权利要求4的计算机结构,其中:
所述涉及网络连接的命令包括ping命令,用于确定网络等待时间。
7.按照权利要求1的计算机结构,其中:
所述具有块存储器处理器的存储器操作系统包括管理程序,它能够建立工作队列和工作线程。
8.按照权利要求1的计算机结构,其中:
所述具有块存储器处理器的存储器操作系统包括请求指导器。
9.按照权利要求1的计算机结构,其中:
所述具有块存储器处理器的存储器操作系统包括请求监听器。
10.按照权利要求1的计算机结构,还包括:
内存,包括:
具有主机块存储器处理器的主机操作系统,用于在主计算机中实现,所述附加在网络上的存储器相对于所述主计算机为远程的,其中具有主机块存储器处理器的所述主机操作系统能够:
从在主计算机上执行的应用接收文件命令;
将文件命令翻译为与所述数据块存储器的类型无关的一组网络命令的一个网络命令;
向与主计算机相关联的网络接口发送所述网络命令,用于按照分组协议通过网络基础结构来传送;
从网络接口接收对前一个发送的网络命令的响应;
如果适当的话,向应用发送所述响应来作为对于文件命令的至少部分回答。
11.按照权利要求1的计算机结构,还包括:
主计算机,相对于它所述附加在网络上的存储器被认为是远程的,所述主计算机包括:
主机网络接口,用于按照分组协议向网络基础结构发送和从网络基础结构接收通信;
具有主机块存储器处理器的主机操作系统,它能够:
从在主计算机上执行的应用接收文件命令;
将文件命令翻译为与所述数据块存储器的类型无关的一组网络命令的一个网络命令;
将所述网络命令发送到所述主机网络接口,用于按照分组协议通过网络基础结构来传送;
从所述主机网络接口接收对前一个发送的网络命令的响应;
如果适当的话,向应用发送所述响应来作为对于文件命令的至少部分回答。
12.按照权利要求11的计算机结构,还包括:
网络基础结构,连接到所述存储器网络接口和所述主机网络接口,其中所述网络基础结构能够按照分组协议操作。
13.一种计算机结构,包括:
主计算机,其相对于附加在网络上的存储器被远程定位,包括:
主机网络接口,用于按照分组协议向网络基础结构发送和从网络基础结构接收通信;
具有主机块存储器处理器的主机操作系统,它能够:
从在主计算机上执行的应用接收文件命令;
将文件命令翻译为相对于数据块存储器为与接口无关的一组网络命令的一个网络命令;
向所述主机网络接口发送所述网络命令,用于按照分组协议通过网络基础结构来传送;
从所述主机网络接口接收对前一个发送的网络命令的响应;
如果适当的话,向应用发送所述响应来作为对于文件命令的至少一个部分回答。
14.按照权利要求13的计算机结构,还包括:
附加在网络的存储器,包括:
存储器网络接口,能够按照分组协议向网络基础结构发送/从网络基础结构接收通信;
块存储器接口,能够向数据块存储器发送/从数据块存储器接收通信;
存储器操作系统,具有块存储器处理器,它能够:
从所述存储器网络接口接收相对于数据块存储器与接口无关的一组网络命令的一个网络命令;
为了执行所述网络命令,产生用于数据块存储器的一个或多个设备相关命令;
向所述块存储器接口发送所述一个或多个设备相关命令的每个;
从所述块存储器接口接收对于所述一个或多个设备相关命令的响应,其满足网络命令;
向所述存储器网络接口发送对所述网络命令的所述响应。
15.按照权利要求14的计算机结构,还包括:
网络基础结构,连接到所述存储器网络接口和所述主机网络接口,其中所述网络基础结构能够按照分组协议操作。
16.一种用于在主计算机和具有相对于主计算机为远程的数据块存储器的附加在网络上的存储器之间通信的方法,包括:
提供一种网络基础结构,它在主计算机和附加在网络上的存储器之间延伸,但不必须到达主计算机,所述附加在网络上的存储器能够按照分组协议传送通信;
使用该网络基础结构在主计算机和附加在网络上的存储器之间传送网络命令,其中所述网络命令是在用于附加在网络上的存储器的数据块存储器的命令全集的子集内的命令;
其中所述网络命令是通过主计算机的主机操作系统产生的,其中所述主机操作系统将从在主计算机上执行的应用接收的文件命令翻译成网络命令;
其中所述网络命令能够由附加在网络上的存储器处理,以产生用于数据块存储器的一个或多个器件专有命令。
17.按照权利要求16的方法,还包括:
对于用于在附加在网络上的存储器中的数据块存储器的命令全集,在主计算机和附加在网络上的存储器之间仅仅传送对于在数据块存储器的命令全集的子集内的命令的响应。
18.按照权利要求16的方法,其中:
所述子集包括读取命令和写入命令。
CNB028194454A 2001-08-06 2002-07-24 计算机网络内的数据块存储 Expired - Fee Related CN100399305C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/682,209 2001-08-06
US09/682,209 US6839706B2 (en) 2001-08-06 2001-08-06 Block data storage within a computer network

Publications (2)

Publication Number Publication Date
CN1561489A CN1561489A (zh) 2005-01-05
CN100399305C true CN100399305C (zh) 2008-07-02

Family

ID=24738682

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028194454A Expired - Fee Related CN100399305C (zh) 2001-08-06 2002-07-24 计算机网络内的数据块存储

Country Status (9)

Country Link
US (1) US6839706B2 (zh)
EP (1) EP1423791A4 (zh)
JP (1) JP2005527007A (zh)
KR (1) KR20040035723A (zh)
CN (1) CN100399305C (zh)
AU (1) AU2002322624B2 (zh)
BR (1) BR0211721A (zh)
CA (1) CA2455641A1 (zh)
WO (1) WO2003015332A2 (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444393B2 (en) 2001-10-30 2008-10-28 Keicy K. Chung Read-only storage device having network interface, a system including the device, and a method of distributing files over a network
US7549080B1 (en) * 2002-08-27 2009-06-16 At&T Corp Asymmetric data mirroring
US7565408B2 (en) * 2003-03-20 2009-07-21 Dell Products L.P. Information handling system including a local real device and a remote virtual device sharing a common channel
US7735095B2 (en) * 2003-05-02 2010-06-08 Microsoft Corporation Network device drivers using a communication transport
JP4297747B2 (ja) * 2003-08-06 2009-07-15 株式会社日立製作所 ストレージ装置
ATE436047T1 (de) * 2003-12-30 2009-07-15 Wibu Systems Ag Verfahren zum steuern eines datenverarbeitungsgeräts
JP4572082B2 (ja) * 2004-03-22 2010-10-27 Necシステムテクノロジー株式会社 Nasディスクアレイ装置
US8914459B2 (en) * 2004-04-14 2014-12-16 Hewlett-Packard Development Company, L.P. Redirecting I/O request to remote networked peripheral device
JP4485256B2 (ja) * 2004-05-20 2010-06-16 株式会社日立製作所 記憶領域の管理方法及び管理システム
US20050289218A1 (en) * 2004-06-28 2005-12-29 Rothman Michael A Method to enable remote storage utilization
JP4526337B2 (ja) * 2004-09-15 2010-08-18 株式会社日立製作所 データ管理システム及び方法
US20060129987A1 (en) * 2004-12-15 2006-06-15 Patten Benhase Linda V Apparatus, system, and method for accessing management data
US7797288B2 (en) * 2004-12-27 2010-09-14 Brocade Communications Systems, Inc. Use of server instances and processing elements to define a server
CN101268455B (zh) * 2005-08-10 2010-11-03 新加坡科技研究局 无线传输协议
US8447731B1 (en) * 2006-07-26 2013-05-21 Nextpoint, Inc Method and system for information management
JP4963892B2 (ja) * 2006-08-02 2012-06-27 株式会社日立製作所 仮想ストレージシステムの構成要素となることが可能なストレージシステムの制御装置
US8429328B2 (en) * 2007-06-29 2013-04-23 Sandisk Technologies Inc. System for communicating with a non-volatile memory storage device
US8433842B2 (en) * 2007-06-29 2013-04-30 Sandisk Technologies Inc. Method for communicating with a non-volatile memory storage device
US8769185B2 (en) 2007-10-23 2014-07-01 Keicy Chung Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface
KR100952599B1 (ko) * 2007-11-16 2010-04-15 삼성에스디에스 주식회사 로컬디스크를 캐쉬로 이용하는 사용자 컴퓨터, 그를이용하는 방법 및 하이브리드 네트워크 스토리지 시스템
JP2009258825A (ja) * 2008-04-14 2009-11-05 Hitachi Ltd ストレージシステム、仮想化装置、及び計算機システム
US8738711B2 (en) * 2009-11-03 2014-05-27 Oto Technologies, Llc System and method for redirecting client-side storage operations
US8527749B2 (en) * 2009-11-11 2013-09-03 International Business Machines Corporation User device, computer program product and computer system for system for secure network storage
US20110145723A1 (en) * 2009-12-16 2011-06-16 Oto Technologies, Llc System and method for redirecting client-side storage operations
US8499012B1 (en) * 2010-06-18 2013-07-30 Applied Micro Circuits Corporation System and method for attached storage stacking
US10019203B1 (en) * 2013-05-30 2018-07-10 Cavium, Inc. Method and system for processing write requests
US9923664B2 (en) * 2014-10-01 2018-03-20 Samsung Display Co., Ltd. Common-mode signaling for transition encoding
US9674275B1 (en) * 2015-03-16 2017-06-06 Amazon Technologies, Inc. Providing a file system interface to network-accessible computing resources
US10348562B2 (en) * 2016-01-11 2019-07-09 Netapp, Inc. Methods and systems for selecting compatible resources in networked storage environments
US10296264B2 (en) * 2016-02-09 2019-05-21 Samsung Electronics Co., Ltd. Automatic I/O stream selection for storage devices
US9942323B2 (en) * 2016-05-23 2018-04-10 Velostrata Ltd. Workload migration across a hybrid network
US10200471B2 (en) * 2016-05-23 2019-02-05 Google Llc Workload migration across a hybrid network
US10389810B2 (en) * 2016-11-02 2019-08-20 Commvault Systems, Inc. Multi-threaded scanning of distributed file systems
US10922189B2 (en) * 2016-11-02 2021-02-16 Commvault Systems, Inc. Historical network data-based scanning thread generation
CN108111560B (zh) * 2016-11-24 2020-09-11 中国科学院声学研究所 一种线速存储网络分组的系统及方法
US10585624B2 (en) * 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
US10534751B1 (en) 2018-09-11 2020-01-14 Seagate Technology Llc Metadata space efficient snapshot operation in page storage

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1081007A (zh) * 1992-06-19 1994-01-19 西屋电气公司 实时数据图象网络系统及操作该系统的方法
WO2000010095A1 (en) * 1998-08-14 2000-02-24 Intel Corporation Striping packets of data across multiple virtual channels
WO2000023901A1 (en) * 1998-10-19 2000-04-27 Intel Corporation Raid striping using multiple virtual channels

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710908A (en) * 1995-06-27 1998-01-20 Canon Kabushiki Kaisha Adaptive network protocol independent interface
US5754841A (en) * 1995-10-20 1998-05-19 Ncr Corporation Method and apparatus for parallel execution of user-defined functions in an object-relational database management system
US5930786A (en) * 1995-10-20 1999-07-27 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US5689698A (en) * 1995-10-20 1997-11-18 Ncr Corporation Method and apparatus for managing shared data using a data surrogate and obtaining cost parameters from a data dictionary by evaluating a parse tree object
US5991813A (en) * 1997-05-16 1999-11-23 Icon Cmt Corp. Network enabled SCSI interface
US6052685A (en) * 1997-08-13 2000-04-18 Mosaix, Inc. Integration of legacy database management systems with ODBC-compliant application programs
US6493804B1 (en) * 1997-10-01 2002-12-10 Regents Of The University Of Minnesota Global file system and data storage device locks
US5996024A (en) 1998-01-14 1999-11-30 Emc Corporation Method and apparatus for a SCSI applications server which extracts SCSI commands and data from message and encapsulates SCSI responses to provide transparent operation
US6470397B1 (en) * 1998-11-16 2002-10-22 Qlogic Corporation Systems and methods for network and I/O device drivers
CA2284947C (en) * 1999-10-04 2005-12-20 Storagequest Inc. Apparatus and method for managing data storage
US6862593B2 (en) * 2002-05-17 2005-03-01 Sun Microsystems, Inc. Separation of database transactions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1081007A (zh) * 1992-06-19 1994-01-19 西屋电气公司 实时数据图象网络系统及操作该系统的方法
WO2000010095A1 (en) * 1998-08-14 2000-02-24 Intel Corporation Striping packets of data across multiple virtual channels
WO2000023901A1 (en) * 1998-10-19 2000-04-27 Intel Corporation Raid striping using multiple virtual channels

Also Published As

Publication number Publication date
EP1423791A4 (en) 2010-01-13
EP1423791A2 (en) 2004-06-02
AU2002322624B2 (en) 2008-11-06
WO2003015332A3 (en) 2003-12-04
CA2455641A1 (en) 2003-02-20
US20030028731A1 (en) 2003-02-06
CN1561489A (zh) 2005-01-05
BR0211721A (pt) 2004-11-03
WO2003015332A2 (en) 2003-02-20
KR20040035723A (ko) 2004-04-29
US6839706B2 (en) 2005-01-04
JP2005527007A (ja) 2005-09-08

Similar Documents

Publication Publication Date Title
CN100399305C (zh) 计算机网络内的数据块存储
US6895526B2 (en) System and method for communicating a software-generated pulse waveform between two servers in a network
AU2002322624A1 (en) Block data storage within a computer network
JP3138119U (ja) リモート起動制御装置
EP1168175A2 (en) Data migration method, protocol converter and switching apparatus using it
US8626969B2 (en) Redirection communication
US11461199B2 (en) Redundancy method, device, and system
US20070006020A1 (en) Inter-host data transfer method, program, and system
SG186496A1 (en) Architecture for a universal serial bus-based pc flash disk
JP2012221004A (ja) 並列計算機システム、およびプログラム
CN1985492B (zh) 支持iSCSI读操作和iSCSI烟囱的方法和系统
CN103414579A (zh) 一种适用于云计算的跨平台监控系统及其监控方法
US7640549B2 (en) System and method for efficiently exchanging data among processes
CN111459632B (zh) 一种供终端应用程序调用的串口代理及实现方法
CN108406781B (zh) 一种远程机器人控制系统及控制方法
JP4498389B2 (ja) マルチ・ノードコンピュータシステム
CN109906438B (zh) 处理i/o请求的方法、存储阵列及主机
CN112559461A (zh) 文件传输方法及装置、存储介质及电子设备
CN1976310B (zh) 在网络中通过总线接口进行通信的方法
US11095698B2 (en) Techniques for processing management messages using multiple streams
CN103024087B (zh) 同时支持大容量存储和以太网通信的系统及方法
US7539711B1 (en) Streaming video data with fast-forward and no-fast-forward portions
CN103858091A (zh) 一种存储设备的管理方法及设备
WO2023109554A1 (zh) 分布式系统的数据处理方法、系统、节点和存储介质
US7925758B1 (en) Fibre accelerated pipe data transport

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY

Free format text: FORMER OWNER: LEFTER HAND NETWORK COMPANY

Effective date: 20100122

Owner name: HEWLETT-PACKARAD DEVELOPMENT INC.

Free format text: FORMER OWNER: HEWLETT-PACKARD DEVELOPMENT COMPANY

Effective date: 20100122

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20100122

Address after: California, USA

Patentee after: HEWLETT-PACKARD Co.

Address before: Colorado, USA

Patentee before: LEFTHAND NETWORKS, Inc.

Effective date of registration: 20100122

Address after: Texas, USA

Patentee after: Hewlett-Packard Development Co.,L.P.

Address before: California, USA

Patentee before: Hewlett-Packard Co.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080702

Termination date: 20150724

EXPY Termination of patent right or utility model