多副本
传统的硬盘级RAID模式将数据存放于单节点内的不同硬盘,当整节点发生故障时,无法有效恢复数据。存储系统将数据在节点间进行多副本构建,有效避免数据丢失。多副本是通过将相同的数据在不同的节点上存储多份来实现数据保护的一种技术,支持三副本和两副本,推荐三副本。
三副本的空间利用率为33.3%,两副本的空间利用率50%。
- 服务器级安全:将多副本存储于不同的节点中,故障2个(三副本)或1个(两副本)节点或硬盘,系统仍可正常读写数据,业务不中断,数据不丢失。
- 机柜级安全:将多副本存储于不同的机柜中,故障2个(三副本)或1个(两副本)机柜、节点或硬盘,系统仍可正常读写数据,业务不中断,数据不丢失。
说明:机柜级安全和服务器级安全的原理类似,以下内容以服务器级安全、三副本为例介绍其不同场景的读写原理。
正常场景时读写原理
写原理:如图1-11所示,数据Data被系统拷贝成3份相同的副本,分别存储于不同的节点中。
图1-11 写原理
- 读原理:如图1-12所示,系统从任意节点读取Data并发送给用户。
图1-12 读原理
故障场景读写原理
针对三副本,故障1个节点,可靠性不降低。当存储节点数量>3时,允许故障2个节点,当存储节点数量=3时,允许故障1个节点。
- 写原理:如图1-13所示,当Node3节点故障后,系统在剩余2个节点中存储副本。
图1-13 故障场景写原理(3节点为例)
- 读原理:如图1-14所示,当Node3节点故障后,系统在剩余2个节点中读取1个副本返回给用户。
图1-14 故障场景读原理(3节点为例)
故障场景多副本重构原理
- 当系统的硬盘或节点发生故障后,系统将读取其他正常盘的数据,通过拷贝方式直接将数据重建至新的硬盘中,具体原理如图1-15所示。
图1-15 数据重构原理
根据不同的故障场景,会采取不同的重构策略:
- 当硬盘发生故障时,存储池等待15分钟后启动数据重构。
- 当节点发生故障时,存储池还存在冗余保护时,延迟7天启动数据重构;当存储池不存在冗余保护时,延迟24小时启动数据重构。
EC和多副本差异对比
如表1-3所示,通过以下几种情况对比,EC比多副本模式的空间利用率高,优先推荐使用EC冗余保护机制。
表1-3 EC和多副本差异对比
说明:在比较多副本和纠删码技术时,我们可以从可用容量、读写性能、重构性能、可靠性等方面来分析。