存储大挑战:如何在可靠性与大容量之间玩转平衡术?
随着信息技术的飞速发展,数据已成为企业和组织最宝贵的资产之一。在当前数据驱动的时代,数据的可靠性、安全性和完整性对于保障业务连续性、提高决策质量和维护客户信任至关重要。然而,随着数据量的爆炸式增长和数据类型的多样化,如何有效地存储和管理数据,确保其在任何时候都能被可靠地访问和使用,成为了一个巨大的挑战。
采用双副本存储冗余策略,将数据的两份相同副本存储在不同的物理机柜或存储节点上,通过在不同的地方保存数据的多个副本来提高数据的持久性和可用性。双副本可以提高数据可靠性,在面对硬件故障或数据损坏时的具备较高的恢复能力,且在存储系统的一部分发生故障时,系统仍能通过访问另一个副本来继续提供服务;另外双副本可以分散读取负载,提高数据的读取速度。
在提高数据的可靠性的前提下,成本上相比三副本更加经济,尤其是在存储空间成本敏感的场景。
但是,普通2副本在数据一致性上仍面临着挑战:
在某些情况下,如网络分区或其他故障,可能会引发数据一致性问题。
导致2副本存储集群发生脑裂,致使业务数据、属性数据、甚至目录产生不一致问题。
如何提供更高效、更安全可靠的双副本存储策略满足存储空间成本敏感的场景,以及降低企业TCO投入?
为了在数据存储策略中实现容量优化与可靠性增强的策略,并通过技术创新和策略调整,实现数据存储的高效与安全双重目标,大道云行在XDFS存储系统原有的集群节点Quorum策略下引入仲裁节点,通过仲裁机制避免常规2副本策略的脑裂问题,并提供与3副本相同的稳定性保证,且不需要消耗3倍的存储空间。
在使用集群节点数的仲裁机制时,通常为指定集群或存储池内节点的数量作为仲裁参数。即设置类cluster.server.num的参数,通过判断集群节点存活数与仲裁参数的值来进行相关的服务以及数据的读写操作。
XDFS通过创新性的将第三节点的磁盘仲裁机制引入双副本冗余机制,有效提升2副本集群配置下部分副本节点出现异常的情况,集群通过第三节点仲裁磁盘实现数据版本的有效性以及可用性访问控制。通过集群的节点仲裁配合第三方节点的磁盘仲裁,可以有效的避免存储池的节点异常导致的数据文件脑裂问题。
只需要配置常规2副本的硬盘数,并配置极小容量的仲裁盘,即可提供和常规的3副本卷(replica 3 disk)相同的稳定性保证,且不需要消耗3倍的存储空间。
仲裁盘空间容量计算公式为:
仲裁盘容量=4 KB *[ 数据盘大小 / 平均文件大小(示例以KB为单位)]
例如,数据盘大小为10TB,存储文件平均大小为10MB,则仲裁盘的大小最小建议为4000MB。
容量计算示例:
Min disk size=4KB * [ 10TB / 10MB ]
=4KB * [ 10 000 000 000KB / 10 000KB ]
=4KB * 1 000 000
=4 000 000KB
=4000MB
=4GB
配置仲裁双副本存储资源池,在配置和选取仲裁磁盘时,可以选择组成集群的双副本之外的节点提供的磁盘作为仲裁磁盘。同时仲裁磁盘机制的引入,经过研发设计测试,不会带来更高的CPU计算消耗以及内存的使用销售,使得仲裁磁盘所在节点与数据磁盘所在节点可以进行融合部署,因此,为减少仲裁机制带来的硬件节点的增加的开销,在一个多节点的集群中,仲裁磁盘可以选择集群中的不同节点的不同硬盘进行配置,既保证数据的可靠性,又降低硬件资源开销,如图:
更好的一致性,双副本池集群架构上增加磁盘仲裁,降低文件的脑裂;更少的磁盘数,仲裁磁盘仅存储文件名和属性数据,消耗空间容量小;更少的节点数,仲裁磁盘节点可以同时提供数据盘,集群节点可复用。