分布式文件系统之MinIO
2022-10-18 14:40:04 32 举报
AI智能生成
MinIO是一个高性能的分布式对象存储服务器,兼容Amazon S3云存储服务接口。它采用了Go语言开发,适用于各种规模的企业级应用程序和大规模数据集。MinIO具有高度可扩展性、高可用性和低延迟的特点,可以无缝地扩展到数千个节点,并提供99.9999%的数据持久性。MinIO还支持多种数据加密选项,包括SSE-S3、SSE-C和SSE-KMS等,以保护用户数据的安全性。此外,MinIO还提供了丰富的管理工具和API接口,方便用户进行数据的管理和操作。总之,MinIO是一个功能强大、易于使用的分布式文件系统,适用于各种需要高效、安全、可靠存储的场景。
作者其他创作
大纲/内容
分布式文件系统
分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。DFS为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。
优势
可扩展
分布式存储系统可以扩展到数百甚至数千个这样的集群大小,并且系统的整体性能可以线性增长。
高可用性
在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据的完整和一致性
低成本
分布式存储系统的自动容错和自动负载平衡允许在成本较低服务器上构建分布式存储系统。此外,线性可扩展性还能够增加和降低服务器的成本。
弹性存储
可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要中断系统运行
应用场景
分布式文件系统广发适用于互联网、金融等海量非结构化数据的存储需求
电商网站:海量商品图片
视频平台:视频、图片文件存储
网盘应用:文件存储
社交网站:海量视频、图片
视频平台:视频、图片文件存储
网盘应用:文件存储
社交网站:海量视频、图片
分布式文件系统与传统文件系统对比
海量文件数据存储
文件数据高可用(冗余备份)
读写性能和负载均衡
文件数据高可用(冗余备份)
读写性能和负载均衡
DFS、FastDfs、MinIO、Ceph
基本介绍
MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。它与 Amazon S3 云存储服务 API 兼容。使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
官方文档:https//docs.min.io/
中文文档:http://docs.minio.org.cn/docs/
GitHub 地址:https://github.com/minio/minio
中文文档:http://docs.minio.org.cn/docs/
GitHub 地址:https://github.com/minio/minio
特点
数据保护
分布式 MinIO采用 纠删码来防范多个节点宕机和位衰减 bit rot。分布式 MinIO至少需要 4 个硬盘,使用分布式 MinIO自动引入了纠删码功能。
高可用
单机MinIO服务存在单点故障风险,相反,如果是一个有 N 块硬盘的分布式 MinIO,只要有 N/2 硬盘在线,你的数据就是安全的。不过你需要至少有 N/2+1 个硬盘来创建新的对象。
一致性
MinIO在分布式和单机模式下,所有读写操作都严格遵守 read-after-write 一致性模型。
优点
部署简单
一个二进制文件(minio)即是一切,还可以支持各种平台;
支持海量存储
可以按 zone 扩展,支持单个对象最大 5TB;
低冗余且磁盘损坏高容忍
标准且最高的数据冗余系数为 2(即存储一个 1M 的数据对象,实际占用磁盘空间为 2M)。但在任意 n/2 块 disk 损坏的情况下依然可以读出数据(n 为一个纠删码集合中的 disk 数量)。并且这种损坏恢复是基于单个对象的,而不是基于整个存储卷的;
读写性能优异
MinIO号称是目前速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度最高可以高达183 GB/s和171 GB/s。
基础概念
S3
Simple Storage Service,简单存储服务,这个概念是 Amazon 在 2006 年推出的,对象存储就是从那个时候诞生的。S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何位置存储和检索任何数量的数据;
Object
存储到 MinIO 的基本对象,如文件、字节流等各种类型的数据;Bucket——用来存储 Object 的逻辑空间。每个 Bucket 之间的数据是相互隔离的;
Drive
部署 MinIO时设置的磁盘,MinIO 中所有的对象数据都会存储在 Drive 里;
Set
一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的 Drive 分布在不同位置。
一个对象存储在一个 Set 上
一个集群划分为多个 Set
一个 Set 包含的 Drive 数量是固定的,默认由系统根据集群规模自动计算得出
一个 Set 中的 Drive 尽可能分布在不同的节点上
一个集群划分为多个 Set
一个 Set 包含的 Drive 数量是固定的,默认由系统根据集群规模自动计算得出
一个 Set 中的 Drive 尽可能分布在不同的节点上
Set /Drive 的关系
Set /Drive 这两个概念是 MinIO 里面最重要的两个概念,一个对象最终是存储在 Set 上面的。
Set 是另外一个概念,Set 是一组 Drive 的集合
纠删码(Erasure Code)
一种恢复丢失和损坏数据的算法,也是一种编码技术。通过将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置,实现数据的备份与安全。
纠删码可通过将 n 份原始数据,增加 m 份校验数据,并能通过 n+m 份中的任意 n 份原始数据,还原为原始数据。即如果有任意小于等于 m 份的校验数据失效,仍然能通过剩下的数据还原出来。
分类
阵列纠删码(Array Code: RAID5、RAID6 等)、RS(Reed-Solomon)里德-所罗门类纠删码和LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。
Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。在同一集群内,MinIO 自己会自动生成若干纠删组(Set),用于分布存放桶数据。一个纠删组中的一定数量的磁盘发生的故障(故障磁盘的数量小于等于校验盘的数量),通过纠删码校验算法可以恢复出正确的数据。
部署方式
单主机,单硬盘模式
单主机,多硬盘模式
多主机、多硬盘模式(分布式)
0 条评论
下一页