CN101825994B - 基于固件的非操作系统依赖的闪存阵列管理装置和方法 - Google Patents
基于固件的非操作系统依赖的闪存阵列管理装置和方法 Download PDFInfo
- Publication number
- CN101825994B CN101825994B CN201010149051.2A CN201010149051A CN101825994B CN 101825994 B CN101825994 B CN 101825994B CN 201010149051 A CN201010149051 A CN 201010149051A CN 101825994 B CN101825994 B CN 101825994B
- Authority
- CN
- China
- Prior art keywords
- flash memory
- memory array
- firmware
- module
- operating system
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了基于固件的非操作系统依赖的闪存阵列管理装置和方法,使闪存阵列装置成为跨平台的通用大容量存储设备的技术,尤其涉及利用闪盘连接到闪存阵列装置以实现RAID这样的高级海量存储技术。其技术方案为:装置包括:硬件模块,提供硬件环境,包括闪存阵列装置;操作系统模块,具备与可扩展固件、或网络储存设备、或闪存阵列控制器接口功能;固件模块,与硬件模块建立数据连接,提供运行时环境;闪存阵列管理应用程序模块,与固件模块和操作系统模块之间建立数据连接,在固件环境中运行并对闪存阵列装置实现独立磁盘冗余阵列功能,为操作系统模块实现对闪存阵列装置的直接读写。
Description
技术领域
本发明涉及一种非操作系统依赖(独立于操作系统)的闪存阵列管理装置,使一个闪存阵列装置成为跨平台的通用大容量存储设备的技术,尤其涉及利用闪盘连接到闪存阵列以实现独立冗余磁盘阵列(RAID)这样的高级海量存储技术。
背景技术
图1示出了闪存阵列装置的一般原理。闪存阵列装置2可以让许多的存储设备(例如闪盘1)插入到同一个物理设备上。不同的闪存设备通过一个或多个闪存阵列集线器嵌入在闪存阵列装置的硬件上,这样就让不同的闪存设备可以通过闪存阵列的方式得到控制和使用。每个集线器都是集成在闪存阵列装置中的一个独立的芯片,具有多个并联的输入接口20。存在于闪存阵列装置上的集线器使得接口(包括输入接口20和输出接口22)所提供的带宽得到最大的利用,并使得这些闪盘1可以同步使用这些接口。闪存阵列装置上集线器的数量将取决于插在闪存阵列装置中闪存设备的数量。最优的一种策略就是闪存阵列装置中的每个集线器对应3到4个存储设备。因此闪存阵列装置2可以同步使用多个闪盘1。
计算机接通电源开始启动后,首先要做的是对连接在计算机上的所有设备进行检测。BIOS(基本输入输出系统)负责初始检测连接到计算机上的设备。设备和内存完成检测和初始化之后,BIOS将启动操作系统。这种紧密集成的解决方案属于老式的BIOS结构,称之为PC-AT环境。但是这种老式的BIOS结构具有很大的局限性。BIOS安装在底层,比操作系统更接近硬件层。由于传统的BIOS专有且不公开,对于自主的软件开发商和软件开发员来说,将他们开发的软件嵌入到BIOS层中是非常困难的。在图2中,硬件模块连接操作系统模块,操作系统模块连接基于一个具体操作系统的特定接口驱动模块。在硬件模块中,包含了CPU、主板和支持特定接口连接的主板芯片组这几个硬件。操作系统模块使得一操作系统可在硬件模块上得以运行。基于一个具体操作系统的特定接口驱动模块作为驱动,在操作系统模块所提供的操作系统环境中运行,这个特定接口驱动模块可以识别出闪盘和集线器,但是没有识别RAID上闪盘的格式的功能。
为了解决BIOS结构的局限性,业界开发了可扩展固件接口(EFI),能够在操作系统启动之前为设备和各种驱动潜在地提供一个强大的平台。模块化的EFI使得它成为一个极具吸引力的平台,在固件层面上为操作系统提供独立的模块和各种驱动。EFI的标准定义了三种服务:(a)启动服务:包括在操作系统之前的EFI(EFI)环境中(即平台)服务的定义;(b)运行时服务:包括在操作系统启动前后遵守EFI系统服务的定义;(c)驱动运行环境(DXE)服务:包括在操作系统启动之后遵守于DXE系统服务的定义。大多数的服务以及驱动程序会在操作系统启动之后变得不可用。
在上述所列举的服务中,我们对第二个服务尤其感兴趣,因为它在EFI启动服务已经退出和在预启动环境和服务不再可用后,操作系统还可以使用它。
网络储存设备(NetworkAttachedStorage,NAS)直接连接在电脑网络上面,提供了集中式网络资料存取服务。NAS电脑或设备通常包含了精简版的操作系统,提供了最单纯的档案服务和其相关的通讯协定;一般来说,NAS设备上面的操作系统和软件提供了资料储存、资料存取、以及相关的管理功能;NAS系统通常有一个以上的硬盘,而且和传统的档案服务器一样,通常会把它们组成RAID来提供服务。如果对其操作系统加以改进,NAS上也可以运行一些简单的应用程序模块。
在闪存阵列装置(申请人在2007年12月5日申请并于2008年5月14日公开的申请号“200710171787.8”、发明名称为“一种闪存阵列装置”的中国专利申请)还设置了闪存阵列控制器固件,该固件可以象NAS一样包含了精简版的操作系统,运行一些应用程序,提供对闪存阵列装置的管理功能。
为了让计算机用户从廉价的、低可靠度的磁盘驱动器组件中获得高的存储可靠度,可以通过独立冗余磁盘阵列(RAID)技术合理配置设备到冗余阵列中。这种技术涉及到任何在不同磁盘中分割和复制数据的技术,将不同的磁盘整合后以单一磁盘的形式呈现给用户。RAID有许多级别,这些不同的级别涉及到了不同的功能:最基本的是第0级和第1级。第0级涉及到数据条带化,将数据分割并独立存储到多个盘符中。第1级涉及到镜像功能,在把数据写入一个镜像时可以将数据同时拷贝到它的另一个镜像盘符。条带化是用于将大量的数据分解成块,同时把每段数据分别写入到阵列的不同磁盘上从而提高性能,而RAID镜像法对提高可靠度有显著的帮助。这里有两个不同的RAID工具:硬件RAID和软件RAID。硬件RAID是可以让RAID嵌入在某个特殊硬件上运行的解决方案,而在软件RAID可以作为一个应用软件在通用计算机上运行。
传统技术中硬件RAID的实现方式具有以下缺点:(1)不可升级:一旦通过嵌入式的方式将其在硬件上实现,将无法升级RAID;(2)昂贵:设计上的花费和嵌入式的大规模生产使得低预算的解决方案无法实施;(3)单点故障:作为一种硬件的解决方案致使它无法经受有关硬件上的微小错误,因此对于“可移动性和易修复性”的考虑来说,这是一个脆弱的解决方案。
而现阶段软件RAID在不同的操作系统上的实现是不兼容的。每个操作系统都有它自己的对RAID的实现方式,这些各自独立的实现也导致了系统之间的不兼容。为了解决这种不兼容性,一个可行的方案是在固件层面上建立一个统一的RAID格式,请参见图3,这样操作系统的依赖性只存在于驱动程序层。而在低级的数据层,RAID数据格式对所有的操作系统而言是统一的。每个操作系统的相应驱动程序可以提取正确的RAID数据的信息。在图2中,硬件模块包含了CPU、主板、和支持特定接口(如USB、SATA、FireWire等)连接的主板芯片组这几个硬件。操作系统模块包括可以在硬件模块之上运行的操作系统。特定接口驱动模块则在操作系统环境中运行。特定接口驱动模块可以识别并读写具有统一RAID格式的整个或部分闪存阵列装置。这种闪存阵列装置可以组成为许多的虚拟磁盘,虚拟磁盘可以是整个RAID的一部分,这样也可以称为第二级的虚拟磁盘。这种实现方式使得不同的操作系统用自己的驱动实现了统一的RAID格式。统一的RAID格式允许RAID的信息对所有的操作系统来说更富有可读性,然而这一方案的缺点是将驱动的实现仍然留给了操作系统。
发明内容
本发明的目的在于解决上述问题,提供了一种基于固件的非操作系统依赖的闪存阵列管理装置,使闪存阵列装置成为跨平台的通用大容量存储设备的技术,尤其涉及利用闪盘连接到闪存阵列装置以实现独立冗余磁盘阵列(RAID)这样的高级海量存储技术。
本发明的另一目的在于提供了一种基于固件的非操作系统依赖的闪存阵列管理方法。
本发明的技术方案为:本发明揭示了一种基于固件的非操作系统依赖的闪存阵列管理装置,该装置包括:
硬件模块,提供硬件环境,该硬件环境包括闪存阵列装置;
操作系统模块,具备与可扩展固件、或网络储存设备、或闪存阵列控制器接口的功能;
固件模块,与该硬件模块建立数据连接,提供运行时环境;
闪存阵列管理应用程序模块,与该固件模块和该操作系统模块之间建立数据连接,在固件环境中运行并对该闪存阵列装置实现独立磁盘冗余阵列功能,为该操作系统模块实现对该闪存阵列装置的直接读写。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理装置的一实施例,该固件模块是可扩展固件接口。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理装置的一实施例,该固件模块是网络储存设备。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理装置的一实施例,该固件模块是闪存阵列控制器。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理装置的一实施例,该闪存阵列管理应用程序模块是可移植的。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理装置的一实施例,该闪存阵列管理应用程序模块在Windows系统、Linux操作系统和Apple操作系统上运行。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理装置的一实施例,该闪存阵列管理应用程序模块对该闪存阵列装置实现磨损预防的功能。
本发明揭示了一种基于固件的非操作系统依赖的闪存阵列管理方法,包括:
用户终端应用程序提出磁盘读写请求;
操作系统将磁盘读写请求传输至固件;
固件将磁盘读写请求传输给闪存阵列管理应用程序;
闪存阵列管理应用程序对闪存阵列装置进行读写。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理方法的一实施例,闪存阵列管理应用程序在固件上运行。
根据本发明的基于固件的非操作系统依赖的闪存阵列管理方法的一实施例,闪存阵列管理应用程序对闪存阵列实现独立磁盘冗余阵列的功能。
本发明对比现有技术有如下的有益效果:本发明通过跨平台的闪存阵列管理装置在固件(如EFI、NAS、闪存阵列控制器等)环境中运行,使跨平台不受操作系统的约束,尤其适合在预启动和快速启动环境中的服务。对比现有技术,本发明不需要针对每一个操作系统对RAID等高级磁盘管理进行特别驱动就可以实现对闪存阵列装置的格式进行统一管理。
附图说明
图1是闪存阵列装置的原理示意图。
图2是传统的操作系统与接口设备交互的原理图。
图3是操作系统与具有统一RAID格式的驱动器交互的原理图。
图4是本发明的基于固件的非操作系统依赖的闪存阵列管理装置的实施例的原理图。
图5是本发明的基于固件的非操作系统依赖的闪存阵列管理方法的实施例的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
基于固件的非操作系统依赖的闪存阵列管理装置的实施例
图4示出了本发明的基于固件的非操作系统依赖的闪存阵列管理装置的在EFI固件上的实施例的原理。请参见图4,本实施例的闪存阵列管理装置包括以下几个模块:硬件模块3、运行环境模块4、操作系统模块5(可以有多个操作系统并存,例如图4中的操作系统1~操作系统n)、终端用户应用程序块6。对于硬件模块3,提供了装置的硬件环境,实质上就是一个计算机硬件系统,包含CPU、主板和支持特定接口连接的主板芯片组这些硬件。运行环境模块4为装置提供了运行时环境,也就是为EFI框架准备的运行时环境。运行环境模块4包括了两个单元:可扩展固件接口单元40(EFI单元)以及闪存阵列管理应用程序单元42。EFI单元40是一种公认的技术模型,解决了长时间存在于BIOS中的庞大性和不可扩展性。EFI能够扩展BIOS功能。本发明的实质是将对RAID的管理作为一个运行时的驱动程序在EFI环境中实现。通过EFI单元40,扩展了原来计算机的BIOS功能,接着植入对RAID的管理方法(相当于EFI环境中实现的运行时驱动)。闪存阵列管理应用程序单元42由于是在EFI运行环境模块4中运行的,因此其不受操作系统的约束。基于EFI的闪存阵列管理应用程序的任务是截取所有的特定接口集线器相关的中断,执行一切与RAID相关的操作,同时可以通过EFI运行环境与操作系统相互作用。
操作系统模块5中的任何一个操作系统是一个支持EFI的操作系统,例如是苹果公司的OSX操作系统、微软公司的WindowsVista操作系统、或者任何开源Linux发行版等。终端用户应用程序模块6是在操作系统模块5的层面上运行的。用户通过终端用户应用程序模块6,借助操作系统模块5所支持的EFI运行环境模块4中运行的闪存阵列管理应用程序单元40交流,借助EFI驱动发送指令到底层闪存,这些指令包括闪存读写和格式化等。
本发明的闪存阵列管理装置的EFI实施例具有以下的优点:(1)闪存阵列装置及其应用程序在EFI启动环境中变得可用,这意味着在操作系统完成启动之前,闪存阵列装置以及所有预期的海量存储技术都可用。只要预启动环境还被关注,这项技术就是很重要的。例如,通过闪存阵列管理程序单元对闪存阵列装置进行管理,闪存阵列装置可以被用作一个操作系统的启动设备一样。(2)多个不同的操作系统可以通过一个统一应用程序单元来使用闪存阵列装置:在启动完成后的,操作系统可以通过EFI运行时环境中所提供的服务继续管理和使用闪存阵列装置。EFI运行时环境在启动过程后的环境中是有效的,允许操作系统访问EFI闪存阵列装置的驱动程序和服务。这使得闪存阵列装置的管理和使用变成是跨平台的、非操作系统依赖的。(3)加强版的海量存储器(例如RAID)可使用闪存阵列装置,在EFI上通过运行闪存阵列装置的应用程序模块,使用RAID等技术让闪存阵列装置提供操作系统的启动服务。当操作系统启动后,这些加强版的大规模储存器应用程序会保持可用状态。(4)以软件形式存在的RAID的也可以解决诸多硬件RAID的缺点,例如硬件不易移动、成本过高等。
同样的,上述EFI实施例的装置也可以在NAS(网络储存设备)和闪存阵列控制器等固件上实行,即让闪存阵列装置的应用程序在NAS和闪存阵列控制器上运行,这种闪存阵列管理装置是非操作系统依赖的。
基于固件的非操作系统依赖的闪存阵列管理方法的实施例
图5示出了本发明的基于固件的非操作系统依赖的闪存阵列管理方法的实施例的流程。请参见图5,本实施例的闪存阵列管理方法包括如下的步骤。
步骤S50:用户终端应用程序提出磁盘读写请求。
用户终端应用程序在操作系统内运行,用户终端应用程序在需要对磁盘进行读写操作时,将对操作系统提出磁盘操作请求。
步骤S51:操作系统将磁盘读写请求传给固件。
当操作系统收到用户终端应用程序发出的磁盘操作请求,操作系统并不介入对闪存阵列进行一切与RAID相关的操作,而是把相关操作请求传给固件。
步骤S52:固件将磁盘读写请求传给闪存阵列管理应用程序,该闪存阵列管理应用程序在固件上运行。
固件与闪存阵列装置相连,当固件收到磁盘操作请求,固件把相关操作请求传给闪存阵列管理应用程序。
步骤S53:闪存阵列管理应用程序对闪存阵列进行RAID读写
闪存阵列管理应用程序在固件上运行,而不是在操作系统上运行。闪存阵列管理应用程序负责对闪存阵列装置进行RAID管理,因此一切与RAID相关的操作都由闪存阵列管理应用程序实施。
本发明的闪存阵列管理应用程序可以实现的功能不仅限于RAID,它包括一切能提高闪存阵列装置性能的技术,如磨损预防技术。关于磨损预防可参见申请人于2007年12月5日申请的并于2008年5月14日公开的申请号为“200710171786.3”、发明名称为“一种数据块的磨损处理方法和装置”的中国专利申请。
上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (8)
1.一种基于固件的非操作系统依赖的闪存阵列管理装置,该装置包括:
硬件模块,提供硬件环境,该硬件环境包括闪存阵列装置;
操作系统模块,具备与可扩展固件、或网络储存设备、或闪存阵列控制器接口的功能;
固件模块,与该硬件模块建立数据连接,提供支持多个不同的操作系统的EFI运行时环境;
闪存阵列管理应用程序模块,与该固件模块和该操作系统模块之间建立数据连接,在所述固件模块提供的EFI运行时环境中运行并对该闪存阵列装置实现独立磁盘冗余阵列功能,为该操作系统模块实现对该闪存阵列装置的直接读写。
2.根据权利要求1所述的基于固件的非操作系统依赖的闪存阵列管理装置,其特征在于,该固件模块是可扩展固件接口。
3.根据权利要求1所述的基于固件的非操作系统依赖的闪存阵列管理装置,其特征在于,该固件模块是网络储存设备。
4.根据权利要求1所述的基于固件的非操作系统依赖的闪存阵列管理装置,其特征在于,该固件模块是闪存阵列控制器。
5.根据权利要求1所述的基于固件的非操作系统依赖的闪存阵列管理装置,其特征在于,该闪存阵列管理应用程序模块是可移植的。
6.根据权利要求1所述的基于固件的非操作系统依赖的闪存阵列管理装置,其特征在于,该闪存阵列管理应用程序模块在Windows系统、Linux操作系统和Apple操作系统上运行。
7.根据权利要求1所述的基于固件的非操作系统依赖的闪存阵列管理装置,其特征在于,该闪存阵列管理应用程序模块对该闪存阵列装置实现磨损预防的功能。
8.一种基于固件的非操作系统依赖的闪存阵列管理方法,包括:
用户终端应用程序提出磁盘读写请求;
操作系统将磁盘读写请求传输至固件,所述固件提供支持多个不同的操作系统的EFI运行时环境;
固件将磁盘读写请求传输给闪存阵列管理应用程序;
闪存阵列管理应用程序在所述固件提供的EFI运行时环境上运行,对闪存阵列装置进行读写,并对闪存阵列实现独立磁盘冗余阵列的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010149051.2A CN101825994B (zh) | 2010-04-16 | 2010-04-16 | 基于固件的非操作系统依赖的闪存阵列管理装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010149051.2A CN101825994B (zh) | 2010-04-16 | 2010-04-16 | 基于固件的非操作系统依赖的闪存阵列管理装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101825994A CN101825994A (zh) | 2010-09-08 |
CN101825994B true CN101825994B (zh) | 2016-04-13 |
Family
ID=42689928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010149051.2A Active CN101825994B (zh) | 2010-04-16 | 2010-04-16 | 基于固件的非操作系统依赖的闪存阵列管理装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101825994B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
CN103246478B (zh) * | 2012-02-08 | 2015-11-25 | 北京同有飞骥科技股份有限公司 | 一种基于软raid支持无分组式全局热备盘的磁盘阵列系统 |
CN116185311B (zh) * | 2023-04-27 | 2023-08-08 | 苏州浪潮智能科技有限公司 | 独立磁盘冗余阵列的升级迁移方法、降级迁移方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529376A (zh) * | 2006-10-25 | 2009-09-09 | 微软公司 | 经由透明辅助因素的平台认证 |
CN101571790A (zh) * | 2008-04-29 | 2009-11-04 | 环达电脑(上海)有限公司 | 闪存控制器 |
CN101673210A (zh) * | 2009-10-16 | 2010-03-17 | 苏州壹世通科技有限公司 | 基于可扩展固件接口的跨平台和跨处理器的方法和装置 |
-
2010
- 2010-04-16 CN CN201010149051.2A patent/CN101825994B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529376A (zh) * | 2006-10-25 | 2009-09-09 | 微软公司 | 经由透明辅助因素的平台认证 |
CN101571790A (zh) * | 2008-04-29 | 2009-11-04 | 环达电脑(上海)有限公司 | 闪存控制器 |
CN101673210A (zh) * | 2009-10-16 | 2010-03-17 | 苏州壹世通科技有限公司 | 基于可扩展固件接口的跨平台和跨处理器的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101825994A (zh) | 2010-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144306B2 (en) | Scheduling upgrades in distributed computing systems | |
US11314499B2 (en) | Simulating end-to-end upgrade process in production environment | |
CN101076782B (zh) | 提供虚拟刀片服务器的方法和装置 | |
CN102541619B (zh) | 虚拟机管理装置和方法 | |
Hallinan | Embedded Linux primer: a practical real-world approach | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US8732285B2 (en) | Upgradeable persistent virtual storage | |
US9952782B1 (en) | Method and system for accessing data between different virtual disk formats in a virtualization environment | |
CN102207896A (zh) | 虚拟机崩溃文件生成技术 | |
US9619350B1 (en) | Systems and methods for application-consistent disaster recovery using a virtual storage controller and remote storage | |
CN104052621A (zh) | 用于跨快速外围组件互连(pcie)段的平台管理消息的方法和系统 | |
CN102449599A (zh) | 将java应用程序转换成用于云部署的虚拟服务器镜像的系统和方法 | |
CN101425021A (zh) | 基于虚拟机技术的个人计算机可迁移应用模式 | |
US8069344B2 (en) | System and method for analyzing CPU performance from a serial link front side bus | |
WO2014099828A1 (en) | Test scope determination based on code change(s) | |
US20170131928A1 (en) | Method for performing hot-swap of a storage device in a virtualization environment | |
CN106095528A (zh) | 一种检测虚拟机盘符的方法 | |
CN104598170A (zh) | 确定读写路径的方法和装置 | |
CN101825994B (zh) | 基于固件的非操作系统依赖的闪存阵列管理装置和方法 | |
CN102193804B (zh) | 一种单板驱动的加载方法和通信设备 | |
KR20180023784A (ko) | 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법 | |
CN110347534A (zh) | 使用嵌入式非易失性存储器在计算系统中进行自修复 | |
US11269614B2 (en) | Transfer of firmware updates using an in-band interface | |
CN102253884B (zh) | 模拟单板软件运行环境的方法及装置 | |
US20150026683A1 (en) | Data control system for virtual environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |