具有嵌入式软件的数据存储设备的制作方法

文档序号:11851457阅读:228来源:国知局
具有嵌入式软件的数据存储设备的制作方法与工艺

数据存储设备(DSD)常常用于将数据记录到存储介质(如旋转磁盘或诸如闪速存储器之类的固态存储器)上,或者再现来自存储介质的数据。传统上,DSD由对数据进行处理或转换并将数据存储在DSD中或从DSD中取回数据的主机来使用。DSD常常利用将数据组织成由在主机上运行的应用所使用的文件的文件系统来访问存储在DSD中的数据。

分布式计算、移动应用、社交媒体应用、和大数据应用(即,大量数据或复杂数据的收集)的增长引起了基于对象的存储的增加,所述基于对象的存储通常提供比基于文件的存储更好的可扩展性。在许多情况下,可能永不再次访问数据对象,但期望数据对象在需要的时候仍然是可访问的。这样的数据对象的示例可以包括照片、电影、电子商务数据、或者跨网络(例如,在云存储中)存储的归档数据。基于对象的存储的增长已经创建了对可以容纳基于文件的存储和基于对象的存储两者的存储环境的需求。

另外,分布式计算、移动应用、社交媒体应用、和大数据应用已经引起了对用来留存由这些应用所使用的数据的较大存储容量的需求。当处理在不同DSD之间分布的大量数据时,主机从DSD中取回数据、对所取回的数据进行处理、并且将经处理的数据存储回DSD中的传统模型在处理效率或网络业务方面可能没有提供对资源的最高效的利用。另外,数据存储系统将需要在处理数据时提供更多的灵活性,例如允许使用在诸如分布式计算之类的领域中开发的新的接口和应用。

附图说明

当结合附图来理解时,本公开的实施例的特征和优点将从在下文中所阐述的详细描述中变得更加显而易见。提供了附图和相关联的描述来示出本公开内容的实施例,而不是要限制所要求保护的范围。

图1是根据实施例的数据存储设备(DSD)的框图。

图2是根据实施例的图1的DSD中的片上系统(SoC)的框图。

图3示出了根据实施例的用户空间和内核空间。

图4是根据实施例的针对处理器接口过程的流程图。

图5是根据实施例的应用或接口安装过程的流程图。

图6是根据实施例的描绘了主机与DSD的多个接口之间的交互的图。

图7A是根据实施例的用于执行用于使用文件接口或对象接口将数据存储在非易失性存储器(NVM)中或者从NVM中取回数据的命令的流程图。

图7B是根据实施例的描绘了接收具有不同的传输属性的命令的图。

图8A是根据实施例的针对文件表示过程的流程图。

图8B是根据实施例的针对数据对象表示过程的流程图。

图9是根据实施例的针对用于转换数据的卸载接口过程的流程图。

图10A是根据实施例的使用卸载接口来对从网络中所接收的数据进行转换的流程图。

图10B是根据实施例的使用卸载接口来对从NVM中取回的数据进行转换的流程图。

图11是根据实施例的描绘了用于按顺序对数据进行转换的DSD的聚类的图。

图12是根据实施例的描绘了用于执行MapReduce功能的DSD的聚类的图。

图13是根据实施例的描绘了DSD的聚类的图,其中每个DSD充当计算节点。

图14是根据实施例的包括多个硬盘组件(HDA)的数据存储系统的框图。

图15是根据实施例的包括多个DSD的数据存储系统的框图。

具体实施方式

在以下的详细描述中,阐述了多个具体细节以提供对本公开内容的全面理解。然而,本领域技术人员应当理解的是,可以没有这些具体细节中的一些细节来实践所公开的各种实施例。在其它实例中,没有详细示出公知的结构和技术以免不必要地使得各种实施例难以理解。

示例系统概述

图1示出了根据实施例的系统100,该系统100包括通过网络102彼此进行通信的主机101以及数据存储设备(DSD)106和107。系统100可以是例如数据存储中心或者使用多个DSD的其它计算机系统。另外,系统100可以是独立的系统或者是诸如网络102之类的网络的一部分,所述网络102可以例如是局域网或广域网或者互联网。本领域技术人员应当理解的是,系统100可以包括比在图1中所示出的元件更多或更少的元件,并且可以在其他环境中实现所公开的过程。例如,在其它实施例中,系统100可以仅仅包括主机101和DSD 106,而没有DSD 107。在这样的实施例中,系统100可以例如是计算机系统(例如,服务器、台式机、移动/膝上型计算机、平板计算机、智能电话等)或者诸如数字视频录像机之类的另一个电子设备。

在图1的示例中,DSD 106包括固态存储器128和旋转磁盘150中的一个或两者以作为用于存储数据的非易失性存储器(NVM)。如果这两者都被包括,则可以将DSD 106认为是固态混合驱动器(SSHD),这是由于其包括固态NVM和磁盘NVM两者。在其它实施例中,DSD 106或107可以包括不同类型的NVM(例如,磁带驱动器),或者DSD 106或107的NVM可以仅仅包括磁盘NVM或固态NVM。在其他的实施例中,磁盘150或固态存储器128中的每个都可以分别由多个硬盘驱动器(HDD)或多个固态驱动器(SSD)来替换,以使得DSD 106包括HDD或SSD的库(pool)。沿着这些思路,并且作为进一步的示例环境的示例,图14的实施例描绘了具有多个硬盘组件(HDA)的数据存储系统206,其中每个硬盘组件包括至少一个旋转磁盘和用于访问对应的磁盘表面上的数据的至少一个磁头。

在图1的示例环境中,DSD 106包括片上系统(SoC)120,该片上系统120包括用于执行指令的电路,并且可以包括微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬接线逻辑单元、模拟电路、和/或其组合。在下文中参考图2更加详细地讨论了SoC 120的示例布置。

网络接口126被配置为使用例如以太网连接或WiFi无线连接将DSD 106与网络102进行连接。网络接口126允许DSD 106与使用诸如TCP/IP之类的协议的网络102上的其它设备(例如,主机101或DSD 107)接合。如本领域技术人员将理解的,网络接口126可以作为SoC 120的一部分而被包括。在其它实施例中,可以用用于根据诸如串行高级技术附接(SATA)、快速PCI(PCIe)、小型计算机系统接口(SCSI)、或串行附接SCSI(SAS)之类的标准在数据总线上进行通信的接口来替代网络接口126。

如在图1中所示的,DSD 106还包括用于获得关于DSD 106的环境状态的环境信息的传感器122。传感器122可以包括一个或多个环境传感器,例如:机械震动传感器、振动传感器、加速度计(例如,XYZ或YPR加速度计)、温度传感器、湿度传感器、或空气压力传感器。另外,一种类型的传感器可用于指示多个环境状态。例如,加速计可以用于指示振动和机械震动状态两者,或者空气压力传感器可以用于指示高度的变化或空气压力的变化。在其它实施例中,DSD 106可以从诸如摄像头、射频传感器、或雷达的外部传感器获得数据。

在图1的示例中,由主轴电机(SM)154来转动磁盘150。DSD 106还包括连接至制动器130的远端的磁头136,该制动器130由音圈电机(VCM)132来转动以与磁盘150相关地放置磁头136。SoC 120可以分别使用VCM控制信号34和SM控制信号38来控制磁头136的位置和磁盘150的转动。

