(57)【要約】【課題】  改竄前のデータに回復するための目標回復時刻を提供する。【解決手段】  計算機と接続され、計算機からのＩＯ要求を処理するコントローラと、ＩＯ要求に応じてデータを読み書きする記憶装置とを有するストレージシステムにおいて、コントローラは、記憶装置により構成されるボリュームを構成し、計算機からボリュームの仮想アドレスにデータが格納された時間を管理し、ボリュームの仮想アドレスに対する書込み時間のバラつきを示す標準偏差を計算し、標準偏差の値が減少を開始するタイミングをリストア時間として出力する。【選択図】図５
2020177502.tif 000002
【特許請求の範囲】
【請求項１】
計算機と接続され、前記計算機からのＩＯ要求を処理するコントローラと、前記ＩＯ要求に応じてデータを読み書きする記憶装置とを有するストレージシステムにおいて、
前記コントローラは、
前記記憶装置により構成されるボリュームを構成し、
前記計算機から前記ボリュームの仮想アドレスにデータが格納された時間を管理し、
前記ボリュームの仮想アドレスに対する書込み時間のバラつきを示す標準偏差を計算し、
前記標準偏差の値が減少を開始するタイミングをリストア時間として出力することを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムにおいて、
前記コントローラは、複数のボリュームを構成し、
前記複数のボリューム毎に、ボリュームの仮想アドレスにデータが格納された時間を管理し、
前記複数のボリューム毎に、ボリュームの仮想アドレスに対する書込み時間のバラつきを示す標準偏差を計算し、
前記複数のボリューム毎に、前記標準偏差の値が減少を開始するタイミングをリストア時間として出力することを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムにおいて、
前記コントローラは、前記仮想アドレスの最終書込み時刻と前記ボリュームのデータが格納されている全仮想アドレスの最終書込み時刻の平均値とに基づいて、前記標準偏差を計算することを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムにおいて、
前記コントローラは、
前記ボリュームの複数時点の複数のスナップショットを生成し、
前記複数のスナップショットの内、前記リストア時間の直線のスナップショットを選択して、前記ボリュームのデータをリストアすることを特徴とするストレージシステム。
【請求項５】
計算機と接続され、前記計算機からのＩＯ要求を処理するコントローラと、前記ＩＯ要求に応じてデータを読み書きする記憶装置とを有するストレージシステムにおいて、
前記コントローラは、
前記記憶装置により構成されるボリュームを構成し、
前記計算機から前記ボリュームの仮想アドレスにデータが格納された時間を管理し、
前記ボリュームの仮想アドレスに対する書込み時間のバラつきを示す標準偏差を計算し、
前記ボリュームに対するＩＯＰＳを監視し、
前記標準偏差の値が減少を開始し、前記ＩＯＰＳが増加するタイミングをリストア時間として出力することを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムにおいて、
前記コントローラは、
前記標準偏差と、前記ＩＯＰＳを表示するよう出力することを特徴とするストレージシステム。
【請求項７】
請求項４に記載のストレージシステムにおいて、
前記コントローラに接続された表示部を有し、
前記表示部は、
前記ボリュームに対する前記標準偏差と前記コントローラにより監視される前記ボリュームに対するＩＯＰＳを時系列で表示するグラフと、
前記複数のスナップショットの選択画面とを表示することを特徴とするストレージシステム。
【請求項８】
請求項１に記載のストレージシステムにおいて、
前記コントローラは、前記ボリュームの標準偏差の計算を開始した計算開始時刻に対応して、標準偏差の値を記憶するメモリを有することを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムのデータ回復技術に関する。
【背景技術】
【０００２】
計算機システムのデータに不正な改変を行うコンピュータウィルスの内、ランサムウェアがある。このランサムウェア（Ｒａｎｓｏｍｗａｒｅ）とは、マルウェアの一種であり、これに感染したコンピュータは、利用者のシステムへのアクセスを制限する。この制限を解除するため、被害者がマルウェアの作者に身代金（ｒａｎｓｏｍ、ランサム）を支払うよう要求する。数種類のランサムウェアは、システムのハードディスクドライブを暗号化し、他の幾種類かは単純にシステムを使用不能にして、利用者が身代金を支払うように促すメッセージを表示する。
【０００３】
ストレージシステムにおいて、ランサムウェアによるデータ改竄が発生した時、スナップショット技術を使用して、改竄前、もしくは感染前のデータに復旧している。スナップショットを利用してデータをリストアすることで改竄前の最新データ復旧させる事が期待されるが、改竄がいつ実行されたかというデータがユーザにない為、改竄されていないデータを確認するためリストア及び内容確認を複数回実行しなくてはならず、復旧までに時間を要する。
【０００４】
スナップショットを用いてデータ回復時間を短縮する技術として、複数時点の複数のスナップショットから目標回復時刻に近いスナップショットを選択することで、データ回復時間を短縮する技術が特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−０１８７３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１によれば、複数のスナップショットから目標回復時刻に近いスナップショットを選択することで、データ回復時間を短縮することは開示されているが、目標回復時刻の求め方、即ち、ランサムウェアによって改竄される直前のデータに回復するための目標回復時刻の求め方については、言及されていない。システム復旧の観点からすると、データ回復の目標回復時刻は、データ改竄が発生する直前であることが望ましい。
【０００７】
そこで、本発明の目的は、改竄前のデータに回復するための目標回復時刻を提供するストレージシステム及びその方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明のストレージシステム一態様は、計算機と接続され、計算機からのＩＯ要求を処理するコントローラと、ＩＯ要求に応じてデータを読み書きする記憶装置とを有するストレージシステムにおいて、コントローラは、記憶装置により構成されるボリュームを構成し、計算機からボリュームの仮想アドレスにデータが格納された時間を管理し、ボリュームの仮想アドレスに対する書込み時間のバラつきを示す標準偏差を計算し、標準偏差の値が減少を開始するタイミングをリストア時間として出力する。
【発明の効果】
【０００９】
本発明によれば、データ改竄前の目標回復時刻を把握することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例のシステム構成図である。
【図２】実施例の最終書込み標準偏差の時系列グラフの画面の一例を示す図である。
【図３】実施例の最終書込み標準偏差の時系列グラフの画面の一例を示す図である。
【図４】実施例の最終書込み標準偏差の時系列グラフの画面の一例を示す図である。
【図５】実施例のストレージシステムのハードウェアブロック図を示した図である。
【図６】実施例の最終データ格納時刻テーブルの一例を示した図である。
【図７】実施例の標準偏差テーブルの一例を示した図である。
【図８】実施例の計算間隔テーブルの一例を示した図である。
【図９】実施例のボリューム選択画面の一例を示した図である。
【図１０】実施例の計算間隔入力画面の一例を示した図である。
【図１１】実施例の計算間隔設定の処理フローを示した図である。
【図１２】実施例のボリューム作成の処理フローを示した図である。
【図１３】実施例のボリューム削除の処理フローを示した図である。
【図１４】実施例の最終データ格納時刻更新の処理フローを示した図である。
【図１５】実施例の標準偏差計算の処理フローを示した図である。
【図１６】実施例の標準偏差計算の定期実行の処理フローを示した図である。
【図１７】実施例のデータ改竄時刻特定の処理フローを示した図である。
【図１８】実施例の標準偏差テーブル（ボリューム作成直後）を示した図である。
【図１９】実施例の標準偏差テーブル（運用開始後）を示した図である。
【図２０】実施例の標準偏差テーブル（運用中）を示した図である。
【図２１】実施例の標準偏差テーブル（データ改竄後）を示した図である。
【発明を実施するための形態】
【００１１】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
以下の説明では、［ＡＡＡテーブル］の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、［ＡＡＡテーブル］を［ＡＡＡ情報］と記載することができる。
【００１３】
また、以下の説明では、プロセッサは、典型的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１４】
また、以下の説明では、［プログラム］を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）等を用いながら行うため、実際の処理の主体はプロセッサである。従って、プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。
【００１５】
コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであってもよい。
【実施例】
【００１６】
＜１．システム構成＞
図１は、本実施例によるシステムの一例を示す構成図である。
このシステム１は、１又は複数の業務サーバ１０と、業務サーバ１０からのＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）要求を受信する１又は複数のストレージシステム３０と、ストレージシステム３０に接続され、ストレージシステムを管理する１又は複数の管理クライアント２０とを有する。図１では、説明のため、業務サーバ１０、ストレージシステム３０、管理クライアント２０はそれぞれ１つ図示している。
【００１７】
業務サーバ１０は、ストレージシステム３０とＬＡＮを経由して接続されるためのインタフェースとなるＮＩＣ（Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ）１０１と、ストレージシステム３０と接続され、ストレージシステム３０に対しＩＯ要求を行うためのインタフェースであるＨＢＡ（Ｈｏｓｔ Ｂｕｓ Ａｄａｐｔｅｒ）１０２とを有する。業務サーバ１０は、処理部であるＣＰＵ及びメモリ等の情報資源を備えたコンピュータ装置であり、例えば、オープン系のサーバや、クラウドサーバ等から構成される。業務サーバ１０は、ユーザ操作や、実装されたプログラムからの要求に応じてネットワークを介してストレージシステム３０にＩＯ要求、即ち、ライトコマンドやリードコマンドを送信する計算機である。
【００１８】
管理クライアント２０は、ＣＰＵ及びメモリ等の情報資源を備えたコンピュータ装置であり、例えば、オープン系のサーバや、クラウドサーバ等から構成される。管理クライアント２０は、ストレージシステム３０とＬＡＮを介して接続するためのインタフェースであるＮＩＣ（Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ）２０１を有し、ストレージシステム３０にボリューム作成、削除、リストア命令等の管理を行うため表示部を有する。
【００１９】
ストレージシステム３０は、業務サーバ１０とＬＡＮを介して接続するためのＮＩＣ３０１、業務サーバ１０からのＩＯ要求を受信するポート３０２、管理クライアント２０とＬＡＮを介して接続するＮＩＣ３０３を有する。ストレージシステム３０は、業務サーバ１０からのＩＯ要求を処理する１又は複数のストレージコントローラ３０４、１又は複数のストレージコントローラ３０４に接続される複数のドライブボックスからなる記憶装置３０７と、各部を接続するバスを有する。
【００２０】
ストレージコントローラ３０４は、ストレージシステム３０としての機能を業務サーバ１０に提供するための必要なソフトウエアが実装された装置である。通常、ストレージコントローラ３０４は、冗長化された複数のストレージコントローラから構成される。
【００２１】
ＣＰＵ３０５は、ストレージコントローラ３０４全体の動作制御を司るハードウェアである。ＣＰＵ３０５は、業務サーバ１０から与えられたＩＯ要求であるリードコマンドやライトコマンドに応じて、記憶装置３０７にデータを読み書きする。
【００２２】
またメモリ３０６は、例えば、Ｓｙｎｃｈｒｏｎｏｕｓ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ（ＳＤＲＡＭ）等の半導体メモリから構成され、必要なプログラム（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ（ＯＳ）を含む）やデータを記憶保持するために利用される。メモリ３０６は、ＣＰＵ３０５の主記憶であり、ＣＰＵ３０５が実行するプログラム（ストレージ制御プログラム等）や、ＣＰＵ３０５が参照する各種テーブル等が格納される他、ストレージコントローラ３０４のディスクキャッシュ（キャッシュメモリ）としても使用される。
【００２３】
ＣＰＵ３０５によって処理される一部または全部は、Ａｐｐｌｉｃａｔｉｏｎ Ｓｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ(ＡＳＩＣ)やＦｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ(ＦＰＧＡ)のような専用ハードウェアで実現することもできる。
【００２４】
記憶装置３０７は、ＳＳＤ（Ｓｏｌｉｄ Ｓｔａｔｅ Ｄｒｉｖｅ）、ＳＡＴＡ（Ｓｅｒｉａｌ ＡＴＡ）、ＦＣ（Ｆｉｂｒｅ Ｃｈａｎｎｅｌ）等の各種ドライブから構成される。
【００２５】
また、記憶装置３０７は、各ドライブボックスに一つ又は複数含まれる。ドライブはＮＡＮＤ フラッシュメモリ（以下、ＮＡＮＤと呼ぶ）の他、複数のＮＡＮＤフラッシュメモリチップを含んでいてもよい。ＮＡＮＤは、メモリセルアレイを含む。このメモリセルアレイは、多数のＮＡＮＤブロック（ブロック）を含む。ブロックは、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。
【００２６】
ブロックは多数のページ（物理ページ）を含む。つまり、ブロックの各々は、複数のページを含む。ＮＡＮＤにおいては、データのリードおよびデータのライトはページ単位で実行される。データの消去はブロック単位で実行される。
【００２７】
記憶装置３０７は、不揮発性ストレージメディアを接続するための論理デバイスインターフェースの規格であるＮＶＭ Ｅｘｐｒｅｓｓ （ＮＶＭｅ） もしくは ＮＶＭＨＣＩ （Ｎｏｎ−Ｖｏｌａｔｉｌｅ Ｍｅｍｏｒｙ Ｈｏｓｔ Ｃｏｎｔｒｏｌｌｅｒ Ｉｎｔｅｒｆａｃｅ)に準拠する。
【００２８】
＜２．書き込み標準偏差を用いたデータ改竄時刻の特定＞
図２は、実施例の最終書込み標準偏差の時系列グラフの画面の一例を示す図である。
ここで、標準偏差とは、特定のボリュームの仮想アドレスに対する書込み時間のバラつきを示す指標である。この標準偏差は、数１によって求めることができる。
【００２９】
【数１】
2020177502.tif 000003
Ｎ＝対象ボリュームのデータが格納されている仮想アドレスの数
ここで、仮想アドレスとは、業務サーバからのＩＯ要求に含まれるＬＢＡ（ＬｏｇｉｃａｌＢｌｏｃｋ  Ａｄｄｒｅｓｓ）に対応するボリュームの記憶領域を表すアドレスである。
ｘ_ｉ= 対象ボリュームの対象仮想アドレスの最終書き込み時刻（ＵＮＩＸ（登録商標）時刻に変換した時刻）
μ= 対象ボリュームのデータが格納されている全仮想アドレスの最終書き込み時刻（ＵＮＩＸ時刻に変換した時刻）の平均値
【００３０】
図２は、例えば、管理クライアント２０の表示部に表示され、対象ボリューム（Ｓｐｅｃｉｆｉｅｄ Ｖｏｌｕｍｅ（ｓ） ＩＤ = ００：００：０３）に対する最終書込み標準偏差２１０を時系列で示したグラフ２０２と、対象ボリュームのスナップショット取得時間２０４を示している。図２に示した画面は、管理クライアント２０の他、ストレージシステム３０に接続されるコンソールに表示されてもよい。
【００３１】
グラフ２０２に示すように、最終書込み標準偏差２１０は時間と共にわずかながら増加していき、リストア非推奨２０３の時点２１１から急激に値が減少している。そして、時点２１２において、減少がとまりその後ほぼ一定の値を示している。
【００３２】
これは、ウィルスによって時点２１１から対象ボリュームの多くの仮想アドレスのデータが短時間で更新されはじめ、時点２１２では対象ボリュームの多くの仮想アドレスのデータが更新されたため、各仮想アドレスに対する書き込み時間にバラつきがなくなったことを示している。
このように、データが改竄されていない状態で通常の業務を行っている場合には、標準偏差のバラつきは大きく、その変化は小さい。一方、ランサムウェア等のウィルスによってデータが改竄されると、ボリューム上のデータが全て暗号化されて更新されるため、標準偏差で示される書き込み時間のバラつきが小さく、その変化は大きくなる。つまり、標準偏差の値２１０が減少に転じるタイミングである時点２１１からランサムウェアの活動が開始されたものと推測することができる。
【００３３】
改竄される前の時点までデータを回復（リストア）するため、図２では、改竄されたと推測できる期間をリストア非推奨２０３として表示し、複数時点で取得された複数のスナップショットの内、その直前のスナップショットＩＤ１０１を選択することを推奨していることを示している。尚、複数のスナップショットは、スナップショット取得時間２０４において、スナップショットを取得した時間２０６と、スナップショットのＩＤ２０７が対応して表示され、セレクト２０５から選択できるように表示される。
【００３４】
図３は、実施例の最終書込み標準偏差の時系列グラフの画面の一例を示す図であり、図２の標準偏差に加えＩＯＰＳ（Ｉｎｐｕｔ/Ｏｕｔｐｕｔ Ｐｅｒ Ｓｅｃｏｎｄ）３０１を監視する性能情報として加えたものである。
【００３５】
図３において、ＩＯＰＳ３０１は、時点３１０において、通常の書き込みに加えて、改竄による暗号用のライトが増加したと推測される。このように、最終書込み標準偏差２１０に加えて、ＩＯＰＳ３０１をグラフ２０２に表示することで、ユーザは、データ改竄時期をより正確に把握することができる。
【００３６】
図４は、実施例の最終書込み標準偏差の時系列グラフの画面の一例を示す図である。スナップショット取得時間２０４に、ユーザが管理クライアント２０の入力部を介して、データ回復時間が入力された状態を示している。ユーザは、グラフ２０２を参考にして、データ回復時間として、２０１８／０２／２１  １３:１０：００を入力している。
【００３７】
図２から図４で示した画面は、管理クライアント２０の表示部に表示される他、ストレージシステム３０のＮＩＣ３０１、３０３に接続されるコンソールに表示されても良い。
【００３８】
図５は、実施例のストレージシステム３０のハードウェアブロックを示した図である。ストレージシステム３０は、ストレージシステム３０の全体の制御を司る制御部となるＣＰＵ（プロセッサ）３０５、メモリ３０６とでコントローラ３０４を構成する。さらに、ストレージシステム３０は、業務用サーバ１０との通信インタフェースであるポート３０２、業務用サーバ１０、管理クライアント２０とＬＡＮを経由して接続するためのＮＩＣ３０１、３０３及びこれらを接続するバスを備える。また、ストレージシステム３０は、コントローラ３０４により、各ドライブから構成される複数のボリューム５０１、ボリューム５０１から業務用サーバ１０に記憶領域として提供される複数の論理ユニット（ＬＵ）５０２を作成する。
【００３９】
ストレージシステム３０のコントローラ３０４はメモリ３０６に構成情報を格納する。この構成情報は、ボリューム５０１とＬＵ５０２との関係、ＬＵ５０２のＬＢＡ（業務サーバからのＩＯ要求に含まれるＬＢＡ）とＬＵ５０２のＬＢＡに対応するボリューム５０１の記憶領域を表す仮想アドレスとの関係とを含む。ボリューム５０１は、複数のＬＵ５０２に対応しても良いし、一つのＬＵ５０２に対応しても良い。以下では、説明を簡単にするため、ボリューム５０１とＬＵ５０２が１対１で対応している場合を前提に説明するが、ＬＵ５０２とボリューム５０１の対応関係は、メモリ３０６に構成情報４１０として格納されているため、複数のＬＵが一つのボリュームに対応していても、本実施例を適応することができる。
【００４０】
また、所謂、シンプロビジョニング機能でＬＵが業務サーバ１０に提供される場合においても、ＬＵ５０２のＬＢＡとボリュームの仮想アドレスとの対応関係は構成情報４１０としてメモリ３０６に格納されているため、同様に本実施例を適応することができる。
【００４１】
ストレージシステム３０のメモリ３０６には、ストレージシステム３０の各種機能を実現する各種プログラムとして、ストレージ機能プログラム４００の他、標準偏差計算プログラム４０４、標準偏差計算時刻監視プログラム４０５、最終データ格納時刻更新プログラム４０６、性能情報監視プログラム４０７、時刻提案プログラム４０８を記憶する。ストレージ機能プログラム４００には、業務サーバ１０からＩＯ要求を処理し、記憶装置にデータを読み書きする機能の他、特定ボリュームの複数時点の複数のスナップショットを取得する機能、業務サーバ１０からのＩＯ要求のログを取り、ボリュームにログを適応することで、ボリュームをどの時点の状態にすることができるＣＤＰ（Ｃｏｎｔｉｎｕｏｕｓ Ｄａｔａ Ｐｒｏｔｅｃｔｉｏｎ）機能、ＬＵ５０２をシンプロビジョニングボリュームとして業務サーバ１０に提供する機能が含まれる。
【００４２】
また、標準偏差計算プログラム４０４、標準偏差計算時刻監視プログラム４０５、最終データ格納時刻更新プログラム４０６、性能情報監視プログラム４０７、時刻提案プログラム４０８で参照される各種テーブルである、最終データ格納時刻テーブル４０１、標準偏差テーブル４０２、計算間隔テーブル４０３が格納されている。
【００４３】
ＣＰＵ３０５は、ストレージ機能プログラム４００により、ＬＵ５０２にデータを書き込み、読み出す制御を行う他、ボリュームのスナップショットを取得する。また、ＣＰＵ３０５は、メモリ３０６に格納された各種プログラムを実行することで、各種機能を実現する。そのため、実際の処理主体はＣＰＵ３０５であっても、各プログラムの処理を分かりやすく説明するため、プログラムを主語にして説明する場合がある。ＣＰＵ３０５によって処理される一部または全部は、ＡＳＩＣやＦＰＧＡのような専用ハードウェアで実現することもできる。
【００４４】
また、メモリ３０６は、例えば、Ｓｙｎｃｈｒｏｎｏｕｓ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ（ＳＤＲＡＭ）等の半導体メモリから構成され、必要なプログラム（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ（ＯＳ）を含む）やデータを記憶保持するために利用される。メモリ３０６は、プロセッサ３０５の主記憶であり、ＣＰＵ３０５が実行するプログラム（ストレージ機能プログラム等）や、ＣＰＵ３０５が参照する管理情報等が格納される他、データを一時格納するデータバッファとしても使用される。
【００４５】
＜３．各種管理情報＞
図６は、実施例の最終データ格納時刻テーブル４０１の一例を示した図である。最終データ格納時刻テーブル４０１は、ストレージシステム３０のメモリ３０６に格納され、ＣＰＵ３０５によって参照されるテーブルであり、ボリューム毎に管理される。
図６は、ボリュームＩＤが「００：００：０３」で特定されるボリュームに対応するＬＵの最終データ格納時刻を管理するための情報であり、ストレージシステム３０のボリューム毎に同様のテーブルが存在する。仮想アドレス番号６１は、ストレージシステム３０によって業務サーバ１０に提供されるＬＵ５０２のＬＢＡに対応するボリュームのアドレスを示す。最終データ格納時刻６２は、仮想アドレス番号６１によって特定されるアドレスに対する最終データ格納時刻を示し、仮想アドレス番号６１「０」が「２０１８−０１−０５Ｔ１２：３３：１１Ｚ」に最終データ更新されたことを示している。従って、同一仮想アドレスに対し、複数回のデータ更新が行われた場合、最後に更新された時刻が格納されることとなる。尚、最終データ格納時刻６２は、ＵＮＩＸ時刻に変換した仮想アドレスの最終書き込み時刻としても良い。
【００４６】
図７は、実施例の標準偏差テーブルの一例を示した図である。標準偏差テーブル４０２は、ストレージシステム３０のメモリ３０６に格納され、ＣＰＵ３０５によって参照されるテーブルであり、ボリューム毎に管理される。
図７では、ボリュームＩＤが「００：００：０３」で特定されるボリュームに対応するＬＵの標準偏差テーブルを管理するための情報であり、ストレージシステム３０のボリューム毎に同様のテーブルが存在する。ｎ７１は、０からインクリメントされる数字である。計算開始時刻７２は、ボリュームＩＤが「００：００：０３」の標準偏差の計算を開始した時刻を示し、標準偏差７３は各時点における標準偏差の値を示している。図７は、計算開始時刻７２が「２０１８−０１−０５Ｔ１１：４０：１０Ｚ」の時、標準偏差７３が「０」で、計算開始時刻７２が「２０１８−０１−０５Ｔ１２：４０：１０Ｚ」の時、標準偏差７３が「１４５」であることを示している。
【００４７】
図８は、実施例の計算間隔テーブルの一例を示した図である。計算間隔テーブル４０３は、ストレージシステム３０のメモリ３０６に格納され、ＣＰＵ３０５によって参照されるテーブルであり、ボリューム毎に管理される。
図８では、ボリュームＩＤが「００：００：０３」で特定されるボリュームに対応するＬＵの計算間隔テーブルを管理するための情報であり、ストレージシステム３０のボリューム毎に同様のテーブルが存在する。図８の例では、計算間隔は「３０分」と設定されていることを示している。
【００４８】
以上、図６から図８は、メモリ３０６に格納され、ＣＰＵ３０５によって参照される各種テーブルを示したが、これらは単なる例示である。また、テーブルの表現にて情報を説明したが、情報は、どのようなデータ構造で表現されていてもよい。
【００４９】
＜４．管理画面＞
図９は、実施例のボリューム選択画面の一例を示した図である。このボリューム選択画面９００は、管理対象のボリューム９０１を表示し、特定の少なくとも一つのボリュームを選択することができる。ボリューム選択画面９００は、標準偏差計算プログラム４０４の制御の下、管理クライアント２０の表示部に表示される。
【００５０】
図１０は、実施例の計算間隔入力画面の一例を示した図である。この計算間隔入力画面１０００は、計算間隔を設定するための画面である。図１０では、計算間隔が３０分と設定されている。計算間隔入力画面１０００は、標準偏差計算時刻監視プログラム４０５の制御の下、管理クライアント２０の表示部に表示される。管理画面１０００においてユーザが計算間隔を入力すると、標準偏差計算時刻監視プログラム４０５が、計算間隔テーブル４０３に計算間隔を格納する。
【００５１】
図９、図１０で示した管理画面は、図２、図３、図４で示した画面と同様、ストレージシステム３０のＮＩＣ３０１、３０３に接続されるコンソールに表示されても良い。
【００５２】
＜５．各種動作フロー＞
図１１は、実施例の計算間隔設定の処理フローを示した図である。図１０の計算間隔入力画面で計算間隔が入力されることで、処理が開始され(ステップＳ１１０１)、入力された計算間隔を標準偏差計算時刻監視プログラム４０５が計算間隔テーブル４０３記憶する（ステップＳ１１０２）。
【００５３】
図１２は、実施例のボリューム作成の処理フローを示した図である。ストレージシステム３０は、管理クライアント２０から新規ボリュームの作成依頼を受信することで開始され(ステップＳ１２０1)、ストレージ機能プログラム４００によって、新たにボリュームが作成される(ステップＳ１２０２)。ボリュームが作成されると、標準偏差計算プログラム４０４が標準偏差テーブル４０２を、作成したボリュームのＩＤに紐付けて作成する（ステップＳ１２０３）。ボリュームが作成された直後の標準偏差は「０」が入力される。作成したボリュームに対する仮想アドレス毎の書込み時間を、最終データ格納時刻更新プログラム４０６が図６に示した最終格納時刻テーブル４０１に記憶する。標準偏差計算プログラム４０４が最終格納時刻テーブル４０１に基づき、作成したボリュームに対する標準偏差を計算する（ステップＳ１２０４）。尚、計算した標準偏差は、標準偏差計算プログラム４０４によって、標準偏差テーブル４０２に計算時刻と共に格納される。
【００５４】
図１３は、実施例のボリューム削除の処理フローを示した図である。ストレージシステム３０は、管理クライアント２０からボリュームの削除依頼を受信することで開始され(ステップＳ１３０1)、ストレージ機能プログラム４００によって、ボリュームが削除される(ステップＳ１３０２)。ボリュームが削除されると、削除したボリュームに対応する最終データ格納時刻テーブル４０１、標準偏差テーブル４０２等も削除する(ステップＳ１３０３)。
【００５５】
図１４は、実施例の最終データ格納時刻更新プログラム４０６による最終データ格納時刻更新の処理フローを示した図である。対象ボリュームに対し、データの書込み要求があると、処理を開始する（ステップＳ１４０１）。ステップＳ１４０２では、最終データ格納時刻テーブル４０１の対象仮想アドレス番号の最終時刻に現在時刻を格納する。同じ仮想アドレスに対し、２回以上データ書き込み要求があると、最終の書込み時間によって最終データ格納時刻６２が更新される。これにより、対象ボリュームの全ての仮想アドレスに対し、最後にデータ更新された時間が最終データ格納時刻テーブル４０１によって管理される。
【００５６】
図１５は、実施例の標準偏差計算プログラム４０４によって実行される標準偏差計算の処理フローを示した図である。
標準偏差計算プログラム４０４は、管理クライアント２０から新規ボリュームの作成を受けるか、既存ボリュームに対する標準変化計算の要求を受けると、処理を開始する(ステップＳ１５０１)。管理クライアント２０から新規ボリュームの作成を受けるタイミングの他、管理クライアント２０から新規ボリュームの作成要求を受けて、ストレージ機能プログラム４００が新規ボリュームを作成したことの報告を受けるタイミングで開始しても良い。
【００５７】
ステップＳ１５０２で、標準偏差計算プログラム４０４が対象ボリュームのデータが格納されている仮想アドレス群を特定する。
【００５８】
ステップＳ１５０３で、標準偏差計算プログラム４０４が現在時刻＝ｔを取得する。
ステップＳ１５０４で、標準偏差計算プログラム４０４は対象仮想アドレスが１以上を判定し、ＹＥＳの場合ステップＳ１５０５に進み、ＮＯの場合ステップＳ１５１１に進む。
【００５９】
ステップＳ１５０５では、ステップＳ１５０５からステップＳ１５０８のステップを対象仮想アドレス分だけ繰り返すループ処理を開始する。
【００６０】
ステップＳ１５０６で、対象仮想アドレスの最終書き込み時刻を抽出する。このステップは、図１４で説明した、対象仮想アドレスの最終時刻（図６の最終データ格納時刻６２）を読み出すことによって行われる。尚、ステップＳ１５０１で処理が開始された対象ボリュームの全仮想アドレスに対する書込み処理は、図１４で説明した通り、最終データ格納時刻更新プログラム４０６によって、仮想アドレス番号と共に最終データ格納時刻が図６のように格納されており、ステップＳ１５０６では、図６に示した最終データ格納時刻が抽出される。
【００６１】
ステップＳ１５０７では、最終データ格納時刻更新プログラム４０６が抽出した時刻をＵＮＩＸ時刻に変換する。尚、図６に格納された最終データ格納時刻が既に、ＵＮＩＸ時刻に変換済みで時刻である場合には、ステップＳ１５０７の処理を省略できる。
【００６２】
ステップＳ１５０８は、データの書込みがあった他の仮想アドレスがある場合、ステップＳ１５０５に戻り、ステップＳ１５０６、Ｓ１５０７の処理を繰り返す。
【００６３】
データの書込みがあった全ての仮想アドレスについて処理が終了すると、ステップＳ１５０９に進み、ステップＳ１５０７で、対象ボリュームについて、変換した値の標準偏差を、数１によって計算する。
【００６４】
次に、ステップＳ１５１０で、現在時刻tおよびステップＳ１５０９で計算した標準偏差を、図７で示した対象ボリュームの標準偏差テーブル４０２に格納する。
【００６５】
尚、対象仮想アドレスが０個の場合、ステップＳ１５１１では、現在時刻tおよび対応する標準偏差として０を対象ボリュームの標準偏差テーブル４０２に格納する。
【００６６】
図１６は、実施例の標準偏差計算プログラム４０４による標準偏差計算の定期実行の処理フローを示した図である。処理が開始されると（ステップＳ１６０１）、標準偏差計算プログラム４０４は、計算間隔テーブル４０３に格納されている計算間隔を取得する(ステップＳ１６０２)。
【００６７】
次に、標準偏差計算を行う対象ボリュームの数だけ、ステップＳ１６０３からステップＳ１６０７の処理を繰り返すループ処理を開始する(ステップＳ１６０３)。
【００６８】
ステップＳ１６０４で、対象ボリュームの標準偏差テーブル４０２内で最も新しい計算時刻を取得する。図７の標準偏差テーブル４０２の例では、「２０１８−０１−０５Ｔ１２：４０：１０Ｚ」を取得する。
【００６９】
次に、ステップＳ１６０５で、計算時刻＋標準偏差計算間隔＞＝現在時刻であるかを判定する。つまり、対象ボリュームについて、標準偏差を計算する時間が経過したかを判断する。ステップＳ１６０５でＮＯの場合、ステップＳ１６０７に進み、ステップＳ１６０２からの処理を繰り返す。ステップＳ１６０５でＹＥＳの場合、ステップＳ１６０６に進み、対象ボリュームについて、数１により標準偏差計算を実行する。
【００７０】
図１７は、実施例の時刻提案プログラム４０８によるデータ改竄時刻特定の処理フローを示した図である。
処理が開始されると、ステップＳ１７０１で、ユーザはボリュームの選択を行い、選択されたボリュームを時刻提案プログラム４０８に入力する。次に、変数ｎに０を入力する。
【００７１】
ステップＳ１７０３で、対象ボリュームの標準偏差テーブルの最新の値の位置を［ａ］とした場合の標準偏差［ａ−ｎ−１］が存在するかを判定する。つまり、対象ボリュームの標準偏差テーブルに、二つ以上のエントリー（計算開示時刻と標準偏差）が存在するかを判定する。図７の場合、エントリーが３つ存在するので、ＹＥＳとなる。対象エントリーが２つ未満の場合、処理は終了する。
【００７２】
対象エントリーが二つ以上存在する場合、ステップＳ１７０４に進み、標準偏差［ａ−ｎ］ ＝＜ 標準偏差［ａ−ｎ−１］を判定する。つまり、標準偏差の値が、時間と共に減少しているかを判定する。判定結果、ＹＥＳの場合ステップＳ１７０６に進み、ＮＯの場合ステップＳ１７０５に進む。つまり、図２のグラフ２０２のリストア非推奨エリア２０３のように、標準偏差の値が右肩下がりである場合（ＹＥＳの場合）、ステップＳ１７０６に進み、標準偏差格納テーブルの［ａ−ｎ−１］の計算時刻を取得する。ステップＳ１７０７で、取得した時刻をデータ改竄が始まる前のリストア時間として提案する。
【００７３】
ステップＳ１７０５では、ｎに１を加え、次のエントリーを処理対象とする。
【００７４】
このように、標準偏差の傾きにより、データ改竄が開始された時期を特定することで、リストア時間をユーザに提供することができる。
【００７５】
＜標準偏差テーブル＞
図１８から図２１を用いて、対象ボリュームの各段階における標準偏差テーブルについて説明する。
【００７６】
図１８は、実施例の標準偏差テーブル（ボリューム作成直後）を示した図であり、図１９は、実施例の標準偏差テーブル（運用開始後）を示した図であり、図２０は、実施例の標準偏差テーブル（運用中）を示した図であり、図２１は、実施例の標準偏差テーブル（データ改竄後）を示した図である。
【００７７】
まず、図１８において、ボリューム作成直後の標準偏差テーブルを示す。計算開始時刻７２は、対象ボリュームの標準偏差の計算開始時刻を示す。計算開始時刻７２には、ボリューム作成時間が入力されても良い。ボリュームが作成された直後にはどの仮想アドレスにもデータが格納されていない状態、即ち、対象ボリュームに各仮想アドレスの書き込みがなく、書き込み時間が入力されていない状態であるので、標準偏差７３は「０」となる。
【００７８】
次に、図１９において、作成されたボリュームの運用が開始されると、一部の仮想アドレスに対し、書き込みが発生し、書き込み時間が管理されることとなり、徐々に書き込み時間のバラつきが生じる。計算開始時刻「２０１８−０１−０５Ｔ１２：４０：１０Ｚ」では、標準偏差「１４５」と計算されていることを示している。
【００７９】
図２０では、作成されたボリュームが運用されている期間（運用中）の標準偏差テーブルを示している。図１９と比較し、エントリー２００１から２００６が増えている。標準偏差も時間の経過とともに増加している状態である。
【００８０】
図２１は、データ改竄後の標準偏差テーブルを示している。エントリー２１０１までは、標準偏差は増加しているが、エントリー２１０２から減少に転じている。エントリー２１０３、エントリー２１０４では標準偏差の減少率は増加している。エントリー２１０１までは、対象ボリュームに対し、仮想アドレスに対する書込み時間のバラつきが増加しているため、通常の動作を行っていると推測され、エントリー２１０２の計算開示時刻「２０１８−０２−２３Ｔ１１：４０：１０Ｚ」で、標準偏差が減少しているから、この時点からウィルスにより、不正な書き込みが開示されていると推測される。
【００８１】
以上の通り、本実施例では、標準偏差の変化からエントリー２１０１の時点をリストア時刻としてユーザに提案することで、複数のスナップショットを繰り返し、選択し、検証する従来の技術より、改竄前のデータへの復旧を早期に行うことができる。
【００８２】
また、対象ボリュームの性能情報としてＩＯＰＳを監視することで、より詳細にデータ改竄時期を特定することができる。
【００８３】
さらに、本実施例では、ストレージシステムの対象ボリュームに対する書込み時間を利用した標準偏差を求めることで、データ改竄前の時間を特定できるので、追加のアプライアンスやサーバへのアプリケーションの導入等の必要がない。
【符号の説明】
【００８４】
１０：業務サーバ、
２０：管理クライアント、
３０：ストレージシステム、
３０１：ＮＩＣ、
３０２：ポート、
３０４：コントローラ、
３０５：ＣＰＵ、
３０６：メモリ、
３０７：記憶装置、
４００：ストレージ機能プログラム、
４０１：最終データ格納時刻テーブル、
４０２：標準偏差テーブル、
４０３：計算間隔テーブル、
４０４：標準偏差計算プログラム、
４０５：標準偏差計算時刻監視プログラム、
４０６：最終データ格納時刻更新プログラム、
４０７：性能情報監視プログラム、
４０８：時刻提案プログラム。
【図１】
2020177502.tif 000004
【図２】
2020177502.tif 000005
【図３】
2020177502.tif 000006
【図４】
2020177502.tif 000007
【図５】
2020177502.tif 000008
【図６】
2020177502.tif 000009
【図７】
2020177502.tif 000010
【図８】
2020177502.tif 000011
【図９】
2020177502.tif 000012
【図１０】
2020177502.tif 000013
【図１１】
2020177502.tif 000014
【図１２】
2020177502.tif 000015
【図１３】
2020177502.tif 000016
【図１４】
2020177502.tif 000017
【図１５】
2020177502.tif 000018
【図１６】
2020177502.tif 000019
【図１７】
2020177502.tif 000020
【図１８】
2020177502.tif 000021
【図１９】
2020177502.tif 000022
【図２０】
2020177502.tif 000023
【図２１】
2020177502.tif 000024
【手続補正書】
【提出日】令和2年2月17日(2020.2.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
請求項１に記載のストレージシステムにおいて、
前記コントローラは、
前記ボリュームの複数時点の複数のスナップショットを生成し、
前記複数のスナップショットの内、前記リストア時間の直前のスナップショットを選択
して、前記ボリュームのデータをリストアすることを特徴とするストレージシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
図１５は、実施例の標準偏差計算プログラム４０４によって実行される標準偏差計算の
処理フローを示した図である。
標準偏差計算プログラム４０４は、管理クライアント２０から新規ボリュームの作成を
受けるか、既存ボリュームに対する標準偏差計算の要求を受けると、処理を開始する(ス
テップＳ１５０１)。管理クライアント２０から新規ボリュームの作成を受けるタイミン
グの他、管理クライアント２０から新規ボリュームの作成要求を受けて、ストレージ機能
プログラム４００が新規ボリュームを作成したことの報告を受けるタイミングで開始して
も良い。