核心概念¶
Erasure Coding¶
有关 MinIO 纠删码的更完整文档,请参阅Erasure Coding. 本节 总结了 MinIO 租户环境中的擦除编码VCF.
MinIO通过采用汇编语言编写的每对象内联纠删码来保护数据,以提供尽可能高的性能。MinIO使用Reed-Solomon码将对象条带化为数据和奇偶校验块,并支持用户可配置的冗余级别。MinIO的纠删码在对象级别执行修复操作,能够独立修复多个对象。
在最大奇偶性下N/2哪里NMinIO 租户区域中的卷总数,MinIO 的实现可以确保仅凭((N/2)+1)部署中的操作卷。例如,在16驱动器设置中,MinIO将对象分片到8个数据驱动器和8个奇偶校验驱动器中,并且仅需部署中剩余9个驱动器即可可靠地写入新对象或重建现有对象。
MinIO Erasure Coding 由纠删集支持。MinIO 自动 计算并在每个区域中创建纠删集。随后 MinIO 在写入时将对象 分割为数据块和校验块,并将这些块分布到纠删集中的各个驱动器。 您可以在以下情况下查看纠删集分布:部署租户 or 扩展租户.
一个区域可能有多个擦除集,所有擦除集的计算大小都相同。MinIO
使用EC:N用于定义存储在给定擦除集中的对象的奇偶校验块与数据块的比率。奇偶校验块的数量决定了租户在驱动器或Pod发生故障时继续服务读写请求的能力。具体来说,对于M = Erasure Set Drives:
对于写入操作(写入仲裁),MinIO租户需要至少
(M-EC:N)+1驱动器。对于读取操作(读取仲裁),MinIO租户需要至少
(M-EC:N)驱动器。
一个拥有足够纠删码集驱动器以满足写入仲裁的 MinIO 租户, 隐式地拥有足够驱动器来满足读取仲裁。
MinIO 租户默认将初始区的纠删码奇偶校验设置为纠删集中的驱动器数量的 1/2。例如,一个包含 16 个驱动器的纠删集默认设置为EC:8, 而具有10驱动器擦除集的区域默认为EC:5.
由于奇偶校验块需要存储空间,更高级别的奇偶校验能够 提升对驱动器或存储单元故障的容忍度,但会牺牲总可用存储 容量。您可以在配置时指定偏好的纠删码奇偶校验设置。部署租户.
下表列出了不同情况下的结果EC具有4个Pod且每个节点配备4个1Ti驱动器的MinIO租户。MinIO为此租户创建了一个包含16个驱动器的单个擦除编码集合。
Parity |
总存储容量 |
存储比率 |
读取操作所需的最小驱动器数 |
写入操作所需的最小驱动器数 |
|---|---|---|---|---|
|
12 Tebibytes |
0.750 |
12 |
13 |
|
10 太比字节 |
0.625 |
10 |
16 |
|
8 Tebibytes |
0.500 |
8 |
9 |
