Rubrikの導入により、Azure上で動作するVM、ディスク、SQLインスタンスなどのワークロードを保護することができます。Rubrikの複数の顧客が、当社のSaaS製品を介した多数のAzureサブスクリプションを保護しています。Rubrikでは、迅速な復旧を可能にするファイルレベルの復元や、バックアップ関連のストレージコストを削減するストレージ階層化などの機能を提供しています。これらの機能をサポートするため、Rubrikは顧客の環境内でコンピューティングを行い、Azureディスクのスナップショットのデータを読み取っています。最初のバージョンでは、保護対象の各サブスクリプションと各リージョンでRubrikを実行するようネットワーク構成を設定することを顧客に対して求めていました。

Rubrikは顧客側での設定を簡素化し、最小限の設定で数百のAzureサブスクリプションを保護できる環境を実現します。Rubrikでは、スナップショットデータの読み込みにAzure REST APIを利用するFUSEファイルシステムを構築しました。これにより、1つのサブスクリプション上で動作中のRubrikのコンピュートインスタンスを、複数のサブスクリプション全体のワークロード向けに使用することができるようになりました。この簡素化されたフローのおかげで、顧客は設定作業を迅速に合理化することができます。 

問題と概念

スナップショットのデータ読み込みでの一般的な仕組みは、そのスナップショットからディスクを起動するというやり方です。起動したディスクは、データの読み取りに利用可能な仮想マシンに添付することができます。この手法の制約の1つが、ディスクは同一のサブスクリプションやリージョン内で動作中の仮想マシンにしか添付できない点です。そのため、次のような問題に行き着きます。

  • 顧客には、各サブスクリプションやリージョン内でRubrik Exocomputeを実行するために必要なネットワークの構成変更を行うことが求められます。中には、重要なワークロードを実行中のサブスクリプションにこうした変更を加えるのを好まない顧客もいます。

  • 100を越えるサブスクリプションがある場合は、拡張がうまくいきません。顧客にとって、これらの各サブスクリプションやリージョン内でのネットワーク変更作業は、面倒で時間のかかるものとなる場合もあります。

これを簡素化するための複数のアイデアについて共同でブレインストーミングを行ったところ、有望なアイデアとして出されたのが、コンピュートリソースを1つのサブスクリプションに展開したうえで、Rubrikが保護を提供する全サブスクリプションのワークロード向けに横断的に使用するというものでした。これにより、顧客側の設定は簡素化されることになります。また、重要なワークロードを実行中のサブスクリプションには一切の変更を加えずに、Rubrik Exocomputeの実行専用の個別サブスクリプションを設定することも可能となります。これを実現するには、1つのサブスクリプション内に存在するスナップショットを、別のサブスクリプションで実行中のExocomputeから読み取るための方法が必要でした。 

API経由でのスナップショットデータの読み取り

Azureは、スナップショットを読み取るためのREST APIを共有アクセス署名URL経由で公開しています。今回の事例ではこのAPIを利用して、別のサブスクリプションで実行中のコンピュートインスタンスのスナップショットデータを読み取ることができました。これにより、同じサブスクリプション内でコンピューティングを行う根本理由となっていた、ディスクを起動してコンピュートインスタンスに添付するという作業が必要なくなります。 

このAPIを利用してスナップショットからファイルを読み取る方法を把握するため、まずはコンピュートインスタンスに添付されたディスクからファイルを読み取る際の仕組みについて見ていきましょう。最初に必要なのは、スナップショット内に存在するファイルシステムを検出してマウントすることです。続いて、システムの呼び出しでファイルが開き、読み取りが行われるようにします。Unixのようなシステムでは、ファイルシステムは最初にファイルのinodeをinodeテーブルからフェッチします。このinodeには、そのファイルに関するメタデータと、ファイルコンテンツの格納先であるデータブロックが含まれています。ファイルシステムは次に、読み取りリクエストに対応する適切なデータブロックを読み取ります。 

Azure REST APIにより、任意のオフセットのスナップショットデータの読み取りが可能です。ただし上記で述べたとおり、ファイルを読み取るということは、実際のファイルコンテンツに加えて、inodeの読み取りのために複数のオフセットも読み取るということです。Rubrikは複数のファイルシステムをサポートしていますが、読み取り対象のオフセットを判断するために各ファイルシステムのリバースエンジニアリングは行いたくありませんでした。そこで、FUSEファイルシステムを活用して仮想デバイスを作成するというわけです。

FUSEを活用した仮想デバイス作成

スナップショットから起動された実際のディスクが存在しないため、以下の仕組みによってファイルシステムからのマウントと読み取りを行います。

  • スナップショットデータをVHDファイルとして公開するFUSEファイルシステムを作成します。このファイルに対する読み取りリクエストはすべて、REST APIが適切なオフセットのスナップショットのデータ読み取りを呼び出すようにすることで実行されます。

  • このVHDファイルによってバックアップされたブロックデバイスを公開するためのループデバイスを作成します。このループデバイスのデータ読み取りの呼び出しは換言すれば、VHDファイルからの読み取りの呼び出しです。

  • ループデバイスを使用してファイルシステムを検出し、マウントします。APIコールでデータを読み取るようにする際の複雑さは、ループデバイスの存在によって取り除かれます。アプリケーションがファイルシステムのマウントを試み、マウントされたファイルシステムからファイルを読み取る動作は、インスタンスに添付されたデバイスを使用するのと似たものになります。 

FUSEを使用することで、これらのスナップショットの読み取りのアプリケーションロジックを変更しなくてもよい環境が確保され、異なるファイルシステムにすべて対応可能となりました。同じ設定は、複数のディスクのスナップショットで構成されたVMバックアップにも拡張できます。
 

img

スケーラブルで、迅速で、安価

APIを使用したスナップショットデータの読み取りや、複数のサブスクリプションにまたがるワークロードでのコンピュートの共有がもたらすメリットは次のとおりです。

  • 顧客側での、多数のサブスクリプション保護のための拡張に向けた設定が簡素化されます。

  • スナップショットからのディスクの起動が不要となり、ディスクの起動にかかる時間に加えてディスク関連のコストも削減されます。

  • コンピュートインスタンスの共有により、リソースの活用が改善されます。Rubrikはコンピュートインスタンスに自動拡張型のKubernetesクラスタを使用しているため、単一のクラスタでの動作が増加しても問題ありません。

まとめ

シンプルさが、Rubrik Security Cloudの根底にある考え方です。今回取り上げたソリューションではサブスクリプションを横断する形でコンピューティングを共有するため、数百ものAzureサブスクリプションを一括で保護することができます。 

Rubrikでは、業界随一の存在であるRubrik Security Cloudプラットフォームのさらなる強化に向け、エンジニアが独自のアイデアを見出せるよう常に後押しています。今回の内容は、さらなる簡素化と顧客の重要課題の解決に向け、エンジニアリングチームが具体的なソリューションを生み出した事例のうちの1つです。

顧客に真のインパクトをもたらすための方法について、詳しくは当社キャリアサイトにアクセスしてください。あわせて、Rubrikの文化、価値、キャリア開発のための機会についてもご確認いただけます。