髙橋 信久

髙橋 信久

シリアの都市アレッポにて、古城を見学していた少女たち。朗らかな笑顔を向けてくれた。2010年ごろ撮影。

(写真:佐藤秀明

未来のデータ活用を支える次世代スナップショット技術

データを単に保管、バックアップするだけでなく、そのデータの二次利用、三次利用を有効にするためには、ある時点のデータのセットをオリジナルとは別に用意する「スナップショット」の技術が不可欠だ。一方、既存のスナップショット技術では、大量のオリジナルデータに対して、数多くのスナップショットを作成する際に課題があった。これまでの課題を解決する次世代スナップショット技術の仕組みと、そこから生まれるデータ利活用の価値について、Neutrix Cloud Japanの髙橋信久CTOが解説する。

Updated by Nobuhisa Takahashi on July, 4, 2022, 9:00 am JST

データ二次利用、三次利用を支えるスナップショット

データの活用方法の1つに、バックアップ用途などで蓄積したデータを、新しい形で再活用する「データの二次利用、三次利用」がある。クラウド接続ストレージ「Neutrix Cloud」を提供するNeutrix Cloud Japanは、ストレージサービスを提供する中で「データをロックインしない」ことでデータ主権を確保でき、複数のクラウドやオンプレミスを適材適所で組み合わせて活用できる「真のマルチクラウド利用」を価値として掲げてきた。さらにもう1つの提供価値として「データの二次利用、三次利用」を掲げている(「二次利用こそが新たな価値を生む」)。

それでは、なぜNeutrix Cloudではデータの二次利用、三次利用を推進することができるのか。そこには、Neutrix Cloudの開発元であるINFINIDATが特許を取得している次世代スナップショット技術の「InfiniSnap」の存在が欠かせない。本稿では、InfiniSnapの仕組みとメリットを説明していこう。

スナップショットの課題を克服

InfiniSnapは、その名の通りスナップショット領域の技術である。スナップショットとは本来は、「データをバックアップするために、ボタンを押した時点でのデータのセットを、別の領域に保存する」ことを表す。すなわち、スナップショットの基本から言えば、10TBのデータのスナップショットを取るには、10TBの別の物理容量が必要になる。大量のデータをコピーするためには時間がかかる上に、スナップショットを取るときや書き戻すときには、ストレージのI/Oや管理のためのデータベースへのアクセスが多発して、システムとしてのパフォーマンスが劣化することがあった。

こうしたスナップショットにまつわる課題を解決するために作った機能がInfiniSnapというわけだ。INFINIDATは、ストレージアプライアンス製品のINFINIBOXや、クラウド接続ストレージサービスのNeutrix CloudにInfiniSnapを適用して、スナップショットを活用しやすい環境を提供する。

InfiniSnapの特徴を端的に表すならば、
「スナップショットが瞬時にできる」
「物理容量の消費がない」
「スナップショットによるパフォーマンス劣化がない」
ということになる。

バックアップのデータを検証用や開発用で二次利用、三次利用するとき、本番のデータをスナップショットして開発環境でトラブルを検証するといったことが、「瞬時に、物理容量の消費がなく、システムのパフォーマンスに影響を与えずに」できるようになる。データの活用の幅が広がることが理解してもらえるだろう。

InfiniSnapがどのようにスナップショットの課題を克服しているかは、既存のスナップショット技術の特徴と比較するとわかりやすい。ここでは、第1世代、第2世代のスナップショットと、次世代(第3世代)に相当するInfiniSnapを世代ごとに見ていこう。

オリジナルをコピーするスナップショット第1世代

スナップショットの第1世代は、Copy on Write(コピーオンライト)と呼ぶ方式である。オリジナルと同じデータをスナップショット専用領域にコピーする。

第1世代のCopy on Write(CoW)方式
第1世代のCopy on Write(CoW)方式は物理領域の確保とパフォーマンス劣化が課題。

最も基本的な手法では、スナップショットを取得すると、オリジナルと同等の物理領域が必要になる。3つのスナップショットを取ると、オリジナル以外に3倍の物理領域が必要になるわけだ。

さらに、スナップショット取得時および取得後のパフォーマンスの劣化も生じる。取得時にはすべてのデータにアクセスしてコピーするため、I/Oを専有してシステムのパフォーマンスが落ちてしまう。スナップショット取得後も、オリジナルデータが変更された場合には差分を管理する必要がある。管理する差分のデータは時間とともに蓄積され、管理のためにシステムのパフォーマンスを消費するようになる。さらに、切り戻しの際には、スナップショット取得時と同様にI/Oを専有することになり、パフォーマンスの劣化が避けられない。

ポインタの付け替えでスナップショットを撮る第2世代

スナップショットの第2世代は、Redirect on Write(リダイレクトオンライト)方式である。この世代ではスナップショット専用の領域はなく、まったく同じコピーを保存する代わりに、データが格納されている番地を示す「ポインタ」を付け替えることで、異なるタイミングのスナップショットを実現する。

第2世代のRedirect on Write(RoW)方式
第2世代のRedirect on Write(RoW)方式では、ポインタで処理する。

第2世代では、オリジナルとスナップショットは、同じデータを参照する。「A」「B」「C」「D」のデータから構成されるオリジナルに対して、ある時点でスナップショット1を取得したら、スナップショットも「A」「B」「C」「D」のそれぞれの番地をポインタとして管理し、必要に応じてデータにアクセスする。スナップショット1の取得後に、オリジナルの「D」が「D’」に置き換わった。すると、オリジナルは「A」「B」「C」「D’」のポインタを参照するが、スナップショット1は「A」「B」「C」「D」のポインタを参照することで、更新前のスナップショットを利用できる。その時点でスナップショット2を取得すれば、「A」「B」「C」「D’」のポインタの情報が記録されるという仕組みだ。

スナップショットを取得した後に、パフォーマンスの劣化はなく、全体の差分の管理の必要もない。物理領域としても、オリジナルの変化分だけの容量増加に対応できれば良く、2倍、3倍といった専用領域を必要としない点はメリットが大きい。

第1世代よりはかなり改善されたスナップショットだが、オリジナルとスナップショットの整合性を確保するために、スナップショットの取得時にデータ構造をロック管理する負荷が発生する。大容量のデータで、多数のスナップショットを取得するとパフォーマンス劣化の可能性はある。このように管理にはオーバーヘッドがあり、大容量データで二次利用、三次利用をする際には負荷が無視できなくなる。

タイムスタンプで管理し欠点を克服するInfiniSnap

第3世代に相当する次世代のスナップショットが、InfiniSnap方式だ。第2世代までの課題に対応したスナップショット方式である。仮想アドレスと物理アドレスのマップ付替えによるRedirect on Writeをベースにしたスナップショットで、物理容量の消費はなく、スナップショット取得によるパフォーマンス劣化はない。さらにデータ容量に依存することなく、瞬時のスナップショット取得とリストアが可能だ。

第3世代のInfiniSnap方式
第3世代のInfiniSnap方式はタイムスタンプを活用したスナップショット。

第2世代との大きな違いは、InfiniSnapではデータ書込み時のタイムスタンプを利用した、革新的なアーキテクチャを採用していることにある。第2世代では、オリジナルとスナップショットのデータ整合性を保つために、「D」を「D’」に書き換える際のデータのロック管理が必要だった。一方、InfiniSnapではデータブロックにメタデータの格納スペースを確保していて、タイムスタンプ情報としてデータブロックがアップデートされた時間を記録することができる。すなわち、スナップショット1は、オリジナルデータとして「A」「B」「C」「D」に「T1」のタイムスタンプが記録されたデータブロックを読む。その後、「D」が「D’」に書き換えられると、「D’」には新しい「T2」のタイムスタンプが書き込まれ、オリジナルデータは「D」の代わりに「D’」のアドレスを参照する。その後に、スナップショット1の状態にリストアする際は、T2よりも前(この場合はT1)のタイムスタンプのデータブロックにアドレスを付け替えれば良い。

InfiniSnapでは、タイムスタンプの中にデータブロックがアップデートされた時間を書くことで、スナップショットを取得するときにデータ構造のロック管理の時間が不要になる。例えばPB(ペタバイト)クラスの大容量のデータをバックアップしても、大量のデータのスナップショットやリストアを実行しても、パフォーマンス劣化がない点が大きな特徴になる。

特徴的な技術の基礎として、INFINIDATが開発したストレージは、64KBのデータブロックに対して4KBのメタデータを持つデータ構造を採用していることが挙げられる。スナップショットを取得するときは、データブロックのポインタ情報だけを取得するため、スナップショットによる容量増加はほぼ無視できる。データの変更があった場合も、64KB単位のデータブロックのうち、変更部分だけのデータ消費があるだけだ。そして、タイムスタンプを格納するメタデータの領域があらかじめ確保されたデータ構造の設計により、スナップショットの管理によるパフォーマンス劣化が起こらない。

クラウド接続ストレージでの活用方法

クラウド接続ストレージのNeutrix Cloudで、このInfiniSnapの技術を使えることにより、クラウド接続ストレージの活用方法が格段に広がる。スナップショットを数多く作成しても、物理容量の増加はなく、パフォーマンス劣化もなしにスナップショットを活用できるためだ。

例えば、AWS(Amazon Web Services)上のデータをNeutrix Cloudのクラウド接続ストレージの領域にバックアップしておく。このデータをGCP(Google Cloud Platform)のデータクエリで分析したいというケースでも、Neutrix CloudでAWSからバックアップを取得したNeutrix Cloud上のデータのスナップショットを取り、GCPのクエリでアクセスすれば、データが増えることなく容易に二次利用が可能になるというわけだ。

InfiniSnapはソフトウェア技術であり、ハードウェアとしてのストレージのコストに反映されないこともユーザーにメリットをもたらす。ストレージベンダーのストレージは、ハードウェアの改良によってパフォーマンスを高める傾向にある。一方で、INFINIDATのストレージは、汎用的なハードウェアに独自のソフトウェアを組み合わせることで、パフォーマンスを実現している。結果として、低コストで高いパフォーマンスのストレージを実現できる。InfiniSnapも、これまでにないデータの二次利用、三次利用を実現するスナップショット技術でありながら、コストに反映させずに差異化できる技術として提供している。

ただし、まだ日本の市場において、二次利用、三次利用を声高に叫ぶのは時期尚早だとも感じている。マルチクラウドの活用やデータの主権の確保をまず理解して、クラウド接続ストレージの利用に目を向けてもらうことが第一歩だろう。その先に、「バックアップしたデータをさらに利活用することで、価値のあるデータに生まれ変わる」ことへの気付きが生まれ、二次利用、三次利用への取り組みが進むと見る。その時には、InfiniSnapによりデータ容量やパフォーマンスに影響なく、瞬時にスナップショットやリストアが可能なNeutrix Cloudの価値が改めて認識されるだろう。

次世代スナップショット技術を用いた「Neutrix Cloud」とは?