如本领域技术人员将理解的,磁盘150可以形成具有在磁盘150下方径向对齐的额外的磁盘的磁盘组的一部分。另外,磁头136可以形成包括额外的磁头的磁头堆(stack)组件的一部分,其中每个磁头都被设置为从磁盘组中的磁盘的对应的表面读取数据并且向磁盘组中的磁盘的对应的表面写入数据。

磁盘150包括用于在磁盘150的表面上存储数据的多个径向间隔的、同心的轨道152。可以将轨道152一起分组成轨道的区域,其中,每个轨道都被划分成沿轨道周向间隔的多个扇区。

在一些实现中,轨道152中的一些或所有轨道可以由磁头136的写元件使用瓦叠式磁记录(SMR)来写入,以便使相邻轨道重叠。SMR提供了一种可以通过像屋顶瓦叠那样来重叠轨道以增加可以存储在磁盘150上的给定区域中的数据的量的方法。接着,非重叠部分充当可以由磁头136的读元件来读取的窄轨道。在其它实现中,可以通过使用常规磁记录(SMR)来写轨道152中的所有轨道以使得它们不重叠。

尽管对于SMR而言每英寸更多数量的轨道通常是可能的,但轨道的重叠通常会阻止向先前重叠的轨道进行新的写入,这是因为这样的新的写入会影响在重叠的轨道中写入的数据。出于该原因,轨道在SMR实现中通常是顺序写入的以避免影响先前写入的数据。

除了磁盘150之外或代替磁盘150,DSD 106的NVM介质还可以包括用于存储数据的固态存储器128。尽管在本文中的描述通常指的是固态存储器,但应当理解的是,固态存储器可以包括诸如以下的各种类型的存储器设备中的一种或多种,包括:闪速集成电路、硫系化合物RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向通用存储器(OUM)、阻抗RAM(RRAM)、NAND存储器(例如,单级单元(SLC)存储器、多级单元(MLC)存储器、或其任何组合),NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其它分立NVM芯片、或者其任何组合。

存储器140可以表示用于暂时存储由SoC 120所使用的数据的DSD 106的易失性存储器,例如,动态随机存取存储器(DRAM)。在其它实施例中,存储器140可以是诸如MRAM之类的NVM。另外,在其它实施例中,存储器140可以作为SoC 120的一部分而被包括。本领域技术人员还应当理解的是,其它实施例可以包括比被描绘为存储在存储器140中的项目中的所有项目更少的项目。

在操作中,SoC 120的处理器(例如,在图2中所示出的处理器138)在软件程序(例如,应用操作系统(OS)12、文件系统14、文件接口16、对象接口18、卸载接口20、驱动程序21、或应用22)中的计算机可执行指令的执行期间访问存储在存储器140中的信息。更加具体而言,SoC 120可以将计算机可执行指令从DSD 106的NVM(例如,磁盘150或固态存储器128)加载到存储器140的区域中,并且接着执行来自存储器140的所存储的过程指令。

就应用OS 12是在DSD 106上执行的而不是在主机(例如,主机101)上执行的意义而言,应用OS 12是DSD 106的嵌入式OS。应用OS 12管理DSD 106的硬件资源和软件资源,并且可以包括例如Linux OS、Android OS、Windows OS、Mac OS、或自定义的OS。由应用OS 12所管理的硬件资源可以包括例如网络接口126、固态存储器128、磁盘150、存储器140、以及SoC 120中的一个或多个处理器(例如,在图2中所示出的处理器138)。由应用OS 12所管理的软件资源可以包括例如文件系统14、文件接口16、对象接口18、卸载接口20、驱动程序21、或应用22。

文件系统14可以包括用于访问或组织存储在DSD 106的NVM中的文件的一个或多个文件系统。通过执行DSD 106上的文件系统,通常能够将该文件系统定制为由DSD 106用来存储数据的特定的存储介质。在一个示例中,文件系统14可以包括可以很好地适用于在SMR介质(例如,线性磁带文件系统(LTFS)或者像日志结构化文件系统的新实现(NILFS)那样的日志结构化文件系统)上顺序写入数据的文件系统。文件系统14的其它文件系统可以包括例如B树文件系统(Btrfs)、ext2、ext3、ext4、或XFS。文件系统14可以在如在图3的内核空间的示例中所示出的应用OS 12的内核空间中进行操作。

文件接口16提供用于经由网络102取回或存储作为DSD 106的NVM中的文件的数据的一个或多个文件系统接口。这样的文件接口可以包括例如诸如公共互联网文件系统(CIFS)、网络文件系统(NFS)或服务器消息块(SMB)之类的网络文件系统。文件接口16可以在应用OS 12的内核空间中进行操作。

对象接口18提供用于经由网络102取回或存储作为数据对象的数据的基于对象的存储接口。这样的对象接口可以包括例如Amazon网络服务简单存储服务(AWS S3)。文件接口18可以在如在图3中所示出的用户空间中进行操作。

与基于文件的存储相比,DSD 106处的基于对象的存储可以提供几个优点,例如,对存储介质的全部容量的更好的使用,以及通过使得DSD关于什么正在被访问更加“数据感知”来对数据进行更高效的访问。在一个示例中,对象接口18可以利用有关例如数据对象的所有权、数据对象的创建日期、或者数据对象的类型的元数据来提供关于数据对象的额外的信息,以使得某些数据对象或相关数据可以被高速缓存(例如,存储在存储器140中)以供更快的访问。

卸载接口20提供了一种将处理从网络102上的主机(例如,主机101)转移到DSD 106上的方法。在一个实现中,主机101经由网络接口126向DSD 106发送计算机可执行指令。SoC 120的处理器(例如,处理器138)执行计算机可执行指令以创建用于访问或转换存储在DSD 106的NVM中的数据的卸载接口。卸载接口20可以在如图3所示的应用OS 12的内核空间中进行操作。

卸载接口的示例可以包括Ceph或OpenStack软件平台或者Hadoop软件框架。在一些实现中,SoC 120的处理器可以基于为不同的接口所保留的区域而对NVM中的其可用的存储容量(例如,磁盘150和固态存储器128中的可用的数据容量)进行分区。例如,SoC 120的处理器可以保留其NVM存储容量的20%用于AWS S3存储,30%用于Ceph功能、以及50%用于OpenStack功能。还可以根据需要来动态地分配DSD 106的NVM。在一个示例中,可以保留NVM的10%用于AWS S3存储、10%用于Ceph功能、10%用于OpenStack功能、以及70%将根据需要在AWS S3、Ceph和OpenStack之间进行分配。如在下文中参考图11至13更加详细地讨论的,卸载接口20还可以提供允许DSD 106充当网络102上的DSD聚类中的计算节点的分布式计算应用。

驱动程序21可以包括用于与DSD 106的固件(例如,图2所示的控制器固件11或伺服固件10,或者网络接口126的固件)接合的软件,并且可以在如在图3中所示出的应用OS 12的内核空间中执行。驱动程序21还可以允许与网络102上的其它设备(例如,DSD 107)接合。

应用22可以包括由DSD 106的制造商开发的应用和/或从网络102下载的独立开发的应用。例如,DSD 106可以经由网络接口126从主机101接收计算机可执行指令,并且接着执行计算机可执行指令以创建应用22。在一些实现中,可以使得软件开发工具包(SDK)(例如,在图3中所示出的SDK19)可用以允许网络102上的用户开发他们自己的应用来在DSD 106上运行。

