一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在虚拟机上使用FTL进行开放通道存储设备管理的制作方法

2021-12-14 23:42:00 来源:中国专利 TAG:

在虚拟机上使用ftl进行开放通道存储设备管理


背景技术:

1.具有诸如固态驱动器(ssd)之类的存储设备的主机系统可以运行多个虚拟机。如果ssd上没有实施闪存转换层(ftl),则ssd可以称为开放通道固态驱动器。通常情况下,开放通道ssd的ftl是在主机系统上实施的。然而,运行在所述虚拟机上的应用程序不能通过所述主机系统上的常规ftl单独操作所述ssd的内存块。


技术实现要素:

2.本技术实施例提供了一种用于访问主机的存储设备的计算机实现的方法。所述方法包括:通过运行在所述主机的客户操作系统上的第一虚拟机的第一客户闪存转换层(ftl)实例,从所述第一虚拟机接收访问所述存储设备的第一请求,其中,所述第一请求包括所述存储设备的第一物理地址;通过所述第一客户ftl实例将所述第一请求传送到运行于所述主机的主机操作系统的主机ftl驱动程序;通过所述主机ftl驱动程序将所述第一请求转换为第一硬件命令;通过所述主机ftl驱动程序将所述第一硬件命令传送至所述存储设备;并且通过所述存储设备执行所述第一硬件命令以访问所述第一物理地址。
3.本技术实施例还提供了一种装置。所述装置包括:用于存储指令集的存储器;以及至少一个处理器,所述处理器被配置为执行所述指令集以使得所述装置执行:通过运行在所述主机的客户操作系统上的第一虚拟机的第一客户闪存转换层(ftl)实例,从所述第一虚拟机接收访问所述存储设备的第一请求,其中,所述第一请求包括所述存储设备的第一物理地址;通过所述第一客户ftl实例将所述第一请求传送到运行于所述主机的主机操作系统的主机ftl驱动程序;通过所述主机ftl驱动程序将所述第一请求转换为第一硬件命令;通过所述主机ftl驱动程序将所述第一硬件命令传送至所述存储设备;并且通过所述存储设备执行所述第一硬件命令以访问所述第一物理地址。
4.本技术实施例还提供了一种主机,包括一个或多个非暂时性计算机可读介质,该介质存储有指令集,该指令集可由所述主机的至少一个处理器执行,以使得所述主机执行用于访问主机的存储设备的方法。所述方法可以包括:通过运行在所述主机的客户操作系统上的第一虚拟机的第一客户闪存转换层(ftl)实例,从所述第一虚拟机接收访问所述存储设备的第一请求,其中,所述第一请求包括所述存储设备的第一物理地址;通过所述第一客户ftl实例将所述第一请求传送到运行于所述主机的主机操作系统的主机ftl驱动程序;通过所述主机ftl驱动程序将所述第一请求转换为第一硬件命令;通过所述主机ftl驱动程序将所述第一硬件命令传送至所述存储设备;并且通过所述存储设备执行所述第一硬件命令以访问所述第一物理地址。
5.所发明的实施例的附加特征和优点将部分地在以下描述中阐述,并且部分将从描述中明显地说明,或者可以通过实施例的实践而获知。所发明的实施例的特征和优点可以通过权利要求中阐述的要素和组合来实现和获得。
6.需要理解的是,上述一般性描述和下面的详细描述都仅是示例性和说明性的,并且所发明的实施例不作为对所要求保护的内容的限定。
附图说明
1.本发明的实施例和各个方面在以下详细描述和附图中示出。图中所示的各种特征未按比例绘制。
2.图1a是根据本技术的一些实施例的用于提供虚拟机服务的示例性装置的框图。
3.图1b示出了根据本发明的实施例的示例性云系统的示意图。
4.图2a示出了根据本发明的一些实施例的在主机上管理开放通道ssd的示意图。
5.图2b示出了根据本发明的一些实施例的访客ftl驱动器的示意图。
6.图2c示出了根据本发明的一些实施例的io请求和管理请求的示例性请求格式。
7.图3是根据本发明的一些实施例的在ssd上操作的访客ftl实例的示例性过程的流程图。
8.图4示出了根据本发明的一些实施例的主机ftl驱动程序和客户ftl实例的初始化过程的示例性流程图。
9.图5是根据本发明的一些实施例的用于访问主机的固态驱动器的计算实现的方法的流程图。
具体实施方式
10.下文将更详细地描述本发明的具体方面。如果与引用的术语或定义相冲突,则以本文提供的术语和定义为准。术语“示例”的意思是“例子”,而不是“典范”。
11.虚拟机是计算机系统的仿真,它可以提供物理计算机的功能。与传统设计不同,在本技术的实施例中,虚拟机配备有客户闪存转换层(ftl)实例,用于发送与主机的存储设备(例如,固态驱动器(ssd))的物理地址相关联的请求,并且运行有一个或多个虚拟机的所述主机装备有用于验证和处理所述请求的主机ftl驱动程序。因此,依据本技术实施例的虚拟机可以直接对所述主机的所述存储设备(例如ssd)的物理地址进行操作,同时,所述主机ftl驱动程序可以保证各个虚拟机的数据安全。
12.所述客户ftl实例可以将主机侧的逻辑块地址(lba)(例如,ssd的扇区号)映射到所述闪存的物理块地址(pba)。这个过程也可以称为lba2pba映射。为了在虚拟机中实现ftl功能,提供虚拟机服务的装置可以如下所示。
13.图1a是根据本技术的一些实施例的用于提供虚拟机服务的示例性装置100的框图。如图1a所示,装置100可以包括处理器102、存储器104、网络接口106、外围接口108和总线110。
14.当处理器102执行本文描述的指令和方法时,装置100可以变成用于提供虚拟机服务的专用机器。处理器102可以是任何类型的能够操纵或处理信息的电路。例如,处理器102可以包括任意数量的中央处理单元(或“cpu”)、图形处理单元(或“gpu”)、神经处理单元(“npu”)、微控制器单元(“mcu”)、光学处理器、可编程逻辑控制器、微控制器、微处理器、数字信号处理器、知识产权(ip)核、可编程逻辑阵列(pla)、可编程阵列逻辑(pal)、通用阵列逻辑(gal)、复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、片上系统(soc)、专用集成电路(asic)等。在一些实施例中,处理器102还可以是被分组为单个逻辑组件的一组处理器。例如,如图1a所示,处理器102可以包括多处理器,包括处理器102a、处理器102b和处理器102n。
15.可以配置内存104来存储数据(例如,一组指令、计算机代码、中间数据等)。例如,如图1a所示,存储的所述数据可以包括程序指令(例如,用于实现处理视频内容的方法的步骤的程序指令)和用于处理的数据(例如,视频序列、视频比特流或视频流)。处理器102可以访问所述程序指令以及用于处理的数据(例如,通过总线110),并且执行所述程序指令以对所述用于处理的数据执行操作或处理。内存104可以包括高速随机存取存储设备或非易失性存储设备。在一些实施例中,内存104可以包括任意数量的随机存取存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘驱动器、固态驱动器(ssd)、闪存驱动器、安全数字(sd)卡、记忆棒、紧凑型闪存(cf)卡等。内存104也可以是作为单个逻辑组件进行分组的一组存储器(图1a中未示出)。
16.总线110可以是在装置100内部的组件之间传输数据的通信设备,例如内部总线(例如,cpu

内存总线)、外部总线(例如,通用串行总线端口、外围组件互连快速端口),或类似的。
17.为了便于解释而不引起歧义,在本发明中,处理器102和其他数据处理电路可以统称为“数据处理电路”。所述数据处理电路可以完全作为硬件来实现,也可以作为软件、硬件或固件的组合来实现。此外,所述数据处理电路可以是单个独立模块,也可以完全或部分地组合到设备100的任何其他组件中。
18.装置100还可包括网络接口106以提供与网络(例如,因特网、内联网、局域网、移动通信网络等)的有线或无线通信。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(nic)、射频(rf)模块、转发器、收发器、调制解调器、路由器、网关、有线网络适配器、无线网络适配器、蓝牙适配器、红外适配器、近场通信(“nfc”)适配器、蜂窝网络芯片等的任意组合。
19.在一些实施例中,可选地,装置100还可包括外围接口108,以提供到一个或多个外围设备的连接。如图1a所示,所述外围设备可以包括但不限于光标控制设备(例如鼠标、触摸板或触摸屏)、键盘、显示器(例如阴极射线管显示器、液晶显示器或发光二极管显示器)、视频输入设备(例如,照相机或耦合到视频档案的输入接口)等。
20.图1b示出了根据本发明的实施例的包含了装置100的示例性云系统130的示意图。
21.如图1b所示,云系统130可以向多个客户端(例如,元件142

148)提供虚拟机服务,并可包括多个计算服务器(例如,元件132和134)。所述多个计算服务器可以物理地或虚拟地分组在一个或多个网络中,这些网络共同形成云系统130。所述一个或多个网络可以是私有的、公共的、社区的或其组合。在一些实施例中,计算服务器132或134可以是例如图1a的装置100。为了简单和清楚起见,图1b以简化的方式示出了装置100。所述多个客户端可以包括平板电脑142、膝上型电脑144、台式计算机146、移动电话148等。计算服务器132和134可以被称为远程机器或主机,而多个客户端142

