minio-operator
2024年12月26日 星期四, 发表于 杭州
如果你对本文有任何的建议或者疑问, 可以在 这里给我提 Issues, 谢谢! :)
1、自定义minio-operator的Tenant生成的pool名称
部署之后只会生成sts的证书,这个证书是做什么用的完全不知道
在这里面提到了erasure set的使用,以及数据的恢复
1、当部分磁盘损坏的时候,支持从剩余磁盘中可靠的恢复数据。
- 使用的是RS(Reed-Solomon),中文名叫:里德-所罗门类纠错码
2、这里面提到了一个叫做bit rot protection 的东西。使用的是 HighwayHash算法来优化的。
暂时没有理解为什么 在一个节点,16个1TB驱动器组成的mino集群里面,不同纠错码。回影响到总存储空间,存储比例。
官方计算器:https://min.io/product/erasure-code-calculator
奇偶校验 | 总存储空间 | 存储比例 | 用于读取操作的最小驱动器 | 用于写操作的最小驱动数量 |
---|---|---|---|---|
EC:4 | 12TB | 0.75 | 12 | 12 |
EC:6 | 10TB | 0.625 | 10 | 10 |
EC:8 | 8TB | 0.50 | 8 | 9 |
当集群中只有一个 erasure set,一共有16个Drivers的时候。配置 EC:4 的时候
存储数据的基本流程:
-
将 object 分成 12 个数据块
-
然后针对这12个数据块,生成4个校验块。
-
最后将这16个块,尽量均分的分布在16个drivers上面。为什么说是尽量呢。因为当存储的对象变的多了, 数据可能就不是均匀存储的了。
一次性运行多少个磁盘故障,还能恢复数据
-
根据上面的信息知道。当设置EC:2的时候,最多可以同时有2个磁盘故障的情况下面。minio可以根据剩下的数据将 丢失的数据进行恢复
-
当设置EC:4的时候,最多可以同时有4个磁盘故障的情况下面。minio可以根据剩下的数据将丢失的数据进行恢复
-
当设置EC:6的时候,最多可以同时有6个磁盘故障的情况下面。minio可以根据剩下的数据将丢失的数据进行恢复
-
当设置EC:8的时候,最多可以同时有8个磁盘故障的情况下面。minio可以根据剩下的数据将丢失的数据进行恢复。 但是在这情况下面,虽然数据可以恢复。但是不能在写入数据了。因为为了防止脑裂情况。
现在配置文件中配置的东西
- MINIO_STORAGE_CLASS_STANDARD 在 start.yaml 中指定为 EC:2。就是指定纠错码数量为2.
官方文档
-
在这个文档中,很明显的提到了,需要恢复数据,需要最少一个校验分片。来恢复剩下的所有分片,包括损坏或者丢失的校验分片。 但是如果所有校验分片都丢失了的话,数据将无法恢复。这个是需要注意的。因此在设置EC值的时候还是合理。
-
在还有足够校验分片的情况下,数据分片最多丢失设置的EC值的数量。任然能够恢复。超过这个值,数据将无法恢复。
-
当我直接删除一个桶中的对象的时候,我重新向minio发送一个get请求,桶中被删除的对象就直接会被恢复。
-
当我在pv中,直接删除一个桶。然后直接发送一个get请求,被删除的桶不会被恢复。我直接使用
命令创建一个桶。 然后重新发送一个GET请求, 被删除的数据仍然没有被恢复。 但是我使用1
mkdir test
重建这个桶。然后重新 发送GET请求。被删除的对象将会被恢复。这是一个有趣的现象。1
mc admin heal test/test
但是我能正常的将文件下载下来,显而易见的事情就是。数据已经被恢复了。但是因为在这个drivers上面的桶不存在了。minio认为 这个pvc已经存坏了。然后就将恢复的数据重新存储到另外一个pvc上面。
但是有趣的事情就是,就算数据已经恢复了。我在当前这个pvc上面。使用
命令重建这个桶。重新
下载数据的时候,这个数据又重新回到了这个pvc上面。但是不确定回到这个pvc上面的数据分片是不是原来的数据分片。1
mc admin heal test/test