应用22或驱动程序21可以包括:用于收集关于数据使用的信息(例如,识别文件类型、属性、IP地址以及存储业务信息)的有关数据存储的应用(例如,“嗅探和存储”应用)、用于操作DSD 106的用户接口、用于监测DSD 106的可靠性和/或在丢失数据之前将数据迁移至另一个DSD或者DSD 106内的NVM的DSD健康监测、数据加密、数据压缩、擦除编码或纠错、基于数据的属性来对数据进行定向以用于存储在磁盘150或固态存储器128上(例如,分层存储)、对存储在DSD 106中的数据的复制、或者对数据进行镜像(例如,数据备份)。

另外,应用22或驱动器21可以针对以下具体用途来自定义DSD 106,例如:处理传感器数据(例如,在应用22可以包括MATLAB或LabVIEW的情况下)、通过网络102对某些类型的媒体进行流式传输、配置DSD 106以作为DVR或媒体服务器来操作、管理对计算设备的同步或备份、例如为A/V系统提供蓝牙连接、提供WiFi热点、或者配置DSD 106以作为网络连接存储(NAS)来操作。应用22或驱动程序21还可以在网络102上提供某些网络功能,例如比特币挖掘、网络102上的另一个DSD的识别以及在另一个DSD上所存储的数据的识别、将来自故障的DSD NVM的数据迁移或复制到网络中的另一个DSD NVM中、或者基于环境状态(例如,由传感器122所检测到的振动或温度)将数据重新路由至网络中的其它DSD。

在一个实现中,应用22可以允许DSD 106的处理器(例如,在图2中所示出的SoC 120的处理器138)监测网络102上的用于利用网络接口126来存储数据的另一个DSD(例如,DSD 107)的可靠性的至少一个指示符。可靠性的指示符可以包括例如,在取回另一个DSD上的数据或者在另一个DSD上存储数据时的错误的数量、或者另一个DSD的特定NVM的使用量(例如,另一个DSD的闪速存储器的编程/擦除(P/E)循环的数量)。在一些情况下,如果另一个DSD的可靠性的一个或多个指示符达到不安全或不期望的阈值,则应用22还可以使DSD 106的处理器将数据从该另一个DSD复制到DSD 106的NVM中。

在另一个实现中,应用22可以使得DSD 106的处理器从传感器122中接收指示DSD 106的环境状态(例如,振动状态、空气压力状态、湿度状态、或温度状态)的输入。接着,处理器可以确定输入是否超过不安全或不期望的阈值。如果输入超过了该阈值,则处理器可以将用于把数据存储在DSD 106的NVM中的至少一个命令重新定向至网络102上的另一个DSD(例如,DSD 107)。处理器还可以从网络102上的其它DSD中请求环境状态信息,以标识用来接收一个或多个重新定向的命令的另一个DSD。另外,如果来自传感器122的随后的输入指示该随后的输入已经下降到了阈值以下,从而指示将数据存储在在DSD 106的NVM中是安全的,则处理器可以停止对命令进行重新定向。

也可以将包括在映射24、写指针26、命令队列28、缓冲器30中的数据,或者待存储在NVM中或者待从NVM中取回的数据存储在存储器140中,以使得可以在软件程序的执行期间由DSD 106的处理器(例如,图2所示的处理器138)来对所述数据进行访问(就这样的软件程序具有访问和/或修改数据的需要的意义而言)。除了利用卸载接口20将处理从主机101转移到DSD 106之外,在DSD 106处执行应用OS 12可以允许将否则已经由DSD 106的固件(例如,在图2中所示出的控制器固件11)所执行的任务转移至文件系统14、驱动程序20、和/或应用22。除了在上文中所提及的数据加密、数据压缩、擦除编码或其它纠错、用于存储在磁盘150或固态存储器128上的数据定向、数据的复制、以及数据镜像的任务之外,执行文件系统14、驱动程序21、或应用22的DSD 106的处理器(例如,如在图2中所示出的处理器138)可以使用映射24、写指针26、命令队列28和缓冲器30来执行与DSD 106中的存储介质的管理有关的其它任务。通过将一个或多个这样的任务从DSD 106的固件移动至在DSD 106的处理器上执行的文件系统14、应用22或驱动程序21,可以更加容易地在该区域中修改任务并且可以简化DSD 106的固件。

在一个示例中,映射24可以将数据的逻辑地址(例如,逻辑块地址(LBA))映射至与存储该数据的DSD 106的NVM中的位置相对应的物理地址(例如,块地址)。这可以允许执行应用OS 12的处理器基于数据的属性将数据定向至特定的NVM(例如,磁盘150或固态存储器128)或NVM内的特定区域。还可以将映射24存储在DSD 106的NVM(如磁盘150或固态存储器128)中,以使得映射24在DSD 106断电后可用。可替代地,存储器140可以是NVM,例如MRAM。

在一些情况下,执行应用OS 12的DSD 106的处理器可以使用映射24来执行间接寻址(address indirection),以更好地利用诸如磁盘150上的重叠的轨道的区域(即,SMR区域)或者固态存储器128中的单元(未示出)之类的存储介质。在固态存储器128的情况下,处理器可以使用间接映射系统来促进与存储介质上的不同物理位置处的特定逻辑地址相关联的数据的重写,以提供耗损均衡,从而使得更均匀地使用固态存储器128来延长固态存储器128的可用寿命。

在磁盘150上的SMR轨道的情况下,执行应用OS 12的处理器可以使用间接寻址来促进与磁盘150上的不同物理位置处的特定逻辑地址相关联的数据的重写,同时保持顺序写入。当数据针对特定的逻辑地址进行更新时,该更新通常写入磁盘150上的不同位置而不是逻辑地址的数据先前写入的位置,以避免必须重写重叠轨道的整个SMR区域。映射24可以用于跟踪将当前版本的数据针对特定的逻辑地址存储在哪儿。

写指针26可以由执行应用OS 12的处理器使用以跟踪在顺序写区域(例如,磁盘150上的SMR区域)中执行下一个写操作的位置。还可以将写指针26存储在DSD 106的NVM(例如,磁盘150或固态存储器128)中,以使得写指针在DSD 106断电后可用。

在另一个示例中,执行应用OS 12的处理器可以对命令队列28中未决的写命令的执行重新排序,以使得在执行所述未决的写命令时待写入的数据遵循待写的逻辑地址的升序或降序。在一个示例中,处理器可以按主机对执行命令的次序进行分组,以便以顺序的方式来执行来自特定主机的所有命令。对命令的这样的排序可以允许处理命令方面的提升的总体性能。此外,处理器可以管理命令队列28和映射24,以使得来自特定主机的所有写命令都写入NVM的局部区域中(例如,磁盘150上的轨道的特定区域中)。处理器还可以对针对磁盘150的未决的读和写命令的执行进行重新排序,以作为用于降低执行命令时将磁头136放置在磁盘150上所需要的移动的量的旋转位置优化(PSO)算法的一部分。

缓冲器30可以由执行应用OS 12的处理器使用以在磁盘150上执行读-修改-写(RMW)操作,例如,用于回收存储无效或过期数据的磁盘150的部分的垃圾收集。在这样的操作中,处理器可以读取轨道的区域,并且在在磁盘150上重写有效的数据之前,将来自该区域的有效数据存储在缓冲器30中。另外,处理器可以通过确定存储在该区域中的无效或过期数据的等级和/或使用该区域的频率来标识用于垃圾收集的特定区域或对用于垃圾收集的特定区域划定优先级。

嵌入式应用OS示例环境