148可以被称为本地机器或客户机。
22.在一些实施例中,远程机器(例如,132或134)可以执行虚拟机,以提供一个执行会话,在该执行会话中,虚拟应用程序代表本地机器(例如,144)的用户而得到实施。值得注意的是,包括远程机器132和134的云系统130可以执行多个虚拟机,并且这些虚拟机可以在一个或多个本地机器上运行。
23.所述虚拟机运行在一个主机操作系统上,该主机操作系统运行在所述远程机器上,并且所述虚拟机还运行客户操作系统(os)。所述客户操作系统可以提供进程控制、内存
管理以及所述虚拟应用程序所需的其他服务。在本发明的一些实施例中,该客户os还可以包括客户闪存转换层(ftl)驱动程序,并且主机os还可以包括主机ftl驱动程序。所述客户ftl驱动程序和所述主机ftl驱动程序可用于管理虚拟机在云系统130的开放通道ssd上的直接操作。
24.图2a示出了根据本发明的一些实施例的在主机200上管理开放通道ssd的示意图。
25.主机200可以由例如有关图1a所描述的装置100来实现。运行主机操作系统(os)2100的主机200的底层硬件2000可以包括开放通道ssd202和204。值得注意的是,底层硬件2000还包括诸如处理器、网络接口、外设接口以及总线的组件,其详细说明可参见图1a。
26.开放通道ssd 202和204向主机os 2100展示通道集合,每个通道包含一组复数个并行单元(pu)。例如,如图2a所示,ssd202可以包括pu组2022和pu组2024,并且ssd204可以包括pu组2042。一个pu可以覆盖开放通道ssd的一个或多个物理模组,并且一个模组只能是一个pu的成员。每个pu每次可以处理单个i/o请求。
27.主机os 2100可以包括主机闪存转换层(ftl)驱动程序2102。主机ftl驱动程序2102可以被配置为将客户ftl实例的客户ftl请求转换为可由ssd(例如、202或204)执行的硬件命令,并将硬件信号(例如,后完成信号)转换为访客响应。主机ftl驱动器2102还可被配置为确定与所述客户ftl请求相关联的物理地址是否可由运行所述客户ftl实例的虚拟机访问。值得注意的是,主机os 2100还可以包括用于与客户os 2200通信的接口,并且主机ftl驱动程序2102可以包含用于与客户os 2200通信的协议(例如,ftl协议)。此外,主机os 2100可以创建用于存储可由所述ssd执行的硬件命令的队列(例如,206a

206c)。
28.客户os 2200可以包括一个或多个虚拟机2202

