(57)【要約】  計算機システムは、プロセッサと、前記プロセッサにより実行されるプログラムを格納する揮発記憶装置と、データを格納する複数の不揮発記憶装置と、を含む。前記複数の不揮発記憶装置は、それぞれ、第１データを暗号処化及び復号化するための第１暗号鍵を保持する。前記複数の不揮発記憶装置における各不揮発記憶装置は、予め定められたルールに従って決定された暗号化又は非暗号化の状態において、前記第１データを前記複数の不揮発記憶装置における他の不揮発記憶装置に転送する。
2018008123.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサにより実行されるプログラムを格納する揮発記憶装置と、
データを格納する複数の不揮発記憶装置と、を含み、
前記複数の不揮発記憶装置は、それぞれ、第１データを暗号処化及び復号化するための第１暗号鍵を保持し、
前記複数の不揮発記憶装置における各不揮発記憶装置は、予め定められたルールに従って決定された暗号化又は非暗号化の状態において、前記第１データを前記複数の不揮発記憶装置における他の不揮発記憶装置に転送する、計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記複数の不揮発記憶装置における第１不揮発記憶装置は、
暗号化された状態で受信した前記第１データを前記第１暗号鍵により復号化し、
復号化した前記第１データを圧縮した後に前記第１暗号鍵により暗号化し、
圧縮及び暗号化された前記第１データを格納する、計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記ルールは、前記複数の不揮発記憶装置の各不揮発記憶装置から前記揮発記憶装置へ、非暗号化状態で前記第１データを転送することを示す、計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記ルールは、転送されるデータの圧縮又は非圧縮の状態を示し、
前記複数の不揮発記憶装置における各不揮発記憶装置は、前記ルールに従って決定された圧縮又は非圧縮の状態において、前記第１データを前記複数の不揮発記憶装置における他の不揮発記憶装置に転送する、計算機システム。
【請求項５】
請求項１に記載の計算機システムであって、
前記複数の不揮発記憶装置の各不揮発記憶装置は、データを格納するアドレス範囲それぞれに対して決定された暗号化又は非暗号化の状態において、前記アドレス範囲それぞれのデータを、前記複数の不揮発記憶装置における他の不揮発記憶装置に転送する、計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記複数の不揮発記憶装置の各不揮発記憶装置は、前記アドレス範囲それぞれのデータの暗号化及び復号化において、前記アドレス範囲それぞれに対応付けられた暗号鍵を使用する、計算機システム。
【請求項７】
請求項５に記載の計算機システムであって、
前記アドレス範囲それぞれに対するボリュームのアドレス範囲に対して、データ転送における暗号化又は非暗号化の状態が予め設定されている、計算機システム。
【請求項８】
請求項１に記載の計算機システムであって、
前記プロセッサは、ボリュームに格納されているデータのＩ／Ｏ頻度に基づく階層制御を実行し、
前記複数の不揮発記憶装置は、それぞれ、一つの階層に属し、
前記第１データは、前記階層制御によって、前記複数の不揮発記憶装置間において転送される、計算機システム。
【請求項９】
請求項８に記載の計算機システムであって、
前記プロセッサは、
前記複数の不揮発記憶装置における暗号鍵の変更の開始前に、前記階層制御によるデータ転送を停止し、
前記暗号鍵を変更する全ての不揮発記憶装置において前記暗号鍵が変更された後に、前記階層制御によるデータ転送を再開する、計算機システム。
【請求項１０】
計算機システムにおけるデータ転送方法であって、
前記計算機システムは、
プロセッサにより実行されるプログラムを格納する揮発記憶装置と、
複数の不揮発記憶装置と、を含み、
前記方法は、
前記複数の不揮発記憶装置それぞれに、第１データを暗号処化及び復号化するための第１暗号鍵を設定し、
予め定められたルールに従って決定された暗号化又は非暗号化の状態において、前記第１データを、前記複数の不揮発記憶装置における第２不揮発記憶装置から、前記複数の不揮発記憶装置における第１不揮発記憶装置に転送する、方法。
【請求項１１】
請求項１０に記載の方法であって、
前記第２不揮発記憶装置から前記第１不揮発記憶装置に、暗号化された状態で前記第１データを転送し、
前記第１不揮発記憶装置において
受信した前記第１暗号鍵により復号化し、
復号化した前記第１データを圧縮した後に前記第１暗号鍵により暗号化し、
圧縮及び暗号化された前記第１データを格納する、方法。
【請求項１２】
請求項１０に記載の方法であって、
前記ルールは、前記複数の不揮発記憶装置の各不揮発記憶装置から前記揮発記憶装置へ、非暗号化状態で前記第１データを転送することを示す、方法。
【請求項１３】
請求項１０に記載の方法であって、
前記ルールは、転送されるデータの圧縮又は非圧縮の状態を示し、
前記方法は、前記複数の不揮発記憶装置における各不揮発記憶装置から、前記ルールに従って決定された圧縮又は非圧縮の状態において、前記第１データを前記複数の不揮発記憶装置における他の不揮発記憶装置に転送する、方法。
【請求項１４】
請求項１０に記載の方法であって、
前記複数の不揮発記憶装置は、それぞれ、階層制御における一つの階層に属し、
前記方法は、
前記第１データのＩ／Ｏ頻度に応じて前記第１データの移動先の階層を決定し、
前記移動先の階層に属する前記第２不揮発記憶装置に前記第１データを転送する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムにおける暗号処理を伴うデータ転送に関する。
【背景技術】
【０００２】
近年、ＤＲＡＭのような揮発メモリデバイスに加え、高速の不揮発メモリデバイス（以下高速メモリデバイス）をサーバへ搭載する取り組みが進んでいる。これは、デバイスの低レイテンシ性を活かし、アプリケーションの性能向上を図る。たとば、サーバは、外部のストレージシステムを利用すると共に、高速メモリデバイスをストレージシステムへのキャッシュや記憶階層構造における上位のＴｉｅｒ領域として利用する。【０００３】
高速メモリの例としては、フラッシュメモリの他に、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）等のＳＣＭ（Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｍｅｍｏｒｙ）をあげることができる。【０００４】
しかし、不揮発メモリデバイスは電源がＯＦＦされても情報を保持し続けるため、デバイスの抜き取りによる情報流出や、故障デバイスの処分時の情報流出等の、リスクが存在する。そのため、不揮発メモリに格納されるデータを暗号化することが必要である。【０００５】
たとえば、装置内の記憶デバイスによる暗号処理が、米国特許出願公開第２０１５／００６７３４９号に開示されている。装置は、記憶デバイス及びホストデバイスを含む。記憶デバイスは、書き込み及び読み出し操作のそれぞれの間に、ユーザデータを暗号化および暗号解読するように構成される。ホストデバイスは、記憶デバイスに通信可能に結合される。ホストデバイスは、第１の数の仮想バンドを第２の数の実バンドへ集信することにより書き込み及び読み出し操作を実行するように構成し、第２の数は第１の数より小さい（要約参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１５／００６７３４９号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、サーバＳＣＭデバイス及び外部ストレージシステムのように、システム内の不揮発記憶装置それぞれが、独自に暗号処理を行う構成において、不揮発記憶装置間のデータ転送は、データの復号化と暗号化を繰り返すことを必要とする。そのため、システムにおける暗号処理負荷が大きくなる。
【課題を解決するための手段】
【０００８】
一例において、計算機システムは、プロセッサと、前記プロセッサにより実行されるプログラムを格納する揮発記憶装置と、データを格納する複数の不揮発記憶装置と、を含む。前記複数の不揮発記憶装置は、それぞれ、第１データを暗号処化及び復号化するための第１暗号鍵を保持する。前記複数の不揮発記憶装置における各不揮発記憶装置は、予め定められたルールに従って決定された暗号化又は非暗号化の状態において、前記第１データを前記複数の不揮発記憶装置における他の不揮発記憶装置に転送する。
【発明の効果】
【０００９】
本発明の一態様によれば、複数の不揮発記憶装置を含むシステムにおいて、暗号処理を伴うデータ転送を効率化できる。上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る計算機システムの構成例を示す。
【図２】不揮発記憶デバイスの構成例を示す。
【図３】管理装置のソフトウェア構成例を示す。
【図４】暗号鍵の及びルールの設定を模式的に示す。
【図５】処理サーバ装置及びストレージシステムのデバイスに実装されている機能の例を示す。
【図６】処理サーバ装置におけるルール（格納ルール及び転送ルール）を示す。
【図７】処理サーバ装置における他のルールを示す。
【図８】処理サーバ装置における他のルールを示す。
【図９】処理サーバ装置における他のルールを示す。
【図１０】鍵管理テーブルの構成例を示す。
【図１１】格納ルールテーブルの構成例を示す。
【図１２】転送ルールテーブルの構成例を示す。
【図１３】鍵管理プログラム及びルール管理プログラムによる、鍵設定及びルール設定の例を示す。
【図１４】階層制御によるデータ転送の例を示す。
【図１５】鍵管理プログラム及びルール管理プログラムによる、鍵設定及びルール設定の他の例を示す。
【図１６】階層制御によるデータ転送の例を示す。
【図１７】暗号鍵変更のフローチャートの例を示す。
【図１８】暗号鍵の削除によるデータ削除のフローチャートの例を示す。
【図１９】格納ルールの決定におけるユーザによる判定のフローチャート例を示す。
【図２０】ユーザにより鍵情報の設定のためのＧＵＩ画像例を示す。
【図２１】ユーザによるルール情報の設定のためのＧＵＩ画像例を示す。
【図２２】階層制御における階層の設定のためのＧＵＩ画像例を示す。
【図２３】他のシステム構成例を示す。
【図２４】他のシステム構成例を示す。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
【００１２】
さらに、本発明の実施形態は、後述するように、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェアで実装してもよいし、またはソフトウェアとハードウェアの組み合わせで実装してもよい。
【００１３】
以後の説明では、管理用の情報をテーブル形式で説明するが、管理用の情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やディレクトリ構造等その他の方法で表現されていてもよい。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことがある。
【００１４】
以下では「プログラム」を主語（動作主体）として本発明の実施形態における各処理について説明を行う場合がある。プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。
【００１５】
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部（手段）として動作する。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや非一時的記憶メディアによって各計算機にインストールされてもよい。
【００１６】
図１は、実施形態に係る計算機システムの構成例を示す。計算機システムは、管理装置１２、処理サーバ装置１３、及びストレージシステム１４を含む。管理ネットワーク１５及びストレージネットワーク１６の種類は任意であり、これらが一つのネットワークに含まれていてもよい。
【００１７】
管理装置１２は、管理ネットワーク１５を介して、処理サーバ装置１３及びストレージシステム１４と通信し、それらを管理する。管理装置１２は、処理サーバ装置１３及びストレージシステム１４に対して、運用上必要な各種設定や管理のための命令を送信する。
【００１８】
管理装置１２は、１又は複数の計算機を含み、図１の例においては、一般的には計算機構成を有する。管理装置１２は、不図示の内部ネットワーク（例えばバス）を介して接続された、プロセッサであるＣＰＵ１２１、揮発記憶デバイス１２２、不揮発記憶デバイス１２３、及び管理ネットワーク１５に接続するためのインタフェース（Ｉ／Ｆ）１２４を含む。ＣＰＵ１２１は、主記憶である揮発記憶デバイス１２２に格納されたプログラムを実行することで所定の機能を実現する。
【００１９】
揮発記憶デバイス１２２は、ＣＰＵ１２１が実行するプログラム及びそれらプログラムが使用するデータを格納する。不揮発記憶デバイス１２３は、補助記憶であって、揮発記憶デバイス１２２にロードされるプログラム及びデータを格納する。
【００２０】
処理サーバ装置１３は、不図示のクライアントに所定のサービスを提供する。例えば、処理サーバ装置１３は、データベースシステムとして動作する。処理サーバ装置１３は、プロセッサであるＣＰＵ１３１、揮発記憶デバイス１３２、第１不揮発記憶デバイス１３３及び第２不揮発記憶デバイス１３４を含む複数の不揮発記憶デバイス、及びＩ／Ｆ１３５、１３６を含む。これらは、不図示の内部ネットワークで接続される。Ｉ／Ｆ１３５は管理ネットワーク１５に接続するためのＩ／Ｆであり、Ｉ／Ｆ１３６はストレージネットワーク１６に接続するためのＩ／Ｆである。
【００２１】
ＣＰＵ１３１は、主記憶である揮発記憶デバイス１３２に格納されたプログラムを実行することで所定の機能を実現する。たとえば、ＣＰＵ１３１は、データベース管理システムプログラムや、ボリューム管理プログラムを実行する。揮発記憶デバイス１３２は、ＣＰＵ１３１が実行するプログラム及びそれらプログラムが使用するデータを格納する。揮発記憶デバイス１３２は、不揮発記憶デバイスのデータを一時的に格納する、キャッシュ領域を含んでもよい。
【００２２】
処理サーバ装置１３の不揮発記憶デバイスは同一性能（種類）でもよく、異なる性能（種類）の不揮発記憶デバイスを含んでもよい。たとえば、第１不揮発記憶デバイス１３３は、ストレージクラスメモリ（ＳＣＭ）デバイスであり、第２不揮発記憶デバイス１３４は、フラッシュメモリデバイスである。
【００２３】
処理サーバ装置１３は、例えば、インメモリ型データベースであり、不揮発記憶デバイスは、データベースのデータ（ユーザデータ）を格納する。少なくとも一部の不揮発記憶デバイスは、ユーザデータの最終的格納場所である。特定の不揮発記憶デバイスは、ユーザデータを一時的に格納するキャッシュとして動作してもよい。ユーザデータはデータベース又は他のアプリケーションが使用するデータである。
【００２４】
ストレージシステム１４は、処理サーバ装置１３の外部ストレージとして動作する。処理サーバ装置１３は、ストレージネットワーク１６を介して、ストレージシステム１４にアクセスする。ストレージシステム１４は、例えば、アクセス頻度の低いデータ、古いデータ、又はバックアップデータ等を格納する。
【００２５】
ストレージシステム１４は、プロセッサであるＣＰＵ１４１、揮発記憶デバイス１４２、第１不揮発記憶デバイス１４３及び第２不揮発記憶デバイス１４４を含む複数の不揮発記憶デバイス、及びＩ／Ｆ１４５、１４６を含む。これらは、不図示の内部ネットワークで接続される。Ｉ／Ｆ１４５は管理ネットワーク１５に接続するためのＩ／Ｆであり、Ｉ／Ｆ１４６はストレージネットワーク１６に接続するためのＩ／Ｆである。
【００２６】
ＣＰＵ１４１は、主記憶である揮発記憶デバイス１４２に格納されたプログラムを実行することで所定の機能を実現する。たとえば、ＣＰＵ１４１は、処理サーバ装置１３からのアクセス要求（リード要求／ライト要求）を処理する。揮発記憶デバイス１４２は、ＣＰＵ１３１が実行するプログラム及びそれらプログラムが使用するデータを格納する。揮発記憶デバイス１４２は、データを一時的に格納するキャッシュ領域を含んでもよい。
【００２７】
ストレージシステム１４の不揮発記憶デバイスは同一性能（種類）でもよく、異なる性能（種類）の不揮発記憶デバイスを含んでもよい。たとえば、第１不揮発記憶デバイス１４３は、フラッシュメモリデバイスであり、第２不揮発記憶デバイス１４４は、磁気ディスクデバイスである。
【００２８】
図２は、不揮発記憶デバイスの構成例を示す。不揮発記憶デバイスは、コントローラ３８１と不揮発メディア３８８とを含む。コントローラ３８１は、プロセッサ３８２、メモリ３８３、ロジック回路３８４、Ｉ／Ｆ３８５、３８６、及びそれらを接続する内部ネットワーク３８７を含む。Ｉ／Ｆ３８５はホストデバイスとの通信のためのＩ／Ｆであり、Ｉ／Ｆ３８６は不揮発メディア３８８との通信のためのＩ／Ｆである。
【００２９】
プロセッサ３８２は、主記憶であるメモリ３８３に格納されたプログラムに従って動作し、所定の機能を実現する。たとえば、プロセッサ３８２は、Ｉ／Ｆ３８５を介して受信したアクセス要求（リード要求／ライト要求）を処理する。ロジック回路３８４は、特定の処理を実行し、たとえば、データの暗号化／復号化や圧縮／伸長を実行する。特定機能がプロセッサ３８２とロジック回路３８４のいずれに実装されるかは設計に依存する。
【００３０】
図３は、管理装置１２のソフトウェア構成例を示す。揮発記憶デバイス１２２は、鍵管理プログラム２２１及びルール管理プログラム２２２を格納する。揮発記憶デバイス１２２は、さらに、鍵管理テーブル２２３、格納ルールテーブル２２４、及び転送ルールテーブル２２５を格納する。これらプログラム及びテーブルは、例えば、不揮発記憶デバイス１２３からロードされる又は外部からダウンロードされる。
【００３１】
鍵管理プログラム２２１は、処理サーバ装置１３及びストレージシステム１４が使用する暗号鍵を管理し、処理サーバ装置１３及びストレージシステム１４に暗号鍵を設定する。ルール管理プログラム２２２は、処理サーバ装置１３及びストレージシステム１４におけるデータ格納時の暗号処理及びデータ転送時の暗号処理のルールを管理し、処理サーバ装置１３及びストレージシステム１４にルールを設定する。
【００３２】
ＣＰＵ１２１は、たとえば、鍵管理プログラム２２１に従って動作することで鍵管理部（鍵管理手段）として機能し、ルール管理プログラム２２２に従って動作することでルール管理部（ルール管理手段）として機能する。したがって、管理装置１２は、鍵管理装置であり、ルール管理装置でもある。ＣＰＵ１２１は、このほか、ボリューム管理プログラムやＯＳ等の不図示のプログラムを実行する。
【００３３】
鍵管理テーブル２２３は、処理サーバ装置１３及びストレージシステム１４で使用される暗号鍵の情報を保持する。格納ルールテーブル２２４は、処理サーバ装置１３及びストレージシステム１４におけるデータ格納時の暗号処理（データの暗号化／非暗号化の状態）のルールを示す。転送ルールテーブル２２５は、処理サーバ装置１３及びストレージシステム１４におけるデータ転送時の暗号処理（データの暗号化／非暗号化の状態）のルールを保持する。
【００３４】
図４は、暗号鍵の及びルールの設定を模式的に示す。鍵管理プログラム２２１は、処理サーバ装置１３及びストレージシステム１４において、暗号処理を実行するデバイスそれぞれに、必要な暗号鍵を設定する。ルール管理プログラム２２２は、処理サーバ装置１３及びストレージシステム１４において、記憶デバイス間のデータ転送を制御するデバイスに必要なルールを設定する。後述するように、例えば、プロセッサが記憶デバイス間のデータ転送を制御する場合、当該プロセッサのみがルールを参照してもよい。
【００３５】
図４の例において、処理サーバ装置１３のＣＰＵ１３１（実行されるプログラム）、第１不揮発記憶デバイス１３３、第２不揮発記憶デバイス１３４、及びＩ／Ｆ１３６のそれぞれに、暗号鍵及びルールが設定される。さらに、ストレージシステム１４のＣＰＵ１４１（アプリケーションプログラム）、第１不揮発記憶デバイス１４３、第２不揮発記憶デバイス１４４、及びＩ／Ｆ１４６のそれぞれに、暗号鍵及びルールが設定される。これらは、暗号機能を有しており、本例は暗号機能を有する全てのデバイスに鍵及びルールを設定する。
【００３６】
鍵管理プログラム２２１は、同一のユーザデータ、つまり、同一アドレスのユーザデータのために同一の鍵を、当該データを暗号化／復号化する全てのデバイスに与える。このアドレスは、ユーザデータに一対一に対応するアドレスであり、例えば、ボリュームに対して定義されているアドレス空間のアドレスである。なお、暗号アルゴリズムは全デバイスに共通である。
【００３７】
これにより、デバイスがそれぞれ、同一データを暗号化／復号化することができる。なお、使用されない鍵がデバイスに設定される必要はなく、暗号機能を有していても暗号処理（暗号／復号）を行わないデバイスに鍵が設定される必要はない。
【００３８】
設定されるルールは、データ転送におけるルールとデータ格納におけるルールとを含む。転送ルールは、データ転送におけるデータの状態が暗号文（暗号化データ）又は平文（非暗号化データ）のいずれであるかを示す。格納ルールは、データの格納におけるデータの状態が、暗号文（暗号化データ）又は平文（非暗号化データ）のいずれであるかを示す。一つデバイスには、一方又は双方のルールが設定される。ルールにより、セキュリティと処理効率が両立し得る。
【００３９】
なお、複数の不揮発記憶デバイスが一つの不揮発記憶装置を構成し、統合コントローラが複数の不揮発記憶デバイスそれぞれへのアクセスを制御してもよい。統合コントローラが暗号化機能を有する場合、暗号鍵及びルールが統合コントローラに設定される。ここで、一つの記憶デバイス及びストレージシステムは、それぞれ、記憶装置である。
【００４０】
また、暗号／復号、圧縮／伸張など処理機能を持たない不揮発記憶デバイスが搭載されてもよく、その場合はＣＰＵまたは他の不揮発記憶デバイスがデータ転送におけるルールとデータ格納におけるルールを用いて、処理機能を持たない不揮発記憶デバイスの代わりに処理を実施できるようにしてもよい。
【００４１】
図５は、処理サーバ装置１３及びストレージシステム１４のデバイスに実装されている機能の例を示す。処理サーバ装置１３において、ＣＰＵ１３１（実行されるプログラム）、第１不揮発記憶デバイス１３３、第２不揮発記憶デバイス１３４、及びＩ／Ｆ１３６は、それぞれ、圧縮／伸長、及び暗号／復号を実行する。圧縮は、ビット演算による圧縮及び重複排除による圧縮を含む。なお、圧縮／伸長機能は省略されてもよい。
【００４２】
ＣＰＵ１３１は、さらに、階層制御を実行する。階層制御は、複数種類の記憶デバイスを、近い性能を持つデバイスに分類し、複数の階層（記憶階層）を構成する。階層間の関係は性能の上下関係により定義される。外部ストレージであるストレージシステム１４内の記憶デバイスは、最下位階層として管理されてもよいし、ストレージシステム１４の性能に応じた階層に設定されてもよい。
【００４３】
階層制御は、例えば、データのアクセス（Ｉ／Ｏ）頻度に応じてデータを適切な記憶デバイス（階層）に自動的に格納することでシステム性能を向上させる。階層制御は、所定単位で記憶領域を管理し、一定の周期で、Ｉ／Ｏ頻度が高いページを高速な記憶デバイスで構成される上位階層へ移動し、Ｉ／Ｏ頻度が低いページを低速な記憶デバイスで構成される下位階層に移動する。
【００４４】
例えば、階層制御は、複数の論理ボリュームからなるプールを構成する。各論理ボリュームは、たとえば、パリティグループを構成する複数不揮発記憶デバイスの記憶領域が割り当てられている。上述のように、論理ボリュームは、複数の階層に区分される。階層制御は仮想ボリュームを構成し、仮想ボリュームのライトに応じて所定単位の記憶領域（ページ）をプールから割り当てる。
【００４５】
階層制御は、ページのＩ／Ｏ頻度に応じて、ページのデータの階層を決定し、必要に応じて当該データを他の階層の論理ボリュームに移動する。したがって、ページデータが、ある階層の記憶デバイスから他の階層の記憶デバイスに転送される。本実形態により、階層制御による頻繁なデータ転送において、暗号処理を伴う効率的なデータ転送を行うことができる。なお、本実施形態は、階層制御と異なる目的のデータ転送にも適用できる。
【００４６】
ストレージシステム１４において、ＣＰＵ１４１（実行されるプログラム）、第１不揮発記憶デバイス１４３、第２不揮発記憶デバイス１４４、及びＩ／Ｆ１４６は、それぞれ、圧縮／伸長、及び暗号／復号を実行する。圧縮は、ビット演算による圧縮及び重複排除による圧縮を含む。
【００４７】
ＣＰＵ１４１は、さらに、階層制御を実行する。階層制御は、処理サーバ装置１３について説明した通りであり、仮想ボリュームを処理サーバ装置１３に適用し、仮想ボリュームに対して、複数の論理ボリュームからなるプールから動的に単位領域を割り当てる。
【００４８】
図６〜図９は、ルールの例を示す。図６は、処理サーバ装置１３におけるルール（格納ルール及び転送ルール）を示す。当該ルールは以下のことを示す。揮発記憶デバイス１３２は、平文（非圧縮）を格納する。つまり、ＣＰＵ１４１（アプリケーション）は、暗号化することなく、データを不揮発記憶デバイスに格納する。これにより、ＣＰＵ１４１の処理負荷を低減する。
【００４９】
揮発記憶デバイス１３２と第１不揮発記憶デバイス１３３との間で、平文が転送される。第１不揮発記憶デバイス１３３は、暗号化された非圧縮文を格納する。第１不揮発記憶デバイス１３３と第２不揮発記憶デバイス１３４との間において、暗号化された非圧縮文が転送される。第２不揮発記憶デバイス１３４は、暗号化された非圧縮文を格納する。
【００５０】
図６に示すように、第１不揮発記憶デバイス１３３は、揮発記憶デバイス１３２から転送された平文を暗号化し、暗号文を格納する。第１不揮発記憶デバイス１３３は、暗号文を復号化することなく、第２不揮発記憶デバイス１３４へ転送する。第２不揮発記憶デバイス１３４は、受信した暗号文を、そのまま格納する。
【００５１】
また、第２不揮発記憶デバイス１３４は、暗号文を復号化することなく、第１不揮発記憶デバイス１３３へ転送する。第１不揮発記憶デバイス１３３は、受信した暗号文を、そのまま格納する。第１不揮発記憶デバイス１３３は、暗号文を復号化して、揮発記憶デバイス１３２に転送する。揮発記憶デバイス１３２は、受信した平文をそのまま格納する。
【００５２】
図７は、処理サーバ装置１３における他のルールを示す。当該ルールは以下のことを示す。揮発記憶デバイス１３２は、平文（非圧縮）を格納する。揮発記憶デバイス１３２と第１不揮発記憶デバイス１３３との間で、平文が転送される。第１不揮発記憶デバイス１３３は、暗号化された非圧縮文を格納する。第１不揮発記憶デバイス１３３と第２不揮発記憶デバイス１３４との間で、暗号化された非圧縮文が転送される。これにより、セキュリティを向上する。第２不揮発記憶デバイス１３４は、暗号化された圧縮文を格納する。
【００５３】
図７に示すように、第１不揮発記憶デバイス１３３は、揮発記憶デバイス１３２から転送された平文を所定の暗号鍵で暗号化し、暗号文を格納する。第１不揮発記憶デバイス１３３は、暗号文を復号化することなく、第２不揮発記憶デバイス１３４へ転送する。
【００５４】
第１不揮発記憶デバイス１３３と第２不揮発記憶デバイス１３４とは、同一の暗号鍵を保持している。そのため、第２不揮発記憶デバイス１３４は、受信した暗号文をその暗号鍵で復号化することができる。第２不揮発記憶デバイス１３４は、受信した暗号文を復号化し、圧縮し、さらに、同一の暗号鍵で暗号化し、格納する。
【００５５】
また、第２不揮発記憶デバイス１３４は、格納されていたデータを復号化、伸長、さらに同一の暗号鍵で暗号化して、第１不揮発記憶デバイス１３３に転送する。第１不揮発記憶デバイス１３３は、受信した暗号文をそのまま格納する。第１不揮発記憶デバイス１３３は、暗号文を復号化して、揮発記憶デバイス１３２に転送する。揮発記憶デバイス１３２は、受信した平文をそのまま格納する。
【００５６】
暗号化された非圧縮文を受信した記憶デバイスが、復号化した上で圧縮することで、データを効率的に圧縮することができる。さらに、圧縮文を暗号化して格納することで、セキュリティを向上させる。
【００５７】
図８は、処理サーバ装置１３における他のルールを示す。当該ルールは以下のことを示す。揮発記憶デバイス１３２は、平文（非圧縮）を格納する。揮発記憶デバイス１３２と第１不揮発記憶デバイス１３３との間で、平文が転送される。第１不揮発記憶デバイス１３３は、暗号化された圧縮文を格納する。第１不揮発記憶デバイス１３３と第２不揮発記憶デバイス１３４との間で、平文（非圧縮）が転送される。第２不揮発記憶デバイス１３４は、暗号化された圧縮文を格納する。
【００５８】
図８に示すように、第１不揮発記憶デバイス１３３は、揮発記憶デバイス１３２から転送された平文を圧縮かつ暗号化し、暗号化された圧縮文を格納する。第１不揮発記憶デバイス１３３は、暗号文を復号化し、さらに伸長して、生成した平文を第２不揮発記憶デバイス１３４へ転送する。第２不揮発記憶デバイス１３４は、受信した平文を圧縮し、さらに暗号文して、暗号化された圧縮文を格納する。
【００５９】
また、第２不揮発記憶デバイス１３４は、格納されていたデータを復号化、さらに伸長して、生成した平文を、第１不揮発記憶デバイス１３３に転送する。第１不揮発記憶デバイス１３３は、受信した平文を圧縮し、さらに、暗号化して、暗号化された圧縮文を格納する。第１不揮発記憶デバイス１３３は、暗号文を復号化し、さらに伸長して、生成した平文を揮発記憶デバイス１３２に転送する。揮発記憶デバイス１３２は、受信した平文をそのまま格納する。
【００６０】
図９は、処理サーバ装置１３における他のルールを示す。当該ルールは以下のことを示す。揮発記憶デバイス１３２は、平文（非圧縮）を格納する。揮発記憶デバイス１３２と第１不揮発記憶デバイス１３３との間で、平文が転送される。第１不揮発記憶デバイス１３３は、暗号化された圧縮文を格納する。第１不揮発記憶デバイス１３３と第２不揮発記憶デバイス１３４との間で、暗号化された圧縮文が転送される。第２不揮発記憶デバイス１３４は、暗号化された圧縮文を格納する。
【００６１】
図９に示すように、第１不揮発記憶デバイス１３３は、揮発記憶デバイス１３２から転送された平文を圧縮かつ暗号化し、暗号化された圧縮文を格納する。第１不揮発記憶デバイス１３３は、暗号化された圧縮文を復号化することなく第２不揮発記憶デバイス１３４へ転送する。第２不揮発記憶デバイス１３４は、受信した暗号化された圧縮文を、そのまま格納する。これにより、各不揮発記憶デバイスで暗号化された圧縮文を格納し、そのための暗号化／復号化及び圧縮／伸長の回数を低減する。
【００６２】
また、第２不揮発記憶デバイス１３４は、暗号化された圧縮文を復号化することなく、第１不揮発記憶デバイス１３３に転送する。第１不揮発記憶デバイス１３３は、受信した暗号化された圧縮文を、そのまま格納する。第１不揮発記憶デバイス１３３は、暗号化された圧縮文を復号化し、さらに伸長して、生成した平文を揮発記憶デバイス１３２に転送する。揮発記憶デバイス１３２は、受信した平文をそのまま格納する。
【００６３】
第１不揮発記憶デバイス１３３及び第２不揮発記憶デバイス１３４は、同一の暗号鍵を保持している。一方の不揮発記憶デバイスにより暗号化されたデータを、他方の不揮発記憶デバイスが復号化できる。
【００６４】
そのため、データを復号化することなくデータを転送することができ、データの暗号化／復号化の回数を低減することができる。また、データ転送における暗号化／非暗号化の状態を任意に決定することができるので、システム内で最適なセキュリティを設定することができる。また、セキュリティを確保しつつ、記憶デバイスの圧縮機能を効果的に利用することができる。
【００６５】
図１０は、鍵管理テーブル２２３の構成例を示す。鍵管理テーブル２２３は、暗号鍵と暗号鍵が適用される範囲との関係を示す。図１０の例において、鍵管理テーブル２２３は、デバイス欄２３１、ボリューム（ＶＯＬ）欄２３２、アドレス範囲欄２３３、及び鍵欄２３４を有する。鍵欄２３４は暗号鍵の識別子を示す。デバイス欄２３１は暗号鍵が適用される記憶デバイスの識別子を格納する。
【００６６】
ＶＯＬ欄２３２は、暗号鍵が適用されるボリュームの識別子を示す。ボリュームは、ホストに提供されるボリュームであり、例えば仮想ボリュームである。他のテーブルにおいて示されるボリュームも同様である。アドレス範囲欄２３３はボリュームにおいて暗号鍵が適用されるアドレス範囲を示す。ボリュームの識別子とボリューム内論理アドレスとが、ボリュームＩ／Ｏアドレスを示す。
【００６７】
鍵管理テーブル２２３は、システム内の全ての暗号鍵の情報を保持する。各デバイスは、鍵管理テーブル２２３において使用する情報を少なくとも保持する。各デバイスは、鍵管理テーブル２２３全体を保持してもよい。鍵管理プログラム２２１は、デバイスそれぞれに、鍵管理テーブル２２３において必要な情報を配布する。
【００６８】
たとえば、記憶デバイスは、データのリード及びライトにおいて、コマンドにおいて指定された暗号鍵により暗号化／復号化を行う。記憶デバイスへのコマンドは、データのボリュームＩ／Ｏアドレスを示してもよい。記憶デバイスは、保持している鍵管理情情報と指定されたボリュームＩ／Ｏアドレスに基づいて、暗号鍵を同定する。
【００６９】
記憶デバイスは、当該記憶デバイスのデバイスＩ／ＯアドレスとボリュームＩ／Ｏアドレスとのマッピング情報を保持してもよい。デバイスＩ／Ｏアドレスは、記憶デバイス識別子と当該記憶デバイスにアクセスするときの論理アドレスとを示す。記憶デバイスは、コマンドで指定されたデバイスＩ／ＯアドレスからボリュームＩ／Ｏアドレスを決定できる。データを転送するデバイス（例えばＩ／Ｆ）も、同様に暗号鍵を決定できる。
【００７０】
図１１は、格納ルールテーブル２２４の構成例を示す。格納ルールテーブル２２４は、記憶デバイスにおいて格納されるデータの状態を示す。具体的には、格納ルールテーブル２２４は、データのボリュームＩ／Ｏアドレスと、格納されるデータの暗号化／非暗号化の状態及び圧縮／非圧縮の状態を示す。
【００７１】
図１１の例において、格納ルールテーブル２２４は、デバイス欄２４１、ボリューム（ＶＯＬ）欄２４２、アドレス範囲欄２４３、暗号欄２４４、及び圧縮欄２４５を有する。デバイス欄２４１は記憶デバイスの識別子を示す。ＶＯＬ欄２３２は、格納ルールが適用されるボリュームの識別子を示す。アドレス範囲欄２４２はボリュームにおけるアドレス範囲を示す。
【００７２】
暗号欄２４４は、各アドレス範囲が、暗号化されたデータ（暗号文）を格納するか、暗号化されていないデータ（平文）を格納するか、を示す。圧縮欄２４５は、各アドレス範囲が、圧縮されたデータを格納するか、圧縮されていないデータを格納するか、を示す。
【００７３】
格納ルールテーブル２２４は、システム内の全ての記憶デバイスの情報を保持する。各記憶デバイスは、格納ルールテーブル２２４における自装置に関する情報を少なくとも保持する。ルール管理プログラム２２２は、記憶デバイスに、格納ルールテーブル２２４における必要な情報を配布する。
【００７４】
記憶デバイスは、暗号鍵についての上記説明と同様に、データの格納状態を決定できる。例えば、コマンドが格納状態を指示してもよく、記憶デバイスは、コマンドにおいて指定されたボリュームＩ／Ｏアドレス及び格納ルールに基づいて、格納状態を決定してもよい。記憶デバイスは、保持しているマッピング情報を参照して、コマンドで指定されたデバイスＩ／ＯアドレスからボリュームＩ／Ｏアドレスを決定してもよい。
【００７５】
図１２は、転送ルールテーブル２２５の構成例を示す。転送ルールテーブル２２５は、デバイス間のデータ転送におけるデータの暗号化／非暗号化及び圧縮／非圧縮の状態を示す。
【００７６】
転送ルールテーブル２２５は、送信元欄２５１、ボリューム（ＶＯＬ）欄２５２、アドレス範囲欄２５３、送信先欄２５４、ボリューム（ＶＯＬ）欄２５５、アドレス範囲欄２５６、暗号欄２５７、及び圧縮欄２５８を有する。
【００７７】
送信元欄２５１はデータ送信元デバイスの識別子を示す。ＶＯＬ欄２５２は、データ送信元のボリュームの識別子を示す。アドレス範囲欄２５３は、データ送信元のボリューム内アドレス範囲を示す。送信先欄２５４はデータ送信先デバイスの識別子を示す。ＶＯＬ欄２５５は、データ送信先のボリュームの識別子を示す。アドレス範囲欄２５６は、データ送信先のボリューム内アドレス範囲を示す。
【００７８】
暗号欄２５７は、転送データの暗号化／非暗号化の状態を示す。つまり、転送データが暗号化されているか暗号化されていないかを示す。圧縮欄２５８は、転送データの圧縮／非圧縮の状態を示す。つまり、転送データが圧縮されているか圧縮されていないかを示す。
【００７９】
なお、転送ルールテーブルは追加の項目を設定できてもよい。たとえば、図では省略しているが、違う暗号鍵の部位に転送するときは、送信元の鍵で復号し、再度、送信先の鍵で暗号化することを明示するフラグを設定できてもよい。この場合、送信元又は送信先のどちらでこの処理を実施するかについても、指定する項目がテーブルにあってもよい。なお、送信元又は送信先の処理を実施する方は、両方の鍵が設定されていることとする。
【００８０】
転送ルールテーブル２２５は、システム内の全てのデバイスについての情報を保持する。各デバイスは、転送ルールテーブル２２５において、少なくとも、制御するデータ転送についてのルールの情報を保持する。各デバイスは、転送ルールテーブル２２５の全情報を保持してもよい。ルール管理プログラム２２２は、デバイスに、格納ルールテーブル２２４における必要な情報を配布する。
【００８１】
デバイスは、暗号鍵及び格納ルールについての上記説明同様に、転送データの状態を決定することができる。つまり、コマンドが状態を指定する、又は、デバイスがボリュームＩ／Ｏアドレスと転送ルールとに基づいて状態を決定する。ボリュームＩ／Ｏアドレスはコマンドで指定されてもよく、コマンドで指定されたデバイスＩ／Ｏアドレスから変換されてもよい。
【００８２】
なお、データの階層制御において、転送先と転送元のボリューム及びボリューム内アドレスは常に同一である。したがって、図１２に示す転送ルールテーブル２２５の例は、階層制御以外のデータ移動のためにも参照され得る。
【００８３】
本実施形態は、記憶デバイス内のアドレス範囲に対してルールや暗号鍵を決定する。これにより、記憶デバイスから独立してルールや暗号鍵を設定できる。特に、ボリュームのアドレス空間においてルールや暗号鍵を設定することが可能となる。ボリュームのアドレス空間におけるルールや暗号鍵の設定を受け付けることで、格納されるデータを使用するアプリケーションやデータの性質に応じて、ルールや暗号鍵を設定することができる。
【００８４】
図１３及び図１４を参照して、不揮発記憶デバイス間のデータ転送並びにそのための鍵及びルールの設定の例を説明する。本例は、図７に示すルールに対応する。本例において、データ転送を行う二つの不揮発記憶デバイスが、設定された転送ルール及び格納ルールを参照し、データ転送及びデータ格納を制御する。
【００８５】
図１３は、鍵管理プログラム２２１及びルール管理プログラム２２２による、鍵設定及びルール設定の例を示す。鍵管理プログラム２２１は、処理サーバ装置１３の第１、第２不揮発記憶デバイス１３３、１３４、さらに、ストレージシステムの第１、第２不揮発記憶デバイス１４３、１４４に、鍵を設定する。本例において、鍵管理プログラム２２１は、デバイスに、対応する鍵と鍵管理情報とを配布する。
【００８６】
ルール管理プログラム２２２は、処理サーバ装置１３の第１、第２不揮発記憶デバイス１３３、１３４、さらに、ストレージシステム１４の第１、第２不揮発記憶デバイス１４３、１４４に、ルールを設定する。具体的には、ルール管理プログラム２２２は、デバイスに、対応する格納ルール及び転送ルールを配布する。各デバイスは、そのコントローラの揮発又は不揮発のメモリに、受信した鍵、鍵管理情報、及びルールを格納する。
【００８７】
なお、処理機能を持たない不揮発記憶デバイスに関する鍵、鍵管理情報、各ルールテーブルはＣＰＵが処理できるように、処理機能を持たない不揮発記憶デバイスに格納するか又は別の記憶デバイスに記憶するか、他の不揮発記憶デバイスで処理できるように他の不揮発記憶デバイスのコントローラの不揮発又は不揮発メモリに格納する。この場合、処理機能を持たない不揮発記憶デバイスに対する設定であることがわかるような項目をそれぞれのテーブルに持たせてもよい。
【００８８】
図１４は、階層制御によるデータ転送の例を示す。図１４の例において、データは処理サーバ装置１３又はストレージシステム１４における第１不揮発記憶デバイス１３３／１４３から第２不揮発記憶デバイス１３４／１４４へ転送される。第１不揮発記憶デバイス１３３／１４３は、暗号化された非圧縮データを格納する。転送データは、暗号化された非圧縮データである。第２不揮発記憶デバイス１３４／１４４は、暗号化された圧縮データを格納する。
【００８９】
図１４において、処理サーバ装置１３又はストレージシステム１４の階層制御プログラム３２１／４２１は、Ｉ／Ｏ頻度の低いデータを第２不揮発記憶デバイス１３４／１４４に転送することを、第１不揮発記憶デバイス１３３／１４３に要求する（Ｓ１１）。Ｉ／Ｏ頻度は不図示のプログラムによって監視及び管理されている。
【００９０】
転送要求は、転送元デバイスＩ／Ｏアドレス及び転送先デバイスＩ／Ｏアドレスに加え、対象データのボリュームＩ／Ｏアドレスを示す。階層制御プログラム３２１／４２１は、ボリュームＩ／ＯアドレスとデバイスＩ／Ｏアドレスとのマッピング情報を参照して転送元アドレスを特定し、さらに、新たに割り当てる記憶領域のアドレスを転送先と決定する。
【００９１】
第１不揮発記憶デバイス１３３／１４３は、保持している格納ルール及び転送ルールを参照し、指定されたボリュームＩ／Ｏアドレスの、格納データ及び転送データの状態を判定する（Ｓ１２）。本例において、格納データの状態は暗号化及び非圧縮であり、転送データの状態は暗号化及び非圧縮である。
【００９２】
第１不揮発記憶デバイス１３３／１４３は、判定結果に応じて格納データを処理し、転送データを準備する（Ｓ１３）。本例において、第１不揮発記憶デバイス１３３／１４３は、暗号化／復号化及び圧縮／伸長の処理を行うことなく、データを転送することを決定する。第１不揮発記憶デバイス１３３／１４３は、指定された暗号データを転送するために準備する。
【００９３】
次に、第２不揮発記憶デバイス１３４／１４４に、準備した暗号データをＤＭＡ転送することを要求する（Ｓ１４）。転送要求は、ボリュームＩ／Ｏアドレス及び第２不揮発記憶デバイス１３４／１４４のデバイスＩ／Ｏアドレスを含む。
【００９４】
第２不揮発記憶デバイス１３４／１４４は、準備されている暗号データを、第１不揮発記憶デバイス１３３／１４３から読み出す（Ｓ１５）。データ転送が完了すると、第２不揮発記憶デバイス１３４／１４４は、転送完了を第１不揮発記憶デバイス１３３／１４３に通知する（Ｓ１６）。第１不揮発記憶デバイス１３３／１４３は、転送完了を階層制御プログラム３２１／４２１に通知する（Ｓ１７）。
【００９５】
第２不揮発記憶デバイス１３４／１４４は、指定されたボリュームＩ／Ｏアドレス、転送ルール及び格納ルールに基づき、受信したデータの状態と格納するデータの状態を判定する。第２不揮発記憶デバイス１３４／１４４は、判定結果に応じて受信データを処理する。
【００９６】
本例において、第２不揮発記憶デバイス１３４／１４４は、受信した暗号化データを復号化し（Ｓ１８）、さらに、圧縮する（Ｓ１９）。第２不揮発記憶デバイス１３４／１４４は、圧縮データを暗号化して（Ｓ２０）、暗号化された圧縮データを格納する。第２不揮発記憶デバイス１３４／１４４は、鍵管理情報を参照して、指定されたボリュームＩ／Ｏアドレスに対応する復号化／暗号化の鍵を同定する。
【００９７】
上述のように、二つの不揮発記憶デバイスが設定されたルールに従ってデータ転送することで、ＣＰＵを介在することなくデータ転送を行うことができる。
【００９８】
上記例と異なり、デバイスへの要求（コマンド）が、データの格納／転送状態及び／又は暗号鍵を指定してもよい。デバイスは、ボリュームＩ／ＯアドレスとデバイスＩ／Ｏアドレスとのマッピング情報を保持し、デバイスへの要求（コマンド）からボリュームＩ／Ｏアドレスが省略されてもよい。デバイスは、指定されたデバイスＩ／ＯアドレスからボリュームＩ／Ｏアドレスをマッピング情報に従って決定できる。
【００９９】
図１５及び図１６を参照して、不揮発記憶デバイス間のデータ転送並びにそのための鍵及びルールの設定の他の例を説明する。本例は、図７に示すルールに対応する。本例において、ＣＰＵが、設定された転送ルール及び格納ルールを参照し、データ転送及びデータ格納を制御する。
【０１００】
図１５は、鍵管理プログラム２２１及びルール管理プログラム２２２による、鍵設定及びルール設定の他の例を示す。鍵管理プログラム２２１は、処理サーバ装置１３の第１、第２不揮発記憶デバイス１３３、１３４、さらに、ストレージシステムの第１、第２不揮発記憶デバイス１４３、１４４に、鍵を設定する。具体的には、鍵管理プログラム２２１は、デバイスに、対応する鍵と鍵管理情報とを配布する。各デバイスは、そのコントローラの揮発又は不揮発のメモリに、受信した鍵及び鍵管理情報を格納する。
【０１０１】
ルール管理プログラム２２２は、処理サーバ装置１３のＣＰＵ１３１、及び、ストレージシステム１４のＣＰＵ１４１に、ルールを設定する。具体的には、ルール管理プログラム２２２は、ＣＰＵ１３１、１４１に、対応する格納ルール及び転送ルールを配布する。ＣＰＵ１３１、１４１は、それぞれ、揮発記憶デバイス１３２、１４２に、受信したルールを格納する。
【０１０２】
図１６は、階層制御によるデータ転送の例を示す。図１６の例において、データは処理サーバ装置１３又はストレージシステム１４における第１不揮発記憶デバイス１３３／１４３から第２不揮発記憶デバイス１３４／１４４へ転送される。第１不揮発記憶デバイス１３３／１４３は、暗号化された非圧縮データを格納する。転送データは、暗号化された非圧縮データである。第２不揮発記憶デバイス１３４／１４４は、暗号化された圧縮データを格納する。
【０１０３】
図１６において、処理サーバ装置１３又はストレージシステム１４の階層制御プログラム３２１／４２１（ＣＰＵ１３１／１４１）は、Ｉ／Ｏ頻度の低いデータを、第１不揮発記憶デバイス１３３／１４３から第２不揮発記憶デバイス１３４／１４４に転送することを決定する。
【０１０４】
階層制御プログラム３２１／４２１は、揮発記憶デバイス１３２／１４２に格納されている格納ルール及び転送ルールを参照し、対象データのボリュームアドレスに従って、格納データ及び転送データの状態を判定する（Ｓ３１）。本例において、格納データの状態は暗号化及び非圧縮であり、転送データの状態は暗号化及び非圧縮である。階層制御プログラム３２１／４２１は、格納データを暗号化／復号化及び圧縮／非圧縮を行うことなく転送することを決定する。
【０１０５】
階層制御プログラム３２１／４２１は、上記データを、揮発記憶デバイス１３２／１４２にＤＭＡ転送することを、第１不揮発記憶デバイス１３３／１４３に要求する（Ｓ３２）。転送要求は、ボリュームＩ／Ｏアドレス、転送元の第１不揮発記憶デバイス１３３／１４３のデバイスＩ／Ｏアドレス、及び、転送先の揮発記憶デバイス１３２／１４２のアドレスを示す。階層制御プログラム３２１／４２１は、ボリュームＩ／ＯアドレスとデバイスＩ／Ｏアドレスとのマッピング情報を参照して転送元アドレスを特定する。
【０１０６】
転送要求は、さらに、データ転送のための暗号化／復号化及び圧縮／非圧縮の処理についての指示を含む。本例において、転送要求は、暗号化／復号化及び圧縮／非圧縮のいずれも指示しない。
【０１０７】
第１不揮発記憶デバイス１３３／１４３は、指定されたデータを暗号化／復号化及び圧縮／非圧縮することなく、転送データを準備し（Ｓ３３）、ＤＭＡ転送により揮発記憶デバイス１３２／１４２に転送する（Ｓ３４）。その後、第１不揮発記憶デバイス１３３／１４３は、転送完了を階層制御プログラム３２１／４２１に通知する（Ｓ３５）。
【０１０８】
次に、階層制御プログラム３２１／４２１は、揮発記憶デバイス１３２／１４２に格納されているデータのＤＭＡ転送を、第２不揮発記憶デバイス１３４／１４４に要求する（Ｓ３６）。転送要求は、転送元の揮発記憶デバイス１３２／１４２のアドレス、第２不揮発記憶デバイス１３４／１４４の格納先アドレス（デバイスＩ／Ｏアドレス）、及びボリュームＩ／Ｏアドレスを含む。階層制御プログラム３２１／４２１は、新たに割り当てる記憶領域のアドレスを転送先と決定する。
【０１０９】
転送要求は、さらに、データ格納のための暗号化／復号化及び圧縮／非圧縮の処理についての指示を含む。階層制御プログラム３２１／４２１は、揮発記憶デバイス１３２／１４２に格納されている格納ルールを参照し、対象データの第２不揮発記憶デバイス１３４／１４４への格納時の状態を判定する。本例において、圧縮された暗号化データが格納される。したがって、階層制御プログラム３２１／４２１は、データの復号化、圧縮、及び暗号化を指示する。
【０１１０】
第２不揮発記憶デバイス１３４／１４４は、データを、揮発記憶デバイス１３２／１４２にから読み出す（Ｓ３７）。データ転送が完了すると、第２不揮発記憶デバイス１３４／１４４は、転送完了を階層制御プログラム３２１／４２１に通知する（Ｓ３８）。
【０１１１】
第２不揮発記憶デバイス１３４／１４４は、受信した暗号化データを復号化する（Ｓ３９）。第２不揮発記憶デバイス１３４／１４４は、鍵管理情報を参照して、指定されたボリュームＩ／Ｏアドレスの鍵を同定し、当該鍵を使用してデータを復号化する。
【０１１２】
第２不揮発記憶デバイス１３４／１４４は、復号化したデータを圧縮する（Ｓ４０）。さらに、第２不揮発記憶デバイス１３４／１４４は、圧縮データを暗号化して（Ｓ４１）、暗号化された圧縮データを格納する。
【０１１３】
上述のように、階層制御プログラム３２１／４２１、つまりＣＰＵ１３１／１４１が設定されたルールに従ってデータ転送を制御することで、不揮発記憶デバイスがデータ転送制御のための機能を有していない場合でも、適切にデータ転送することができる。
【０１１４】
上記例において、ＣＰＵは、転送ルールと格納ルールの双方を参照するが、ＣＰＵは転送ルールのみを保持、参照し、データ転送を実行する不揮発記憶デバイスが格納ルールを保持、参照してもよい。ＣＰＵは、鍵管理テーブルを保持し、不揮発記憶デバイスにデータの暗号化／復号化に使用する鍵を指定してもよい。この場合、転送要求におけるボリュームＩ／Ｏアドレスは省略される。デバイスは、ボリュームＩ／ＯアドレスとデバイスＩ／Ｏアドレスとのマッピング情報を保持し、デバイスへの要求（コマンド）からボリュームＩ／Ｏアドレスが省略されてもよい。
【０１１５】
図１７は、暗号鍵変更のフローチャートの例を示す。鍵管理プログラム２２１は、たとえば入力デバイスからのユーザ指示に応じて、鍵を変更する。鍵管理プログラム２２１は、交換する古い鍵を使用している全てのデバイスにおいて、古い暗号鍵を新しい暗号鍵に交換する。図１７の例は、第１不揮発記憶デバイス１３３及び１４３及び第２不揮発記憶デバイス１３４及び１４４の古い暗号鍵を新しい暗号鍵に交換する。暗号鍵を使用しているデバイスは、鍵管理テーブル２２３に示されている。
【０１１６】
鍵管理プログラム２２１は、処理サーバ装置１３及びストレージシステム１４の階層制御プログラム３２１及び４２１（ＣＰＵ１３１／１４１）に、データの階層間の移動の停止要求を発行する（Ｓ５１）。これにより、鍵変更後に古い鍵により暗号化されたデータが残ることを避ける。
【０１１７】
次に、鍵管理プログラム２２１は、第１不揮発記憶デバイス１３３、１４３及び第２不揮発記憶デバイス１３４、１４４に、新しい暗号鍵と共に、暗号鍵変更の要求を送信する。交換要求は、交換する古い暗号鍵を指定する。新しい暗号鍵が配布済みである場合には、交換要求は新しい暗号鍵を伴うことなく、新しい暗号鍵を指定してもよい。
【０１１８】
第１不揮発記憶デバイス１３３、１４３は、受信した要求に従って、指定された古い暗号鍵を受信した新しい暗号鍵に交換するための処理を行う（Ｓ５２）。第１不揮発記憶デバイス１３３、１４３は、新しい暗号鍵により格納データを暗号化し、さらに、保持している鍵管理情報を更新する。
【０１１９】
具体的には、第１不揮発記憶デバイス１３３、１４３は、保持している鍵管理情報を参照し、古い暗号鍵で暗号化されているデータを同定して読み出し、読み出したデータを古い暗号鍵で復号化する。第１不揮発記憶デバイス１３３、１４３は、復号化したデータを新しい鍵で暗号化して、暗号化したデータを格納する。第１不揮発記憶デバイス１３３、１４３は、鍵管理情報における古い暗号鍵の情報を新しい暗号鍵の情報に更新する。
【０１２０】
鍵交換のための処理が完了すると、第１不揮発記憶デバイス１３３、１４３は、鍵管理プログラム２２１（管理装置１２）に対して、暗号鍵の交換完了通知を送信する（Ｓ５３）。
【０１２１】
同様に、第２不揮発記憶デバイス１３４、１４４も、受信した要求に従って、指定された古い暗号鍵を受信した新しい暗号鍵に交換するための処理を行う（Ｓ５４）。鍵交換のための処理が完了すると、第２不揮発記憶デバイス１３４、１４４は、鍵管理プログラム２２１（管理装置１２）に対して、暗号鍵の交換完了通知を送信する（Ｓ５５）。
【０１２２】
鍵管理プログラム２２１は、鍵交換要求を送信した全てのデバイスから交換完了通知を受信すると、鍵管理テーブル２２３を更新する。さらに、階層制御プログラム３２１及び４２１に鍵交換完了通知を発行して、データの階層間の移動の再開を許可する（Ｓ５６）。全てのデバイスからの鍵交換完了通知を待つことで、鍵交換完了前にデータ移動が開始されることを避ける。
【０１２３】
図１８は、暗号鍵の削除によるデータ削除のフローチャートの例を示す。本例は、不揮発記憶デバイスから暗号鍵を削除することによって、当該暗号鍵で暗号化されたデータを当該不揮発記憶デバイスから削除する。鍵管理プログラム２２１は、たとえば、入力デバイスからのユーザ指示に応じて、暗号鍵を削除することにより、データを削除する。
【０１２４】
鍵管理プログラム２２１は、鍵管理テーブル２２３を参照して、削除する鍵を保持する全てのデバイスを同定する。鍵管理プログラム２２１は、同定したデバイスそれぞれに、暗号鍵を指定した削除要求を発行する（Ｓ７１）。暗号鍵の削除要求を受信した各デバイスは、保持している暗号鍵を廃棄すると共に、保持している鍵管理情報におけるエントリから、指示された暗号鍵の情報を削除する。暗号鍵を削除したデバイスは、それぞれ、削除完了の通知を鍵管理プログラム２２１に返す。
【０１２５】
鍵管理プログラム２２１は、暗号鍵の削除を要求した全てのデバイスから完了通知を受信すると、鍵管理テーブル２２３から、当該暗号鍵の情報を削除する。これにより、バックアップ、差分ファイル含めて、削除された暗号鍵で暗号化された全てのデータの削除が完了する（Ｓ７２）。鍵管理プログラム２２１は、暗号鍵の削除によるデータ削除の完了を、要求元に通知する。
【０１２６】
ルール管理プログラム２２２は、更新された鍵管理テーブル２２３に従って、格納ルールテーブル２２４及び転送ルールテーブル２２５を更新し、さらにルール更新情報を対応するデバイスに送信する。ルール管理プログラム２２２は、更新された転送ルールテーブル２２５を表示デバイスにおいてユーザに提示し、ユーザによる変更を受け付けてもよい。
【０１２７】
このように、システム内で、同一データ（同一アドレスのデータ）に対して同一の暗号鍵が共有されているため、対応する暗号鍵の消去によりシステム内の対象データを瞬時に消去することができる。
【０１２８】
図１９は、格納ルールの決定におけるユーザによる判定のフローチャート例を示す。ユーザは、対象データが機密データであるか判定する（Ｓ９１）。機密データでない場合（Ｓ９１：Ｎ）、ユーザは、対象データについて、レイテンシと容量削減のいずれが重要か判定する（Ｓ９２）。レイテンシが重要である場合（Ｓ９２：Ｎ）、ユーザは、対象データを暗号化も圧縮もすることなく格納することを、決定する（Ｓ９３）。容量削減が重要である場合（Ｓ９２：Ｙ）、ユーザは、対象データを暗号化せず圧縮して格納することを、決定する（Ｓ９４）。
【０１２９】
対象データが機密データである場合（Ｓ９１：Ｙ）、ユーザは、対象データについて、レイテンシと容量削減のいずれが重要か判定する（Ｓ９５）。レイテンシが重要である場合（Ｓ９５：Ｎ）、ユーザは、対象データを暗号化し、圧縮することなく格納することを、決定する（Ｓ９６）。容量削減が重要である場合（Ｓ９５：Ｙ）、ユーザは、対象データを暗号化しさらに圧縮して格納することを、決定する（Ｓ９７）。
【０１３０】
ルール管理プログラム２２２は、対象データについての条件の入力を参照し、図１９のフローチャートに従って、対象データに対する暗号処理及び圧縮処理のルールを決定してもよい。たとえば、ルール管理プログラム２２２は、管理装置１２のＧＵＩプログラムを介して、対象アドレス範囲、対象が機密か否か、対象についてレイテンシ／容量削減のいずれが重要であるか、の情報を取得する。
【０１３１】
図２０は、ユーザにより鍵情報の設定のためのＧＵＩ画像例を示す。鍵管理プログラム２２１は、ＧＵＩプログラムを使用して、入出力デバイスからの鍵情報設定のためのユーザ入力を受け付ける。図２０において、鍵管理画像５０１における「設定」ボタンの選択が、ユーザに鍵生成・設定画像５０３における入力を可能とする。
【０１３２】
鍵生成・設定画像５０３は、暗号鍵の入力又は暗号鍵の自動生成の入力を受け付ける。鍵生成・設定画像５０３は、さらに、暗号鍵を適用するデータのボリュームＩ／Ｏアドレスを受け付ける。図２０の例においては、記憶デバイス、ボリューム識別子及びボリューム内アドレス（アドレス範囲）によって、暗号鍵の適用対象の選択を可能としている。
【０１３３】
ボリュームはホスト（ユーザ）が使用するボリュームであり、例えば仮想ボリュームである。ボリュームの情報は、ボリューム管理プログラムが管理するボリューム管理情報（共に不図示）から取得できる。暗号鍵適用範囲は、ボリュームや容量プールの単位で指定されてもよい。
【０１３４】
鍵生成・設定画像５０３における「確認」ボタンが選択されると、鍵管理プログラム２２１は、入力された情報を、鍵設定確認画像５０５において表示する。ユーザは、表示された情報に問題がある場合、鍵生成・設定画像５０３における「キャンセル」を選択し、問題がない場合、「完了」ボタンを選択する。
【０１３５】
「完了」ボタンが選択されると、鍵管理プログラム２２１は、入力された情報に従って暗号鍵を生成し、さらに、鍵管理テーブル２２３を更新／生成する。図１０に示すように、鍵管理テーブル２２３は、暗号鍵とボリュームＩ／Ｏアドレス（ボリューム識別子及びボリューム内アドレス）との関係を示す。
【０１３６】
以上のように、暗号鍵の設定範囲のユーザ入力を受け付けることで、ユーザにとって適切な暗号処理をシステムに実行させることができる。
【０１３７】
図２１は、ユーザによるルール情報の設定のためのＧＵＩ画像例を示す。ルール管理プログラム２２２は、ＧＵＩプログラムを使用して、ルール情報設定のためのユーザ入力を受け付ける。図２１において、ルール管理画像５２１における「設定」ボタンの選択は、ユーザによる格納ルール設定画像５２３における入力を可能とする。
【０１３８】
格納ルール設定画像５２３は、ボリュームアドレス範囲それぞれにおける、格納データの暗号化／復号化及び圧縮／非圧縮の指定を受け付ける。格納ルール設定画像５２３は、ボリュームや容量プールの単位で格納データの暗号化／復号化及び圧縮／非圧縮の指定を受け付けてもよい。
【０１３９】
格納ルール設定画像５２３における「確認」ボタンが選択されると、ルール管理プログラム２２２は、格納ルールテーブル２２４を更新／生成する。ルール管理プログラム２２２は、新たな格納ルールテーブル２２４に従って、一時的な転送ルールを更新／生成し、転送ルール設定画像５２５に表示する。
【０１４０】
ルール管理プログラム２２２は、例えば、転送元と転送先の少なくとも一方が非暗号化（暗号ＯＦＦ）である場合、それらの間のデータ転送に非暗号化（暗号ＯＦＦ）を指定する。ルール管理プログラム２２２は、転送元と転送先の双方が暗号化（暗号ＯＮ）である場合、それらの間のデータ転送に暗号化（暗号ＯＮ）を指定する。
【０１４１】
ルール管理プログラム２２２は、例えば、転送元と転送先の少なくとも一方が非圧縮（圧縮ＯＦＦ）である場合、それらの間のデータ転送に非圧縮（圧縮ＯＦＦ）を指定する。ルール管理プログラム２２２は、転送元と転送先の双方が圧縮（圧縮ＯＮ）である場合、それらの間のデータ転送に圧縮（圧縮ＯＮ）を指定する。
【０１４２】
ルール管理プログラム２２２は、転送ルール設定画像５２５において、ユーザによる設定変更を受け付け、一次的な転送ルールに反映させる。転送ルール設定画像５２５における「確認」ボタンが選択されると、ルール管理プログラム２２２は、新たな転送ルールによって、転送ルールテーブル２２５を更新／生成する。
【０１４３】
また、処理機能を持たない不揮発記憶デバイスの設定も可能とし、その場合は他の不揮発記憶デバイスの設定を引き継ぐか他の不揮発記憶デバイスまたはＣＰＵが転送時に処理機能を持たない不揮発記憶デバイスの代わりに処理を実施するように設定する。たとえば、他の不揮発記憶デバイスが暗号ＯＮ、圧縮ＯＮの設定の場合、その状態を引き継ぎ、処理機能を持たない不揮発記憶デバイスは暗号ＯＮと圧縮ＯＮの格納状態とする。もし、暗号ＯＦＦや圧縮ＯＦＦとする場合は、上位の不揮発記憶デバイスまたはＣＰＵが処理機能を持たない不揮発記憶デバイスの代わりに処理を実施してもよい。
【０１４４】
図２２は、階層制御における階層の設定のためのＧＵＩ画像例を示す。ユーザは、階層の属する記憶デバイスをＧＵＩ画像において指定する。階層制御プログラム３２１、４２１は、管理装置１１に表示されたＧＵＩ画像を介して入力された情報を受信し、設定情報に従って階層制御を行う。
【０１４５】
図２３は、他のシステム構成例を示す。計算機システムは、複数の監視装置を含む。図２３において、二つの監視装置１８Ａ、１８Ｂが例示されている。監視装置１８Ａ、１８Ｂは、ネットワーク１５を介して管理装置１２と接続している。監視装置１８Ａ、１８Ｂは、管理装置１２と同様の計算機構成を有することがきる。
【０１４６】
複数の管理者が監視装置を操作し、鍵管理情報及びルール管理情報の不適切な変更を監視し、運用上のセキュリティを担保する。例えば、ある管理者が、格納ルール又は転送ルールを変更すると、ルール管理プログラム２２２は、その変更内容を監視装置１８Ａ、１８Ｂへ通知する。監視装置１８Ａ、１８Ｂは、通知内容を表示する。例えば監視装置１８Ｂでシステムを監視している他の管理者は、ルールの変更内容を知ることができる。
【０１４７】
ルール管理プログラム２２２は、あらかじめ定められた規則からはずれた変更の場合、監視装置１８Ａ、１８Ｂに警告を通知する。これにより、管理者は、不正な操作を知ることができる。鍵管理情報についても同様であり、不正操作、例えば不正鍵交換を、複数人で監視することができる。
【０１４８】
監視装置は、一つのみであってもよい。複数の監視装置により、一人の管理者による操作を他の管理者が監視できる。また、一つの監視装置が停止しても、他の監視装置で監視を継続することができる。
【０１４９】
図２４は、他のシステム構成例を示す。物理サーバ装置１９は、ネットワークを介して管理装置１２に接続している。仮想化により、物理サーバ装置１９において、複数の仮想マシンが動作している。例えば、仮想化のため、ＬＰＡＲ（Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎ）方式又はＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）方式が使用できる。
【０１５０】
仮想マシンＶＭ０、ＶＭ１は、仮想処理サーバ装置であり、仮想マシンＶＭ２、ＶＭ３は仮想ストレージシステムである。物理サーバ装置１９の物理リソースは、ＣＰＵ、揮発記憶デバイス、複数の不揮発記憶デバイス、及びインタフェースを含む。仮想マシンのそれぞれに対して、物理リソースが割り当てられる。
【０１５１】
物理処理サーバ装置１３及び物理ストレージシステム１４を含む構成における上述の内容は、図２４に示すような仮想マシンを含むシステムにも適用することができる。物理処理サーバ装置１３及び物理ストレージシステム１４それぞれについての説明が、仮想処理サーバ装置及び仮想ストレージシステムに適用される。
【０１５２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１５３】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【０１５４】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。また、各装置の冗長パスは記載していないが、実際にはサーバ、ストレージ、管理装置、監視装置などのネットワークには冗長化のための接続があると考えてもよい。
【図１】
2018008123.tif 000003
【図２】
2018008123.tif 000004
【図３】
2018008123.tif 000005
【図４】
2018008123.tif 000006
【図５】
2018008123.tif 000007
【図６】
2018008123.tif 000008
【図７】
2018008123.tif 000009
【図８】
2018008123.tif 000010
【図９】
2018008123.tif 000011
【図１０】
2018008123.tif 000012
【図１１】
2018008123.tif 000013
【図１２】
2018008123.tif 000014
【図１３】
2018008123.tif 000015
【図１４】
2018008123.tif 000016
【図１５】
2018008123.tif 000017
【図１６】
2018008123.tif 000018
【図１７】
2018008123.tif 000019
【図１８】
2018008123.tif 000020
【図１９】
2018008123.tif 000021
【図２０】
2018008123.tif 000022
【図２１】
2018008123.tif 000023
【図２２】
2018008123.tif 000024
【図２３】
2018008123.tif 000025
【図２４】
2018008123.tif 000026
【国際調査報告】
2018008123.tif 000027
2018008123.tif 000028
2018008123.tif 000029
2018008123.tif 000030
2018008123.tif 000031
2018008123.tif 000032