图2是根据实施例的描绘了DSD 106的SoC 120的框图。在图2中,SoC 120包括处理器138、141和142。在其它实施例中,处理器138、141和142中的一个或多个处理器可以位于不同芯片上,以使得处理器138、141和142中的所有处理器不都位于SoC 120中。另外,可以将处理器141和142组合成一个处理器,或者在其它实施例中,处理器141和142可以充当处理器138的协处理器。

在一个实现中,处理器138、141和142中的每个处理器都是诸如ARM M3处理器的处理器内核。在另一个实现中,处理器138可以包括ARM A5或A6处理器,而处理器141和142可以是ARM M3处理器。在其他的实现中,可以使用不同类型的处理器,例如,英特尔处理器。

如在图2中所示,处理器138执行应用OS 12、文件系统14、文件接口16、对象接口18、卸载接口20、驱动程序21、以及应用22。在执行这样的软件时,处理器138与存储器140接合,并且在经由网络102进行通信时,处理器138与网络接口126接合。

如在上文中所讨论的,将应用OS12嵌入在DSD 106上或者在DSD 106上执行可以提供超过不在本地执行嵌入式应用OS的传统DSD的几个优点。这样的优点包括:支持通过以太网或WiFi接口(例如,经由网络接口126)的TCP/IP的能力、嵌入更适用于DSD 106的特定的存储介质的文件系统(例如,文件系统14)的能力、以及允许针对DSD 106的不同用途而开发新的应用(例如,应用22)的能力。如本领域技术人员将理解的,处理器141和142中的一个或两者可以运行旨在执行针对伺服固件10或控制器固件11的实时过程的实时操作系统(RTOS)。相比之下,处理器138运行应用OS 12,其允许如在下文中更加详细地讨论的文件系统14、文件接口16、对象接口18、卸载接口20、驱动程序21、和/或应用22的执行。

当将数据存储在DSD 106的NVM中或者从DSD 106的NVM取回数据时,处理器138执行应用OS 12来与执行控制器固件11的处理器141接合。控制器固件11控制DSD 106的NVM的操作,并且可以存储在SoC 120的专用存储器(例如,未示出的闪速存储器)中,或者可以存储在诸如磁盘150或固态存储器128之类的DSD 106的其它NVM上。

如上所述,处理器138处的应用OS的使用可以支持DSD 106的简化的固件。更加详细地,常规地通过执行DSD固件来执行的任务中的许多任务可以转移至由处理器138所执行的软件。因此,在一些实现中,控制器固件11可以主要仅仅用于将数据存储在NVM中或者从NVM中取回数据,其中由文件系统14、驱动程序21、和/或应用22来执行针对NVM的维护操作中的许多维护操作。可以转移至处理器138的任务可以包括例如数据加密、数据压缩、擦除编码或其它纠错、数据复制、数据镜像、基于数据的属性来定向数据以存储在磁盘150或固态存储器128上、基于数据属性来定向数据以存储在磁盘150的CMR区域(即,非重叠轨道的区域)或SMR区域(即,重叠轨道的区域)中、利用映射24的地址映射、写指针26的维护、命令队列28的排序、或者使用缓冲器30的垃圾收集。

在操作中,处理器138可以执行应用OS 12来与处理器141接合,并且向处理器141发送命令以从磁盘150或固态存储器128取回数据或将数据存储在磁盘150或固态存储器128中。处理器138与处理器141之间的接口可以是基于对象的、使用诸如SAS或SATA之类的标准的、或者是自定义接口。在基于对象的接口的情况下,处理器138可以使用应用OS 12来执行对象接口18以发送命令从而取回、存储、或删除存储在磁盘150或固态存储器128中的特定的数据对象。在使用诸如SAS或SATA之类的标准的情况下,处理器138可以使用文件系统14、文件接口16、或驱动程序21来发送、读、写或修整(trim)针对与数据相关联的特定的LBA的命令。在自定义接口的情况下,制造商可以提供定制的文件系统14或驱动程序21来向处理器141发送命令。

如果需要对磁盘150的访问,则处理器141与执行伺服固件10的处理器142进行通信。就这一点而言,处理器142经由SM控制信号38来控制SM 154以旋转磁盘150。处理器142还经由VCM控制信号34来控制VCM 132以将磁头136放置在磁盘150上。

图3描绘了根据实施例的DSD 106的用户空间和内核空间。应用OS 12可以将针对在用户空间中所示出的应用和库而使用的存储器与针对在内核空间中所示出的驱动程序、内核、和文件系统而使用的存储器隔离开,以提供对由处理器138所执行的软件的更好的容错性和安全性。如上所述,应用OS 12可以包括诸如Linux OS、Android OS、Windows OS、Mac OS或自定义的嵌入式OS之类的各种类型的OS。从而,图3的示例OS环境在其它实施例中可以发生变化,并且可以包括与在图3中所示出的不同的组件。

如在图3中所示,对象接口18和应用22可以在用户空间中运行,并且可以访问用户空间中的库44和46,以使得系统调用应用OS 12的内核(例如,内核37)。库44和46可以包括例如诸如Android的SQLite之类的具体的OS库、或者诸如Google Buffer协议或AWS协议之类的协议。

诸如网络接口驱动程序39、HDD驱动程序40和固态存储器(SSM)驱动程序42之类的硬件驱动程序可以在内核空间中进行操作。卸载接口20、文件接口16和文件系统14也可以在内核空间中进行操作。在其它实现中,可以将驱动程序21或文件系统14作为应用22来对待,并且在用户空间而不是内核空间(例如,自定义的DSD驱动程序或者用户空间中的文件系统(FUSE))中运行。

图3还描绘了可以在DSD 106的外部使用以便为DSD 106创建新的应用22的SDK 19。在一个实现中,SDK 19可以包括应用程序接口(API)以允许对应用框架和用户空间的某些库的访问,以使得开发者可以创建在处理器138上进行操作的新的应用22。

图4是根据实施例的可以由执行应用OS 12的处理器138所执行的处理器接口过程的流程图。在框402中,处理器138执行应用OS 12来与运行固件11的处理器141接合。

在框404中,处理器138使用应用OS 12来向处理器141发送命令以从NVM(例如,磁盘150或固态存储器128)中取回数据或者将数据存储在NVM中。如在上文中所讨论的,在指定设备块地址时对处理器141的命令可以是基于对象的,或者对处理器241的命令可以利用诸如SAS或者SATA之类的标准来指定数据的LBA。就这一点而言,应用OS 12可以执行文件接口16、对象接口18、或驱动程序21(例如,HDD驱动程序40或SSM驱动程序42)来取回NVM中的数据或将数据存储在NVM中。

图5是根据实施例的可以由处理器138执行的应用或接口安装过程的流程图。在框502中,处理器138经由网络接口126从网络102上的设备(例如,主机101)中接收计算机可执行指令。

在框504中,处理器138执行在框502中所接收的计算机可执行指令来安装应用22或者安装诸如对象接口18或卸载接口20之类的接口。如在上文中所讨论的,应用22可以包括由DSD 106的制造商所开发的应用和/或由其它所开发的应用。在一些实现中,可以使得SDK(例如,图3所示的SDK 19)可用以允许网络102上的用户开发他们自己的应用22来在DSD 106上运行并且能够访问某些库(例如,库44或46)。

多个接口示例