2206和客户ftl驱动程序(将参考图2b进行讨论)。客户ftl驱动程序可以使用虚拟io框架(例如virtio)来实现。所述虚拟io框架可以虚拟化所述虚拟机的组件的接口,例如所述虚拟机的虚拟ssd,并与主机os 2100协作以允许客户os2200的虚拟机访问所述主机中的资源。在一些实施例中,所述客户ftl驱动程序可以被实例化为每个虚拟机的客户ftl实例。例如,虚拟机2202

2206可以分别包括客户ftl实例2208

2212。值得注意的是,每个虚拟机可以包括用于与主机os 2100通信并从所述虚拟机的用户接收指令的虚拟接口。此外,所述客户os2200还为虚拟机创建虚拟队列(例如,208a、208b或208c)。所述虚拟队列可以存储用于访问ssd的请求,该请求可以由主机ftl驱动程序2102进一步获取。
29.图2b示出了根据本发明的一些实施例的客户ftl驱动程序210的示意图。
30.如图2b所示,客户ftl驱动程序210可包括至少一输入/输出(io)单元212、逻辑块地址到物理块地址(lba2pba)映射单元214、垃圾收集单元216、媒体管理单元218、错误处理单元220和虚拟队列222。
31.输入/输出单元212可以是用于与客户os和主机os收发信息(例如,与访问ssd的请求相关联的物理地址)的虚拟接口。例如,当虚拟机的用户发出访问ssd的请求时,与该请求相关联的物理地址可以通过输入/输出单元212传递给客户ftl驱动程序210。
32.在一些实施例中,客户ftl驱动程序210可以提供两种类型的请求,包括io请求和管理请求。图2c示出了根据本发明的一些实施例的io请求和管理请求的示例性请求格式。所述io请求可以针对从所述ssd的地址读取数据的读操作、将数据写入ssd的地址的写操作、或者从所述ssd的地址擦除数据的擦除操作。如图2c所示,所述io请求可以包括用于指
示操作类型(例如,读取、写入或擦除)的操作码字段、物理起始地址字段、用于存储内存数据的数据缓冲区字段以及用于指示数据缓冲区的长度的数据缓冲区长度字段。所述管理请求可以指向管理操作,例如几何操作、坏块表操作、识别操作、格式操作等。如图2c所示,所述管理请求可以包括用于指示操作类型的操作码字段、用于存储内存数据的数据缓冲区字段以及用于指示数据缓冲区长度的数据缓冲区长度字段。
33.lba2pba映射单元214可以被配置为将与请求(例如,io请求或管理请求)相关联的逻辑地址映射到ssd的物理地址,以使得所述虚拟机可以直接访问所述ssd的复数个pu。
34.垃圾收集单元216可以被配置为系统地识别包含不需要的数据(例如,擦除的数据、修改的数据等)的页面,并且在非高峰时间清除不需要的数据块,以在正常操作期间保持最佳写入速度。
35.媒体管理单元218可以被配置为监视ssd页面/块已经被读/写的次数,并且平衡跨ssd页面/块的读/写时间。媒体管理单元218还可识别ssd页面/块中的错误,并邀请错误处理单元220来处理该ssd页面/块。
36.错误处理单元220可以被配置为修复或重新生成存储在ssd页面/块中的元数据,并且记录错误报告。
37.虚拟队列222(也参见图2a的队列208a、208b或208c)可以被配置为按顺序存储客户ftl请求。在一些实施例中,虚拟队列222可以由客户ftl实例和主机ftl驱动程序均可访问的内存空间来实现,使得存储在虚拟队列222中的数据(例如,客户ftl请求或硬件完成后信号)可以由客户ftl实例和主机ftl驱动程序访问和获取。换言之,客户ftl实例和主机ftl驱动程序之间的通信是通过虚拟队列222实现的。
38.图3是根据本发明的一些实施例的客户ftl实例在ssd上操作的示例性流程300的流程图。如图3所示,流程300可包括以下步骤。
39.在步骤302中,客户ftl实例(例如,图2的客户ftl实例2208)可以向虚拟队列(例如,虚拟队列222)发送用于访问该ssd的客户ftl请求。可以理解的是,可以从运行在主机上的虚拟机接收客户ftl请求。例如,虚拟机的应用程序可以生成与逻辑地址相关的指令,并将该指令发送给客户ftl实例。如上所述,可以使用例如客户ftl实例的lba2pba映射单元214将与所述指令相关联的逻辑地址映射到该ssd中的物理地址。因此,当客户ftl实例向虚拟队列发送客户ftl请求时,所述客户ftl请求包含该ssd中的物理地址。
40.在步骤304中,主机ftl驱动程序(例如,图2的主机ftl驱动程序2102)可以从虚拟队列中获取该客户ftl请求,并且将该客户ftl请求转换为可由该ssd执行的硬件命令。在一些实施例中,客户ftl请求以不同于硬件命令的格式呈现,并且可以在被执行之前“翻译”为硬件命令。在一些实施例中,访客ftl请求可以包含可由该ssd执行的指令,并且主机ftl驱动程序可以将该指令作为硬件命令进行转发。
41.如上所述,所述虚拟队列可由所述客户ftl实例和所述主机ftl驱动程序访问。因此,所述客户ftl请求可以通过所述虚拟队列传递给所述主机ftl驱动程序。
42.虚拟机只被允许访问给定范围的物理地址,这样可以保证每个虚拟机的数据安全。因此,在一些实施例中,所述主机ftl驱动程序还可以解析虚拟机的客户ftl请求并确定该客户ftl请求是否与可访问的物理地址范围相关联。如果主机ftl驱动程序确定该客户ftl请求与超出可访问范围的地址相关联,则所述主机ftl驱动程序可以将错误信号发送回
所述虚拟队列。
43.在步骤306中,所述主机ftl驱动程序可以将所述硬件命令发送到硬件队列。所述硬件队列是在主机的内存中实现的,用于存储一个或多个硬件命令。可以理解的是,只有与可访问范围内的地址相关联的硬件命令才能被发送到所述硬件队列。
44.在步骤308中,该ssd可以从硬件队列中获取硬件命令并执行该硬件命令,从而在所述ssd的并行单元上按照所述客户ftl实例所要求的进行操作。
45.在步骤310中,所述ssd可以向所述硬件队列发送所述ssd操作完成后的信号。与从硬件队列获取硬件命令类似,在步骤312,主机ftl驱动程序可以获取所述操作完成后的信号,并将其转换为客户响应。
46.在步骤314中,主机ftl驱动程序可以将所述客户响应发送到虚拟队列。然后,在步骤316,所述客户ftl实例可以从虚拟队列获取所述客户响应。在接收到所述客户响应后,所述客户ftl实例就可以知道它的ssd操作请求已完成。
47.图4示出了根据本发明的一些实施例的主机ftl驱动程序和客户ftl实例的初始化过程400的示例性流程图。
48.初始化400可以包括在主机os侧执行的主机ftl驱动程序初始化流程和在客户os侧执行的客户ftl实例初始化流程。主机ftl驱动程序初始化流程和客户ftl实例初始化流程可以依次或并行执行。
49.如图4所示,所述主机ftl驱动程序初始化流程可以由主机os执行,并且其可以包括以下这些步骤。
50.在步骤402中,可以在主机os上启动所述主机ftl驱动程序。然后,可以在步骤404中创建开放通道ssd的硬件队列,以接收硬件命令。一个硬件队列可以与一组复数个并行单元(pu)相关联,使得来自一个硬件队列的硬件命令只能应用于该硬件队列对应的一组复数个pu。
51.客户ftl实例初始化流程可以由客户os执行并且可以包括以下步骤。
52.在步骤406中,可以在所述客户os中启动所述主机ftl驱动程序。
53.然后,在步骤408中,可以为在客户os上运行的虚拟机创建虚拟开放通道ssd和虚拟队列。可以理解的是,所述虚拟队列可以对应于步骤404中创建的硬件队列,每个虚拟队列和该虚拟队列对应的硬件队列可以与一组开放通道ssd的并行单元(pu)相关联。如果虚拟队列或硬件队列不与某组pu相关联,则无法执行虚拟队列或硬件队列中的请求或指令来访问该组pu。
54.在步骤410中,可以初始化客户ftl实例。可以实例化主机ftl驱动程序以创建一个或多个客户ftl实例。每个客户ftl实例可以关联一个虚拟队列,该队列通过相应的硬件队列与一组复数个pu相对应。因此,每个客户ftl实例只能通过相应的虚拟队列和硬件队列与一组复数个pu相关联。换句话说,一个虚拟机只能对该虚拟机的客户ftl实例对应的一组复数个pu进行操作。为了避免任何可能的数据安全漏洞,对应于各个客户ftl实例的多组复数个pu之间没有共同的pu。
55.在步骤412中,可以处理来自在虚拟机上运行的应用程序的请求。处理请求的过程已经参考图3进行了说明,这里不再赘述。
56.由于客户ftl实例可以将逻辑地址转换成虚拟机内的物理地址,因此,通过在虚拟
机上运行客户ftl实例,所述虚拟机可以对主机的ssd的pu执行直接操作。同时,由于一个虚拟机只被允许在一组复数个pu上运行,因此可以保证虚拟机操作隔离和数据安全。
57.图5是根据本发明的一些实施例的用于访问主机的固态驱动器(ssd)的计算实现方法500的流程图。方法500可以由例如图1a的作为主机运行(例如,图2a的主机200)的装置100来实现。所述主机可以运行主机操作系统(os)和客户操作系统os。方法500可以包括如下步骤。
58.在步骤502中,第一客户闪存转换层(ftl)实例可以接收用于访问固态驱动器的第一请求,该第一请求来自主机上运行的第一虚拟机。如上所述,所述第一客户ftl实例可以通过实例化客户ftl驱动程序来生成。所述第一请求可以与在客户操作系统的第一虚拟机上运行的应用程序相关。例如,在第一虚拟机上运行的应用程序可以发出访问逻辑地址的指令,并且所述第一客户ftl实例可以使用例如图2b的lba2pba映射单元214将逻辑地址映射到ssd上的物理地址。
59.在一些实施例中,第一请求可以包括输入/输出(io)请求或管理请求。如参考图2c所讨论的,所述io请求可以包括第一操作码字段、起始物理地址字段、第一数据缓冲区字段和第一数据缓冲区长度字段。并且所述管理请求可以包括第二操作码字段、第二数据缓冲区字段和第二数据缓冲区长度字段。因此,所述第一请求可以包括ssd的第一物理地址。
60.因此,所述io请求与读取命令、写入命令或擦除命令相关联,并且所述管理请求与几何命令、坏块表命令、识别命令或格式命令相关联。
61.在一些实施例中,由于客户os可以运行多个虚拟机,因此还可以通过实例化所述客户ftl驱动程序来为另一虚拟机生成第二客户ftl实例。因此,可以从运行在主机上的第二虚拟机接收用于访问所述固态驱动器的第二请求。类似地,所述第二请求可以包括所述ssd的第二物理地址。
62.在步骤504中,所述第一ftl实例可以将第一请求传送到主机ftl驱动程序。所述主机ftl驱动程序可以在主机操作系统上运行。
63.在一些实施例中,所述客户os可以包括用于存储第一请求的第一客户队列(例如,图2的虚拟队列222)和用于存储第二请求的第二客户队列。所述主机ftl驱动程序也可以访问第一和第二客户队列。因此,通过从相应的客户队列中获取客户请求(例如,所述第一客户请求或所述第二客户请求),所述主机os的主机ftl驱动程序可以从客户os的客户ftl实例接收所述客户请求。
64.在步骤506中,所述主机ftl驱动程序可以将第一请求转换为第一硬件命令。类似地,主机ftl驱动程序也可以将第二个请求转换为第二个硬件命令。
65.在步骤508中,主机ftl驱动器可以将第一硬件命令传输到固态驱动器。同理,所述第二硬件命令也可传送至所述固态驱动器。
66.在一些实施例中,所述固态驱动器可以包括用于存储第一硬件命令的第一主机队列和用于存储第二硬件命令的第二主机队列。主机ftl驱动程序和固态驱动器都可以访问第一主机队列和第二主机队列,从而所述固态驱动器可以获取主机ftl驱动程序的指令以供执行。
67.在步骤510中,所述固态驱动器可以执行第一硬件命令和第二硬件命令。如上所述,每个客户ftl实例只能通过相应的虚拟队列和硬件队列与一组复数个并行单元(pu)相
关联。因此,所述固态驱动器可以根据所述第一硬件命令操作第一组复数个pu,并根据所述第二硬件命令操作第二组复数个pu,并且第一组复数个pu和第二组复数个pu没有共同的pu。第一物理地址可以指向所述第一组复数个pu的一个或多个pu,第二物理地址可以指向所述第二组复数个pu的一个或多个pu。如上所述,所述第一组复数个pu只能被所述第一虚拟机访问,而所述第二组复数个pu只能被所述第二虚拟机访问,从而使所述第一虚拟机和所述第二虚拟机的数据相互隔离。
68.在执行与访问所述固态驱动器的请求相对应的硬件命令之后,所述固态驱动器可以向主机ftl驱动程序发送完成后信号。例如,参考图3所讨论的,所述完成后信号也可以放在对应的硬件队列中,这样主机ftl驱动程序就可以获取到完成后信号。然后,所述主机ftl驱动程序可以将完成后信号转换为对客户ftl实例的客户响应。在一些实施例中,主机ftl驱动程序可以将所述客户响应放置在相应的客户队列中,并使用相应的客户队列将所述客户响应传输到客户ftl实例。
69.在一些实施例中,方法500还可以包括在步骤502之前的初始化阶段。例如,参考图4所讨论的,初始化阶段可以包括在主机操作系统上启动主机ftl驱动程序;在固态驱动器上创建第二队列;在客户操作系统上为虚拟机启动客户ftl驱动程序;创建虚拟ssd和第一队列;并使用所述客户ftl驱动程序初始化所述第一ftl实例。
70.本发明的实施例还提供了一种计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行上述方法的计算机可读程序指令的非暂时性计算机可读存储介质。
71.计算机可读存储介质可以是一种有形的设备,它能够存储供指令执行设备使用的指令。计算机可读存储介质可以是,例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体的示例包括:便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd

