购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 IaaS关键实现技术之存储虚拟化

存储虚拟化是一种将存储系统的内部功能从应用、主机或者网络资源中抽象、隐藏或者隔离的技术,其目的是进行与应用和网络无关的存储或数据管理。虚拟化为底层存储资源的复杂功能访问提供了简单、一致的接口,使用户不必关心底层系统的复杂实现。

3.3.1 存储系统概述

现代存储系统的体系结构如图3-3所示。共享存储模型主要包括3个部分,分别是用户应用、存储域和相关的服务子系统。其中,存储域是核心,包含多个层次,在运行在上层主机的用户应用与部署在底层的存储资源之间建立了普遍的联系;服务子系统是存储域的辅助子系统,包含一系列与存储相关的功能,如管理、安全、备份、可用性维护及容量规划等。

图3-3 SNIA(存储工业协会)共享存储模型

存储域可以被细分为3个层次,分别是文件/记录层、块聚合层及存储设备层。其中,文件/记录层是上层应用与存储资源之间的接口,采用文件系统或者数据库等方式,能够屏蔽底层硬件信息并以文件或者结构化数据的形式为用户提供数据信息的存储访问能力。这些为上层应用提供的数据信息,无论是以数据库记录的形式还是以文件的形式出现,最终都将以连续数据字节的形式存储到磁盘上,这些连续的数据字节称为数据块(Block)。数据块的大小及如何将记录或者文件映射到数据块上的方式,将由块聚合(Block Aggregation)层或者存储设备(Storage Device)层完成。块聚合层主要用于将多个底层存储设备的存储资源块聚合为能够被统一的存储资源,其实现可以在主机系统、存储网络或者存储设备等多个位置上实施。但无论怎样,其目标都是要将数据块的物理位置与相应的逻辑描述关联起来。位于模型最下面的存储设备层,则主要对数据块存储的物理位置进行识别,并将数据块从真实的底层物理存储设备中读出或者写入。另外,存储设备层也可以直接为文件/记录层提供数据访问接口,能够独立完成逻辑描述和物理存储位置的映射,而无须经过块聚合层。

对于存储虚拟化而言,不同层次的虚拟化实现具有不同的目标:存储设备层的存储资源是最底层的物理设备,通过数据块存储地址的虚拟化,实现对存储内容的快速寻址;块聚合层的目标是将存储设备层的物理存储设备虚拟化,通过合理的组织,将其构建为能被统一访问的物理资源池;文件/记录层则进一步对物理资源进行抽象,将其虚拟化为逻辑资源,并为上层应用使用。

3.3.2 存储设备层的存储虚拟化

存储设备层的存储资源指各个独立的存储设备。其中,磁盘是存储系统中最重要的存储设备,其虚拟化主要体现在数据块存储地址的虚拟化上,它是存储系统能够有效运作的重要基础。

磁盘虚拟化是一种初始的存储虚拟化类型。在存储系统的最底层,磁盘上的存储位置是由柱面(Cluster)、磁头(Head)和扇区(Section)等信息确定的,这些信息称作CHS信息。但是,因为不同容量的磁盘拥有的柱面个数不同,所以需要针对不同的硬盘设计专门的寻址方式。然而,这对于需要进行磁盘访问的操作系统和应用来说是肯定不可行的,因为这需要它们了解每种磁盘的物理特性,这在拥有大量可选硬件的前提下是不可能的事情。磁盘虚拟化技术解决了这个问题。它利用磁盘固件将磁盘的物理属性虚拟化。磁盘固件将 CHS 地址信息转换为具有连续编号的逻辑块供系统上层的操作系统、管理程序、应用程序使用,这就是逻辑块寻址。这样一来,磁盘的容量规模就可以简单地由磁盘上的逻辑块数量决定了。

磁盘虚拟化的另一个功用在于保证磁盘的零缺陷。在磁盘的生命周期中,有些存储块可能无法进行可靠的数据存储和获取坏块。一旦发现这种情况,磁盘固件会重新将这些坏块统一映射到一个空闲的磁盘块池中,使操作系统不再需要对磁盘上的坏块进行跟踪,也确保了主机看到的都是可用的零缺陷设备。

需要注意的是,在如图3-3所示的存储模型中,并没有涉及磁带等字符设备,这主要是考虑到磁带设备往往是作为备份设备存在于存储系统中的。虽然磁带设备的虚拟化也同样重要,但在本书中不做重点讨论。

3.3.3 块聚合层的存储虚拟化

虽然存储设备层的磁盘虚拟化技术能够将单个物理磁盘设备虚拟成逻辑块地址供操作系统和上层应用使用,但单块磁盘设备的存储容量有限,为实现更多物理磁盘的聚合与统一访问,则需要应用块聚合层的虚拟化技术。块聚合层的目标是通过控制物理存储器并将它们聚合成一个具有足够容量、性能和可靠性的虚拟存储器,再将聚合成的虚拟存储器划分为多个小的磁盘驱动器分配给用户。用户无须知道逻辑存储单元和物理存储单元的区别,他们看到的只是能够满足他们应用需求的磁盘空间,实现了数据位置的透明化。

