容错是嵌入式系统的圣杯,特别是对于实时操作系统普遍且停机成本高昂的军事和工业应用。然而,最大限度地减少停机时间说起来容易做起来难——尤其是在存储方面。
几十年来,使用独立磁盘冗余阵列 (RAID) 技术的冗余存储已在企业级盛行,但嵌入式系统的大小、重量和计算限制使得该领域的实施变得更加困难。最近,外形尺寸越来越小的高密度 SSD 的流行使存储冗余成为可能,即使在紧凑的嵌入式系统中也是如此。除了超紧凑的硬件 RAID 控制器,我们可能正在进入一个新时代,高可用性嵌入式存储不再是矛盾的说法。
在创建可靠的存储系统时,冗余是关键。自 1990 年代以来,使用 RAID 镜像磁盘一直是一种常见做法。RAID 是一种用于跨驱动器镜像数据的标准化系统,它允许构建容错存储系统——即使使用相对便宜的硬件也是如此。如果驱动器发生故障,它的镜像备份可以接管,从而在实施良好的系统中实现最少的停机时间,甚至没有停机时间。
虽然 RAID 对服务器应用程序很有意义,但在嵌入式系统级别实施它是一个挑战。在 SSD 流行之前,硬盘是主要的存储介质。它们的尺寸和重量意味着对于大多数(如果不是全部)嵌入式应用程序来说,拥有冗余驱动器是不可能的。
当 SSD 进入市场时,RAID 仍然难以实施。闪存存储最初非常昂贵,而冗余嵌入式存储对于许多应用程序来说成本过高。即使使用 SSDS,大小也是一个问题,因为早期的 SSD 并不总是比它们替换的硬盘小。
管理 RAID 所需的计算能力传统上要么需要笨重的硬件 RAID 控制器(对于空间受限的系统来说不切实际),要么需要软件 RAID 控制器。虽然软件 RAID 控制器在节省空间方面很有意义,但对于嵌入式系统来说,它并不总是正确的选择。嵌入式计算机通常是尺寸和能量受限的系统,无法承受运行 RAID 软件的 CPU 和内存开销。
可靠性与容错
由于在嵌入式系统中实现存储冗余的各种挑战,最大限度地减少嵌入式存储的停机时间传统上关注的是可靠性而不是容错。通过确保使用高质量的组件并设计具有更高平均无故障时间 (MTTF) 的可靠系统,可以提高使用寿命和运行时间。
机械硬盘容易出现多种故障模式。振动、冲击和明显的旧磨损意味着驱动器是否会发生故障不是问题,而是何时发生的问题。制造可靠的硬盘驱动器意味着使用质量更好的组件和坚固的机械设计,以更好地承受冲击和振动。
今天的 SSD 凭借其固态设计,消除了作为故障模式的机械问题,但仍可能在驱动器控制器或存储介质级别出现故障。在单元不再准确地存储位状态之前,闪存单元具有有限数量的写入周期。因此,虽然闪存在面对冲击和振动时非常强大,但需要仔细监控 SSD 的写入耐久性。
因此,对于 SSD,提高可靠性需要使用工业驱动器,其驱动器控制器针对可靠性和写入耐久性进行了优化,而不是纯粹的性能,以及使用更高级别的闪存。工业系统通常不会使用消费级多级单元 (MLC) 闪存,而是使用单级单元 (SLC) 或类似 SLC 的闪存,例如 iSLC。这些更高级别的闪存类型比 MLC 闪存持续数千个写入周期,大大延长了存储使用寿命。
虽然提高可靠性始终是工业系统的主要目标,但真正的弹性也需要容错能力。要了解如何创建容错,我们只需要查看企业数据中心——停机时间可能会造成数千到数百万美元的损失。在这些关键任务环境中,可靠的组件与容错设计相结合,以创建高度可用的系统。
可用性,可以被认为是最小化停机时间,有两种方法。第一种方法涉及提高系统的使用寿命——提高可靠性。另一种方法是减少恢复系统所需的时间——提高容错能力。
容错嵌入式存储
容错存储需要存储冗余——没有办法绕过它。值得庆幸的是,这些天来,SSD 和 RAID 控制器的尺寸都大大缩小了。
SSD 最初与它们所取代的 3.5 英寸硬盘驱动器大小相同,而如今的 mSATA 和 M.2 外形 SSD 甚至使 2.5 英寸笔记本电脑驱动器看起来像超大的庞然大物。这些紧凑型 SSD 的大小不到扑克牌的一半,厚度以毫米为单位。
RAID 控制器也经历了严重的节食。过去需要完整的 PCIe 卡,现在可以在 SoC 类型的芯片上实现。当与正确的固件配对时,新一代 RAID 控制器旨在与 SSD 配合使用,而不是针对它们。
对于当今的嵌入式系统设计人员而言,市场上有多种存储形式可供选择:
对于具有现有 2.5 英寸驱动器插槽的大型系统,这些 AID 控制器模拟 2.5 英寸磁盘。它们由一个硬件 RAID 控制器和两个用于冗余 SSD 的 mSATA 或 M.2 插槽组成。可以在 RAID 1 或 RAID 0 配置中进行配置以提高性能,它们作为普通 2.5 英寸驱动器呈现给主机系统,同时提供冗余和容错,或者在 RAID 0 的情况下提供更高的性能。
对于较小的系统,mSATA 或 M.2 接口可以提供当今最紧凑的 RAID 配置之一。就像更换2.5寸硬盘一样,mSATA或M.2 RAID控制器插入相应的接口,呈现出一个单一的驱动器。事实上,它通过与两个 SATA 驱动器的物理连接来提供存储冗余。
这些 SATA 驱动器可以是使用柔性电缆连接的普通大小的 SATA 驱动器,也可以是 SATADOM 驱动器,它是直接连接到 SATA 连接器的紧凑型 SSD。Innodisk 的 SATADOM 驱动器具有各种物理配置,从垂直到水平,以适应各种嵌入式系统。
虽然对于大多数低功耗嵌入式系统来说不是一个选项,但空间受限的高端嵌入式 PC 可以考虑将双 SSD 与软件 RAID 结合使用。mSATA、M.2 和 SATADOM SSD 的紧凑特性使其成为终极紧凑型 RAID 配置,但软件 RAID 的 CPU 和内存使其仅适用于拥有支持此配置的资源的高端嵌入式系统。
实施高可用性嵌入式存储
容错冗余 RAID 存储与可靠的工业级 SSD 驱动器(如 SLC 或 iSLC 级 SSD)相结合,使嵌入式系统能够实现真正的高可用性。可靠性(故障前的时间)和容错性(修复时间)都得到了解决,从而最大限度地减少了存储子系统的停机时间。
容错也可以单独使用,与 MLC 级 SLC 一起使用。对于低写入周期的应用程序,这可能是一种经济实惠但非常有效的方法,可以最大限度地减少停机时间。
虽然这是一个漫长而艰巨的旅程,但 SSD 和 RAID 控制器的小型化使当今的嵌入式系统最终能够实现真正的容错存储。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !