使嵌入式存储具有容错能力

描述

  容错是嵌入式系统的圣杯,特别是对于军事和工业应用,在这些应用中,实时操作系统很常见,停机时间成本高昂。然而,最大限度地减少停机时间说起来容易做起来难 - 尤其是在存储方面。

  几十年来,使用独立磁盘冗余阵列 (RAID) 技术的冗余存储一直在企业级流行,但嵌入式系统的大小、重量和计算限制使得在该部门实施起来变得更加困难。最近,高密度 SSD 在越来越小的外形尺寸中盛行,使得即使在紧凑的嵌入式系统中也可以实现存储冗余。随着超紧凑的硬件RAID控制器,我们可能正在进入一个新时代,在这个时代,高可用性的嵌入式存储不再是矛盾的。

  在创建可靠的存储系统时,冗余是关键。自 20 世纪 90 年代以来,使用 RAID 镜像磁盘一直是常见的做法,RAID 是一种用于跨驱动器镜像数据的标准化系统,允许构建容错存储系统 - 即使使用相对便宜的硬件也是如此。如果驱动器发生故障,其镜像备份可以接管,从而在实施良好的系统中实现最少甚至没有停机时间。

  虽然RAID对服务器应用程序很有意义,但在嵌入式系统级别实现它是一个挑战。在SSD普及之前,硬盘驱动器是主要的存储介质。它们的尺寸和重量意味着对于大多数(如果不是全部)嵌入式应用程序来说,拥有冗余驱动器是不可能的。

  当固态硬盘进入市场时,RAID仍然难以实施。闪存存储最初非常昂贵,对于许多应用程序来说,冗余嵌入式存储的成本过高。即使使用SSDS,尺寸也是一个问题,因为早期的SSD并不总是比它们更换的硬盘驱动器小。

  传统上,管理RAID所需的计算能力需要笨重的硬件RAID控制器(对于空间受限的系统不切实际)或软件RAID控制器。虽然软件RAID控制器在节省空间方面是有意义的,但对于嵌入式系统来说,它并不总是正确的选择。嵌入式计算机通常是大小和能量受限的系统,无法承受运行RAID软件的CPU和内存开销。

  可靠性与容错

  由于在嵌入式系统中实现存储冗余存在各种挑战,因此最大限度地减少嵌入式存储的停机时间传统上侧重于可靠性而不是容错。通过确保使用高质量的组件并设计具有更高平均故障时间(MTTF)的可靠系统,可以延长使用寿命和运行时间。

  机械硬盘容易出现多种故障模式。振动、冲击和普通的旧磨损意味着驱动器是否会发生故障,而是何时发生故障。制造可靠的硬盘意味着使用更高质量的组件和坚固的机械设计,以更好地承受冲击和振动。

  如今的固态硬盘采用固态设计,可消除机械问题作为故障模式,但在驱动控制器或存储介质级别仍可能发生故障。闪存单元的写入周期数有限,然后单元不再准确存储位状态。因此,虽然闪光灯在面对冲击和振动时很坚固,但需要仔细监控固态硬盘的写入耐久性。

  因此,对于固态硬盘,提高可靠性需要使用工业驱动器,这些驱动器具有针对可靠性和写入耐久性(而不是纯性能)而优化的驱动器控制器,以及使用更高等级的闪存。工业系统通常不使用消费级多级单元(MLC)闪存,而是使用单级单元(SLC)或类似SLC的闪存,如iSLC。这些更高等级的闪存比MLC闪存长,可持续数千个写入周期,从而大大延长了存储使用寿命。

  虽然提高可靠性始终是工业系统的主要目标,但真正的弹性也需要容错能力。要了解如何创建容错,我们只需要查看企业数据中心 - 其中停机时间可能花费数千至数百万美元。在这些关键任务环境中,可靠的组件与容错设计相结合,以创建高度可用的系统。

  可用性(可被视为最大限度地减少停机时间)通过两种方式进行处理。第一种方法是延长系统的使用寿命,即提高可靠性。另一种方法是减少恢复系统所需的时间,从而提高容错能力。

  容错嵌入式存储

  容错存储需要存储冗余 - 没有办法绕过它。值得庆幸的是,如今,SSD和RAID控制器的大小都大大缩小了。

  

