以下、図面を参照して本発明の幾つかの実施形態を説明する。
<第一の実施形態>。
図36は、本発明の第一の実施形態の概念の説明図である。
第一のストレージサブシステム973は、第二のストレージサブシステム1973と通信可能に接続されている。第二のストレージサブシステム1973は、複数の第二のストレージ装置1979と、複数の第二のストレージ装置1979を基に用意された第二の論理ボリューム1985と、第二のコントローラ1974とを備える。第二のコントローラ1974は、第二の論理ボリューム1985に対するアクセス要求(ライト要求/リード要求)を処理することにより、該第二の論理ボリューム1985の基になっている各第二のストレージ装置1979に対しデータのライト或いはリードを要求する。それにより、各第二のストレージ装置1979にデータをライトする或いはリードすることができる。
第一のストレージサブシステム973は、複数の第一のストレージ装置979と、複数の第一のストレージ装置979を基に用意された第一の論理ボリューム985と、第一のコントローラ974とを備える。
各第一のストレージ装置979には、装置暗号/復号処理部(以下、暗号化(encryption)/復号化(decryption)を略して「装置E/D部」と略記する)981が内蔵されている。第一のストレージ装置979がライトの要求と共に受信したデータ(後述の平文)は、装置E/D部981によって暗号化されてから、該第一のストレージ装置979のストレージ媒体989に書かれるようになっている。また、第一のストレージ装置979が受信したリードの要求に従ってストレージ媒体989から読み出されたデータ(後述の暗号文)は、装置E/D部981によって復号化されてから、該第一のストレージ装置979から第一のコントローラ974に送られるようになっている。
第一のコントローラ974は、キャッシュ領域977と、コントローラ暗号/復号処理部(以下、「コントローラE/D部」と略記する)975とを有する。第一のコントローラ974は、上位装置971からライト要求を受信し処理する。以下の説明では、その受信したライト要求のライト対象データを、「平文」と呼ぶことにする。該ライト対象データは、上位装置971の特定のレイヤ(例えばアプリケーションプログラム或いはオペレーティングシステム)で何らかの暗号化処理が施されているかもしれないが、それでも、第一のストレージサブシステム973が受信してから未だ暗号化されていないという意味で、上記のように、「平文」と呼ぶことにする。それに対し、該平文が、第一のストレージサブシステム973で暗号化されたものを、「暗号文」と呼ぶことにする。
第一のコントローラ974は、上位装置971から受信したライト要求に従う平文を、キャッシュ領域977に一時格納する。第一のコントローラ974は、該ライト要求を処理した場合の書込み先が、第一の論理ボリューム985と第二の論理ボリューム1985のいずれになるかを判断する。
第一のコントローラ974は、書込み先が第一の論理ボリューム985になると判断したならば、キャッシュ領域977上の平文を、コントローラE/D部975で暗号化することなく、第一の論理ボリューム985の基になっている第一のストレージ装置979に送信する。これにより、該第一のストレージ装置979が受信した平文が、該第一のストレージ装置979の装置E/D部981によって暗号化されることで暗号文となり、該暗号文が、該第一のストレージ装置979のストレージ媒体989に書かれる。
一方、第一のコントローラ974は、書込み先が第二の論理ボリューム1985になると判断したならば、キャッシュ領域977上の平文を、コントローラE/D部975で暗号化し(つまり、平文を暗号文にし)、第二の論理ボリューム1985を指定したライト要求と該暗号文とを、第二のストレージサブシステム1973に送信する。これにより、第二のコントローラ1974が、該ライト要求を処理することで、該暗号文が、該ライト要求で指定した第二の論理ボリューム1985の基になっている第二のストレージ装置1979に書かれる。
以上の処理により、第一のコントローラ974による暗号化の処理負担をなるべく低減させることができる。
第一のコントローラ974は、第一の論理ボリューム985と第二の論理ボリューム1985とでボリュームペアを形成し、第一の論理ボリューム985に格納済みの暗号文を、第二の論理ボリューム1985にコピーすることができる。具体的には、第一のコントローラ974は、該第一の論理ボリューム985の基になっている各第一のストレージ装置979の装置E/D部981に復号化を行わせないで各第一のストレージ装置979からデータ(暗号文)を読み出し、キャッシュ領域977に一時格納する。そして、第一のコントローラ974は、キャッシュ領域977上のその暗号文を、コントローラE/D部975で暗号化することなく、第二の論理ボリューム1985にコピーする。これにより、第一のコントローラ974による暗号化のオーバーヘッドを減らすことができる。なお、第一のストレージ装置979からの暗号文の読出しや第二の論理ボリューム1985への該暗号文の格納は、第二のコントローラ1974が主体になって実行しても良い。
以上が、第一の実施形態の概要である。なお、前述したE/D部975、981は、暗号化を行う部分と復号化を行う部分が物理的に分離していても良い。E/D部975、981は、ハードウェア(例えばLSI(Large Scale Integration)等の回路)、コンピュータプログラム、又はそれらの組み合わせで実現したエンジンとすることができる。
以下、第一の実施形態について詳細に説明する。なお、以下の説明では、E/D部は、ハードウェアであるとする。また、以下の説明では、第一のストレージ装置も第二のストレージ装置も、ハードディスクドライブ(以下、HDD)とし、それ故、ストレージ媒体は、ハードディスクとする。しかし、いずれのストレージ装置も、HDDに限らず、他種のストレージ装置、例えば、DVD(Digital Versatile Disks)ドライブ、磁気テープドライブ、或いはフラッシュメモリデバイスなどを採用することができる。そのため、ストレージ媒体としても、ハードディスクに限らず、他種のストレージ媒体、例えば、DVD、磁気テープ或いはフラッシュメモリなどを採用することができる。
図1は、本発明の第一実施形態に係る計算機システムの物理的な構成例を示す。
複数のFC(Fibre Channel)スイッチ5、5´によりSAN(Storage Area Network)が構築されている。FCスイッチ5に、複数(又は一つ)のホスト計算機(以下、ホスト)4と、ストレージサブシステム1のホストアダプタ11と、FCスイッチ5´とが接続されている。FCスイッチ5´に、ストレージサブシステム1の外部アダプタ12と、セカンダリストレージサブシステム3と、外部ストレージサブシステム2とが接続されている。セカンダリストレージサブシステム3及び外部ストレージサブシステム2は、それぞれ、第二のストレージサブシステム1973の一種である。
ストレージサブシステム1は、例えば、アレイ状に配列された多数のHDD16を備えるRAID(Redundant Array of Independent (or Inexpensive) Disks)システムとすることができる。但し、これに限らず、ストレージサブシステム1を、通信ネットワークを構成するスイッチ、例えば、高機能化されたインテリジェント型のファイバチャネルスイッチとして構成することもできる。
ストレージサブシステム1は、複数のHDD16に接続されたコントローラ974を有する。コントローラ974の機能が、FCスイッチ5に搭載され、それにより、FCスイッチ5と複数のHDD16の組み合わせによりストレージサブシステム1が実現されても良い。コントローラ974は、例えば、複数のチャネルアダプタ(以下、CHA)11、12と、複数のディスクアダプタ(以下、DKA)13と、キャッシュ/制御メモリ14と、内部スイッチ15とを備えている。
CHA11、12は、外部の装置(例えばホスト計算機或いは他のストレージサブシステム)と通信可能に接続される一又は複数のI/F(例えば、通信ポート或いは通信ポートを備えた通信制御回路)113、123を有し、外部の装置との間のデータ通信を行うものである。本実施形態では、CHA11は、ホスト計算機14と通信するアダプタということで、「ホストアダプタ」と呼ぶ。CHA12は、外部ストレージサブシステム2やセカンダリストレージサブシステム3等の外部に存在するストレージサブシステムと通信するアダプタということで、「外部アダプタ」と呼ぶ。ホストアダプタ11や外部アダプタ12は、CPU111、121やメモリ112、122等を備えたマイクロコンピュータシステム(例えば回路基盤)として構成されている。ホストアダプタ11及び外部アダプタ12は、一体になっていてもよい。
外部アダプタ12のI/F123には、この外部アダプタ12に入力されたデータの暗号化及び復号化を行うコントローラE/D部124が設けられる。コントローラE/D部124は、例えば、ストレージサブシステム1の内部(例えば内部スイッチ15)から入力されたデータを暗号化し、ストレージサブシステム1の外部(例えばFCスイッチ5´)から入力されたデータを復号化するように構成されている。
ホストアダプタ11も、外部アダプタ12と同じハードウェア構成であっても良い。その際、ホストアダプタ11に、該ホストアダプタ11に入出力されるデータを暗号化/復号化しないような設定をしておく(例えば、メモリ112或いはコントローラE/D部に所定のフラグをセットする)ことで、ホストアダプタ11の該コントローラE/D部に、該ホストアダプタ11に入出力されるデータを暗号化及び復号化しないようにすることができる。
DKA13は、各HDD16に接続するための通信ポート(例えばFCポート)133を有し、その通信ポート133を介して、HDD16と通信することができる。DKA13は、CPU131やメモリ132等を備えたマイクロコンピュータシステム(例えば回路基盤)として構成されている。DKA22は、CHA11、12からキャッシュ/制御メモリ14のキャッシュ領域に書かれたデータをHDD16に書込んだり、HDD16から読み出したデータをキャッシュ領域に書込んだりすることができる。
キャッシュ/制御メモリ14は、例えば揮発性又は不揮発性のメモリである。キャッシュ/制御メモリ14は、キャッシュ領域と制御領域とを有したメモリである。キャッシュ領域を有したメモリと制御領域を有したメモリとに分離していても良い。キャッシュ領域には、外部の装置(例えばホスト4や外部ストレージサブシステム2など)から受信したデータや、HDD16から読出されたデータが一時的に格納される。制御領域には、ストレージサブシステム1での制御に関する情報(以下、制御情報)が格納される。制御情報には、後述する各種テーブルがある。
内部スイッチ15は、例えばクロスバスイッチであり、CHA11,12、DKA13、キャッシュ/制御メモリ14を相互に接続させる。内部スイッチ15に代えて、バスなどの他種の接続部が採用されても良い。
内部スイッチ15には、例えば管理端末6が接続される。管理端末6は、ストレージサブシステム1を管理するための計算機である。管理端末6は、例えば、キャッシュ/制御メモリ14の制御領域に、後述する各種テーブルを格納することができる。なお、管理端末6が行う機能は、ホスト4に搭載されても良い。すなわち、ホスト4から、後述する各種テーブルを格納しても良い。
以上が、本発明の第一実施形態に係る計算機システムの物理的な構成例の説明である。これは、例であり、この計算機システムの構成に限定する必要は無い。例えば、コントローラ974は、もっと簡易な構成、例えば、一つの回路基盤にCPUとメモリを備えた構成となっていても良い。
図2は、本発明の第一実施形態に係る計算機システムの論理的な構成例を示す。
ホストアダプタ11には、CPU111に実行されるコンピュータプログラムとして、例えば、コマンド処理部901とリモートコピー処理部902とがある。外部アダプタ12には、CPU121に実行されるコンピュータプログラムとして、例えば、外部I/O処理部903がある。DKA13には、CPI131に実行されるコンピュータプログラムとして、例えば、論理物理変換部911とディスクI/O処理部913とがある。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するCPUによって処理が行われるものとする。各コンピュータプログラムの動作については後に詳述する。
図3Aは、HDD16の構成例を示す。
HDD16は、ハードディスク927と、該ハードディスク927に対するデータの読み書きを制御するHDDコントローラ925とを備える。HDDコントローラ925には、例えば、ハードディスク927に対するデータの読み書きを制御するI/O処理部923に加えて、装置E/D部921が備えられている。この実施形態では、I/O処理部923は、HDDコントローラ925上の図示しないCPUによって実行されるコンピュータプログラムとすることができる。装置E/D部921は、内部に記憶域(図示せず)を有しており、該記憶域に、図3Bに例示する鍵管理テーブル160が記憶される。
図3Bは、鍵管理テーブル160の構成例を示す。
鍵管理テーブル160は、この鍵管理テーブル160を備えるHDD16のハードディスク927における各物理アドレス範囲(例えば論理ブロックアドレス(LBA)範囲)と、各物理アドレス範囲に対応した暗号鍵との対応関係を管理するためのテーブルである。具体的には、このテーブル160には、インデックス番号が書かれるカラム161と、電子的な情報である暗号鍵が格納されるカラム162と、物理アドレス範囲の先頭アドレスが書かれるカラム163と、物理アドレス範囲の終端アドレスがカラム164とがある。
装置E/D部921は、内部の記憶域に設定されているこの鍵管理テーブル160から、ハードディスク927のアクセス先場所を含む物理アドレス範囲に対応した暗号鍵を特定することができる。装置E/D部921は、そのアクセス先場所に書かれるデータを、特定された暗号鍵で暗号化したり、そのアクセス先場所から読み出された暗号化済みデータを、特定された暗号鍵で復号化したりすることができる。
図4は、複数のHDD16と論理ボリュームとの関係性の一例を示す図である。
複数(例えば4台)のHDD16−1、16−2、16−3及び16−4により一つのRAIDグループが構成される。この例では、3つのデータが3つのHDD16に格納され、それら3つのデータを基に生成されたパリティデータが、他の1つのHDD16に格納される。
このRAIDグループにより提供される記憶空間(各HDD16の記憶空間の集合)を、本実施形態では、Virtual Deviceを略して「VDEV」と呼ぶ。このVDEVを区切ることにより得られた複数のVDEV部分の各々が、本実施形態で言う論理ボリュームである。論理ボリュームは、ホスト4から指定され、ストレージサブシステム1内部でも識別される。そこで、以下、ホスト4から指定される論理ボリュームを、「LU」(Logical Unit)と称し、ストレージサブシステム1内部で識別される論理ボリュームを、「LDEV」(Logical Device)と呼ぶ場合がある。この図の例では、1つのVDEVから3つのLDEVが形成されているが、LDEVの数は、それより多くても少なくても良い(例えば、1つのVDEVに1つのLDEVでも良い)。
一つのLDEVが、4つのHDD16−1〜16−4のそれぞれ同じ物理アドレス範囲にある4つの記憶空間部分により構成されている。このため、例えば、LDEV毎に1つの暗号鍵が対応付けられる場合、4つのHDD16−1〜16−4の各々の鍵管理テーブル160には、LDEVに対応した物理アドレス範囲と、該LDEVに対応した暗号鍵とが設定される。この図4の例では、3つのLDEVがあるので、各鍵管理テーブル160には、物理アドレス範囲及び暗号鍵のセットが3つ登録される。一つのLDEVに複数の暗号鍵が対応付けられる場合には、そのセットの数は3よりも多くなる。
本実施形態では、データの書込み先及び読出し元が、ストレージサブシステム1の外になる場合として、外部接続技術による外部接続で外部ストレージサブシステム2になる場合と、リモートコピー技術によるリモートコピーでセカンダリストレージサブシステム3になる場合とがある。
本実施形態で言う「外部接続技術」とは、コントローラ974が、外部ストレージサブシステム2の有する記憶資源をストレージサブシステム1の記憶資源としてホスト4に提供する技術である。以下に説明する外部接続技術は、一例であり、他種の外部接続技術、例えば、特開2005−107645号公報(US出願番号10/769805号、US出願番号11/471556号)に開示の技術を援用することができる。
本実施形態で言う「リモートコピー技術」とは、ストレージサブシステム1内の第一の論理ボリュームとセカンダリストレージサブシステム3内の第二の論理ボリュームとでボリュームペアを構成し、第一の論理ボリュームに格納されるデータを第二の論理ボリュームにコピーする技術である。以下に説明するリモートコピー技術も、一例であり、他種のリモートコピー技術が採用されても良い。
以下、図5〜図9を参照して、キャッシュ/制御メモリ14に格納される制御情報に含まれる種々のテーブルを説明する。
図5は、RAID構成テーブルの構成例を示す。
RAID構成テーブル400は、各VDEV毎のRAID構成を管理するためのテーブルである。具体的には、例えば、このテーブル400には、VDEVの識別番号が書かれるカラム401と、HDDの識別番号が書かれるカラム402と、RAIDレベルが書かれるカラム403と、ストライプサイズが書かれるカラム404とがある。すなわち、このテーブル400には、各VDEV毎に、VDEVの識別番号と、該VDEVを構成する複数のHDDの識別番号と、該VDEVのRAIDレベルと、ストライプサイズとが書かれる。
図6は、VDEV構成テーブルの構成例を示す。
VDEV構成テーブル500は、VDEVの構成を管理するためのテーブルである。具体的には、例えば、このテーブル500には、VDEVの識別番号が書かれるカラム501と、LDEVの識別番号が書かれるカラム502と、LDEVのVDEVにおける論理アドレス範囲の先頭アドレスが書かれるカラム503と、LDEVのVDEVにおける論理アドレス範囲の終端アドレスが書かれるカラム504とがある。すなわち、このテーブル500には、どのVDEVのどの論理アドレス範囲にどんな識別番号のLDEVが存在するかが書かれる。
図7は、LU構成テーブルの構成例を示す。
LU構成テーブル600は、各LUの構成を管理するためのテーブルである。具体的には、例えば、このテーブル600には、LDEVの識別番号が書かれるカラム601と、WWN(World Wide Name)が書かれるカラム602と、LUN(Logical Unit Number)が書かれるカラム603と、LDEVの記憶容量が書かれるカラム604と、暗号鍵が書かれるカラム605とがある。すなわち、このテーブル600には、各LU毎に、LDEVの識別番号と、該LDEVに対応付けられたWWN及びLUNと、そのLDEVの記憶容量と、そのLDEVに対応付けられている暗号鍵とが書かれる。
この実施形態では、前述したように、ホスト4から指定される論理ボリュームを「LU」と言うが、具体的には、例えば、Fibre ChannelプロトコルでのWWN及びLUNが対応付けられた論理ボリュームをLUと言う。なお、例えば、メインフレームでは、WWN及びLUNのカラム602及び603は設けられなくても良い。
図8Aは、ポート構成テーブルの構成例を示す。
ポート構成テーブル450は、各I/F113、123の通信ポートの構成を管理するためのテーブルである。具体的には、例えば、このテーブル450には、通信ポートの識別子(例えばWWN)が書かれるカラム451と、通信ポートのステータスが書かれるカラム452とがある。ステータス"TARGET"とは、ホストアダプタ11のI/F113にある通信ポートを表し、ステータス"EXTERNAL"とは、外部アダプタ12のI/F123にある通信ポートを表す。一つのアダプタ11、12に、I/F113、123は、複数個存在しても良い。また、一つのI/F113、123に、通信ポートは複数個存在しても良い。
また、もし、ホストアダプタ11のI/F113にコントローラE/D部がある場合には、そのI/F113の通信ポートのステータスが"TARGET"になっているならば、該コントローラE/D部に暗号化及び復号化を実行させないようにすることができる。例えば、該コントローラE/D部の記憶域に、暗号化及び復号化の実行を禁止するためのフラグを設定しておくことで、該コントローラE/D部に暗号化及び復号化を実行させないようにすることができる。
図8Bは、EDEV情報テーブルの構成例を示す。
EDEV情報テーブル250は、各EDEVに関する情報を管理するためのテーブルである。具体的には、例えば、このテーブル250には、EDEVの識別番号が書かれるカラム251と、EDEVに対応付けられたWWN及びLUNがそれぞれ書かれるカラム252及び253とがある。
ここで、EDEVとは、External Deviceの略であり、外部ストレージサブシステム2に存在する一又は複数のHDDにより提供される記憶空間である。具体的には、例えば、EDEVは、外部ストレージサブシステム2に存在するVDEVのことである。EDEVは、本実施形態では、WWN及びLUNが対応付けられているため、ストレージサブシステム1においては、HDD16を基に用意されたものではない仮想的なLUである。
図9は、EDEV構成テーブルの構成例を示す。
EDEV構成テーブル650は、EDEVの構成を管理するためのテーブルである。具体的には、例えば、このテーブル650には、EDEVの識別番号が書かれるカラム651と、LDEVの識別番号が書かれるカラム652と、LDEVのEDEVにおける論理アドレス範囲の先頭アドレスが書かれるカラム653と、LDEVのEDEVにおける論理アドレス範囲の終端アドレスが書かれるカラム654とがある。すなわち、このテーブル650には、どのEDEVのどの論理アドレス範囲にどんな識別番号のLDEVが存在するかが書かれる。以下の説明では、EDEV内のLDEVとVDEV内のLDEVとを区別するために、EDEV内のLDEVを「外部LDEV」と呼び、VDEV内のLDEVを「内部LDEV」と呼ぶことがある。
外部LDEVの識別番号と、内部LDEVの識別番号は、それぞれ異なる番号が使用される。コマンド処理部901は、HDEV構成テーブル500及びEDEV構成テーブル650を参照することで、内部LDEV及び外部LDEVを識別することができる。
以上が、各種テーブルについての説明である。以下、本実施形態で行われる種々の処理の流れを説明する。
図10は、LDEV作成処理の流れの一例を示す。なお、図では、番号を「#」という記号で略記することがある(これは他の図についても同様)。
管理端末6の記憶資源は、ストレージサブシステム1や外部ストレージサブシステム2について種々の構成に関する情報(例えば、未使用のHDDの番号、サブシステムにおけるHDD全体の空き記憶容量、VDEVやEDEVの空き容量など)が記憶されている。
ステップ1001では、管理端末6のCPUで実行される所定のコンピュータプログラム(以下、管理プログラム)が、未使用領域(空き容量)のあるVDEV及びEDEVを、管理端末6のディスプレイ画面に表示する。或いは、管理プログラムは、HDD全体の空き空き記憶容量以下の容量を有したVDEV及び/又はEDEVの新規構築の指示を管理者から受け付けても良い。
ステップ1002では、管理プログラムは、VDEV或いはEDEVの選択と、容量、WWN及びLUNの指定とを受け付ける。
ステップ1003では、新規に作成するLDEV(以下、この図10の説明において「対象LDEV」と言う)のエントリがLU構成テーブル600に作成される。具体的には、例えば、管理プログラムが、選択されたVDEV或いはEDEVの識別番号、容量、WWN及びLUNと共に設定命令を送信する。ストレージサブシステム1におけるCPUで実行される所定のコンピュータプログラム(以下、便宜上、「テーブル構築プログラム」と言う)が、該設定命令に従って、容量、WWN及びLUNを、LU構成テーブル600に設定する。容量、WWN及びLUNが設定されたエントリを含む行における、LDEV番号(LDEVの識別番号)に対応したセルには、例えば、管理者により或いは自動で、管理者所望の或いは未使用のLDEV番号が書かれる。ここで書かれるLDEV番号は、内部LDEV或いは外部LDEVのLDEV番号である。対象LDEVが外部LDEVの場合、WWN及びLUNは、該外部LDEVを含むEDEVに対応付けられたWWN及びLUNとすることができる。
ステップ1004では、管理プログラム及び/又はテーブル構築プログラムが、対象LDEVについて、暗号化を選択するか否かを判断する(例えば、対象LDEVについて暗号化を選択するか否かを管理者から受け付ける)。暗号化を選択の場合、ステップ1005にすすみ、非暗号化を選択の場合、終了となる。
ステップ1005では、暗号鍵が指定される。ここで指定される暗号鍵は、管理プログラムが管理者から受け付けた暗号鍵であっても良いし、テーブル構築プログラムが所定の計算を行うことで決定した暗号鍵であっても良い。
ステップ1006では、テーブル構築プログラムが、管理者に選択されたものがVDEVであるかEDEVであるかを判断する。これは、例えば、管理プログラムからの上記通知から、選択されたVDEV或いはEDEVの識別番号を取得し、該識別番号が、VDEV構成テーブル500とEDEV構成テーブル650のどちらにあるのかを判断することで、行うことができる。VDEVと判断した場合、ステップ1007にすすみ、EDEVと判断した場合、ステップ1008にすすむ。
ステップ1007では、テーブル構築プログラムが、選択されたVDEVの空き領域と対象LDEVの容量とを基に、該VDEVにおける対象LDEVの論理アドレス範囲(例えば、VDEVにおける先頭LBAと終端LBA)を決定する。テーブル構築プログラムが、該VDEVを構成する各HDD16(VDEV構成テーブル500から特定されるHDD16)に接続されたDKA13のディスクI/O処理部913に、上記決定した論理アドレス範囲及び上記指定された暗号鍵を通知する。ディスクI/O処理部913が、論理物理変換部911に、通知された論理アドレス範囲を各HDD16の物理アドレス範囲に変換させる。ディスクI/O制御部913は、それにより得られた物理アドレス範囲(暗号化範囲)と、上記通知された暗号鍵と、インデックス番号(例えばディスクI/O処理部913によって決定されたインデックス番号)とを、各HDD16に送信する。それにより、各HDD16のI/O処理部923が、受信したインデックス番号、物理アドレス範囲及び暗号鍵を、鍵管理テーブル160に登録する。なお、ディスクI/O制御部913は、物理アドレス範囲及びインデックス番号を、DKA13のメモリ132に記憶しておき、HDD16にデータのリード要求を送信する場合には、読出し元の物理アドレスを含む物理アドレス範囲に対応したインデックス番号を指定することで、該指定したインデックス番号に対応する暗号鍵を用いた復号化を実行させても良い。また、「暗号化範囲」とは、HDD16のハードディスク927全体の物理アドレス範囲うち、暗号化する必要のある物理アドレス範囲、つまり、鍵管理テーブル160に設定されている物理アドレス範囲のことである。
ステップ1008では、テーブル構築プログラムが、ステップ1005で指定された暗号鍵を、LU構成テーブル600における、対象LDEVに対応したセルに登録する。
図11は、ホストアダプタ11がホスト4からI/O要求を受信した場合に実行される処理の流れの一例を示す。
ステップ1102では、コマンド処理部901が、ホスト4からのI/O要求(ライト要求或いはリード要求)で指定されているLUN及びWWNに対応したLDEV番号を特定する。LUN及びWWNが、内部LDEVに対応したものであれば、HDEV構成テーブル500(図6参照)から、LDEV番号を特定することができる。一方、LUN及びWWNが、EDEVに対応したものであれば、該EDEVをEDEV情報テーブル250(図8B参照)から特定し、且つ、受信したI/O要求で指定されている、該特定されたEDEVにおけるLBAを基に、該LBAを論理アドレス範囲として含む外部LDEVのLDEV番号を、EDEV構成テーブル650(図9参照)から特定することができる。
ステップ1103では、コマンド処理部901が、特定されたLDEV番号に対応するLDEVが、外部LDEVであるか内部LDEVであるかを判断する。外部LDEVであれば(ステップ1103でYES)、ステップ1104に進み、それにより、外部LDEV I/O処理が実行される。一方、内部LDEVであれば(ステップ1103でNO)、ステップ1105に進み、それにより、内部LDEV I/O処理が実行される。
図12は、内部LDEV I/O処理の流れの一例を示す。これは、内部LDEVが、RAID5のVDEVに含まれている場合の例である。この図12の説明では、該内部LDEVを「対象内部LDEV」と言い、該VDEVに属する各HDDを「対象HDD」と言い、ホスト4からのI/O要求で指定されているLBAから算出される物理アドレス(HDDでのアドレス)を「対象物理アドレス」と言う。
ステップ1201では、ホスト4からのI/O要求で指定されているLBAが対象物理アドレスに変換される。具体的には、例えば、コマンド処理部901が、DKA13に、ホスト4からのI/O要求で指定されているLBAを含んだI/O要求を出し、ディスクI/O処理部913が、そのI/O要求を受ける。その要求は、キャッシュ/制御メモリ14の制御領域に書かれても良いし、DKA13に送信されても良い。そのDKA13は、各対象HDD16に接続されたDKA13である。該DAK13のディスクI/O処理部913が、受けたI/O要求中のLBAを対象物理アドレスに変換することを論理物理変換部911に実行させる。
ステップ1202では、コマンド処理部901が、受けたI/O処理が、ライト要求であるかリード要求であるかを判断する。ライト要求である場合には、ステップ1203に進み、リード要求である場合には、ステップ1206に進む。なお、このステップ1202は、ステップ1201が終了する前に完了されても良い。
ステップ1203では、コマンド処理部901が、ホスト4からのライト要求に従う平文(ライト対象データ)を、キャッシュ/制御メモリ14のキャッシュ領域に格納する。
ステップ1204では、ディスクI/O処理部913が、対象内部LDEVから取得されたデータ及びパリティ(旧データ及び旧パリティ)と、キャッシュ領域上の平文(新規データ)を基に、新規パリティが生成される。
ステップ1205では、ディスクI/O処理部913が、対象物理アドレスを指定した、新規データ及び新規パリティのライト要求を、各対象HDD16に送信することにより、新規データ及び新規パリティを書込む。
ステップ1206では、ディスクI/O処理部913が、各対象HDD16に、対象物理アドレスを指定した通常リード要求を送信する。これにより、各対象HDD16から、暗号文が平文に変換されて読み出される。
ステップ1207では、ディスクI/O処理部913が、読み出されたデータ(平文)を、キャッシュ領域に格納する。
ステップ1208では、コマンド処理部901が、キャッシュ領域に格納されたデータを、ホスト4(図11のステップ1102で受信したリード要求の送信元)に送信する。
図13は、外部LDEV I/O処理の流れの一例を示す。この図13の説明では、アクセス先となる外部LDEVを「対象外部LDEV」と言い、対象外部LDEVを含むEDEVを「対象EDEV」と言い、ホスト4からのI/O要求で指定されているLBAから算出される、対象EDEVにおけるアドレスを「対象EDEVアドレス」と言う。
ステップ1301では、ホスト4からのI/O要求で指定されているLBAが対象EDEVアドレスに変換される。具体的には、例えば、コマンド処理部901が、ホスト4からのI/O要求で指定されているLUN、WWN及びLBAを基に、対象EDEVアドレスとして、外部ストレージサブシステム2に対するI/O要求で指定するLUN、WWN及びLBAを求める。このアドレス変換は、例えば、前述した特開2005−107645号公報(US出願番号10/769805号、US出願番号11/471556号)に開示の方法で行うことができる。
ステップ1302では、コマンド処理部901が、受けたI/O処理が、ライト要求であるかリード要求であるかを判断する。ライト要求である場合には、ステップ1303に進み、リード要求である場合には、ステップ1306に進む。
ステップ1303では、コマンド処理部901が、ホスト4からのライト要求に従う平文(ライト対象データ)を、キャッシュ/制御メモリ14のキャッシュ領域に格納する。
ステップ1304では、コマンド処理部901が、対象外部LDEVに対応する暗号鍵をLU構成テーブル600から特定し、特定した暗号鍵を、外部アダプタ12のコントローラE/D部124に通知する。これにより、コントローラE/D部124に、暗号鍵が設定される。
ステップ1305では、キャッシュ領域に格納された平文が、コントローラE/D部124によって暗号文にされ、該暗号文が外部ストレージサブシステム2に格納される。具体的には、例えば、コマンド処理部901が、対象EDEVアドレスと共に、外部ストレージサブシステム2へのライト要求の発行を、外部I/O処理部903に指示する。外部I/O処理部903が、キャッシュ領域から平文を読出し、対象EDEVアドレスを指定した、読み出した平文のライト要求を発行する。そのライト要求が、コントローラE/D部124を通過して外部ストレージサブシステム2に送信される。コントローラE/D部124は、例えば、I/O要求のデータ部分を暗号化/復号化するように構成されており、それ故、該ライト対象の対象EDEVアドレスは暗号化されず、データ部分である平文が暗号化されて、出力される。
ステップ1306では、ステップ1304と同じ処理が実行される。
ステップ1307では、外部ストレージサブシステム2からのデータリードが実行される。具体的には、例えば、コマンド処理部901が、対象EDEVアドレスと共に、外部ストレージサブシステム2へのリード要求の発行を、外部I/O処理部903に指示する。外部I/O処理部903が、対象EDEVアドレスを指定したリード要求を発行する。そのリード要求に応答して、外部アダプタ12のI/F123が、外部ストレージサブシステム2から暗号文を受信し、コントローラE/D部124により、上記設定された暗号鍵を用いた復号化が実行される。それにより、受信した暗号文が平文に変換される。外部I/O処理部903が、平文を、キャッシュ領域に格納する。
ステップ1308では、コマンド処理部901が、キャッシュ領域上のデータ(平文)を、ホスト4に送信する。
図14は、HDD16の書込み処理の一例を示す。
ステップ2000では、I/O処理部923が、対象物理アドレス(LBA)を指定したライト要求を受け、該ライト要求が、通常ライト要求か、非復号化ライト要求かを判断する。通常ライト要求とは、暗号化してライトすることの要求であり、非暗号化ライト要求とは、暗号化しないでライトすることの要求である。通常ライト要求であるか非暗号化ライト要求であるかは、例えば、DKA13から受信するライト要求(ライトコマンド(CDB(Command Descriptor Block)とも呼ばれる)中の特定バイト位置に、非暗号化ライト要求を意味するフラグが設定されているか否かにより、判断することが出来る。この場合には、ディスクI/O処理部913は、通常ライト要求を発行する場合には、ライト要求にそのフラグを設定しないで送信し、非暗号化ライト要求を発行する場合には、ライト要求にそのフラグを設定して送信することができる。上記受けたライト要求が、通常ライト要求の場合には、ステップ2001にすすみ、非暗号化ライト要求の場合には、ステップ2003に進む。また、通常ライト要求であるか非暗号化ライト要求であるかを判別するための、別の方法として、ライト要求で指定された物理アドレス範囲が、鍵管理テーブル160に登録されているか否かにより判定することも可能である。
ステップ2001では、I/O処理部923が、対象物理アドレスを指定したライト要求を受け、対象物理アドレスが暗号化範囲に属するか否かを、鍵管理テーブル160(図3B参照)を参照することにより判断する。対象物理アドレスが暗号化範囲であれば、ステップ2002にすすみ、対象物理アドレスが暗号化範囲でなければ、ステップ2003にすすむ。
ステップ2002では、I/O処理部923が、データ(平文)を装置E/D部921を通じてハードディスク927に書込む。これにより、平文が装置E/D部921により暗号文に変換されてハードディスク927に書込まれる。
ステップ2003では、I/O処理部923が、データを装置E/D部921に暗号化させることなくハードディスク927に書込む。暗号化させない方法としては、例えば、装置E/D部921に暗号化不要を表すフラグを設定した後にデータを装置E/D部921を経由させる方法や、装置E/D部921を経由しないデータ送信ラインを選択し該データ送信ラインを通じてデータをハードディスク927に書込む方法がある。これは、復号化させない方法にも適用することができる。
図15は、HDD16の読出し処理の一例を示す。
ステップ2101では、I/O処理部923が、対象物理アドレスを指定したリード要求を受け、該リード要求が、通常リード要求か、非復号化リード要求かを判断する。通常リード要求とは、復号化してリードすることの要求であり、非復号化リード要求とは、復号化しないでリードすることの要求である。通常リード要求であるか非復号化リード要求であるかは、例えば、リード要求中の所定位置に、非復号化リード要求を意味するフラグが設定されているか否かにより、判断することができる。この場合には、ディスクI/O処理部913は、通常リード要求を発行する場合には、リード要求にそのフラグを設定しないで送信し、非復号化リード要求を発行する場合には、リード要求にそのフラグを設定して送信することができる。上記受けたリード要求が、通常リード要求の場合には、ステップ2102にすすみ、非復号化リード要求の場合には、ステップ2104に進む。
ステップ2102では、I/O処理部923が、通常リード要求で指定されている対象物理アドレス(LBA)が暗号化範囲に属するか否かを、鍵管理テーブル160(図3B参照)を参照することにより判断する。対象物理アドレスが暗号化範囲であれば、ステップ2103にすすみ、対象物理アドレスが暗号化範囲でなければ、ステップ2104にすすむ。
ステップ2103では、I/O処理部923が、データを装置E/D部921を通じてハードディスク927から読み出す。これにより、暗号文が装置E/D部921により平文に変換されたものが、I/O処理部923に取得される。I/O処理部923は、その取得された平文を、ディスクI/O処理部913に送信する。
ステップ2104では、I/O処理部923が、データを装置E/D部921に復号化させることなくハードディスク927から読み出す。
図16は、ペア構成テーブルの構成例を示す。
ペア構成テーブル700は、キャッシュ/制御メモリ14に格納される制御情報に含まれるものであり、ボリュームペアの構成を管理するためのテーブルである。ペア構成テーブル700には、プライマリLDEVのLDEV番号が書かれるカラム701と、セカンダリLDEVのLDEV番号が書かれるカラム702と、コピーステータスが書かれるカラム703と、セカンダリLDEVの暗号鍵が書かれるカラム704とがある。すなわち、このテーブル700には、各ボリュームペア毎に、コピー元のLDEVであるプライマリLDEVのLDEV番号と、コピー先のLDEVであるセカンダリLDEVのLDEV番号と、コピーステータスと、該セカンダリLDEVの暗号鍵とが書かれる。
コピーステータスは、プライマリLDEVとセカンダリLDEVとがミラー状態になっているか否かを示す。ミラー状態とは、プライマリLDEV内の全データがセカンダリLDEVにコピーされている、すなわち、プライマリLDEVとセカンダリLDEVが同じになっている状態である。コピーステータス"PAIR"は、ミラー状態を意味し、コピーステータス"COPY"は、ミラー状態ではなく、プライマリLDEV内の全てのデータがコピーされセカンダリLDEVにされきっていない状態を意味する。
本実施形態では、例えば、テーブル構築プログラムが、管理者からセカンダリLDEVも暗号化したいとの指定を受けた場合には、該セカンダリLDEVとボリュームペアを構成するプライマリLDEVに対応した暗号鍵をLU管理テーブル600から取得し、取得した暗号鍵を、ペア構成テーブル700のカラム704における、該セカンダリLDEVに対応したセル(領域)に登録することができる。その際、もし、プライマリLDEVに対応した暗号鍵が無い場合には、テーブル構築プログラムが、暗号鍵指定処理(例えば図10のステップ1005)を実行し、それにより得られた暗号鍵を、上記セルに登録しても良い。
図17は、ペア形成処理の流れの一例を示す。
ステップ3001では、ストレージサブシステム1のCPUで実行されるテーブル構築プログラムが、新規に形成するボリュームペア(以下、対象ボリューム)に関する情報を、管理端末6の管理プログラムから受ける。具体的には、例えば、管理プログラムが、管理端末6の記憶資源に記憶されている情報を基に、ストレージサブシステム1における複数のLDEVと、セカンダリストレージサブシステム3における複数のLDEVとを選択可能に表示することで、プライマリLDEVとセカンダリLDEVの選択を受け、該選択された各LDEVに関する情報(例えばLDEV番号)を、テーブル構築プログラムに通知する。
ステップ3002では、初期コピー処理が開始される。この所期コピー処理は、例えば、テーブル構築プログラムがリモートコピー処理部902に初期コピー処理開始を指示することを契機に開始される。初期コピー処理については、図18を参照して後に詳述する。
ステップ3003では、テーブル構築プログラムが、初期コピー処理の開始を契機に、対象ボリュームペアのコピーステータス(ペア構成テーブル700におけるエントリ)を"COPY"にする。
ステップ3004では、テーブル構築プログラムが、初期コピー処理が完了したか否かを判断する。完了していれば、ステップ3005にすすみ、完了していなければ、再びステップ3004を実行する。
ステップ3005では、テーブル構築プログラムが、初期コピー処理の開始を契機に、対象ボリュームペアのコピーステータスを"PAIR"にする。
図18は、初期コピー処理の流れの一例を示す。なお、以下、この図18の説明において、プライマリLDEVを含むVDEVに対応した各HDDを「対象HDD」と言う。
この初期コピー処理では、プライマリLDEVの先頭アドレスから終端アドレスまでシーケンシャルにコピーが実行される。
具体的には、ステップ3101において、リモートコピー処理部902が、ディスクI/O処理部913に、プライマリLDEVのアドレスA(例えば初期コピー処理開始直後は先頭アドレス)を物理アドレス(対象HDDにおけるアドレス)に変換させる。
ステップ3102では、リモートコピー処理部902が、コピー先に暗号文と平文のどちらを送信するのかを判断する。これは、例えば、ペア構成テーブル700において、セカンダリLDEVに暗号鍵が対応付けられているか否かにより判断することができる。なお、一度ペア構成テーブル700を参照してこの判断を行ったならば、次回以降のこのステップ3102では、いちいちそのテーブル700を参照しなくて良い。平文を送信する場合には、ステップ3111にすすみ、暗号文を送信する場合には、ステップ3103に進む。
ステップ3111では、リモートコピー処理部902が、ディスクI/O処理部913に、ステップ3101で得られた変換後の物理アドレスを指定した通常リード要求を、各対象HDD16に送信させる。これにより、各対象HDD16から平文(格納されている暗号文が復号されて読み出されたもの)が読み出される。
一方、ステップ3103では、リモートコピー処理部902が、ディスクI/O制御部913に、ステップ3101で得られた変換後の物理アドレスを指定した非復号化リード要求を、各対象HDD16に送信させる。これにより、各対象HDD16から暗号文(格納されている暗号文が復号化されることなくそのまま読み出されたもの)が読み出される。
ステップ3104では、リモートコピー処理部902が、リードデータ(ステップ3103の後であれば暗号文、ステップ3111の後であれば平文)を、セカンダリストレージサブシステム3に送信する。その送信では、例えば、セカンダリLDEVのLUN及びWWNとLBAとを指定した、リードデータのライト要求を送信することができる。
ステップ3105では、リモートコピー処理部902が、次の読出し元とする、プライマリLDEVのアドレスAを1増やす。
ステップ3106では、リモートコピー処理部902が、更新後のアドレスAが、プライマリLDEVの終端であるか否かを判断する。終端であれば、終了となり、終端でなければ、ステップ3101に戻る。
図19は、更新コピー処理の流れの一例を示す。なお、この図19は、前述した種々の処理で説明済みの事項については、図示を省略している。
更新コピー処理とは、ボリュームペアのコピーステータスが"PAIR"或いは"COPY"であるプライマリLDEVに対し、新たにデータが格納される場合に、実行される処理である。
例えば、コマンド処理部901が、ホスト4から受けた平文(ライト対象データ)をキャッシュ領域に格納したときに、該平文がHDD16に送信されていなくても、ホスト4に、I/O完了を通知することができる(ステップ3500)。
ステップ3501では、コマンド処理部901が、特定されたLDEV番号のLDEVが、コピー対象であるか否かを判断する。具体的には、例えば、特定されたLDEV番号を用いて、ペア構成テーブル700を参照し、該LDEV番号に対応したLDEVが、プライマリLDEVのLDEV番号であって、コピーステータスが"PAIR"或いは"COPY"であるか否かを判断する。コピー対象であるならば、コマンド処理部901が、コピー指示をリモートコピー処理部902に出してステップ3502に進み、コピー対象でないならば、更新コピー処理は不要のため、この処理は終了となる。
ステップ3503では、リモートコピー処理部902が、キャッシュ領域上の平文を二重化することでミラーデータ(平文の複製)を作成し、作成したミラーデータをキャッシュ領域に格納する。
ステップ3504では、リモートコピー処理部902が、コピー先のセカンダリLDEVが暗号化対象か否か(例えば、セカンダリLDEVに対応した暗号鍵がペア構成テーブル700に登録されているか否か)を判断する。暗号化対象であれば、ステップ3506にすすみ、暗号化対象でなければ、ステップ3507にすすむ。
ステップ3506では、ミラーデータの暗号化転送が実行される。具体的には、例えば、リモートコピー処理部902が、セカンダリLDEVに対応した暗号鍵をペア構成テーブル700から取得し、取得した暗号鍵を、コントローラE/D部124に通知する。そして、リモートコピー処理部902が、該セカンダリLDEVのLUN及びWWN等を指定した、該ミラーデータのライト要求を、外部アダプタ12のI/F123を通じて、セカンダリストレージサブシステム3に送信する。それにより、該ミラーデータである平文が暗号文に変換されて、セカンダリストレージサブシステム3に送信される。
一方、ステップ3507では、ミラーデータの非暗号化転送が実行される。具体的には、例えば、リモートコピー処理部902が、コントローラE/D部124に非暗号化を意味するフラグを通知する。そして、リモートコピー処理部902が、該セカンダリLDEVのLUN及びWWN等を指定した、該ミラーデータのライト要求を、外部アダプタ12のI/F123を通じて、セカンダリストレージサブシステム3に送信する。それにより、該ミラーデータである平文がコントローラE/D部124による暗号化が行われずに、該平文のまま、セカンダリストレージサブシステム3に送信される。
図20は、フェイルバック処理の一例を示す。なお、以下、この図20の説明において、プライマリLDEVを含むVDEVに対応した各HDDを「対象HDD」と言う。
フェイルバック処理とは、セカンダリストレージサブシステム3のセカンダリLDEV内のデータを、プライマリLDEVに戻す処理である。具体的には、例えば、ストレージサブシステム1が災害などでダウンした際、セカンダリストレージサブシステム3で、業務が継続される。その場合、ストレージサブシステム1の復旧処理が完了したならば、セカンダリストレージサブシステム3からストレージサブシステム1にデータをコピーすることで、データの復旧を行うことができる。その際のデータコピー処理が、このフェイルバック処理である(災害などでストレージサブシステム1を交換してフェイルバック処理を行う場合には、管理者がLU構成テーブル600を再構築することができる)。
このフェイルバック処理では、例えば、プライマリLDEVがコピー先とされ、セカンダリLDEVがコピー元とされて、データコピーが実行される。
具体的には、例えば、ステップ4001で、リモートコピー処理部902が、ディスクI/O処理部913に、プライマリLDEVのアドレスA(例えば開始時点では先頭アドレス)を、物理アドレス(対象HDDにおけるアドレス)に変換させる。
ステップ4002では、リモートコピー処理部902が、平文受信モードであるか否かを判断する。平文受信モードとは、平文で受信することを意味する状態であり、セカンダリLDEVに暗号文が格納されている場合(例えば、セカンダリLDEVに暗号鍵が対応付けられている場合)には、平文受信モードではないモードとして動作する。
平文受信モードではない場合、コントローラE/D部124による復号化がされることなく、セカンダリLDEVから暗号文が取得され、キャッシュ領域に格納される。具体的には、例えば、リモートコピー処理部902が、復号化不要を意味する値をコントローラE/D部124に設定して、セカンダリLDEVに対するリード要求をセカンダリストレージサブシステム3に送信することで、コントローラE/D部124による復号化がされない暗号文が取得され、キャッシュ領域に格納される。この場合、ステップ4003にすすむ。ステップ4003では、リモートコピー処理部903が、ディスクI/O処理部913に、キャッシュ領域上の暗号文の非暗号化ライト要求を各対象HDD16に送信させる。
一方、平文受信モードの場合、コントローラE/D部124による復号化がされることにより、セカンダリLDEVからの暗号文が変換された平文が取得され、キャッシュ領域に格納される。具体的には、例えば、リモートコピー処理部902が、復号化不要を意味する値をコントローラE/D部124に設定せず、セカンダリLDEVに対するリード要求をセカンダリストレージサブシステム3に送信することで、コントローラE/D部124によって暗号文が復号化された平文が取得され、キャッシュ領域に格納される。この場合、ステップ4011にすすむ。ステップ4011では、リモートコピー処理部903が、ディスクI/O処理部913に、キャッシュ領域上の平文の通常ライト要求を各対象HDD16に送信させる。
ステップ4004では、リモートコピー処理部902が、次の書込み先とする、プライマリLDEVのアドレスAを1増やす。
ステップ4005では、リモートコピー処理部902が、更新後のアドレスAが、プライマリLDEVの終端であるか否かを判断する。終端であれば、ステップ4004にすすみ、該プライマリLDEVを含んだボリュームペアのコピーステータスを"PAIR"とし、終端でなければ、ステップ4001に戻る。
以上が、第一実施形態の説明である。
この第一実施形態によれば、ストレージサブシステム1には、装置E/D部921を有したHDD16が搭載される。そして、ホスト4からのライト要求を処理した場合の書込み先が、外部LDEV或いはセカンダリLDEV(本実施形態では更新コピー処理)の場合に、コントローラE/D部124で平文を暗号化するが、内部LDEVの場合には、コントローラE/D部124での暗号化を行わず、平文のままHDD16に送信する。その場合でも、HDD16に装置E/D部921があるので、装置E/D部921に暗号文にされて格納される。これにより、データ保護を実現しつつ、コントローラ974の性能劣化を抑えることができる。
また、この第一実施形態によれば、更新コピー処理では、コントローラE/D部124による暗号化が実行されるが、初期コピー処理では、コントローラE/D部124にる暗号化を不要とし、HDD16内の暗号文がそのままセカンダリストレージサブシステム3に送信される。このため、データ保護を実現しつつ、初期コピー処理でのコントローラ974の性能劣化を抑えることができる。
<第二の実施形態>。
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する。
図21は、本発明の第二実施形態に係る計算機システムの物理的な構成例を示す。
この図によれば、ストレージサブシステム1の外部に存在するストレージサブシステムとして、E/D(暗号化/復号化)部8を有したストレージサブシステム1´がある。ストレージサブシステム1´は、外部ストレージサブシステム2やセカンダリストレージサブシステム3の一種とすることができる。
この場合、リモートコピー処理部902或いはコマンド処理部901が、ライト要求或いはリード要求の送信先となる外部のストレージサブシステムが、E/D部8を有するか否かを判断することができる。これは、例えば、各種外部のストレージサブシステム毎にE/D部を有するか否かを表すテーブルを用意しておき、リモートコピー処理部902或いはコマンド処理部901が、そのテーブルを参照することにより、判別することができる。リモートコピー処理部902或いはコマンド処理部901が、送信先となる外部のストレージサブシステムが、E/D部8を有すると判断した場合には、コントローラE/D部124による暗号化をさせることなく平文を送信することができる。この場合には、その外部のストレージサブシステム1´のE/D部8により、平文が暗号化されて格納されることになる。E/D部8は、コントローラに搭載されたE/D部でも良いし、HDDに搭載されたE/D部でもよい。暗号化をせずに送信する場合、例えば、リモートコピー処理部902或いはコマンド処理部901は、外部LDEV、プライマリLDEV或いはセカンダリLDEVに対応付けられた暗号鍵を、外部のストレージサブシステム1´に通知し、その暗号鍵で、暗号化させても良い。
図22は、第二の実施形態におけるLU構成テーブルの構成例を示す。
このLU構成テーブル600´では、一つのLDEVに、複数の暗号鍵が対応付けられている。そして、それら複数の暗号鍵毎に、論理アドレス範囲が設定されている。具体的には、論理アドレス範囲の先頭アドレスが書かれるカラム606´と、論理アドレス範囲の後端アドレスが書かれるカラム607´とが設けられている。
つまり、この第二の実施形態では、一つのLDEVを複数の領域に細分化し、各領域に、暗号鍵を対応付けることができる。
図23は、第二の実施形態でのLDEV作成処理の流れの一例を示す。以下、第一の実施形態でのLDEV作成処理(図10)との違いを主に説明する。
図10のステップ1005が、この図23ではステップ1005´となっている。すなわち、暗号鍵だけでなく、各暗号鍵が対象LDEVのどの論理アドレス範囲に対応付けるのかが指定される。そのため、ステップ1007では、各論理アドレス範囲に対応した物理アドレス範囲が暗号化範囲として各対象HDD16に通知される。
また、図10のステップ1006でNOの場合、この第二実施形態では、ステップ1011´及びステップ1012´が実行される。
ステップ1011´では、テーブル構築プログラムが、EDEVの属するストレージサブシステムが暗号化機能付きかどうか(E/D部があるかどうか)を判断する。暗号化付きの場合には、ステップ1012´に進み、そうではない場合には、終了となる。
ステップ1012´では、テーブル構築プログラムが、ステップ1005´で指定された暗号鍵を、該暗号鍵が対応付けられる対象LDEVを、EDEVの属するストレージサブシステム1´に通知する。これにより、ストレージサブシステム1´に平文が送信された場合、そのストレージサブシステム1´のE/D部8では、外部LDEVに対応付けられた暗号鍵で平文が暗号化されて格納される。
以上が、第二の実施形態の説明である。なお、図示は省略しているが、前述したように、コマンド処理部901或いはリモートコピー処理部902が、外部接続或いはリモートコピーにおけるライト要求或いはリード要求の送信先のストレージサブシステムが、暗号化機能付きか否かを判別し、暗号化機能が付いていない場合には、コントローラE/D部124による暗号化により得られた暗号文を送信するが、暗号化機能が付いている場合には、コントローラE/D部124による暗号化を行わせず平文のまま送信する。これにより、コントローラ974の性能劣化を抑えることができる。
<第三の実施形態>。
図24は、本発明の第三の実施形態における自動容量拡張技術の説明図である。
自動容量拡張技術とは、HDEVに対するライトに応じて、プール領域内のディスクブロックを動的に割当てたり、該割当てを解除したりすることで、HDEVの使用容量を動的に拡張することができる技術である。この技術は、Thin Provisioning技術と呼ばれることもある。以下、その一例を簡単に説明するが、自動容量拡張技術として、例えば、特開2003−15915号公報(US特許番号6725328号、US特許番号6836819号、US出願番号10/991421号)に開示の技術を援用することもできる。
ストレージサブシステム1(例えばホストアダプタ11)により、ホスト4に、HDEVが提供される。HDEVとは、Higher Deviceを略したものである。HDEVは、前述したVDEVより上位に位置するという意味で付与した便宜上の名称である。HDEVは、仮想的な論理ボリュームとすることができる。この実施形態では、ホスト4にとってのLUは、その仮想的な論理ボリュームであるHDEVである。
ストレージサブシステム1には、プール領域が用意されている。プール領域は、VDEVやEDEVの集合である。プール領域は、多数のディスクブロック(ディスクブロックに限らない論理領域でも良い)で構成されている。それら多数のディスクブロックのうちの未割当てのディスクブロックが、HDEVに動的に割当てられる。
図25は、HDEV構成テーブルの構成例を示す。
HDEV構成テーブル600Aは、HDEVの構成に関する情報を管理するためのテーブルであり、例えばキャッシュ/制御メモリ14に格納される。このテーブル600Aの構成は、図7を参照して説明したLU構成テーブル600と略同様である。相違点としては、LDEV番号が書かれるカラム601に代えて、HDEV番号(HDEVの識別子)が書かれるカラム601´が用意される点である。この実施形態では、HDEVに暗号キーが対応付けられている。
図26は、割当て管理テーブルの構成例を示す。
割当て管理テーブル6000は、HDEVに対するどの部分にどのディスクブロックが割当て(アサイン)されているかを管理するためのテーブルであり、例えばキャッシュ/制御メモリ14に格納される。具体的には、例えば、このテーブル6000には、HDEV番号が書かれるカラム6001と、HDEVの論理アドレス範囲(HDEVの一領域を表す、HDEVのアドレス範囲)の先頭アドレスが書かれるカラム6002と、HDEVの論理アドレス範囲の終端アドレスが書かれるカラム6003と、HDEVに割当てられているディスクブロックを有したVDEV或いはEDEVの番号が書かれるカラム6004と、割当てられているディスクブロックの先頭アドレスが書かれるカラム6005と、割当てられているディスクブロックの終端アドレスが書かれるカラム6006とがある。
図27は、プール領域管理テーブルの構成例を示す。
プール領域管理テーブル6500は、プール領域のうちの未割当てのディスクブロックを管理するためのテーブルであり、例えばキャッシュ/制御メモリ14に格納される。具体的には、例えば、このテーブル6500には、HDEVに未割当てのディスクブロックを有したVDEV或いはEDEVの番号が書かれるカラム6501と、未割当てのディスクブロックの先頭アドレスが書かれるカラム6502と、未割当てのディスクブロックの終端アドレスが書かれるカラム6503とがある。
未割当てのディスクブロックがHDEVに割当てられると、このプール領域管理テーブル6500から、そのディスクブロックに対応する各エントリが削除され、そして、その各エントリが、割当て管理テーブル6000に追加される。逆に、HDEVに対するディスクブロックの割当てが解除されると、そのディスクブロックに対応する各エントリが、割当て管理テーブル6000から削除され、そして、その各エントリが、プール領域管理テーブル6500に追加される。この一連の動的割り当て及び解除は、例えば、コマンド処理部901やリモートコピー処理部902が実行することができる。
図28は、HDEV作成処理の流れの一例を示す。以下、第一の実施形態でのLDEV作成処理(図10)との違いを主に説明する。
図10のステップ1001は不要となる。VDEV或いはEDEVからHDEVが作成されるわけではないためである。
ステップ1003では、HDEV構成テーブル600Aが構築される。
ステップ1004にて暗号化が選択された場合、ステップ1005では、領域(例えばHDEV番号)と暗号鍵が指定される。暗号鍵は、自動で生成されても良いし、管理者から鍵を受け取るのでも良い。
ステップ1008では、HDEV構成テーブル600Aに、指定された領域に対して指定された暗号鍵が対応付けられる。
図29は、第三の実施形態において、ホストアダプタ11がホスト4からI/O要求を受信した場合に実行される処理の流れの一例を示す。以下、図11との相違点を主に説明する。
ステップ1102とステップ1103との間に、新たなステップ10001´〜ステップ10003´が実行される。
ステップ10001´では、コマンド処理部901が、I/O要求で指定されているLBAに、ディスクブロックが割当て済みであるか否かを、割当て管理テーブル6000を参照することにより判断する。割当て済みであれば、ステップ10003´に進み、割り当て済みでなければ、ステップ10002´に進む。
ステップ10002´では、コマンド処理部901が、プール領域管理テーブル6500から、必要なサイズ分の数の未割当てのディスクブロックを特定し、特定したディスクブロックを、HDEVに割当てる。
ステップ10003´では、コマンド処理部901が、I/O要求で指定されているLBAを、割当てたディスクブロックのLBAに変換する。
ステップ1103では、I/O要求で指定されているLBAに割当てられたディスクブロック(つまりアクセス対象ブロック)が、HDEVとEDEVのどちらに属するものであるかが判別される。HDEVに属する場合には、内部LDEV I/O処理が実行され、EDEVに属する場合には、外部LDEV I/O処理が実行される。
図30は、第三の実施形態での内部LDEV I/O処理の流れの一例を示す。以下、図12との相違点を主に説明する。
ステップ1201では、アクセス対象ブロックのLBAのアドレス変換が実行される。ステップ1204とステップ1205との間に、ステップ12001´及びステップ12004´が実行され、ステップ1205では、ステップ12005´が実行される。また、ステップ1202でNOの場合、ステップ1206に代えてステップ12006´が実行される。
ステップ12001´では、コマンド処理部901が、対象HDD16の鍵管理テーブル160に、新たに割当てられたディスクブロックLBAに対応する物理アドレスを含む物理アドレス範囲と、該物理アドレス範囲に対応付けられた暗号鍵とが登録済みか否かを判断する。ここでは、例えば、図29のステップ10001´で割当て済みだった場合には、登録済みと判断し、未割当ての場合には、登録済みでないと判断することができる。登録済みの場合、ステップ12005´に進み、登録済みではない場合、ステップ12004´に進む。
ステップ12004´では、コマンド処理部901が、ディスクI/O処理部913に、ステップ10002´で新たに割当てられたディスクブロックに対応する物理アドレス範囲を有するHDD16に、インデックス番号と暗号鍵との組を通知させる。このような処理により、該HDD16の鍵管理テーブル160おいて、同一の物理アドレス範囲に対応付けられる暗号鍵が、動的に変えることができる。ここでは、例えば、各ディスクブロック毎に対応付けられたインデックス番号が記録されているテーブルがあり、ディスクI/O処理部913が、そのテーブルから、割当てられたディスクブロックに対応するインデックス番号を特定し、インデックス番号と、割当て先のHDEVに対応した暗号鍵とを通知することができる。なお、この方法に代えて、第一の実施形態と同様の方法、すなわち、物理アドレス範囲を指定する方法が採られても良い。
ステップ12005´では、ディスクI/O処理部913が、ステップ10003´により得られたLBAを含むディスクブロックに対応するインデックス番号を指定した、新規データ及び新規パリティのライト要求を、各対象HDD16に送信する。なお、この実施形態では、インデックス番号を指定したライト要求が、通常ライト要求となり、インデックス番号が指定されていない(代わりに例えば物理アドレス範囲が指定されている)ライト要求が、非暗号化ライト要求となる。
ステップ12006´では、ディスクI/O処理部913が、ステップ10003´により得られたLBAを含むディスクブロックに対応するインデックス番号を指定したリード要求を、各対象HDD16に送信する。なお、この実施形態では、インデックス番号を指定したリード要求が、通常リード要求となり、インデックス番号が指定されていない(代わりに例えば物理アドレス範囲が指定されている)リード要求が、非復号化リード要求となる。
図31は、第三の実施形態での外部LDEV I/O処理の流れの一例を示す。以下、図13との相違点を主に説明する。
ステップ1301の処理が不要となる。既に、図29のステップ10003´で、ホスト4からのI/O要求で指定されているLBAに対応した、EDEVにおけるLBAが得られているためである。
以上が、第三の実施形態の説明である。この第三の実施形態によれば、自動容量拡張技術においても、データ保護を実現しつつ、コントローラ974の性能劣化を抑えることができる。
<第四の実施形態>。
第四の実施形態では、ジャーナルデータを利用したリモートコピーが実行される。以下に説明するのは、ジャーナルデータを利用したリモートコピー技術の一例であり、それに限定する必要は無い。
ジャーナルデータには、例えば、プライマリLDEVに書かれる平文と、更新順序(例えば番号或いはタイムスタンプ)と、プライマリLDEVのLDEV番号とが含まれる。例えば、このようなジャーナルデータが、プライマリLDEVに対する平文のライト要求を受信した場合に、生成され、ジャーナルLDEVに書かれる。ジャーナルLDEV内のジャーナルデータが、セカンダリストレージサブシステム3に送信される。ジャーナルLDEVは、本実施形態では内部LDEVであるが、外部LDEVであっても良い。
図32は、第四の実施形態でのVDEV構成テーブルの構成例を示す。
VDEV構成テーブル500´には、ジャーナルLDEVか否かを表す値が書かれるカラム505がある。その値が1の場合に、対応するLDEVがジャーナルLDEVであることを示す。
図33は、ジャーナルLDEVについてのポインタの説明図である。
本実施形態では、セカンダリサブストレージシステム3に転送されるジャーナルデータは、このジャーナルLDEVに先頭から順に書き込まれる。また、ジャーナルLDEVの先頭から順に、ジャーナルデータが読み出されセカンダリサブストレージシステム3に転送されていく。この処理は、リモートコピー処理部902が実行することができる。
本実施形態では、ジャーナルLDEVに対して、2種類のポインタ(以下、ジャーナルポインタ1、2)が用意される。
ジャーナルポインタ2は、新規のジャーナルデータの書込み先位置を表す。すなわち、本実施形態では、新規のジャーナルデータを書き込むべき位置を把握するため、リモートコピー処理部902では「ジャーナルポインタ2」という変数を持ち、ジャーナルポインタ2が新規ジャーナル書き込み位置を指すように維持管理される。ジャーナルポインタ2がジャーナルLDEV終端までくると、ジャーナルポインタ2は先頭に戻る。
一方、ジャーナルポインタ1は、読出し元位置の先頭を表す。ジャーナルデータが読み出されてセカンダリストレージサブシステム3に転送される都度に、ジャーナルポインタ1が次のアドレスに更新される。
図34は、ジャーナル書込み処理の一例を示す。
この実施形態では、図19の更新コピー処理に代えて、この図34のジャーナル書込み処理が実行される。
具体的には、コマンド処理部901により、ホスト4からの平文がキャッシュ領域に格納されたならば、I/O完了がホスト4に通知される(ステップ20002)。
リモートコピー処理部902が、その平文の書込み先がプライマリLDEVであれば(ステップ20003でYES)、該平文を含んだジャーナルデータを作成する(ステップ20004)。
次に、リモートコピー処理部902が、ディスクI/O処理部913に、ジャーナルポインタ2の指すLBAを物理アドレス(ジャーナルLDEVを含むVDEVに対応した各HDD16におけるアドレス)に変換させる(ステップ20005)。
次に、リモートコピー処理部902が、ディスクI/O制御部913に、プライマリLDEVの暗号鍵と、該変換後の物理アドレスを含む物理アドレス範囲とを、鍵管理テーブル160で対応付けさせ、更に、作成されたジャーナルデータを、その物理アドレスに格納させる。それにより、HDD16の装置E/D部921により、その暗号鍵でジャーナルデータが暗号化されて格納される。
最後に、リモートコピー処理部902は、ジャーナルポインタ2を更新する。
なお、ステップ20006において、装置E/D部921では、ジャーナルデータの全部が暗号化されるのではなく、平文の部分のみ(例えばジャーナルデータにおけるヘッダ部分以降)が暗号化されるようにしても良い。それにより、暗号化されたジャーナルデータが読み出された場合、平文以外は暗号化されていないので、該ジャーナルデータ中の暗号文がどのプライマリLDEVに存在するものであるか等を特定することができる。
図35は、ジャーナルコピー処理の一例を示す。
このジャーナルコピー処理は、例えば、図34のジャーナル書込み処理と独立して定期的に実行される。
ステップ21001では、リモートコピー処理部902が、ディスクI/O処理部913に、ジャーナルポインタ1の指すLBAを物理アドレスに変換させる。
ステップ21002では、リモートコピー処理部902が、ディスクI/O制御部913に、ジャーナルデータを復号化することなく、その物理アドレスから読み出すよう指示する。それにより、暗号化されたままのジャーナルデータが読み出されたならば、そのジャーナルデータを、セカンダリストレージサブシステム3に送信する。
最後に、リモートコピー処理部902は、ジャーナルポインタ1を更新する。
以上が、第四の実施形態である。なお、この第四の実施形態では、セカンダリストレージサブシステム3は、その暗号化されているジャーナルデータ中の暗号文を、セカンダリLDEVにリストアしていくことができる。
この第四の実施形態によれば、ジャーナルを利用したリモートコピー技術でも、データ保護を実現しつつ、コントローラ974の性能劣化を抑えることができる。
<第五の実施形態>。
第五の実施形態では、図37Aに示すように、ホスト4に、データのバックアップ装置999が接続されている。バックアップ装置999は、例えば、磁気テープ装置(例えば複数のテープ媒体を備えたテープライブラリ装置)であるが、他種の装置であっても良い。
図37Bに示すように、ホスト4は、所望のLUを指定したバックアップ要求をストレージサブシステム1に送信する(ステップ30001)。
この場合、そのLUに対応したLDEV内にある全データが、暗号文のまま読み出され(ステップ30002)、ホスト4に送信される(ステップ30003)。
ホスト4は、読み出された暗号文を、バックアップ装置999に格納する(ステップ30004)。
以上、本発明の幾つかの実施形態を説明したが、これらの実施形態は本発明の説明のための例示にすぎず、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。例えば、暗号化及び復号化の両方で同じ暗号鍵が使用されるが、それに代えて、暗号化用の鍵と復号化用の鍵とが別々に用意されても良い。
971…上位装置、973…第一のストレージサブシステム、974…第一のコントローラ、975…コントローラE/D(暗号化/復号化)部、977…キャッシュ領域、979…第一のストレージ装置、981…装置E/D部、985…第一の論理ボリューム、989…ストレージ媒体、1973…第二のストレージサブシステム、1974…第二のコントローラ、1979…第二のストレージ装置、1985…第二の論理ボリューム