MinIO 纠删码工作原理

  1. 什么是纠删码(erasure code)?
  2. 为什么纠删码有用?
  3. 什么是位衰减(bit rot)保护?
  4. 以纠删码模式运行 Minio

Minio 使用纠删码(erasure code)与校验和 (checksum) 来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。

———— 简单点理解,基于本地存储的容灾集群

什么是纠删码(erasure code)?

纠删码是一种恢复丢失和损坏数据的数学算法, Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。 这就意味着如果是 12 块盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,你可以丢失任意 6 块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很 NB。

为什么纠删码有用?

纠删码的工作原理和 RAID 或者复制不同,像 RAID6 可以在损失两块盘的情况下不丢数据,而 Minio 纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且 Minio 纠删码是作用在对象级别,可以一次恢复一个对象,而 RAID 是作用在卷级别,数据恢复时间很长。 Minio 对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复。Minio 纠删码的设计目标是为了性能和尽可能的使用硬件加速。

)

什么是位衰减(bit rot)保护?

位衰减又被称为数据腐化Data Rot、无声数据损坏Silent Data Corruption,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。正所谓明枪易躲,暗箭难防,这种背地里犯的错比硬盘直接咔咔宕了还危险。 不过不用怕,Minio纠删码采用了高速 HighwayHash 基于哈希的校验和来防范位衰减。

以纠删码模式运行 Minio

mkdir -p /data/minio/data;
mkdir -p /data/minio/config;
docker run -d -p 31000:9000 --name minio \
  -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_SECRET_KEY=wJa1lrXUt3nF2EEXAM1PLE1K1EY" \
  -v /data/minio/data1:/data1 \
  -v /data/minio/data2:/data2 \
  -v /data/minio/data3:/data3 \
  -v /data/minio/data4:/data4 \
  -v /data/minio/data5:/data5 \
  -v /data/minio/data6:/data6 \
  -v /data/minio/data7:/data7 \
  -v /data/minio/data8:/data8 \
  -v /data/minio/config:/root/.minio \
  minio/minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8

可以随意删除掉某目录下的文件,minio 依旧正常读写。


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:MinIO 纠删码工作原理

字数:622

本文作者:夏来风

发布时间:2020-12-07, 23:41:31

原始链接:http://www.demo1024.com/blog/minio-erasurecode/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。