本申请要求于2017年4月4日提交的标题为“virtualconfigurationsystemsandmethods”的美国非临时专利申请no.15/479,085的权益,该美国非临时专利申请的全部内容通过引用并入本文。
本公开一般而言涉及存储系统,并且更具体地涉及用于实现文件系统中的改变的虚拟配置系统和方法。
背景技术:
无盘系统可以在已经解包(unpack)到存储器中的文件系统上执行。对文件系统(配置或以其它方式)的改变不能跨文件系统的重新启动或重新加载而持久存在,因为它是从外部源加载的。通常,用户可以改变文件并且改变持久存在。为了在无盘情况下进行持久改变,文件系统的源必须被装载在另一个系统上、被修改并且被卸载。然后上传所得到的映像(image)以替换无盘系统的映像。这可能使得对文件系统的改变耗费时间。
技术实现要素:
提供了包括计算机实现的方法的方法、包括存储设备的设备、以及应用用于改变寻址方法的虚拟配置的计算机程序产品。
根据本发明的一些实施例,提供了一种方法。该方法包括在主机设备的操作系统处接收将文件系统从主机设备的非易失性存储装置加载到客户端设备的易失性存储器中的请求。该方法还包括:响应于接收到请求,由主机设备的操作系统确定操作系统没有在客户端设备上执行。该方法还包括,响应于确定操作系统没有在客户端设备上执行:由主机设备从数据存储库(datastore)中检索用于操作系统的配置数据,以及由主机设备根据配置数据来配置操作系统。数据存储库位于文件系统之外。该方法还包括由主机设备促进将文件系统加载到客户端设备的易失性存储器中。在客户端设备上加载文件系统时,操作系统正在执行。
根据本发明的一些实施例,提供了一种方法。该方法包括检测触发将文件系统从非易失性存储装置加载到无盘系统的易失性存储器中的事件。非易失性存储装置嵌入在无盘系统中。响应于检测到事件,该方法还包括:从数据存储库检索用于操作系统的配置数据,其中数据存储库位于文件系统外部,并且其中操作系统存储在非易失性存储装置中,以及根据配置数据来配置操作系统。该方法还包括促进将文件系统从非易失性存储装置加载到无盘系统的易失性存储器中,其中在无盘系统上加载文件系统时,操作系统正在执行。
根据本发明的一些实施例,提供了一种设备。该设备包括一个或多个处理器。该设备还包括非瞬态计算机可读介质,非瞬态计算机可读介质包含指令,指令当由一个或多个处理器执行时,使得一个或多个处理器执行包括本文描述的方法的步骤的操作。
根据本发明的一些实施例,提供了一种计算机程序产品。计算机程序产品有形地实施在设备的非瞬态机器可读存储介质中。该计算机程序产品包括指令,指令当由一个或多个处理器执行时,使一个或多个处理器执行包括本文描述的方法的步骤的操作。
本发明内容不旨在识别所要求保护的主题的关键或必要特征,也不旨在单独使用本发明内容来确定所要求保护的主题的范围。应该通过参考本专利的整个说明书的适当部分、任何或所有附图以及每项权利要求来理解本主题。
通过参考以下说明书、权利要求和附图,前述内容以及其它特征和实施例将变得更加明显。
附图说明
下面参考以下附图详细描述本发明的说明性实施例:
图1是示出根据一些实施例的数据存储系统的框图。
图2是示出根据一些实施例的存储设备的文件系统的层的框图。
图3是示出根据一些实施例的存储或装载在文件系统中的数据的层次结构的框图。
图4是示出根据一些实施例的网络中的主机设备的框图。
图5a是示出根据一些实施例的用于虚拟配置的联网系统的框图。
图5b是示出根据一些实施例的用于虚拟配置的嵌入式无盘系统的框图。
图6是示出根据一些实施例的实现虚拟配置层的存储设备的框图。
图7是示出根据一些实施例的用于从主机设备加载在客户端设备上的操作系统的虚拟配置的方法的流程图。
图8是示出根据一些实施例的用于加载在嵌入式无盘系统上的操作系统的虚拟配置的方法的流程图。
具体实施方式
以下提供本公开的某些方面和实施例。这些方面和实施例中的一些方面和实施例可以被独立地应用,并且它们中的一些可以被组合应用,如对于本领域技术人员来说将明显的。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本发明实施例的透彻理解。但是,将明显的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不旨在是限制性的。
随后的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。而是,随后对示例性实施例的描述将为本领域技术人员提供用于实现示例性实施例的使能描述。应该理解的是,在不脱离所附权利要求中阐述的本发明的精神和范围的情况下,可以对元素的功能和布置进行各种改变。
在以下描述中给出了具体细节以提供对实施例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些实施例。例如,电路、系统、网络、过程和其它部件可以被示为框图形式的部件,以便不以不必要的细节模糊实施例。在其它情况下,可以在没有不必要的细节的情况下示出公知的电路、过程、算法、结构和技术,以避免模糊实施例。
另外,应该注意的是,各个实施例可以被描述为过程,该过程被描绘为流程图(flowchart)、流图(flowdiagram)、数据流图、结构图或框图。虽然流程图可以将操作描述为顺序过程,但是许多操作可以并行或并发执行。此外,操作的次序可以被重新布置。当过程的操作完成时,该过程终止,但是该过程可以具有不被包括在图中的附加步骤。过程可以与方法、函数、进程、子例程、子程序等对应。当过程与函数对应时,该过程的终止可以与函数返回到调用函数或主函数对应。
术语“计算机可读介质”包括但不限于:便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带(一条或多条)指令和/或数据的各种其它介质。计算机可读介质可以包括非瞬态介质,在非瞬态介质中可以存储数据并且非瞬态介质不包括无线地或通过有线连接传播的瞬态电子信号和/或载波。非瞬态介质的示例可以包括但不限于:磁盘或磁带、诸如压缩盘(cd)或数字通用盘(dvd)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以具有存储在其上的代码和/或机器可执行指令,代码和/或机器可执行指令可以表示进程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任意组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段(包括存储器共享、消息传递、令牌传递、网络传输等)被传递、转发或发送。
另外,实施例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当在软件、固件、中间件或微代码中实现时,执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在计算机可读或机器可读介质中。(一个或多个)处理器可以执行必要的任务。
数据存储系统
数据存储系统可以包括用于保留数据并且在一些情况下处理数据的任何单独的或组合的存储设备和/或部件。在没有数据存储系统的情况下,计算设备将被限制为执行某些操作并且将必须立即输出结果。数据存储系统的使用可以允许计算设备执行更广泛的操作、存储和引用所执行的操作的结果(短期或长期),以及存储和执行用于各种目的的专用应用。如在本文中所使用的,“存储设备”可以是用于将数据保留在数据存储系统中的任何部件或部件的组合。
图1是示出根据一些实施例的数据存储系统100的框图。数据存储系统100可以全部或部分地被包括在一个或多个计算设备中,计算设备诸如个人计算机(例如,客户端)或服务器(例如,主机)。数据存储系统100可以包括主存储装置105、辅助存储装置135以及第三和离线存储装置140。虽然被示出和描述为包括这三种不同类型的存储装置,但是预期数据存储系统100可以单独地或组合地实现或多或少的不同类型的存储装置。另外,虽然被示出和描述为包括这些不同类型的存储装置中的每一种存储装置中的一个,但是预期可以包括不同类型的存储装置中的零个或多于一个。例如,在一些实施例中,可以在辅助存储装置135中包括多于一个存储设备。
主存储装置105可以包括处理器110(或多于一个处理器110)和主存储器130。如本文所使用的,“一个”处理器或“该”处理器可以指一个或多个处理器。处理器110可以是或包括例如中央处理单元(cpu)。处理器110可以检索和操纵存储在数据存储系统100中的数据。因此,通常,存储在紧邻处理器110的数据存储系统100中的数据可以被最快地检索和处理,而存储在离处理器110更远的数据存储系统100中的数据可以被较慢地处理。但是,经常地,一些配置可以使得仅有少量数据可用于紧邻处理器110存储(并且在一些实施例中,仅临时存储),而较大的存储装置选项通常可能被定位得离处理器110更远(并且可以用于永久地存储数据)。
处理器110可以包括其自己的存储器(未示出)。处理器110的存储器可以包括一个或多个处理器寄存器和一个或多个处理器高速缓存。处理器寄存器可以保持小的离散量的数据(例如,8、32或64位)。处理器寄存器可以采用多种形式中的任何一种。例如,处理器寄存器可以包括一个或多个数据寄存器。处理器110可以将数据从数据存储系统100中的较大的存储装置(例如,主存储器130)加载到数据寄存器中,以对数据执行操作或操纵。然后数据可以被存储回较大的存储装置(例如,主存储器130)。在另一个示例中,处理器寄存器可以包括一个或多个地址寄存器。地址寄存器可以保持可以由执行的指令请求的数据的地址。在又一个示例中,处理器寄存器可以包括一个或多个通用寄存器。通用寄存器可以是可以存储数据和/或地址的组合寄存器。可以可替代地或附加地包括在处理器寄存器中的其它类型的寄存器包括浮点寄存器、状态寄存器、常数寄存器、向量寄存器、专用寄存器、特定于机器的寄存器、内部寄存器等。处理器寄存器由于它的位置在处理器110内部而可能是数据存储系统100中可用的最快类型的存储装置,但是可能限于少量数据。
处理器110还可以包括一个或多个处理器高速缓存。处理器高速缓存可以包括一个或多个数据高速缓存。数据高速缓存可以存储经常使用的数据。处理器高速缓存可以替代地或附加地包括一个或多个指令高速缓存。指令高速缓存可以存储经常使用的可执行指令。处理器高速缓存可以替代地或附加地包括转换后备缓冲器(translationlookasidebuffer)。转换后备缓冲器可以用于加速可执行指令和数据的虚拟到物理地址转换。虽然处理器高速缓存也位于处理器110内部,但它们可能比处理器寄存器慢。但是,对于少量存储活跃或经常使用的数据或指令,处理器高速缓存可能相对于主存储器130是优选的,因为处理器高速缓存可以比主存储器130更快地被寻址。
处理器110可以通过地址总线115和数据总线120直接或间接耦合到主存储器130。当从主存储器130请求某些数据时,处理器110可以通过地址总线115将存储器地址发送到主存储器130。存储器地址可以指示所请求的数据的位置。然后,处理器110可以通过数据总线120从主存储器130读取数据。处理器110可以替代地或附加地通过数据总线120将数据写入到主存储器130。
主存储器130可以包括例如随机存取存储器(ram),诸如动态ram(dram)、静态ram(sram)、同步dram(sdram)或任何其它类型的易失性存储装置。如本文所使用的,“易失性”存储装置可以指在未被供电时不保持其内容并且因此在启动时未被初始化的存储设备的特性(例如,临时存储装置)。换句话说,易失性存储装置可能需要恒定的电源以保持存储的数据。虽然主存储器130可以是易失性的,但是由于其紧邻处理器110,因此对存储在其中的数据的访问通常比对存储在辅助存储装置135或第三和离线存储装置140中的数据的访问更快。在一些实施例中,主存储装置105也可以包括非易失性存储装置,诸如只读存储器(rom)。
处理器110可以使用输入/输出通道125来访问辅助存储装置135。辅助存储装置135可以包括例如硬盘驱动器、闪存或任何其它类型的非易失性存储装置。如在本文中所使用的,“非易失性”存储装置可以指在断电时保持其内容并且数据可以临时或永久地存储在其中的存储设备的特性。辅助存储装置135可以具有存储在其上的可以提供存储在辅助存储装置135中的文件和目录的层次结构的一个或多个文件系统,如本文关于图3进一步描述的。在一些实施例中,辅助存储装置135也可以包括易失性存储装置,诸如ram盘。
在一些实施例中,主存储装置105与辅助存储装置135共同定位在例如单个计算设备上。但是,预期在一些实施例中主存储装置105可以远离辅助存储装置135定位,例如,位于两个或更多个不同的计算设备上。例如,辅助存储装置135可以位于主机处,而主存储装置105可以位于客户端处。客户端可以使用客户端处的主存储装置105的处理器110发出命令以检索和访问存储在主机处的辅助存储装置135上的数据。
第三和离线存储装置140可以包括第三存储装置,诸如用于存储不经常访问的大量数据、但是可以使用机器人技术在没有人为干预的情况下访问的可移动大容量存储介质。第三和离线存储装置140可以替代地或附加地包括离线存储装置,诸如在没有人为干预的情况下不能被访问的可移动存储介质,诸如cd-rom、cd-rw、dvd、软盘、通用串行总线(usb)闪存驱动器等。离线存储装置可以被记录并且物理地与数据存储系统100断开连接。虽然被示出为与辅助存储装置135通信,但是预期第三和离线存储装置140可以替代地或附加地与主存储装置105直接通信。
文件系统
数据存储系统的存储设备可以实现一个或多个文件系统以组织存储在其上的数据。如本文所使用的,“文件系统”可以指文件或目录的结构或组织,并且“文件”可以指一组数据。每个文件可以与文件名相关联,该文件名允许唯一地识别和定位该文件。取决于具体要求和期望的应用,可以使用多种不同的文件系统。图2和图3示出了可以在存储设备上实现的示例性文件系统。
图2是示出根据一些实施例的存储设备210的文件系统215的层的框图。文件系统215可以具有三个层:逻辑文件系统层220、虚拟文件系统层225和物理文件系统层230。虽然被示出并描述为具有这三个层,但预期可以使用更少或更多的层。例如,在一些实施例中,逻辑文件系统层220、虚拟文件系统层225和物理文件系统层230的功能可以被组合到单个层中。在一些实施例中,可以省略虚拟文件系统层225。
逻辑文件系统层220可以与客户端应用205交互以处理对数据的请求。逻辑文件系统层220可以提供用于文件访问和操作(例如,打开、关闭、读取、写入等)的应用编程接口(api)。逻辑文件系统层220可以接收所请求的操作,并且可以将其传递到虚拟文件系统层225以被传递到物理文件系统层230。
逻辑文件系统层220可以提供可以由多个文件系统实现定义的多个物理文件系统的一致视图。可以通过由虚拟文件系统层225实现的物理文件系统层230的抽象来提供这种一致性。抽象可以指定给定实现应该包括以便执行通过逻辑文件系统层220接收的文件系统请求的一组操作。因此,由虚拟文件系统层225执行的抽象可以向逻辑文件系统层220提供统一的接口。
换句话说,虚拟文件系统层225可以提供对多个不同物理文件系统的支持。虚拟文件系统层225可以允许客户端应用205以统一的方式访问不同类型的文件系统。例如,虚拟文件系统层225可以允许客户端应用205访问本地存储设备和网络存储设备两者上的文件系统、用于不同操作系统(例如,windows、macos、unix等)的文件系统、不同类型的文件系统(例如,unix文件系统(ufs)、网络文件系统(nfs)等),等等。
物理文件系统层230可以处理对文件的所请求的操作(例如,读取、写入等)。物理文件系统层230可以物理地将文件放置在存储设备210上的特定位置中。物理文件系统层230可以与存储设备210的驱动器交互以物理地操作存储设备210。
图3是示出根据一些实施例的存储或装载在文件系统315中的数据的层次结构的框图。在一些实施例中,数据可以根据图3中所示的层次结构物理地存储在文件系统315中,诸如在(使用文件系统,诸如,例如,fat、ntfs、exfat、live文件系统、refs文件系统等的)windows操作系统中。在一些实施例中,数据可以替代地物理地存储在单个根目录下。可以通过向操作系统通知某些文件应该出现在层次结构中的哪个位置来“装载”文件系统315。这些实施例可以在unix或类unix操作系统中实现。
文件系统315可以包括一个或多个目录(例如,目录320、330、350)、一个或多个子目录(例如,子目录335)、以及一个或多个文件(例如,文件325a-c、340a-b、360)。目录(在本文也可以被称为“文件夹”)可以将文件分组到单独的集合中。例如,目录320可以包括文件325a-c。目录也可以包括子目录。例如,目录330可以包括子目录335,并且子目录335可以包括文件340a-b。也可以在没有任何文件的情况下创建目录(例如,目录350)。文件也可以位于文件系统315中而没有相关联的目录(例如,文件360)。
文件系统315内的文件(例如,文件325a-c、340a-b、360)可以具有相关联的元数据。元数据可以与文件(未示出)分开存储。元数据可以包括例如文件中的数据量、文件时间戳(例如,文件最后被修改的时间、文件被创建时的时间、文件上次备份的时间和/或文件最后被访问的时间)、用户id、访问许可、文件属性(例如,只读、读/写等),等等。
网络设备
数据存储系统可以被实现为可由客户端设备通过网络访问的网络设备。图4是示出根据一些实施例的网络中的主机设备405的框图。主机设备405可以是主机存储设备、主机计算设备(例如,主机服务器)和/或主机数据存储系统。主机设备405可以包括处理器410和存储装置415。处理器410可以类似于图1的处理器110。存储装置415可以包括图1的主存储装置105、辅助存储装置135和/或第三和离线存储装置140。存储装置415可以包括文件系统420,文件系统420可以类似于图2的文件系统215和/或图3的文件系统315。如本文关于图1所讨论的,预期在一些实施例中,主机设备405的处理器410不是必需的,并且客户端设备425、435、445的相应处理器可以用于处理来自主机设备405的对数据的请求。如本文所使用的,对数据的“请求”可以包括装载(mount)。装载可以包括使数据对象可由用户访问的请求。
主机设备405可以通过网络与客户端设备425、435、445通信。如本文所使用的,“客户端设备”可以指请求来自另一个设备的数据的任何设备。预期客户端设备可以包括在客户端设备上执行以促进数据的请求、传送、使用和存储的客户端应用。主机设备405可以通过任何标准数据连接与客户端设备425、435、445通信,这些标准数据连接包括但不限于互联网连接。这可以包括无线信道(例如,wi-fi连接)、有线连接(例如,dsl、线缆调制解调器等)或两者的组合。客户端设备425、435、445可以利用主机设备405来存储数据、定义规则、设置许可等。主机设备405还可以与一个或多个用户设备(未示出)通信。用户设备可以利用主机设备405来请求和/或使用数据。此外,虽然被示出并描述为与三个客户端设备425、435、445通信,但是预期在该实施例中主机设备405可以与任何数量的客户端设备通信。
主机设备405可以出于任何目的而存储可以由客户端设备425、435、445请求并发送到客户端设备425、435、445的数据。在这些实施例中,可以从主机设备405请求的数据可以被称为“共享(share)”,即,可以由一个设备使得对于其它设备可用的资源。例如,客户端设备425、435、445可以请求应用或服务。在另一个示例中,主机设备405可以正在执行将一个或多个文件、文件系统和/或数据库迁移到客户端设备425、435、445中的一个或多个。
无盘系统
无盘系统是不具有物理旋转硬盘驱动器的设备。但是,无盘系统可以包括除硬盘驱动器之外的可移动存储设备,诸如cd-rom驱动器或闪存驱动器。无盘系统可以从各种文件系统源启动操作系统(例如,linux操作系统、windows操作系统、solaris操作系统等)。例如,无盘系统可以从物理上不旋转的存储设备(例如,闪存驱动器)、cd-rom、基于rom的存储装置等启动。在另一个示例中,无盘系统可以通过网络从远程服务器(例如,远程nfs服务器)加载内核和文件系统。可以使用若干不同方法中的一种来从nfs服务器加载内核和文件系统:引导协议(bootp)、反向地址解析协议(rarp)和/或动态主机配置协议(dhcp)。
无盘系统具有许多优点。例如,任何数量的设备的网络可能需要访问同一应用。作为在每个设备上安装应用的替代,可以将应用替代地安装在同一网络上的nfs服务器上。然后无盘系统可以启动并从nfs服务器访问应用。另一个优点包括降低的成本,因为从系统中去除了盘的成本。这可以是嵌入式应用中的主要考虑因素,在嵌入式应用中成本是大的因素。这种类型的设计的权衡可以是当易失性存储器作为替代被使用时没有持久性。
无盘系统还可以带来许多挑战。无盘系统可以执行nfs服务器的操作系统以加载相关联的远程文件系统。在这种无盘系统中,通常通过改变所加载的文件系统的配置文件来进行对操作系统的配置改变(例如,对操作系统使用的存储的ip地址的改变)。但是,对文件系统内的配置文件的改变不会跨文件系统的未来加载持久存在,并且改变文件系统本身是耗时的,因为文件系统改变需要将文件系统装载在另一个系统上、修改它、卸载它并将得到的映像上传到目标系统。
图5a是示出根据一些实施例的联网系统的框图。联网系统可以包括主机设备505和客户端设备530。主机设备505可以与客户端设备530可操作地通信,例如,通过网络或通过任何类型的有线或无线连接,诸如wifi网络、局域网(lan)、无线局域网、个域网(pan)、城域网(man)、广域网(wan)、存储区域网络(san)、系统区域网络和企业专用网络(epn)、虚拟专用网络(vpn)、蜂窝网络、其组合等。主机设备505可以是例如nfs服务器。客户端设备530可以是例如无盘系统。虽然示为包括单个主机设备505和客户端设备530,但是预期任何数量的主机设备和客户端设备可以包括在图5a所示的联网系统中,并且可以执行本文描述的主机设备505和客户端设备530的功能。
主机设备505可以包括处理器510。处理器510可以如关于图4的处理器410和/或图1的处理器110所描述的那样。主机设备505可以包括与处理器510可操作通信的存储设备515。在一些实施例中,存储设备515包括非易失性存储器(例如,硬盘驱动器)。存储设备515可以存储文件系统520和操作系统525。
操作系统525可以是任何合适的操作系统,诸如linux操作系统、windows操作系统、solaris操作系统等。操作系统525可以是由主机设备505运行的管理主机设备505的硬件(例如,存储设备515、处理器510和通信端口513)的软件和其它软件。操作系统525可以充当主机设备505的硬件和软件之间的中介。在一些实施例中,操作系统525可以实现内核、联网协议、安全协议和/或用户接口。
操作系统525的联网协议可以用于经由通信端口513与客户端设备530通信。通信端口513可以向客户端设备530的通信端口537提供任何合适的有线或无线连接。例如,通信端口513和通信端口537可以支持多种联网协议中的任何一种,包括以太网、wifi、蜂窝通信、光纤等。
客户端设备530可以是无盘系统,该无盘系统可以包括处理器535、主存储器540和通信端口537。处理器535可以如关于图1的处理器110所描述的那样。主存储器540可以如关于图1的主存储器130所描述的那样。在一些实施例中,主存储器540包括易失性存储器(例如,ram)。在一些实施例中,客户端设备530不包括硬盘驱动器,但是可以包括其它形式的非易失性存储器,如本文进一步描述的。在一些实施例中,客户端设备530可以是嵌入式系统。
在使用中,客户端设备530可以启动主机设备505的操作系统525并将主机设备505的文件系统520加载到主存储器540中。客户端设备530可以具有其自己的处理器535和主存储器540,并且可以在本地处理数据,但是如果它与网络分离或者如果主机设备505发生故障则不能操作。文件系统520可以保持数据并控制操作系统525如何存储和检索数据。文件系统520。文件系统520可以包括多个文件,这些文件中的一些文件可以用作操作系统525的配置数据。例如,文件系统520可以包括存储操作系统525可以使用的ip地址的文件。
虽然被示出和描述为与单个客户端设备530通信的单个主机设备505,但是预期主机设备505可以与任何数量的客户端设备530进行操作性通信。例如,网络上的多个客户端设备530可能需要访问主机设备505上的单个公共文件系统520。因此,多个客户端设备530可以访问主机设备505上的相同文件系统520。但是,预期不同的客户端设备530可以具有关于访问和使用主机设备505的不同特权和配置,如本文进一步描述的。
当重新启动客户端设备530时,可以将文件系统520重新加载到主存储器540中,并且当文件系统520在主存储器540中时对文件系统520进行的改变可能丢失。这会使得难以改变配置数据(例如,文件系统参数,诸如ip地址)。在一些情况下,可以改变文件系统520以便改变配置数据,然后将加载更新后的文件系统520。但是,这个处理可以是耗时的。
图5b是示出根据一些实施例的用于虚拟配置的嵌入式无盘系统550的框图。嵌入式无盘系统550可以包括处理器555、主存储器560和嵌入式存储设备558。处理器555可以类似于图5a的处理器535。主存储器560可以类似于图5a的主存储器540。但是,在一些实施例中,嵌入式无盘系统550可以从除主机设备505之外的某个源(例如,嵌入式存储设备558)加载操作系统和/或文件系统。嵌入式存储设备558可以是例如闪存驱动器。嵌入式存储设备558可以如上面关于图5a的存储设备515所描述的那样。虽然被示为在无盘系统550内部,但是预期嵌入式存储设备558可以在无盘系统550的外部(例如,插入到无盘系统550上的usb驱动器或其它连接器中)。
虚拟配置系统和方法
因此,根据一些实施例,提供了允许nfs服务器的操作系统的持久配置的虚拟配置系统和方法。图6是示出根据一些实施例的实现虚拟配置层624的存储设备615的框图。存储设备615可以是例如图5a的存储设备515,并且可以在图5a的主机设备505中实现。在另一个示例中,存储设备615可以是图5b的嵌入式存储设备558,并且可以在图5b的无盘系统550中实现。
存储设备615可以包括文件系统620、操作系统625和配置数据650。文件系统620可以被实现为图5a的文件系统520。操作系统625可以被实现为图5a的操作系统525。文件系统620可以包括文件622和虚拟配置层624。存储设备615的文件系统620和/或操作系统625可以被配置为由无盘系统(诸如图5a的客户端设备530和/或图5b的无盘系统550)访问和加载。因为无盘系统通常不具有它们自己的硬盘驱动器,所以它们依赖于容纳存储设备615的主机设备(例如,图5的主机设备505)以使用操作系统625和/或文件系统620。嵌入式无盘系统可以依赖于非旋转存储设备(诸如闪存驱动器)以使用操作系统625和/或文件系统620。
在先前的实现中,配置数据650将不得不被永久地存储在文件系统620的文件622内,和/或在易失性存储器中做出,使得配置数据650的改变不能在相继的加载中持久存在。这些困难可以归因于与特定客户端设备相关联的配置数据不能持久地存储在作为无盘系统的客户端设备上的事实。
因此,根据一些实施例,可以将虚拟配置层624添加到文件系统620,文件系统620从文件系统620的外部(例如,在分离的数据存储库中或在存储设备615内的数据存储库的分离区域中)检索配置数据650。在一些实施例中,虚拟配置层624可以是脚本的形式。虽然被示出并描述为在存储设备615内部,但是预期配置数据650可以替代地或附加地包括在与存储设备615分离的另一个存储设备(例如,sd卡)中。配置数据650可以包括文件系统620和/或操作系统625的任何可配置参数,诸如联网协议和参数、安全参数、调谐参数、系统接口设置、所需的模块和驱动程序等。一些实施例可以允许配置数据650由虚拟配置层624虚拟化和改变,而不改变文件系统620。在一些实施例中,这可以比修改文件系统620更高效。
一旦配置数据650被改变,它就可以用于在客户端设备加载它时对文件系统620和/或操作系统625进行配置。配置数据650可以持久地存储在非易失性存储器中,使得它在相继的加载之间不会丢失,并且由于它位于文件系统620之外,因此不需要对文件系统620本身进行困难的改变。在一些实施例中,可以在每次更新配置数据650时覆写配置数据650。在一些实施例中,配置数据650可以在每次被更新时存储新版本,其中最新版本在启动操作系统625时被加载。在发生对配置数据650的部分改变的实施例中,可以结合其它部分改变或结合默认配置数据来加载那些部分改变。
文件系统620内的虚拟配置层624可以允许更快和更容易地改变配置数据650,特别是在嵌入式卡上。例如,通过允许快速改变寻址模式以支持各种测试平台,测试可以变得更容易。嵌入式卡通常可以具有固定的ip地址,但是当将它挂接到独立的测试站时,它可能需要不同的静态ip地址或dhcpip地址。
可以使用各种方法来实现如本文所述的用于虚拟配置的系统。图7是示出根据一些实施例的用于从主机设备加载到客户端设备上的操作系统的虚拟配置的方法的流程图。例如,图7的方法可以由主机设备实现,主机设备可以由客户端设备通过网络访问。
在步骤705处,主机设备的操作系统接收将文件系统从主机设备的非易失性存储装置加载到客户端设备的易失性存储器中的请求。主机设备可以是例如图4的主机设备405和/或图5a的主机设备505。文件系统可以是例如图3的文件系统315、图4的文件系统420、图5a的文件系统520和/或图6的文件系统620。非易失性存储装置可以是例如图1的辅助存储装置135、图4的存储设备415、图5a的存储设备515和/或图6的存储设备615。操作系统可以是例如图5a的操作系统525和/或图6的操作系统625。客户端设备可以是例如图4的客户端设备425、435和/或445,和/或图5的客户端设备530。客户端设备可以是无盘系统。易失性存储器可以是图1的主存储器130和/或图5a的主存储器540。
在一些实施例中,加载文件系统的请求可以包括与客户端设备相关联的标识符。例如,如果客户端设备发送了请求,那么该请求可以包括其自己的标识符。在另一个示例中,如果另一个设备发送了请求,那么该请求可以包括需要访问文件系统的客户端设备的标识符。与客户端设备相关联的标识符可以是字母、数字和/或符号的任何合适的唯一组合,包括但不限于名称(例如,用户名、设备名称等)、ip地址、mac地址等。
在一些实施例中,主机设备可以使用与客户端设备相关联的标识符来进行授权和/或认证目的。例如,主机设备可以确保标识符包括在被授权访问主机设备上的操作系统和/或文件系统的客户端设备的标识符列表上。在另一个示例中,当来自除客户端设备之外的实体的请求需要访问时,客户端设备的标识符可以用于联系客户端设备以确认需要访问和/或确认客户端设备具有访问主机设备的操作系统和/或文件系统的必要能力。
在步骤710处,响应于接收到请求,主机设备的操作系统确定操作系统是否正在客户端设备上执行。主机设备的操作系统可以通过例如检索被检出的操作系统的出现的细节来确定它是否正在客户端设备上执行。细节可以包括正在执行操作系统的客户端设备的标识符,诸如ip地址。操作系统可以将请求加载文件系统的客户端设备(或者作为加载文件系统的请求的主体的客户端设备)的标识符与当前正在执行操作系统的客户端设备的标识符列表进行比较。在另一个示例中,主机设备的操作系统可以查询客户端设备以确定操作系统是否已经在客户端设备上执行。
如果操作系统尚未在客户端设备上执行,那么处理前进到步骤715。在步骤715处,响应于确定操作系统未在客户端设备上执行,主机设备从数据存储库检索用于操作系统的配置数据。在一些实施例中,可以只有单个主机设备和单个客户端设备;因此,只需要一个配置数据集。类似地,如果配置数据对于请求从主机设备加载操作系统和/或文件系统的所有客户端设备是相同的,那么可以仅需要一个配置数据集。
在一些实施例中,用于操作系统的配置数据可以特定于特定客户端设备,诸如当多个客户端设备正在加载单个主机设备的操作系统和文件系统时。在这些实施例中,主机设备可以使用随请求接收的客户端设备的标识符来访问与该标识符相关联的特定配置数据集。与特定标识符相关联的配置数据可以是完整的(即,可以指定用于操作系统和/或文件系统的每个可配置特征的配置),或者可以是部分的(即,可以仅指定用于操作系统和/或文件系统的一些可配置特征的配置)。在部分配置数据的情况下,在一些实施例中,默认配置可以用于未由配置数据指定的可配置特征。
在还有其它实施例中,用于操作系统的配置数据跨一组客户端设备内的不同客户端设备可以是相同的,但在不同组客户端设备之间是不同的。例如,某种类型的客户端设备(例如,移动电话)可以具有第一配置数据集,而另一种类型的客户端设备(例如,笔记本计算机)可以具有不同的第二配置数据集,而又一种类型的客户端设备(例如,台式计算机)可以具有不同的第三配置数据集。在这个示例中,由客户端设备提供的标识符可以不是唯一的,而是可以替代地指示特定的组。在另一个示例中,客户端设备仍然可以提供唯一标识符,并且主机设备存储唯一标识符和关联分组的列表。
配置数据可以是例如图6的配置数据650。数据存储库可以是非易失性存储装置。在一些实施例中,数据存储库位于主机设备的非易失性存储装置中。在一些实施例中,数据存储库位于主机设备内部或外部的其它非易失性存储装置中。数据存储库可以位于文件系统外部并与文件系统分离。
在步骤720处,进一步响应于确定操作系统未在客户端设备上执行,主机设备可以根据配置数据配置操作系统。例如,配置数据可以包括由操作系统使用的寻址信息(例如,ip地址)。主机设备可以利用这个寻址信息配置操作系统,使得操作系统是最新的、当前的,并且反映最近的配置改变。虽然关于寻址信息进行了描述,但是预期配置数据可以包括操作系统和/或文件系统的任何可配置参数的细节。
在步骤725处,主机设备促进将文件系统加载到客户端设备的易失性存储器中。在客户端设备上加载文件系统时,操作系统正在执行。在步骤710处操作系统尚未在客户端设备上执行的实施例中,操作系统可以被配置并且是最新的,并且根据配置数据执行和加载文件系统。
在步骤710处操作系统已经在客户端设备上执行的实施例中,主机设备促进将文件系统加载到客户端设备的易失性存储器中,而无需配置操作系统。操作系统可以在客户端设备下次终止和重新加载操作系统时被配置,如本文进一步描述的。
在一些实施例中,主机设备可以接收更新用于操作系统的配置数据的请求。例如,客户端设备可以指定新ip地址,操作系统可以在该新ip地址处定位资源。主机设备可以更新位于文件系统外部的数据存储库中的操作系统的配置数据。
可以在下次加载客户端设备的操作系统时配置操作系统。例如,为了更新操作系统的配置或出于任何目的,主机设备可以促进客户端设备上的操作系统和文件系统的终止。在一些实施例中,因为配置数据存储在非易失性存储装置中包括的数据存储库中,所以可以在客户端设备的操作系统和文件系统的终止期间维护配置数据。
在客户端设备上终止操作系统之后,操作系统可以接收将文件系统重新加载到客户端设备的易失性存储器中的请求。在加载到客户端设备上之前,可以针对这个实例配置操作系统。例如,响应于接收到请求,主机设备可以从位于文件系统外部的数据存储库检索操作系统的更新后的配置数据。主机设备可以根据更新后的配置数据配置操作系统。主机设备可以促进将文件系统重新加载到客户端设备的易失性存储器中。当文件系统在客户端设备上重新加载时,操作系统可以正在执行。操作系统可以正在执行,并且可以根据更新后的配置数据重新加载文件系统。
图8是示出根据一些实施例的用于从嵌入式存储设备加载到无盘系统上的操作系统的虚拟配置的方法的流程图。例如,图8的方法可以由无盘系统实现,该无盘系统可以与嵌入式存储设备进行可操作的有线或无线通信。
在步骤805处,检测触发将文件系统从非易失性存储装置加载到无盘系统的易失性存储器中的事件。文件系统可以是例如图3的文件系统315、图4的文件系统420、图5a的文件系统520、和/或图6的文件系统620。非易失性存储装置可以是例如图1的辅助存储装置135、图4的存储设备415、图5a的存储设备515、图6的嵌入式存储设备558和/或存储设备615。易失性存储器可以是图1的主存储器130、图5a的主存储器540和/或图5b的主存储器560。无盘系统可以是例如图5b的无盘系统550。非易失性存储装置可以嵌入在无盘系统中。在一些实施例中,事件可以是无盘系统的上电。
在一些实施例中,事件可以是加载文件系统的请求。加载文件系统的请求可以包括与无盘系统相关联的标识符。例如,如果无盘系统执行请求文件系统的命令,那么该请求可以包括其自己的标识符。与无盘系统相关联的标识符可以是字母、数字和/或符号的任何合适的唯一组合,包括但不限于名称(例如,用户名、设备名称等)、ip地址、mac地址等。
在一些实施例中,与无盘系统相关联的标识符可以与嵌入式存储设备上存储的标识符进行匹配,以用于授权和/或认证目的。例如,无盘系统可以利用其自己的标识符查询存储在嵌入式存储设备上的标识符的数据库,以确保它被授权访问嵌入式存储设备上的操作系统和/或文件系统。在一些实施例中,无盘系统还可以利用其自己的标识符来查询存储在嵌入式存储设备上的标识符数据库,以确认无盘系统具有访问存储在嵌入式存储设备上的操作系统和/或文件系统的必要能力。
在步骤810处,响应于检测到事件,可以从数据存储库中检索用于操作系统的配置数据。操作系统可以是例如图5a的操作系统525和/或图6的操作系统625。在一些实施例中,嵌入式存储设备被配置为与仅一个无盘系统一起使用。因此,仅需要一个配置数据集(即,无盘系统使用的配置数据)。类似地,可能需要配置数据的仅一个配置数据集,该配置数据集对于可以从主机设备加载操作系统和/或文件系统的所有无盘系统(或其它系统)是相同的。
在一些实施例中,用于操作系统的配置数据可以特定于特定的无盘系统,诸如当多个无盘系统从单个存储设备加载操作系统和文件系统时。在这些实施例中,存储设备可以使用随请求接收的无盘系统的标识符来访问与该标识符相关联的特定配置数据集。与特定标识符相关联的配置数据可以是完整的(即,可以指定用于操作系统和/或文件系统的每个可配置特征的配置),或者可以是部分的(即,可以仅指定用于操作系统和/或文件系统的一些可配置特征的配置)。在部分配置数据的情况下,在一些实施例中,默认配置或先前的配置可以用于未由配置数据指定的可配置特征。
在还有其它实施例中,用于操作系统的配置数据跨一组无盘系统内的不同无盘系统可以是相同的,但在不同组无盘系统之间是不同的。例如,某种类型的无盘系统(例如,移动电话)可以具有第一配置数据集,而另一种类型的无盘系统(例如,笔记本计算机)可以具有不同的第二配置数据集,而又一种类型的无盘系统(例如,台式计算机)可以具有不同的第三配置数据集。在这个示例中,由无盘系统提供的标识符可以不是唯一的,而是可以替代地指示特定的组。在另一个示例中,无盘系统可以仍然提供唯一标识符,并且存储设备存储唯一标识符和关联分组的列表。
配置数据可以是例如图6的配置数据650。数据存储库可以是非易失性存储装置。在一些实施例中,数据存储库位于嵌入式存储设备中。在一些实施例中,数据存储库位于嵌入式存储设备内部或外部的其它非易失性存储装置中。数据存储库可以位于文件系统之外并与文件系统分离。操作系统可以存储在非易失性存储装置中。
在步骤815处,进一步响应于检测到事件,可以根据配置数据配置操作系统。例如,配置数据可以包括由操作系统使用的寻址信息(例如,ip地址)。操作系统可以配置有这个寻址信息,使得操作系统是最新的、当前的,并且反映最近的配置改变。虽然关于寻址信息进行了描述,但是预期配置数据可以包括操作系统和/或文件系统的任何可配置参数的细节。
在一些实施例中,当操作系统在无盘系统上执行时,操作系统检测到事件。响应于检测到事件,并且在检索出配置数据之后,可以根据配置数据重新加载操作系统。操作系统的重新加载可以使操作系统根据配置数据被重新配置。在一些实施例中,响应于检测到事件,并且在检索到配置数据之后,可以根据配置数据重新配置操作系统,而无需重新加载操作系统。例如,可以实时地改变和更新与资源相关联的ip地址,而无需重新启动。
在步骤820处,将文件系统加载到客户端设备的易失性存储器中。在客户端设备上加载文件系统时,操作系统正在执行。在一些实施例中,无盘系统可以请求更新用于操作系统的配置数据。例如,无盘系统可以指定新ip地址,操作系统可以在该新ip地址处定位资源的。无盘系统可以更新位于文件系统外部的数据存储库中的用于操作系统的配置数据。
在一些实施例中,在下一次在无盘系统上加载操作系统时,可以用该更新来配置操作系统。例如,为了更新操作系统的配置或为了任何目的,无盘系统可以终止无盘系统上的操作系统和文件系统的执行。在一些实施例中,因为配置数据存储在包括在非易失性存储装置中的数据存储库中,所以可以在无盘系统的操作系统和文件系统的终止期间维持配置数据。
在无盘系统上的操作系统终止之后,操作系统可以接收将文件系统重新加载到无盘系统的易失性存储器中的请求。在加载到无盘系统上之前,可以针对这个实例配置操作系统。例如,无盘系统可以从位于文件系统外部的数据存储库检索操作系统的更新后的配置数据。无盘系统可以根据更新后的配置数据配置操作系统。无盘系统可以促进将文件系统重新加载到无盘系统的易失性存储器中。当文件系统在无盘系统上重新加载时,操作系统可以正在执行。操作系统可以正在执行,并且可以根据更新后的配置数据重新加载文件系统。
因此,根据一些实施例,对操作系统和/或文件系统的配置数据的改变可以跨文件系统的未来加载而持久存在。另外,这些改变可以不需要改变文件系统本身,因为配置数据可以在文件系统外部存储。
如所指出的,计算机可读介质可以包括暂态介质,诸如无线广播或有线网络传输、或存储介质(即,非瞬态存储介质),诸如硬盘、闪存驱动器、紧凑型盘、数字视频盘、蓝光盘或其它计算机可读介质。在各种示例中,计算机可读介质可以被理解为包括各种形式的一种或多种计算机可读介质。
在前面的描述中,参考本申请的具体实施例描述了本申请的各方面,但是本领域技术人员将认识到本发明不限于此。因此,虽然本文已经详细描述了本申请的说明性实施例,但是应该理解的是,可以以其它方式不同地实施和采用本发明构思,并且除了受现有技术的限制之外,所附权利要求旨在被解释为包括这样的变型。上述发明的各种特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛的精神和范围的情况下,可以在除了本文描述的那些环境和应用之外的任何数量的环境和应用中利用实施例。因此,说明书和附图应被视为说明性的而非限制性的。出于说明的目的,以特定顺序描述了方法。应该认识到的是,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。
在将部件描述为执行或“被配置为”执行某些操作的情况下,这种配置可以例如通过设计电子电路或其它硬件来执行操作、通过对可编程电子电路(例如,微处理器、或其它合适的电子电路)进行编程来执行操作或其任何组合来实现。
结合本文所公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地示出硬件和软件的这种可互换性,上面已经在其功能方面对各种说明性的部件、块、模块、电路和步骤进行了一般性描述。这样的功能被实现为硬件还是软件取决于特定应用和施加在整个系统上的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这样的实现决策不应被解释为导致脱离本发明的范围。
本文描述的技术还可以用电子硬件、计算机软件、固件或其任何组合来实现。这些技术可以在各种设备中的任何设备中实现,这些设备诸如通用计算机、无线通信设备手机、或具有包括在无线通信设备手机和其它设备中的应用的多种用途的集成电路设备。描述为模块或部件的任何特征可以在集成逻辑设备中一起实现,或者作为离散但可互操作的逻辑设备单独实现。如果用软件实现,则本技术可以至少部分地由包括程序代码的计算机可读数据存储介质实现,该程序代码包括在被执行时执行上述方法中的一个或多个方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括封装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(ram)(诸如同步动态随机存取存储器(sdram))、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、flash存储器、磁数据存储介质或光数据存储介质等。附加地或替代地,本技术可以至少部分地由计算机可读通信介质实现,该计算机可读通信介质以指令或数据结构的形式携带或传送程序代码,并且可以由计算机访问、读取和/或执行,诸如传播的信号或波。
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)、或其它等价的集成或分立逻辑电路系统。这样的处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、与dsp内核结合的一个或多个微处理器,或任何其它这样的配置。因此,如本文中所使用的术语“处理器”可以指任何前述结构、前述结构的任何组合,或适合于实现本文描述的技术的任何其它结构或装置。此外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用软件模块或硬件模块内提供,或者被并入到组合的视频编码器-解码器(codec)中。