当前位置: 首页 > Linux

分布式文件存储服务器Minio对象存储技术参考指南

时间:2023-04-06 07:04:57 Linux

Minio对象存储技术MinIO是一个原生支持Kubernetes部署的高性能对象存储方案。MinIO提供与AmazonWebServicesS3兼容的API,并支持所有核心S3功能。MinIO在GNUAffero通用公共许可证v3.0下发布。或许说到对象存储技术,我们都经历过Fastdfs的长期拉锯战。即使现在大部分都在使用云服务厂商提供的OSS对象存储服务,经济成本越来越高,而且数据存储在别人的服务器上,一定程度上文件资源的控制粒度极度不可控,而公网数据完全没有隐私可言。虽然,对于开发层面来说,只需要集成相应的SDK,其使用已经是开箱即用。而Minio是选择自研对象存储技术的利器。在其构建过程和集成方面,几乎没有任何瓶颈可言。无论是从传统服务器安装,还是基于Docker、Kubernetes的部署,都太简单了。基本概述MinIO支持跨最多环境的最广泛用例。云原生自诞生以来,MinIO的软件定义套件在公有云、私有云和边缘无缝运行——使其成为混合云领域的领导者。凭借行业领先的性能和可扩展性,MinIO可以提供一系列用例,包括AI/ML、分析、备份/恢复以及现代Web和移动应用程序。MinIO在最多的环境中支持最广泛的用例。由于云原生,MinIO的软件定义套件可跨公有云、私有云和边缘无缝运行——使其成为混合云领域的领导者。凭借行业领先的性能和可扩展性,MinIO可以服务于一系列用例,包括AI/ML、分析、备份/恢复以及现代Web和移动应用程序。HybridCloud:混合云Borncloudnative:云原生MinIO是高性能对象存储的先驱:建立在web规模的原则之上建立在web规模的原则上#1开源对象存储。并且最适合企业。开源对象存储,最适合企业AmazonS3兼容性的事实标准:AmazonS3兼容性的事实标准Simplypowerful:简单而强大的标准。从AWSS3API到S3Select以及我们的内联纠删码和安全性实施,我们的代码广受赞誉,并且经常被一些技术和商业领域的知名人士复制。擦除编码:纠错编码MinIO使用以汇编代码编写的每个对象内联擦除编码来保护数据,以提供尽可能高的性能。MinIO使用Reed-Solomon代码将对象条带化为具有用户可配置的冗余级别的数据和奇偶校验块。MinIO的ErasureCoding在对象级别进行修复,可以独立修复多个对象。最大奇偶校验为N/2,MinIO实现确保在部署中仅使用((N/2)+1)个可操作驱动器进行不间断的读写操作。例如,在12驱动器的设置中,MinIO将对象分割成6个数据驱动器和6个奇偶校验驱动器,并且可以可靠地写入新对象或重建现有对象,部署中只剩下7个驱动器。BitrotProtection:BitrotProtection静默数据损坏或bitrot是磁盘驱动器的一个严重问题,会在用户不知情的情况下导致数据损坏。原因很多(驱动器老化、电流峰值、磁盘固件中的错误、幻写、错误的读/写方向、驱动程序错误、意外覆盖),但结果是相同的——数据损坏。MinIO对HighwayHash算法的优化实现确保它永远不会读取损坏的数据——它会即时捕获并修复损坏的对象。从应用程序、网络到内存/驱动器,通过在读取时计算散列并在写入时验证它来确保端到端完整性。该实现专为速度而设计,可以在IntelCPU的单核上实现超过10GB/秒的哈希速度。Encryption:EncryptionHandling加密传输中的数据是一回事;保护静态数据是另一回事。MinIO支持多种复杂的服务器端加密方案来保护数据——无论数据位于何处。MinIO的方法以可忽略的性能开销确保机密性、完整性和真实性。使用AES-256-GCM、ChaCha20-Poly1305和AES-CBC支持服务器端和客户端加密。加密对象使用AEAD服务器端加密来防篡改。此外,MinIO与所有常用的密钥管理解决方案(例如HashiCorpVault)兼容并经过测试。MinIO使用密钥管理系统(KMS)来支持SSE-S3。如果客户端请求SSE-S3或启用自动加密,则MinIO服务器使用唯一的对象密钥加密每个对象,该对象密钥受KMS管理的主密钥保护。鉴于极低的开销,可以为每个应用程序和实例打开自动加密。身份管理:MinIO支持最先进的身份管理标准,与OpenIDConnect兼容提供商以及主要的外部IDP供应商集成。这意味着访问是集中的,密码是临时的和轮换的,而不是存储在配置文件和数据库中。此外,访问策略是细粒度和高度可配置的,这意味着支持多租户和多实例部署很简单。连续复制:传统复制方法面临的挑战是它们无法有效地扩展到数百TB以上。话虽如此,每个人都需要一个复制策略来支持灾难恢复,并且该策略需要跨越地域、数据中心和云。MinIO的连续复制专为大规模、跨数据中心部署而设计。它通过利用Lambda计算通知和对象元数据来高效快速地计算增量。Lambda通知确保立即传播更改,而不是在传统的批处理模式下传播。连续复制意味着在发生故障时,数据丢失保持在最低限度,即使是高度动态的数据集。最后,与MinIO一样,连续复制是多供应商的,这意味着您的备份位置可以是从NAS到公共云的任何地方。GlobalFederation:全球联盟现代企业的数据无处不在。MinIO允许将这些不同的实例组合起来形成一个统一的全局命名空间。具体来说,可以将任意数量的MinIO服务器组合成一个分布式模式集,多个分布式模式集可以组合成一个MinIO服务器联邦。每个MinIOServerFederation都提供统一的管理和命名空间。MinIO联邦服务器支持无限数量的分布式模式集。这种方法的影响是,对象存储可以为大型的、地理上分散的企业大规模扩展,同时保留从单个控制台容纳各种应用程序(Splunk、Teradata、Spark、Hive、Presto、TensorFlow、H20)的能力。多云网关:Multi-CloudGateway所有企业都在采用多云战略。这也包括私有云。因此,您的裸机虚拟化容器和公共云服务(包括非S3提供商,如谷歌、微软和阿里巴巴)必须看起来一样。虽然现代应用程序具有高度可移植性,但为它们提供支持的数据却并非如此。让这些数据无论位于何处都可用是MinIO解决的主要挑战。MinIO在裸机、网络附加存储和每个公共云上运行。更重要的是,MinIO确保您通过AmazonS3API从应用程序和管理的角度来看此数据的视图看起来是相同的。MinIO可以更进一步,使您现有的存储基础设施与AmazonS3兼容。影响是深远的。组织现在可以真正统一他们的数据基础设施——从文件到数据块,所有这些都显示为可通过AmazonS3API访问的对象,无需迁移。WORM:WORM对象锁定启用WORM后,MinIO会禁用所有可能更改对象数据和元数据的API。这意味着一旦写入的数据是防篡改的。这对于许多不同的监管要求具有实际应用。MinIO的基本架构被设计为云原生的,可以作为由外部编排服务(如Kubernetes)管理的轻量级容器运行。整个服务器是一个大约40MB的静态二进制文件,并且在使用CPU和内存资源方面非常高效-即使在重负载下也是如此。结果是您可以在共享硬件上共同托管大量租户。MinIO在带有本地连接驱动器(JBOD/JBOF)的商用服务器上运行。集群中的所有服务器都具有同等能力(完全对称架构)。没有名称节点或元数据服务器。MinIO将数据和元数据作为对象一起写入,不需要元数据数据库。此外,MinIO将所有功能(擦除代码、位旋转检查、加密)实现为内联的、严格一致的操作。结果是MinIO非常有弹性。每个MinIO集群都是一组分布式MinIO服务器,每个节点有一个进程。MinIO作为单进程运行在用户空间,使用轻量级协程实现高并发。驱动器被分组为临时集(默认情况下每组16个驱动器),并且使用确定性哈希算法将对象放置在这些集上。MinIO专为大规模、多数据中心的云存储服务而设计。每个租户都运行自己的MinIO集群,与其他租户完全隔离,使他们能够保护自己免受升级、更新和安全事件造成的任何中断。每个租户通过跨地域联合集群来独立扩展。MinIO服务器特性MinIO的企业级特性代表了对象存储的标准。从AWSS3API到S3Select以及我们的内联纠删码和安全性实施,我们的代码广受赞誉,并且经常被一些技术和商业领域的知名人士复制。MinIO对象保留默认情况下,每个对唯一对象名称的新写入操作都会导致对象被覆盖。您可以配置MinIO来创建每个对象的变异版本,从而保留对象的完整历史记录。MinIO还支持版本化对象上的一次写入多次读取(WORM)锁定,以确保在指定的持续时间内或直到锁定被显式释放之前完全不变。版本控制和对象锁定功能仅适用于分布式MinIO部署:BucketVersioning:BucketVersioningMinIO支持在单个存储桶中保存对象的多个“版本”。通常会覆盖现有对象的写入操作会导致创建新的版本化对象。MinIO版本控制可防止意外覆盖和删除,同时启用“撤消”写入操作。桶版本控制是配置对象锁定和保留规则的先决条件。使用版本化存储桶,任何改变对象的写入操作都会导致该对象的新版本具有唯一的版本ID。MinIO标记客户端默认检索的对象的“最新”版本。然后,客户端可以明确选择列出、检索或删除特定对象版本。其中:具有单一版本的对象:MinIO为每个对象添加一个唯一的版本ID作为写入操作的一部分。2.多版本对象:MinIO保留了一个对象的所有版本,并将最新版本标记为“latest”。3.检索最新的对象版本4.检索特定的对象版本WORM:对象锁定MinIO对象锁定(“对象保留”)强制执行一次写入多次读取(WORM)不变性以保护版本化对象不被删除。MinIO支持基于持续时间的对象保留和无限制的合法持有保留。MinIO对象锁定提供关键数据保留合规性,并符合CohassetAssociates的SEC17a-4(f)、FINRA4511(C)和CFTC1.31(c)-(d)要求。其中:Bucketswithoutlocks:MinIO版本控制保留了对象突变的完整历史。但是,应用程序可以显式删除特定的对象版本。带锁的存储桶:对存储桶中的对象应用默认的30天WORM锁定可确保所有对象版本的最短保留和保护期。3.锁定桶中的删除操作:删除操作遵循版本化桶中的正常行为,其中为对象创建了MinIODeleteMarker。但是,对象的非删除标记版本仍受保留规则的约束,并且不受任何特定删除或覆盖尝试的影响。4.锁定桶中的版本化删除操作:MinIO阻止任何删除在WORM锁下持有的特定对象版本的尝试。客户端可以删除版本的最早时间是锁到期时。Minio部署与管理MinIO是一个软件定义的高性能分布式对象存储服务器。您可以在消费者或企业硬件以及各种操作系统和架构上运行MinIO。MinIO支持两种部署模式:Standalone和Distributed:独立部署:单个MinIO服务器和单个存储卷或文件夹。独立部署最适合使用MinIO进行对象存储的应用程序评估和初始开发,或者为单个存储卷提供S3访问层。独立部署不提供对全套MinIO高级S3特性和功能的访问。分布式部署:一台或多台MinIO服务器,所有服务器上至少有四个总存储卷。分布式部署最适合生产环境和工作负载,并支持MinIO的所有核心和高级S3特性和功能。对于生产环境,MinIO推荐4个节点和4个驱动器的基线拓扑。版权声明:本文为博主原创文章,遵循相关版权协议。如需转载或分享,请附上原文出处链接和链接出处。