嵌入式

  [图1|像这样的M.2固态硬盘M.2 3SE3驱动器将高达32GB的存储空间打包成一个微小的22x42x3.5mm外形]

  虽然SSD最初与他们更换的3.5英寸硬盘驱动器大小相同,但今天的mSATA和M.2外形尺寸的SSD甚至使2.5英寸笔记本电脑驱动器看起来像超大的庞然大物。这些紧凑型 SSD 的尺寸不到扑克牌的一半,其厚度以毫米为单位。

  RAID控制器也经历了严重的节食。过去需要完整 PCIe 卡的功能现在可以在 SoC 型芯片上实现。当与正确的固件配对时,新一代RAID控制器旨在与SSD配合使用,而不是与SSD配合使用。

  对于当今的嵌入式系统设计人员来说,市场上有许多适用于各种存储外形规格的选项:

  

嵌入式

  [图2 |这款 E2SS-32R2 xRAID 控制器采用 2.5 英寸驱动器外壳,将双 M.2 SSD 阵列虚拟化为单个 2.5 英寸驱动器。

  对于具有现有 2.5 英寸驱动器插槽的大型系统,这些 AID 控制器模拟 2.5 英寸磁盘。它们由一个硬件 RAID 控制器组成,该控制器具有两个用于冗余 SSD 的 mSATA 或 M.2 插槽,可以配置为 RAID 1 或 RAID 0 配置以提高性能,它们显示为主机系统的普通 2.5 英寸驱动器,同时提供冗余和容错能力,或者在 RAID 0 的情况下提供更高的性能。

  

嵌入式

  [图3|这款 EGSS-32R1 RAID 控制器集成在 22x42x11mm M.2 外形中,是目前市面上最小的 RAID 控制器卡。

  对于较小的系统,mSATA 或 M.2 接口可以提供当今最紧凑的 RAID 配置之一。就像 2.5 英寸磁盘更换一样,mSATA 或 M.2 RAID 控制器插入相应的接口并呈现单个驱动器。实际上,它通过与两个 SATA 驱动器的物理连接提供存储冗余。

  这些 SATA 驱动器可以是使用柔性电缆连接的正常大小的 SATA 驱动器,也可以是为了获得最大的空间效率,SATADOM 驱动器是直接连接到 SATA 连接器的紧凑型 SSD。因诺迪斯克的 SATADOM 驱动器具有从垂直到水平的各种物理配置,以适应各种嵌入式系统。

  

嵌入式

[图4|像这样的SATADOM驱动器因诺迪斯克SH 3SE3有垂直和水平配置,以适应空间受限的嵌入式系统]

  虽然对于大多数低功耗嵌入式系统来说,这不是一种选择,但具有严重空间限制的高端嵌入式PC可以考虑将双 SSD与软件RAID结合使用。mSATA、M.2 和 SATADOM 固态硬盘的紧凑特性使其成为终极的紧凑型 RAID 配置,但软件 RAID 的 CPU 和内存使其仅适用于具有支持此配置资源的高端嵌入式系统。

  实施高可用性嵌入式存储

  容错冗余 RAID 存储与可靠的工业级 SSD 驱动器(如 SLC 或 iSLC 级 SSD)相结合,使嵌入式系统能够实现真正的高可用性。可靠性(故障前的时间)和容错(修复时间)都得到了解决,从而最大限度地减少了存储子系统的停机时间。

  容错功能也可以单独使用,适用于 MLC 级 SLC。对于低写入周期应用程序,这是一种经济实惠且非常有效的方法,可最大限度地减少停机时间。

  虽然这是一个漫长而艰巨的旅程,但 SSD 和 RAID 控制器的小型化使当今的嵌入式系统最终能够实现真正的容错存储。

  审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分