图6是根据实施例的描绘了主机101与由处理器138执行的不同软件接口之间的交互的图。如在图6中所示,主机101可以经由网络102与DSD 106的文件接口16、对象接口18、或卸载接口20进行通信。在其它实施例中,主机101可以仅仅与DSD 106的一种类型的接口进行通信,而网络102上的另一个主机可以与DSD 106的不同类型的接口进行通信。这通常可以在网络102上的设备的类型方面或者可以由网络102上的设备所运行的软件方面允许更大的灵活性。

在图6中所示出的示例中,主机应用48可以经由主机文件系统50和NFS/SMB端口(mount)52、或者通过具有或不具有FUSE 54的客户端库56来与DSD 106接合。当主机101通过NFS/SMB端口52接合时,文件接口16(例如CIFS/SMB)安装至主机文件系统50,其可以将命令从处理器138发送至DSD 106的处理器141,以取回NVM(例如,磁盘150或固态存储器128)中的数据或者将数据存储在NVM中。

当主机101通过客户端库56与DSD 106接合时,在处理器138中执行的对象接口18(例如AWS S3)或卸载接口20(例如Ceph、Hadoop或OpenStack)可以对存储在DSD 106的NVM中的对象执行诸如创建、读取、更新、和删除(CRUD)命令之类的对象命令。就这一点而言,对象接口18或卸载接口20可以向处理器141发送读或写命令以访问存储在NVM中的数据。

在DSD 106处执行的示例接口中的每个示例接口(即,CFS/NFS、AWS S3、Ceph、Hadoop、OpenStack)都由软件容器58内的应用OS 12(如Linux OS中的docker)实现,以提供额外层的抽象和资源隔离。例如,这可以利用不同的命名空间来完成,所述不同的命名空间允许不同软件容器在单个实例中进行操作同时通常避免与运行虚拟机(VM)相关联的开销。

图6还描绘了文件接口16与卸载接口20之间的示例交互,其中箭头从文件接口16指向卸载接口20。在这样的示例中,从NFS/SMB端口52所接收的数据可以包括作为文件接口16已知的某个目录的一部分的可执行图像以包括待由卸载接口20处理的数据。如果是这样的话,则文件接口16可以将该可执行图像传递至卸载接口20以供进一步的操作或处理。

图7是根据实施例的用于执行命令以用于使用文件接口或对象接口将数据存储在DSD 106的NVM(例如,磁盘150或固态存储器128)中或者从DSD 106的NVM中取回数据的流程图。可以由处理器138使用应用OS 12来执行图7的过程,以基于经由网络接口126所接收的命令来确定是执行文件接口16还是执行对象接口18。

在框702中,处理器138接收命令以用于将数据存储在NVM中或者从NVM中取回数据。数据是由处理器138经由网络接口126从网络102接收的,并且可以来自网络102上的主机或客户端(例如,主机101)或者来自网络102上的另一个DSD(例如,DSD 107)。

在框704中,处理器138基于在框702中所接收的命令的传输属性来确定是运行文件接口16还是运行对象接口18。图7B提供了对具有不同的传输属性的命令的接收的示例。在图7B的示例中,DSD 106从网络102接收多个命令(即,命令1至N)。这些命令中的每个命令都基于接收该命令的插口(socket)(即,插口1至N)而定向至合适的接口(例如,文件接口16、对象接口18、或卸载接口20)。在一个实现中,接口(例如,文件接口16、对象接口18、或卸载接口20)可以创建应用OS 12的插口和服务(例如,服务1、2或3),其基于与可以指定协议、本地地址、本地端口、远程地址、和远程端口的命令一起被包括的插口地址将到来的命令路由至合适的接口。在这样的实现中,命令的插口地址可以充当传输属性,该传输属性可以由应用OS 12使用以确定是使用文件接口16、对象接口18、还是卸载接口20。

返回图7A,在框706中,处理器138使用在框704中所确定的接口来执行所接收的命令。在使用文件接口16的情况下,处理器138可以使用诸如SATA或SAS之类的标准与处理器141接合。在使用对象接口18的情况下,处理器138可以向处理器141提供数据对象的LBA,或者可以在没有指定LBA的情况下提供数据对象的设备块地址。处理器138还可以使用具有文件接口16或对象接口18中的任何一个接口的自定义接口。

图8A是根据实施例的可以由处理器138执行的文件表示过程的流程图。在框802中,处理器138经由网络接口126接收第一数据对象和第二数据对象。如在上文中针对图7的框706所描述的,对象接口18可以由处理器138使用以将第一数据对象和第二数据对象存储在DSD 106的NVM中。

在框804中,处理器138执行文件接口16以将来自第一数据对象和第二数据对象的数据表示为文件。在一个示例中,可以基于从设备中所接收的、用于取回存储在DSD 106的NVM中的数据的请求来向网络102上的设备表示文件。就这一点而言,网络102上的不同的设备可以使用DSD 106的不同的接口来与DSD 106接合。例如,执行特定的文件系统的网络102上的一个主机可以通过指定与主机的文件系统中的数据相关联的LBA来取回DSD 106上的数据以及将数据存储在DSD 106上,而网络102上的另一个主机可以通过指定与存储在网络102中的特定的数据对象唯一地相关联的对象ID(OID)来取回DSD 106上的数据以及将数据存储在DSD 106上。通过使用文件接口16和对象接口18两者,DSD 106通常有可能执行从使用文件系统的设备所接收的以及执行从使用基于对象的存储的设备所接收的命令。这样的配置可以在在网络102上所使用的设备和软件、以及可以在网络102上所执行的分布式功能方面允许更多的灵活性。

图8B是根据实施例的可以由处理器138执行的数据对象创建过程的流程图。在框808中,处理器138经由网络接口126接收第一文件和第二文件。如在上文中针对图7的框706所描述的,文件接口16可以由处理器138使用以将第一文件和第二文件存储在DSD 106的NVM中。

在框810中,处理器138执行对象接口18以将来自第一文件和第二文件的数据表示为数据对象。在一个示例中,可以基于从设备(例如,主机101)所接收的用于取回存储在DSD 106的NVM中的数据的请求来表示数据对象。如在上文中关于图8A所述的,网络102上的不同的设备可以使用DSD 106的不同的接口来与DSD 106接合。

卸载接口示例

如在下文中参考附图9至13更加详细地描述的,DSD 106上所执行的卸载接口的使用可以允许否则可以由主机101或由网络102中的其它主机/客户端来执行的在DSD 106处的处理。通过将处理卸载或者转移到更靠近数据所存储的地方,通常有可能更高效地处理数据并减少网络业务,这是由于待处理的数据不需要由主机或客户端取回。另外,在一些情况下,由DSD在本地处理的数据可以不需要被发送回主机或客户端,这进一步提升了整体处理效率和网络业务。在需要处理大量数据的情况下,这些改进是尤其显而易见的。

图9是根据实施例的可以由处理器138执行的卸载接口过程的流程图。在框902中,处理器138经由网络接口126而从网络102上的设备(例如,主机101)接收计算机可执行指令。计算机可执行指令可以包括例如可执行图像、协议规则、或者可以由主机101执行的其它指令集。

在框904中,处理器138使用卸载接口20来执行计算机可执行指令,以对存储在DSD 106的NVM中的数据或者经由网络接口126从网络102接收到的数据进行转换。卸载接口20的示例可以包括例如Ceph软件平台、Hadoop软件框架、或OpenStack软件平台。接着,在框902中所接收的计算机可执行指令可以与由处理器138所使用的特定的卸载接口相对应。

