logo
Foundations

Storage

常见 storage 类型与 RAID

Storage 是让系统存储数据(临时或永久)的机制。系统设计里通常不会深挖 storage,但理解常见存储方式有助于我们更好地设计存储组件。下面是一些关键概念:

RAID

RAID(Redundant Array of Independent Disks)把相同数据存到多块硬盘或 SSD 上,以在磁盘故障时保护数据。

RAID 有不同 level,并非所有 level 都以冗余为目标。常见 RAID levels:

  • RAID 0:striping,把数据均匀分布到多个 disks。
  • RAID 1:mirroring,至少两块盘保存完整副本,一块坏了仍能工作。
  • RAID 5:striping + parity,至少 3 块盘,数据分条带分布,同时写入 parity。
  • RAID 6:striping + double parity,类似 RAID 5 但写入双 parity。
  • RAID 10:RAID 0 + RAID 1,既 stripe 又 mirror,既有性能也有冗余。

Comparison

FeaturesRAID 0RAID 1RAID 5RAID 6RAID 10
DescriptionStripingMirroringStriping with ParityStriping with double parityStriping and Mirroring
Minimum Disks22344
Read PerformanceHighHighHighHighHigh
Write PerformanceHighMediumHighHighMedium
CostLowHighLowLowHigh
Fault ToleranceNoneSingle-drive failureSingle-drive failureTwo-drive failureUp to one disk failure in each sub-array
Capacity Utilization100%50%67%-94%50%-80%50%

Volumes

Volume 是 disk 或 tape 上一个固定的存储单位。它经常被当成 storage 的同义词,但一块 disk 可以包含多个 volumes,一个 volume 也可以跨多个 disks。

File storage

File storage 以文件形式存储数据,并以层级目录结构对外提供访问。优点是对用户友好,定位文件时需要完整路径。它成本低、结构清晰,通常在硬盘上实现。

Example: Amazon EFS, Azure Files, Google Cloud Filestore

Block storage

Block storage 把数据拆成 blocks(chunks)并单独存储。每个 block 都有唯一 ID,storage 系统可以把 block 放在最合适的位置。它还把数据与应用环境解耦,让数据分布在不同环境中,从而更快被读取。

当应用请求数据时,底层存储会把 blocks 重新组装成完整数据再返回。

Example: Amazon EBS

Object Storage

Object storage(也叫 object-based storage)把文件拆成 objects,再存进一个统一 repository,这个 repository 可以分布在多台网络节点上。

Example: Amazon S3, Azure Blob Storage, Google Cloud Storage

NAS

NAS(Network Attached Storage)是接入网络的存储设备,让授权用户从中心位置存取数据。NAS 可扩展、速度快、成本较低,并且可以在本地提供类似 public cloud 的体验,同时保持完全控制。

HDFS

Hadoop Distributed File System (HDFS) 是运行在通用硬件上的分布式文件系统。它高 fault-tolerant,适合低成本硬件,并提供高 throughput 访问,适合大规模数据集。

HDFS 会把大文件拆成 blocks,除最后一个 block 外大小相同,并复制多个副本以提升容错。

相关练习题

Storage

暂无相关练习题