知识卡片
Storage Policy让纠删码与多副本共存
内容
纠删码比多副本更省存储空间,但Swift不能简单地把所有对象的存储方式从副本切换成纠删码,因为不同业务对可靠性、成本、性能的要求本来就不一样。Swift的解法是引入Storage Policy这一抽象:每种Storage Policy定义一种存储方式(比如”每个Partition存3副本”或者”用纠删码编码”),并各自配一份独立的Object环;Container在创建时绑定唯一的Storage Policy,之后在这个Container里创建的所有对象都遵循这个策略,不同Container可以选用不同策略互不干扰。发散:这是”把互斥的实现方式都做成可插拔的策略,而不是在代码里为每种方式各写一套特殊路径”的设计思路——Storage Policy层面上看多副本和纠删码是等价的,都只是”环+存储规则”的一种具体配置,上层的Container/Object管理逻辑完全不需要关心底层到底用的哪种。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第8章《OpenStack存储》