根据虚拟化过程中对数据管理信息和存储数据的不同访问方式,块聚合层的存储虚拟化技术可以分为带内虚拟化和带外虚拟化两种。在传统的共享存储访问中,服务器和网络存储设备之间的访问路径如图3-4所示。

图3-4 服务器和网络存储设备之间的访问路径

网络存储设备包含数据管理信息(元数据)和数据本身,主机通过位于服务器和存储设备之间的存储网络路径访问元数据和数据本身。

当应用虚拟化技术时,虚拟化控制器需要同时抽象元数据视图和数据的物理位置。如果虚拟化控制器仍位于服务器和存储设备之间的传输路径上,即为带内访问。但是,虚拟化控制器可以将对元数据的访问路径和对数据的访问路径分开,实现带外访问。

如图3-5所示,从服务器的角度看,带内虚拟化变动最少,服务不需要通过存储网络去发现和连接多个存储设备,而只看到由虚拟化设备提供的巨大的单个存储资源。但是虚拟化控制器对元数据的控制是服务器与数据之间的必经通道,这使元数据部分成为提高性能和可靠性的瓶颈。带外虚拟化通过将对元数据的控制转移到传输路径之外,避免了带内虚拟化存在的问题,但要求每台服务器上必须安装虚拟化代理程序,以将I/O请求转发给带外设备来查询元数据。

图3-5 带内虚拟化和带外虚拟化

结合存储网络的结构,带内虚拟化和带外虚拟化的区别体现在选择什么位置进行虚拟化管理上,可选的位置包括主机、存储网络和存储设备。

1.基于主机的存储虚拟化

基于主机的虚拟化可以通过在每台服务器上安装逻辑卷管理器(Logical Volume Manager,LVM)应用程序来实现。它隐藏了物理存储资源的复杂性,并向操作系统提供存储资源的逻辑视图。因为物理存储的抽象发生在服务器本身,因此就不存在分离的控制和数据传输路径了,也就避免了带内虚拟化带来的瓶颈和性能问题。主机可以通过多条路径到达共享存储,存储设备资源也可以任意组合。

其实,基于主机的存储虚拟化技术已经非常成熟,需要借助逻辑卷管理器进行。逻辑卷管理器已经成为操作系统的标准组成部分。这种存储方案的最大优势在于它的稳定性及对异构存储系统的开放性,因为操作系统的存在屏蔽了底层硬件的差异。但是,这种虚拟化技术的缺陷在于它是以单个服务器为中心的,这就意味着需要对每台主机单独进行手工配置和管理,导致了高昂的管理开销。

2.基于存储网络的存储虚拟化

基于存储网络的存储虚拟化将虚拟化控制器转移到了存储网络的核心部分。因为存储网络已经在所有的服务器和存储设备之间建立了连接,所以更容易透明地截获和处理存储请求,是一种带内虚拟化方法。这种方案不需要在主机上安装任何代理程序,也支持对各种物理存储资源的整合,它需要的仅仅是网络设备(例如专用的存储网络交换机)具有足够的处理能力。

基于存储网络的存储虚拟化对服务器完全透明,因此它非常适合异构的服务器环境并能最小化服务器的管理开销。同时,它对物理存储设备也完全透明,可以混合使用任何厂商的任何型号和种类的存储设备。但是,这类虚拟化方法中采用的网络设备可能成为新的瓶颈,因为原本网络中的交换任务相对简单,而一旦加入高性能的存储网络交换和复杂的虚拟化管理后,在性能保证方面将具有极高的难度。

3.基于存储设备的存储虚拟化

基于存储设备的存储虚拟化可以实现对服务器完全透明,用户无须在服务器上安装任何代理软件。同时,与网络虚拟化不同,它位于存储系统的后端而不是中间,所以避免了网络负担的增加,不会成为新的瓶颈。其实,从存储设备厂商的角度出发,存储设备是实施虚拟化技术的最佳位置,厂商可以根据自产设备的实际情况,为存储设备增加各种虚拟化能力,例如比较初级的RAID和镜像功能、比较高级的多阵列整合技术等。

因为有存储设备厂商的支持,基于存储设备的虚拟化可以做到功能全面和性能优化。但是,它的问题不在于技术,而在于市场推广。因为各个厂商针对自身设备的专有方案难以兼容,限制了其应用范围。

4.块聚合层存储虚拟化实例

在实际应用的存储系统中,直接附加存储(Database as a Service,DAS)和存储区域网络(Storage Area Network,SAN)采用的都是块聚合层的存储虚拟化技术,两者的区别在于:如果使用DAS存储系统,主机只能访问自己直接挂接的存储资源;而使用SAN存储系统,主机可以访问一个共享的存储网络中的所有存储资源。相比较而言,DAS的存储资源不具有可共享性,其使用场景(例如PC)只能被本机管理和使用,因此在规模、可扩展性等方面存在缺陷;而SAN存储系统将直接附加的连接换成更加灵活的网络互连,可以对存储进行整合、共享并将多台服务器进行集群,以获得高可用性,同时,网络的规模也具有一定的可扩放性,能够满足云计算对存储资源的需求。

