WO2018158808A1 - 情報システム、管理プログラム及び情報システムのプログラム交換方法 - Google Patents

情報システム、管理プログラム及び情報システムのプログラム交換方法 Download PDF

Info

Publication number
WO2018158808A1
WO2018158808A1 PCT/JP2017/007719 JP2017007719W WO2018158808A1 WO 2018158808 A1 WO2018158808 A1 WO 2018158808A1 JP 2017007719 W JP2017007719 W JP 2017007719W WO 2018158808 A1 WO2018158808 A1 WO 2018158808A1
Authority
WO
WIPO (PCT)
Prior art keywords
computer
volume
sds
logical volume
program
Prior art date
Application number
PCT/JP2017/007719
Other languages
English (en)
French (fr)
Inventor
山本 彰
貴大 山本
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2017/007719 priority Critical patent/WO2018158808A1/ja
Priority to JP2019502312A priority patent/JP6835949B2/ja
Priority to CN201780085761.3A priority patent/CN110300960B/zh
Priority to US15/932,214 priority patent/US10152260B2/en
Publication of WO2018158808A1 publication Critical patent/WO2018158808A1/ja
Priority to US16/192,919 priority patent/US10788999B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Abstract

本発明の一実施形態に係る情報システムは、仮想化機能を備えたSDS(Software Defined Storage)である第1の計算機と、SDSである第2の計算機とを含んでいる。第1の計算機は仮想化機能により、第2の計算機が有するボリュームを記憶領域として用いる論理ボリュームを提供できる。情報システムは、第2の計算機へのストレージ制御プログラムのインストール指示を受け付けると、第1の計算機が有する論理ボリュームのうち第2の計算機が有するボリュームを記憶領域とする論理ボリュームを特定し、特定された論理ボリュームが記憶領域として使用している、第2の計算機が有するボリュームに格納されたデータを、第1の計算機の有する記憶装置に移動する。その後第2の計算機にストレージ制御プログラムをインストールする。

Description

情報システム、管理プログラム及び情報システムのプログラム交換方法
 本発明は、計算機、特にSDS(Software Defined Storage)として動作する計算機を含む情報システムに関する。
 ストレージシステム(ストレージ装置)の管理コストを削減するための技術として、ストレージシステムの仮想化技術がある。この技術は、管理方法が異なる多岐に渡るストレージシステムを、仮想化技術によって、統一的な管理を実現することで、管理コストを削減し、またストレージシステムの使い勝手を向上させる。
 特許文献1は、ストレージシステムの仮想化技術に関する。本文献では、ホスト計算機に接続された第1のストレージシステムに、第2のストレージシステムが接続された計算機システムが開示されている。この計算機システムは、ホスト計算機に対して、第2のストレージシステムのボリュームを第1のストレージシステムのボリュームとして提供する。この構成では、ホスト計算機からは、第2のストレージシステムは隠蔽されており、ホスト計算機の読み書き要求はすべて、第1ストレージシステムに発行される。ホスト計算機から受領した読み書き要求が、第2のストレージシステムのボリュームに対するものであれば、第1のストレージシステムはその要求を、第2のストレージシステムに発行して、読み書き要求を実行させる。これにより、ストレージの管理者は実質的に第1のストレージシステムだけを管理すれば良くなり、ストレージシステムの管理工数を大幅に削減できる。
 一方、近年、SDS(Software Defined Storage)という技術が注目されている。この技術は、汎用用途のサーバで動作可能なソフトウェアによって、ストレージシステムの機能を実現する技術である。従来は、ベンダが、ストレージを専用装置(ソフトウエア+ハードウエア)として提供していたが、SDSを提供する場合、ベンダはSDS用のソフトウェア(本明細書ではこれを、ストレージ制御プログラムと呼ぶ)のみをユーザに提供して、ユーザは自身で用意したハードウェア(汎用用途のサーバ)にこのソフトウェアをインストールすることで、ストレージシステムを構築することができる。
特開平10-283272号公報
 SDSの仕様(機能等)は、汎用用途のサーバにインストールされるストレージ制御プログラムに依存して異なり得る。そのため、多種多様のSDSが混在する環境では、従来の専用装置で構成されるストレージシステムと同様に、管理の煩雑さという問題は起こり得る。
 しかしSDSの場合、ユーザがSDSにインストールするストレージ制御プログラムを自由に選択する(交換する)ことも可能である。そのため、ユーザのシステム環境において多種多様のSDSが混在している場合、SDSのプログラムをユーザの用途にあったものに交換することで、管理の煩雑さを解消できることもある。
 ただし、異なる種類のSDSでは、SDS内に格納されるデータのフォーマットが異なることがあるので、SDSにインストールされているストレージ制御プログラムを新しいものに入れ替えた場合、既にSDS内に格納されているデータにアクセスすることができず、データが実質的に消失した状態になることもあり得る。そのため、既存のデータを失うことなくプログラムを入れ替えることができる技術が求められる。
 本発明の一実施形態に係る情報システムは、仮想化機能を備えたSDS(Software Defined Storage)である第1の計算機と、SDSである第2の計算機とを含んでいる。第1の計算機は仮想化機能により、第2の計算機が有するボリュームを記憶領域として用いる論理ボリュームを提供できる。情報システムは、第2の計算機へのストレージ制御プログラムのインストール指示を受け付けると、第1の計算機が有する論理ボリュームのうち第2の計算機が有するボリュームを記憶領域とする論理ボリュームを特定し、特定された論理ボリュームが記憶領域として使用している、第2の計算機が有するボリュームに格納されたデータを、第1の計算機の有する記憶装置に移動する。その後第2の計算機にストレージ制御プログラムをインストールする。
 本発明によれば、データを維持しつつ、SDSのプログラムの交換が可能になる。
