运维开发网

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式

运维开发网 https://www.qedev.com 2020-07-09 09:16 出处:51CTO 作者:九析
目录1 前言2 邀约3 简介4 纠删码5 纠删码为什么有效6 单机纠删码模式部署7 纠删码机制验证1 前言        如果你对博客有任何疑问,请告诉我。2 邀约        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:3 简介        MinIO 使用纠删码和校验和等特性保护数据免受硬件故障和静默数据损坏。使用最高级别的冗余,使用者可最多丢失多达一半(N/2)的驱动器

目录

1 前言

2 邀约

3 简介

4 纠删码

5 纠删码为什么有效

6 单机纠删码模式部署

7 纠删码机制验证


1 前言

        如果你对博客有任何疑问,请告诉我。

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式


3 简介

        MinIO 使用纠删码和校验和等特性保护数据免受硬件故障和静默数据损坏。使用最高级别的冗余,使用者可最多丢失多达一半(N/2)的驱动器,仍可以自动恢复数据。


4 纠删码

        纠删码是一种用来重建丢失或损坏数据的数学算法。MinIO 使用 Reed-Solomon 码将需要存储的对象切分为可变数据块和奇偶校验块。例如,在由 12 个驱动器构成的存储架构中,对象分片范围可以是 6 个数据块、6 个奇偶校验块到 10 个数据块、2 个奇偶校验块。

        Reed Solomon(里德-所罗门码):是一种纠删码算法,利用范特蒙矩阵或者柯西矩阵的特性来实现纠错码的功能。

        默认情况下,MinIO 会在 N/2 个数据和 N/2 个奇偶校验驱动器上将对象进行碎片化。不过,可以使用存储类进行自定义配置。MinIO 官方推荐 N/2 的数据块和奇偶校验块,因为可以确保在故障时对磁盘进行最好保护。

        如果 MinIO 使用上面介绍的 12 个驱动器所构成的存储架构,并且运行默认配置,那么你在最多丢失 6 (12/2)个以内的驱动器的情况下,依旧可以从剩余的驱动器中自动重建数据。


5 纠删码为什么有效

        与 RAID 或复制不同,纠删码可以保护数据不受多驱动器故障的影响。RAID6 仅可以保证在两个以内驱动器发生故障时数据可以得到保护,而 MinIO 纠删码却可以在丢失多达一半驱动器情况下,仍然保证数据安全。此外,MinIO 的纠删码在对象级别,可以一次修复一个对象。对于 RAID,修复只能在卷级别完成,这意味着高停机时间。因为 MinIO 单独对每一个对象进行编码,故它可以逐步修复对象。部署后的 MinIO 服务器在整个生命周期内都不需要更换驱动器或进行修复。MinIO 纠删码旨在提高操作效率,并在任何时候都可以充分利用硬件加速的优势。


6 单机纠删码模式部署

        上章中介绍了 MinIO standalone(单机版)模式,即要管理的磁盘都在 host 本地。该启动模式一般仅用于实验、测试和学习场景下。在 standalone 模式下,还可以分为 non-erasure code mode 和 erasure code mode 两种部署方式。上节的 MinIO 部署就属于 non-erasure code mode,如下图所示:

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式

        所谓 standalone non-erasure code mode 是指 minio server 启动时仅传入一个本地磁盘目录的参数,执行命令如下:

minio server /jiuxi

        在这样的启动模式下,对于每一个要存储的对象,minio 直接在 jiuxi 目录下存储这份数据,并不会建立副本,更不会启用纠删码机制。因此,这种情况无论是针对 MinIO 服务器还是磁盘都属于“单点”,没有任何高可用保障措施,一旦磁盘损坏就意味着整个数据丢失。

        所谓 standalone erasure code mode 是指 minio server 启动时传入多个本地磁盘目录作为参数。一旦遇到多个磁盘参数,minio server 将会自动启动 erasure code mode。当然磁盘个数并非任意,而是有要求的,如不满足要求,MinIO 实例启动将会失败,如下图所示:

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式

        erasure code 启用后,要求传给 MinIO server 的驱动器参数至少为 4 个。minio server 启用纠删码机制后,会自动将传入的 disk driver 划分为多个纠删码集(erasure coding set),每个 erasure coding set 中的 disk driver 数量可以是 4,6,8,10,12,14,16。MinIO server 会根据传入 disk driver 的数量自动计算 erasure coding set 个数,以及每个 erasure coding set 中的驱动(driver)个数。如下图我们传入八个驱动参数给 Minio server:

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式

        从上图日志可知,Minio server 将 /jiuxi/oss1 ~ /jiuxi/oss8 这些驱动(driver)放入了一个 erasure coding set 中,并且 minio server 还给出了一个警告:“WARNING: Host local has more than 4 drivers of set. A host failure will result in data becoming unavailable.”,这个警告意思是说,当前纠删码集中有多于四个驱动器都在一台主机上,如果主机出现故障,那么这些数据就不再可用(纠删码集有8个驱动,根据纠删码机制,这个set最大允许失效的磁盘数量是4个)。

        单机纠删码模式架构图如下所示:

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式


7 纠删码机制验证

        上面花了大量篇幅解释纠删码机制,下面看看实际的例子,上面已经开启了单机纠删码模式,即使用命令:minio server /jiuxi/oss{1...8}。

        浏览器访问 Minio server,并上传一个文件,如下图所示:

第二章 九析带你轻松完爆 MinIO - MinIO 纠删码(erasure code) 模式

        下面大胆手动删除 /jiuxi 目录下的 ossN(N 从1到8) 目录,只要删除的驱动(目录)个数小于 N/2,都可以保证文件被恢复(即:你删除了目录之后,过一会也会自动创建,无需人为干预)。

        自此,九析带你轻松完爆 MinIO 单机纠删码工作模式。

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号