DAS和SAN可以在多个不同位置采用相关的块聚合层虚拟化技术。在主机侧,DAS可以通过安装和部署LVM及软件RAID等存储资源管理软件,实现块聚合。当主机从应用程序处接收到需要写入存储介质的信息时,主机上的软件RAID会将数据分块并分散存储到主机直接挂接的多个磁盘上;而LVM则负责以卷、目录和子目录的方式为上层应用提供一致的数据视图。在存储设备侧,DAS可以通过在磁盘上安装RAID控制器等软/硬件设备实现块聚合,使存储数据的条块化处理不必在主机上完成。相比较DAS,SAN需要对更多的存储资源用于管理,因此其虚拟化技术具有更高的复杂性。例如,在存储设备层,不同厂商生产的不同型号的设备在进行虚拟化时存在着巨大差异,因此,如果SAN要在存储设备层对这些设备进行整合,就需要充分考虑设备虚拟化的兼容性和易用性。SAN在主机侧实现虚拟化的最大问题在于需要对分散安装在各台主机上的负责对存储网络进行共享访问的代理程序进行管理和维护。另外,与DAS不同的是,SAN可以在存储网络中实现虚拟化(例如在存储网络中使用SAN交换机对所有的存储请求进行处理),避免了主机侧虚拟化的管理开销,也实现了底层设备资源的透明化,但网络性能是其瓶颈。目前,市场上出现了很多SAN存储产品,但是能够用于实现异构存储整合的SAN方案并不多,典型的厂商和产品包括:在网络侧实现虚拟化的IBM的SVC,在主机侧实现虚拟化的Symantec的Veritas,在存储设备侧实现虚拟化的HDS的USP等。

3.3.4 文件/记录层的存储虚拟化

文件/记录层的存储虚拟化的目标是使上层用户的应用能够更便捷地使用下层的存储资源,因此文件系统和数据库系统的虚拟化是这一层的主要技术。特别是文件系统虚拟化,能够使用户程序透明、高效地访问存储在远程的文件,在实际应用中非常重要。

最简单的文件系统虚拟化形式是网络远程文件系统,例如NFS和CIFS。在这种形式的虚拟化中,文件系统提供了专门的文件服务器用于管理网络中对文件的共享访问。这样的文件系统可以由网络中的很多主机共享;而这些主机上可能运行着不同的操作系统,它们可以使用与访问本地文件系统相同的机制对在文件系统中共享的文件进行访问。因此,一个应用或用户可以使用完全相同的接口访问文件而无须关心文件的物理位置。文件系统虚拟化隐藏了数据的位置,体现了存储虚拟化技术的“位置透明”这一重要特征。

在存储系统的实际应用中,网络附加存储(Network Attached Storage,NAS)系统采用的是文件/记录层的存储虚拟化技术。它使用部署在专用文件服务器上的文件系统管理底层的硬件存储资源,并由文件服务器通过网络协议为用户提供文件级的存储访问。和SAN类似,它能够为用户提供共享的存储资源。另外,它还能通过提供与用户本地文件处理接口一致的文件访问和操作接口支持异构用户的使用,极大地方便了用户。但是因为NAS系统需要采用网络协议进行文件传输,因此降低了传输过程中的有效载荷比和传输性能。由于NAS系统在易用的同时具有一定的价格优势,所以在业界有着广泛应用。

在对彼此独立的多个NAS系统进行整合,从而进一步虚拟出更大规模的NAS系统时,其关键在于将各个子系统中的命名空间交由文件服务器统一管理。然而,随着文件数量和来访主机并发连接数的增加,文件服务器容易成为整个系统的性能和可靠性的瓶颈。虽然当前已有多种方法可用于解决该问题(例如设立多个分布式的NAS文件服务器节点),但是因为NAS存储系统采用的是带内存储虚拟化技术,文件服务器位于数据传输路径上,使数据管理信息与数据存储访问始终不能有效分离。针对这一问题,在云计算背景下,一类不再基于专用存储设备和专用文件服务器的分布式文件系统被提出。这类系统由统一的管理节点管理和控制,以构建统一的文件名空间。同时,系统中的每个节点又具有独立的数据管理能力和数据存储能力,能够在不需要管理节点介入的情况下进行数据传输,实现了带外虚拟化,因此具有更高的传输效率和访问并发度支持,相关的内容将在第4章中进行深入阐述。 ynWdeKc5dJGEqz4IVKEhAMNYMEeKG8dFx5b+1rI87ypD1O2kQz2/3t/Db+2BZS0i

点击中间区域
呼出菜单
上一章
目录
下一章
×