• 搜索:

启发IT网 > 操作系统 > RAS 在 x86 上的应用及 Linux 实现

RSS订阅

RAS 在 x86 上的应用及 Linux 实现

字体:[][][][打印]

RAS 在 x86 上的应用及 Linux 实现

文章摘要: 简介 RAS 的全称为 Reliability, Availability and Serviceability。Reliability(可靠性)指的是系统必须尽可能的可靠,不会意外的崩溃,重启甚至导致系统物理损坏,这意味着一个具有可靠性的系统必须能够对于某些小

  简介

  RAS 的全称为 Reliability, Availability and Serviceability。Reliability(可靠性)指的是系统必须尽可能的可靠,不会意外的崩溃,重启甚至导致系统物理损坏,这意味着一个具有可靠性的系统必须能够对于某些小的错误能够做到自修复,对于无法自修复的错误也尽可能进行隔离,保障系统其余部分正常运转。 Availability(可用性)指的是系统必须能够确保尽可能长时间工作而不下线,即使系统出现一些小的问题也不会影响整个系统的正常运行,在某些情况下甚至可以进行 Hot Plug 的操作,替换有问题的组件,从而严格的确保系统的 downtime 时间在一定范围内。Serviceability 指的是系统能够提供便利的诊断功能,如系统日志,动态检测等手段方便管理人员进行系统诊断和维护操作,从而及早的发现错误并且修复错误。综上所述,RAS 作为一个整体,其作用在于确保整个系统尽可能长期可靠的运行而不下线,并且具备足够强大的容错机制。这对于像大型的数据中心,网络中心如股票证券交易所,电信机房,银行的数据库中心等应用环境是不可或缺的一部分。

  由于 RAS 的独特性,构建一个稳固的 RAS 系统并不是一个简单的工程,这需要软硬件的协同配合。以 X86 平台为例,在 CPU,chipset,IO 控制器等硬件层面上需要提供诸如 ECC/Parity 检验这类的错误检测,错误纠正和错误报告扩展,同时为了提高可靠性,可能还需要进一步提供 RAID 存储以及可以 Hot Plug 的硬盘,内存,甚至是 CPU,以确保在必要的时候可以快速的替换出问题的组件。在 Firmware(这里可近似认为是 BIOS)这样的中间层则需要提供一个无缝的接口,对硬件报告的错误能够处理,同时也能够将错误或者处理的结果通知给 OS 以便软件能做进一步处理。对于 OS 和 application 而言,则需要提供更加细分的处理逻辑,譬如能够将错误分类分级以便进行有针对性的处理,记录等操作,或者提供测试接口以便自诊断或者调试。以下就以 x86 平台为例,对以上提及的几个方面分别介绍其功能和在 Linux 系统中的实现。

  CPU/Memory 的 Hot Plug

  Hot Plug 包括常说的 Hot Plug-in/out。Hot Plug 的最大作用就是可以在线更新,从而确保系统能够持续可靠的运行。从硬件的角度看,Hot Plug 有四种状态:

  CPU/Memory 不在 socket 上,firmware/BIOS 不知道它的存在

  CPU/Memory 在 socket 上,firmware/BIOS 已知但是未通知 OS,因此 OS 未知

  CPU/Memory 在 socket 上,firmware/BIOS 也通知了 OS,OS 已知但是未使能它,application 无法使用

  CPU/Memory 在 socket 上,firmware/BIOS,OS 都已知并且 OS 使能了它,application 可以使用

  从 2 到 3 的变化,就是通常所说的 Hot Add,反之则是 Hot Remove;从 3 到 4 的变化,就是通常说的 online,反之则是 offline。从系统设计的角度来看,任何一个 CPU/Memory 都是对等的,都可以执行 Hot Plug 操作,但是由于软硬件的某些限制,对于 BSP(Boot Strap Processor)CPU 一般是不可以被 Hot Remove 的。

  下面以 CPU 的 Hot Add 为例描述这一过程:

  用户将 CPU 插入一个空闲的 socket 中

  用户通过 Hot Plug 的接口初始化 Hot Add 这一动作。接口可以是 OS 提供的 UI 接口,按一个按钮,或者是某些管理接口,如 IPMI,AMT

  firmware/BIOS 对插入的 CPU 进行必要的初始化操作,如配置 QPI 总线的路由表,更新地址解码等

  通过 ACPI 中断接口(SCI 中断)向 OS 产生一个 Hot Add 的事件

  OS 在接收到这个 ACPI 事件后首先需要通过 ACPI 的 _OSI 方法检查当前系统是否支持"Module Device"的能力,如果是则表明可以进行 Hot Add 操作

  OS 通过 ACPI 的 _MAT 方法得到 MADT 描述表,用来初始化 Local APIC/SAPIC 以及 local NMI 中断

  OS 对新增的 CPU 进行相关的电源管理配置,如 P/C/T state

  OS 调用 ACPI 的 _OST 方法通知 firmware/BIOS 本次 Hot Add 成功与否

  在这个过程中,ACPICA(ACPICA 是 OS 用来和 firmware/BIOS 的接口)会完成绝大部分和 ACPI table 交互的工作,最终,ACPICA 会通过工作线程 acpi_os_execute_deferred将后继的事件分发处理交由 kernel 完成。

    最近更新

    热门点击