本実施例における情報システムの構成を示す図である。 本実施例におけるSDSの構成を示す図である。 仮想化機能の概念を説明する図である。 本実施例におけるI/O要求のフォーマットの例を示す図である。 本実施例におけるThin Provisioning機能の概念を説明する図である。 管理情報に含まれる情報を示す図である。 論理ボリューム情報の形式を示す図である。 実ページ情報の形式を示す図である。 記憶装置情報の形式を示す図である。 記憶装置グループ情報の形式を示す図である。 空きページ管理情報キューの構造を表した図である。 ストレージ制御プログラムに含まれるプログラムモジュールを示す図である。 リード処理実行部の処理フロー(1)を示す図である。 リード処理実行部の処理フロー(2)を示す図である。 ライト処理実行部の処理フロー(1)を示す図である。 ライト処理実行部の処理フロー(2)を示す図である。 プログラム交換処理の手順を示す図である。 コピー処理スケジュール部の処理フローを示す図である。 コピー処理実行部の処理フローを示す図である。
 以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
 実施例の説明に入る前に、実施例で用いられる各種用語について説明する。
 以下で説明する実施例においては、SDS(Software Defined Storage)は、従来からあるストレージ装置の対義語として用いられる語である。従来からあるストレージ装置の多くは、専用のハードウェアで構成されていた。以下で説明する実施例においては特に断りのない限り、従来からあるストレージ装置(つまり専用のハードウェアで構成されたストレージ装置)を、「在来型ストレージ装置」と呼ぶ。
 逆に、専用のハードウェアを用いずに構成されたストレージ装置、具体的にはパーソナルコンピュータ(PC)等の汎用的な計算機に、ストレージ装置の機能を実現するためのソフトウェア(コンピュータプログラム)を実装した装置を「SDS(Software Defined Storage)」と呼ぶ。
 以下で説明する実施例においては、「ストレージ装置」は、在来型ストレージ装置とSDSの両方を意味する語として用いられる。たとえば在来型ストレージ装置とSDSが共通に備える機能や特徴を説明する場合、「ストレージ装置」の語が用いられる。
 「ボリューム」とは、ストレージ装置や記憶デバイス等のターゲットデバイスが、ホスト計算機等のイニシエータに提供する記憶空間のことを意味する。イニシエータがボリューム上の領域に対するアクセス要求、たとえばデータリード要求を発行すると、ボリュームを提供しているターゲットデバイスは、その領域に対応付けられているターゲットデバイス上の領域(物理領域と呼ばれる)からデータを読み出して、イニシエータに返送する。
 ストレージ装置の中には、ボリュームとして、いわゆるThin Provisioning技術により形成される仮想的なボリュームを、イニシエータに提供できるものがある。以下で説明する実施例では、仮想的なボリュームをイニシエータに提供する機能を「Thin Provisioning機能」と呼ぶ。
 仮想的なボリュームは、その初期状態(定義された直後)では、記憶空間上の領域に記憶デバイスが対応付けられていない。イニシエータが記憶空間上の領域にデータ書き込み要求を発行した時点で、ストレージ装置はその領域に対応付けられる記憶デバイスを動的に決定する。以下で説明される実施例におけるSDSは、仮想的なボリュームをイニシエータに提供できる。
 「ボリュームの仮想化機能」(または単に「仮想化機能」と呼ばれることもある)とは、他のストレージ装置が有するボリュームを、自己の論理ボリュームとしてイニシエータデバイスに提供する機能である。ボリュームの仮想化機能は、たとえば専用の装置(仮想化アプライアンスと呼ばれる)に実装されて提供される。あるいはストレージ装置がボリュームの仮想化機能を備えていることもある。以下に述べる実施例においては、SDSがボリュームの仮想化機能を備えている例を説明する。
 図1は、本実施例における情報システムの構成を示す。情報システムは、複数のサーバコンピュータ(100,105,140)を有し、これらのサーバコンピュータ(100,105,140)がネットワーク120で相互接続されて構成される。サーバコンピュータ(100,105,140)はいずれも、パーソナルコンピュータ等の汎用的な計算機であり、基本的なハードウェア構成はいずれも同じである。ただしそれぞれのサーバコンピュータ(100,105,140)のハードウェア構成は、必ずしも完全に同一でなくてもよい。たとえばサーバコンピュータ(100,105,140)の有するプロセッサ(CPU(Central Processing Unit))の数やメモリ容量等が異なっていてもよい。
 複数のサーバコンピュータ(100,105,140)のうち、サーバコンピュータ105は、ユーザが使用するアプリケーションプログラム(AP)が実行される計算機で、以下ではこれを「APサーバ105」と呼ぶ。アプリケーションプログラムはたとえば、データベース管理システム(DBMS)あるいは表計算ソフトウェアやワードプロセッサ等のプログラムである。
 一方サーバコンピュータ100は、APサーバ105が使用するデータを格納するためのストレージ装置として動作する計算機である。サーバコンピュータ100はいわゆるSoftware Defined Storage (SDS)であり、サーバコンピュータ100のプロセッサで、サーバコンピュータ100はストレージ装置として機能させるためのプログラム(後述するストレージ制御プログラム130)が実行されることにより、サーバコンピュータ100はストレージ装置としての動作を行う。そのため、以下ではサーバコンピュータ100のことを、「SDS100」と呼ぶ。
 SDS100は、1以上のボリュームを定義することができ、定義されたボリュームはAPサーバ105等のイニシエータに提供される。APサーバ105は、ボリューム(を提供しているSDS100)に対してライトコマンドを発行することで、アプリケーションプログラムによって生成されたデータ(たとえばデータベーステーブルなど)を、ボリュームに格納し、またボリューム(を提供しているSDS100)に対してリードコマンドを発行することで、データをボリュームから読み出す。
 本実施例では、APサーバ105とSDS100との間でやり取りされるI/O要求(コマンド)は、ANSI T10で規格化されているSCSIの規格に従ったコマンド(以下、「SCSIコマンド」と呼ぶ)とする。ただし、SCSIコマンド以外の種類のI/O要求が用いられてもよい。
 サーバコンピュータ140は、情報システムの使用者または管理者(以下では単に、「ユーザ」と呼ぶ)が情報システムの管理操作を行うために使用する計算機であり、以下ではこれを「管理サーバ140」と呼ぶ。管理サーバ140は、ユーザが情報システムの管理操作を行う時に使用する、キーボードやマウスなどの入力デバイス、ディスプレイ等の出力デバイスを有する。もちろん管理サーバ140以外のサーバコンピュータ(SDS100、APサーバ105)も入力デバイスと出力デバイスを備えていてもよい。
 SDS100、APサーバ105、管理サーバ140はそれぞれ、情報システム内に複数存在していてもよい。ただし本実施例では、APサーバ105、管理サーバ140はそれぞれ情報システム内に1台存在し、SDS100は2台以上情報システム内に存在する例を説明する。また、それぞれのSDS100で実行されるプログラム(ストレージ制御プログラム130)は、必ずしも同一のプログラムでなくてもよい。
 ネットワーク120にはたとえば、イーサネットやファイバチャネル等の伝送媒体が用いられる。ネットワーク120は、APサーバ105がSDS100に対してデータを読み書きする際に用いられるとともに、管理サーバ140とSDS100(またはAPサーバ105)との間での管理操作コマンド(または各種管理情報)のやり取りにも用いられる。ただし別の実施形態として、APサーバ105とSDS100との間で読み書きされるデータを送受信するためのネットワークと、管理サーバ140が管理操作コマンド等を送受信するためのネットワークの、2種類が設けられていてもよい。
 図2は、SDS100の構成を示している。SDS100は、一つ以上のプロセッサ(CPU)200、主記憶(メモリ)210、記憶装置220、ネットワークインタフェースコントローラ(NIC)190、ディスクインタフェース(DISK I/F)180を含む。プロセッサ200、記憶装置220、NIC190、DISK I/F180の数は、1つでも複数でも良い。
 プロセッサ200は、主記憶210にロードされた各プログラムを実行する。主記憶210は、DRAM(Dynamic Random Access Memory)等の揮発性メモリであり、主記憶210には、ストレージ制御プログラム130、管理プログラム150、インストールプログラム250、そしてストレージ制御プログラム130が利用する管理情報230が格納される。
 一方、記憶装置220は、磁気ディスクまたはフラッシュメモリ等の、不揮発性記憶媒体を有する記憶デバイスで、APサーバ105から書き込まれたデータを格納するために用いられる。なお、上で述べたストレージ制御プログラム130や管理情報230などは、SDS100が稼働していない時(電源OFFの状態の時)には記憶装置220に格納されており、SDS100が起動された時に、記憶装置220から主記憶210にロードされるとよい。
 ディスクインタフェース180は、プロセッサ200と記憶装置220との間に設けられるインタフェースデバイスである。一方NIC190は、SDS100をネットワーク120に接続するためのインタフェースデバイスで、SDS100とネットワーク120間に設けられる伝送線(ネットワークケーブル)を接続するためのポートも有する。そのため以下では、NIC190を「ポート190」と表記することもある。
 続いて主記憶210上に格納されているプログラムの役割を概説する。なお、以後の説明では、サーバコンピュータ(SDS100,APサーバ105、管理サーバ140等)で実行される処理について、「プログラム」を主語として説明を行う場合があるが、実際には、サーバコンピュータのプロセッサがプログラムを実行することによって、プログラムに記述された処理が行われる。ただし説明が冗長になることを防ぐため、プログラムを主語にして処理の内容を説明することがある。そしてプログラムを主語にして説明されている処理の主体は、実際にはプログラムを実行しているプロセッサであることを意味する。
 ストレージ制御プログラム130は、SDS100(つまりサーバコンピュータ)をストレージ装置として機能させるためのプログラムである。具体的には、SDS100はストレージ制御プログラム130の働きにより、APサーバ105等のイニシエータに1以上のボリュームを提供する、イニシエータからI/O要求(リード要求やライト要求)を受け付けて、リード要求で指定されたアドレスのデータをイニシエータに返送する、またはライト要求で指定されたライトデータをボリュームに格納する等の処理を行う。なお、良く知られているように、在来型ストレージ装置はボリュームを提供する以外の機能(たとえばボリュームのミラーコピーを作成する等)を有する。ストレージ制御プログラム130も同様に、SDS100にボリュームを提供する以外の機能を実現するプログラムであってもよい。
 またストレージ制御プログラム130は、APサーバ105から頻繁にアクセスされるデータを保持しておくための領域を、主記憶210上に確保する。APサーバ105から頻繁にアクセスされるデータを保持するための領域をキャッシュ領域240と呼ぶ。ただしSDS100は必ずしもキャッシュ領域240を有していなくてもよい。
 またSDS100は、主記憶210に保持されているデータが停電等の障害時に消失することを防ぐ手段を有していてもよい。たとえばSDS100がバッテリーを有し、停電時にバッテリーから供給される電力を用いて、主記憶210上のデータを維持するとよい。ただしSDS100は必ずしもバッテリー等のデータ維持手段を有していなくてもよい。
 管理プログラム150(あるいはストレージ管理プログラム150)は、情報システム内のストレージ装置(SDS)を管理するためのプログラムである。具体的には管理プログラム150で行われる管理とは、ボリュームの定義、削除等の操作、SDS100の状態の監視などである。本実施例では、管理プログラム150は情報システム内の特定の1台のSDS100(後述するSDS#x)にインストールされている例を説明する。管理プログラム150は情報システム内の全てのSDSの管理を行うことができる。また管理サーバ140では、SDS100で実行される管理プログラム150と通信を行う、クライアントプログラム(非図示)が実行されており、ユーザはクライアントプログラムを用いて、管理サーバ140にボリュームの定義等の指示を行う。
 インストールプログラム250は、プログラムをインストールするためのプログラムである。インストールプログラム250は情報システム内の各SDS100が有している。例えば、ストレージ制御プログラム130は、インストールプログラム250によってSDS100にインストールされる。ユーザがプログラムのインストールを行う時、ユーザは管理サーバ140を用いて、SDS100で実行される管理プログラム150に対してインストールの指示を出す。インストールの指示を受領した管理プログラム150は、プログラムのインストール先のSDS100が有するインストールプログラム250にプログラムのインストールを行わせる。
 なお、SDS100では上で述べたプログラム以外のプログラムも実行されていてよい。たとえばSDS100(のプロセッサ200)では、汎用的な計算機で実行されるオペレーティングシステムが実行されていても良く、その場合ストレージ制御プログラム130等は、オペレーティングシステムの提供する機能を用いながら動作してもよい。あるいはSDS100上で、いわゆる仮想計算機を定義するためのプログラム(たとえばハイパーバイザと呼ばれる)が実行されても良く、その場合ストレージ制御プログラム130等は、定義された仮想計算機上で実行されるとよい。
 本実施例に係る情報システムには、複数のSDS100が混在している。それぞれのSDS100で実行されるストレージ制御プログラム130は必ずしも同一種類のプログラムでなくてもよい。情報システムで複数種類のストレージ制御プログラム130が実行される場合、それぞれのストレージ制御プログラム130は少なくとも、汎用的な計算機(本実施例におけるサーバコンピュータなど)で実行可能なプログラムで、且つSDS100にストレージ装置としての最低限の機能を提供させることができるプログラムである必要があるが、サポートされる機能に差異があってもよい。なお、ストレージ装置としての最低限の機能とは、イニシエータに1以上のボリュームを提供し、イニシエータからのリードコマンド、ライトコマンドに従って、データの読み書きを行う機能である。
 本実施例では、図3に示すように、ボリュームの仮想化機能をもったSDS100(以下ではこれを、「SDS#x(300)」と呼ぶ)が1台存在し、またSDS#x(300)よりも提供できる機能が少ないSDS100(以下ではこれを、「SDS#y(301)」と呼ぶ)が1台以上、情報システム内に存在することを前提とする。たとえばSDS#y(301)は、SDS#x(300)が有する仮想化機能を有していない。あるいは別の例として、SDS#x(300)はボリュームの複製(ミラー)を遠隔地のストレージ装置に作成する機能(リモートミラーリング機能)や、データを圧縮して格納する機能を持っているのに対し、SDS#y(301)はそれらの機能を有していない。
 情報システム内に存在するSDS#x(300)とSDS#y(301)の数は、いずれも1つでも複数でも良いが、本実施例では特に断りのない限り、情報システム内にSDS#x(300)が1つ、SDS#y(301)が複数存在する例を説明する。またSDS#y(301)が複数存在する場合、それぞれのSDS#y(301)はストレージ装置としての最低限の機能を提供するが、それ以外にサポートされる機能の種類は異なっていてもよい。
 そして本実施例に係る情報システムでは、SDS#x(300)は仮想化機能により、その他のSDS#y(301)が有するボリュームを、自身の(SDS#x(300)の)ボリュームとしてAPサーバ105に提供する。なお、以下の説明では主にSDS#x(300)が行う機能についての説明を行う。そこでSDS#x(300)がAPサーバ105に提供するボリュームと、その他のSDS(SDS#y(301))が有するボリュームとの混同を避けるために、SDS#x(300)がAPサーバ105に提供するボリュームの事は「論理ボリューム」と呼ぶ。また本実施例では、APサーバ105は、SDS#x(300)が提供する論理ボリュームに対してI/O要求(リードコマンドやライトコマンド)を発行するように構成されており、他のSDS100(SDS#y(301))に対して直接I/O要求を発行しないように構成されている前提とする。
 続いて、本実施例に係るSDS#xにおける記憶領域の管理方法について説明する。SDS#x(300)は、記憶装置220の記憶空間を直接イニシエータ(APサーバ105など)に提供せず、これとは異なる記憶空間である論理ボリュームを定義する。SDS#x(300)は論理ボリュームを複数定義可能である。各論理ボリュームにはSDS#x(300)内で一意な識別番号が付され、これを論理ボリューム識別子(あるいは、論理ボリュームID)と呼ぶ。
 SDS#xは、Thin Provisioning機能により定義された論理ボリュームをAPサーバ105に提供することができる。同時にSDS#xはボリュームの仮想化機能を有し、他のストレージ装置の有する記憶領域を用いた論理ボリュームを定義することもできる。
 図3を用いて、仮想化機能の概要を説明する。図3において、SDS#x(300)は仮想化機能を有する装置で、LV0,LV1はいずれも、SDS#x(300)がAPサーバ105(またはその他の装置)に提供する論理ボリュームを表す。LV0はThin Provisioning機能により定義された論理ボリュームである。論理ボリュームLV0は、SDS#x(300)内の記憶装置220の記憶領域(実ページ)を用いて形成される。
 一方、LV1は仮想化機能により定義される論理ボリュームで、LV1は、他のストレージ装置(たとえばSDS#y(301))が提供するボリュームを記憶領域として使用するように構成されている。図3は、論理ボリュームLV1がSDS#y(301)が提供するボリューム(LV2)を記憶領域として使用する構成になっている状態を表した概念図である。以下ではこの状態を、「LV1にLV2がマップされている」、または「LV1にLV2が割り当てられている」と表現する。
 ボリュームLV2がマップされている論理ボリュームLV1に対してAPサーバ105がI/O要求(たとえばリードコマンド)を発行すると、SDS#x(300)はそのI/O要求を、論理ボリュームLV1にマップされているボリューム(ボリュームLV2)に対するI/O要求に変換する。さらにSDS#x(300)はネットワーク120経由で、変換されたI/O要求をSDS#y(301)に発行する(つまりこの時SDS#x(300)は、APサーバ105に対してはターゲットデバイスとして動作し、SDS#y(301)に対してイニシエータとして動作する)。
 図4に、本実施例において、イニシエータ(APサーバ105等)からSDS100に対して発行されるI/O要求(リードコマンドやライトコマンド)のフォーマットの例を示す。I/O要求400には少なくとも、オペレーションコード401、ポートID402、ボリューム識別子403、アクセスアドレス404、データ長405が含まれる。
 オペレーションコード401には、I/O要求の種類が格納される。たとえばAPサーバ105がリードコマンドを発行する場合、オペレーションコード401にリードコマンドである旨を表す情報が格納される。
 ポートID402は、アクセス対象のボリュームを有するSDS100のポート190の識別子である。ポート190の識別子には、iSCSI Name(ネットワーク120がTCP/IPプロトコルを伝送するネットワークの場合)や、PORT ID(ネットワーク120がファイバチャネルで構成されたネットワークの場合)などが用いられる。
 ボリューム識別子403は、アクセス対象のボリュームの識別子で、たとえばLUN(Logical Unit Number)等が用いられる。アクセスアドレス404とデータ長405は、アクセス対象ボリューム内の、アクセス対象範囲を表す情報である。アクセスアドレス404に“A”、データ長405に“B”が含まれている場合、アドレスAで始まるサイズBの領域がアクセス対象範囲であることを表す。なお、アクセスアドレス404やデータ長405に格納される情報の単位は、特定のものには限定されない。たとえばデータ長405にはブロック数(1ブロックはたとえば512バイトの領域である)が格納され、またアクセスアドレス404にはLBA(Logical Block Address)が格納されるとよい。
 また、I/O要求400には、上で説明した以外の情報(図4では“その他406”と表記する)が含まれていてもよい。たとえばI/O要求がライトコマンドの場合、データ長405の後に、ライト対象データが付加される。
 APサーバ105がLV1に対するI/O要求を発行した時、ポートID402には、SDS#x(300)のポート190-0の識別子が含まれ、ボリューム識別子403にはLV1の識別子(LUNなど)が含まれている。SDS#x(300)はこのI/O要求を受領すると、ポートID402を、SDS#y(301)のポート190-1の識別子に変更し、ボリューム識別子403をLV2のボリューム識別子に変更することで、I/O要求の変換を行う。そして変換されたI/O要求を、ネットワーク120経由でSDS#y(301)に送信する。
 なお、本実施例では特に断りのない限り、LV1のサイズは、LV1にマップされるボリューム(図3の例ではLV2)のサイズと同じ前提とする。またLV1上の各アドレスは、LV2の同じアドレスにマップされている前提とする。そのためSDS#x(300)は、APサーバ105から発行された、LV1に対するI/O要求を変換する時、アクセスアドレス404やデータ長405は変更しない。
 ただし別の実施形態として、LV1に複数のボリュームがマップされる構成もあり得る。たとえば図3において、LV1の記憶空間の前半にはLV2がマップされ、LV1の記憶空間の後半にはSDS#y(301-2)のボリュームLV3がマップされるように、LV1が構成されていてもよい。LV1がこのように構成されている場合、SDS#x(300)はLV1に対するI/O要求の変換を行う時、アクセスアドレス404の変更を行うことがある。
 さらに別の実施形態として、LV1の記憶空間の一部に、SDS#x(300)の有する記憶装置220の記憶空間がマップされるように構成されてもよい。
 続いてThin Provisioning機能と、SDS#x(300)内での記憶領域の管理方法について説明する。
 Thin Provisioning機能により形成される論理ボリュームは、自身が(つまりSDS#x(300)が)有する記憶装置220を記憶領域として使用するように構成されている。ただし最初は(この論理ボリュームが定義された直後は)、論理ボリューム上の各アドレスに対して書き込まれるデータの格納するために使用される記憶領域は定まっていない。APサーバ105等のイニシエータから論理ボリュームへのライト要求を受け付けたときにはじめて、SDS#x(300)はライト対象範囲(ライト要求で指定されている範囲)に書き込まれるデータの格納先となる、記憶装置220の記憶領域を決定する。以下では、ライト対象範囲(ライト要求で指定されている範囲)に書き込まれるデータの格納先を決定する処理のことを、「割り当てる」と表現する。
 Thin Provisioning機能により論理ボリュームに割り当てられる記憶領域について説明する。SDS#x(300)は、複数の記憶装置220の中のいずれか1つが故障しても、その記憶装置220のデータを回復できるRedundant Arrays of Inexpensive/Independent Disks/Device (RAID)機能を有する。SDS#x(300)は、SDS#x(300)内のいくつか(たとえば4つ、8つ等)の記憶装置220を用いて1つのRAIDを構成する。RAIDを構成する記憶装置220の集合を記憶装置グループ280と呼ぶ。本実施例に係るSDS#x(300)では、1つの記憶装置グループ280は同一種類の記憶装置220から構成される。またSDS#x(300)は、記憶装置グループ280の各記憶領域を、一次元のアドレスで特定可能にする記憶空間として管理する。
 図5を用いて、Thin Provisioning機能により形成される論理ボリュームと記憶装置グループ280の関係について説明する。SDS#x(300)は論理ボリューム(図中の“LV0”)に割り当てられる記憶領域の管理の為に、論理ボリュームを複数の仮想ページ(図5では、VP0、VP1、VP2)という所定サイズの領域ごとに管理している。論理ボリュームに記憶領域を割り当てる際、SDS#x(300)はこの仮想ページ毎に記憶領域を割り当てる。各仮想ページには論理ボリューム内で一意な識別番号が付される。この識別番号を仮想ページ番号と呼ぶ(あるいは「仮想ページ#」と表記されることもある)。また、仮想ページ番号がnの仮想ページは、“仮想ページ#n”と表記される。
 仮想ページは、SDS#x(300)内部で論理ボリュームの記憶空間の管理のためにのみ用いられる概念である。APサーバ105等のイニシエータは、論理ボリュームの記憶領域にアクセスする際には、LBA(Logical Block Address)などのアドレスを用いて、アクセス対象の記憶領域を特定する。APサーバ105が論理ボリュームへのアクセス要求を発行した時、SDS#x(300)は、APサーバ105が指定したLBAを仮想ページ番号及び仮想ページ内の相対アドレス(仮想ページ先頭からのオフセットアドレス)に変換する。この変換は、LBAを仮想ページサイズで除算することで実現できる。仮に仮想ページのサイズがP(MB)とすると、論理ボリュームの先頭位置からP(MB)分の領域が仮想ページ#0として管理され、その次のP(MB)分の領域が仮想ページ#1として管理される。そしてそれ以降も同様に、P(MB)の領域がそれぞれ、仮想ページ#2、#3…として管理される。
 SDS#x(300)が論理ボリュームを定義した直後は、各仮想ページに物理記憶領域は割り当てられていない。SDS#x(300)は、APサーバ105から仮想ページに対するライト要求を受け付けた時点ではじめて、その仮想ページに対して物理記憶領域を割り当てる。仮想ページに割り当てられる物理記憶領域は実ページと呼ばれる。実ページは、記憶装置グループ280上の記憶領域である。図5では、仮想ページ#0(VP0)に実ページRP0が割り当てられている状態を表している。
 実ページは、記憶装置グループ280の複数の記憶装置220の記憶領域を用いて形成される領域である。図5において、160-1,160-2,160-3,160-4はそれぞれ、各記憶装置220の記憶領域を表している。また、図5で例示している記憶装置グループ280のRAIDレベル(RAID技術における、データ冗長化方式の種類。RAIDレベルには一般的には、RAIDレベル1(RAID 1)からRAIDレベル6(RAID 6)の種類がある)は、RAID4で、またデータドライブ3台、パリティドライブ1台で構成されるRAIDである。ただし、記憶装置グループ280のRAIDレベルには、RAID4以外のもの(たとえばRAID5、RAID6等)が採用されてもよい。
 SDS#x(300)は、記憶装置グループ280に属する各記憶装置220の記憶領域を、ストライプブロックと呼ばれる複数の固定サイズの記憶領域に分割して管理する。たとえば図5において、0(D),1(D),2(D)…、またはP0,P1…と記載されているそれぞれの領域が、ストライプブロックを表している。
 図5で、ストライプブロックのうち、P0,P1…と記載されているストライプブロックは、RAID機能により生成される冗長データ(パリティ)の格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、0(D),1(D)、2(D)…と記載されているストライプブロックは、APサーバ105から書き込まれるデータ(冗長データではないデータ)が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。パリティストライプには、複数のデータストライプを用いて生成される冗長データが格納される。
 以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセットのことを、「ストライプライン」と呼ぶ。図5に示された例では、たとえばパリティストライプP0には、データストライプ0(D),1(D),2(D)を用いて生成される冗長データ(パリティ)が格納される関係にあり、データストライプ0(D),1(D),2(D)とパリティストライプP0は、同一のストライプラインに属する。
 つまり1つのストライプラインに属する各ストライプブロックは、ストレージ装置(160-1,160-2,160-3,160-4)上の同じ位置(アドレス)に存在する。ただし別の実施形態として、同一ストライプラインに属する各ストライプブロックが、記憶装置220上の異なるアドレスに存在する構成が採用されてもよい。実ページ(たとえばRP0、RP1)は図5に示されるように、1または複数のストライプラインから構成される領域である。
 またSDS#x(300)は、記憶装置グループ280の各記憶領域(ブロック)を、一次元のアドレスで特定可能にする記憶空間として管理する。以下ではこの記憶空間を「記憶装置グループの記憶空間」と呼び、この記憶空間上のアドレスを「記憶装置グループのアドレス」または「記憶装置グループアドレス」と呼ぶ。記憶装置グループアドレスの例を図5に示す。記憶装置グループの記憶空間は図5に示されているように、記憶装置グループ280内の各ストライプが、1つずつ順に配置された記憶空間である。記憶装置グループ内の先頭のストライプブロックの記憶装置グループアドレスが0と定められ、以下各ストライプブロックに、たとえば図5に示されるようにアドレスが付される。記憶装置グループのアドレスは、実ページと記憶装置グループ280上の記憶領域の対応関係を管理するために用いられる。
 また実ページが仮想ページに割り当てられる場合、データストライプ(0(D),1(D)等)のみが割り当てられ、パリティストライプは割り当てられない。そのため、実ページ上のライトデータの格納される領域の合計サイズは、仮想ページのサイズと等しい関係にある。つまり、(実ページのサイズーパリティ格納領域のサイズ)=仮想ページサイズ、の関係にある。図5ではRAID4の構成例についてのみ示されているが、たとえば記憶装置グループ280のRAIDタイプがRAID1の場合には、実ページサイズは、仮想ページサイズの2倍になる。
 なお、SDS#x(300)が必ずしもRAID機能をサポートしていなくてもよい。その場合、パリティストライプは定義されず、実ページのサイズと仮想ページのサイズは同じになる。
 仮想ページ内の各領域と、実ページ内の各領域との関係(マッピング)は、図5に示されている通りである。つまり、実ページの先頭ストライプからパリティを除いた領域(0(D)、1(D)、2(D))が、仮想ページの先頭領域に割り当てられている。それ以降も同様に、実ページの2番目以降の各ストライプからパリティを除いた領域(3(D)、4(D)、5(D)…)が、順番に仮想ページの領域に割り当てられる。
 このように、仮想ページ内の各領域と実ページ内の各領域とのマッピングは規則的にマッピングされているため、SDS#xは、APサーバ105からのアクセス要求で指定されている論理ボリューム上のアクセス位置(LBA)から仮想ページ番号及び仮想ページ内の相対アドレス(仮想ページ先頭からのオフセットアドレス)を求めることで、当該アクセス位置に対応付けられている記憶装置220及びその記憶装置220内の領域(データストライプ)を一意に算出できる。さらにアクセス位置に対応付けられているデータストライプに加え、そのデータストライプと同一ストライプラインに属するパリティストライプも一意に定まる。ただし、仮想ページ内の各領域と実ページ内の各領域とのマッピングは、ここで説明したマッピング方法に限定されるものではない。
 なお、1つの論理ボリューム中の各仮想ページに割り当てられる実ページは、必ずしも同一記憶装置グループ280内の実ページに限定されない。仮想ページ#0に割り当てられる実ページと、仮想ページ#1に割り当てられる実ページが、それぞれ異なる記憶装置グループ280内の実ページであってもよい。
 また仮想ページに割り当てられる実ページは、まだ他の仮想ページに割り当てられていない実ページでなければならない。仮想ページに割り当てられていない実ページのことを、「空きページ」または「空き実ページ」と呼ぶ。
 ここでは、SDS#x(300)の有するThin Provisioning機能と仮想化機能について説明したが、本実施例に係る情報システム内のその他のストレージ装置(SDS#y(301)など)はこれらの機能を有していなくてもよい。たとえばSDS#y(301)は、自身(SDS#y(301))が有する記憶装置220の記憶空間をそのまま、ボリュームとしてAPサーバ105等のイニシエータに提供するように構成されていてもよい。
 また、本実施例では、APサーバ105がSDS#y(301)の有するボリュームを使用する際、原則としてSDS#x(300)の仮想化機能を用いて使用する。つまりユーザがSDS#y(301)の有するボリュームを使用したい時には、ユーザはSDS#x(300)に論理ボリュームを定義し、SDS#y(301)のボリュームをSDS#x(300)の論理ボリュームにマップさせる。そしてユーザ(APサーバ105)は、SDS#x(300)に定義された論理ボリュームにアクセスすることで、SDS#y(301)のボリュームを使用する。
 続いて、本実施例におけるSDS#x(301)のストレージ制御プログラム130が使用する管理情報の内容を説明していく。図6は、SDS#x(301)が有する管理情報230に含まれる主な情報を示している。管理情報230には、論理ボリューム情報2000、実ページ情報2100、空きページ管理情報ポインタ2200、記憶装置グループ情報2300、記憶装置情報2500、仮想ページ容量2600が含まれる。ただし管理情報230にはこれ以外の情報が含まれていてよい。
 論理ボリューム情報2000は、論理ボリュームの構成(たとえば、仮想ページと実ページのマッピング)などの管理情報であり、SDS#x(300)が有する論理ボリューム毎に論理ボリューム情報2000が定義される。そのためSDS#x(300)内に論理ボリュームがL個定義された時、管理情報230内に論理ボリューム情報2000はL個存在する。以下では、ある論理ボリューム情報2000によって属性情報が管理される論理ボリュームのことを、「管理対象論理ボリューム」と呼ぶ。
 実ページ情報2100は実ページを管理するための情報で、実ページ毎に実ページ情報2100が存在する(管理情報230内には、SDS#x(300)が有する実ページの数と同数の実ページ情報2100が存在する)。以下、ある実ページ情報2100によって属性情報が管理される実ページのことを、「管理対象実ページ」と呼ぶ。
 記憶装置グループ情報2300は、SDS#x(300)が有する記憶装置グループ280の構成についての情報である。記憶装置グループ情報2300は記憶装置グループ280毎に存在する。以下、ある記憶装置グループ情報2300によって属性情報が管理される記憶装置グループのことを、「管理対象記憶装置グループ」と呼ぶ。
 記憶装置情報2500は、SDS#x(300)が有する記憶装置220についての情報で、記憶装置220毎に存在する。以下、ある記憶装置情報2500によって属性情報が管理される記憶装置のことを、「管理対象記憶装置」と呼ぶ。
 空きページ管理情報ポインタ2200は、空き実ページを管理するための情報であり、1つの記憶装置グループ280に対して1つの空きページ管理情報ポインタ2200が存在する。
 仮想ページ容量2600は、仮想ページのサイズを表す情報である。本実施例では、各論理ボリュームの仮想ページのサイズはいずれも等しい前提とする。そのため管理情報230内には仮想ページ容量2600は1つだけ存在する。
 図7は、論理ボリューム情報2000の形式を示したものである。論理ボリューム情報2000には、論理ボリュームID2001、論理ボリューム容量2002、仮想化フラグ2003、SDS ID2004、ボリュームID2005、コピー中フラグ2006、コピーポインタ2007、第2SDS ID2008、第2ボリュームID2009、論理ボリュームRAIDタイプ2010、待ちフラグ2011、実ページポインタ2012が含まれる。
 論理ボリュームID2001は、管理対象論理ボリュームの識別子を示す。本実施例では論理ボリュームの識別子には、LUN(Logical Unit Number)が用いられる例を説明する。ただし論理ボリュームの識別子は、SDS100内で一意な識別子であればよく、LUN以外の識別子が用いられてもよい。なお本実施例では識別子のことを「ID」と表記することもある。
 論理ボリューム容量2002は、管理対象論理ボリュームの容量である。
 仮想化フラグ2003には、0(オフ)または1(オン)の何れかが格納される。管理対象論理ボリュームが他のストレージ装置(SDS#x(300)以外のSDS100)のボリュームを用いて形成されている場合(つまり仮想化機能を用いて定義された論理ボリュームの場合)、仮想化フラグ2003はオン(1)に設定される。また論理ボリューム情報2000の仮想化フラグ2003がオンのとき、SDS ID2004、ボリュームID2005はそれぞれ、管理対象論理ボリュームにマップされているボリュームを有するSDS100の識別子とそのボリュームの識別子を表す。また本実施例では、SDS100の識別子として、SDS100のポート190の識別子が用いられる前提とする。そのため、SDS ID2004そして後述する第2SDS ID2008には、SDS100のポート190の識別子が格納される。ただしこれ以外の情報が、SDS100の識別子として用いられてもよい。
 コピー中フラグ2006、第2SDS ID2008は、論理ボリュームが仮想化機能を用いて定義された論理ボリュームの場合に用いられる。SDS#x(300)は、後述するコピー処理実行部4300を実行することで、仮想化機能を用いて定義された論理ボリュームのコピー処理を行うことがある。このコピー処理では、論理ボリュームにマップされたボリュームのデータを、他の場所(SDS#x(300)内の記憶装置220あるいは別のSDS100)にコピーする。コピー中フラグ2006は、論理ボリュームにマップされたボリュームのデータを他の場所にコピー中か否かを表す情報である。コピー中フラグ2006が“オン”(1)の時、コピー処理中であることを表す。コピーポインタ2007はコピー処理で用いられる情報で、詳細は後述する。
 第2SDS ID2008は、論理ボリュームにマップされたボリュームのデータの、コピー先のSDS100の識別子を表す。コピー先のSDS100は、自装置(つまりSDS#x(300))であってもよい。第2SDS ID2008が、SDS#x(300)の識別子であれば、コピー処理実行部4300は論理ボリュームにマップされたボリュームのデータを、SDS#xの有する記憶装置220上にコピー中であることを意味する。逆に第2SDS ID2008がSDS#xの識別子でなければ、論理ボリュームにマップされたボリュームのデータのコピー先は、別のSDS100のボリュームであることを意味する。データのコピー先が別のSDS100のボリュームである場合、第2ボリュームID2009は、データコピー先のボリュームの識別子を示す。
 論理ボリュームRAIDタイプ2010には、論理ボリュームに割り当てられる実ページを有する記憶装置グループ280のRAID構成についての情報が格納される。本実施例においてRAID構成とは具体的には、RAID(記憶装置グループ280)のRAIDレベルと、記憶装置グループ280を構成する記憶装置220の数を含む情報である。
 待ちフラグ2011は、管理対象論理ボリュームに待ち状態にあるリード・ライト処理があることを示す情報である。
 実ページポインタ2012は、管理対象論理ボリュームの仮想ページと実ページの対応関係(マッピング)についての情報である。実ページポインタ2012には、仮想ページに割り当てられた実ページのページ管理情報(後述する実ページ情報2100)へのポインタ(主記憶210上のアドレス)が格納される。
 1つの論理ボリューム情報2000の中に含まれる実ページポインタ2012の数は、管理対象論理ボリュームの仮想ページ数(論理ボリューム容量2002を仮想ページ容量2600で割った数と等しい)である。たとえば論理ボリュームの仮想ページ数がnであれば、その論理ボリュームの論理ボリューム情報2000内には、実ページポインタ2012はn個存在する。図7では、仮想ページ#p(pは0以上の整数とする)の実ページポインタ2012を「実ページポインタ2012-p」と表記している。
 なお、仮想ページに実ページが割り当てられる契機は、論理ボリュームが定義された時ではなく、仮想ページに対して、APサーバ105からのデータ書き込みが行われる契機である。したがって、まだ書き込みが行われていない仮想ページの実ページポインタ2012はNULL(無効値。たとえば“-1”等の値)になっている。
 図8は、実ページ情報2100の形式である。先に述べたとおり、実ページは記憶装置グループ280内に定義される記憶領域である。実ページ情報2100は実ページの存在する記憶装置グループ280、及び記憶装置グループ280内の位置を特定する情報を格納した情報であり、具体的には、記憶装置グループ2101、実ページアドレス2102、空きページポインタ2103を含んでいる。
 記憶装置グループ2101は、管理対象実ページの属する記憶装置グループ280の識別子(記憶装置グループIDと呼ぶ)を表す。実ページアドレス2102は、管理対象実ページの存在する位置を表す情報である。実ページは記憶装置グループ280内に存在するので、実ページアドレス2102に用いられる情報は、記憶装置グループ280のアドレスである。具体的には実ページアドレス2102には、管理対象実ページの先頭領域のアドレスが格納される。図5を参照しながら説明する。図5では、たとえばストライプブロックNが、実ページRP1の先頭に位置づけられ、またストライプブロックNのアドレス(ストレージグループアドレス)は“0x00015000”であるので(なお、“0x”は、数値が16進数表記であることを表す)、実ページRP1の実ページ情報2100の実ページアドレス2102には“0x00015000”が格納される。
 空きページポインタ2103は、管理対象実ページが仮想ページに割り当てられていない場合に用いられる。詳細は後述する。実ページが仮想ページに割り当てられている場合、その実ページの空きページポインタ2103にはNULLが格納される。
 図9は、記憶装置情報2500の形式である。記憶装置情報2500は、記憶装置220の属性情報を記録した情報で、記憶装置ID2501、記憶容量2502の情報を含む。記憶装置ID2501は管理対象記憶装置の識別子である。記憶容量2502は、管理対象記憶装置の容量である。
 図10は、記憶装置グループ情報2300の形式を示す。記憶装置グループ情報2300は、記憶装置グループID2301、記憶装置グループRAIDタイプ2302、実ページ数2303、空き実ページ数2304、記憶装置ポインタ2305の情報を有する。記憶装置ポインタ2305は、管理対象記憶装置グループに属する記憶装置220の管理情報(記憶装置情報2500)へのポインタである。記憶装置グループ280がN個の記憶装置220から構成される時、その記憶装置グループ280の記憶装置グループ情報2300は、N個の記憶装置ポインタ2305を有する。
 記憶装置グループID2301は、管理対象記憶装置グループの識別子である。記憶装置グループRAIDタイプ2302は、管理対象記憶装置グループのRAIDタイプである。記憶装置グループRAIDタイプ2302に格納される情報の内容は、論理ボリュームRAIDタイプ2010を説明したときに述べたものと同じである。実ページ数2303と空き実ページ数2304はそれぞれ、管理対象記憶装置グループが有する総実ページ数と、空き実ページの数を示す。
 続いて空きページ管理情報ポインタ2200について説明する。空きページ管理情報ポインタ2200は、記憶装置グループ280ごとに設けられる情報である。図11は、空きページ管理情報ポインタ2200によって管理される空き実ページの集合を表している。この構造を、空きページ管理情報キュー2201と呼ぶ。また、実ページ情報2100のうち、空き実ページに対応した実ページ情報2100を空き実ページ情報2100と呼ぶ。空きページ管理情報ポインタ2200は、先頭の空き実ページ情報2100のアドレスをさす。次に、先頭の実ページ情報2100の中の空きページポインタ2103が次の空き実ページ情報2100を指す。図11では、最後の空き実ページ情報2100の空きページポインタ2103は、空きページ管理情報ポインタ2200を指し示しているが、NULLでもよい。
 SDS#x(300)は、仮想ボリューム上の領域のうち、実ページが割り当てられていない仮想ページに対する書き込み要求を受け付けると、RAID構成がその仮想ボリュームの論理ボリュームRAIDタイプ2010と同一の記憶装置グループ280の中のいずれかの記憶装置グループ280を選択する。選択可能な記憶装置グループ280が複数ある場合、SDS#x(300)は例えば、空き実ページ数の最も多い記憶装置グループ280を選択し、その記憶装置グループ280の空きページ管理情報キュー2201から空き実ページを探し、仮想ページに割り当てる。
 次に、上記に説明した管理情報を用いてSDS#x(300)が実行する動作の説明を行う。SDS#x(300)の動作は、SDS#x(300)内のプロセッサ200が、主記憶210に格納されたストレージ制御プログラム130を実行することで実現される。ストレージ制御プログラム130は複数のプログラムモジュール(以下では「モジュール」と略記する)を含んでいる。図12は、ストレージ制御プログラム130が有するモジュールのうち、本実施例の説明に関係する各モジュールを示したものである。本実施例に関するモジュールは、リード処理実行部4000、ライト処理実行部4100、コピー処理スケジュール部4200、コピー処理実行部4300である
 図13及び図14は、リード処理実行部4000の処理フローである。リード処理実行部4000は、SDS#x(300)がAPサーバ105からリード要求を受け付けたときに実行される。なお、本実施例では説明が複雑になることを避けるために、APサーバ105から受領したリード要求で指定されているリード対象領域は、1つの仮想ページ内に収まっている例を説明する。
 ステップ5000:リード処理実行部4000は、リード要求で指定されている、リード対象論理ボリュームの論理ボリューム情報2000を参照し、仮想化フラグ2003がオンかを確認する。仮想化フラグ2003がオンであれば、次にステップ5008(図14)が行われ、オフの場合にはリード処理実行部4000は次にステップ5001を実行する。
 ステップ5001:リード処理実行部4000は、受け取ったリード要求で指定されたリード対象アドレスから、リード対象アドレスを含む仮想ページの仮想ページ#と仮想ページ内の相対アドレスを計算する。
 ステップ5002:当該ステップではリード処理実行部4000は、リード対象となった仮想ページに割り当てた実ページに対応する実ページ情報2100を、論理ボリューム情報2000の実ページポインタ2012から獲得する。
 ステップ5003:リード処理実行部4000は、リード対象の実ページが存在する記憶装置グループ280と、その記憶装置グループ280のアドレスを特定する。これらは、ステップ5002で獲得した実ページ情報2100の記憶装置グループ2101、実ページアドレス2102を参照することで得られる。
 ステップ5004:リード処理実行部4000は、ステップ5001で得た仮想ページ内の相対アドレスと記憶装置グループRAIDタイプ2302から、当該要求のアクセス対象となる実ページ内の相対アドレスを計算する。そしてリード処理実行部4000は、計算した実ページ内相対アドレス、記憶装置グループRAIDタイプ2302と記憶装置ポインタ2305とから、リード対象の記憶装置220を特定するとともに、その記憶装置220のリード先アドレスを特定する。 
 ステップ5005:リード処理実行部4000は、ステップ5004で特定した記憶装置220に対し、リード要求を発行する。
 ステップ5006:リード処理実行部4000は、記憶装置220からデータが返送されてくるまで待機する。
 ステップ5007:リード処理実行部4000は、記憶装置220から受け取ったデータを、APサーバ105に送り、処理を完了する。
 ステップ5008:リード処理実行部4000は、コピー中フラグ2006が、オンかをチェックする。オンであれば、次にステップ5010が実行される。
 ステップ5009:コピー中フラグ2006がオフの場合、リード処理実行部4000はSDS ID2004,ボリュームID2005で特定される、SDS100のボリュームに、APサーバ105から受け取ったリード対象アドレスとデータ長を指定して、リード要求を、ネットワーク120経由で発行する。この後リード処理実行部4000は、データが送られてくるまで待機し(ステップ5006)、その後ステップ5007を実行し、処理を終了する。
 ステップ5010:コピー中フラグ2006がオンの場合、リード処理実行部4000はAPサーバ105から受領したリード要求で指定されたアドレスがコピーポインタ2007より大きいかを判定し、大きい場合にはリード処理実行部4000はステップ5009を実行する。ステップ5009が実行された後の処理は、上で説明したとおりであるため、ここでの説明は略す。
 ステップ5011:APサーバ105から受領したリード要求で指定されたアドレスがコピーポインタ2007と等しい場合、リード対象領域がコピー中であることを意味する。そのためリード処理実行部4000は、リード対象論理ボリュームの待ちフラグ2011をオン(1)にして、コピー処理の完了を待つ。コピー処理が完了した後、リード処理実行部4000は再びステップ5010を実行する。
 ステップ5012:APサーバ105から受領したリード要求で指定されたアドレスがコピーポインタ2007より小さい場合、リード処理実行部4000は第2SDS ID2008が、SDS#x(300)の識別子と等しいかを判別する。等しい場合、リード処理実行部4000はステップ5001を実行する。
 ステップ5013:第2SDS ID2008が、SDS#x(300)の識別子と等しくない場合、リード処理実行部4000は第2SDS ID2008,第2ボリュームID2009で特定される、SDS100のボリュームに対して、リード要求をネットワーク120経由で発行する。この後リード処理実行部4000は、ステップ5006、ステップ5007を実行し、処理を終了する。
 図15及び図16は、ライト処理実行部4100の処理フローである。ライト処理実行部4100は、APサーバ105から、SDS#x(300)がライト要求を受け付けたときに実行される。なお、本実施例では説明が複雑になることを避けるために、APサーバ105から受領したライト要求で指定されているライト対象領域は、1つの仮想ページ内に収まっている例を説明する。
 ステップ6000:ライト処理実行部4100は、ライト要求で指定されている、ライト対象論理ボリュームの論理ボリューム情報2000を参照し、仮想化フラグ2003がオンかを確認する。仮想化フラグ2003がオンであれば、次にステップ6009が行われ、オフの場合にはライト処理実行部4100は次にステップ6001を実行する。
 ステップ6001:ライト処理実行部4100は、受け取ったライト要求で指定されたライト対象とするアドレスから、対応する仮想ページとアクセスする仮想ページ内の相対アドレスを計算する。
 ステップ6002:当該ステップではライト処理実行部4100は、ライト対象となった仮想ページに、実ページが割り当てられているかをチェックする。仮想ページに実ページが割り当てられていない場合、ステップ6015が実行されるが、割り当てられている場合にはステップ6015はスキップされる。
 ステップ6015:ここでは、ライト対象の仮想ページに実ページが割り当てられる。仮想ページへの実ページの割り当ては、以下のようにして行われる。ライト処理実行部4100は論理ボリューム情報2000の論理ボリュームRAIDタイプ2010、記憶装置グループ情報2300の、記憶装置グループRAIDタイプ2302、空き実ページ数2304等を参照して、どの記憶装置グループ280の実ページを割り当てるか選択する。続いて、ライト処理実行部4100は選択された記憶装置グループ280の空きページ管理情報キュー2201を参照して、ライト対象の仮想ページの実ページポインタ2012が、空きページ管理情報キュー2201の先頭に位置する空き実ページ情報2100(空きページ管理情報ポインタ2200で指し示されている空き実ページ情報2100)を指し示すようにする。
 またライト処理実行部4100は、空きページ管理情報ポインタ2200が空きページ管理情報キュー2201内の2番目の実ページ情報2100(仮想ページに割り当てた実ページの実ページ情報2100の中の空きページポインタ2103が指し示す実ページ情報2100)を示すように、空きページ管理情報ポインタ2200を更新し、さらに、仮想ページに割り当てた実ページの実ページ情報2100の中の空きページポインタ2103をNULLに変更する。また、当該実ページに対応する記憶装置グループ情報2300の空き実ページ数2304の数を減らす。仮想ページへの実ページの割り当てが行われた後、ステップ6003が行われる。
 なお、本実施例では、仮想ページへの実ページの割り当てはSDS100がライト要求を受け付けたときに実施される例を説明したが、この割り当て処理は必ずしもライト要求を受け付けた時に実施されなくてもよい。この割り当て処理は、SDS100が記憶装置220へデータを格納する時までに実行されればよい。
 ステップ6003:ライト処理実行部4100はライト対象仮想ページに割り当てられている実ページの実ページ情報2100を、論理ボリューム情報2000の実ページポインタ2012を参照することにより獲得する。
 ステップ6004:ライト処理実行部4100は、獲得した実ページ情報2100の記憶装置グループ2101、実ページアドレス2102から、ライト対象の実ページが存在する記憶装置グループ280とその記憶装置グループ280上のアドレスを特定する。これはステップ5003と同様の処理である。
 ステップ6005:ライト処理実行部4100はステップ6001で得た仮想ページ内の相対アドレスと記憶装置グループRAIDタイプ2302から、当該要求のアクセス対象となる実ページ内の相対アドレスを計算する。計算した実ページ内相対アドレス、記憶装置グループRAIDタイプ2302と記憶装置ポインタ2305とから、ライト先の記憶装置220及びその記憶装置220上のライト先アドレスを決定する。ライト処理実行部4100はまた、記憶装置グループRAIDタイプ2302を参照して、公知の方法で、必要な冗長データを生成し、冗長データを格納する記憶装置220とそのアドレスを決定する。
 ステップ6006:ライト処理実行部4100はステップ6005で決定した記憶装置220のアドレスを用いて、データの格納を指示するライト要求を作成して記憶装置220に発行する。またライト処理実行部4100は、冗長データの格納先の記憶装置220に対してもライト要求を発行して、冗長データの書き込みも行う。
 ステップ6007:ライト要求の発行後、ライト処理実行部4100は記憶装置220から応答が返却されるまで待機する。
 ステップ6008:ライト処理実行部4100はAPサーバ105に、完了報告を送る。
 ステップ6009:ライト処理実行部4100は、コピー中フラグ2006がオンかチェックする。オンであれば、次にステップ6011が行われる。
 ステップ6010:コピー中フラグ2006がオフの場合、ライト処理実行部4100はSDS ID2004,ボリュームID2005で特定される、SDS100のボリュームに対して、受け取った相対アドレスと長さを指定して、ライト要求を、ネットワーク120経由で発行する。この後ライト処理実行部4100は、ステップ6007、ステップ6008を実行し、処理を終了する。
 ステップ6011:コピー中フラグ2006がオンの場合、ライト処理実行部4100はAPサーバ105から受領したライト要求で指定されたアドレスがコピーポインタ2007より、大きいかを判定し、大きい場合、次にステップ6010を実行する。ステップ6010の後は、上で述べたとおり、ライト処理実行部4100は、ステップ6007、ステップ6008を実行し、処理を終了する。
 ステップ6012:APサーバ105から受領したライト要求で指定されたアドレスがコピーポインタ2007と等しい場合、ライト対象領域がコピー中であることを意味する。そのためライト処理実行部4100は待ちフラグ2011をオンにして、ライト対象領域のコピー処理が完了するまで待機する。コピー処理が完了した後、ライト処理実行部4100は再びステップ6011を実行する。
 ステップ6013:APサーバ105から受領したライト要求で指定されたアドレスがコピーポインタ2007より小さい場合、ライト処理実行部4100は第2SDS ID2008が、SDS#x(300)の識別子と等しいか判別する。等しい場合、ライト処理実行部4100はステップ6001を実行する。
 ステップ6014:第2SDS ID2008が、SDS#x(300)の識別子と等しくない場合、ライト処理実行部4100は第2SDS ID2008,第2ボリュームID2009で特定されるSDS100のボリュームに対してライト要求をネットワーク120経由で発行する。この後ライト処理実行部4100は、ステップ6007、ステップ6008を実行し、処理を終了する。
 本実施例では、ライト処理実行部4100は記憶装置220へデータを書き込んだ後、APサーバ105に完了報告を返却する例を説明した。ただしライト処理実行部4100は、キャッシュ領域240へデータを書き込んだ時点で、APサーバ105に完了報告を返し、その後記憶装置220へデータを書き込んでもよい。
 続いて、本実施例に係る情報システムにおいて行われる、SDS100(SDS#y(301))のプログラム交換処理の手順を、図17を参照しながら説明する。
 本実施例に係る情報システムの特徴は、無停止でのSDS100のプログラム交換を実現する点にある。プログラム交換を行うことで、ユーザは用途に合わせて、SDS100でサポートされる機能を自由に変更(あるいは追加)することができる。たとえばSDS#x(300)よりもサポートされている機能が少ないSDS#y(301)に、SDS#x(300)と同等の機能をサポート可能なストレージ制御プログラムをインストールして、SDS#y(301)をSDS#x(300)と同等の機能を持つストレージ装置して動作させることができる。これによって、ストレージ環境を、同一種類のSDSで構成された環境にすることができるので、管理コストの削減やシステム性能の向上が可能になる。
 ここでは一例として、SDS#x(300)はSDS#y(301)にない機能として、たとえばボリュームの複製(ミラーコピー)を作成する機能(以下、「ミラーリング機能」と呼ぶ)を有している例を説明する。またSDS#x(300)は上で述べたとおり、仮想化機能も有している。
 ミラーリング機能はボリュームのバックアップコピーを作成する時などに用いられる。ストレージ装置がミラーリング機能を有している場合、APサーバ105でデータ複製を作る必要がなくなり、APサーバ105の処理負荷を低減することができる。ミラーリング機能は、複製元のボリュームを有するストレージ装置と同じ装置内に複製を作成することもできるが、他装置に複製を作成することもできる。図3を用いて例を説明する。SDS#x(300)は、自身が有する論理ボリュームLV0の複製を、自装置(SDS#x(300))内に作成することもできるし、あるいは他装置(たとえばSDS#y(301-2))に作成することもできる。
 SDS#x(300)がミラーリング機能を有している場合、論理ボリュームLV1(SDS#y(301-1)のボリュームLV2を記憶領域とする論理ボリューム)の複製も(自装置または他装置に)作成できる。そのため、SDS#y(301)がミラーリング機能を有していない場合、たとえば図3に示す例のように、ユーザはSDS#y(301)のボリュームLV2を記憶領域とする論理ボリュームLV1をSDS#x(300)に定義すると、SDS#x(300)は論理ボリュームLV1の複製を(自装置または他装置に)作成できる。つまり、情報システム内に、仮想化機能とその他の各種機能を有するストレージ装置(図3の例ではSDS#x(300))が1台存在すれば、その他のストレージ装置(図3の例ではSDS#y(301))はミラーリング機能などの機能を有していなくても、その他のストレージ装置のボリュームを、仮想化機能を有するSDS#x(300)の論理ボリュームにマップすることで、ミラーリング機能によるボリュームの複製を作成することができる。
 しかし、仮想化機能により、多くのストレージ装置のボリュームをSDS#x(300)の論理ボリュームにマップし、さらにミラーリング機能などをSDS#x(300)に実行させる構成は、SDS#x(300)に多大な負荷がかかるため、情報システムの性能が向上しなくなる。そのため、情報システム内のストレージ装置の各々が、ミラーリング機能などの各種機能を備えていることが望ましい。本実施例に係る情報システムでは、備えている機能の異なるSDS100が存在した場合、それらのSDS100のプログラムを交換することで、情報システム内の各SDS100が同じ機能を備えるようにする。これにより、特定のSDS100に負荷が集中することを抑制でき、情報システムの性能向上が期待できる。
 また、各SDS100の有する機能が異なる場合、各SDS100の管理方法が異なることがある。たとえば、サポートされる管理用コマンド(管理プログラム150とSDS100の間でやり取りされるコマンド)の種類やフォーマットが異なることがある。この場合ユーザはSDS100毎に、異なる管理コマンドを発行する必要が出るため、管理が煩雑になる。情報システム内の各SDS100が同じ機能を備えている場合、ユーザは全てのSDS100に対して、同じ種類の管理コマンドを用いて管理操作を行えば良いため、管理が容易になる。
 ただし、異なる種類のストレージ装置では、記憶装置220に格納されるデータのフォーマット(以下では、「格納データフォーマット」と呼ぶ)も異なることがある。たとえばストレージ装置がイニシエータに提供するボリュームのアドレスと、データが実際に格納される記憶装置のアドレスとは必ずしも同一ではなく、データが実際に格納される記憶領域のアドレスはストレージ装置の種類や設定により異なる。これはSDSでも同様であり、SDS#x(300)の格納データフォーマットと、SDS#y(301)の格納データフォーマットが異なっていることがある。したがって、SDS#y(301)にインストールされているプログラム(ストレージ制御プログラム)を新しいプログラムに入れ替えた場合、過去にSDS#y(301)が自身の記憶装置220に格納したデータを読み出せないことがある。
 このため本実施例に係る情報システムでは、SDS#y(301)のボリュームのデータを、SDS#x(300)の記憶装置220か、あるいは別のSDS100のボリュームに移動(コピー)してから、SDS#y(301)のプログラム交換が行われる。以下では図17を用いて、処理の流れを説明する。
 なお、SDS#y(301)のボリュームのデータの移動先は必ずしもSDSに限定されない。情報システム内に、SDS100以外に在来型ストレージ装置が存在する場合、SDS#y(301)のボリュームのデータが在来型ストレージ装置の有するボリュームに移動(コピー)されてもよい。ただし以下では、SDS#y(301)のボリュームのデータを、SDS#x(300)の記憶装置220か、あるいは別のSDS100のボリュームに移動(コピー)される例を説明する。
 ステップ10010:ユーザが管理サーバ140を用いて、SDS#y(301)のプログラム交換の指示を、SDS#x(300)で実行されている管理プログラム150に送信する。この指示には、プログラムの交換を行う対象となるストレージ装置(ここではSDS#y(301))の識別子が含まれる。
 ステップ10020:管理プログラム150は、ステップ10010でユーザから送信されたプログラム交換の指示を受領すると、指示に含まれているSDS#y(301)の識別子を特定する。そして管理プログラム150は、SDS#x(300)のコピー処理スケジュール部4200に、コピー処理の指示を発行する。コピー処理の指示には、SDS#y(301)の識別子が含まれている。
 ステップ10030:SDS#x(300)が管理プログラム150からコピー処理の指示を受領すると、コピー処理スケジュール部4200が起動する。SDS#x(300)のコピー処理スケジュール部4200は、コピー処理の指示に含まれているSDS#y(301)を特定し、SDS#y(301)の有するボリュームのデータを、情報システム内の別のストレージ装置にコピーする。コピー処理スケジュール部4200で行われる処理の詳細は後述する。コピー処理スケジュール部4200は、処理が終了すると、処理が完了した旨を管理プログラム150に返送する。
 また、プログラムの交換を行う対象となるストレージ装置(SDS#y(301))のボリュームの中には、必ずしもユーザにとって必要ではないボリュームも存在することもある。その場合、ユーザにとって必要ではないボリュームのコピー処理は行われないほうが良い。そのため別の実施形態として、ユーザがSDS#y(301)のプログラム交換を指示する際(ステップ10010)に、SDS#y(301)に加えて、コピー処理を行うべきボリュームの識別子(あるいはコピー処理を行わなくてもよいボリュームの識別子)も管理プログラム150に送信してもよい。そして管理プログラム150はコピー処理スケジュール部4200に、コピー処理を行うべきボリュームの識別子を通知し、コピー処理スケジュール部4200に、コピー処理を行うべきボリュームについてのみコピー処理を行わせてもよい。
 ステップ10040:管理プログラム150は処理が完了した旨の応答をコピー処理スケジュール部4200から受領すると、ステップ10010でユーザから指示されたSDS#y(301)に対し、プログラムの交換の指示を発行する。この時管理プログラム150は、SDS#y(301)にインストールする、交換用のプログラムも送信する。SDS#y(301)にインストールするプログラムは、たとえばステップ10010で管理サーバ140から管理プログラム10020に渡されるとよい。あるいはステップ10040で、管理プログラム150が管理サーバ140からプログラムを取得し、SDS#y(301)に送信してもよい。
 あるいは、もしユーザが、SDS#x(300)で実行されているプログラム(ストレージ制御プログラム130)と同じプログラムをSDS#y(301)にインストールしたい場合には、ユーザは(ステップ10010またはステップ10040で)管理プログラム150に対して、SDS#x(300)で実行されているプログラムをインストールする旨を指示してもよい。その場合管理プログラム150は、SDS#x(300)の記憶装置220(または主記憶210)に格納されているストレージ制御プログラム130を読み出して、これをSDS#y(301)に送信する。
 ステップ10050:SDS#y(301)は、SDS#x(300)の管理プログラム150からインストールの指示(及びプログラム)を受領すると、SDS#y(301)のインストールプログラム250の実行を開始する。インストールプログラム250は、管理プログラム150から受領したプログラムをインストールし、インストール処理が終了した時点で管理プログラム150にインストール処理の終了を通知する。その後SDS#y(301)は再起動等を実行し、管理プログラム150から受領したプログラムの実行を開始させるとよい。
 管理プログラム150は、SDS#y(301)のインストールプログラム250から、インストール処理終了の通知を受領すると、管理サーバ140に処理が終了した旨を通知し、処理を終了する。
 上で述べたプログラム交換処理が終了した時点では、プログラム交換前にSDS#y(300)に格納されていたデータは、別のストレージ装置(SDS#x(300)、またはプログラム交換が行われたSDS#y(301)以外のSDS)に退避(格納)されている。ユーザは退避されたデータを、プログラム交換が行われたSDS#y(301)に戻してもよい。その場合ユーザは、SDS#y(301)にボリュームを定義して、その後、定義したボリュームに退避されたデータをコピーするとよい。
 このような処理を行うことで、本実施例に係る情報システムは、データを失うことなく、各SDS100のプログラムをユーザの用途に合わせて自由に変更することができる。
 図18は、図17で説明したステップ10030で実行される、コピー処理スケジュール部4200の処理フローである。コピー処理スケジュール部4200は、管理プログラム150から指定されたSDS100のボリュームのデータを、別のSDS100にコピーする処理をスケジュールする。データのコピー先は、SDS#x(300)の記憶装置220でもよいし、あるいは指定されたSDS100以外のSDS100に定義されたボリュームでもよい。
 ステップ7000:コピー処理スケジュール部4200は、論理ボリューム情報2000の中で、仮想化フラグ2003がオンで、かつ、SDS ID2004が指定されたSDS100と一致するものを見つける。見つからなかった場合、すべての論理ボリュームを見つけたことになるので、コピー処理が完了するのをまつため、ステップ7003へジャンプする。
 ステップ7001:ステップ7000において条件に該当する論理ボリュームが見つかった場合、コピー処理スケジュール部4200は見つかった論理ボリュームについてコピー処理を行うための準備を行う。具体的にはコピー処理スケジュール部4200は、見つかった論理ボリュームのコピー中フラグ2006をオンにする。続いてコピー処理スケジュール部4200は、データのコピー先SDS100を決定する。コピー先の決定方法には任意の方法が採用されてよい。たとえば空き領域の最も多いSDS100がコピー先に選択されるとよい。
 SDS#x(300)以外のSDS100にデータをコピー(退避)する場合には、コピー処理スケジュール部4200は、ステップ7000で見つけた論理ボリュームの論理ボリューム容量2002を参照して、他のSDS100に、論理ボリューム容量2002と同サイズ(あるいはそれ以上のサイズ)のボリュームの定義を行う。またSDS#x(300)内の記憶装置220にデータをコピーする場合、コピー処理スケジュール部4200は見つかった論理ボリュームの論理ボリューム容量2002より多くの空き実ページが存在するかチェックする。
 他SDS100内にボリュームを定義する場合、コピー処理スケジュール部4200は、ボリュームの定義先となるSDS100とネットワーク120経由で情報を交換して、ボリュームの定義処理を実行してもよい。あるいはコピー処理スケジュール部4200は、管理プログラム150にボリュームの定義を要求して、管理プログラム150がボリュームを定義するSDS100を決め、そのSDS100に指定した容量のボリュームを定義させて、そのSDS100の識別子と論理ボリュームの識別子を、SDS#x(300)に返却してもよい。
 データのコピー先が、SDS#x(300)の記憶装置220である場合、コピー処理スケジュール部4200は第2SDS ID2008に、SDS#x(300)の識別子を設定する。一方データのコピー先が、他SDS100内のボリュームである場合、コピー処理スケジュール部4200は、コピー先ボリュームを有するSDS100の識別子を第2SDS ID2008に定義し、コピー先ボリュームの識別子を第2ボリュームID2009に設定する。さらにコピー処理スケジュール部4200は、コピーポインタ2007に初期値(0)を設定する。
 ステップ7002:コピー処理スケジュール部4200はコピー処理実行部4300を起動する。この際コピー処理スケジュール部4200は、コピー処理対象となる論理ボリュームの論理ボリューム情報2000を指定する。この後、コピー処理スケジュール部4200は次の論理ボリュームを探すため、再びステップ7000を実行する。
 なお、ここでコピー処理スケジュール部4200は、コピー処理実行部4300の処理が終了するまで待機する必要がなく、コピー処理実行部4300を起動した後、すぐにステップ7000に戻って良い。具体的にはコピー処理スケジュール部4200はコピー処理実行部4300を起動する際、コピー処理実行部4300が実行されるプロセスを生成し、そのプロセスにコピー処理実行部4300を実行させ、再びコピー処理スケジュール部4200はステップ7000を実行する。
 またコピー処理実行部4300の実行されるプロセスは複数生成されてもよく、複数プロセスが生成された時、それらのプロセスは並行に実行可能である。そのため、たとえば第1の論理ボリュームについてのコピー処理を行うプロセスと第2の論理ボリュームについてのコピー処理を行うプロセスとが並行実施されてもよい。
 ステップ7003:コピー処理スケジュール部4200は、ステップ7000~ステップ7002で行った、全論理ボリュームのコピー処理が完了するまで待機する。
 ステップ7004:コピー処理スケジュール部4200は、指定されたSDS100の論理ボリュームのコピー処理が完了したことを、管理プログラム150に報告し、処理を終了する。なお、上では、指定されたSDS100のすべてのボリュームのコピー処理がスケジュールされる例を説明したが、先に述べたとおり、コピー処理スケジュール部4200はユーザからコピー処理が必要なボリュームの識別子を受領して、コピー処理が必要なボリュームのコピー処理だけを行ってもよい。
 図19は、コピー処理実行部4300の処理フローである。コピー処理実行部4300は、コピー処理スケジュール部4200から呼び出されると(ステップ7002)、実行を開始する。コピー処理スケジュール部4200がコピー処理実行部4300を呼び出すとき、コピー処理対象の論理ボリュームを指定する。コピー処理実行部4300は、この指定された論理ボリュームについてコピー処理を実行する。
 ステップ8000:コピー処理実行部4300は、指定された論理ボリュームのコピーポインタ2007、SDS ID2004とボリュームID2005を参照して、対応するSDS100に、論理ボリューム、読み出し開始アドレス、1仮想ページ分の容量を指定して、データを読み出すリード要求を発行する。なお、本実施例では、コピー処理実行部4300がコピー処理を行う際に、仮想ページ単位でコピーを行う例を説明するが、それ以外の単位でコピー処理が行われてもよい。
 ステップ8001:コピー処理実行部4300は、ステップ8000でリード要求を発行したSDS100からデータが送られてくるまで待機する。
 ステップ8002:コピー処理実行部4300は、第2SDS ID2008が、SDS#x(300)かをチェックし、そうでない場合、次にステップ8011を行う。第2SDS ID2008が、SDS#x(300)である場合には、次にステップ8003が行われる。
 ステップ8003:コピー処理実行部4300は、コピーポインタ2007で特定されるアドレスに対応する仮想ページに、実ページを割り当てる。この処理はステップ6015と同様の処理である。
 ステップ8004:ここで行われる処理は、ステップ6004,6005と同様の処理である。コピー処理実行部4300は、記憶装置グループRAIDタイプ2302と記憶装置ポインタ2305とから、データライト先実ページが存在する記憶装置220のアドレスを特定する。またコピー処理実行部4300は記憶装置グループRAIDタイプ2302を参照して、公知の方法で、必要な冗長データを生成し、冗長データを格納する記憶装置220とそのアドレスを計算する。
 ステップ8005:ここで行われる処理はステップ6006と同様の処理である。コピー処理実行部4300は、ステップ8004で特定した、データ格納先の記憶装置220と冗長データ格納先の記憶装置220に対して、データと冗長データを格納するライト要求を発行し、データと冗長データを転送する。この後コピー処理実行部4300はステップ8006を行う。
 ステップ8011:第2SDS ID2008がSDS#x(300)ではない場合、コピー処理実行部4300はコピーポインタ2007、第2SDS ID2008と第2ボリュームID2009を参照して、対応するSDS100に、論理ボリューム、読み出し開始アドレス、1ページ分の容量を指定して、ライト要求を発行し、書き込むデータを送る。この後、この後コピー処理実行部4300はステップ8006を行う。
 ステップ8006:コピー処理実行部4300は、記憶装置220(または他のSDS100)から応答が返却されるまで待機する。
 ステップ8007:コピー処理実行部4300は待ちフラグ2011を参照し、待ちフラグ2011がオンなら、待ち状態の処理の待ちを開放して、待ちフラグ2011をオフにする。
 ステップ8008:コピー処理実行部4300はコピーポインタ2007を1ページ分進める。
 ステップ8009:コピー処理実行部4300はコピーポインタ2007と論理ボリューム容量2002を参照して、コピーポインタ2007が論理ボリュームの終端アドレスを超過したか(つまり当該論理ボリュームのコピーが完了したか)チェックする。論理ボリュームのコピーが完了していない場合、コピー処理実行部4300は再びステップ8000から処理を繰り返す。
 ステップ8010:論理ボリュームのコピーが完了した場合、コピー処理実行部4300はコピー中フラグ2006をオフにする。さらにコピー処理実行部4300は、第2SDS ID2008がSDS#x(300)の識別子であれば、仮想化フラグ2003をオフにする。第2SDS ID2008がSDS#x(300)の識別子でない場合、コピー処理実行部4300は第2SDS ID2008と第2ボリュームID2009を、SDS ID2004とボリュームID2005にコピーし、処理を終了する。
 コピー処理実行部4300は、上に述べた処理を行うことで、1つの論理ボリュームのデータを、別の記憶領域に移動(コピー)する。なお、コピー処理実行部4300によるコピー処理中も、リード処理実行部4000またはライト処理実行部4100は、論理ボリュームのデータリード処理またはライト処理を実行可能である。リード処理実行部4000は、特に図14に記載の処理(ステップ5008~ステップ5013)を行うように構成されているため、リード対象論理ボリュームがコピー処理実行部4300によりコピー処理中であっても、コピー処理実行部4300のコピー処理の実行完了を待たずに、データの読み出しが可能である。またライト処理実行部4100も同様に、図16に記載の処理を行うことで、コピー処理実行部4300のコピー処理の実行完了を待たずに、データの書き込みが可能である。そのため、ユーザは業務を停止することなく(たとえばAPサーバ105からの論理ボリュームへのアクセスを停止することなく)、SDS#y(301)のプログラム交換を行うことができる。
 以上、本発明の実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
 上で説明した実施例では、SDS#x(300)が管理プログラム150を実行し、情報システム内の各ストレージ装置(SDS)を管理していたが、管理プログラム150は必ずしもSDS#x(300)で実行されなくてもよい。たとえば管理サーバ140が管理プログラム150を実行することで、管理サーバ140が情報システム内の各SDS100を管理するように構成されていてもよい。あるいはAPサーバ105で管理プログラム150が実行される構成でもよい。
 また上で説明した実施例では、用途ごとにサーバコンピュータが存在していたが(SDS100、APサーバ105、管理サーバ140)、1つのサーバコンピュータが複数の用途を兼ねるように構成されていてもよい。たとえば上で述べた実施例で管理サーバ140が実行していたクライアントプログラムが、SDS100で実行されるように構成されていてもよい。この場合ユーザは、SDS100に備えられている入出力デバイス(キーボードやディスプレイ)を用いて、管理操作を行う。
 あるいは情報システムは、アプリケーションプログラムとストレージ制御プログラム130が、同一のサーバコンピュータで実行される構成であってもよい。その場合、このサーバコンピュータは上で述べた実施例におけるAPサーバとSDSの両方の機能を果たす。
 またこの場合、サーバコンピュータ上に複数の仮想計算機を定義して、仮想計算機上でアプリケーションプログラムとストレージ制御プログラムが実行される構成でもよい。たとえばサーバコンピュータ上でハイパーバイザを実行することで、アプリケーションプログラムを実行する仮想計算機と、ストレージ制御プログラムを実行する仮想計算機を定義する。そしてストレージ制御プログラムを実行する仮想計算機が、アプリケーションプログラムを実行する仮想計算機(あるいはこれ以外のサーバコンピュータ等)にボリュームを提供するように構成されるとよい。ただし各プログラムが必ずしも仮想計算機上で実行されなければならないわけではない。たとえば上で説明したストレージ制御プログラムと同等の処理を行うプログラムコードをハイパーバイザに含め、サーバコンピュータはこのハイパーバイザを実行することで、アプリケーションプログラムを実行する仮想計算機にボリュームを提供するよう構成されていてもよい。
 また、上で説明した処理の一部が人手で行われてもよい。たとえば図17で説明した処理では、管理プログラム150がコピー処理スケジュール部4200に指示して、ステップ10030を実行させ、その後プログラムの交換対象であるSDS100(SDS#y(301))にプログラム交換を指示していた。この処理の一部をユーザが行ってもよい。すなわち、ユーザはステップ10030(SDS#y(301)のデータ移動)の終了が確認できた後、SDS#y(301)のプログラムの交換を行ってもよい。
 この時のプログラムの交換は、ユーザは管理サーバ140からSDS#x(300)の管理プログラム150に、SDS#y(301)へのプログラムインストールを指示することで、管理プログラム150からSDS#y(301)のインストールプログラム250にプログラム交換を行わせてもよいし、管理サーバ140から直接SDS#y(301)のインストールプログラム250に対して、プログラムのインストールを指示してもよい。或いはSDS#y(301)がキーボードやディスプレイ等の入出力デバイスを備えている場合は、ユーザはそれを用いてSDS#y(301)にプログラムのインストールを指示してもよい。
 また、上で説明した実施例では、SDSが受け付けるI/O要求(コマンド)は、いわゆるSCSIコマンドである例が説明された。つまりSDSが、いわゆるブロックレベルのアクセス要求を受け付けるストレージ装置である例を説明した。しかし、SDSがそれ以外のタイプのストレージ装置であってもよい。たとえばファイルレベルやオブジェクトレベルのアクセス要求を受け付けるストレージ装置(いわゆるNetwork Attached Storage (NAS)やObject-based Storage Device (OSD))などでもよい。
 また、上で説明した実施例では、コピー処理実行部4300によって論理ボリュームのデータがSDS#y(301)以外の記憶領域に移動される際、移動先の記憶領域は、SDS#x(300)の記憶装置か、あるいは他のSDS100が有するボリュームの何れかである例を説明した。ただし、移動先の記憶領域に、SDS#x(300)の記憶装置と、他のSDS100のボリュームの両方が用いられてもよい。
 たとえば図3に示された、SDS#x(300)、SDS#y(301-1)、SDS#y(301-2)において、SDS#y(301-1)のプログラム交換が行われる時、LV2に格納されているデータは、SDS#y(301-1)以外のSDSに移動される必要がある(なお、仮想化機能によりLV2はLV1にマップされている)。この場合SDS#x(300)は、LV2に格納されているデータのうち、一部のデータ、たとえばLV2の先頭から半分のデータをSDS#x(300)の記憶装置220に移動し、残りのデータをたとえばSDS#y(301-2)のボリュームLV3に移動してもよい。もちろんこの場合、SDS#x(300)は、論理ボリュームの領域ごと(たとえば仮想ページごと)に、異なるボリュームの記憶領域(または記憶装置220の記憶領域)を割り当てることが可能なように構成されている必要がある。
 また、上で説明した処理をCPUに実行させる各プログラムは、計算機が読み取り可能な記憶メディアに格納された状態で提供され、プログラムを実行する各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばICカード、SDカード、DVD等の不揮発性記憶媒体である。あるいは上で説明した処理をCPUに実行させる各プログラムは、プログラム配布サーバからネットワーク経由で提供されてもよい。
100: SDS
105: APサーバ
120: ネットワーク
130: ストレージ制御プログラム
140: 管理サーバ
150: 管理プログラム
200: プロセッサ
210: 主記憶
220: 記憶装置
230: 管理情報
240: キャッシュ領域
250: インストールプログラム

Claims (15)

  1.  プロセッサとメモリと記憶装置を有する計算機を複数備えた情報システムであって、
     前記複数の計算機には、
     第1ストレージ制御プログラムと管理プログラムとを実行する第1の計算機と、
     第2ストレージ制御プログラムを実行する第2の計算機と、
    が含まれており、
     前記第2ストレージ制御プログラムは前記第2の計算機のプロセッサに、前記第2の計算機の有する記憶装置を記憶領域とするボリュームを定義させるプログラムで、
     前記第1ストレージ制御プログラムは前記第1の計算機のプロセッサに、前記第1の計算機の有する記憶装置または前記第1の計算機以外の前記計算機が提供するボリュームを記憶領域とする論理ボリュームを定義させるプログラムであって、
     前記第2の計算機に定義された前記ボリュームは、前記第1の計算機に定義される前記論理ボリュームの記憶領域として用いられており、
     前記管理プログラムは、前記第1の計算機のプロセッサに、
     前記第2の計算機への交換用プログラムのインストール指示を受け付ける第1の工程と、
     前記第1の計算機が有する前記論理ボリュームのうち、前記第2の計算機に定義された前記ボリュームを記憶領域とする論理ボリュームを特定する第2の工程と、
     前記第2の工程で特定された論理ボリュームである第1論理ボリュームが記憶領域として使用している、前記第2の計算機に定義された第1ボリュームに格納されたデータを、前記第1の計算機の有する記憶装置に移動する第3の工程と、
     前記第3の工程の完了を確認した後、前記第2の計算機に、前記交換用プログラムをインストールさせる第4の工程と、
    を実行させることを特徴とする、情報システム。
  2.  前記第1論理ボリュームは、前記第3の工程の実行前にライトデータの書き込み要求を受け付けると、前記第1ボリュームに前記ライトデータが書き込まれるよう、構成されており、
     前記第3の工程は、前記第1ボリュームに格納されたデータが前記第1の計算機の有する記憶装置へ移動された後、前記第1の計算機の有する記憶装置を前記第1論理ボリュームの記憶領域とするよう、前記第1論理ボリュームの構成を変更する工程を含み、
     前記第3の工程はまた、前記第1論理ボリュームに対するライトデータの書き込み要求に係る処理と並行して実行可能である、
    ことを特徴とする、請求項1に記載の情報システム。
  3.  前記複数の計算機の中にはさらに第3の計算機が含まれており、前記第3の計算機は、前記第3の計算機の有する記憶装置を記憶領域とする第3ボリュームを有しており、
     前記第1の計算機はさらに、前記第2の計算機が定義した第2ボリュームを記憶領域とする第2論理ボリュームを有し、
     前記第3の工程はさらに、
     前記第2論理ボリュームが記憶領域として使用している前記第2ボリュームに格納されたデータを、前記第3の計算機の有する前記第3ボリュームに移動し、前記第3ボリュームを前記第2論理ボリュームの記憶領域とするよう、前記第2論理ボリュームの構成を変更する工程を含む、
    ことを特徴とする、請求項2に記載の情報システム。
  4.  前記複数の計算機の中にはさらに、第3の計算機が含まれており、前記第3の計算機は、前記第3の計算機の有する記憶装置を記憶領域とする第3ボリュームを有しており、
     前記第1の計算機はさらに、前記第2の計算機が定義した第2ボリュームを記憶領域とする第2論理ボリュームを有し、
     前記第3の工程はさらに、
     前記第2論理ボリュームが記憶領域として使用している前記第2ボリュームに格納されたデータのうち、一部のデータを前記第3の計算機の有する前記第3ボリュームの領域に移動し、残りのデータを前記第1の計算機の有する記憶装置の領域に移動し、前記データの移動された前記第3ボリュームの領域及び前記第1の計算機の有する記憶装置の領域を前記第2論理ボリュームの記憶領域とするよう、前記第2論理ボリュームの構成を変更する工程を含む、
    ことを特徴とする、請求項2に記載の情報システム。
  5.  前記交換用プログラムは、前記第1ストレージ制御プログラムと同一のプログラムである、
    ことを特徴とする、請求項1に記載の情報システム。
  6.  プロセッサとメモリと記憶装置を有する計算機を複数備えた情報システムにおけるプログラム交換方法であって、
     前記複数の計算機には、
     第1ストレージ制御プログラムを実行する第1の計算機と、
     第2ストレージ制御プログラムを実行する第2の計算機と、
    が含まれており、
     前記第2ストレージ制御プログラムは前記第2の計算機のプロセッサに、前記第2の計算機の有する記憶装置を記憶領域とするボリュームを定義させるプログラムで、
     前記第1ストレージ制御プログラムは前記第1の計算機のプロセッサに、前記第1の計算機の有する記憶装置または前記第1の計算機以外の前記計算機が提供するボリュームを記憶領域とする論理ボリュームを定義させるプログラムであって、
     前記第2の計算機に定義された前記ボリュームは、前記第1の計算機に定義される前記論理ボリュームの記憶領域として用いられており、
     前記プログラム交換方法は、前記情報システムが、
     前記第2の計算機への交換用プログラムのインストール指示を受け付ける第1の工程と、
     前記第1の計算機が有する前記論理ボリュームのうち、前記第2の計算機に定義された前記ボリュームを記憶領域とする論理ボリュームを特定する第2の工程と、
     前記第2の工程で特定された論理ボリュームである第1論理ボリュームが記憶領域として使用している、前記第2の計算機に定義された第1ボリュームに格納されたデータを、前記第1の計算機の有する記憶装置に移動する第3の工程と、
     前記第3の工程の完了を確認した後、前記第2の計算機に、前記交換用プログラムをインストールする第4の工程と、
    を実行することを特徴とする、プログラム交換方法。
  7.  前記第1論理ボリュームは、前記第3の工程の実行前にライトデータの書き込み要求を受け付けると、前記第1ボリュームに前記ライトデータが書き込まれるよう、構成されており、
     前記第3の工程は、前記第1ボリュームに格納されたデータが前記第1の計算機の有する記憶装置へ移動された後、前記第1の計算機の有する記憶装置を前記第1論理ボリュームの記憶領域とするよう、前記第1論理ボリュームの構成を変更する工程を含み、
     前記第3の工程はまた、前記第1論理ボリュームに対するライトデータの書き込み要求に係る処理と並行して実行可能である、
    ことを特徴とする、請求項6に記載のプログラム交換方法。
  8.  前記複数の計算機の中にはさらに第3の計算機が含まれており、前記第3の計算機は、前記第3の計算機の有する記憶装置を記憶領域とする第3ボリュームを有しており、
     前記第1の計算機はさらに、前記第2の計算機が定義した第2ボリュームを記憶領域とする第2論理ボリュームを有し、
     前記第3の工程はさらに、
     前記第2論理ボリュームが記憶領域として使用している前記第2ボリュームに格納されたデータを、前記第3の計算機の有する前記第3ボリュームに移動し、前記第3ボリュームを前記第2論理ボリュームの記憶領域とするよう、前記第2論理ボリュームの構成を変更する工程を含む、
    ことを特徴とする、請求項7に記載のプログラム交換方法。
  9.  前記複数の計算機の中にはさらに第3の計算機が含まれており、前記第3の計算機は、前記第3の計算機の有する記憶装置を記憶領域とする第3ボリュームを有しており、
     前記第1の計算機はさらに、前記第2の計算機が定義した第2ボリュームを記憶領域とする第2論理ボリュームを有し、
     前記第3の工程はさらに、
     前記第2論理ボリュームが記憶領域として使用している前記第2ボリュームに格納されたデータのうち、一部のデータを前記第3の計算機の有する前記第3ボリュームの領域に移動し、残りのデータを前記第1の計算機の有する記憶装置の領域に移動し、前記データの移動された前記第3ボリュームの領域及び前記第1の計算機の有する記憶装置の領域を前記第2論理ボリュームの記憶領域とするよう、前記第2論理ボリュームの構成を変更する工程を含む、
    ことを特徴とする、請求項7に記載のプログラム交換方法。
  10.  前記交換用プログラムは、前記第1ストレージ制御プログラムと同一のプログラムである、
    ことを特徴とする、請求項6に記載のプログラム交換方法。
  11.  プロセッサとメモリと記憶装置を有する計算機を複数備えた情報システムで実行される管理プログラムであって、
     前記複数の計算機には、
     第1ストレージ制御プログラムを実行する第1の計算機と、
     第2ストレージ制御プログラムを実行する第2の計算機と、
    が含まれており、
     前記第2ストレージ制御プログラムは前記第2の計算機のプロセッサに、前記第2の計算機の有する記憶装置を記憶領域とするボリュームを定義させるプログラムで、
     前記第1ストレージ制御プログラムは前記第1の計算機のプロセッサに、前記第1の計算機の有する記憶装置または前記第1の計算機以外の前記計算機が提供するボリュームを記憶領域とする論理ボリュームを定義させるプログラムであって、
     前記第2の計算機に定義された前記ボリュームは、前記第1の計算機に定義される前記論理ボリュームの記憶領域として用いられており、
     前記管理プログラムは前記情報システムに、
     前記第2の計算機への交換用プログラムのインストール指示を受け付ける第1の工程と、
     前記第1の計算機が有する前記論理ボリュームのうち、前記第2の計算機に定義された前記ボリュームを記憶領域とする論理ボリュームを特定する第2の工程と、
     前記第2の工程で特定された論理ボリュームである第1論理ボリュームが記憶領域として使用している、前記第2の計算機に定義された第1ボリュームに格納されたデータを、前記第1の計算機の有する記憶装置に移動する第3の工程と、
     前記第3の工程の完了を確認した後、前記第2の計算機に、前記交換用プログラムをインストールさせる第4の工程と、
    を実行させることを特徴とする、管理プログラム。
  12.  前記第1論理ボリュームは、前記第3の工程の実行前にライトデータの書き込み要求を受け付けると、前記第1ボリュームに前記ライトデータが書き込まれるよう、構成されており、
     前記第3の工程は、前記第1ボリュームに格納されたデータが前記第1の計算機の有する記憶装置へ移動された後、前記第1の計算機の有する記憶装置を前記第1論理ボリュームの記憶領域とするよう、前記第1論理ボリュームの構成を変更する工程を含み、
     前記第3の工程はまた、前記第1論理ボリュームに対するライトデータの書き込み要求に係る処理と並行して実行可能である、
    ことを特徴とする、請求項11に記載の管理プログラム。
  13.  前記複数の計算機の中にはさらに第3の計算機が含まれており、前記第3の計算機は、前記第3の計算機の有する記憶装置を記憶領域とする第3ボリュームを有しており、
     前記第1の計算機はさらに、前記第2の計算機が定義した第2ボリュームを記憶領域とする第2論理ボリュームを有し、
     前記第3の工程はさらに、
     前記第2論理ボリュームが記憶領域として使用している前記第2ボリュームに格納されたデータを、前記第3の計算機の有する前記第3ボリュームに移動し、前記第3ボリュームを前記第2論理ボリュームの記憶領域とするよう、前記第2論理ボリュームの構成を変更する工程を含む、
    ことを特徴とする、請求項12に記載の管理プログラム。
  14.  前記複数の計算機の中にはさらに、第3の計算機が含まれており、前記第3の計算機は、前記第3の計算機の有する記憶装置を記憶領域とする第3ボリュームを有しており、
     前記第1の計算機はさらに、前記第2の計算機が定義した第2ボリュームを記憶領域とする第2論理ボリュームを有し、
     前記第3の工程はさらに、
     前記第2論理ボリュームが記憶領域として使用している前記第2ボリュームに格納されたデータのうち、一部のデータを前記第3の計算機の有する前記第3ボリュームの領域に移動し、残りのデータを前記第1の計算機の有する記憶装置の領域に移動し、前記データの移動された前記第3ボリュームの領域及び前記第1の計算機の有する記憶装置の領域を前記第2論理ボリュームの記憶領域とするよう、前記第2論理ボリュームの構成を変更する工程を含む、
    ことを特徴とする、請求項12に記載の管理プログラム。
  15.  前記交換用プログラムは、前記第1ストレージ制御プログラムと同一のプログラムである、
    ことを特徴とする、請求項11に記載の管理プログラム。
PCT/JP2017/007719 2017-02-28 2017-02-28 情報システム、管理プログラム及び情報システムのプログラム交換方法 WO2018158808A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
PCT/JP2017/007719 WO2018158808A1 (ja) 2017-02-28 2017-02-28 情報システム、管理プログラム及び情報システムのプログラム交換方法
JP2019502312A JP6835949B2 (ja) 2017-02-28 2017-02-28 情報システム、管理プログラム及び情報システムのプログラム交換方法
CN201780085761.3A CN110300960B (zh) 2017-02-28 2017-02-28 信息系统、管理程序和信息系统的程序更换方法
US15/932,214 US10152260B2 (en) 2017-02-28 2018-02-16 Information system, management program, and program exchange method of information system
US16/192,919 US10788999B2 (en) 2017-02-28 2018-11-16 Information system, management program, and program exchange method of information system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/007719 WO2018158808A1 (ja) 2017-02-28 2017-02-28 情報システム、管理プログラム及び情報システムのプログラム交換方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/932,214 Continuation US10152260B2 (en) 2017-02-28 2018-02-16 Information system, management program, and program exchange method of information system

Publications (1)

Publication Number Publication Date
WO2018158808A1 true WO2018158808A1 (ja) 2018-09-07

Family

ID=63245354

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/007719 WO2018158808A1 (ja) 2017-02-28 2017-02-28 情報システム、管理プログラム及び情報システムのプログラム交換方法

Country Status (4)

Country Link
US (2) US10152260B2 (ja)
JP (1) JP6835949B2 (ja)
CN (1) CN110300960B (ja)
WO (1) WO2018158808A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816331B2 (en) 2021-12-02 2023-11-14 Hitachi, Ltd. Storage system and storage program update method

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6547057B2 (ja) * 2016-02-22 2019-07-17 株式会社日立製作所 計算機システム、計算機システムの制御方法、および記録媒体
US10564959B2 (en) * 2017-03-14 2020-02-18 Google Llc Shared software libraries for computing devices
JP7113698B2 (ja) * 2018-08-10 2022-08-05 株式会社日立製作所 情報システム
CN112749111A (zh) * 2019-10-31 2021-05-04 华为技术有限公司 访问数据的方法、计算设备和计算机系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230577A (ja) * 2008-03-24 2009-10-08 Fujitsu Ltd ソフトウェアアップデート管理プログラム、ソフトウェアアップデート管理装置、およびソフトウェアアップデート管理方法
JP2013517539A (ja) * 2010-04-30 2013-05-16 株式会社日立製作所 計算機システム及びその制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3671595B2 (ja) 1997-04-01 2005-07-13 株式会社日立製作所 複合計算機システムおよび複合i/oシステム
EP1490771A4 (en) * 2002-04-03 2007-11-21 Powerquest Corp USING DISSOCIATED PICTURES TO THE COMPUTER? AND MEMORY MANAGEMENT
CN1304961C (zh) * 2005-03-11 2007-03-14 清华大学 基于元数据服务器的存储虚拟化管理方法
US8140785B2 (en) * 2006-06-29 2012-03-20 International Business Machines Corporation Updating metadata in a logical volume associated with a storage controller for data units indicated in a data structure
JP5057366B2 (ja) * 2006-10-30 2012-10-24 株式会社日立製作所 情報システム及び情報システムのデータ転送方法
US7877556B2 (en) * 2007-03-30 2011-01-25 Hitachi, Ltd. Method and apparatus for a unified storage system
EP2249254A3 (en) * 2008-01-02 2011-02-23 SanDisk IL Ltd. Storage device having direct user access
US8347031B2 (en) * 2009-04-14 2013-01-01 Hitachi, Ltd. Storage system and control method for managing the input and output of data in a network to avoid congestion
WO2011135635A1 (ja) * 2010-04-30 2011-11-03 株式会社日立製作所 計算機システム及びその記憶制御方法
WO2012049711A1 (en) * 2010-10-14 2012-04-19 Hitachi, Ltd. Data migration system and data migration method
US20120117555A1 (en) * 2010-11-08 2012-05-10 Lsi Corporation Method and system for firmware rollback of a storage device in a storage virtualization environment
CN103080894A (zh) * 2010-12-28 2013-05-01 株式会社日立制作所 存储系统、存储系统的管理方法和程序
US20130238852A1 (en) * 2012-03-07 2013-09-12 Hitachi, Ltd. Management interface for multiple storage subsystems virtualization
CN108108311A (zh) * 2013-12-12 2018-06-01 株式会社日立制作所 存储装置及存储装置的控制方法
CN106133676B (zh) * 2014-04-21 2019-05-17 株式会社日立制作所 存储系统
KR102308782B1 (ko) * 2014-08-19 2021-10-05 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
CN104301430B (zh) * 2014-10-29 2016-04-13 北京麓柏科技有限公司 软件定义存储系统、方法及其集中控制设备
US9678680B1 (en) * 2015-03-30 2017-06-13 EMC IP Holding Company LLC Forming a protection domain in a storage architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230577A (ja) * 2008-03-24 2009-10-08 Fujitsu Ltd ソフトウェアアップデート管理プログラム、ソフトウェアアップデート管理装置、およびソフトウェアアップデート管理方法
JP2013517539A (ja) * 2010-04-30 2013-05-16 株式会社日立製作所 計算機システム及びその制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816331B2 (en) 2021-12-02 2023-11-14 Hitachi, Ltd. Storage system and storage program update method

Also Published As

Publication number Publication date
US10152260B2 (en) 2018-12-11
JPWO2018158808A1 (ja) 2019-06-27
CN110300960B (zh) 2023-04-04
US10788999B2 (en) 2020-09-29
US20180246663A1 (en) 2018-08-30
US20190087112A1 (en) 2019-03-21
CN110300960A (zh) 2019-10-01
JP6835949B2 (ja) 2021-02-24

Similar Documents

Publication Publication Date Title
US8347060B2 (en) Storage system, storage extent release method and storage apparatus
US8645653B2 (en) Data migration system and data migration method
US10788999B2 (en) Information system, management program, and program exchange method of information system
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
JP6600698B2 (ja) 計算機システム
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
US20100299491A1 (en) Storage apparatus and data copy method
JP2009043030A (ja) ストレージシステム
JP2013531283A (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
JP5635621B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
US10936243B2 (en) Storage system and data transfer control method
US11740823B2 (en) Storage system and storage control method
US20150277765A1 (en) Storage subsystem and method for controlling the storage subsystem
JP2010079624A (ja) 計算機システム及びストレージシステム
JP5355603B2 (ja) ディスクアレイ装置及び論理ボリュームアクセス方法
WO2018055686A1 (ja) 情報処理システム
JP7113698B2 (ja) 情報システム
WO2014115184A1 (en) Storage system and control method for storage system
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
WO2018055751A1 (ja) 計算機システム及び記憶制御方法
JP2015141508A (ja) データ記憶制御装置、データ記憶制御方法、及び、データ記憶制御プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17898594

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019502312

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17898594

Country of ref document: EP

Kind code of ref document: A1