订阅移动开发RSS CSDN首页> 移动开发

采用 Linux* Containers 的单根输入/输出虚拟化 (SR-IOV)

发表于2016-01-12 14:50| 次阅读| 来源未知| 0 条评论| 作者陈莹然

摘要:本文是 CERN openlab 和英特尔共同研究的成果,旨在调查 Linux Containers 是否能够结合 SR-IOV 使用,并对 CERN 数据中心内的现有的虚拟化基础设施提供补充。

平台能力中心


目录

要点综述
摘要

目录

  1. 简介 
  2. 硬件和软件设置
  3. SR-IOV 在操作系统中的配置
  4. 测试
  5. 结论
  6. 参考书目

附录 A: 控制容器中的资源使用

附录 B: 其它资源

要点综述

虚拟化是一项在软件和硬件之间提供抽象层的技术。 它可以模拟硬件平台,提供各种资源的操作系统抽象。 它还可以帮助轻松管理硬件资源,以及在云端运行服务。 但是,传统基于管理程序的虚拟化的主要优势之一是,无论内存和 CPU1 的使用如何,它都会产生大量的开支。 Linux* Containers (缩写为 LXC)是传统方法的轻量级替代方案,可帮助划分命名空间和文件系统,同时在一个内核上运行所有线程。 结合使用单根输入/输出虚拟化(缩写为 SR-IOV),它提供的解决方案支持容器在网络中显示为单独的计算节点,并且带有独有的 MAC2 地址,同时能够共享一个链接和物理网络适配器。

本文是 CERN openlab 和英特尔共同研究的成果,旨在调查 Linux Containers 是否能够结合 SR-IOV 使用,并对 CERN 数据中心内的现有的虚拟化基础设施提供补充。 该解决方案可以运用到存储节点中,从而主要用于输入/输出操作,并让 CPU 在大部分时间内处于闲置状态。 通过在一个存储节点的容器中同时运行 CPU 密集型和存储作业,并确保两种应用完全分离以及对消耗的资源进行完全控制,CERN 能够从 LXC/SR-IOV 获得诸多优势。

我们介绍了一次 Linux Containers 的成功设置,设置基于英特尔® 万兆以太网适配器,并包含 SR-IOV 支持和网络与存储综合基准测试的结果。

作者: Pawel Szostek (CERN openlab ) 和 Marco Righini (英特尔)

1 中央处理单元

2 媒体访问控制

摘要

本文调查了在 CERN 环境中结合配置 SR-IOV 和 LXC 的可能性,其中采用了 CERN 中最新操作系统成果 (CERN CentOS* 7)。 我们展示了运营配置所需的所有步骤。 我们还展示了此配置下运行的基本网络和存储基准测试所得出的结果。 我们的结果证明,技术堆栈能够使用。 但是,当运行密集 I/O 运营时,系统性能会出现小幅下降。 未来的工作包括在目标技术堆栈上运行性能和可靠性测试。

1. 简介

Linux Containers 是什么?

Linux* Containers 缩写为 LXC,是 Linux 内核中的一款特性,支持在进程的命名空间和文件系统内对其进行划分,同时确保其在相同的内核上运行。 如多种研究(Xavier 等,2013 年;Kjallman 等,2015 年)所示,其性能开销低于基于管理程序的系统,但是灵活性和可管理性会降低。 LXC 可与 cgroups 绑定在一起使用,支持控制硬件资源在容器内的使用,从而更好地划分不同容器内运行的应用。

LXC 不同于 Docker:前者可提供轻量级的命名空间划分功能,同时不需要传统的虚拟机开销,而后者是一个独立的应用虚拟化引擎,可在容器上运行。 它与 LXC 有明显的区别,需要在一个单独的应用上运行,并将其依赖性闭合在一个映像中。 默认情况下,Docker 会禁用存储持久性,使映像在执行时处于无状态。

SR-IOV 是什么?

单根 I/O3 虚拟化 (SR-IOV) 是 PCI 特别兴趣小组 (PCI-SIG) 针对 I/O 虚拟化的规范。 它提供了一种标准机制,支持设备曝露其能力,以便在多个虚拟机间同时共享。 它还支持将 PCI 功能划分为多个虚拟接口,以便在虚拟环境中共享 PCI Express*(PCIe)设备的资源。

根据物理设备和内核端支持的不同,一个系统内可启用不同数量的虚拟功能。 对于本文,我们使用了英特尔 X520 插卡,可为每个端口提供多达 64 种虚拟功能。 每种功能可指派到一个容器,该容器将在其整个生命周期过程中对其享有所属权。 因此,设备将在网络中显示为独立的节点,其流量为完全隔离。

整体概况

CERN 数据中心位于全球 LHC 计算网格的中心。 该机构负责收集、存储和处理 LHC 实验的数据。 它托管了近 110,000 个处理器内核和 11,000 台服务器,全天候运行,确保服务不间断。 CERN 数据中心的所有节点都可以根据其使用案例划分为几种类型。 在本文中,我们主要介绍存储前端节点,这些节点主要用于收集实验数据,并根据需求将该数据提供给计算节点。 它们的 CPU 利用率较低,使用永久性存储资源较密集。 本篇 Openlab 中介绍的调查旨在探寻使用 Linux Containers 在不降低存储可靠性的前提下提供除存储服务器之外更多计算资源的可能性。 图 1 展示了目标设置的图表。

图 1:存储节点配置示例。

EOS 是 CERN 中针对大型物理数据使用的磁盘存储系统,需要密集的 I/O,对计算资源有中等程度的需求。 Boinc 是一款用于数据处理的分布式应用 — 属于 CPU 密集型操作,I/O 较低。 在目标配置中,EOS 和 Boinc 将在一个存储节点上运行。 这样的设置支持更好地利用 CPU (目前利用率较低),同时能够将不同的应用隔离开,并为其提供必要的硬件资源。 为此,SR-IOV 支持我们创建多个虚拟网络接口,以便在容器内独立使用,同时 cgroups 可提供资源划分的功能。

在本文中,我们介绍了使用一些易于运行的综合基准测试对采用 SR-IOV 的 LXC 设置进行的测试。 我们无法调查图 1 中介绍的目标配置,因为这种设置非常复杂、耗时且易于出错。 我们主要运行了一些综合性基准测试,旨在强调与 I/O 有关的硬件资源。

3 输出/输出(操作)

2. 硬件和软件设置

节点测试的配置是一个包含 24 块日立 HUA72302 A800 硬盘的 JBOD 阵列和一个采用 SR-IOV 支持的英特尔® 82599ES 万兆以太网适配器。 此外,系统主板上还集成了一个数据和一个管理千兆以太网端口。

该机器的启动系统是采用 3.10.0-123.13.2.el7.x86_64 内核和 CERN 特定插件的预生产 CentOS* 7。 安装标准包,除非明确提及。

BIOS 配置

SR-IOV 要求以下 BIOS 设置正确执行: 启用 VT,启用 SR-IOV,禁用 VT-D。

3. SR-IOV 在操作系统中的配置

在本部分内容中,我们将具体介绍在测试系统上获取可使用的 SR-IOV 设置所需的全部步骤。 在本文的其他内容中,主机将称为 p01001534852033,容器将称为 centos1 和 centos2。

查看全文

0
0