账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
PCIe I/O虚拟化及其储存应用
储存I/O虚拟化:

【作者: Richard Solomon】2008年10月22日 星期三

浏览人次:【9228】

虚拟化是当前的热门话题;虽然多年来大家不断讨论一些持续存在的简单概念,随着该技术从大型计算机(mainframe)发展到主流计算机(mainstream) 领域,虚拟化才逐渐成为当前的焦点。


虚拟化的核心在于:让操作系统「认定」本身是独立在计算机上运作的,而事实上是几个不同的操作系统在共享一台计算机,每一个操作系统都称作一个系统镜像(System Image),进而达到「虚拟」的功能。由于内存管理单元(memory management units)被并入到主流计算机上,因此这种虚拟化在主流计算机上是完全可行的,不过这种技术为了要同步计算机中的所有装置,对性能造成极大影响,所以并没有引起很大的流行,近期软硬件技术的发展虽然提高了同步的速度,但仍有待改善。


简单的说,I/O虚拟化(简称IOV)就是将一个装置视为多个,而个别支持唯一的系统镜像。虚拟化发展到装置的级别,能够将系统处理器从繁重的同步工作中解放出来,大幅提高其性能。PCI-SIG工作小组正在制订PCI Express接口总线上提供虚拟设备的机制。上述工作完成后,其就会为主流IOV设计提供必要的标准,确保不同厂商的硅芯片解决方案能在不同平台上的不同操作系统中协同工作。


这样一来,问题能否就能得到解决呢?我们用当前的PCI Express前端逻辑配合I/O虚拟化技术,是否能顺利实现芯片虚拟化呢?答案既是肯定,也是否定。虽然应用此技术,芯片就能同时分配给多个系统镜像,但如何虚拟化后端(back-end)的设备,又是另一个问题所在。不妨再设想储存控制器的问题,显然,我们希望将连接的储存设备加以分区,这样系统镜像X(比方说:我的在线银行系统)就能拥有专门分配给该区的空间,系统镜像Y(比方说:www.hackers-are-we.org的 Web 服务器)则不能存取该空间。


本文将着重在SAS控制器,讨论上述后端设备的虚拟化技术;首先,将先介绍IOV在前端(front-end)设备的概况,再进一步讨论运用SAS概念来完成虚拟化图形储存的不同方式。


PCI Express I/O虚拟化

我们不妨先来谈谈I/O虚拟化的系统:「系统镜像」是指CPU、内存、O/S、I/O等构成的实际或虚拟系统,多个系统镜像可运行在一组或多组真实的硬件之上。举例来说,VMWare等系统管理程序可在单核心的桌面计算机上同时运行Windows XP和Linux两种操作系统,在此情况下,两个系统镜像共享一个CPU、内存、磁盘驱动器等。不妨再举一个刀锋型服务器(blade sever)的例子,一个刀锋运行Windows XP,而另一个刀锋则运行Linux,这时每个系统镜像尽管并未共享CPU刀锋上的硬件,但实际上却存在着共享I/O刀锋上的硬件。


不管如何分配,每个系统镜像都应该「看得到」自己的PCI阶层架构。即使不共享终端设备(如 I/O刀锋上的两个光纤信道控制器,一个分配给Linux刀锋,另一个则分配给XP刀锋),也必须采取一定的控制,以实现对PCI阶层架构的可视化(visibility)。如果共享终端设备,那么就必须限制每个系统镜像,使其仅能「看到」共享终端设备中属于自己的那一部分。


设备需要将自身的硬件模拟为多个虚拟设备,可能的方式有:分别占用不同的 PCI内存区域;对多种PCI组态缓存器(PCI Configuration registers)采用不同的设定;或可分别作为PCI多功能设备。此外,还应隔离内部跨设备的流量,这样才能避免虚拟设备间的数据溢出。


