位置独立文件的制作方法
【专利摘要】本发明公开了通过将数据单元转换成数据段和访问文件来管理数据单元,所述访问文件描述如何使用数据段的散列值来检索数据段。在数据存储操作中,将数据单元分成数据段并生成访问文件。访问文件包括数据段的分段方案信息、散列值的散列方案信息、描述散列值的散列识别信息、以及识别可用数据段处的位置的位置信息。在数据检索操作中,通过访问数据段并从其提取数据来检索来自数据单元的数据,其中基于数据单元的访问文件来检索数据段。
【专利说明】位置独立文件
【技术领域】
[0001] 以下发明涉及文件系统,并且更具体地,涉及用于位置独立文件的系统和方法。
【背景技术】
[0002] 电子内容的广泛使用已导致用户要求更大的电子存储量来存储此类电子内容。然 而,对于用户积累超过计算设备的容量的电子内容量通常是不常见的。例如,个人计算机上 的电子存储量可基本上大于便携式媒体播放器的电子存储量。因此,需要用户限制从个人 计算机传输至便携式媒体播放器的电子内容量。类似的问题可在试图在具有不同存储容量 的两个独立的计算设备上同步电子内容时出现。
[0003] 此类情况的一个解决方案通常是允许向不足量的设备添加另外的存储装置。然 而,向一些类型的设备添加存储装置通常是不可行的或甚至是不可能的。例如,一些类型的 便携式媒体播放器可能未被配置为允许扩展它们的存储容量。又如,可通过附接外部存储 设备诸如外部硬盘驱动器来扩展一些计算设备的存储容量,这些计算设备诸如便携式或膝 上型计算机。然而,由于膝上型计算机的便携性可能变得受限,所以该解决方案可能不可 行。
[0004] 此类情况的另一个解决方案通常是允许计算设备经由网络连接来访问另外的存 储装置。即,远程计算设备被配置为允许本地计算设备利用远程计算设备的存储容量。在 操作中,可将具有电子内容的文件存储在远程计算设备上。随后本地计算设备可通过将文 件从远程计算设备传输或复制到本地计算设备来利用该文件。可永久地或暂时地将文件存 储在本地计算设备上。然而,由于本地计算设备处的用户在访问前必须等待全部文件被传 输,这可能导致对访问的明显的时延。另外,在文件只是暂时地存储在本地计算设备上的情 况下,将有必要利用对文件的任何更新来更新远程计算系统。另外,这通常需要随后将本地 计算设备上的文件从本地计算设备传输回远程计算设备,从而增加另外的时延。
【发明内容】
[0005] 因此,本技术提供了用于管理和使用在多个位置处的电子内容的系统和方法。本 技术的一个方面是提供电子内容的数据存储。具体地,将代表电子内容的一个或多个文件 的数据单元转换成访问文件和存储在一个或多个位置(本地或远程)处的一系列数据段。 数据段中的每一个代表与不同的散列值相关联的数据单元的不同部分,并且可被配置为允 许通过通信网络对其进行高速传输。
[0006] 访问文件包含关于数据单元和相关联的数据段的信息。具体地,访问文件包括与 数据单元相关联的元数据、数据段的分段方案信息、散列值的散列方案信息、数据段的位置 和用于确定数据段的散列值的一个或多个散列识别值。在一些配置中,所述一个或多个识 别值可由数据段的散列值的散列生成。作为另外一种选择,所述值还可以是散列值本身。
[0007] 本技术随后可按如下所示用于进行数据检索。在本地系统处,不是存储数据单元, 而是存储电子内容的访问文件,并且本地系统被配置为使用对应的访问文件来服务数据单 元的任何请求。因此,当本地系统请求访问数据单元时,利用访问文件来确定需要用数据单 元的哪部分来履行请求,并且确定检索哪个数据段。另外,基于访问文件中的散列信息,通 过识别提供匹配的散列值的数据段来检索所需的数据段。
[0008] 在由数据段所代表的数据单元的使用率足够高的事件中,本技术允许至少使用频 率最高的数据段的持久存储。作为另外一种选择,可使用数据段和访问文件在本地系统处 重新组装数据单元。
[0009] 本技术还允许生成数据单元的不同版本,而不需要生成数据单元的每个版本的独 立的分立副本。例如,当访问数据段导致数据段的更新时,所更新的片段的所得散列值将不 同于初始数据段的散列值。因此,可仅通过生成代表数据单元的更新版本的更新访问文件 来"创建"更新的数据单元,其中通过基于更新的数据段提供新散列识别值来代表数据单元 的更新版本。
[0010] 本技术还可提供增强的文件系统及其方法。一般来讲,计算设备处的存储装置通 常包括使用的和未使用的部分。通过文件系统在逻辑上管理使用部分来提供存储在本地设 备上的数据单元的逻辑存储装置。在本技术中,文件系统还被配置为利用未使用部分作为 从远程系统检索的数据段的存储。即,如先前所述,访问文件存储在逻辑存储装置中并用于 服务相关联的数据单元的请求。随后将数据段存储在未使用的空间中并经由它们的散列值 来进行访问。在对于正检索的数据段不具有可用的足够空间的事件中,可基于优先级标准 将其他的数据段删除或覆写。另外,文件系统可被配置为通过基于一些标准的至和来自数 据段的数据单元来管理逻辑存储装置。
【专利附图】
【附图说明】
[0011] 图1示出了示例性计算设备;
[0012] 图2是访问文件和相关联的数据段的配置的实施例的示意图;
[0013] 图3是计算系统的实施例的示意图;
[0014] 图4是用于将数据单元转换成访问文件和相关联的片段的方法的实施例中的步 骤的流程图;
[0015] 图5是用于将数据单元转换成访问文件和相关联的片段的系统的实施例的示意 图;
[0016] 图6是用于使用访问文件和相关联的片段来访问数据单元的方法的实施例中的 步骤的流程图;
[0017] 图7是用于将访问文件和相关联的片段转换成数据单元的方法的实施例中的步 骤的流程图;
[0018] 图8是用于生成数据单元的不同版本的方法的实施例中的步骤的流程图;以及
[0019] 图9是计算系统的另选实施例的示意图。
【具体实施方式】
[0020] 下面详细讨论了本发明所公开的方法和布置的各种实施例。虽然讨论了特定的具 体实施,但应当理解这仅仅是为了说明性目的而进行的。相关领域中的技术人员将认识到, 在不脱离本公开的实质和范围的情况下可使用其他部件、配置和步骤。
[0021] 参考图1,其示出了可为便携式或固定式的通用计算设备100,所述通用计算设备 包括处理单元(CPU) 120以及将各种系统部件耦合到处理器120的系统总线110,这些系统 部件包括系统存储器,诸如只读存储器(ROM) 140和随机存取存储器(RAM) 150。其他系统存 储器130也可加以使用。可以理解,本系统可在具有多于一个CPU 120的计算设备上或者在 联网在一起以提供更大处理能力的计算设备的群组或群集上操作。系统总线110可以是若 干类型的总线结构中的任一种,这些总线结构包括存储器总线或存储器控制器、外围总线, 以及使用若干总线架构中的任一种的本地总线。存储在ROM 140等中的基本输入/输出系 统(BIOS)可以提供基本例程,该例程有助于在诸如启动期间在计算设备100内的元件之间 传输信息。计算设备1〇〇还包括存储设备160,诸如硬盘驱动器、磁盘驱动器、光盘驱动器、 磁带驱动器、固态驱动器等。存储设备160通过驱动器接口连接到系统总线110。驱动器和 相关联的计算机可读介质为计算设备100提供计算机可读指令、数据结构、程序模块和其 他数据的非易失性存储。在一个方面,执行特定功能的硬件模块包括存储在有形的计算机 可读介质中的软件部件,该有形的计算机可读介质结合有必要的硬件部件,诸如CPU、总线、 显示器等以执行该功能。基本部件对于本领域的那些技术人员是已知的,并且根据设备的 类型可以设想到适当的变型,这些设备的类型诸如设备是小型的手持计算设备、台式计算 机或是大型的计算机服务器。
[0022] 虽然本文所述的示例性环境采用了硬盘,但本领域的那些技术人员应当理解,在 示例性操作环境中也可使用可存储可由计算机访问的数据的其他类型的计算机可读介质, 该计算机可读介质诸如磁带盒、闪存卡、数字通用光盘、卡盘、随机存取存储器(RAM)、只读 存储器(ROM)、包含比特流等的电缆或无线信号等。
[0023] 为了使得用户能够与计算设备100进行交互,输入设备190代表任何数量的输入 机构,诸如键盘、鼠标、运动输入、语音、用于语音的麦克风、用于手势或图形输入的触摸屏 等。输出设备170也可以是本领域的那些技术人员已知的多个输出机构中的一个或多个。 例如,可连接于或可包含显示器或扬声器的视频输出或音频输出设备是常见的。另外,视频 输出和音频输出设备还可包括针对这些特定功能的增强性能的特定处理器。在一些情况 下,多模系统使得用户能够提供多种类型的输入以与计算设备100通信。通信接口 180通 常支配和管理用户输入和系统输出。对在任何特定硬件布置上操作的公开的方法和设备不 存在限制并且因此所述基本特征可容易地在开发出改进的硬件或固件布置之后替换为这 些硬件或固件布置。为了清楚地说明,示例性系统被呈现为包括各个功能块,(包括被标记 为"处理器"的功能块)。这些块所代表的功能可通过使用共享的或专用的硬件来提供,所 述硬件包括但不限于能执行软件的硬件。例如,图1中呈现的一个或多个处理器的功能可 由单个共享的处理器或多个处理器提供。(术语"处理器"的使用不应当理解为唯一地指 代能够执行软件的硬件。)示例性实施例可包括微处理器和/或数字信号处理器(DSP)硬 件、用于存储执行下文讨论的操作的软件的只读存储器(ROM)、以及用于存储结果的随机存 取存储器(RAM)。还可提供超大规模集成电路(VLSI)、现场可编程门阵列(FPGA)和专用集 成电路(AW)硬件实施例。
[0024] 各实施例的逻辑操作被实现为:(1)运行于通用计算机内的可编程电路上的一系 列计算机实施的步骤、操作或过程,(2)运行于专用可编程电路上的一系列计算机实施的步 骤、操作或过程;和/或(3)可编程电路内的互连的机器模块或程序引擎。
[0025] 现在转向图2,其示出了根据本技术的访问文件和相关联的数据段的配置的示意 图。如上所述,本技术的一个方面提供了用于存储数据单元的替代方法,所述数据单元代表 电子内容的一个或多个项目。参考图3和4将详细描述将数据单元转换成数据段和访问文 件的处理。重新参考图2,数据单元的转换结果是云或访问文件202和存储在一个或多个位 置206的一个或多个数据段204。
[0026] 访问文件202是包括数据集合的数据文件,所述数据集合指出如何经由数据段 204来访问数据。例如,如图2所示,访问文件202可被配置为存储与数据单元相关联的元 数据202A。如图2所示,元数据202A可包括数据单元的扩展的逻辑大小。然而,本发明并 不限于此,并且元数据202A还可包括与数据单元相关联的任何类型的元数据。举例来说, 该元数据可包括日期信息、用户信息、文件类型信息以及属性信息。然而,202A还可包括任 何其他类型的识别信息或比上述信息少的信息。在所述数据单元代表电子内容的多于一个 项目的情况下,还可将每个项目的元数据包括在访问文件的元数据202A中。
[0027] 除了元数据202A,访问文件还可包括分段方案信息202B。即,描述数据段的配置 的任何信息。例如,如图2所示,分段方案信息202B可以是数据段204的大小。虽然图2 中的分段方案信息202B示出了全部数据段204具有相同的大小64K,但是本技术并不限于 此。如上所述,在一些情况下,各种数据段204的大小可变化。另外,分段方案信息202B并 不仅限于大小信息。相反,在一些情况下,分段方案信息202B可规定关于如何构造数据段 204的另外的细节。例如,数据段204可被配置为包括其他部分和由与数据单元相关联的 数据组成的有效载荷部分的分组或文件。其他部分可包括用于错误检查、用于指示数据段 中的数据的数据单元内的开始和结束位置、数据段和其他片段的关系以及任何其他信息的 部分。因此,分段方案信息202B可规定数据段204的组成,使得在检索时将数据从数据段 中正确地提取出来。规定该数据段204的结构和配置的任何其他信息还可在分段方案信息 202B中被规定。
[0028] 如上所述,数据段的大小可变化。然而,在许多配置中,可选择数据段的大小以提 供对数据段的快速且有效的访问。即,可设置数据段的大小使得它们可以很小的或没有延 迟或滞后在联网的设备之间传输。例如,可以相对小的带宽要求传输上述64K的片段。另 夕卜,还可选择片段大小以利用特定数据存储或数据分组进行配置。即,通常不将许多类型的 存储设备和数据分组配置为各自访问数据,而是访问包括特定量的数据的块。因此,本技术 还允许设置片段的大小以利用此类块的配置以便保持最高可能的吞吐量。
[0029] 本技术的一个方面利用与数据段206相关联的散列值来检索数据段。因此,为了 确定如何正确地确定散列值,访问文件202还可包括散列方案信息202C。在图2中,散列方 案信息202C指定SHA2的散列类型。然而,本技术并不仅限于此,并且本技术中可使用任何 其他类型的散列方案。下面将更加详细讨论散列方案的使用。
[0030] 虽然本发明的描述将涉及术语"散列"、"散列值"、"散列函数"等,但是不应考虑以 任何方式对这些术语的使用进行限制。例如,本文中所用的"散列函数"指代提供第一大小 的第一数据集与小于第一大小的第二大小的第二数据集之间的映射或转换的任何子例程、 算法、处理、方法等。
[0031] 访问文件202的另外的部分是位置信息202D。位置信息202D可指定定位有数据 段204的一个或多个位置206。在图2中,位置信息202D作为可信的统一资源定位符(URL) 字符串的列表示出。然而,位置信息202D可在可定位有数据段204的位置处采用任何格式 并且可指定任何类型的资源。另外,在一些配置中,位置信息202D可指示访问该位置的特 定次序。例如,在其中数据段的冗余版本将要存储在主要和次要位置处的情况下,位置信息 202D可指定首先访问主要位置,并且仅在数据段无法定位在主要位置时访问次要位置。
[0032] 尽管位置信息202D的内容可以在创建访问文件时固定,但是在一些配置中,位置 信息202D可随时间更新。即,在数据段的存储位置改变或者以其他方式调整的事件中,存 储访问文件202的计算系统可被配置为接收此类更新并自动调整访问文件202。此类调整 可以是全局性的或以逐个文件为基础。另外,更新还可反映利用访问文件202的计算设备 的位置。即,基于计算设备的位置,所述更新可反映将导致对与访问文件202相关联的数据 段的改善的访问的存储位置。
[0033] 访问文件202还可包括散列识别(散列ID)信息202E。即信息直接或间接地指 定数据段204的散列值。在一些配置中,散列ID信息202E可指定数据段的散列值的列表。 作为另外一种选择,其可优选地限制访问文件202的文件大小或向访问文件提供基本上相 同的大小和内容。在此类情况下,与不同数据单元相关联的散列值的数量可基于不同数据 单元的大小显著变化。因此,在一些配置中,散列ID信息202E可指定一个或多个复合散列 值。即,从与数据段相关联的散列值计算散列值。例如,如图2所示,对于与数据段204相 关联的散列值208,可计算复合散列值210并将其用作散列ID信息202E。因此,在检索数 据期间,可使用复合散列值210计算散列值208以检索数据段204。
[0034] 如上所述,数据段204可包括指定数据段204的每个之间的关系或其与数据单元 的关系的信息。然而,本技术中该类型的信息还可或作为另外一种选择,通过复合散列值 210来存储。即,利用复合散列值210不仅可识别数据段204,还可确定各种数据段204之 间的关系。例如,当数据单元经历分段以生成各种数据分段204时,存在定义各种数据段的 内容如何在数据单元内布置的特定的次序、层次等。因此,为了生成复合散列值210,散列值 208可首先以对应于数据单元中的数据段204之间的关系的次序布置。作为另外一种选择, 还可生成代表关系的数据。然后,可通过获取散列值208的该结构的散列值或散列值208 和结构数据的组合来生成复合散列值210。因此,复合散列值210不仅存储散列值208,还 存储各种数据段204的关系信息。因此,需要将关于数据段204之间的关系的单独的信息 存储在访问文件202或数据段204内,这进一步减少了数据段204和访问文件202的大小。
[0035] 值得注意的是在一些配置中,访问文件可包括多个复合散列值208。复合散列值 208的数量可基于各种因素。例如,如果数据单元包括多个文件或可沿明确限定的边界被分 成多个部分,则可对于这些文件或部分生成单独的复合散列值208。因此,如果仅需要这些 文件或部分中的一个,则只有复合散列值208中的对应的一个需要处理以确定数据段204 中的相关联的一个。
[0036] 上述存储配置启用了用于管理数据单元的新类型的文件系统。其参考图3示意性 地例示。图3为根据本技术配置的计算设备300的示意图。
[0037] 如图3所示,计算设备300包括文件系统302和用于存储计算系统300的数据并 由文件系统302管理的核心存储装置304。在图3中,文件系统302被指示为增强的分层文 件系统(HFS+),然而,本技术并不限于此,并且利用本技术可不限制地使用其他任何类型的 文件系统。
[0038] 在操作中,文件系统302将核心存储装置304管理作为两个或多个存储区域。具 体地,可将核心存储装置304管理作为一个或多个的逻辑卷部分306 (非阴影化的)和其他 部分308 (阴影化的)。文件系统302管理逻辑卷部分306以定义用于管理存储在计算系统 中的数据单元的逻辑卷310。可由文件系统302以基本上常规的方式管理逻辑卷310以执 行数据检索和数据存储。
[0039] 文件系统302可使用其他部分308来定义用于在计算设备300处管理和存储数据 段的内容可寻址存储装置(CAS)312。为了执行数据检索和数据存储,文件系统302和CAS 312按如下进行操作。
[0040] 相对于数据检索,如上所述,本发明允许由访问文件和一个或多个数据段来代表 数据单元。因此,当响应于请求而需要由计算设备来访问此类数据单元或其部分时,文件系 统302被配置为处理数据单元的访问文件并确定该请求所需的数据段。
[0041] 在本技术中,访问文件的位置可变化。在一些配置中,访问文件可存储在计算设备 300内。另外,在计算设备300内,访问文件可存储在一个或多个位置中。例如,在一个或多 个配置中,访问文件可存储在逻辑卷310内。在一个配置中,访问文件和在其中存储的任何 数据单元一起作为另外的文件而存储在逻辑卷310中。在另一个配置中,对于访问文件的 存储可留出逻辑卷310的一部分或甚至单独的一个逻辑卷(未示出)。然而,不需将访问 文件存储在逻辑卷内。相反,可使用计算设备300中的其他数据存储装置。例如,文件系统 302可具有专用的存储器或高速缓存以用于存储访问文件。
[0042] 使用该信息,文件系统302可随后分析或查询CAS 312以确定其中的数据段是否 可用。在一些配置中,分析可以是扫描CAS 312以确定数据段是否存储在其中,并包括基于 访问文件获取的散列值。在其他配置中,文件系统302可访问在计算设备300处维护的表, 该表包括存储有数据段的CAS 312中位置的列表和与CAS 312中的位置中的每个相关联的 散列值。然后,确定在CAS 312中存在的数据段是否与期望的散列值相关联。
[0043] 如果匹配来自访问文件的散列值的数据段在CAS 312中不可用,则可从远程存储 装置314中检索数据段并将该数据段放置于CAS 312中。远程存储装置314中数据段的定 位可以与CAS 312中数据段的定位相同或不同的方式执行。一旦数据段在CAS 312中可 用,数据就按需要从数据段中提取。一旦CAS 312用数据段填充并且需要检索另外的数据 段,就可覆写较旧的或使用频率不高的数据段。相似地,如果需要将数据单元添加至逻辑卷 310并且CAS 312用数据填充段,则可覆写较旧的或使用频率不高的数据段以允许扩展逻 辑卷。下面将参考图6对数据段的检索和访问过程进行更加详细的描述。
[0044] 相对于数据存储(即将逻辑存储装置310中的数据单元转换成访问文件和数据 段),文件系统302被配置为处理数据单元以生成访问文件和数据段。可随后将数据段复制 到至少CAS 312。另外,可将数据段复制到远程存储装置314。可随后将逻辑存储装置310 中的数据单元删除并且计算系统300可随后依靠访问文件和数据段所定义的数据单元的 版本。下面将参考图4和5对数据存储过程进行更加详细的描述。
[0045] 现在转向图4-8,如上所述,提供了利用访问文件和数据段的结构的各种方法以实 现计算设备的文件系统的各种特征。
[0046] 首先,将参考图4和5对转换数据单元的示例性方法和系统进行描述。图4为根 据本技术的用于将数据单元转换成访问文件和相关联的数据段的示例性方法400中的步 骤的流程图。图5为用于将数据单元转换成访问文件和相关联的数据段及其存储内容的计 算设备(诸如图3中的计算设备300)内的示意性系统500的示意图。如图5所示,可提供 控制器502以控制指令或配置信息504并向系统500的部件提供指令或配置信息504以进 行方法400。如上参考图2所述,配置信息504可包括分段方案信息、散列方案信息和位置 信息。
[0047] 方法400开始于框402处并继续进行到框404。在框404处,可选择要进行转换的 数据单元。例如,如图5所示,控制器502可确定需要将本地存储装置508中的特定数据单 元506转换成访问文件和数据段。在一些配置中,框402处的选择可以是基于一个或多个因 素或标准的自动选择。举例来说,此类标准可包括用途、年龄和大小。然而,本技术并不限 于此并且控制器502可被配置为分析任何其他的因素或因素的组合以识别数据单元506。 在其他配置中,框404处的选择可以是手动选择。即,用户可直接识别本地存储装置508中 的数据单元。在另外的其他配置中,可提供对数据单元506的自动和手动识别的组合。
[0048] 一旦在框404处选择了数据单元506,方法400就继续进行以处理数据单元,从在 框406处将数据单元506分成数据段开始。例如,如图5所示,可将数据单元506引导至分 段系统510的数据单元处理器512以基于配置信息504来生成数据段514。可根据各种标 准执行数据单元506至数据段514的分段。该标准在数据单元处理器512中是固有的、在配 置信息504中被提供,或二者的组合。例如,如上所述,标准可指定数据段514的大小。标 准还可指定要发生分段的数据单元506中的位置。例如,标准可指定在每η个字节处进行 分段。作为另外一种选择,可对数据单元506进行分析以基于与数据单元506的不同部分 相关联的功能性、关键性、或其他特性确定数据单元504的逻辑片段或片段组。另外,该标 准可取决于将利用数据段514并与数据段514进行交互的系统。例如,如果特定系统或通 信网络对于具有特定大小或具有特定配置的数据段更有效率地操作,则可将数据单元处理 器512配置为将数据段514配置为符合该配置。然而,本技术并不限于任何特定分段方案 并且可使用任何类型的分段方案。
[0049] 在框406处由数据单元处理器512生成数据段514后,在框408处可生成数据段 514的散列值。例如,如图5所示,分段系统510还可包括用于生成各种数据段514的散列 值518的散列模块516。如先前所述,本技术可利用任何类型的散列方案,然而,为了避免冲 突的危险,可使用提供基本上唯一的散列值的散列方案。用于此类目的的一种示例性散列 方案是SHA2。
[0050] -旦在框408处由散列模块516计算出了散列值518,就可在框410处生成或组装 访问文件。具体地,分段系统510可包括访问文件生成器520以生成访问文件。访问文件 生成器520可将散列值518与数据单元506的元数据522以及配置信息504组合以生成数 据段514和数据单元506的访问文件524。
[0051] 可以若干种方式来获取元数据522。例如,如图5所示,数据单元处理器512可被配 置为从数据单元506提取元数据522并将元数据522转发至访问文件生成器520。然而,本 技术并不限于此并且可使用分段系统510内部或外部的任何其他方法来获取元数据522。
[0052] 相对于要包括在访问文件524中的散列方案信息、分段方案信息、以及位置信息, 可由访问文件生成器520从配置信息504获取这些信息。作为另外一种选择,利用此类信 息的分段系统510的模块或单元还可将该信息转发至访问文件生成器520。
[0053] 在框408和410之后或同时,在框412处可存储数据段514。数据段514进行存储 的位置可包括本地存储装置508、远程存储装置526、或两者的组合。
[0054] 在一些配置中,如上参考图3所述,总是在远程存储装置526中存储数据段514以 提供存档副本以防有必要覆写数据段514的情况。
[0055] 如上所述,在框410处生成的访问文件524将包括位置信息。在至少一些数据段 514存储在本地存储装置508中的配置中,可在访问文件524中识别本地存储装置508,使 得本地系统可知道在本地存储装置508中查找数据段514。然而,在一些配置中,本地系统 (即文件系统)可被配置为在本地存储装置508中检查数据段514。因此,访问文件生成器 520可被配置为从访问文件中的地址中排除本地存储装置508,以进一步减小访问文件524 的大小。
[0056] -旦在框412处存储了数据段514,并且在框410处组装了访问文件524,方法400 就可继续进行到框414。在框414处,本地系统可被重新配置为使用访问文件524来服务数 据单元506的任何请求。该处理可包括将访问文件524存储在本地存储装置508中或本地 系统中的其他存储装置,并针对本地系统配置文件系统以经由访问文件524来访问数据单 元的数据。任选地,在框416处可从本地存储装置508中删除或清除数据单元506。然后, 方法400恢复步骤418处的可包括重复方法400的先前处理。
[0057] 图6为根据本技术的用于使用访问文件和相关联的数据段来访问数据单元的示 例性方法600中的步骤的流程图。方法600开始于框602处并进行至框604。在框604处, 接收访问数据单元的至少选择部分的请求。即,取决于应用或请求,仅需要数据单元的一部 分。在典型的计算设备中,由管理本地系统的数据存储设备的一个或多个文件系统来服务 本地系统中的数据单元的请求。因此,框604可包括将数据单元的选择部分的请求转发至 文件系统。
[0058] -旦在框604处文件系统接收到请求,在框606处文件系统就可确定应如何服务 对数据单元的请求。即,在框606处,文件系统可确定是否其已被配置为使用访问文件和数 据段来服务与数据单元相关联的请求。如果文件系统还没有按此配置,则方法可继续进行 到框608并且可使用常规方法从本地存储装置中检索数据单元。然后,方法600可继续进 行到框610并恢复包括重复方法600的先前处理。
[0059] 如果在框606处确定了文件系统被配置为利用访问文件来服务对数据单元的请 求,则方法600可继续进行到框612。在框612处,可获取或访问所请求的数据单元的访问 文件。在本技术中,访问单元的位置可变化。在一些配置中,访问文件可存储在本地系统的 本地存储装置内,或者与驻留本地系统上的数据单元一起存储或者存储在特定位置诸如专 用的存储位置中。例如,本地系统可包括高速缓存或用于存储访问文件的其他保留的存储 区域。作为另外一种选择,访问文件还可存储在一个或多个远程位置中。在此类配置中,在 框612处文件系统可被配置为在接收到请求时访问远程位置并制作访问文件的永久的或 暂时的副本以服务该请求。
[0060] 一旦在框612处获取了访问文件,就可在框614处开始处理访问文件以获取服务 请求所需的数据段。例如,可在框614处基于请求处理访问文件,以识别将响应请求的特定 的数据段以及它们对应的散列值。例如,可利用访问文件中的元数据信息和分段方案信息 来确定哪个数据段与请求相关联。然后,可使用分段方案信息和散列ID信息来确定识别的 数据段的散列值。在需要整个数据单元的情况下,获取所有数据单元的散列值。然而,在仅 需要数据段的一部分的情况下,仅需要检索这些片段的散列值。然而,本技术并不限于此。 艮P,可获取任何数量的散列值,只要它们包括服务请求所需的数据段的散列值。
[0061] 该配置的一个优势在于在很多情况下,用户通常需要访问数据单元的特定部分而 并不需要立即访问整个的数据单元。例如,在数据单元由音频或视频内容组成的情况下,可 仅需要向对应于当前正在显示的音频或视频内容部分的数据单元的部分以及一些另外的 部分提供访问(例如,提供内容的一些缓冲)。因此,本技术允许识别数据单元的这些部分 以及相关联的数据段。
[0062] 在框614处在识别数据段并获取它们的散列值后,在框616处,可配置本地存储装 置以提供对所识别的数据段的访问。该框可包括首先在各种存储位置中执行搜索以确定所 识别的数据段的位置。具体地,这包括将所识别的数据段的散列值与各种存储位置处的可 用的数据段的散列值进行比较。在一些配置中,可动态地计算各种位置的数据段的散列值, 在其他的配置中,可预先计算各种存储位置处的数据段的散列值。在此类配置中,可将这些 散列值存储在与数据段分开的数据文件中,或嵌入到数据段内。
[0063] 相对于搜索的位置,所述位置可包括访问文件内的至少指定的位置。然而,搜索的 位置还可包括其他位置。例如,还可搜索本地系统中的存储位置。但是,本技术并不限于此 并且方法600可被配置为包括任何其他默认的搜索位置,包括本地和远程位置。另外,如上 所述,可以在访问文件或本地系统中指定的预先定义的顺序来搜索位置。
[0064] 除了进行上述搜索外,框616还可涉及通过永久地或暂时地在本地系统中制作所 识别的片段的副本来配置本地存储装置以包括所识别的片段。在本技术中,在本地系统中 存储所识别的片段的位置可变化。在一些配置中,可在本地系统中的本地存储装置内存储 所识别的片段,或者与驻留于本地系统的数据单元一起存储,或者存储在特定位置诸如专 用的存储位置中。例如,本地系统可包括高速缓存或用于存储所识别的片段的其他保留的 存储器区域。
[0065] 在框616处将本地系统配置为包括所识别的数据段后,方法继续进行到框618。在 框618处,随后可使用本地系统中的数据段来服务请求。即,可从数据段中提取数据以提供 针对请求的数据,而不需使全部数据单元可用。随后方法600继续进行到框610并恢复包 括重复方法600的先前处理。
[0066] 如上参考图6所述,可使用本地存储装置中的数据段来服务请求。然而,在数据 单元的大部分经由数据段频繁被访问的情况下,在本地系统中重新组装数据单元可更有效 率。图7中示出了该处理。图7为根据本技术的将访问文件和相关联的数据段转换成数据 单元的示例性方法700中的步骤的流程图。方法700开始于框702并继续进行到框704。
[0067] 在框704处,选择要存储至本地系统处的数据单元。如上所述,可基于使用标准诸 如与数据单元相关联的数据段的使用频率来选择数据单元。然而,本技术并不限于此并且 可使用任何其他标准来选择数据单元。例如,如果本地系统处的另外的空间可用,则可不经 由数据段而在本地存储一个或多个数据单元。又如,需要归档数据单元或需要制作复件,这 对组装数据单元可为有必要的。在本技术中还可利用任何用于选择数据单元的其他标准。
[0068] 在框704处选择数据单元后,在框706处可检索数据单元的所有数据段。这可以 与如上参考图6所述的方法基本上相同的方法执行。然后,一旦本地系统处的所有的数据 段可用,就可在框708处使用数据段来重新组装数据单元。具体地,可结合数据段中存在的 任何信息,使用分段方案信息、元数据、以及其他访问文件中的信息来将数据段以适当的布 置放置,从而重新组装数据单元。
[0069] 一旦在框708处在本地系统处重新组装数据单元,就可在框710处将本地系统重 新配置。即,如果在本地系统处维护重新组装的数据单元,则在框710处可重新配置本地系 统以使用重新组装的数据单元来服务对利用数据单元的将来的请求。
[0070] 任选地,在框710处重新配置本地系统以利用重新组装的数据单元后,在框712处 可删除访问文件和相关联的数据块,在一些情况下,这可包括在本地系统处删除访问文件 和相关联的数据块。因此此类配置在远程系统中维护了数据单元的存档复件。作为另外一 种选择,框712可涉及在本地系统和一个或多个远程系统两者中删除访问文件和相关联的 数据块。因此,可删除远程系统中的数据单元的存档副本。然而,在一些情况下,可将删除 限制为对非存档的远程系统进行以在如果数据单元从本地系统中不注意地删除或如果以 后在本地系统处需要数据单元的"干净"的副本的情况下,提供文件的备份副本。
[0071] 如上所述,根据本技术来配置的文件系统提供了与常规方法相比利用减少量的空 间的文档型式系统。下面参考图8来示出了该型式系统的操作。图8为根据本技术的用于 生成数据单元的不同版本的示例性方法800中的步骤的流程图。
[0072] 方法800开始于框802处并继续进行到框804。在框804处,文件系统检测到已经 更新复制到本地系统的至少一个数据段。例如,文件系统可检测到用户已发出了改变数据 段内的数据的命令。作为另外一种选择,文件系统可检测到数据段的散列值不再与根据访 问文件的散列值匹配。可无限制地使用用于检测数据段中的改变的任何其他方法。
[0073] -旦在框804处检测到数据段中的改变,方法800就继续进行到框806以生成数 据单元的新版本。具体地,在框806处,文件系统利用一个或多个更新的数据段来生成更新 访问文件。更新访问文件基本上与和初始数据段相关联的访问文件相似。然而,生成更新 访问文件以包括关于一个或多个更新的数据段的散列值的信息。另外,可调整针对更新访 问文件的元数据或其他信息以反映涉及初始访问文件中的数据单元的不同版本的更新访 问文件。例如,更新访问文件还可包括重新涉及初始访问文件的信息。
[0074] 在一些情况下,与响应于更新的数据段来生成完全的访问文件相反,更新的访问 可被配置为包括基于一个或多个更新的数据段和初始访问文件中的信息来指示如何生成 数据单元的新版本的信息。即,更新访问文件可被配置为包括识别初始访问文件的信息和 识别初始访问文件所需的改变的信息以获取用于访问数据单元的新版本的数据段。
[0075] 无论更新访问文件的配置如何,一旦在框806处生成更新访问文件,方法800就继 续进行到框808。在框808处,可将更新的数据段存储在与访问文件相关联的存储位置处以 用于将来的访问。框808还可包括将更新访问文件存储在在共享的环境中的远程位置处。 艮P,将访问文件存储在其他用户可访问的存储位置处,使得其他用户可经由更新的数据段 来访问更新的数据单元。
[0076] 在框808之后或同时,方法800可执行框810。在框810处,可重新配置本地系统 使得本地系统使用更新访问文件来服务对数据单元的新版本的请求。在框808和框810之 后,方法800可任选地继续进行到框812。在框812处,如果在本地系统处不进一步使用初 始数据单元,则可从本地系统删除初始访问文件。例如,如果在本地系统处的用户的目的是 覆写初始数据单元。类似地,如果仅使用一个或多个更新的数据段,则可从本地系统删除初 始数据段。最后,方法800可继续进行到框814并恢复包括重复方法800的先前处理。
[0077] 尽管上面描述了提供通过使用上述数据段方案扩展本地存储装置的容量的方法 的各种实施例,但是本技术并不仅限于此。在一些实施例中,还可利用数据段的用途以增强 本地系统的性能。
[0078] 在许多情况下,计算设备可包括具有各种数据传输速率、访问速度、或相对于向存 储设备读取或写入数据的其他数据访问尺度的各种类型的存储设备。例如,固态存储设备 诸如固态驱动器,其通常比磁性存储设备诸如具有磁头的硬盘驱动器具有明显更高的访问 速度。然而,固态驱动器的每兆字节的费用通常明显高于具有磁头的硬盘驱动器的每兆字 节的费用。因此,在许多类型的计算设备中,具有磁头的硬盘驱动器仍然是主要的存储介 质。
[0079] 但是,需要指出的是在许多情况下,计算设备使用的数据量通常明显小于具有磁 头的硬盘驱动器的总存储容量。因此,本技术的一个方面是利用数据段的使用来提供有效 的复合存储装置。下面参考图9来描述此类复合存储设备的操作和配置。
[0080] 图9是根据本技术的另选实施例配置的计算设备900的示意图。如上所述,计算 设备900可包括管理第一物理设备904和第二物理设备906的文件系统902。为了进行示 意性的说明,第一物理设备904是具有高访问速度和低存储容量的存储卷,并且第二物理 设备906是具有低访问速度和高存储容量的存储卷。例如,第一物理设备904可以是磁盘 驱动器,并且第二物理设备906可以是固态硬盘驱动器。
[0081] 尽管参照文件系统对图9的示例性实施例进行了描述,但是其只是为了便于说 明。然而,本文中所述的多个存储设备的控制可在文件系统级、卷管理器级、或甚至设备驱 动级以无限制的基本上相同的方式实现。
[0082] 在操作中,数据可由计算设备900在第二物理设备906中以分段的形式在本地存 储。可根据上述方法的任一种生成或存储此类数据段,其中第二物理设备906以与上述远 程存储设备基本上相同的方式操作。因此,文件系统902可被配置为将特定数据单元与存 储在第二物理设备906中的特定系列的数据段相关联。
[0083] 在常规系统中,如果计算设备900此后请求数据单元的至少一部分,则计算设备 900将仅访问第二物理设备906中的合适的数据段。然而,在各种实施例中,与提供此类访 问相反,将合适的数据段复制到第一物理设备904。另外,重新配置文件系统902使得由第 一物理设备904来服务对复制的数据段的将来的请求。因此,第一物理设备904和第二物 理设备906作为单个逻辑存储设备908工作,其中根据是否在第一物理设备904处创建了 数据段的复件来从设备904和906之一检索数据段。例如,文件系统902可被配置为从第 一物理设备904访问与数据单元910相关联的数据段并且从第二物理设备906访问与数据 单元912相关联的数据段。
[0084] 更重要地,由于计算设备通常重复访问大量数据单元,所以经由更快的第一物理 设备904来访问对应的数据段也将导致计算设备900的总体性能增强。
[0085] 在第一物理设备904的存储容量用尽的事件中,可覆写或删除在其上存储的数据 段。如上所述,可利用任何类型的方案来选择哪个数据段可删除或覆写。在此类情况下,如 果在第一物理设备904中未发生对数据段的修改,则可简单地覆写或删除数据段,并且文 件系统902可被重新配置为经由第二物理设备906来提供对数据段的访问。如果在第一物 理设备904中发生对数据段的修改,则可使用第一物理设备904中的数据段来覆写第二物 理设备906中的对应的数据段。尽管将数据段复制回第二物理设备906会影响性能,但是 在典型的计算设备中被访问的数据的大部分(90%或更高)通常保持未被修改。因此,在大 多数情况下,不需要另外的复制操作并且数据段的删除/覆写通常仅包括更新文件系统的 操作。
[0086] 作为另外一种选择,可在第二物理设备906中维护第一物理设备904中修改的数 据段和第二物理设备906中对应的数据段两者。在此类情况下,如上所述,文件系统902可 利用该布置以存储数据单元的不同版本。本公开还设想响应于对第一物理设备904中的数 据段的修改,可自动地将修改的数据段复制到第二物理设备906以提供对数据单元的不同 版本的存储而不从第一物理设备904删除数据段。
[0087] 尽管图9的示例性实施例参照不同的访问速度而被描述,但是根据本技术的复合 存储设备可基于具有不同数据访问尺度的设备,所述不同数据访问尺度包括数据传输速 率、访问速度、或任何其他感兴趣的尺度。
[0088] 本公开设想可单独或结合上述技术的任一种来使用上述参考图9的复合存储方 案。即,可基于本地-本地、远程-本地或两者来利用数据段。
[0089] 根据这些实例的其他具体实施包括用于承载或具有存储在其上的计算机可执行 指令或数据结构的计算机可读介质。此类计算机可读介质可以是可由通用或专用计算机 访问的任何可用介质。以举例而非限制的方式,此类有形计算机可读介质可包括RAM、R0M、 EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、固态硬盘存储装 置、或任何其他介质,其可用于承载或存储呈计算机可执行指令或数据结构形式的所需程 序代码装置。
[0090] 计算机可执行指令包括例如使得通用计算机、专用计算机或专用处理设备来执行 某些功能或一组功能的指令和数据。计算机可执行指令也包括由计算机在独立或网络环境 中执行的程序模块。一般来讲,程序模块包括执行特定任务或实现特定抽象数据类型的例 程、程序、对象、部件和数据结构。计算机可执行指令、相关联的数据结构和程序模块代表用 于执行本文所公开的方法的步骤的程序代码装置的实例。此类可执行指令或相关联的数据 结构的特定序列代表用于实现在此类步骤中描述的功能的对应动作的实例。
[0091] 本领域的那些技术人员将会理解,本发明的其他实施例可在具有许多类型的计算 机系统配置的网络计算环境中实践,所述许多类型的计算机系统配置包括个人计算机、手 持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络PC、微型计算机、大 型计算机等。实施例也可在分布式计算环境中实践,在该环境中任务由通过通信网络(或 者通过硬连线链路、无线链路,或者通过它们的组合)链接的本地和远程处理设备来执行。 在分布式计算环境中,程序模块可位于本地存储器存储设备和远程存储器存储设备两者 中。
[0092] 可通过本地网络、令牌环网络、互联网、企业内联网、802. 11系列无线信号、光纤网 络、无线或微波传输等执行所述系统各级的通信。尽管潜在通信技术可变化,但是本文所述 的基本原理仍可应用。
[0093] 上文描述的各种实施例仅仅以举例方式提供,而不应解释为进行限制。本领域的 那些技术人员可认识到,在遵从本文举例说明和描述的示例性实施例和应用且不脱离本公 开的实质和范围的情况下,可做出各种修改和变化。
【权利要求】
1. 一种方法,包括: 在一个或多个位置处存储一个或多个数据段,所述数据段中的每一个代表数据单元的 不同部分; 计算所述数据段中的每一个的散列值; 组装访问文件,所述访问文件包括所述数据单元的元数据、所述数据段的分段方案信 息、所述散列值的散列方案信息、描述所述散列值的散列识别信息、以及识别所述位置的位 置信息;以及 通过处理所述访问文件使用所述数据段来配置文件系统以服务对所述数据单元的请 求。
2. 根据权利要求1所述的方法,还包括基于至少一个标准来选择所述数据单元。
3. 根据权利要求2所述的方法,其中所述至少一个标准基于用户对完全数据单元的访 问频率。
4. 根据权利要求1所述的方法,其中所述数据段中的每一个被配置为相同的大小。
5. 根据权利要求1所述的方法,其中所述散列识别信息包括所述数据段的所述散列 值。
6. 根据权利要求1所述的方法,其中所述散列识别信息包括基于所述散列值的至少一 个复合散列值。
7. 一种系统,包括: 包括文件系统的计算设备,所述文件系统被配置为控制所述计算设备以执行下列步 骤: 将存储在所述计算设备中的数据单元转换成一个或多个数据段; 将所述数据段存储在一个或多个位置中; 计算所述数据段中的每一个的散列值;以及 组装用于服务对所述数据单元的请求的访问文件,所述访问文件包括所述数据单元的 元数据、所述数据段的分段方案信息、所述散列值的散列方案信息、描述所述散列值的散列 识别信息、以及识别所述位置的位置信息。
8. 根据权利要求7所述的系统,其中所述位置包括由所述计算设备经由通信链路可访 问的一个或多个远程存储位置。
9. 根据权利要求7所述的系统,其中所述计算设备包括由所述文件系统管理的用于存 储所述访问文件的专用存储装置。
10. 根据权利要求7所述的系统,其中所述文件系统还被配置为控制所述计算设备以 基于至少一个标准来选择所述数据单元。
11. 根据权利要求10所述的系统,其中所述至少一个标准基于在所述计算设备处的对 所述数据单元的访问频率。
12. 根据权利要求7所述的系统,其中所述文件系统还被配置为控制所述计算设备以 响应于存储所述数据段和组装所述访问文件而从所述计算设备清除所述数据单元。
13. -种包括计算机可执行指令的非暂态计算机可读介质,所述计算机可执行指令用 于: 响应于在计算设备处访问数据单元的至少所选择部分的请求,获取对应于所述数据单 元的访问文件并识别包括所述数据单元的数据的一个或多个数据段; 处理所述访问文件以至少识别对应于所述数据单元的所选择部分的数据段以产生所 识别的数据段; 配置所述计算设备的本地存储装置以至少包括所识别的数据段;以及 使用从所述本地存储装置中的数据段提取的数据来服务所述请求, 其中所述访问文件包括所述数据单元的元数据、所述数据段的分段方案信息、所述散 列值的散列方案信息、描述所述散列值的散列识别信息、以及识别所述位置的位置信息。
14. 根据权利要求13所述的非暂态计算机可读介质,其中所述获取还包括从由所述计 算设备通过通信链路可访问的远程系统检索所述访问文件。
15. 根据权利要求13所述的非暂态计算机可读介质,其中所述处理还包括基于所述元 数据和所述分段方案信息来确定所识别的数据段。
16. 根据权利要求13所述的非暂态计算机可读介质,其中所述配置还包括: 基于所述散列方案信息和所述散列识别信息来获取所识别的数据段的散列值以产生 所获取的散列值; 基于所获取的散列值来确定是否有任何所识别的数据段不存在于所述本地存储装置 中;以及 对于不存在于所述本地存储装置中的所识别的数据段中的每一个,从在所述访问文件 中指定的任何所述位置检索所识别的数据段中的所述一个。
17. -种方法,包括: 响应于在计算设备处对数据单元的至少所选择部分的请求,获取访问文件,所述访问 文件包括所述数据单元的元数据、存储定义所述数据单元的不同部分并且与散列值相关联 的一个或多个数据段的位置、所述数据段的分段方案信息、所述散列值的散列方案信息、以 及基于所述散列值的散列识别信息; 识别对应于所述数据单元的所选择部分的所述数据段中的至少一些; 配置所述计算设备的本地存储装置以至少包括所识别的数据段;以及 使用从所述本地存储装置中的数据段提取的数据来服务所述请求。
18. 根据权利要求17所述的方法,其中所述配置还包括响应于所述本地存储装置针对 所识别的数据段中的一个或多个具有不足的空间来删除当前未使用的一个或多个其他数 据段。
19. 根据权利要求18所述的方法,其中基于在所述计算设备处的至少所述其他数据段 的使用历史,选择所述其他数据段进行删除。
20. 根据权利要求17所述的方法,还包括: 如果所识别的数据段的所述使用满足使用标准,则在计算设备处重新组装所述数据单 元以产生重新组装的数据单元并使用所述重新组装的数据单元来服务所述请求,其中基于 所述访问文件重新组装所述数据单元。
21. -种系统,包括: 计算设备,所述计算设备包括文件系统,所述文件系统被配置为控制所述计算设备以 执行下列步骤: 经由访问文件,访问存储有数据单元的数据的一个或多个数据段中的至少一个以产生 至少一个所访问的数据段; 检测已更新所访问的数据段以产生至少一个更新的数据段; 基于针对所更新的数据段而计算的散列值生成定义所述数据单元的更新数据单元的 更新访问文件;以及 使用所更新访问文件来配置所述本地系统以服务对所述数据单元的请求, 其中所述访问文件包括所述数据单元的元数据、所述数据段的分段方案信息、所述散 列值的散列方案信息、描述所述散列值的散列识别信息、以及识别位置的位置信息。
22. 根据权利要求21所述的系统,还包括将所更新的数据段存储在所述位置之一中。
23. 根据权利要求21所述的系统,还包括将所更新的访问文件存储在公共位置中。
24. 根据权利要求21所述的系统,还包括从所述计算设备删除所述访问文件。
25. -种系统,包括 处理器; 第一存储设备; 第二存储设备,所述第二存储设备具有高于所述第一存储设备的对应数据访问尺度值 的至少一个数据访问尺度值;和 文件系统,所述文件系统用于管理所述第一存储设备和所述第二存储设备,其中响应 于来自所述处理器的针对存储在所述第一存储设备中的数据单元的至少所选择部分的请 求,所述文件系统被配置为: 获取访问文件,所述访问文件包括所述数据单元的元数据、所述第一存储设备中的存 储定义所述数据单元的不同部分并且与散列值相关联的一个或多个数据段的位置、所述数 据段的分段方案信息、所述散列值的散列方案信息、以及基于所述散列值的散列识别信息, 至少识别对应于所述数据单元的所选择部分的数据段中的一些, 配置所述第二存储设备以至少包括所识别的数据段;以及 使用从所述第二存储设备中的数据段提取的数据来服务所述请求。
26. 根据权利要求25所述的系统,其中所述文件系统还被配置为: 响应于所述第二存储设备针对所识别的数据段中的一个或多个具有不足的空间来删 除当前未使用的一个或多个其他数据段;以及 使用所述第一存储设备中的所述数据段来服务对当前未使用的所述一个或多个其他 数据段的将来的请求。
27. 根据权利要求26所述的系统,其中如果已修改了当前未使用的所述一个或多个其 他数据段中的至少一些,则所述文件系统还被配置为将当前未使用的所述一个或多个其他 数据段中的修改的数据段从所述第二存储设备复制到所述第一存储设备,并使用所述第一 存储设备来服务对与所修改的数据段相关联的数据单元的将来的请求。
28. 根据权利要求25所述的系统,其中所述第一存储设备为磁盘驱动器,并且所述第 二存储设备为固态硬盘驱动器。
【文档编号】G06F17/30GK104160397SQ201380012500
【公开日】2014年11月19日 申请日期:2013年1月14日 优先权日:2012年1月17日
【发明者】D·S·霍恩, J·D·冲, 王文广 申请人:苹果公司