CN107967158A - 主动驱动api - Google Patents

主动驱动api Download PDF

Info

Publication number
CN107967158A
CN107967158A CN201710959488.4A CN201710959488A CN107967158A CN 107967158 A CN107967158 A CN 107967158A CN 201710959488 A CN201710959488 A CN 201710959488A CN 107967158 A CN107967158 A CN 107967158A
Authority
CN
China
Prior art keywords
data storage
application
storage drive
dsd
applet
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.)
Granted
Application number
CN201710959488.4A
Other languages
English (en)
Other versions
CN107967158B (zh
Inventor
C·杨
J·D·特兰探
T·R·费尔德曼
B·D·怀亚特
D·B·安德森
R·J·文卡
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.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
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 Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of CN107967158A publication Critical patent/CN107967158A/zh
Application granted granted Critical
Publication of CN107967158B publication Critical patent/CN107967158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了主动驱动API。一种应用编程接口(API),所述API使得能够将应用作为一个或多个键值对象安装在诸如硬盘驱动器、固态驱动器或混合驱动器等数据存储驱动器上。所述API还使得能够在所述数据存储驱动器的受控环境内执行所述应用。

Description

主动驱动API
背景技术
数据存储驱动器通常包括在具有一个或多个主机计算机的系统中。数据存储驱动器的示例包括硬盘驱动器(HDD,其为包含旋转盘和可移动读/写头的机电设备)、固态驱动器(SSD,其使用存储器芯片并且不包含移动部件)以及混合驱动器(其将HDD和SSD的特征组合为一个单元)。
在当前系统中,从数据存储驱动器读取数据并发送至主机计算机。然后在所述主机的计算环境内对数据进行处理。
发明内容
本公开涉及一种应用编程接口(API),所述应用编程接口使得能够在数据存储驱动器上安装并执行应用。
在一个实施例中,所述API(本文中被称为主动驱动API(Active Drive API))使得能够将应用作为一个或多个键值对象安装在所述数据存储驱动器上,并且使得能够在所述数据存储驱动器的受控环境内执行所述应用。
本发明内容并不旨在描述主动驱动API的每个公开的实施例或每个实施方式。在进行此描述时,许多其他新颖的优点、特征和关系将变得明显。以下附图和描述更具体地举例说明这些实施例。
附图说明
图1A是系统的说明性操作环境的框图,在所述操作环境中,可以采用主动驱动应用编程接口(API)。
图1AA是根据一个实施例的数据存储驱动器的分解视图。
图1AAA是存储机架的一部分的透视图,所述存储机架包括多个数据存储驱动器可以安装在其中的存储室。
图1B是系统的可以采用主动驱动API的另一说明性操作环境的框图。
图1C是系统的可以采用主动驱动API的又另一说明性操作环境的框图。
图1D是框图,展示了可以存储在图1A至图1C的系统中的数据存储驱动器中的对象的示例结构。
图1E是框图,展示了可以在图1A至图1C的系统中的数据存储驱动器中进行存储、安装和执行的小应用程序对象的示例结构。
图2A和图2B是采用主动驱动API命令的系统的说明性实施例的简图。
图3A至图3E是图解图示,示出了主动驱动API命令的示例。
图4是方法实施例的流程图。
具体实施方式
以下所描述的实施例涉及一种应用编程接口(API),所述应用编程接口使得能够在数据存储驱动器上安装并执行应用。所述API(本文中被称为主动驱动API)使得能够将应用(例如,小应用程序或小型应用)作为一个或多个键值对象安装在所述数据存储驱动器上,并且使得能够在所述数据存储驱动器的受控环境内执行所述小应用程序。在提供关于基于对象的主动驱动API的命令的细节之前,以下提供了对说明性操作环境的描述。
图1A示出了可以结合本文中所公开的某些特定环境的说明性操作环境。图1A中所示的操作环境仅用于说明的目的。本公开的实施例不限于任何特定操作环境,诸如图1A所示的操作环境。本公开的实施例以图示的方式在任何数量的不同类型的操作环境中被实践。应当注意的是,相同的参考标记在不同的附图中用于相同或相似的元素。
图1A描绘了可以包括至少一个主机102和至少一个数据存储驱动器(datastorage drive,DSD)104的系统100。主机102通常是具有计算能力的电子设备,所述主机利用分别存储的数据来执行一个或多个任务。主机102还可以被称为主机系统或主机计算机。主机102可以是一个或多个计算机或者相似的电子设备,诸如超级计算机、台式计算机、膝上型计算机、服务器、平板计算机、通信系统、音乐播放器、另一种电子设备或其任何组合。主机102可以包括处理器106(例如,中央处理单元)和存储器108(例如,包括只读存储器(ROM)、随机存取存储器(RAM)等的系统存储器),所述存储器通信地耦合至处理器106。计算机可执行指令可以在由处理器106执行之前存储在存储器108中。
如之前指示的,DSD 104可以是硬盘驱动器(HDD,其是包含旋转数据存储磁盘和可移动读/写头的机电设备)、固态驱动器(SSD,其使用电子存储器芯片(例如,一个或多个固态快速闪存芯片)并且不包含移动部件)、或者混合驱动器(其将HDD和SSD的特征组合为一个单元)。因此,DSD 104可以包括非易失性介质112(例如,一个或多个数据存储磁盘、一个或多个快速闪存芯片、StRAM、RRAM、3D Xpoint存储器等)、易失性存储器114(诸如随机存取存储器)以及一个或多个处理器116。在一些实施例中,处理器116可以通过专门设计的协处理电路系统(未示出)来得到增强以便更好地执行具体的计算复杂任务,诸如浮点数学、擦除编码、加密、图案搜索等。计算机可执行指令可以在由(多个)处理器116执行之前存储在非易失性介质112上和易失性存储器114中。(多个)处理器116、非易失性介质112和易失性存储器114用于执行DSD的基本存储操作(例如,存储用户数据),并且还包括在DSD 104内提供应用执行环境的固件和软件。非易失性介质112、易失性存储器114和(多个)处理器116包含在机械组件(诸如壳体118)中。在一些实施例中,主机102和DSD 104均可以是单个单元的一部分,诸如存储机架(例如,具有其壳体118的整个DSD 104被安装在还包含主机102的存储外壳内)。在其他实施例中,DSD 104和主机102可以间隔开,并且DSD 104甚至可以位于远离主机102。以下结合图1AA简要描述了具有壳体(诸如118)的DSD 104的一个示例。
图1AA提供了具有示例壳体或外壳118的HDD 104的分解视图。如所示出的,外壳118包括顶盖120、基座架122和基座底124。在图1AA中示出的实施例中,基座架122和基座底124是两个单独件。然而,在其他实施例中,基座架122和基座底124可以是单件。外壳118(包括基座架122、基座底124和顶盖120)可以附接至多个不同形状因数(包括例如,HDD的2.5”形状因数和3.5”形状因数)中的任一个。外壳118结合HDD内部件126和逻辑板128提供HDD104。如在图1AA中可见的,处理器116、第一非易失性介质112A和易失性存储器114包括在板128上。第一非易失性介质112A可以包括电子存储器,所述电子存储器在一些实施例中可以用作非易失性高速缓存存储器。存储磁盘(其属于HDD内部件126的一部分)构成第二非易失性介质112B,所述第二非易失性介质与第一非易失性介质112A组成(图1A的)非易失性介质112。
返回参考图1A,可见的是,系统(诸如100)中可以具有多个DSD(例如,104、104A、104B等)。多个DSD 104、104A、104B等(其可以各自单独容纳在图1AA中所示的壳体(诸如118)中)可以安装在存储机架中。以下结合图1AAA简要描述了存储机架的一个示例。
图1AAA提供存储机架130的一部分的透视图,所述存储机架包括图1A和图1AA中所示类型的多个DSD(例如,104、104A、104B等)可以安装在其中的存储室132。如所展示的,存储机架130可以包括导轨组件134,所述导轨组件使得能够从机架136(例如,19英寸的机架)中抽出存储室132,并且可以通过使得易于访问存储室132来提升存储室盖138。存储室132可以包括用于多个DSD(例如,图1A的104、104A、104B等)的多个底板,诸如HDD(例如,3.5英寸的HDD)、SDD、混合驱动器等。如在图1AAA中进一步展示的,导轨组件134可以进一步包括电缆管理系统140,所述电缆管理系统用于管理在存储室132的末端(与面板142相对)连接至母板上的适当电连接器或硬件接口的一条或多条电缆。在图1AAA的实施例中,技术人员可以容易地替换图1A的DSD 104、104A、104B等中的任一个(其可能在预期的系统寿命器件磨损或发生故障)。
如之前结合图1A和图1AA的实施例所描述的,(多个)处理器116、非易失性介质112和易失性存储器114包含在单独DSD 104的外壳118内,并且既执行DSD的基本存储操作又在DSD 104内提供应用执行环境。然而,在一些实施例(图1B和图1C中示出的)中,外壳118内的部件(例如,(多个)处理器116、非易失性介质112和易失性存储器114)可以主要被配置用于提供基本存储操作,并且应用执行部件117可以包括在外壳118的外部以便为可以利用DSD104内的数据的小应用程序提供应用执行环境。应用执行部件117可以包括一个或多个微处理器、存储器和固件的组合,所述应用执行部件使得能够安装和执行小应用程序。在这种实施例中,(多个)应用执行部件117可以包括在(图1AAA的)诸如132的存储室内,所述存储室容纳多个DSD。应当注意的是,应用执行部件117并非任何主机计算机的一部分。
在一些实施例中,单独的应用执行部件可以耦合至每个单独的DSD。图1B中示出了这种实施例。在图1B的实施例中,应用执行部件117经由合适的接口耦合至DSD 104,并且为存储在DSD 104内的小应用程序提供应用执行环境。类似地,应用执行部件117A耦合至DSD104A,并且应用执行部件117B耦合至DSD 104B。部件117A和部件117B分别为存储在DSD104A和DSD 104B内的小应用程序提供应用执行环境。
在替代性实施例中,一个应用执行部件可以耦合至多个DSD。图1C中示出了这种实施例。在图1C的实施例中,应用执行部件117耦合至DSD 104、104A和104B,应用执行部件117A耦合至DSD 104C、104D和104E,并且应用执行部件117B耦合至DSD 104F和104G。在此实施例中,应用执行部件117为存储在DSD 104、104A和104B内的小应用程序提供应用执行环境。类似地,存储在DSD 104C、104D和104E中的小应用程序可由应用执行部件117A来执行,并且存储在DSD 104F和104G中的小应用程序可由应用执行部件117B来执行。
通常,针对以上所述的实施例中,任何合适的光学、有线、或无线连接技术可以用于连接系统100的不同部件。在一些实施例中,可以包括网络交换机构(在图1A、图1B和图1C中通过参考标记110来指示)以提供不同部件之间的通信。为了简单起见,示例连接技术在以下被描述以用于图1A中所示的配置,并且不包括对与图1B和图1C的应用执行部件117的连接的描述。然而,应当注意的是,以下所提供的示例还应用于图1B和图1C中所示的配置。
如以上所指示的,主机102和DSD 104、104A和104B等可以通过光学、有线或无线连接的方式进行连接,例如通过局域网(local area network,LAN)或广域网(wide areanetwork,WAN)。在一些实施例中,DSD 104可以通过LAN或WAN的方式连接至多个主机计算机102、102A、102B等。示例可以包括允许由多个客户端同时进行访问的以太网网络。在一些实施例中,DSD 104、104A、104B等可以通过一个或多个接口同时连接至主机102、102A、102B等。例如,DSD 104、104A、104B等可以具有用于连接至主机102、102A、102B等的多个以太网接口。在其他实施例中,DSD 104、104A、104B等可以具有连接至多个主机(诸如102、102A和102B)的单个接口。例如,交换机构110可以用于调节多个主机102、102A和102B之间的访问。设备(诸如DSD 104和主机102、102A、102B等)可以具有可本地或通过互联网访问的互联网协议(Internet Protocol,IP)地址。在一些实施例中,DSD 104可以能够在网络上访问除主机设备102、102A和102B之外的其他DSD 104A、104B等。
常规存储接口(诸如SAS、SATA和NVMe)还可以用于在主机102与DSD 104之间进行通信。接口和协议的混合物是可能的。例如,可以经由PCIe总线(未示出)通过以太网网络向和从主机102、向附接至处理器的以太网端口发送SCSI命令。然后所述处理器可以通过PCIe总线将所述命令向前发送至SAS主机总线适配器,所述SAS主机总线适配器通过SAS链路将所述命令发送至DSD 104。
在本公开的实施例中,源自主机102的小应用程序可以存储在DSD 104中。如以下将进一步详细描述的,所述小应用程序中的每个小应用程序可以被组织为一组键值对象。所述组键值对象(例如,构成应用的一个或多个键值对象)在本文中被称为小应用程序对象。以下进一步详细描述了键值对象和小应用程序对象两者。
(图1A的)DSD 104和(图1B和图1C的)的应用执行部件117支持主动驱动API。如以下将进一步详细描述的,主机102利用主动驱动API以便在(图1A的)DSD 104中以及在(图1B和图1C的)应用执行部件117中安装并执行(多个)小应用程序对象。虽然在一些实施例中主动驱动API是基于对象的,但是基于对象的API的使用不是限制性的。例如,在替代性实施例中,相反,DSD 104可以使用逻辑块地址的文件或链接表。
主机102和DSD 104通过其可以进行通信以便存储和执行小应用程序对象的接口的示例包括以太网、SAS、SATA、或PCIe连接。在一些实施例中,主动驱动API命令可以通过翻译或中介层或者桥控制器(在图1A、图1B和图1C中未单独示出)被翻译或封装成其他命令协议,诸如SAS、SATA、NVMe等。在其他实施例中,可将主动驱动API命令直接转换成低级操作以便控制DSD 104功能。在提供关于主动驱动API命令的细节之前,以下描述了示例键值对象和小应用程序对象的内容。
图1D描绘了可以与键值对象相关联的字段的示例,所述键值对象在本文中可以被简单称为“对象”。每个对象150可以包括对所述对象进行标识的键152。对象150还可以包括值154,所述值可以是与从客户端或主机接收的键相关联的数据(例如,用户数据、可执行应用代码或中间对象代码)。对象150还可以包括元数据156,所述元数据可以包括与对象150相关联的一组属性,标识访问权限或者标识例如其他附近的对象。
元数据156可以包括用于控制对对象150进行访问的字段,诸如访问标签或“版本”字段158,所述字段可在多个客户端可能同时访问异步连接时使对象保持同步。在一些实施例中,对象的元数据156还可以包括对象代码的散列160、用于创建散列160的散列算法161、密码键164、访问控制列表(access control list,ACL)162以便指定访问权限(例如,用于指定哪些客户端可访问对象)、下一对象170或上一对象168的标识符(例如,根据基于键值的对照顺序)、或其他相关信息。
如所指定的,访问控制列表(ACL)可以限制哪些客户端或主机可访问对象,并且可以限制完全由客户端或主机对对象执行任何动作。在一些实施例中,可以维持每个对象的ACL,从而列出具有访问权限的客户端或主机。在一些实施例中,DSD 104可以维持每个客户端或主机的ACL,所述ACL指示客户端或主机有权访问哪些键范围或对象。在一些实施例中,DSD 104可以维持将客户端或主机与相关联可访问对象进行链接的ACL。
如以上所指示的,构成小应用程序的所述组键值对象在本文中被称为小应用程序对象。图1E是小应用程序对象172的一个示例的图解图示。在图1E中示出的示例中,小应用程序对象172是N个键值对象的序列。所述N个键值对象中的第一键值对象由150A来指示,并且包括键钥152A、值154A和元数据156A。最后或第n个键值对象由150N来指示,并且包括键152N、值154N和元数据156N。可以以任何适合的方式生成键152A至152N。例如,在一些实施例中,可以独立生成每个键152A……152N。在其他实施例中,可以例如通过将合适的前缀添加到键152A来生成除第一键152A之外的键。在一些实施例中,算法可以将第一键152A用作输入并且根据第一键152A生成剩余的键。基于所使用的键生成技术,小应用程序对象172可以是已知的或者由所有键152A至152N的列表来标识,或者由第一键152A来标识,所述第一键可以用作小应用程序对象172的根或句柄。
如之前结合图1D所指出的,ACL可以限制哪些客户端或主机可访问对象。由于小应用程序对象172可以包括多个对象,因此所述多个对象150A至150N中的每个对象可以包括相同的ACL元数据或者不同的ACL元数据。在一些实施例中,小应用程序对象172的ACL由小应用程序对象172的第一对象150A的ACL元数据来指示,并且小应用程序对象172的剩余对象的ACL元数据被忽略。在替代性实施例中,小应用程序对象172的所有对象150A至150N的ACL元数据被考虑在内以便确定主机或客户端对小应用程序对象172进行访问。在特定实施例中,对小应用程序对象172进行访问限于有权访问小应用程序对象172的对象150A至150N中的每一个对象的主机或客户端。通常,任何合适的技术可以用于控制主机或客户端对小应用程序对象172进行访问。
以下结合图2A和图2B描述了如何在计算环境中采用存储和执行DSD中的应用的能力以帮助解决顾客用于存储信息并管理其存储的需求的示例。
图2A描绘了采用主动驱动API命令的系统200的示例实施例。如图2A中可见的,系统200包括一个或多个数据源202(例如,商店内的收银机、航空订票系统、电信交换装备、传感器等)、(所述一个或多个数据源202所附接的)主机计算机102、网络(例如,以太网)206和DSD池104,所述DSD经由网络206连接至主机计算机102。应当指出的是,虽然所有的DSD 104被示出为物理接近,但是它们可以物理地存储在单独的外壳或者甚至单独的建筑物位置中。
在操作期间,主机计算机102从(多个)数据源202接收数据并且将所述数据写入文件或对象。更具体地,主机计算机102包括具有应用程序210的计算机软件208,所述计算机软件将所述数据写入文件或对象。计算机软件208附加地包括将所述数据转换成一个或多个键值对象的文件系统或对象存储系统212。适合用于元件212的对象存储系统的示例包括由Inktank storage公司生产的以及由SwiftStack公司生产的系统212还包括用于将不同的对象链接至DSD 104中的特定DSD的映射逻辑204。文件系统或对象存储系统212对用于存储(多个)对象的一个或多个对象DSD 104进行标识。文件系统212然后使用存储命令(例如,“Put”命令,以下进一步对其进行描述)将(多个)对象存储在对应的经标识DSD 104中。应当指出的是,可以利用冗余(诸如RAID或擦除编码)来存储对象以便防止可能的DSD部件故障。然后可以以任何合适的方式对采用键值对象形式而被存储的数据进行分析。结合图2B提供了一个数据分析示例。
数据的拥有者(在图2B中由参考标记214来指示)可能希望并行地对许多数据执行处理,例如,算出特定的一天(例如,周一)以及那天的特定时间(例如,下午5点之和)售出多少物品。数据拥有者214可以写入计算机程序以便执行查询并计算销售数据的总数。那个程序在计算机软件208内被示出并且由参考标记216来指示。拥有者214(借助于编译器218)将程序216编译成中间对象文件,所述中间对象文件被称为小应用程序对象并且由参考标记220来指示。适用于元件的编译器218的示例为由伊利诺伊大学、苹果公司或其他机构开发的CLANGTM编译器。可以将小应用程序对象220分配至保持数据的一些或全部DSD 104以供处理。在图2A的实施例中,计算机程序或脚本(被称为分配脚本并且由参考标记222来指示)使用Put命令223将小应用程序对象220分配至保持数据的全部DSD 104以供处理。分配脚本222可以经由主动驱动API命令中的小应用程序管理命令(例如,管理小应用程序执行命令,以下进一步对其进行描述)来发起对小应用程序对象220的执行。在一个实施例中,在(图1A的)DSD的(多个)处理器116内或者在(图1B和图1C)的应用执行部件117内,在低级解译器虚拟机(诸如来自伊利诺伊大学/LLVM基金公司的)中执行所述小应用程序,并且绑定至所述低级解译器虚拟机的库可向应用提供对存储在DSD内的本地数据的访问。计算机程序或用户可以监测执行状态或者经由主动驱动API命令的另一小应用程序管理命令225(例如,管理小应用程序获得进程状态命令,以下进一步对其进行描述)来获得执行状态信息。
计算机程序的结果可以本地地(例如,作为键值对象)存储在对应的(多个)DSD104上,被发送至一个或多个调用计算机(例如,主机计算机102)、被发送至DSD 104等中的一个或多个不同的DSD。例如,对包括所述结果的键值对象进行存储可以通过执行对应的(多个)DSD 104内的Put命令来实施以便本地地存储所述结果。在另一示例中,所述小应用程序可以包括用于执行将包括所述结果的本地生成的(多个)键值对象存储到非本地DSD104中的Put命令的指令。在又另一示例中,一旦完成对小应用程序的执行,则可以经由到统一资源指示符(Uniform Resource Indicator,URI)的通知消息将由小应用程序产生的结果发送至一组不同的节点(例如,主机和/或DSD),所述统一资源指示符包括为所述结果的潜在接收者的所述组不同节点的标识信息(例如,统一资源定位符(Uniform ResourceLocator,URL))。在一些实施例中,在执行管理小应用程序主动驱动API命令(例如,对管理小应用程序执行命令的响应)时,由对应的(多个)DSD 104发送的响应消息可以包括结果的指示符。以下结合图3A至图3E提供了主动驱动API命令的细节。
图3A是根据一个实施例的采用主动驱动API命令集和函数的系统300的简化框图图示。应当指出的是,主动驱动API是放置在传输层(例如,具有传输层安全性(例如,安全套接层(SSL))的传输控制协议(TCP))上的应用级协议。
系统300包括可以在主机102(在图3A中未示出)上运行的应用302、主动驱动API304和DSD 104。应当指出的是,为了简单起见在图3A中仅示出了一个应用302和一个DSD104,并且未示出例如可以处于系统300内的任何附加DSD。如之前所指示的,主动驱动API304支持以下功能:允许应用302将小应用程序作为一个或多个键值对象安装在DSD 104上的功能,并且使得能够在DSD 104的受控环境内执行小应用程序。具体地,通过命令集的方式来支持这种功能,所述命令集可以包括可以由应用302发送至DSD 104的请求命令或请求消息306、以及可以由DSD 104发送至应用302的相应响应消息308。在一些实施例中,命令/消息306、308可以具有预定义结构,其中某些位具有限定的逻辑意义,诸如指定命令或修饰符的类型。在其他实施例中,命令/消息306、308可以以其他方式被构建(诸如具有对多个下一位的意义或字段进行标识的位),从而使得未使用的潜在字段可以不包括在命令/消息306/308中。在一些实施例中,协议缓冲器(诸如来自谷歌公司的协议缓冲器)可以用于数据(例如,用户数据、中间对象代码和/或可执行应用代码)通信。在一些实施例中,可以使用变体数据类型来构建命令/消息306/308中的数据(例如,用户数据、中间对象代码和/或可执行应用代码)。
在图3A中,示例请求消息/请求命令306包括数据完整性/认证字段310、命令长度字段312、值长度字段313、命令头314、命令主体316和小应用程序值或小应用程序数据字段318。以下简要描述了这些不同的字段。
在一些实施例中,数据完整性/认证字段310可以用于结合密码键来传输涉及密码散列函数的键控散列消息认证码(HMAC)。因此,在这种实施例中,字段310可以用于同时验证数据完整性以及对消息进行认证两者。通常,字段310可以用于包括任何合适的数据完整性/认证信息。
命令长度字段312可以用于包括例如请求消息/命令306中的多个字节。通常,命令长度字段312可以包括请求消息/命令306的长度的任何合适的指示符。类似地,值长度字段313可以包括包含在小应用程序值字段318中的数据的长度。
命令头314可以用于传输与所述命令相关的标识信息。例如,命令头314可以包括向DSD 104指示所述命令涉及存储小应用程序、管理所述小应用程序等的信息。以下结合图3B至图3E进一步描述了不同类型的命令的示例。通常,这种信息可以标识DSD 104在接收命令时待由其执行的操作的类型。
命令主体316可以包括对小应用程序进行标识的信息。例如,命令主体316可以包括对构成那个小应用程序的对象进行标识的一个或多个键。命令主体316还可以包括可能需要执行所述命令的任何参数。
小应用程序值字段318可以包括中间对象代码和/或可执行应用代码。所述小应用程序值字段可以是任何大小。在涉及对已经存储在DSD 104上的小应用程序对象实施动作的请求消息/命令306中,小应用程序值字段318可以具有0字节的空尺寸值。
如以上所指示的,每个请求消息/命令306可以具有相应的响应消息308。响应消息308可以包括对请求消息/命令306进行确认的信息以及指示例如所述命令是否在DSD 104上被成功执行的状态信息。如在图3A中可见的,响应消息308的结构可以类似于请求消息/命令306的结构。然而,响应消息308可以附加地包括状态代码字段320,所述状态代码字段由DSD 104使用以便包括命令状态信息。为了简洁起见,不再重复对消息306和308两者的公共字段的描述。
应当指出的是,在一些实施例中,主动驱动API的命令集还可以包括对所述命令的修改符,诸如用于对所述命令的行为进行修改的限定符、涉及对DSD104进行管理和监测的附加命令、或其他修改符。限定符可以是待执行的操作、待执行的子操作、待执行的附加操作或其任何组合的变化的指示符。
图3B是展示了Put请求消息/命令322和相应响应消息324的系统300的简化框图。如以上所指示的,Put命令可以用于将数据(例如,用户数据、中间对象代码和/或可执行应用代码)存储到DSD 104,诸如通过将键值对象添加到由DSD 104存储的一组对象。如在图3B中可见的,Put请求消息/命令322包括基本上类似于图3A中所示的那些字段的字段。在Put请求消息/命令322中,命令头314可以包括向DSD 104指示所述命令涉及对一个或多个对象进行存储的信息。在图3B中,那个标识信息由Put消息类型326来表示。值字段318包括例如小应用程序的中间对象代码。在Put请求消息/命令322中,命令主体316可以包括对构成那个小应用程序的(多个)对象进行标识的一个或多个键。响应于接收Put请求消息/命令322,DSD 104将中间对象代码存储在例如非易失性介质112中。应当指出的是,在将中间对象代码存储在非易失性介质112中之前,处理器116可以初始地将中间对象代码存储在易失性存储器114中。处理器116然后可以将中间对象代码从易失性存储器114转移至非易失性介质112。
如之前结合图3A通常所描述的,DSD 104中的主动驱动请求消息/命令的完成可以使得将响应消息从DSD 104发送至应用302。从而,如在图3B中可见的,Put请求消息/命令322的完成使得将相应的响应消息324从DSD 104发送至应用302。在响应消息324中,命令头314可以包括向应用302指示消息324是对Put请求消息/命令322的响应的信息。在图3B中,那个标识信息由Put请求消息类型328来表示。利用命令完成状态代码320将响应消息324发送至应用302。
在示例中,Put请求消息/命令322可在信息被存储到非易失性介质112中之前完成(例如,DSD 104可将响应消息324返回至应用302,所述响应消息指示相关联的小应用程序对象已经被成功存储)。例如,一旦小应用程序对象被接收并存储在易失性存储器114中,则DSD 104可以将响应消息324返回至应用302,从而指示Put请求消息/命令322的完成。在另一示例中,Put小应用程序请求/命令322可以包括指示DSD 104等待直到小应用程序对象被存储在非易失性介质112中以便将响应消息324发送至应用302的限定符(未示出)。通过使用不同的限定符,Put请求消息/命令322的其他变化可以是可能的。
通常,可以将小应用程序作为一个或多个对象存储在易失性存储器114和/或非易失性介质112中以用于稍后执行或者在被加载到DSD 104上之后基本上立即运行。为了执行待实施的小应用程序,在一个示例中,构成小应用程序的对象可能需要从易失性存储器114或非易失性介质112中被读取,以可执行形式被汇编,并且被加载到DSD 104内的应用执行环境中。可以在DSD 104中由安装小应用程序主动驱动API函数来实施小应用程序安装相关的功能。在一个示例中,可以由应用302将标识小应用程序的安装小应用程序主动驱动命令(未示出)发送至DSD 104,其响应于接收安装小应用程序命令而执行安装小应用程序功能。DSD 104可以在小应用程序被成功安装之后将响应发送至应用302。所述小应用程序可以准备用于在应用302被通知小应用程序成功安装之后进行执行。
应当指出的是,在一些实施例中,一旦所述小应用程序准备用于执行(例如,以可执行形式被汇编),则可以将可执行形式的小应用程序高速缓存在合适的存储器/介质(例如,非易失性介质112和/或易失性存储器114)中,并且所述高速缓存的可执行小应用程序可以基于需要在DSD 104中运行。因此,在这种实施例中,不必每当需要执行小应用程序时执行安装小应用程序功能。同样,在一些这种实施例中,作为小应用程序安装进程的一部分,用户可以提供链接至DSD 104中的可执行小应用程序的小应用程序名称。用户提供的小应用程序名称然后可以用于调用所述小应用程序。还应当指出的是,在某些实施例中,小应用程序可以被汇编成DSD 104外部(例如,主机计算机102中)的可执行形式,并且然后可以被提供至DSD 104以用于使用合适的命令(例如,Put命令或安装小应用程序命令)进行存储。
图3C是展示了执行小应用程序请求消息/命令330和相应响应消息332的系统300的简化框图。如在图3C中可见的,执行小应用程序请求消息/命令330包括基本上类似于图3A和图3B中所示的那些字段的字段。在执行小应用程序请求消息/命令330中,命令头314可以包括向DSD 104指示所述命令涉及对小应用程序进行管理的信息。在图3C中,那个标识信息由管理小应用程序消息类型334来表示。在执行小应用程序请求消息/命令330中,命令主体316可以限定管理小应用程序消息类型是执行小应用程序类型335,并且可以包括对构成小应用程序的(多个)对象进行标识的一个或多个键。可替代地,所述管理小应用程序消息类型(其为执行小应用程序类型335)可以包括用户提供的小应用程序名称以便对小应用程序进行标识。进一步地,命令主体316可以包括待由小应用程序在执行期间使用的一个或多个程序参数。响应于接收执行小应用程序请求消息/命令330,DSD 104运行可执行小应用程序代码。
如在图3C中可见的,执行小应用程序请求消息/命令330的完成使得将相应的响应消息332从DSD 104发送至应用302。在响应消息332中,命令头314可以包括向应用302指示消息332是对执行小应用程序请求消息/命令330的响应的信息。在图3C中,那个标识信息由执行小应用程序响应消息类型336来表示。利用命令完成状态代码320将响应消息332发送至应用302。
除以上所述的命令和功能之外,在不同的实施例中提供了涉及管理小应用程序的若干附加主动驱动API命令和功能。以下提供了一些这种附加主动驱动API命令和功能的示例。
可以由应用302将调试小应用程序请求消息/命令(未示出)发送至DSD 104,从而指示DSD 104针对经标识小应用程序来调用DSD 104中的调试模式主动驱动API函数。当被调用时,调试模式函数可以采用在调试模式下提供用于执行小应用程序的形式将小应用程序加载到DSD 104内的应用执行环境中,并且然后可以在那种模式下执行小应用程序。调试模式是远程执行具有使得能够调试特征的小应用程序的方式,诸如通常用于调试计算机程序的断点、步进、检查变量等。这可通过在执行环境中包括调试库并且在执行环境与主机计算机的调试控制程序(例如,由GNU项目、来自Eclipse基金会的Eclipse等开发的GDB)之间建立通信信道(或管道)(诸如互联网协议(IP))来完成。可替代地,可以由应用302将具有合适限定符(例如,指示调试执行模式的程序参数)的执行小应用程序请求消息/命令330发送至DSD 104以便调用其中的调试模式函数。一旦在调试模式下开始执行小应用程序或者当DSD 104确定将不开始在调试模式下执行小应用程序时,则可以由DSD 104将响应消息(未示出)发送至应用302。
可以由应用302将中止小应用程序请求消息/命令(未示出)发送至DSD 104,从而指示DSD 104针对可以在DSD 104中运行的经标识小应用程序来调用DSD 104中的中止小应用程序主动驱动API函数。当被调用时,所述中止小应用程序函数可以停止执行经标识小应用程序。在停止执行(多个)小应用程序之后或者如果DSD 104确定所述小应用程序中的一个或多个未正在运行,则可以由DSD 104将响应消息(未示出)发送至应用302。
可以由应用302将获得进程状态请求消息/命令(未示出)发送至DSD 104,从而指示DSD 104针对可以在DSD 104中运行的一个或多个经标识小应用程序(或者针对经标识键范围内的小应用程序)来调用DSD 104中的获得进程状态主动驱动API函数。当被调用时,获得进程状态函数获得/确定(多个)经标识小应用程序的当前进程状态信息。可以由DSD 104将包括所获得的状态信息(例如,小应用程序正在运行、停止等的信息)的响应消息(未示出)发送至应用302。
可以由应用302将更新小应用程序请求消息/命令(未示出)发送至DSD 104,从而指示DSD 104针对经标识小应用程序来调用DSD 104中的更新小应用程序主动驱动API函数。当被调用时,更新小应用程序函数(由处理器116来运行)可以从非易失性介质112或易失性存储器114中读取经标识小应用程序,并且更新DSD 104的应用执行环境内的小应用程序。在小应用程序被成功验证并更新之后,由DSD 104将响应消息(未示出)发送至应用302。经更新的小应用程序则准备用于在DSD 104中执行。
可以由应用302将未安装小应用程序请求消息/命令(未示出)发送至DSD 104,从而指示DSD 104针对经标识小应用程序来调用DSD 104中的未安装小应用程序主动驱动API函数。当被调用时,未安装小应用程序函数(由处理器116来运行)可以将经标识小应用程序从DSD 104中的应用执行环境中移除。在小应用程序被成功移除或者如果未安装小应用程序函数未能从应用执行环境中移除小应用程序,则由DSD 104将响应消息(未示出)发送至应用302。
图3D是展示了观察小应用程序请求消息/命令338和相应响应消息340的系统300的简化框图。如在图3D中可见的,观察小应用程序请求消息/命令338包括基本上类似于图3A、图3B和图3C中所示的那些字段的字段。在观察小应用程序请求消息/命令338中,命令头314可以包括向DSD 104指示所述命令涉及对小应用程序进行管理的信息。在图3D中,那个标识信息由管理小应用程序消息类型342来表示。在观察小应用程序请求消息/命令338中,命令主体316可以限定管理小应用程序消息类型是观察小应用程序类型343,并且可以包括对构成(多个)小应用程序的对象进行标识的一个或多个键。进一步地,命令主体316可以通过开始键和结束键来标识观察范围,并且还可以标识消息类型(例如,Put)。响应于接收执行观察请求消息/命令338,DSD 104将小应用程序注册为观察器小应用程序。经注册的观察器小应用程序是在DSD 104内发生事件时执行的小应用程序。例如,观察器小应用程序可被注册用于对特定键范围内的任何键执行“获得(GET)”操作。事件不必与数据存储动作直接相关。例如,每当驱动器温度超过阈值、或者响应于来自驱动器监测程序(例如,当自监控、分析以及报告技术(Self-Monitoring,Analysis and Reporting Technology,SMART)事件宣布时)的通知或者当驱动器存储处于阈值以上时,可对小应用程序进行调用。所述观察器小应用程序能够响应于在经注册事件发生时进行调用而将通知发送至所述主机。
如在图3D中可见的,观察小应用程序请求消息/命令338的完成使得将相应的响应消息340从DSD 104发送至应用302。在响应消息340中,命令头314可以包括向应用302指示消息340是对观察小应用程序请求消息/命令338的响应的信息。在图3D中,那个标识信息由观察小应用程序响应消息类型314来表示。利用命令完成状态代码320将响应消息340发送至应用302。
图3E是处于DSD 104与应用302之间的应用执行相关请求/响应消息或命令交换已经完成的状态下的系统300的简化框图。如以上所指出的,应用302仅与DSD 104交换命令(例如,以上结合图3B至图3D所描述的命令),并且独立于应用302而在DSD 104内实施对小应用程序的实际执行。如之前所指出的,通过在DSD 104内执行小应用程序而获得的结果可以本地地存储在DSD 104上,被发送至应用302、被发送至系统300内的不同DSD(在图3A至图3E中未示出)中的一个或多个不同DSD等。
应当指出的是,以上结合图3A至图3E中所提供的描述仅用于应用执行环境处于DSD 104内的实施例。例如,在图1B和图1C的实施例中,可以在应用执行部件117内执行主动驱动API命令,所述应用执行部件耦合至DSD 104。
图4是方法实施例的简化流程图400。在步骤402处,将应用作为至少一个对象存储在数据存储驱动器中。所述至少一个对象包括;跟踪指示符,用于对所述对象进行标识;以及具有可变大小的数据字段,用于存储所述应用。在步骤404处,在所述数据存储驱动器中或者在与所述数据存储驱动器相关联的应用执行部件中接收指向所述应用的多条命令中的至少一条命令。在步骤406处,在所述数据存储驱动器中或者在与所述数据存储驱动器相关联的所述应用执行部件中执行所述一条或多条命令。
根据各个实施例,本文中所描述的方法可以被实现为在计算机处理器或控制器(诸如以上所述的控制器/处理器)上运行的一个或多个软件程序。同样可构造专用的硬件实现方式(包括但不限于专用集成电路、可编程逻辑阵列以及其他硬件设备)来实现本文所描述的方法。
通过使用以上所述的主动驱动API,主机可以同时向多个DSD(例如,10,000或更多DSD)直接发送命令(例如,图案匹配),而不涉及(多个)任何其他直接/中间主机/服务器。然后可在每个DSD内对所述命令进行处理而无需在主机与DSD之间进行任何用户数据转移,从而降低网络通信量以及相应的联网装备需求。因此,益处之一是可以消除大多数数据服务器(其可以由不采用主动驱动API的常规系统来使用)。例如,在不采用主动驱动API的常规系统中,一个主机可以服务32-100个DSD。如以上所指示的,在利用主动驱动API的系统中,单个主机可以服务10,000或者更多的DSD。进一步地,在采用主动驱动API的系统中,在DSD内移动数据处理。从而,可以消除大部分数据服务器/计算机核。由于处理被分配而非放大,因此可使用更小/更慢的处理器。处理可嵌入在驱动器控制器ASIC内并且可共享资源,诸如DRAM存储器,从而减少部件。其他所产生的优点包括改善的系统性能、更好的可靠性、更好的故障隔离、降低的系统功率以及降低的系统总成本。
本文所描述的实施例的说明旨在提供对各实施例的结构的一般理解。说明并不旨在作为利用本文所描述的结构或方法的装置和系统的所有元素和特征的完整描述。在审阅本公开时,许多其他实施例对于本领域技术人员而言是明显的。可以利用并从本公开导出其他实施例,从而使得可以在不偏离本公开的范围的情况下作出结构和逻辑替换和改变。另外,图示仅是代表性的并且可以不按比例绘制。可以放大图示内的某些比例,同时可以减小其他比例。从而,本公开和附图应被视为说明性的,而非限制性的。
仅为了便利并且在不旨在将本申请的范围限制于任何特定实施例或发明性构思的情况下,可以在本文中通过术语“发明”单独地和/或共同地指代本公开的一个或多个实施例。而且,虽然本文中已经展示并描述了特定的实施例,但是应当认识到,被设计以实现相同或相似目的的任何后续安排可以代替所示的特定实施例。本公开旨在涵盖各种实施例的任何以及全部后续的适配或变化。在审阅所述描述之后,以上实施例以及本文中未具体描述的其它实施例的组合对于本领域技术人员而言将是明显的。
提供本公开的摘要以符合37C.F.R.§1.72(B),并且在提交所述摘要时应当理解的是所述摘要将不用于解释或限制权利要求的范围或含义。此外,在前述具体实施方式中,出于将本公开连成一体的目的,各种特征可以组合到一起或者在单个实施例中进行描述。本公开不应被解释为反映以下意图:所要求保护的实施例包括比每项权利要求中明确表述的特征更多的特征。相反,如以下权利要求所反映的,本发明的主题可以涉及少于所公开的实施例中的任一实施例的所有特征。
以上所公开的主题应该被认为是说明性的而非限制性的,并且所附权利要求旨在涵盖落入本公开的真实精神和范围内的所有这类修改、增强以及其他实施例。因此,为了最大限度地得到法律的允许,本公开的范围应当由以下权利要求及其等效物的最广泛允许的解释来确定并且不应当受前述具体实施方式的约束或限制。

Claims (20)

1.一种方法,包括:
将应用作为至少一个对象存储在数据存储驱动器中,所述至少一个对象包括:
键,用于标识所述至少一个对象;以及
具有可变大小的数据字段,用于存储所述应用;
在所述数据存储驱动器中或者在与所述数据存储驱动器相关联的应用执行部件中接收涉及所述应用的一条或多条命令;以及
在所述数据存储驱动器或与所述数据存储驱动器相关联的所述应用执行部件中的至少一项中执行所述一条或多条命令。
2.如权利要求1所述的方法,其特征在于,将所述应用作为至少一个对象存储在所述数据存储驱动器中包括:采用中间对象代码的形式将所述至少一个对象存储在所述数据存储驱动器中的非易失性介质或易失性存储器中的至少一项中。
3.如权利要求2所述的方法,进一步包括:
从所述非易失性介质或所述易失性存储器中读取所述中间对象代码;以及
将所述中间对象代码作为可执行代码汇编在所述数据存储驱动器中或与所述数据存储驱动器相关联的所述应用执行部件中。
4.如权利要求3所述的方法,进一步包括:在所述数据存储驱动器中或与所述数据存储驱动器相关联的所述应用执行部件中运行所述可执行代码。
5.如权利要求4所述的方法,进一步包括:将由运行所述可执行代码所产生的任何结果存储到所述数据存储驱动器中的所述非易失性介质或所述易失性存储器中的至少一项中。
6.如权利要求4所述的方法,进一步包括:将由在所述数据存储驱动器中运行所述可执行代码所产生的任何结果发送至主机计算机或一个或多个其他数据存储驱动器。
7.如权利要求6所述的方法,其特征在于,所述主机计算机、所述数据存储驱动器和所述其他数据存储驱动器经由网络进行通信。
8.如权利要求4所述的方法,进一步包括:监测所述应用在所述数据存储驱动器内的运行。
9.如权利要求4所述的方法,进一步包括:将与所述应用的运行相关的状态信息发送至与所述数据存储驱动器进行通信的主机计算机。
10.一种被适配用于对应用编程接口(API)进行实例化的系统,所述应用编程接口(API)使得能够在数据存储驱动器内安装并执行应用,所述系统包括:
处理器;
存储器,通信地耦合至所述处理器,所述存储器具有存储于其中的实现所述API的计算机可执行指令,并且所述计算机可执行指令当被执行时使所述处理器:
使得能够将所述应用作为键值对象安装在所述数据存储驱动器上,并且使得能够在所述数据存储驱动器的受控环境内执行所述应用。
11.如权利要求10所述的系统,进一步包括:所述应用的执行环境,所述执行环境支持对存储在所述数据存储驱动器内的用户数据进行本地处理。
12.如权利要求10所述的系统,其特征在于,所述存储器进一步具有存储于其中的计算机可执行指令,所述计算机可执行指令当被执行时使所述处理器:响应于接收应用安装命令,通过所述键值对象对所述应用进行标识并且将所述应用加载到所述数据存储驱动器的应用执行环境中。
13.如权利要求12所述的系统,其特征在于,所述存储器进一步具有存储于其中的计算机可执行指令,所述计算机可执行指令当被执行时使所述处理器:响应于接收应用执行命令,通过所述键值对象对所述应用进行标识并且在所述数据存储驱动器的所述应用执行环境内执行所述应用。
14.如权利要求10所述的系统,其特征在于,所述存储器进一步具有存储于其中的计算机可执行指令,所述计算机可执行指令当被执行时使所述处理器:响应于接收应用观察命令,通过所述键值对象对所述应用进行标识并且将所述应用作为观察器小应用程序安装到所述数据存储驱动器的所述应用执行环境中。
15.如权利要求10所述的系统,其特征在于,所述数据存储驱动器为磁盘驱动器、固态驱动器或混合驱动器之一。
16.一种方法,包括:
由处理器将应用的中间对象代码作为所述应用的可执行代码汇编在数据存储驱动器中;以及
将所述应用的所述可执行代码存储在至少一个数据存储介质上。
17.如权利要求16所述的方法,其特征在于,所述至少一个数据存储介质包括所述数据存储驱动器中的非易失性数据存储介质或易失性存储器中的至少一项。
18.如权利要求16所述的方法,进一步包括:在汇编所述中间对象代码之前将所述中间对象代码作为一个或多个键值对象存储在所述数据存储驱动器中。
19.如权利要求16所述的方法,进一步包括:在所述数据存储驱动器内提供应用执行环境,其中,所述应用执行环境支持对存储在所述数据存储驱动器内的用户数据进行本地处理。
20.如权利要求19所述的方法,进一步包括:
在所述数据存储驱动器中接收应用执行命令;
响应于接收所述应用执行命令,将来自所述至少一个数据存储介质的所述可执行代码加载到所述应用执行环境中;以及
在所述应用执行环境中运行所述可执行代码。
CN201710959488.4A 2016-10-14 2017-10-16 主动驱动api Active CN107967158B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662408446P 2016-10-14 2016-10-14
US62/408,446 2016-10-14
US15/378,995 2016-12-14
US15/378,995 US10613882B2 (en) 2016-10-14 2016-12-14 Active drive API

Publications (2)

Publication Number Publication Date
CN107967158A true CN107967158A (zh) 2018-04-27
CN107967158B CN107967158B (zh) 2020-12-25

Family

ID=61903844

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710959488.4A Active CN107967158B (zh) 2016-10-14 2017-10-16 主动驱动api

Country Status (3)

Country Link
US (4) US10613882B2 (zh)
KR (1) KR102093105B1 (zh)
CN (1) CN107967158B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710260A (zh) * 2018-11-16 2019-05-03 青岛特锐德电气股份有限公司 一种基于多平台的小程序代码转换系统及转换方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017214862A1 (zh) * 2016-06-14 2017-12-21 华为技术有限公司 数据访问方法和相关装置及系统
US10613882B2 (en) 2016-10-14 2020-04-07 Seagate Technology Llc Active drive API
KR20190051564A (ko) * 2017-11-07 2019-05-15 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP7132491B2 (ja) * 2018-05-14 2022-09-07 富士通株式会社 メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法
CN109522283B (zh) * 2018-10-30 2021-09-21 深圳先进技术研究院 一种重复数据删除方法及系统
US11061728B2 (en) * 2019-02-12 2021-07-13 Western Digital Technologies, Inc. Systems and methods for heterogeneous address space allocation
US11372697B2 (en) * 2020-03-20 2022-06-28 Netapp, Inc. Message based code execution using key-value storage
JP7241931B2 (ja) * 2020-11-16 2023-03-17 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド ミニプログラムをデバッグする方法、装置、電子機器、記憶媒体及びコンピュータプログラム
US11954341B2 (en) 2022-05-05 2024-04-09 Seagate Technology Llc External storage of internal drive management data

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003043A1 (en) * 2002-06-20 2004-01-01 International Business Machines Corporation Remote control of document objects in a collaborative environment
CN1568512A (zh) * 2001-09-10 2005-01-19 国际商业机器公司 自动数据存储库中的数据存储驱动器
US6993524B1 (en) * 1999-06-25 2006-01-31 Hitachi, Ltd. Network-attached disk unit with data protection function and server protecting data stored in network-attached disk device
CN101551838A (zh) * 2008-04-03 2009-10-07 凤凰微电子(中国)有限公司 一种存储卡身份认证方法及其系统
US20120017223A1 (en) * 2007-11-27 2012-01-19 Microsoft Corporation Interface Protocol and API for a Wireless Transceiver
CN102937932A (zh) * 2011-08-16 2013-02-20 中国银联股份有限公司 集成异构测试工具的自动化测试装置及方法
CN103019918A (zh) * 2011-09-27 2013-04-03 腾讯科技(深圳)有限公司 一种获取应用程序使用频率的方法和装置
CN104035805A (zh) * 2014-06-27 2014-09-10 深圳市中兴移动通信有限公司 一种快捷启动应用程序的方法和装置
US20150106784A1 (en) * 2013-10-16 2015-04-16 One Smart Star Limited Device, system, and method of communication
CN105049900A (zh) * 2015-08-21 2015-11-11 青岛海信电器股份有限公司 一种智能电视终端控制方法、智能电视终端及系统
CN105223842A (zh) * 2015-09-07 2016-01-06 深圳市爱的扣扣科技有限公司 一种穿戴终端按键功能的设置方法

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03266039A (ja) * 1990-03-16 1991-11-27 Fujitsu Ltd フリーフォーマットデータリンク処理方式
US5771379A (en) 1995-11-01 1998-06-23 International Business Machines Corporation File system and method for file system object customization which automatically invokes procedures in response to accessing an inode
US6226665B1 (en) 1996-09-19 2001-05-01 Microsoft Corporation Application execution environment for a small device with partial program loading by a resident operating system
US6128012A (en) 1996-09-19 2000-10-03 Microsoft Corporation User interface for a portable data management device with limited size and processing capability
US6298401B1 (en) 1997-08-11 2001-10-02 Seagate Technology Llc Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media
WO1999010893A2 (en) 1997-08-28 1999-03-04 Seagate Technology, Inc. Object reconstruction on object oriented data storage device
US6718540B1 (en) * 1997-11-17 2004-04-06 International Business Machines Corporation Data processing system and method for storing data in a communication network
US6253370B1 (en) 1997-12-01 2001-06-26 Compaq Computer Corporation Method and apparatus for annotating a computer program to facilitate subsequent processing of the program
US7127701B2 (en) * 1998-09-18 2006-10-24 Wylci Fables Computer processing and programming method using autonomous data handlers
US6282697B1 (en) * 1998-09-18 2001-08-28 Wylci Fables Computer processing and programming method using autonomous data handlers
JP2000122814A (ja) * 1998-10-15 2000-04-28 Hitachi Ltd 拡張型ネットワーク接続二次記憶方法及び装置
US6317143B1 (en) 1999-01-26 2001-11-13 Gateway, Inc. Programmable graphical user interface control system and method
US6845498B1 (en) 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6466978B1 (en) 1999-07-28 2002-10-15 Matsushita Electric Industrial Co., Ltd. Multimedia file systems using file managers located on clients for managing network attached storage devices
US7814157B2 (en) * 2000-01-11 2010-10-12 Eolas Technlogies, Inc. Hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6601101B1 (en) 2000-03-15 2003-07-29 3Com Corporation Transparent access to network attached devices
US6826613B1 (en) * 2000-03-15 2004-11-30 3Com Corporation Virtually addressing storage devices through a switch
EP1546926A4 (en) * 2002-09-18 2008-07-02 Netezza Corp RECORDING PROCESSOR, METHOD AND DEVICE FOR ASYMMETRIC STREAMING
US7827527B1 (en) 2004-02-12 2010-11-02 Chiluvuri Raju V System and method of application development
US7328303B1 (en) 2004-06-30 2008-02-05 Sun Microsystems, Inc. Method and system for remote execution of code on a distributed data storage system
US20060070043A1 (en) 2004-07-27 2006-03-30 Viega John T System and method for analyzing computer code
US20070067325A1 (en) * 2005-02-14 2007-03-22 Xsapio, Ltd. Methods and apparatus to load and run software programs in data collection devices
US7590799B2 (en) 2005-06-16 2009-09-15 Seagate Technology Llc OSD deterministic object fragmentation optimization in a disc drive
JP2007004522A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 記憶装置
US8522228B1 (en) * 2006-03-31 2013-08-27 Vmware, Inc. Updating software on dormant disks
US7826161B2 (en) 2006-06-30 2010-11-02 Seagate Technology Llc Object based storage device with storage medium having varying media characteristics
US8661425B1 (en) * 2006-07-28 2014-02-25 American Megatrends, Inc. Method, apparatus, and computer-readable medium for storing data associated with a firmware program
US7725614B2 (en) 2006-08-08 2010-05-25 Sandisk Corporation Portable mass storage device with virtual machine activation
US9081948B2 (en) 2007-03-13 2015-07-14 Red Hat, Inc. Configurable smartcard
US8196101B1 (en) * 2007-04-23 2012-06-05 Sandia Corporation Reach and get capability in a computing environment
US8677101B2 (en) 2007-06-07 2014-03-18 International Business Machines Corporation Method and apparatus for cooperative software multitasking in a processor system with a partitioned register file
US7747784B2 (en) * 2008-03-04 2010-06-29 Apple Inc. Data synchronization protocol
US8078448B1 (en) 2008-05-27 2011-12-13 Adobe Systems Incorporated Systems and methods for automated testing
JP5225003B2 (ja) 2008-10-01 2013-07-03 キヤノン株式会社 メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体
US20110025858A1 (en) * 2009-02-18 2011-02-03 Gidon Elazar Method, apparatus, and system for adding functionality to a digital camera
US20110019007A1 (en) * 2009-02-18 2011-01-27 Gidon Elazar Method, apparatus and method for adding functionality to a digital camera
US9015333B2 (en) * 2009-12-18 2015-04-21 Cisco Technology, Inc. Apparatus and methods for handling network file operations over a fibre channel network
US8677055B2 (en) * 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
JP5657364B2 (ja) 2010-12-08 2015-01-21 フェリカネットワークス株式会社 情報処理装置および方法、プログラム、並びに情報処理システム
US8959492B2 (en) * 2010-12-14 2015-02-17 Ngmoco, Llc Communication protocol between a high-level language and a native language
US9015345B2 (en) 2010-12-15 2015-04-21 Microsoft Corporation API supporting server and key based networking
TWI446172B (zh) 2011-05-06 2014-07-21 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與存取方法
GB2494655B (en) * 2011-09-14 2014-01-15 Kraft Foods R & D Inc Pouch location device
DE102011122242A1 (de) 2011-12-23 2013-06-27 Giesecke & Devrient Gmbh Verfahren zur Kommunikation mit einer Applikation auf einem portablen Datenträger sowie ein solcher portabler Datenträger
US9262133B2 (en) * 2012-01-27 2016-02-16 Amx Llc Mapping and formatting input commands to a third party protocol
US9286327B2 (en) * 2012-03-30 2016-03-15 Commvault Systems, Inc. Data storage recovery automation
US9172698B1 (en) 2012-10-12 2015-10-27 Ut-Battelle, Llc System and method for key generation in security tokens
US9798673B2 (en) 2013-03-14 2017-10-24 Sandisk Technologies Llc Paging enablement of storage translation metadata
US9298521B1 (en) 2013-04-29 2016-03-29 Seagate Technology Llc Command sets and functions
US9641385B1 (en) 2013-12-16 2017-05-02 Amazon Technologies, Inc. Dynamic system configuration in a virtual environment
US9939865B2 (en) * 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9990305B2 (en) * 2014-09-19 2018-06-05 Nxp Usa, Inc. Memory management component having multiple memory management modules and method therefor
US9411539B2 (en) * 2014-09-24 2016-08-09 International Business Machines Corporation Providing access information to a storage controller to determine a storage tier for storing data
WO2016121086A1 (ja) * 2015-01-30 2016-08-04 株式会社日立製作所 ストレージ管理システム、ストレージシステム及び機能拡張方法
US10296232B2 (en) * 2015-09-01 2019-05-21 Western Digital Technologies, Inc. Service level based control of storage systems
US10313479B2 (en) 2015-11-24 2019-06-04 Vmware, Inc. Methods and apparatus to manage workload domains in virtual server racks
US9870217B2 (en) 2016-03-08 2018-01-16 Oracle International Corporation Toolkit event configuration of applets on a card computing device with installation parameters
US10178000B2 (en) * 2016-07-21 2019-01-08 Dell Products L.P. Integrated storage/SAN monitoring and control system
US10613882B2 (en) 2016-10-14 2020-04-07 Seagate Technology Llc Active drive API

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993524B1 (en) * 1999-06-25 2006-01-31 Hitachi, Ltd. Network-attached disk unit with data protection function and server protecting data stored in network-attached disk device
CN1568512A (zh) * 2001-09-10 2005-01-19 国际商业机器公司 自动数据存储库中的数据存储驱动器
US20040003043A1 (en) * 2002-06-20 2004-01-01 International Business Machines Corporation Remote control of document objects in a collaborative environment
US20120017223A1 (en) * 2007-11-27 2012-01-19 Microsoft Corporation Interface Protocol and API for a Wireless Transceiver
CN101551838A (zh) * 2008-04-03 2009-10-07 凤凰微电子(中国)有限公司 一种存储卡身份认证方法及其系统
CN102937932A (zh) * 2011-08-16 2013-02-20 中国银联股份有限公司 集成异构测试工具的自动化测试装置及方法
CN103019918A (zh) * 2011-09-27 2013-04-03 腾讯科技(深圳)有限公司 一种获取应用程序使用频率的方法和装置
US20150106784A1 (en) * 2013-10-16 2015-04-16 One Smart Star Limited Device, system, and method of communication
CN104035805A (zh) * 2014-06-27 2014-09-10 深圳市中兴移动通信有限公司 一种快捷启动应用程序的方法和装置
CN105049900A (zh) * 2015-08-21 2015-11-11 青岛海信电器股份有限公司 一种智能电视终端控制方法、智能电视终端及系统
CN105223842A (zh) * 2015-09-07 2016-01-06 深圳市爱的扣扣科技有限公司 一种穿戴终端按键功能的设置方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WEI ZHOU.ETC: ""REST API Design Patterns for SDN Northbound API"", 《2014 28TH INTERNATIONAL CONFERENCE ON ADVANCED INFORMATION NETWORKING AND APPLICATIONS WORKSHOPS》 *
李现全等: ""电子邮件系统关键技术及协议研究"", 《北京电子科技学院学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710260A (zh) * 2018-11-16 2019-05-03 青岛特锐德电气股份有限公司 一种基于多平台的小程序代码转换系统及转换方法
CN109710260B (zh) * 2018-11-16 2022-03-08 青岛特来电新能源科技有限公司 一种基于多平台的小程序代码转换方法

Also Published As

Publication number Publication date
US20200183715A1 (en) 2020-06-11
KR20180041609A (ko) 2018-04-24
US20180107499A1 (en) 2018-04-19
CN107967158B (zh) 2020-12-25
US20190026134A1 (en) 2019-01-24
US11119797B2 (en) 2021-09-14
KR102093105B1 (ko) 2020-03-25
US10802853B2 (en) 2020-10-13
US20180107467A1 (en) 2018-04-19
US10613882B2 (en) 2020-04-07
US10936350B2 (en) 2021-03-02

Similar Documents

Publication Publication Date Title
CN107967158A (zh) 主动驱动api
JP6856696B2 (ja) コンテナの管理及びスケジューリングのためのシステム
US11403019B2 (en) Deduplication-aware per-tenant encryption
US20190356736A1 (en) Network authentication for a multi-node array
US11729251B2 (en) Remote and secure management of a storage system
US12019764B2 (en) Modifying encryption in a storage system
US10936191B1 (en) Access control for a computing system
US11016824B1 (en) Event identification with out-of-order reporting in a cloud-based environment
US11936654B2 (en) Cloud-based user authorization control for storage system access
CN102523264B (zh) 面向虚拟机的usb设备远程共享方法和系统
CN111213340A (zh) 选择用于密码功能的证明委托并使其安全
US10362030B2 (en) Method and system for providing access to administrative functionality a virtualization environment
US11632360B1 (en) Remote access to a storage device
CN105027108B (zh) 实例主机配置
US20110307486A1 (en) Managing Sensitive Data in Cloud Computing Environments
US11893126B2 (en) Data deletion for a multi-tenant environment
CN107479984A (zh) 基于消息的分布式空间数据处理系统
US9246688B1 (en) Dataset licensing
CN106155575A (zh) 用于扩展存储系统的高速缓存的方法和装置
US20170192874A1 (en) Targeted multi-tiered software stack serviceability
US20230198757A1 (en) Decommissioning Keys In A Decryption Storage System
US11934322B1 (en) Multiple encryption keys on storage drives
US8635447B1 (en) Managing certificates between software environments
US11954238B1 (en) Role-based access control for a storage system
US8566595B1 (en) Managing secure communications with software environments

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant