StorageOSは、基盤となるストレージの単一ビューを提供し、自動化のためにAPIを公開することによって、コンテナストレージを柔軟にすることを目指している。
StorageOSは、利用可能なストレージプールを統合したビューを提供する仮想レイヤである。このビューはボリュームとしてアクセスできる。ビュー自体はコンテナとして実行され、ボリュームにアクセスするためのDockerボリュームプラグインがある。コンテナ外で、ボリュームに対して直接アクセスできる。ビューのベースとなるストレージは、StorageOSを実行している多くのコンテナにまたがってもよい。InfoQはStorageOSの創業者でCTOであるAlex Chircop氏に連絡を取り、ソリューションの背後にある技術について確認した。 Chirpop氏によると、StorageOSは、「バックエンド上の異なる種類のストレージに1つのレイヤーでアクセスすることができる。仮想化エンジンは現在、物理ディスクと仮想ディスクをサポートしている。S3などのオブジェクトストアを使用する機能を追加しようとしている。」
分散ストレージシステムでは、フォールトトレランスと遅延に対処する必要がある。フォールトトレランスを実現するために「プールはイレージャーコーディングとレプリカによって保護されている。イレージャーコーディングはディスク障害から守るためにノード内で使用され、レプリカはノード障害から守るためにノード間で使用される」とChircop氏は述べている。
複数のStorageOSボリュームが複数のホストにまたがることがある。その場合、ボリュームは複数のノードで作成され、ノードでは遅延を低減するためにコンテナがインスタンス化される。そのソフトウェアは、Solid State Drives(SSD)用に最適化されるように設計されており、、SSD対応のレイアウトを使用し、アルゴリズムの書き込み増幅を低減することで最適化されるとChircop氏は述べている。書き込み増幅は、SSDに書き込む際に発生する問題である。これは、すでに書き込まれたデータの再読み込み、更新、および再書き込みプロセスの一部としての新しい場所への書き込みによって発生する。ここで言うSSDには、SSDのような不揮発性記憶媒体にアクセスするためのPCI Expressバスベースの仕様であるNon-Volatile Memory Express (NVME)デバイスも含まれる。
ステートレスアプリケーションは、ステートフルアプリケーションよりもコンテナに適している。これは、ステートレスアプリケーションが永続的なストレージを必要とするためである。既存のストレージアーキテクチャは自動化には適していない。 StorageOSの目標の1つは、コンテナ環境での計算と同じ柔軟性を実現することである。例えば、StorageOS Dockerプラグインは、ストレージをオンザフライでプロビジョニングし、APIおよびコントロールプレーンと直接統合される。「docker run」コマンドは、指定されたコンテナを起動するプロセスでストレージをプロビジョニングしてマウントできる。 Kubernetesとの統合計画もある。
オーケストレーションパイプラインとの統合を強化するため、ラベルと呼ばれる機能がある。ラベルは、場所、特定のアプリ、QAやステージングなどの環境を示すことができる。ラベルでボリュームをタグ付けすると、ボリューム上のその機能がアクティブになる。
Dockerは移植可能な分散ファイルシステムまたはストレージレイヤを所有するスタートアップInfinitを最近買収した。StorageOSはInfinitが提供するものと何が違うか。Chircop氏は以下の通り回答した。
永続的なコンテナストレージがないことは、エンタープライズでは問題です。ステートフルな分散ストレージを進めているDockerは、顧客のための簡単な出発点となります。顧客はすぐに永続的なコンテナストレージの要件に移ることできます。Infinitには分散ファイルシステムがありますが、データベースとメッセージキューには高速で決定性のパフォーマンスと整合性の保証が必要です。それらはStorageOSアーキテクチャの重要な機能です。
StorageOSは、AWSなどのパブリッククラウドと統合することができる。コンテナとしてデプロイするために、コンテナを実行するあらゆるプラットフォームにインストールできる。暗号化を有効にすると、データのプライバシー要件を満たすことができる。
Rate this Article
- Editor Review
- Chief Editor Action