在框906中,使用卸载接口20的处理器138将经转换的数据发送至网络102上的另一个设备和/或将经转换的数据存储在DSD 106的NVM中。如在下文中参考图11至13更加详细地讨论的,在一些实现中,可以将经转换的数据发送至DSD聚类中的另一个DSD中以用于对经转换的数据进行进一步的处理或转换。

图10A是根据实施例的使用由处理器138所执行的卸载接口20对从网络102所接收的数据进行转换的流程图。在框1002中,经由网络接口126从网络102接收数据。可以从网络102上的设备(例如,主机101或DSD 107)中接收数据。

在框1004中,处理器138可选地对在框1002中所接收的数据进行认证,以验证该数据来自网络102上的设备。在一个实现中,可以使用卸载接口20或应用22来应用公钥以验证由使用设备的私钥发送数据的网络102上的设备所加密的数字签名。在其它实现中可以使用其它认证方法。在其它实施例中,可以省略框1004。

在框1006中,使用卸载接口20的处理器138可选地基于预先确定的准则来标识在框1002中所接收的数据中的一部分数据以供转换。预先确定的准则可以起因于对经由网络接口126而从主机101所接收的计算机可执行指令的执行。例如,处理器138可以接收与一组数码照片相对应的数据。从主机101所接收的计算机可执行指令可以配置处理器138以标识与待转换成黑白照片的彩色照片相对应的数据中的一部分数据。这可以基于数据的属性,或者在数据对象的情况下,基于与数据对象一起发送的指示与彩色照片相对应的特定数据对象的元数据。

在框1008中,处理器138执行经由网络接口126而从主机101接收的计算机可执行指令来对在框1002中所接收的数据进行转换。在一个实现中,计算机可执行指令可以使得处理器138通过将所接收的数据与存储在DSD 106的NVM中的数据进行组合来对所接收的数据进行转换。例如,当接收的数据包括缺少邮政编码的地址时,计算机可执行指令可以使处理器138添加来自存储在NVM中的数据结构的邮政编码。

在框1010中,处理器138可选地生成关于经转换的数据的元数据。在一个示例中,元数据可以提供关于经转换的数据的统计信息,例如,由DSD 106所接收的某种类型的数据的计数。元数据可以存储在DSD 106的NVM中和/或经由网络接口126而发送至网络102上的设备。在其它实施例中,可以省略框1010。

在框1012中,执行卸载接口20的处理器138将经转换的数据存储在DSD 106的NVM中和/或将经转换的数据经由网络接口126而发送至网络102上的另一个设备。如在下文中参考图11至13所讨论的,可以将经转换的数据发送至网络102上的另一个设备,以用于对该经转换的数据进行进一步的处理或存储。

图10B是根据实施例的、可以由处理器138所执行的、用于使用卸载接口对从DSD 106的NVM中读取的数据进行转换的流程图。在框1014中,处理器138使用卸载接口20从DSD 106的NVM中取回数据。数据的取回可以例如响应于从网络102上的设备所接收的命令,或者是根据由从主机101所接收的计算机可执行指令而触发的功能。

在框1015中,处理器138可选地对在框1014中所取回的数据进行认证,以验证数据是正确的数据或者数据没有被改变。在一个实现中,可以使用卸载接口20或应用22以利用加密哈希函数来认证所取回的数据。在其它实现中可以使用其它认证方法。在其它实施例中,可以省略框1015。

在框1016中,使用卸载接口20的处理器138可选地基于预先确定的准则来标识在框1014中所取回的数据中的一部分数据以供转换。在一些实现中,预先确定的准则可以起因于对经由网络接口102而从主机101所接收的计算机可执行指令的执行。在其它实施例中,可以省略框1016。

在框1018中,使用卸载接口20的处理器138对在框1014中从NVM中所取回的数据进行转换。在框1020中,处理器138可选地生成关于经转换的数据的元数据,并且将该元数据发送至网络102上的设备和/或将该元数据存储在DSD 106的NVM中。在一个示例中,所生成的元数据提供关于经转换的数据的统计信息。在其它实施例中,可以省略框1018。

在框1022中,执行卸载接口20的处理器138将经转换的数据存储在DSD 106的NVM中和/或将经转换的数据经由网络接口126发送至网络102上的另一个设备。如在下文中参考图11至13所讨论的,可以将经转换的数据发送至网络102上的另一个设备,以用于对该经转换的数据进行进一步的处理或存储。

图11是根据实施例的描绘了用于按顺序对数据进行转换的DSD的聚类200的图。如在图11中所示,主机101给聚类200提供可执行指令以用于对数据进行处理。可执行指令可以包括例如,可执行图像、协议规则、或者由在聚类200中的DSD中的每个DSD处的卸载接口20所使用的可以由主机101执行的其它指令集。

将原始数据从网络102上的设备(例如,主机/客户端或DSD)馈送至DSD 106,其中,DSD 106执行从主机101接收的可执行指令以将原始数据转换成第一经转换的数据。原始数据的转换可以遵循诸如在上文中针对图10A所描述的过程之类的过程。

将第一经转换的数据发送至DSD 106,其中,还在将第二经转换的数据发送至聚类200中的另一个DSD之前将第一经转换的数据转换成第二经转换的数据。该过程可以继续设定的数量的变换,或者直到获得特定的结果为止。在其它实施例中,可以将该第二经转换的数据存储在DSD 107处,而不将第二经转换的数据继续发送至聚类200中的下一个DSD。

图12是根据实施例的描绘了用于执行MapReduce功能的DSD聚类300的图。正如图11的示例那样,主机101可以给聚类300提供可执行指令以用于处理数据。可执行指令可以包括例如,可执行图像、协议规则、或者可以由卸载接口20在聚类300中的DSD中的每个DSD处所使用的可以由主机101执行的其它指令集。

如在图12中所示,将聚类300中的DSD布置成三层以执行MapReduce功能。MapReduce功能可以提供对大型数据集合的并行处理,以搜索、分析、录入、和/或返回精简的数据集合。在图12的示例中,使用DSD的第一层来映射原始数据以向DSD的第二层输出经转换的数据,DSD的第二层打乱经转换的数据或者将经转换的数据重新分配至DSD的第三层以执行精简的功能。其它实施例可以包括DSD的三个以上的层,或者可以包括比在图12中针对每层所示出的更多的DSD。

在一个示例中,DSD 106、107、和108存储原始数据,并且使用诸如在上文中在图10B中所描述的过程之类的过程来对原始数据进行转换,并且将经转换的数据发送至聚类300的第二层中的DSD 109和110。DSD 109和110存储经转换的数据,并且还对数据进行转换并且将经转换的数据定向至聚类300的第三层中的DSD 111,DSD 111将经转换的数据精简成存储在DSD 112中的结果中。

在一个示例中,MapReduce功能可以用于从在聚类300的第一层中所接收的原始DNA序列的集合中标识DNA的某些组合。聚类300的第二层可用于在将经细化的数据集合发送至第三层以供进一步的精简之前,基于特性的更窄的集合来进一步细化经标识的DNA组合。由于每组DNA组合都存储在聚类300中的DSD上,因此随后可以在不同层处使用不同组的特性来执行不同的精简。例如,MapReduce功能的类似应用可以与化学、细菌、或病毒分析一起使用。

在另一个示例中,MapReduce功能可用于照片分析,其中,将原始照片存储在第一层中,并且使用在第一层处的搜索准则以将原始照片过滤为接着存储在第二层中的照片的精简集合。例如可以使用由DSD 111处的卸载接口所应用的蜂窝电话物流(logistical)信息,通过位置对存储在第二层中的精简集合进一步进行精简。

