MinIOとは

この記事はjoshua317のオリジナル記事です、転載する場合はその旨を明記してください: joshua317ブログ より転載MinIOとは - joshua317のブログ

MinIOとは何ですか?

MinIO は、高性能の分散オブジェクト ストレージ システムであり、標準のハードウェア上で 100% 実行できるソフトウェア製品です。つまり、X86 などの低コストのマシンでも MinIO を適切に実行できます。

MinIO は、高性能の S3 互換オブジェクト ストレージを提供しますMinio は、Go 言語に基づくオブジェクト ストレージ サービスです。Amazon S3 クラウド ストレージ サービス インターフェイスのほとんどを実装しており、S3 のオープンソース バージョンとみなすことができ、写真、ビデオ、ログ ファイル、バックアップ データ、コンテナなどの大容量の非構造化データの保存に非常に適しています。 /virtual machine イメージなど、オブジェクト ファイルのサイズは数 kb から最大 5T までの任意のサイズにすることができます。minio は、分散ストレージ システムとは異なり、シンプル、軽量、開発者に優しいという特徴を持ち、ストレージは運用保守の問題ではなく開発の問題であると考えています。

MinIO は Kubernetes にネイティブであり、すべてのパブリック クラウド、すべての Kubernetes ディストリビューション、プライベート クラウド、およびエッジで利用できる唯一のオブジェクト ストレージ スイートです。MinIO はソフトウェア定義であり、GNU AGPL v3に基づく 100% オープン ソースです。

MinIO は、最初からより高いパフォーマンス要件を持つプライベート クラウド標準に合わせてソフトウェア アーキテクチャを設計するという点で、従来のストレージや他のオブジェクト ストレージとは異なります。なぜなら、MinIOは最初からオブジェクトストレージ専用に設計されているからです。そのため、MinIO の使いやすさと効率性を損なうことなく、オブジェクト ストレージに必要なすべての機能を実現し、パフォーマンスも向上し、より使いやすいように設計されました。 . . このような結果の利点は、柔軟なスケーラビリティを備えたネイティブ オブジェクト ストレージ サービスをより簡単に実装できることです。

MinIO は、最も多くの環境で最も幅広いユースケースをサポートします。クラウドネイティブの立ち上げ以来、MinIO のソフトウェア デファインド スイートはパブリック クラウド、プライベート クラウド、エッジ全体でシームレスに動作し、ハイブリッド クラウドおよびマルチクラウド オブジェクト ストレージのリーダーとなっています。業界をリードするパフォーマンスと拡張性を備えた MinIO は、AI/ML、分析、バックアップ/復元、最新の Web およびモバイル アプリケーションを含む幅広いユースケースに対応できます。

MinIO は、セカンダリ ストレージ、ディザスタ リカバリ、アーカイブなどの従来のオブジェクト ストレージのユースケースに優れています。同時に、機械学習、ビッグデータ、プライベートクラウド、ハイブリッドクラウド向けのストレージテクノロジーでもユニークです。もちろん、データ分析、高パフォーマンスのアプリケーション負荷、ネイティブ クラウドのサポートが除外されるわけではありません。

中国: Alibaba、Tencent、Baidu、China Unicom、Huawei、China Mobile など 9,000 社以上の企業が MinIO 製品を使用しています

特徴

MinIO のエンタープライズ グレードの機能は、オブジェクト ストレージ スペースの標準を表します。AWS S3 API サポートから S3 Select サポート、および MinIO によって設計された消去コーディングやデータ セキュリティなどの実装に至るまで、MinIO のコードは広く賞賛されており、テクノロジーおよびビジネス分野の大手企業によって頻繁に使用されています。

1.1 消去コード

MinIO は、最高のパフォーマンスを提供するためにアセンブリ コードで記述されたオブジェクトごとの埋め込み消去コーディングを使用してデータを保護します。MinIO は、リードソロモン コードを使用してオブジェクトを n/2 データ ブロックと n/2 パリティ ブロックに分割します。ただし、これらは任意の冗長レベルに構成できます。これは、12 ドライブ設定では、オブジェクトが 6 つのデータ ブロックと 6 つのパリティ ブロックにスライスされることを意味します。最大 5 ((n/2)–1) 個のドライブ (パリティまたはデータ) が失われた場合でも、残りのドライブからデータを確実に再構築できます。MinIO の実装により、複数のデバイスが失われたり使用できなくなったりした場合でも、オブジェクトの読み取りや新しいオブジェクトの書き込みが可能になります。最後に、MinIO の消去コードはオブジェクト レベルであり、オブジェクトを一度に 1 つずつ修正できます。

1.2 ビットロット保護

サイレント データ破損 (Bitrot) は、ユーザーの知らないうちにデータ破損を引き起こす、ディスク ドライブが直面する深刻な問題です。原因はさまざまですが (ドライブの老朽化、電流のスパイク、不良なディスク ファームウェア、誤った書き込み、間違った読み取り/書き込み方向、間違ったドライバー、偶発的な上書き)、結果は同じで、データ漏洩です。

MinIO の高速ハッシュ アルゴリズムの最適化された実装により、破損したデータが読み取られることがなくなり、破損したオブジェクトをリアルタイムで捕捉して修復します。エンドツーエンドの整合性は、アプリケーションから、ネットワーク全体、メモリ/ドライブへの読み取り時のハッシュと書き込み時のハッシュによって保証されます。この実装は速度を重視して設計されており、Intel CPU の単一コアで 10 GB/秒を超えるハッシュ速度を達成できます。

1.3 暗号化

オブジェクト ストレージの世界では、テーブルに着くためには強力な暗号化が必要です。MinIO は、ストレージ暗号化操作に通常伴うオーバーヘッドを実質的に排除する広範な最適化とともに、最高レベルの暗号化により、より多くの機能を提供します。

1.4 ワーム

WORM が有効になっている場合、MinIO はオブジェクト データとメタデータを変更する可能性のあるすべての API を無効にします。これは、データが書き込まれた後は改ざんから保護されることを意味します。これは、さまざまな規制要件に実際に応用できます。

1.5 ID の認証と管理

AWS Identity and Access Management (IAM) との互換性を中核とする MinIO IAM は、環境に関係なくアプリケーションとユーザーにフレームワークを公開し、さまざまなパブリック クラウド、プライベート クラウド、エッジで同じ機能を提供します。MinIO は、ActiveDirectory/LDAP、Okta、Keycloak などの一般的な外部 ID プロバイダーのサポートにより AWS IAM との互換性を拡張し、管理者が組織の優先 SSO ソリューションに ID 管理をオフロードできるようにします。

1.6 継続的なレプリケーション

従来のレプリケーション方法の課題は、数百テラバイトまで効率的に拡張できないことです。そうは言っても、災害復旧をサポートするには誰もがレプリケーション戦略を必要とし、その戦略は地理、データセンター、クラウドにまたがる必要があります。MinIO の継続的レプリケーションは、大規模なデータセンター間展開向けに設計されています。Lambda を利用して通知とオブジェクトのメタデータを計算することで、デルタを効率的かつ迅速に計算します。

Lambda 通知により、従来のバッチ モードとは異なり、変更が即座に反映されます。継続的レプリケーションとは、非常に動的なデータ セットであっても、障害が発生した場合のデータ損失が最小限に抑えられることを意味します。最後に、MinIO と同様に、継続的レプリケーションはマルチベンダーであるため、バックアップの場所は NAS からパブリック クラウドまでどこにでも配置できます。

1.7 グローバルな一貫性

現代のビジネスではあらゆる場所にデータが存在します。MinIO を使用すると、これらのさまざまなインスタンスを組み合わせて、統一されたグローバル名前空間を形成できます。具体的には、最大 32 台の MinIO サーバーを 1 つの分散スキーマ セットに結合でき、複数の分散スキーマ セットを 1 つの MinIO サーバー フェデレーションに結合できます。各 MinIO サーバー フェデレーションは、統合された管理者と名前空間を提供します。

MinIO Federation Server は、無制限の数の分散スキーマ セットをサポートします。

このアプローチの効果は、オブジェクト ストレージが (S3 Select、MinSQL、Spark、Hive、Presto、TensorFlow、H20) 機能のさまざまなアプリケーションに引き続き対応しながら、地理的に分散した大規模な企業向けに大規模に拡張できることです。シングルコンソール。

1.8 マルチクラウドゲートウェイ

すべての企業がマルチクラウド戦略を採用しています。これにはプライベート クラウドも含まれます。したがって、ベアメタル仮想化コンテナとパブリック クラウド サービス (Google、Microsoft、Alibaba などの非 S3 プロバイダを含む) は同一に見える必要があります。最新のアプリケーションは移植性に優れていますが、アプリケーションを動かすデータは移植性が高くありません。

MinIO が取り組む主な課題は、データがどこにあっても利用できるようにすることです。MinIO は、ベアメタル、ネットワーク接続ストレージ、およびあらゆるパブリック クラウド上で実行されます。さらに、MinIO では、Amazon S3 API を通じて、アプリケーションと管理の観点からデータをまったく同じビューで見ることができます。

MinIO はさらに一歩進んで、既存のストレージ インフラストラクチャを Amazon S3 と互換性のあるものにすることができます。その影響は広範囲に及びます。組織は、ファイルからブロックに至るまで、移行せずに Amazon S3 API を通じてアクセスできるオブジェクトとして表示されるデータ インフラストラクチャを真に統合できるようになりました。

1.9 スケーラビリティ

MinIO は、Web スケーラーの苦労して得た知識を活用して、シンプルなスケーリング モデルをオブジェクト ストレージにもたらします。これは、「シンプルにスケーラブル」という MinIO の確固たる哲学です。MinIO では、スケーリングは単一のクラスターから始まり、他の MinIO クラスターとフェデレートしてグローバル名前空間を作成でき、必要に応じて複数の異なるデータセンターにまたがることができます。目標が達成されるまで、クラスターやラックを追加することで名前空間を拡張できます。

スケーリングは次元の概念ですが、真実は 1 つあります。それは、シンプルなスケーリングです。MinIO は、サーバー プールと呼ばれる概念を通じて水平方向に拡張 (スケールアウト) します。サーバー プーリングは、複数のテクノロジー コンポーネントを組み合わせる方法です。各サーバー プールは、独自のコンピューティング、ネットワーク、ストレージ リソースを持つ独立したノードのセットです。

1.10 ハイブリッドおよびマルチクラウド

MinIO は、ハイブリッド クラウド戦略のために一貫性があり、高性能でスケーラブルなオブジェクト ストレージを求める企業に最適です。Kubernetes 上でネイティブに設計され、S3 と最初から互換性がある MinIO は、現在、AWS、Azure、GCP で 770 万以上のインスタンスを実行しています。これは、他のすべてのプライベート クラウドを合わせた数よりも多いです。何百万ものプライベート クラウド インスタンスや広範なエッジ展開に追加すると、MinIO はハイブリッド クラウドのリーダーとなります。

1.11 クラウドネイティブのサポート

MinIO は過去 4 年間にわたってゼロから構築されており、クラウドを定義するテクノロジーとアーキテクチャにネイティブです。これらには、コンテナ化、Kubernetes オーケストレーション、マイクロサービス、マルチテナンシーが含まれます。これほど Kubernetes に適したオブジェクト ストアは他にありません。

1.12 すべてのソース コードをオープン + エンタープライズ レベルのサポート

オープンソースはクラウドを強化します。オープンソースは企業を力づけます。オープンソースが MinIO を強化します。毎日、何万人もの顧客とコミュニティ メンバーが、導入環境にセキュリティ、回復力、耐久性、優れた運用性を提供する MinIO を信頼しています。

MinIO は、Apache V2 ライセンスに基づいた 100% オープンソースです。これは、MinIO の顧客が MinIO を自動的に、無制限に、自由に使用および統合し、自由に革新および作成し、自由に変更し、新しいバージョンやソフトウェアを自由に再配布できることを意味します。実際、MinIO は強力なサポートを受けており、多くのフォーチュン 500 企業を牽引しています。さらに、その展開の多様性と専門性により、他のソフトウェアでは真似できない利点が得られます。MinIO は、Affero General Public License バージョン 3 (AGPLv3) に基づく 100% オープン ソースです。これは、MinIO のクライアントがロックインされておらず、自由に検査、自由に革新、自由に変更、および自由に再配布できることを意味します。その導入の多様性により、独自のソフトウェアでは決して提供できない方法でソフトウェアが強化されます。

1.13 バケットとオブジェクトの不変性

データを (偶発的または意図的) 削除から保護することは、あらゆる業界に関係する重要なコンプライアンス コンポーネントです。MinIO は、オブジェクトのロック、保持、訴訟ホールド、ガバナンス、コンプライアンスを含むすべての機能をサポートします。MinIO の Buck および Object Mutability は、SEC 規則 17a-4(f)、FINRA 規則 4511、および CFTC 規則 1.31 に従って使用するために、Cohasset Partners の Veeam によって認定および検証されています。

1.14 バケットとオブジェクトのバージョン管理

オブジェクト レベルのバージョン管理は、SAN および NAS のバージョン管理方法からの大幅な進化です。バージョン管理はデータ保護を提供するだけでなく、オブジェクトのロック、不変性、階層化、ライフサイクル管理などの強力な機能の基盤としても機能します。

MinIO を使用すると、オブジェクトは Amazon の S3 構造/実装に従って個別にバージョン管理されます。MinIO は、特定のオブジェクトの各バージョンに一意の ID を割り当てます。アプリケーションはいつでもバージョン ID を指定して、そのオブジェクトの特定時点のスナップショットにアクセスできます。

1.15 データのライフサイクル管理と階層

データが増大し続けるにつれて、アクセス、セキュリティ、経済性を共同で最適化する機能は、オプションの追加機能ではなく要件になります。ここでライフサイクル データ管理が登場します。MinIO は、パブリックとプライベートの両方のクラウド内およびクラウド間でデータを保護するための独自の機能セットを提供します。

MinIO のエンタープライズ データ ライフサイクル管理ツールには、バージョン管理、オブジェクト ロック、さまざまな派生コンポーネントが含まれており、多くのユース ケースを満たすことができます。

1.16 自動データ管理インターフェース

データはビジネスの最も重要な資産であるため、全員にとってその価値を最大化するには、組織全体でデータを簡単かつ安全に利用できる必要があります。したがって、企業は視聴者のニーズに応じて一連のデータ インターフェイス方法を採用する必要があります。MinIO は、グラフィカル ユーザー インターフェイス (GUI)、コマンド ライン インターフェイス (CLI)、アプリケーション プログラミング インターフェイス (API) など、データ駆動型企業のあらゆる役割をカバーする一連のオプションを提供します。MinIO のデータ管理インターフェイスは相互に交換可能に動作し、きめ細かく、高パフォーマンスで、スケーラブルなオブジェクト ストレージ管理を提供します。

1.17 モニタリング

メトリクスとログは、システムの健全性とパフォーマンスを追跡する際に重要です。MinIO は、詳細なストレージ パフォーマンスの監視、メトリクス、およびすべての操作のログ記録により、クラスターを完全に可視化します。その結果、オブジェクト ストレージの監視、アラート、可観測性に対する強力かつ透過的かつ高性能な答えが得られます。

1.18 AWS S3標準準拠

S3 との互換性は、クラウド ネイティブ アプリケーションにとって必須の要件です。MinIO は API への準拠において妥協を許さず、数万人のユーザー (商用およびコミュニティ) を抱える MinIO の S3 実装は、世界で最も広くテストおよび実装されている AWS S3 の代替手段です。

S3 API (V2 および V4) の早期採用企業の 1 つであり、S3 に焦点を当てた唯一のストレージ企業の 1 つである MinIO の大規模なコミュニティは、他の AWS 代替手段よりも互換性が高いことを保証しています。MinIO は、S3 Select をサポートする数少ない企業の 1 つでもあります。

1.19 パフォーマンスのベンチマーク

MinIO は高性能オブジェクト ストレージの先駆者であり、NVMe の 32 ノード上でそれぞれ 325 GiB/秒と 165 GiB/秒の GET/PUT スループットを実現し、市場で最速の性能を維持しています。これらの速度により、高度な分析から AI/ML まで、あらゆるワークロードを MinIO 上で実行できます。

1.20 簡単なインストール、導入、メンテナンス

ミニマリズムは MinIO の設計原則です。シンプルによりエラーの可能性が減り、稼働時間が増加し、信頼性が提供され、ハイブリッドおよびマルチクラウドのインストール パフォーマンスの基盤として機能します。MinIO は数分でインストールして構成できます。構成オプションと変更の数は最小限に抑えられるため、システム管理タスクがほぼゼロになり、障害パスが少なくなります。MinIO のアップグレードは簡単なコマンドで完了するため、MinIO のアップグレードを中断することなく完了でき、アップグレード操作を停止することなく完了できるため、総使用量と運用保守コストが大幅に削減されます。

1.21 世界で最も急速に成長しているオブジェクト ストレージ システム

MinIO の実稼働展開は世界中をカバーしています。これは、貢献者とエバンジェリストの並外れたコミュニティによって強化され、世界で最も使用されダウンロードされているオブジェクト ストレージ サービスとして日々成長しています。

1.22 包括的な開発ドキュメント

Golang プログラミング言語に基づくオープンソース プロジェクトとして、MinIO は高性能の分散ストレージ ソリューションを備えており、非常に完全な公式ドキュメントを備えています。

公式Webサイトのドキュメントアドレス:https://docs.min.io/cn/

1.23 多言語サポート

現在、MinIO は市場で主流の開発言語をサポートしており、SDK を通じて迅速に統合して使用できます。

1.24 管理インターフェイスのサポート

MinIO サービスをインストールすると、ブラウザを通じてシステムに直接ログインして、フォルダーやファイルを管理できるようになります。とても使いやすいです。

2つのアーキテクチャ設計

クラウドネイティブになるように設計された MinIO は、Kubernetes などの外部オーケストレーション サービスによって管理される軽量コンテナとして実行できます。サーバー全体は約 40MB の静的バイナリであり、高負荷時でも CPU とメモリのリソースを効率的に使用できます。その結果、共有ハードウェア上で多数のテナントを共同ホストできるようになります。

MinIO は、ローカル ドライブ (JBOD/JBOF) を備えたコモディティ サーバー上で実行されます。クラスター内のすべてのサーバーは機能的に同一です (完全な対称アーキテクチャ)。ネームノードやメタデータ サーバーはありません。

MinIO はデータとメタデータを一緒にオブジェクトとして書き込むため、メタデータ データベースが不要になります。さらに、MinIO はすべての機能 (消去コード、ビット ロットロット チェック、暗号化) をインラインで厳密に一貫した操作で実行します。その結果、MinIO は信じられないほど柔軟になります。

各 MinIO クラスターは分散 MinIO サーバーの集合であり、ノードごとに 1 つのプロセスが含まれます。MinIO はユーザー空間で単一プロセスとして実行され、軽量のコルーチンを使用して高い同時実行性を実現します。ドライブはスクラッチ セット (デフォルトではグループあたり 16 ドライブ) にグループ化され、オブジェクトは決定論的ハッシュ アルゴリズムを使用してこれらのスクラッチ セットに配置されます。

MinIO は、大規模なマルチデータセンターのクラウド ストレージ サービス向けに設計されています。各テナントは、他のテナントから完全に分離された独自の MinIO クラスターを実行し、アップグレード、更新、セキュリティ インシデントによる中断からテナントを保護できます。各テナントは、地理的領域全体でクラスターをフェデレーションすることにより、個別にスケーリングします。

3 つのハードウェアのサポート

高性能ソフトウェアでより優れたパフォーマンスを実現するには、高性能ハードウェアのサポートが必要です

MinIO はハードウェアに依存しませんが、これらの業界標準で広く入手可能なボックスは、MinIO ソフトウェアの優れた機能と一致するようにテストされています。MinIO のスタッフは、最新のハードウェアに合わせて MinIO のソフトウェアを最適化するためにたゆまぬ努力をしているため、高価な旧式のデバイスよりもはるかに優れたパフォーマンスを発揮できます。

4つの基本コンセプト

オブジェクト: ファイル、バイトストリーム、ビデオ、オーディオ、ログ、画像など、Minio に保存されている基本オブジェクト。

バケット: オブジェクトを保存するために使用される論理空間。各バケット内のデータは相互に分離されています。クライアントにとって、これはファイルを保存するための最上位フォルダーに相当します。

Drive : データを保存するディスク。MinIO の起動時にパラメータとして渡されます。Minio のすべてのオブジェクト データは Drive に保存されます。

セット : ドライブの集合です。分散展開では、クラスター サイズに応じて 1 つ以上のセットが自動的に分割され、各セット内のドライブが異なる場所に分散されます。オブジェクトは Set に保存されます。(例: {1…64} は、サイズ 16 の 4 つのセットに分割されます。)

5つの応用シナリオ

インターネット上の大量の非構造化データのストレージ要件

  • E コマース Web サイト: 大量の商品画像
  • ビデオ Web サイト: 大量のビデオ ファイル
  • ネットワークディスク: 巨大なファイル
  • ソーシャル ネットワーキング サイト: 大量の画像
  • ログ システム: 監査ログ
  • ミラー ウェアハウス: 大量の Docker イメージ

この記事はjoshua317のオリジナル記事です、転載する場合はその旨を明記してください: joshua317ブログ より転載MinIOとは - joshua317のブログ

おすすめ

転載: blog.csdn.net/joshua317/article/details/128259365