《系统设计》课程学习笔记—存储

172 阅读4分钟

存储是一种使系统能够临时或永久保留数据的机制。本主题在系统设计中涉及较少,但是,对一些常见类型的存储技术有一个基本的了解非常重要,这些技术可以帮助我们微调存储组件。让我们讨论一些重要的存储概念:

RAID

RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种在多个硬盘或固态驱动器(SSD)上存储相同数据的方法,以在驱动器发生故障时保护数据。

RAID有不同的级别,并非所有级别都以提供冗余为目标。让我们讨论一些常用的RAID级别:

  • RAID 0:也称为条带(Striping),数据在阵列中的所有驱动器上均匀分布。

  • RAID 1:也称为镜像(Mirroring),一组数据的精确副本至少包含在两个驱动器中。如果一个驱动器出现故障,其他驱动器仍然可以工作。

  • RAID 5:带奇偶校验的条带。需要使用至少3个驱动器,跨多个驱动器(如RAID 0)对数据进行分散读写,但也具有跨驱动器分布的奇偶校验。

  • RAID 6:带双奇偶校验的条带。RAID 6与RAID 5类似,但奇偶校验数据写入两个驱动器。

  • RAID 10:RAID 0和RAID 1的条带和镜像相结合。它通过镜像辅助驱动器上的所有数据,同时在每组驱动器上使用条带来加快数据传输,从而提供安全性。

比较

让我们比较一下不同 RAID 级别的特征:

特征RAID 0RAID 1RAID 5RAID 6RAID 10
描述StripingMirroringStriping with ParityStriping with double parityStriping and Mirroring
最小磁盘数22344
读性能
写性能
成本
容错单驱动故障单驱动故障双驱动故障每个子阵列中最多有一个磁盘故障
容量利用率100%50%67%-94%50%-80%50%

卷(Volume)是磁盘或磁带上的固定存储量。卷作为术语通常用作存储本身的同义词,但单个磁盘可能包含多个卷,或者一个卷跨越多个磁盘。

文件存储

文件存储是一种解决方案,将数据存储为文件,并将其作为分层目录结构呈现给最终用户。主要优点是提供了一个用户友好的解决方案来存储和检索文件。要在文件存储中查找文件,需要文件的完整路径。它经济且易于构造,通常在硬盘上使用,这意味着它们在用户看来和硬盘上完全相同。

例子:Amazon EFSAzure filesGoogle Cloud Filestore 等。

块存储

块存储将数据划分为块(chunk),并将其作为单独的块存储。每个数据块都有一个唯一的标识符,这允许存储系统将较小的数据块放在最方便的地方。

块存储还将数据与用户环境解耦,允许数据跨多个环境。这将创建数据的多个路径,并允许用户快速检索数据。当用户或应用程序从块存储系统请求数据时,底层存储系统重新组合数据块并将数据呈现给用户或应用。

例子:Amazon EBS

对象存储

对象存储也称为基于对象的存储,它将数据文件分解为称为对象的片段。然后,它将这些对象存储在单个存储库中,该存储库可以分布在多个网络系统中。

例子:Amazon S3Azure Blob StorageGoogle Cloud Storage

NAS

NAS(网络附属存储)是连接到网络的存储设备,允许授权网络用户从中央位置存储和检索数据。NAS设备是灵活的,这意味着当我们需要额外的存储时,我们可以增加现有的存储。它速度更快,成本更低,提供了现场公共云的所有好处,让我们完全控制。

HDFS

Hadoop 分布式文件系统(HDFS)是一种设计用于在商用硬件上运行的分布式文件系统。HDFS具有高度容错性,设计用于部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,适用于具有大数据集的应用程序。它与现有的分布式文件系统有许多相似之处。

HDFS设计用于在大型集群中跨机器可靠存储大文件。它将每个文件存储为一系列块,文件中除最后一个块外的所有块大小相同。并复制文件的块以实现容错。