从上述示例可以看出,单点连接到PCI 阶层架构的系统与多点连接到PCI 阶层架构的系统有着明显的区别。传统的单核心桌面计算机乃至传统的多路(N-way)多核心服务器,仅通过单个逻辑连接点连接到PCI阶层架构(如图一 所示)。与此相对应的是,刀锋系统可支持新的阶层架构,上层增强型PCI Express 交换器(enhanced PCI Express switch)可通过多个根联合体(Root Complex)与整个PCI阶层架构相连(如图二所示)。因此,显然需要一些新的机制来确保每个根联合体仅存取分配给它的那一部分PCI阶层架构。


鉴于上述两种系统类型差异巨大,个别考虑其复杂性以及市场区隔特性,PCI-SIG决定将I/O虚拟化规范分为两部分。由于每个根联合体(图二所示)也可利用单根I/O虚拟化,因此上述两种规范应当是相互依赖的,这就形成了一种同心圆模式:单根(Single Root)规范建立在PCI Express基本规范基础之上,而多根(Multi-Root)规范则建立在单根规范基础之上。


单根I/O虚拟化

单根I/O虚拟化主要面向现有的PCI阶层架构,其中的单核心及多核心计算机均通过单点连接到PCI阶层架构(如图一所示)。单根规范的目标之一是支持继续使用现有的或稍作修改的根联合体芯片(即芯片组),这会造成很大的局限性。同样,支持现有的或稍作修改的硅开关(silicon switch),这也会造成一定的限制。考虑到上述要求,从总线角度说,只能存在单一的内存地址空间,虚拟化系统镜像的分区与分配在根联合体连接点的上层进行。通常认为,在根联合体之内或之上,会有某种类型的地址转换逻辑来支持虚拟化中间件(Virtualization Intermediary,通常称作系统管理程序),以实现映像功能。当然需要新的 I/O虚拟化端点设备,这种设备在设计和支持方面也面临着巨大的挑战,人们并不希望修改芯片组。在此情况下,虚拟化市场得以迅速向现有系统或简单衍生系统(比方说采用新版BIOS或芯片组得到衍生系统)领域扩展,但这却造成了在执行虚拟化中间件时,较大的软件负担。



《图一 以四核系统为例,给出采用PCI Express单根I/O虚拟化技术的 I/O设备架构。》
《图一 以四核系统为例,给出采用PCI Express单根I/O虚拟化技术的 I/O设备架构。》

多根I/O虚拟化

尽管PCI Express电缆规范(PCI Express Capable specification)带来其他众多的可能性,但多点连接阶层架构(如图二所示)最典型的实施范例仍采用带有PCI Express背板的刀锋服务器。这是一种全新的PCIe阶层架构,属于一种微型架构。PCI-SIG的目标是「小型化」的系统,可能最多带有16至32个根埠(Root Ports),不过该阶层架构也能支持更多根埠。(PCI小组指出他们的目标就是小型化,也就是说,典型的系统应用的体积不会超过3英尺。)此外,他们还有一个目标,就是继续使用现有的(或稍作修改的)根联合体(即芯片组)芯片。不过,与单根不同的是,假设没有虚拟化中间件,系统分区的复杂性则转移到新的增强型PCI Express开关中(如图二所示)。多根系统的特别在于PCI 阶层架构分为多个虚拟阶层架构,且共享同一的物理架构。单根系统只有单一的内存地址空间且在其系统镜像中进行分区,而多根系统则针对每个虚拟架构提供全64位内存地址空间。配置管理软件与增强型开关和I/O虚拟化设备程序协作对阶层架构进行程序设计,这样图二中每个根联合体都能看到本部分的所有多根阶层架构,就像如图一所示的单根阶层架构一样。每个这种架构视图都称作虚拟架构。请注意,多根系统的每个虚拟架构都能就单根分别启用,也可不启用,这样多根系统中的端点设备会面临两种模式分层的挑战。