rom)、数字多功能磁盘(dvd)、记忆棒、软盘、机械编码设备,例如在其上记录有指令的穿孔卡片或凹槽中的凸起结构,以及上述任何适当的组合。
72.用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或一种或多种编程语言(包括面向对象编程语言和传统过程式编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以作为独立软件包完全在计算机系统上执行,或者部分在第一计算机上执行、部分在第一计算机远程连接的第二计算机上执行。在后一种情况下,第二远程计算机可以通过任何类型的网络连接到第一计算机,包括局域网(lan)或广域网(wan)。
73.可以将所述计算机可读程序指令提供给计算机的处理器或其他可编程数据处理设备以生成一个机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实施上述方法的装置。
74.可以使用以下条款进一步描述所述实施例:1.一种计算机实施的访问主机的存储设备的方法,包括:通过运行在所述主机的客户操作系统上的第一虚拟机的第一客户闪存转换层(ftl)实例,从所述第一虚拟机接收访问所述存储设备的第一请求,其中,所述第一请求包括所述存储设备的第一物理地址;
通过所述第一客户ftl实例,将所述第一请求传送到运行于所述主机的主机操作系统的主机ftl驱动程序;通过所述主机ftl驱动程序,将所述第一请求转换为第一硬件命令;通过所述主机ftl驱动程序,将所述第一硬件命令传送至所述存储设备;和通过所述存储设备,执行所述第一硬件命令以访问所述第一物理地址。2.根据条款1所述的方法,进一步包括:通过第二客户ftl实例,从运行在所述主机上的第二虚拟机接收用于访问所述存储设备的第二请求;和通过所述主机ftl驱动程序,将所述第二请求转换为第二硬件命令,其中,所述第二请求包括所述存储设备的第二物理地址。3.根据条款2所述的方法,进一步包括:根据所述第一硬件命令操作第一组复数个并行单元(pu);和根据所述第二硬件命令操作第二组复数个pu,其中,所述第一组复数个pu和第二组复数个pu之间没有共同的pu。4.根据条款3所述的方法,其中,所述第一组复数个pu只能由所述第一虚拟机访问,并且所述第二组复数个pu只能由所述第二虚拟机访问。5.根据条款2

4任一项所述的方法,其中,所述客户操作系统包括用于存储所述第一请求的第一客户队列和用于存储所述第二请求的第二客户队列,所述第一客户队列和所述第二客户队列可由所述主机ftl驱动程序进行访问;和所述存储设备包括用于存储所述第一硬件命令的第一主机队列和用于存储所述第二硬件命令的第二主机队列,所述第一主机队列和所述第二主机队列可由所述主机ftl驱动程序和所述存储设备进行访问。6.根据条款1

5中任一项所述的方法,还包括:通过所述存储装置,向所述主机ftl驱动程序传送完成后信号;通过所述主机ftl驱动程序,将所述完成后信号转换为针对所述客户ftl实例的客户响应;和通过所述主机ftl驱动程序,将所述客户响应传送到所述客户ftl实例。7.根据条款1

6中任一项所述的方法,其中,所述第一请求包括输入/输出(io)请求或管理请求。8.根据条款7所述的方法,其中,所述io请求包括第一操作码字段、起始物理地址字段、第一数据缓冲区字段和第一数据缓冲区长度字段;和所述管理请求包括第二操作码字段、第二数据缓冲区字段和第二数据缓冲区长度字段。9.根据条款7或8所述的方法,其中,所述io请求与读取命令、写入命令或擦除命令相关联,并且所述管理请求与几何命令、坏块表命令、识别命令或格式命令相关联。10.根据条款5

9中任一项所述的方法,还包括:
在所述主机操作系统上启动所述主机ftl驱动程序;在所述存储设备上创建第二队列;在所述客户操作系统上启动客户ftl驱动程序;创建虚拟存储设备和第一队列;和使用所述客户ftl驱动程序初始化所述第一ftl实例。11.一种装置,包括:用于存储指令集的存储器;和至少一个处理器,所述处理器被配置为执行所述指令集以使得所述装置执行:通过运行在所述主机的客户操作系统上的第一虚拟机的第一客户闪存转换层(ftl)实例,从所述第一虚拟机接收访问所述存储设备的第一请求,其中,所述第一请求包括所述存储设备的第一物理地址;通过所述第一客户ftl实例,将所述第一请求传送到运行于所述主机的主机操作系统的主机ftl驱动程序;通过所述主机ftl驱动程序,将所述第一请求转换为第一硬件命令;通过所述主机ftl驱动程序,将所述第一硬件命令传送至所述存储设备;和通过所述存储设备,执行所述第一硬件命令以访问所述第一物理地址。12.根据条款11所述的装置,其中,所述至少一个处理器被配置为执行所述指令集以使得所述装置进一步执行:通过第二客户ftl实例,从运行在所述主机上的第二虚拟机接收用于访问所述存储设备的第二请求;和通过所述主机ftl驱动程序,将所述第二请求转换为第二硬件命令,其中,所述第二请求包括所述存储设备的第二物理地址。13.根据条款12所述的装置,其中,所述至少一个处理器被配置为执行所述指令集以使得所述装置进一步执行:根据所述第一硬件命令操作与所述第一物理地址相关联的第一组复数个并行单元(pu);和根据所述第二硬件命令操作与所述第二物理地址相关联的第二组复数个pu,其中,所述第一组复数个pu和所述第二组复数个pu之间没有共同的pu。14.根据条款13所述的装置,其中,所述第一组复数个pu仅可由所述第一虚拟机访问,并且所述第二组复数个pu仅可由所述第二虚拟机访问。15.根据条款12

14中任一项所述的装置,其中,所述客户操作系统包括用于存储第一请求的第一客户队列和用于存储第二请求的第二客户队列,所述第一客户队列和第二客户队列可由主机ftl驱动程序访问;和所述存储设备包括用于存储所述第一硬件命令的第一主机队列和用于存储所述第二硬件命令的第二主机队列,所述第一主机队列和所述第二主机队列可由所述主机ftl驱动程序和所述存储设备访问。16.根据条款11

15中任一项所述的装置,其中,所述至少一个处理器被配置为执行所述指令集以使得所述装置进一步执行:通过所述存储装置,向所述主机ftl驱动程序传送完成后信号;
通过所述主机ftl驱动程序,将所述完成后信号转换为针对所述客户ftl实例的客户响应;和通过所述主机ftl驱动程序,将所述客户响应传送到所述客户ftl实例。17.根据条款11

16中任一项的装置,其中,所述第一请求包括输入/输出(io)请求或管理请求。18.根据条款17所述的装置,其中,所述io请求包括第一操作码字段、起始物理地址字段、第一数据缓冲区字段和第一数据缓冲区长度字段;和所述管理请求包括第二操作码字段、第二数据缓冲区字段和第二数据缓冲区长度字段。19.根据条款17或18的装置,其中,所述io请求与读取命令、写入命令或擦除命令相关联,并且所述管理请求与几何命令、坏块表命令、识别命令或格式命令相关联。20.一种主机,包括一个或多个非暂时性计算机可读介质,该介质存储有指令集,该指令集可由所述主机的至少一个处理器执行,以使得所述主机执行用于访问主机的存储设备的方法,所述方法可以包括:通过运行在所述主机的客户操作系统上的第一虚拟机的第一客户闪存转换层(ftl)实例,从所述第一虚拟机接收访问所述存储设备的第一请求,其中,所述第一请求包括所述存储设备的第一物理地址;通过所述第一客户ftl实例,将所述第一请求传送到运行于所述主机的主机操作系统的主机ftl驱动程序;通过所述主机ftl驱动程序,将所述第一请求转换为第一硬件命令;通过所述主机ftl驱动程序将所述第一硬件命令传送至所述存储设备;和通过所述存储设备,执行所述第一硬件命令以访问所述第一物理地址。
75.附图中的流程图和图表示出了根据本说明书的各种实施例的设备、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或图表中的框可以表示软件程序、段或代码的一部分,其包括用于实现特定功能的一个或多个可执行指令。还应当注意的是,在一些替代实施方式中,框中标注的功能可以不按照图中标注的顺序出现。例如,根据所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者有时可以以相反的顺序执行这些框。还应注意,图表和/或流程图的每个框,以及图表和流程图中的框的组合,可以由执行指定功能或动作的基于专用硬件的系统来实现,或者由专用硬件和计算机指令的组合来实现。
76.应当理解的是,为了清楚起见,在单独实施例的上下文中描述的说明书的某些特征也可以在单个实施例中组合提供。相反,为了简洁起见,在单个实施例的上下文中描述的说明书的各种特征也可以单独地或以任何合适的子组合或在说明书的任何其他描述的实施例中适当地提供。在各种实施例的上下文中描述的某些特征不被认为是那些实施例的必要特征,除非所述实施例在没有这些要素的情况下是不可操作的。
77.尽管已经结合具体实施例描述了本说明书,但很明显,许多替代、修改和变化对于本领域技术人员来说将是显而易见的。例如,尽管使用输入数据矩阵的流程化作为示例描
述了一些实施例,但是所描述的系统和方法可以应用于任何并行计算任务。因此,其旨在涵盖落入所附权利要求的精神和广泛范围内的所有此类替代、修改和变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献