在另一个示例中,MapReduce功能可用于分析购物行为。存储在第一层中的原始数据可以包括所有购物者的数据,所述数据包括所购买的物品以及购买的时间。存储在第二层中的经转换的数据可以包括在某个时间段期间购买了特定的物品的购物者的数据。DSD 111的第三层可以存储标识存储在第二层中的购物数据中的哪些购物数据包括利用优惠券所购买的物品的经转换的数据。在这样的示例中,存储在DSD 112中的所得到的数据可用于针对特定购物者的目标市场营销。

在另一个示例中,聚类300可用于互联网或内联网搜索引擎功能,其中,DSD的第一层存储由用户解析的搜索的原始集合,第二层存储被精简为最频繁的搜索和最频繁的用户以实现更快的取回的经转换的数据,并且第三层可用于将经转换的数据进一步精简为非常高频率的搜索(例如“病毒式”点击)。

在另一个示例中,聚类300的MapReduce功能可以用于执行声音分析。第一层可以存储来自所有源和位置的所有的声音,第二层可以基于搜索准则(即,已知的语音匹配或识别、背景噪声辨识、或机器噪音识别)来存储原始数据的子集,并且DSD 111的第三层可以将存储在第二层中的数据与特定的声音或位置进行匹配以用于犯罪调查。

如在上文中由所提供的五个示例所展示的,在该公开的范围内的具有MapReduce的聚类300的许多更多的示例应用是可能的。

图13是根据实施例的描绘了每个DSD都充当计算节点的DSD的聚类400的图。如在图13中所示的,主机101向聚类400提供可执行指令以将聚类400中的DSD中的每个DSD(即,DSD 106和DSD 107至DSD N)来充当计算节点。可执行指令可以包括例如,可执行图像、协议规则、可以由卸载接口20在聚类400中的DSD中的每个DSD处所使用的可以由主机101执行的其它指令集,并且可以使的每个DSD的处理器将DSD转换成诸如Hadoop节点、或OpenStack节点之类的计算节点。接着,计算节点可以独立地或者与一个或多个其它节点协同地进行操作以形成分布式系统。

如在上文中所讨论的,通过使用DSD处的卸载接口,通常有可能通过利用本地数据处理来提升分布式系统中的处理效率和网络业务。另外,如在上文中所描述的卸载接口的使用可以允许在DSD的网络中执行更宽泛的多种设备、软件和功能。

其它实施例

图14和15描绘了用于实现在上文中所描述的过程的可替代的数据存储环境。本领域技术人员应当理解的是,其它实施例可以包括比在图14和15中所描绘的那些组件更多或更少的组件。

图14是根据实施例的描绘了数据存储系统206的框图,其中,SoC 220在包括HDA 244、246、248和250的多个HDA之间共享。每个HDA都可以包括至少一个旋转磁盘和用于在没有在HDA之间共享的某种电路的情况下从对应的磁盘表面访问数据的至少一个磁头。通过在多个HDA之间共享处理和/或存储器资源,通常有可能降低存储数据的成本,并且更好地利用处理和存储器资源。

如在图14中所示的,桥接器224包括用于在网络102上进行通信的网络接口226、存储器240、以及用于执行在上文中所讨论的某些软件的处理器238。网络接口226可以例如允许处理器238通过在以太网或WiFi上使用TCP/IP而在网络102上进行通信。存储器240可以表示用于暂时存储由桥接器224或SoC 220所使用的数据的数据存储系统206的易失性存储器(例如,DRAM)。在其它实施例中,存储器240可以是NVM,例如MRAM。

在图14的示例中,处理器238被配置为执行应用OS 12、文件系统14、文件接口16、对象接口18、卸载接口20、驱动程序21、以及应用22。应用22可以包括由数据存储系统206的制造商开发的应用和/或已经从网络102下载的独立开发的应用。例如,数据存储系统206可以经由网络接口226来接收计算机可执行指令,并且接着执行该计算机可执行指令以创建应用22。在一些实现中,可以使得SDK(例如,在图3中所示的SDK19)可用以允许网络102上的用户开发他们自己的应用来运行数据存储系统206。

驱动程序21或应用22可以包括:用于收集关于数据使用的信息的有关数据存储的应用(例如,“嗅探和存储”应用)、用于操作数据存储系统206的用户接口、用于监测HDA可靠性和/或在丢失数据之前将数据迁移至网络102上的另一个DSD或数据存储系统206内的NVM的HDA健康监测、数据加密、数据压缩、擦除编码或纠错、对数据进行定向以用于存储在数据存储系统206(例如,分层存储)的特定的NVM中、对存储在数据存储系统206中的数据的复制、或者对在数据存储系统206的HDA之间的数据进行镜像(例如,数据备份)。

另外,驱动程序21或应用22可以针对具体的用途(例如,通过网络102对某些类型的媒体进行流式传输、或者配置数据存储系统206以充当DVR或媒体服务器)来自定义数据存储系统206。驱动程序21或应用22还可以在网络102上提供某些网络功能,例如比特币挖掘、网络102上的另一个DSD或数据存储系统的识别以及在另一个DSD或数据存储系统上所存储的数据的识别、将来自故障的DSD或HDA NVM的数据迁移或复制到网络102上的另一个DSD或HDA NVM中、或者基于环境状态(例如,振动或温度)将数据重新路由至网络中的其它DSD。

可以将包括在映射24、写指针26、命令队列28、缓冲器30中的数据,或者待存储在HDA中或者待从HAD中取回的数据存储在存储器240中,以使得在软件程序的执行期间数据可以由处理器238来访问(就这样的软件程序具有访问和/或修改数据的需要的意义而言)。除了利用卸载接口20将处理从网络102上的主机102转移至数据存储系统206以外,在DSD 106处执行应用OS 12可以允许将否则已经由DSD 106的固件(例如,控制器固件11)所执行的任务转移至文件系统14、驱动程序20、和/或应用22。除了在上文中所提及的数据加密、数据压缩、擦除编码或其它纠错、用于基于数据属性对数据进行定向以存储在HDA中、用于对数据进行定向以存储在NVM的不同的区域(例如,SMR区域和CMR区域)中、数据的复制、以及数据镜像的任务之外,处理器238可以使用在上文中针对图1的实施例所描述的映射24、写指针26、命令队列28、和缓冲器30来执行与数据存储系统206中的HDA的管理有关的其它任务。通过将这样的任务从控制器固件11移动至在处理器238上执行的文件系统14、应用22、或驱动程序21,可以在区域中更加容易地修改任务。例如,新的HDA可以作为数据存储系统206的一部分来添加,所述数据存储系统206可以需要或受益于与通过改变数据存储系统206的固件相比可以更加容易地添加至桥接器224的新的驱动程序21或新的应用22。另外,将更多的任务从数据存储系统206的固件转移至在处理器238上进行操作的软件通常可以允许简化的固件。

与图1的示例实施例不同,处理器238与SoC 220的处理器239接合,该处理器239执行用于与处理器238接合的接口固件15。处理器238与处理器239之间的接合可以使用诸如SATA、PCIe、SCSI、或SAS之类的总线标准来实现。在其它实现中,处理器238可以使用对象接口18或自定义接口(例如,自定义的文件系统14)或卸载接口20来向处理器239提供例如指示用于取回HDA244、246、248或250中的数据对象或者将数据对象存储在HDA244、246、248或250中的物理位置的设备块地址。