就给定的虚拟化设备而言,每个系统镜像都应看到其自己的虚拟化配置空间和地址映像副本。事实上,设备需要n组PCI配置空间来支持n组虚拟功能。单根规范定义了轻量级虚拟功能,可减少门数量的影响,而多根规范则针对每个设备可用的虚拟架构需要全配置空间。本文难以一一介绍不同类型的配置空间的具体差别,这涉及到高级虚拟化的问题。就本文而言,仅特别说明的是,每个与IOV设备互动的系统镜像都有自己的设备地址范围与配置空间。因此,IOV设备可根据存取哪个地址空间来与特定的系统镜像建立工作关系。



《图二 以刀锋服务器为例给出的I/O设备架构,具有三个四核刀锋,连接到开关和端点设备,并采用PCI Express多根I/O虚拟化技术。》
《图二 以刀锋服务器为例给出的I/O设备架构,具有三个四核刀锋,连接到开关和端点设备,并采用PCI Express多根I/O虚拟化技术。》

IOV设备的储存「后端」侧虚拟化

启用IOV设备,使其能像多个设备一样做出回应,并通过一定的机制能区分不同系统镜像之间的工作差别。如果就此结束实施方案的话,那么就会产生如图三所示的模型。(请注意,系统镜像的描述不强调单根或多根的区别,这里只注意它们是不同的镜像即可,而确切的连接方式并不重要。)基本说来,所有系统镜像都能看到连接到 IOV 储存控制器的所有磁盘。在某些环境中,这种模式还是可行的。如果系统镜像比较合作,那么自己就能驱动储存池。同样,如果在每个系统镜像与储存控制器之间存在软件中间体(software intermediary)的话,那么也能驱动储存池,并允许系统镜像只能看到储存池的一部分。



《图三 连接到控制器后储存池的多系统镜像,采用I/O虚拟化技术,但不采用「后端」虚拟。》
《图三 连接到控制器后储存池的多系统镜像,采用I/O虚拟化技术,但不采用「后端」虚拟。》

不妨考虑一下本文开头给出的例子中的情况——用户的银行系统要是和www.hackers-are-we.org网站联系起来,那就有麻烦了。软件中间体的概念似乎还能成立,但是会抵消硬件 I/O虚拟化带来的性能优势,而且软件也会相当复杂,需要详细了解每个控制器的硬件和设备驱动程序才能实现。显然,对大多数环境而言,理想的做法是实现储存侧的硬件虚拟化。


SAS发挥作用

创新型IOV储存控制器设计人员完全可以再进一步发挥设计作用,直接添加表格机制,根据ID过滤出磁盘驱动器,仅允许系统镜像看到某些磁盘驱动器。这时所得的系统就会如图四所示,其中每种颜色的系统镜像只能存取同色的磁盘驱动器。过去,可在SCSI环境中轻松实现上述目的,SCSI甚至还能进一步划分某部磁盘驱动器。目前,即便SATA控制器也能处理这类每磁盘驱动器的「屏蔽」工作。与图三中多驱动器屏蔽模式(free-for-all model)一样,图四中每驱动器屏蔽模式(per-drive-masking model)在某些受控环境中也是可用的。只要连接的磁盘驱动器数量不大(如SCSI支持的1到15个驱动器),那么这种模型就完全可行。不过,一旦系统超过了直连磁盘驱动器的限度,那么这种复杂性机制就会带来麻烦。此外,也可用软件实施某种专有技术机制,以此来支持十几个磁盘,这么做工作量很大,不过还不至于完全不可行。不过,要是让软件来支持数十个、数百个乃至数千个磁盘驱动器,那么每个稍有理智的开发人员都不会这么去做的。幸运的是,SAS提供了一种所谓分区的访问控制的标准机制,对储存虚拟化技术来说几乎是完美的。SAS分区机制非常类似于光纤信道及其他SAN 技术中的相关机制。



《图四 连接到SAS控制器后SAS储存的多系统镜像,采用I/O虚拟化技术,并用专有特性来实现储存虚拟化。》
《图四 连接到SAS控制器后SAS储存的多系统镜像,采用I/O虚拟化技术,并用专有特性来实现储存虚拟化。》

