现在的分布式存储架构的安全和稳定通常采用用的EC纠删码M+N机制,例如4+2、8+3、12+4、22+2等模式,是否意味着M和N都能无限大或是M和N越大会越好
收起这个问题要说清楚,得详细展开一下。
首先,考虑的维度是数据持久度。这个决定因素主要取决于校验条带数量N。但是N也不需要越大越好。一般的业务2就够了。关键业务一般4也够了。因为存储坏掉一个条带肯定是要重构的,所以除非在重构时间内连续坏掉N个盘,否则是不会丢数据的。
然后考虑利用率。利用率约等于M/(M+N)。但是即使是追求利用率,M也不是越大越好。假设N是2,M是20这时理论利用率是90.1%。我们即使把M再增加到30,理论利用率也只增加到93.8%而已。而M+N的增加,也就增加了多个坏盘影响同一个分条的概率,降低了可靠性,所以没必要加到太大。
接下来要考虑的问题是性能。其实对于高吞吐型的业务,分条大小最好和业务的Io大小相当或者成倍数比较好。比如业务每次读写大小是2MB,那分条大小,也就是条带大小乘以_M,最好是2MB或者1MB这样。因为对于EC校验而言,不满分条写,也要更新修改的条带和校验的条带,也就是即使修改1KB,也要把 条带大小乘以_(N+1)大小的数据刷盘,造成io放大。所以如果io普遍偏小,不要配过大的M,得不偿失。
总之,这个配置选择和业务需求之间一定是配合关系,不是越大越好。