SoC 220还包括用于执行控制器固件11的处理器241以及用于执行伺服固件10的处理器242。在其它实施例中,可以将处理器239、241或242中的两个或更多个处理器组合成单个处理器。在图14的示例中,处理器241和242中的每个处理器都可以与HDA 244、246、248和250进行通信,以从这些HDA中取回数据以及在这些HDA中存储数据。就这一点而言,SoC 220可以包括一个或多个复用器(未示出),以用于向HDA244、246、248和250中的每个HDA发送信号,例如VCM控制信号34、SM控制信号38、或读/写信号36。处理器241和242可以被配置为一次与一个HDA接合、或者同时与多个HDA接合,这取决于数据存储系统206的不同的设计准则。在一个示例中,处理器241和242可以一次只与一个HDA接合,以在数据归档实现中节省电力。在另一个示例中,处理器241和242可以同时与多个HDA接合,以提供对存储在不同的HDA中的旋转同步磁盘上的镜像数据的更快速的访问。

就这一点而言,HDA244、246、248和250中的每个HDA都可以包括诸如图1中的磁盘150的一个或多个旋转磁盘,以及用于在磁盘表面读数据和写数据的一个或多个头。正如图1中的实施例那样,在HDA 244、246、248和250中所使用的磁头可以通过利用VCM来移动致动器而相对于对应的磁盘表面放置。

图15是根据实施例的描绘了数据存储系统306的框图,其中,控制器324在包括DSD 307、308、309和310的多个DSD之间共享。在图15的示例实施例中,处理器338与DSD 307、308、309和310接合。处理器338与DSD之间的接合可以使用诸如SATA、PCIe、SCSI、或SAS之类的总线标准来实现。在其它实现中,处理器338可以使用对象接口18或自定义接口(例如,自定义的文件系统14)、卸载接口20、或驱动程序21来与DSD 307、308、309和310中的一个或多个DSD接合。就这一点而言,处理器338可以使用不同的接口来与不同的DSD接合。例如,处理器338可以使用文件系统14来与DSD 307接合,使用文件接口16来与DSD 308接合,使用对象接口来与DSD 309接合、以及使用卸载接口20或驱动程序21来与DSD 310接合。

如图15中所示,控制器324包括用于在网络102上进行通信的网络接口326、存储器340、和处理器338。例如,网络接口326可以允许处理器338使用TCP/IP通过以太网或WiFi而在网络102上进行通信。存储器340可以表示用于暂时存储由控制器324所使用的数据的数据存储系统206的易失性存储器(例如,DRAM)。在其它实施例中,存储器340可以是NVM,例如MRAM。

在图15的示例中,处理器338被配置为执行应用OS 12、文件系统14、文件接口16、对象接口18、卸载接口20、驱动程序21、以及应用22。应用22可以包括由数据存储系统306的制造商所开发的应用和/或已经从网络102下载的独立开发的应用。

与在上文中所讨论的驱动程序21和应用22类似,驱动程序21或应用22可以包括:有关数据存储的应用(例如,“嗅探和存储”应用)、DSD健康监测和/或向网络102上的另一个DSD或数据存储系统306中的DSD的数据迁移、数据加密、数据压缩、擦除编码或纠错、基于数据的属性而对数据进行定向以用于存储在数据存储系统306的特定的NVM中(例如,分层存储)、对存储在数据存储系统306中的数据的复制、或者对数据进行镜像(例如,数据备份或独立磁盘的冗余阵列(RAID)应用)。

另外,驱动程序21或应用22可以针对具体的用途(例如,在网络102上对某些类型的媒体进行流式传输、或者配置数据存储系统306以充当DVR或媒体服务器)来自定义数据存储系统306。驱动程序21或应用22还可以在网络102上提供某些网络功能,例如比特币挖掘、网络102上的另一个DSD或数据存储系统的识别以及在另一个DSD或数据存储系统中所存储的数据的识别、将来自故障的DSD NVM的数据迁移或复制到网络102上的另一个DSD NVM中、或者基于环境状态(例如,振动或温度)将数据重新路由至网络中的其它DSD。在该情况下,传感器(例如,传感器122)可以位于DSD 307、308、309和310中的每个DSD处,或者位于数据存储系统306中所选择的DSD处,以确定不同DSD处的环境状态。

可以将包括在映射24、写指针26、命令队列28、缓冲器30中的数据,或者待存储在HDA中或者待从HDA中取回的数据存储在存储器340中,以使得在软件程序的执行期间数据可以由处理器338来访问(就这样的软件程序具有访问和/或修改数据的需要的意义而言)。除了利用卸载接口20将处理从网络102上的主机102转移至数据存储系统306以外,在处理器338处执行应用OS 12还可以允许将否则已经在数据存储系统306中的DSD处由固件(例如,控制器固件11)所执行的任务转移至文件系统14、驱动程序20、和/或应用22。通过将这样的任务从控制器固件移动至在处理器338上执行的文件系统14、应用22、或驱动程序21,可以在区域中更加容易地修改任务。在一个这样的示例中,可以将具有不同类型的NVM的新的HDA添加至数据存储系统306,并且添加由处理器338所执行的新的驱动程序21或应用22以用于管理不同类型的NVM。

此外,本领域技术人员应当理解的是,可以将结合在本文中所公开的示例而描述的各种说明性逻辑框、模块、和过程实现成电子硬件、计算机软件、或其组合。此外,可以在使得处理器或计算机执行或运行某些功能的计算机可读介质上实施前述的过程。

为了清楚地说明硬件和软件之间的该可交换性,已经在上文中根据其功能而概括地描述了各种说明性组件、框、和模块。这样的功能是实现为硬件还是实现为软件则取决于特定的应用以及对整个系统所施加的设计约束。本领域技术人员可以针对每个特定应用以不同的方式来实现所描述的功能,但这样的实现决策不应该被解释为引起脱离本公开的范围。

可以利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件、或者被设计为执行在本文中所描述的功能的其任意组合来实现或执行结合在本文中所公开的示例来描述的各种说明性逻辑框、单元、模块、和控制器。通用处理器可以是微处理器,但在替代物中,处理器可以是任何常规处理器、控制器、微控制器、或者状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器的组合、与DSP内核相结合的一个或多个微处理器的组合、或者任何其它这样的配置。

结合本文中所公开的示例所描述的方法或过程的活动可以直接以硬件来实施、以由处理器所执行的软件模块来实施、或者以这两者的组合来实施。也可以以不同于示例中提供的次序来执行方法或算法的步骤。软件模块可以驻留在RAM存储器、闪速存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动介质、光学介质、或在本领域中公知的任何其它形式的存储介质中。一种示例性存储介质耦合至处理器,以使得处理器能够从该存储介质中读取信息、以及向该存储介质写入信息。可替代地,存储介质可以是处理器的组成部分。处理器和存储介质可以驻留在专用集成电路(ASIC)中。

提供了对所公开的示例实施例的前述描述以使得本领域技术人员能够制造或使用本公开中的实施例。对于本领域技术人员而言,对这些示例的各种修改将是显而易见的,并且可以将在本文中所公开的原理应用至其他示例而不脱离本公开的精神或范围。应该认为所描述的实施例在所有方面仅仅是说明性的而非限制性的,并且因此,本公开的范围由所附权利要求而不由前述的描述所指示。在权利要求的等效意义和范围内的全部改变都被包含在其范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1