大多数读者应该了解,SAS是一种点对点的串行协议,其建立在并行 SCSI技术的基础之上,其采用所谓扩展器的设备来支持更多设备的连接。典型的 SAS主机适配器可支持8个埠,允许直接连接8个磁盘驱动器。(事实上,SAS磁盘驱动器可用多个埠来支持更高带宽,因此可通过连接4个更高性能的双埠磁盘驱动器就能全面实现8埠的功能。)为了提供更高的连接性,可使用SAS扩展器(如图五所示),暂时可不管图中的颜色。每个扩展器在逻辑上都是一个开关,不过不像光纤信道的开关那么昂贵。SAS扩展器可选择性地支持分区功能,这可以作为限制特定主机对特定目标(如磁盘驱动器)存取的方法。


就SAS分区而言,可在扩展器上就每个连接点控制存取(在SAS术语中称作物理层,PHY)。每个扩展器中的列表记录着哪些PHY可在扩展器上同其他PHY通信。利用分区扩展器上的列表,SAS系统能实现全面的访问控制。可通过能够扩展SAS内置的现有SCSI管理协议的专用SAS消息来配置SAS分区该协议已包括了受保护的监控器理念,只有它才能对分区进行再配置。由于SAS分区是就每个连接点完成的,因此设备的增减会自动触发分区再分析以及潜在的分区再配置。这样,在添加新的磁盘驱动器的时候就不会影响其他的分区,甚至还能告诉其他分区系统配置变动后的情况。单就SAS分区就能写下好几篇文章,就本文而言,只须说明分区能够实现全面的主机到磁盘隔离和访问控制图五,且图中不同的颜色代表不同的分区。



《图五 采用SAS分区技术的系统示例。每种颜色代表一个不同的分区。》 - BigPic:799x616
《图五 采用SAS分区技术的系统示例。每种颜色代表一个不同的分区。》 - BigPic:799x616

根据上述步骤,可以清楚地看出,将SAS分区映像到PCI Express I/O虚拟化的系统镜像能实现功能齐全的储存虚拟化机制。图六显示了SAS IOV控制器的完整示意图。SAS控制器提供一个或多个逻辑SAS扩展器,内置映像系统镜像的微调机制,可把系统镜像当作物理层(PHY)一样处理。每个系统镜像都只能看到整个储存池的一部分,无需软件中间体滤波器。此外,可用现有的标准化机制实现上述目的。



《图六 连接到SAS储存池的多系统镜像,采用SAS控制器后的分区 SAS扩展器,实施I/O虚拟化。》 - BigPic:799x487
《图六 连接到SAS储存池的多系统镜像,采用SAS控制器后的分区 SAS扩展器,实施I/O虚拟化。》 - BigPic:799x487

请注意,虽然本示例采用的是简单的SAS控制器,不过也可使用SAS RAID控制器。就像在一般控制器中一样,利用相同类型的内部逻辑SAS扩展器,这种RAID控制器可让RAID组变得像简单的磁盘驱动器一样。


<作者任职于LSI主机接口架构师>


相关文章
MCU的虚拟化解决方案平台
IoT成就HMI虚拟化之路
为NVMe-over-Fabrics确定最佳选项
创新永不止息 联想进攻伺服器市场的成长关键
五大好「机」会建立高效率资料中心
comments powered by Disqus
相关讨论
  相关新闻
» 宜鼎独创MIPI over Type-C解决方案突破技术局限,改写嵌入式相机模组市场样貌
» 鼎新电脑串连生态系夥伴 数智驱动智慧低碳未来制造
» 鼎新电脑携手和泰丰田解缺工 以数位劳动力开启储运新时代
» Fortinet SASE台湾网路连接点今年落成 全台巡??落实云地零信任资安
» Ansys模拟分析解决方案 获现代汽车认证为首选供应商


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84R71H0MSSTACUK6
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw