Windows/Linuxでのベアメタルと仮想化デプロイメントをサポート
オープンソース、S3互換、エンタープライズ強化、そして非常に高速。
RustFSは高性能分散オブジェクトストレージシステムです。ソフトウェア定義で、業界標準ハードウェア上で動作し、100%オープンソースで、主要ライセンスはApache V2.0オープンソースライセンスです。
RustFSが異なるのは、プライベートクラウド/ハイブリッドクラウドオブジェクトストレージの標準として最初から設計されていることです。RustFSがオブジェクトのみを提供するために特別に構築されているため、単層アーキテクチャにより、パフォーマンスを犠牲にすることなくすべての必要な機能を実現できます。その結果、高性能、拡張性、軽量を同時に実現するクラウドネイティブオブジェクトサーバーとなっています。
RustFSは、セカンダリストレージ、災害復旧、アーカイブなどの従来のオブジェクトストレージユースケースで優秀である一方で、機械学習、分析、クラウドネイティブアプリケーションワークロードに関連する課題を克服することで際立っています。
コア機能
イレイジャーコーディング
RustFSは可能な限り高いパフォーマンスを提供するために、アセンブリコードで書かれた各オブジェクトのインラインイレイジャーコーディングを使用してデータを保護します。RustFSはReed-Solomonコードを使用して、オブジェクトをユーザー設定可能な冗長レベルでデータとパリティブロックにストライプ化します。RustFSのイレイジャーコーディングはオブジェクトレベルで修復を実行し、複数のオブジェクトを独立して修復できます。
最大N/2のパリティの下で、RustFSの実装は、デプロイメントで((N/2)+1)個の動作ドライブのみを使用して、中断のない読み取りと書き込み操作を確保できます。例えば、12ドライブ設定では、RustFSは6つのデータドライブと6つのパリティドライブ間でオブジェクトをシャードし、デプロイメントで7つのドライブしか残っていない状況でも信頼性を持って新しいオブジェクトを書き込んだり、既存のオブジェクトを再構築できます。
Bitrot保護
サイレントデータ破損またはbitrotは、ディスクドライブが直面する深刻な問題で、ユーザーが知らない間にデータが破損します。原因は多様です(ドライブの老化、電流スパイク、ディスクファームウェアバグ、ファントムライト、間違った方向の読み取り/書き込み、ドライバーバグ、意図しない上書き)が、結果は同じです - データ漏洩。
RustFSのHighwayHashアルゴリズムの最適化実装は、破損したデータを読み取ることが絶対にないことを確保します - 破損したオブジェクトを即座にキャッチして修復できます。READ時にハッシュを計算し、WRITE時にアプリケーション、ネットワークからメモリ/ドライブまで検証することで、エンドツーエンドの完全性を確保します。この実装は速度のために設計されており、Intel CPU上の単一コアで10 GB/秒を超えるハッシュ速度を達成できます。
サーバーサイド暗号化
飛行中のデータを暗号化することは一つですが、静的データを保護することは別の問題です。RustFSは、データがどこにあっても保護するために、複数の高度なサーバーサイド暗号化スキームをサポートします。RustFSのアプローチは、無視できるパフォーマンスオーバーヘッドで機密性、完全性、真正性を確保します。AES-256-GCM、ChaCha20-Poly1305、AES-CBCを使用したサーバーサイドおよびクライアント暗号化をサポートします。
暗号化されたオブジェクトは、AEADサーバーサイド暗号化を使用して改ざん防止されます。さらに、RustFSは、HashiCorp Vaultなど、すべての一般的なキー管理ソリューションと互換性があり、テストされています。RustFSは、SSE-S3をサポートするためにキー管理システム(KMS)を使用します。
クライアントがSSE-S3を要求するか、自動暗号化が有効になっている場合、RustFSサーバーは、KMSで管理されるマスターキーによって保護される一意のオブジェクトキーを使用して各オブジェクトを暗号化します。オーバーヘッドが非常に低いため、すべてのアプリケーションとインスタンスで自動暗号化を有効にできます。
WORM(Write Once Read Many)
アイデンティティ管理
RustFSは、アイデンティティ管理における最先端の標準をサポートし、OpenID connectコンパチブルプロバイダーや主要な外部IDPベンダーと統合できます。これにより、アクセスは集中化され、パスワードは一時的でローテーションされ、設定ファイルやデータベースに保存されません。さらに、アクセスポリシーは細かく設定可能であり、マルチテナントおよびマルチインスタンスデプロイメントのサポートが簡単になります。
継続的レプリケーション
従来のレプリケーション方法の課題は、数百TiB以上に効果的にスケールできないことです。とはいえ、誰もが災害復旧をサポートするレプリケーション戦略を必要としており、その戦略は地理的場所、データセンター、クラウドを跨ぐ必要があります。
RustFSの継続的レプリケーションは、大規模でデータセンター間のデプロイメント用に設計されています。Lambda計算通知とオブジェクトメタデータを活用することで、効率的かつ迅速に増分を計算できます。Lambda通知により、従来のバッチモードではなく、変更の即座の伝播が確保されます。
継続的レプリケーションは、障害が発生した際にデータ損失を最小限に抑えることを意味します - 非常に動的なデータセットに直面しても。最後に、RustFSが行うすべてのことと同様に、継続的レプリケーションはマルチベンダーです。つまり、バックアップ場所はNASからパブリッククラウドまで何でも可能です。
グローバル連携
現代の企業のデータはあらゆる場所にあります。RustFSでは、これらの異なるインスタンスを組み合わせて統一されたグローバル名前空間を形成できます。具体的には、任意の数のRustFSサーバーを分散モードセットに組み合わせることができ、複数の分散モードセットをRustFSサーバー連携に組み合わせることができます。各RustFSサーバー連携は、統一された管理者と名前空間を提供します。
RustFS連携サーバーは無制限の数の分散モードセットをサポートします。このアプローチの影響は、オブジェクトストレージが地理的に分散した大企業に対して大規模にスケールでき、同時に単一のコンソールから様々なアプリケーション(Splunk、Teradata、Spark、Hive、Presto、TensorFlow、H20)を収容する能力を保持できることです。
マルチクラウドゲートウェイ
すべての企業がマルチクラウド戦略を採用しています。これにはプライベートクラウドも含まれます。したがって、ベアメタル仮想化コンテナとパブリッククラウドサービス(Google、Microsoft、アリババなどの非S3プロバイダーを含む)は同じに見える必要があります。現代のアプリケーションは非常にポータブルですが、これらのアプリケーションをサポートするデータはそうではありません。
データがどこにあっても、これらのデータを提供することがRustFSが解決する主要な課題です。RustFSはベアメタル、ネットワーク接続ストレージ、すべてのパブリッククラウドで動作します。さらに重要なのは、RustFSがAmazon S3 APIを通じて、アプリケーションと管理の観点からそのデータのビューが全く同じに見えることを確保することです。
RustFSはさらに先を行き、既存のストレージインフラストラクチャをAmazon S3互換にすることができます。その影響は深遠です。今では、組織は真にデータインフラストラクチャを統一できます - ファイルからブロックまで、すべてのデータがAmazon S3 APIを通じてアクセス可能なオブジェクトとして表示され、移行の必要がありません。
WORMを有効にすると、RustFSはオブジェクトデータとメタデータを変更する可能性のあるすべてのAPIを無効にします。これにより、データが一度書き込まれると改ざん防止になります。これは多くの異なる規制要件で実用的なアプリケーションがあります。
システムアーキテクチャ
RustFSはクラウドネイティブに設計され、Kubernetesなどの外部オーケストレーションサービスによって管理される軽量コンテナとして動作できます。サーバー全体は約40MBの静的バイナリで、高負荷下でもCPUとメモリリソースを効率的に使用します。結果として、共有ハードウェア上で多数のテナントを共同でホストできます。
RustFSは、ローカル接続ドライブ(JBOD/JBOF)を持つ商用サーバー上で動作します。クラスター内のすべてのサーバーは機能的に同等です(完全に対称なアーキテクチャ)。ネームノードやメタデータサーバーはありません。
RustFSは、データとメタデータをオブジェクトとして一緒に書き込み、メタデータデータベースを必要としません。さらに、RustFSはすべての機能(イレイジャーコーディング、bitrotチェック、暗号化)をインライン、厳密一貫性操作として実行します。その結果、RustFSは並外れた弾力性を持っています。
各RustFSクラスターは、分散RustFSサーバーのコレクションで、ノードあたり1つのプロセスです。RustFSはユーザー空間で単一のプロセスとして動作し、軽量コルーチンを使用して高い並行性を実現します。ドライブはイレイジャーセット(デフォルトでセットあたり16ドライブ)にグループ化され、決定論的ハッシュアルゴリズムを使用してこれらのセット上にオブジェクトが配置されます。
RustFSは大規模なマルチデータセンタークラウドストレージサービス用に設計されています。各テナントは独自のRustFSクラスターを実行し、他のテナントから完全に分離され、アップグレード、更新、セキュリティインシデントからの中断から保護されます。各テナントは地理的場所を跨ぐクラスターを連携することで独立してスケールします。