説明

仮想化システム及び領域割当て制御方法

【課題】仮想ボリュームを使用するファイルシステムのフォーマットにおいて、割り当てられた領域に未使用部分が生じることと、割り当てられる実領域の数が増大することとの両方を抑える。
【解決手段】仮想ボリュームのフォーマットであるか否かを判断し、仮想ボリュームのフォーマットであると判断された場合に、複数の実領域のうちの未割当ての実領域を管理情報から特定し、特定された未割当ての実領域を複数のサブ領域に分割し、仮想ボリュームにおいて規則的な間隔で並んだそれぞれの連続領域に、複数のサブ領域をそれぞれ割当てる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Thin Provisioning技術に関わり、具体的には、ホスト計算機が使用する仮想的な記憶装置に対して記憶領域を割り当てる技術に関する。
【背景技術】
【0002】
ホスト計算機に対して仮想的な記憶装置(以下、仮想ボリューム)を提供する仮想化装置として、例えば、文献1(特開2005−11316号公報)に開示の装置が知られている。
【0003】
この仮想化装置は、複数の論理的な記憶領域(実領域)を有するストレージシステムに接続されている。仮想化装置は、仮想ボリュームに対する書込み要求を受けた場合、仮想ボリュームに、ストレージシステムにおける実領域を割り当てる。この文献1の技術では、実領域のサイズを可変にすることができる。仮想化装置は、所定の処理、例えばフォーマット処理に基づく書込み要求を受けた場合には、実領域のサイズを縮小し、縮小された実領域を、仮想ボリュームに割り当てる。
【0004】
【特許文献1】特開2005−11316号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
仮想ボリュームを使用するファイルシステムのフォーマット(初期化)では、メタデータと呼ばれる小サイズの管理データが仮想ボリュームに書かれ、且つ、メタデータの書込み先は、規則的な間隔で遷移する。このため、実領域のサイズを縮小して仮想ボリュームに割り当てるようにすることで、サイズを縮小しないで実領域を割り当てることに比して、割り当てられた実領域内での未使用領域のサイズを小さくすることができる。
【0006】
しかし、実領域を縮小して仮想ボリュームに割り当てていくと、サイズを縮小しないで実領域を仮想ボリュームに割り当てることに比して、仮想ボリュームに割り当てられる実領域の数は多くなる場合がある。
【0007】
仮想ボリュームに割り当てられる実領域の数が多くなると、割り当てた実領域を管理するための情報(以下、管理情報)のサイズも増大し、それ故、割当て管理情報を記憶する記憶領域に多くの記憶容量が必要となる。
【0008】
また、管理情報には、複数の実領域のうちのどれが未割り当てであるかも含まれる。仮想ボリュームに割り当てられる実領域の数が多くなると、仮想ボリュームに割り当てる未割当ての実領域を探すために管理情報へアクセスすることが多くなるので、その分、割当てに要する時間も長くなる。
【0009】
これらの問題点を解消する方法として、実領域を縮小することなく仮想ボリュームに割り当てる方法が考えられる。しかし、そうすると、割り当てられた実領域内での未使用部分のサイズが大きくなってしまうという問題が発生してしまう。
【0010】
従って、本発明の目的は、仮想ボリュームを使用するファイルシステムのフォーマットにおいて、割り当てられた領域に未使用部分が生じることと、割り当てられる実領域の数が増大することとの両方を抑えることにある。
【0011】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【0012】
本発明に従う仮想化システムは、上位装置に提供される仮想ボリュームに対する書込み要求の書込み先に複数の実領域のうちの未割当ての実領域を割り当てる仮想化システムであり、前記仮想ボリュームに対する書込み要求を受信する要求受信部と、前記仮想ボリュームに対する書込み要求を受信した場合に、前記仮想ボリュームのフォーマットであるか否かを判断する判断部と、前記複数の実領域の各々について未割当てか否かを表す情報を含んだ管理情報を記憶する記憶部と、領域割当て制御部とを備える。領域割当て制御部は、前記仮想ボリュームのフォーマットであると判断された場合に、前記複数の実領域のうちの未割当ての実領域を前記管理情報から特定し、特定された未割当ての実領域を複数のサブ領域に分割し、前記仮想ボリュームにおいて規則的な間隔で並んだそれぞれの連続領域に、前記複数のサブ領域をそれぞれ割当てる。
【0013】
第一の実施態様では、前記領域割当て制御部は、前記仮想ボリュームのフォーマットではないと判断された場合には、前記仮想ボリュームに対する書込み要求に応答して、該書込み要求の書込み先に、前記特定された未割当ての実領域それ自体を割り当てる。
【0014】
第二の実施態様では、前記実領域の記憶容量及び前記サブ領域の記憶容量の両方がそれぞれ固定値である。
【0015】
第三の実施態様では、前記領域割当て制御部は、前記仮想ボリュームの最初の連続領域における、前記フォーマットでのそれぞれの書き込み先に、連続したサブ領域を割り当てていき、次の連続領域の初めの書き込み先にサブ領域を割り当てたときに、該書き込み先と、前記最初の連続領域の初めの書き込み先との差分である連続領域間隔を求め、前記次の連続領域以降のそれぞれの連続領域に対し、前記最初の連続領域に割り当てたサブ領域数の連続したサブ領域を割り当てる。
【0016】
第四の実施態様では、前記第三の実施態様において、前記領域割当て制御部は、前記次以降の連続領域のそれぞれに対する書込み要求を受信することに先駆けて、前記次の連続領域以降のそれぞれの連続領域に連続したサブ領域を割り当てる。
【0017】
第五の実施態様では、前記第三の実施態様において、前記領域割当て制御部は、前記次の連続領域以降の連続領域に連続したサブ領域を割り当てた後、前記フォーマットであるにも関わらず、受信した書込み要求の書込み先が、連続領域と異なる場所である場合には、該書込み先には、未割当ての実領域を割り当てる。
【0018】
第六の実施態様では、前記第五の実施態様において、仮想化システムが、受信した書込み要求の書込み先が連続領域と異なる場所である回数をカウントするカウント部を更に備える。前記判断部は、前記回数が、所定の値を超えている場合に、前記フォーマットでないと判断する。
【0019】
第七の実施態様では、仮想化システムが、前記仮想ボリュームのフォーマット開始の通知とフォーマット終了の通知を前記上位装置或いはそれとは異なる外部の装置から受ける通知受信部を更に備える。前記判断部は、前記フォーマット開始の通知を受信した場合、前記フォーマット終了の通知を受信するまで、前記フォーマットであると判断する。
【0020】
第八の実施態様では、仮想化システムが、或る連続領域の基点とその次の連続領域の基点との差分である連続領域間隔と、或る一つの連続領域に割り当てられたサブ領域の数とを所定の計算機に通知する通知部を更に備える。
【0021】
第九の実施態様では、仮想化システムが、連続領域間隔とサブ領域数とを前記仮想化システムの外部から入力する入力部を更に備える。前記領域割当て制御部は、前記入力された連続領域間隔で、前記入力されたサブ領域数の連続したサブ領域を割り当てる。
【0022】
第十の実施態様では、前記仮想化システムは、ストレージシステムである。前記ストレージシステムは、複数の記憶装置と、コントローラとを備える。前記複数の記憶装置には、前記複数の実領域で構成される一以上の論理ボリュームが用意される。前記コントローラが、前記要求受信部と、前記判断部と、前記記憶部と、前記領域割当て制御部とを有する。該領域割当て制御部が、割り当てたサブ領域に、前記要求受信部が受信した書込み要求に従うデータを書込む。
【0023】
第十一の実施態様では、前記仮想化システムは、外部のストレージシステムに接続されたストレージシステムである。前記ストレージシステムは、複数の記憶装置と、コントローラとを備える。前記外部のストレージシステムには、前記複数の実領域で構成される一以上の論理ボリュームが用意される。前記コントローラが、前記要求受信部と、前記判断部と、前記記憶部と、前記領域割当て制御部とを有する。該領域割当て制御部が、割り当てたサブ領域に、前記要求受信部が受信した書込み要求に従うデータを書込む。
【0024】
第十二の実施態様では、前記仮想化システムは、前記上位装置とストレージシステムとの間に介在するスイッチ装置である。前記複数の実領域は、前記ストレージシステムに備えられる一以上の論理ボリュームの構成要素である。
【0025】
第十三の実施態様では、前記仮想化システムは、前記上位装置とストレージシステムとの間に介在するスイッチ装置と、前記スイッチ装置と通信可能に接続された管理装置とで構成されている。前記スイッチ装置が、前記要求受信部と、前記仮想ボリュームのフォーマットであるか否かの判断を依頼する依頼部とを有する。前記管理装置が、前記依頼に応答して前記判断を行う前記判断部と、前記記憶部と、前記領域割当て制御部とを有する。
【0026】
第十四の実施態様では、前記管理情報には、前記仮想ボリュームに対する実領域それ自体の割当てを管理するための第一の管理サブ情報と、前記仮想ボリュームに対するサブ領域の割当てを管理するための第二の管理サブ情報が含まれる。前記領域割当て制御部は、前記仮想ボリュームに前記未割当ての実領域それ自体を割り当てた場合、前記第一の管理サブ情報を更新し、前記仮想ボリュームにサブ領域を割り当てた場合、前記第二の管理サブ情報を更新する。
【0027】
第十五の実施態様では、前記第十四の実施態様において、前記第二の管理サブ情報には、或る連続領域の基点とその次の連続領域の基点との差分である連続領域間隔と、或る一つの連続領域に割り当てられたサブ領域の数とが含まれる。
【0028】
上述した仮想化システムが備える記憶部は、例えば、メモリなどの記憶資源により構築することができる。また、他の各部は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【発明の効果】
【0029】
本発明によれば、仮想ボリュームを使用するファイルシステムのフォーマットにおいて、割り当てられた領域に未使用部分が生じることと、割り当てられる実領域の数が増大することとの両方を抑えることができる。
【発明を実施するための最良の形態】
【0030】
以下、図面を参照して、本発明の幾つかの実施例を説明する。尚、本発明は以下に説明する実施例に限定されるものではない。
【実施例1】
【0031】
まず、この第一実施例の概要を述べる。なお、以下の説明では、便宜上、フォーマット処理に基づく書込み要求を、「フォーマット書込み要求」と称し、そうではない書込み要求を、「通常書込み要求」と称することにする。
【0032】
仮想化装置に、ホストプロセッサとストレージシステムが接続される。ストレージシステムは、複数の論理的な記憶装置(以下、LU(論理ユニット))を備える。仮想化装置は、各LUについて、LUを構成する複数の記憶領域を管理する。それら複数の記憶領域の各々を、便宜上、「チャンク」と呼ぶ。このチャンクが、上記実領域に相当する。
【0033】
仮想化装置は、仮想ボリュームに対して通常書込み要求を受けた場合には、仮想ボリュームに対する記憶領域割当てをチャンク単位で行う。具体的には、仮想化装置は、その通常書込み要求に従う、仮想ボリュームにおける書込み先に、ストレージシステムにおける複数のチャンクのうちの未割当てのチャンクを割り当てる。そして、仮想化装置は、該割り当てたチャンクに該通常書込み要求に従うデータを書き込むための書込み要求を、ストレージシステムに送信し、それにより、該割り当てたチャンクに、該通常書込み要求に従うデータを書き込む。
【0034】
一方、仮想化装置は、仮想ボリュームに対してフォーマット書込み要求を受けた場合には、仮想ボリュームに対する記憶領域割当てを、チャンク単位で行うのではなく、ページ単位で行う。本実施例で言う「ページ」とは、チャンクを分割することにより生成された複数のサブ領域の各々を意味する。すなわち、仮想化装置は、仮想ボリュームに対してフォーマット書込み要求を受けた場合には、未割当てのチャンクを複数のページに分割し、分割することにより得られた各ページを、仮想ボリュームに割り当てる。仮想化装置は、管理情報を記憶する記憶部を有し、該管理情報には、複数のチャンクのどれが未割り当てであるかなど、チャンク単位で情報要素が含まれる。しかし、複数のページについては、複数のページのどれが未割り当てであるかなど、ページ単位で情報要素は含まれない。
【0035】
この第一実施例では、仮想ボリュームを使用するファイルシステムのフォーマットでは、チャンクよりも小サイズの記憶領域であるページが割り当てられるので、割り当てられた領域に未使用部分が生じることを抑えることができる。また、管理情報には、チャンク単位で情報要素が含まれるが、ページ単位で情報要素は含まれないので、ページを割り当てる都度に管理情報にアクセスする必要は無いので、その分、割当てに要する時間を抑えることができる。
【0036】
以下、この第一実施例について詳述する。
【0037】
図1は、本発明の第一実施例に係る仮想化装置が適用された計算機システムの構成例を示す。
【0038】
この計算機システムは、仮想化装置11、少なくとも1台のホストプロセッサ12、少なくとも1台のストレージシステム13、コンソール14及び管理サーバ16で構成されている。仮想化装置11に、少なくとも1台のホストプロセッサ12と、少なくとも1台のストレージシステム13とが接続される。また、通信ネットワーク(例えばLAN(Local Area Network))15に、仮想化装置11のNIC(Network Interface Card)151と、コンソール14のNIC151と、管理サーバ16のNIC151とが接続される。
【0039】
ホストプロセッサ12は、ストレージシステム13に格納されたデータを使用する計算機である。ホストプロセッサ12は、I/O要求(書込み要求/読出し要求)を、仮想化装置12に発行する。ホストプロセッサ12は、仮想化装置11が提供する記憶領域を仮想化装置11に接続されていない他の計算機に提供する機能を有するファイルサーバでも良い。
【0040】
ストレージシステム13は、複数の記憶装置を備えたシステムである。複数の記憶装置のうちの二以上の記憶装置で、RAID(Redundant Array of Independent (or Inexpensive) Disks)の規則に従うグループ(RAIDグループ)が構成されている。RAIDグループにより提供される記憶資源により、一又は複数の論理的な記憶装置(以下、論理ユニット(LU))131が形成される。LU131は、複数のチャンク132から構成される。本実施形態では、各チャンク132のサイズは一様且つ固定であるが、複数のチャンク132のサイズはそれぞれ異なっても良いし、可変であっても良い。各チャンク132は、連続したアドレスをもつ領域である。
【0041】
仮想化装置11は、ホストプロセッサ12とストレージシステム13との間に介在するスイッチである(後述するように、仮想化装置11の機能がストレージシステム13に搭載されることにより、仮想化装置が、ストレージシステムであってもよい)。仮想化装置11は、一又は複数の仮想ボリューム100を管理する。仮想化装置11は、仮想ボリューム100に対する書込み要求に応じて、仮想ボリューム100に、一以上のストレージシステム13における複数のチャンク132のうち、未割り当てのチャンク132、或いは、該チャンク132を分割することにより生成したページを割り当てる。そして、仮想化装置11は、割り当てたチャンク132或いはページ内のアドレスを指定した書込み要求を、そのチャンク132或いはページを有するストレージシステム13に送信し、それにより、割り当てたチャンク132或いはページにデータを書き込むことができる。このように、仮想化装置11は、仮想ボリューム100に対する書込み要求に応じてチャンク132或いはページを割り当てることができる。
【0042】
コンソール14は、仮想ボリューム100を作成(設定)するためにシステム管理者によって使用される計算機であり、表示装置と入力装置を備える。
【0043】
管理サーバ16は、仮想化装置11を管理するための計算機である。管理サーバ16は、仮想化装置11から情報を受信し、受信した情報をコンソール14に送信することができる。
【0044】
図2は、仮想化装置11の内部構成例を示す。
【0045】
仮想化装置11は、入力ポート240と、出力ポート250と、スイッチ230と、プロセッサパッケージ210と、共有メモリ220とを備える。
【0046】
入力ポート240は、仮想化装置11がホストプロセッサ12と通信するための通信線と接続されるポートである。出力ポート250は、仮想化装置11がストレージシステム13と通信するための通信線と接続されるポートである。尚、入力ポート240及び出力ポート250を構成する装置は、同一であっても良い。この場合、どのポートを入力ポートあるいは出力ポートとして使用するかは、使用者が選択してよい。仮想化装置11は、入力ポート240及び出力ポート250を、それぞれ、一又は複数個備えることができる。入力ポート240及び出力ポート250のうちの少なくとも一方が、プロセッサパッケージ210にあってもよい。
【0047】
スイッチ230は、例えば、LSI(Large Scale Integration)で構成することができる。スイッチ230は、入力ポート240がホストプロセッサ12から受信したI/O要求を、I/O要求に従うアクセス先のストレージシステム13と仮想化装置11との間の通信に使用される出力ポート250へ転送する。また、スイッチ230は、出力ポート250がストレージシステム13から受信した応答情報やデータを、データ等を受信すべきホストプロセッサ12と仮想化装置11の間の通信に使用される入力ポート240へ転送する。
【0048】
プロセッサパッケージ210は、プロセッサ211及びメモリ(以下、ローカルメモリ(LM))215を備える回路基板とすることができる。LM215には、プロセッサ211で実行される制御プログラム212が記憶される。また、LM215には、共有メモリ220に記憶されている各テーブルのエントリをキャッシュすることができる記憶領域(以下、エントリキャッシュ領域)213を設けることができる。プロセッサ211は、制御プログラム212を実行することにより、エントリキャッシュ領域213にキャッシュされている情報を参照して、ホストプロセッサ12からのI/O要求のアクセス先アドレスを変換する処理を行うことができる。
【0049】
共有メモリ220は、プロセッサパッケージ210が複数個存在する場合にそれら複数のプロセッサパッケージ210がアクセスすることができるメモリである。本実施例では、220を便宜上「共有メモリ」と称しているが、プロセッサパッケージ210が一つである等の場合には、共有としてのメモリでなくてもよい。共有メモリ220は、仮想ボリューム管理テーブル221、チャンク管理テーブル222及びアクセス変換テーブル224を記憶する。
【0050】
アクセス変換テーブル224は、仮想ボリューム100毎に存在するが、それに限らず、他種の単位、例えば、入力ポート240毎にあってもよい。アクセス変換テーブル224は、非周期割当てアクセス変換リスト3310と、周期割当てアクセス変換リスト3311と、このテーブル224に対応する仮想ボリューム100の仮想ボリューム識別子を登録するエントリ332とを保持する。
【0051】
非周期割当てアクセス変換リスト3310には、図3Aに例示するように、1又は複数のエントリ331があり、個々のエントリ331には、仮想ボリューム100内のアドレス範囲と、そのアドレス範囲に対応するチャンク132が属するLU131の識別子(LUアドレス)と、そのチャンク132のそのLU131内における位置を示すLU内アドレスとが登録される。エントリ331は、例えば、仮想ボリューム100に割り当てられるチャンク132毎に存在してもよい。以下、仮想ボリュームにおけるアドレスを「仮想アドレス」と言うことがある。また、LUアドレスは、例えば、WWN(World Wide Name)ポートID及びLUN(論理ユニット番号)の組み合わせで表すことができる。
【0052】
また、この第一実施例では、「周期割当て」という言葉と、「非周期割当て」という2種類の割当てがある。「周期割当て」とは、フォーマット書込み要求に従う書き込みに応じた割当てのことであり、具体的には、データの書込み先が規則的な間隔で遷移するが故に、仮想ボリュームに対するページの割当て先も規則的な間隔で遷移する割当てのことである。この第一実施例において、割当てについての「周期」とは、フォーマット処理においてページが連続して割り当てられた仮想アドレス範囲(以下、ページ連続割当て領域)の先頭仮想アドレスから次のページ連続割当て領域における先頭仮想アドレスとの間隔を意味し、時間を意味するわけではない。しかし、この第一実施例において、フォーマット書込み要求に従う書き込みに応じた領域割当てを、周期的に行うことが可能であるので、便宜上、「周期割当て」という言葉を使用している。それに対し、「非周期割当て」とは、通常書込み要求に従う書き込みに応じた領域割当てのことである。通常書込み要求は、通常、周期的に発生するI/O要求ではないし、書き込み先仮想アドレスも、規則的に遷移するわけではないので、この第一実施例では、便宜上、「非周期割当て」という言葉を使用している。
【0053】
周期割当てアクセス変換リスト3311には、図3Bに例示するように、1又は複数のエントリ333があり、個々のエントリ333には、仮想ボリューム100内のアドレス範囲と、ページの連続割当て数(以下、単に「ページ数」と言う場合がある)と、周期(ページ連続割当て領域の先頭仮想アドレスと次のページ連続割当て領域の先頭アドレスとの間隔)と、そのアドレス範囲に対応するチャンク132が属するLU131の識別子(LUアドレス)と、そのチャンク132のそのLU131内における位置を示すLU内アドレスとが登録される。エントリ333は、例えば、仮想ボリューム100に割り当てられるチャンク132に存在しても良い。なお、周期割当てで割り当てられるのは、チャンク132ではなくページなので、ここで言う「割り当てられるチャンク」というのは、実際には、割り当てられたページの元となっているチャンクのことである。
【0054】
チャンク管理テーブル222は、LU131ごとに存在するが、他種の単位で用意されて良い。チャンク管理テーブル222は、LU131に含まれるチャンク132を管理するために使用されるテーブルである。各チャンク管理テーブル222には、ストレージシステムIDが登録されるエントリ321と、LUアドレスが登録されるエントリ322と、チャンクリスト324とがある。エントリ321のストレージシステムIDは、このテーブル222が対応するLU131を有するストレージシステム13を識別するIDである。チャンクリスト324には、このテーブル222が対応するLU131に含まれる各チャンク132毎にエントリ325がある。各エントリ325には、そのエントリ325が対応するチャンクのIDと、そのチャンクが割り当てられている仮想ボリュームのIDとが登録される。チャンクが未割当ての場合には、仮想ボリュームIDとして、未割り当てを示す値(例えば「null」)が登録される。このように、チャンク管理テーブル222は、LU131に属する各チャンク132が仮想ボリューム100に割り当てられているか否かを示す情報を保持しており、仮想化装置11が、仮想化ボリューム100に新たに割当てるチャンク132を選択する際に利用される。
【0055】
仮想ボリューム管理テーブル221は、仮想ボリューム100ごとに存在するが、他種の単位で存在してよい。各仮想ボリューム管理テーブル221には、識別子エントリ311、非周期割当てチャンクリスト315、及び周期割当てチャンクリスト3312が格納される。
【0056】
識別子エントリ311には、仮想ボリューム管理テーブル221に対応する仮想ボリューム100の仮想ボリューム識別子が登録される。
【0057】
非周期割当てチャンクリスト315は、仮想ボリューム管理テーブル221に対応する仮想ボリューム100にどのチャンク132が割当てられているかを示すリストである。非周期割当てチャンクリスト315内では、図3Cに例示するように、仮想ボリューム100上の仮想アドレス順に、対応するチャンク132のエントリ317が並び、各エントリ317には、仮想アドレスに対応するチャンク132のチャンクIDが格納されている。
【0058】
周期割当てチャンクリスト3312には、図3Dに例示するように、一又は複数のエントリ318の各エントリ318に、仮想ボリューム管理テーブル221に対応する仮想ボリューム100にどのアドレス範囲にどのチャンクからのページが割り当てられているかが登録される。各エントリ318には、更に、前述したページ数及び周期が登録される。このページ数としては、後述するように、あるチャンクを周期割り当てする際に、周期を決定する前に割り当てているページ数も表す。すなわち周期割当てチャンクリスト3312には、周期割り当てしようとしているチャンクが存在する場合に、そのチャンクをどのように割り当てるか決定するための情報も含む。
【0059】
このように、仮想ボリューム管理テーブル221は、仮想ボリューム100の記憶領域がどのチャンク132と対応付けられているかを示す情報を保持しており、仮想化装置11が、周期割り当てする際、どのように割り当てるかを決定するために用いる。
【0060】
図4は、ストレージシステム13の構成例を示す。
【0061】
ストレージシステム13は、複数の記憶装置1240と、仮想化装置11から記憶装置1240へのアクセスを制御するコントローラ1210とを備える。
【0062】
記憶装置1240は、物理的な記憶装置であり、例えば、ハードディスク或いはフラッシュメモリである。複数の記憶装置1240には、異なる種類の記憶装置が混在しても良い。複数の記憶装置1240のうちの二以上の記憶装置1240により、RAIDグループ(パリティグループ或いはアレイグループと呼ばれることもある)が構成される。RAIDグループは、RAID(Redundant Array of Independent (or Inexpensive) Disks)の規則に基づくグループであり、或るRAIDレベルを有する。RAIDグループにより提供される記憶資源から、一又は複数のLU131が提供される。ストレージシステム13に存在する複数のLU131のうちの少なくとも一つが、所定サイズのチャンク132により構成される。各チャンク132は、仮想ボリューム100に対する書込み要求に応じて動的に割り当てられる領域である。複数のチャンク132により構成される記憶領域をプール1260と呼ぶことにする。
【0063】
コントローラ1210は、上位I/F1207と、下位I/F1206と、CPU120と、メモリ1204と、転送回路1208とを備える。上位I/F1207は、一又は複数の通信ポートを有し、上位装置(本実施例では仮想化装置11)との通信インタフェースである。LUアドレスは、通信ポートのIDと、上位I/F1207のWWNと、その通信ポートに割り当てられたLUNとで構成することができる。下位I/F1206は、一又は複数の通信ポートを有し、記憶装置1240との通信インタフェースである。転送回路1208は、上位I/F1207、下位I/F1206、メモリ1204及びCPU1203間の通信を切り替えるLSIである。メモリ1204には、CPU1203にて実行される種々のコンピュータプログラムが記憶される。CPU1203は、メモリ1204内のコンピュータプログラムを実行することにより、仮想化装置11から記憶装置1240へのアクセスを制御する。
【0064】
以上が、第一実施例に係る計算機システムや、その計算機システムの構成要素についての説明であるが、種々の構成は、前述した説明に限定しなくてもよい。例えば、コントローラ1210が、上記の構成に代えて、上位装置との通信を制御する複数の第一の制御部(例えば制御回路基板)と、記憶装置1240との通信を制御する複数の第二の制御部(例えば制御回路基板)と、上位装置と記憶装置1240との間で授受されるデータを記憶することができるキャッシュメモリと、ストレージシステム13を制御するためのデータを記憶することができる制御メモリと、各第一の制御部、各第二の制御部、キャッシュメモリ及び制御メモリを接続する接続部(例えば、クロスバスイッチなどのスイッチ)とを備えることができる。この場合、第一の制御部と第二の制御部の一方が、又は双方が協働して、後述するコントローラ1210としての処理を行うことができる。制御メモリは無くても良く、その場合、キャッシュメモリに、制御メモリが記憶する情報を記憶する領域が設けられても良い。
【0065】
さて、この第一実施例では、周期割当ての処理が特徴の一つである。以下、周期割当てについて説明する。なお、以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ(CPU)によって処理が行われるものとする。
【0066】
図5は、周期割当ての説明図である。
【0067】
例えば、ホストプロセッサ12或いは管理コンソール14から、仮想ボリューム100に対するフォーマット命令を受けた場合に、制御プログラム212によって、仮想ボリューム100を使用するファイルシステムの初期化、つまりフォーマットが行われる。具体的には、仮想ボリューム100を使用するファイルシステム上のファイル及びディレクトリを全て消去し、新規にファイル及びディレクトリを作成可能な状態となるように、ホストプロセッサ12は、仮想ボリューム100に、メタデータを書き込むためのI/O要求(つまりフォーマット書込み要求)を仮想化装置11に対して発行する。
【0068】
制御プログラム212は、そのフォーマット書込み要求に従って、仮想ボリューム100に、一定の仮想アドレス間隔で、メタデータを書いていく。具体的には、例えば、制御プログラム212は、仮想ボリューム100の先頭仮想アドレスから、第一のメタデータを書いていき、該第一のメタデータを書き終えた後、先頭仮想アドレスから所定の仮想アドレスをオフセットした仮想アドレスから、第二のメタデータを書く。このようにメタデータを書いていく際に、制御プログラム212は、未割り当てのチャンク132から切り出したページ1261を割り当てていく。
【0069】
より具体的には、例えば、ステップ(1)に示すように、制御プログラム212は、仮想ボリューム100に第一のメタデータを書く場合、未割当てのチャンク132を複数のページ1261に分割し、分割された複数のページ1261のうちの1番目のページ1261(その未割当てのチャンク132における先頭のページ)を、仮想ボリューム100の先頭仮想アドレスに割り当てる。
【0070】
次に、ステップ(2)に示すように、制御プログラム212は、フォーマット書込み要求に従って、第一のページ連続割当て領域(連続した仮想アドレス範囲)に第一のメタデータを書くことになる。そのため、制御プログラム212は、その第一のページ連続割当て領域に、2番目のページ1261、3番目のページ1261、…のように、次々に、ページを割り当てていく。これにより、第一のページ連続割当て領域に、複数のページが割り当てられる。なお、このステップ(2)において、制御プログラム212は、割り当てたページの数をカウントしていく。
【0071】
第一のメタデータの書込みが完了し、第二のメタデータを仮想ボリューム100に書く場合、ステップ(3)に示すように、フォーマット書込み要求に従う書込み先の仮想アドレスが、第一のページ連続割当て領域から離れた別の仮想アドレスになる。つまり、第一のページ連続割当て領域から離れた別の仮想アドレスから、第二のページ連続割当て領域が始まることになる。この場合、制御プログラム212は、その別の仮想アドレスに対して、第一のページ連続割当て領域の最後に割り当てたページの次のページを割り当てる。
【0072】
この時点で、ページ数(c)と、周期(d)とがわかる。具体的には、例えば、ページ数(c)は、第一のページ連続割当て領域に割り当てられたページのカウント値とすることができる。また、制御プログラム212は、第一のページ連続割当て領域の先頭仮想アドレスと第二のページ連続割当て領域の先頭仮想アドレスとの差分(例えば、その差分は、LBAで表される)を算出することにより、周期(d)を求めることができる。
【0073】
以後、制御プログラム212は、第二のページ連続割当て領域の先頭仮想アドレスより後については、求められたページ数(c)及び周期(d)を基に、次々にページ1261を割り当てていく。具体的には、制御プログラム212は、第二のページ連続割当て領域に、(ページ数(c)−1)のページを割当て、以後、周期(d)の間隔で、ページ数(c)のページ1261を連続して割り当てていく。つまり、第二のページ連続割当て領域の先頭仮想アドレスより後の仮想アドレスに対して、実際にフォーマット書込み要求が発生していなくても、ページ1261を割り当てていくことができる。このような割当てによれば、チャンク132のどのページ1261からが未割り当てかを、共有メモリ220内のいずれのテーブルでも管理しなくて済むので、テーブルのサイズを抑えることができるというメリットがある。もし、フォーマット書込み要求に応じてページを割り当てていくならば、チャンク132のどのページ1261からが未割り当てかを管理する必要が生じてしまう。それ故、上記のように、求められたページ数(c)及び周期(d)を基に次々にページ1261を割り当てていくのは、テーブルサイズを抑える上でメリットである。
【0074】
なお、この周期割り当てにおいて、もし、一つのチャンク132に未割当てのページ1261が無くなった場合には、制御プログラム212が、別の未割当てのチャンク132を探し、その探し出されたチャンク132から複数のページ1261を生成し、それら複数のページ1261を順次に割り当てていくことができる。この場合、周期割当てアクセス変換リスト3311の一つのエントリ333(図3B参照)や、周期割当てチャンクリスト3312の一つのエントリ318(図3D参照)には、制御プログラム212によって、複数のチャンク132に関する情報(LU内アドレス又はチャンクID)が登録されても良いし、あくまでも一つのエントリでは一つのチャンクを管理するようにするために、周期割当てで複数のチャンクを使用するようになった場合には、複数のエントリを用意しても良い。
【0075】
以上が、周期割当ての説明である。なお、この図5において、(a)は、フォーマット処理の範囲の先頭の仮想アドレスを表し、(b)は、フォーマット処理の範囲の末尾の仮想アドレスを表す。この例では、仮想ボリューム100全体がフォーマット処理の対象なので、(a)は、仮想ボリューム100の先頭の仮想アドレスであり、(b)は、仮想ボリューム100の末尾の仮想アドレスである。これに限らず、フォーマット処理の範囲は、仮想ボリューム100の一部であっても良い。例えば、一つの仮想ボリューム100を、第一と第二のファイルシステムが使用する場合には、第一のファイルシステムが使用する範囲の先頭仮想アドレス及び末尾仮想アドレスが、上記(a)、(b)であってもよい。つまり、第一のファイルシステムが使用する範囲についてのみ、周期割当てが発生しても良い。同様に、フォーマット処理の中で周期割り当てを行う部分は、上記(a)を先頭にせず、中間の位置にあってもよい。これは、本実施例での周期割り当てが、ある書き込みが発生した箇所(例えば、後述のS607で割り当てる位置)を基準にして、そこから連続して割り当てるページ数と周期を決定(例えば、後述のS608)しており、この書き込みは仮想ボリューム100の中の任意の位置であっても周期割り当てが可能であることに起因する。
【0076】
以下、この第一実施例で行われる処理の流れを説明する。
【0077】
図6は、I/O要求を受信した制御プログラム212によって行われる処理の流れの一例を示す。
【0078】
制御プログラム212は、I/O要求を受信した場合、そのI/O要求が、書込み要求か読出し要求かを判断する(S100)。読出し要求と判断した場合(S100でNO)、制御プログラム212は、後述するS700を実行する。
【0079】
一方、書込み要求と判断した場合(S100でYES)、制御プログラム212は、周期割当てアクセス変換リスト3311を参照して、受信した書込み要求に従う仮想アドレスに、領域が割当て済みであるか否かを判断する(S200)。制御プログラム212は、割当て済みであれば(S300でYES)、S700を実行し、割当て済みでなければ(S300でNO)、S400を実行する。このS200での処理については、後に図7を参照して詳述する。
【0080】
S400では、制御プログラム212は、非周期割当てアクセス変換リスト3310を参照して、上記受信した書込み要求に従う仮想アドレスに、領域が割当て済みであるか否かを判断する。制御プログラム212は、割当て済みであれば(S500でYES)、S700を実行し、割当て済みでなければ(S500でNO)、S600を実行する。
【0081】
S600では、制御プログラム212は、領域割り当て処理を行う。このS600での処理については、後に図8を参照して詳述する。
【0082】
S700では、制御プログラム212は、アドレス変換、及び、I/O処理を行う。
【0083】
なお、ここで言うアドレス変換とは、受信したI/O要求のアクセス先アドレスを、仮想アドレスから、ストレージシステム13におけるアドレス(例えば、LUアドレス及びLU内アドレスのセット)に変換することを言う。具体的には、例えば、S300でYESになった後のS700では、制御プログラム212は、I/O要求で指定されている仮想アドレスをアドレス範囲として有するエントリ333(周期割当てアクセス変換リスト3311のエントリ333)から、ページ数、周期、LUアドレス及びLU内アドレスを特定し、特定されたページ数、周期、LUアドレス及びLU内アドレスを用いた計算(例えば後述するS203での計算)を行うことで、上記指定されている仮想アドレスを、該仮想アドレスを含んだ領域(仮想ボリューム100における領域)に割り当てられた実アドレス(割り当てられたページに対応するアドレス)に変換することができる。
【0084】
また、I/O処理とは、アドレス変換後のアドレスを指定したI/O要求を、ストレージシステム13に送信する処理である。
【0085】
図7は、図6のS200での処理の詳細を示す。
【0086】
制御プログラム212は、対象LBAを含むエントリを、周期割当てアクセス変換リスト3311から検索する(S201)。対象LBAとは、受信した書込み要求で指定されているLBAであり、仮想アドレスである。
【0087】
制御プログラム212は、対象LBAを含む、仮想ボリューム内のアドレス範囲を有したエントリが、周期割当てアクセス変換リスト3311から見つかった場合には、S203を実行する。見つからなかった場合は(S202)、図6のS300でNO、すなわち、図6のS200において、未割り当てという判断結果になる。
【0088】
S203では、制御プログラム212は、以下の式を計算する。
u = 対象LBA - (a);
v = u / (d);
w = u mod (d);
x = w / (ページサイズ)
y = w mod (ページサイズ)
チャンク内のページ番号 = v ×(c) + x
ページ内のオフセット = y
この計算式において、(a)は、仮想ボリューム内のアドレス範囲の先頭LBA(先頭仮想アドレス)である。(b)は、そのアドレス範囲の末尾LBA(末尾仮想アドレス)である。(c)は、ページ数、すなわち、一つのページ連続割当て領域に割り当てられたページの数である。(d)は、周期、すなわち、第一のページ連続割当て領域の基点(例えば先頭LBA)から次の第二のページ連続割当て領域の基点(例えば先頭LBA)までのアドレス範囲である。また、(ページサイズ)は、一つのページのサイズ(記憶容量)である。なお、この第一実施例では、チャンクのサイズもページのサイズも一様且つ固定値であるため、各種テーブルにおいて、チャンクやページについてサイズを管理する必要がない。しかし、それに限らず、例えば、チャンク及びページのうちの少なくとも一方が可変値であっても良い。その際、全てのチャンク或いはページを可変値にしても良いが、それらのうちの一つ或いは複数が、可変値であっても良い。
【0089】
S203の計算において、もし、x>(c)となったら(S204でYES)、図6のS300でNOとなるが、そうならずにyが算出されれば(S204でNO)、図6のS300でYES、つまり、対象LBAにはページが割り当てられていることになる。
【0090】
図8は、図6のS600での処理の詳細を示す。
【0091】
制御プログラム212は、フォーマット中か否かを判断する(S601)。フォーマット中か否かの判断方法には、幾つかのバリエーションがあり、各バリエーションについては、後述する。
【0092】
制御プログラム212は、フォーマット中ではないと判断した場合(S601でNO)、チャンク管理テーブル222から未割当てのチャンクを探し、探し出されたチャンクを、該通常ライト要求に従う仮想アドレスに対して割り当てる(S603)。フォーマット中ではない場合のライト要求は、通常ライト要求ということになるためである。このS603では、制御プログラム212は、非周期割当てアクセス変換リスト3310及び非周期割当てチャンクリスト315を更新する。
【0093】
一方、制御プログラム212は、フォーマット中であると判断した場合(S601でYES)、対象LBAが、周期割当て済みのページに挟まれているか否か(つまり、ページ連続割当て領域同士の間にあるか否か)を判断する(S602)。具体的には、例えば、以下の(P)及び(Q)、
(P)周期割当てアクセス変換リスト3311に、対象LBAを含む、仮想ボリューム内のアドレス範囲を有したエントリ333の次のエントリ333が設定済みである、
(Q)図7のS203の計算において、x>(c)となった、
のいずれかに該当する場合には、対象LBAが周期割当て済みのページに挟まれている、という判断結果になる。そのような判断結果が得られた場合(S602でYES)、制御プログラム212は、前述したS603を実行する。
【0094】
一方、対象LBAが周期割当て済みのページに挟まれていない、という判断結果が得られた場合(S602でNO)、制御プログラム212は、直前に周期割当てされたページを有するチャンク内に、未割当てのページがあるか否かを判断する(S606)。具体的には、例えば、制御プログラム212は、チャンクから複数のページを生成した場合、各ページに連続したページ番号を割り振り、未割り当てのページ番号があるか否かを判断する。
未割当てのページがないと判断した場合(S606でNO)、制御プログラム212は、未割当てのチャンクを新たに探し、新たに探し出された未割当てのチャンクから複数のページを生成し、それら複数のページのうちの最初のページを割り当てる(S607)。
【0095】
つまり、例えば、最初のページ連続割当て領域に割り当て続けるページがチャンクに無い場合に、別のチャンクからページを割り当てる。或いは、最初のページ連続割当て領域にページを割り当て続けることが終了し、次のページ連続割当て領域の最初からページを割り当てる際に、ページがチャンクに無い場合に、別のチャンクからページを割り当てる。これらのような状況は、例えば、ページ連続割当て領域のサイズに比してチャンクのサイズが小さい場合、或いは、ページ連続割当て領域のサイズとチャンクのサイズとが同じ場合に生じ得る。
【0096】
一方、S606において、未割当てのページがある場合、制御プログラム212は、対象LBAの直前のページ(対象LBAに連続した直前の仮想アドレスに割り当てられたページ)が、当該チャンクで最初の連続しているページか否か(すなわち、周期が未確定で、対応するページのアドレスが連続か否か)を判断する(S604)。別の言い方をすれば、制御プログラム212は、チャンクに存在する一以上の未割当てのページのうちの先頭ページの直前にある割当て済みページの割当て先仮想アドレスが、対象LBAに連続した直前の仮想アドレスか否かを判断する。つまり、このS604では、図5のステップ(2)の書込みが発生しているのかどうかが判断される。具体的には、図9に例示するように、周期割当てが全くされていない場合には、周期割当てアクセス変換リスト3311において、三行目のエントリに示すように、ページ数及び周期のそれぞれの値が“0”であり、それ以外の各他の項目の値は、“NULL”となっている。それに対し、フォーマット中において、チャンクが割当て済みとなった場合、2行目のエントリに示すように、LUアドレス及びLU内アドレスが、割り当てられたチャンクを有するLUアドレスと、そのチャンクを示すLU内アドレスに更新される。また、周期が未確定の場合(すなわち、最初のページ連続割当て領域にページを割り当て中の場合)、ページの割当てに応じて、ページ数が更新されるが、周期の値は“0”のままである。
【0097】
S604において、最初の連続したページであると判断した場合(S604でYES)、すなわち、図9において、周期割当てアクセス変換リスト3311が2行目のエントリの状態であれば、制御プログラム212は、直前のページの次のページを、対象LBAに対して割り当てる(S605)。すなわち、最初のページ連続割当て領域にページを割り当てることが継続される。
【0098】
一方、S604において、最初の連続したページではないと判断した場合(S604でNO)、制御プログラム212は、周期割当て処理を実行する(S608)。すなわち、制御プログラム212は、直前のページ連続割当て領域の先頭アドレスと、現在のページの割当て先仮想アドレスとのオフセットを周期とし、その周期で、チャンクの残りのページを割り当て、周期割当てアクセス変換リスト3311と周期割当てチャンクリスト3312を更新する。このS608では、最初のページ連続割当て領域に割り当てたページ数の単位で、周期間隔で、ページを割り当てていく。このS608での周期割当ては、フォーマット書込み要求が実際に発生する前に行われる。言い換えれば、このS608の周期割当ての最中或いはそれが終了した後に、制御プログラム212が、フォーマット書込み要求を受信することになる。このため、その受信したフォーマット書込み要求に従う書込み先アドレスには、既に、ページが割り当たっていることになり、その割り当たっているページに、データが書き込まれることになる。周期が確定した場合、図9の周期割当てアクセス変換リスト3311の1行目のエントリに示すように、周期の値が0でなくなる。また、S608の周期割当てが終了した場合、仮想ボリューム内のアドレス範囲の末尾LBAが書かれる。この末尾アドレスは、このS608の処理の開始前にわかっている(例えば、仮想ボリューム100全体がフォーマットの対象である)等の場合には、S608の終了時点に限らず、それよりも前の時点で書き込まれても良い。
【0099】
以上が、図6のS600の処理の詳細の説明である。なお、S601において、フォーマット中か否かの判断方法のバリエーションとして、例えば以下の第一〜第三のバリエーションがある。
【0100】
第一のバリエーションを、図10を参照して説明する。これは、仮想化装置11が、管理サーバ16から通知された情報から、フォーマット中か否かを判断する方法である。具体的には、管理サーバ16が、フォーマット開始通知を仮想化装置11に送信し(S801)、仮想化装置11が、フォーマット開始通知を受信したことに応答して、フォーマット開始応答を管理サーバ16に送信する(S802)。この時点が、フォーマット中であると判断される開始時点となる。以後、管理サーバ16が、フォーマット開始要求をホストプロセッサ12に送信する(S803)。そのフォーマット開始要求を受けたホストプロセッサ12が、フォーマット処理(S804)として、フォーマット書込み要求を仮想化装置11に送信する。ホストプロセッサ12は、フォーマット処理を終えた場合、フォーマット完了応答を管理サーバ16に送信する(S805)。管理サーバ16は、フォーマット完了応答の受信に応答して、フォーマット完了通知を仮想化装置11に送信する(S806)。仮想化装置11がフォーマット完了通知を受信した時点が、フォーマット中であるとの判断の終了時点となる。仮想化装置11は、フォーマット完了応答を管理サーバ16に送信する(S807)。
【0101】
第二のバリエーションは、仮想化装置11が、ホストプロセッサ12から通知された情報から、フォーマット中か否かを判断する方法である。具体的には、例えば、図10の処理の流れにおいて、管理サーバ16が実行する処理を、ホストプロセッサ12が実行する。その際、図10における、管理サーバ16とホストプロセッサ12との間のやり取りは省略しても差し支えない。要するに、ホストプロセッサ12が、フォーマット開始通知やフォーマット完了通知を仮想化装置11に通知することで、仮想化装置11に、フォーマット中であるとの開始時点と終了時点の契機を与えることができる。
【0102】
第三のバリエーションは、周期割当て(S608)を開始した後(例えばそれを終了した後)に非周期割当て(S603)を行った回数が、所定の閾値を超えていないかどうかで、フォーマット中であるか否かを判断する方法である。具体的には、例えば、制御プログラム212は、周期割当てを開始した後、非周期割当て(S603)を行った回数をカウントする。そのカウントされた回数が、所定の閾値を超えるまでは、制御プログラム212は、フォーマット中と判断し、超えた後は、フォーマット中ではないと判断する。なお、実際にフォーマット中であっても、全ての周期及び全てのページ数が必ずしも一様であるとは限らない場合もある。例えば、第一と第二のページ連続割当て領域の周期(距離)と、第三と第四のページ連続割当て領域の周期は、必ずしも同じではあるとは限らない。同様に、例えば、第一のページ連続割当て領域に割り当てられたページの数と、第二のページ連続割当て領域に割り当てられたページの数が、必ずしも同じとは限らない。このような場合、周期割当て後に受信したフォーマット書込み要求に従う書込みでは、ページの割当て先アドレスとは異なる、領域が未割り当てのアドレスが、対象LBAとなり、故に、ページではなくチャンクが割り当てられてしまうことになる。しかし、これにより、周期割当てによってページが割り当てられた場所からずれた場所が、実際のフォーマット書込み要求に従う書込み先であっても、書き込み(フォーマット)に失敗してしまうことを救うことができる。また、非周期割当てが行われるケースは、少なくとも、通常書込み要求に従う書込みが行われる程多くは無い。そのため、前述した所定の閾値は、こういった点を考慮した値とされる。この第三のバリエーションでは、上記のように、フォーマット書込み要求に従う書込みに失敗してしまうことを救いつつ、フォーマット中であるか否かを適切に判断することができる。
【0103】
以上が、第一実施例についての説明である。この第一実施例では、ページのサイズは、例えば、少なくとも、フォーマットの際に書き込まれる一つのメタデータのサイズ以下とすることができる。
【0104】
以上、上述した第一実施例によれば、仮想ボリュームのフォーマット中での領域割当てにおいて、チャンクよりも小サイズの記憶領域であるページが割り当てられるので、割り当てられた領域に未使用部分が生じることを抑えることができる。また、フォーマット中での領域割当てでは、一つのチャンクから複数のページを切り出して順次に割り当てていくため、一つのページを割り当てる都度に共有メモリ220にアクセスする必要は無く、ページの元となる未割当てのチャンクを探す場合にアクセスすれば良い。このため、フォーマット中において、共有メモリ220へのアクセス回数を抑えることができる。
【実施例2】
【0105】
以下、本発明の第二実施例を説明する。その際、第一実施例との相違点を主に説明し、第一実施例との共通点については、説明を省略或いは簡略する(これは、第二実施例に限らず、後の第三実施例以降についても同様である)。
【0106】
図11は、本発明の第二実施例で行われる処理の流れの一例を示す。
【0107】
仮想化装置11の制御プログラム212が、或る仮想ボリュームがフォーマット中でなくなった場合に、その仮想ボリュームでの周期割当ての周期と、1周期あたりのページ数(すなわち、1周期に存在する一つのページ連続割当て領域に割り当てられたページの数)とを表す情報(以下、周期・ページ数情報)を、管理サーバ16に送信する(S901)。
【0108】
管理サーバ16は、受信した周期・ページ数情報をコンソール14に送信し、その周期・ページ数情報を表示することをコンソール14に指示する(S902)。
【0109】
コンソール14は、管理サーバ16からの指示に従って、管理サーバ16から受信した周期・ページ数情報を表示する(S903)。
【0110】
以上が、第二実施例の説明である。なお、S901を開始するタイミングは、或る仮想ボリュームがフォーマット中でなくなったタイミングに限らず、別のタイミングでもよい。例えば、フォーマット中であっても、周期とページ数がわかった時点で、S901が行われても良い。
【0111】
また、この第二実施例では、制御プログラム212は、管理サーバ16に送る周期とページ数を、それぞれ、以下のようにして選ぶことができる。具体的には、例えば、制御プログラム212は、或るタイミングで使用した周期とページ数(例えば、最後に周期割り当てを行ったチャンクの周期とページ数)を、送信対象として選択することができる。或いは、例えば、制御プログラム212は、最も多くのチャンクで使われた周期とページ数を、送信対象として選択することができる。最も多くのチャンクで使われた周期とページ数は、例えば、周期とページ数を連結したバイト列をインデクスとし、採用したチャンク数を値とするテーブルを作成することで、特定することができる。すなわち、ページの基とするチャンクを探した場合に、そのチャンクから切り出したページの割当てでのページ数と周期に対応する場所の値(チャンク数)を更新し、最も大きい更新後の値に対応したページ数と周期の組を特定することができる。
【0112】
以上、この第二実施例では、コンソール14に表示された周期・ページ数情報を閲覧した管理者が、別の仮想ボリュームのフォーマットの際に、コンソール14を操作して、この表示された周期とページ数で周期割当てを行うことを、その別の仮想ボリュームを有する仮想化装置11に指示することができる。すなわち、第一実施例では、仮想化装置11が、周期及びページ数を学習し、学習した結果に基づいて周期割当てを行ったが、この第二実施例では、仮想化装置11が、コンソール14から指定された周期及びページ数で周期割当てを行うことができる。つまり、この第二実施例では、最初のページ連続割当て領域から、周期割当てでページを割り当てていくことができる。
【実施例3】
【0113】
図12Aは、本発明の第三実施例で行われる処理の流れの一例の一部を示す。図12Bは、その処理の流れの一例の残りの一部を示す。
【0114】
図12Aに示すように、仮想化装置11の制御プログラム212が、或る仮想ボリュームがフォーマット中でなくなった場合に、その仮想ボリュームでの周期割当ての周期と、1周期あたりのページ数とを表す周期・ページ数情報を、管理サーバ16に送信する(S1001)。送信対象とする周期とページ数は、第二実施例と同様の方法で選択することができる。
【0115】
管理サーバ16は、受信した周期・ページ数情報と、上記或る仮想ボリュームをフォーマットしたサーバの種類を表す情報(以下、サーバ種類情報)とを、管理記憶装置に出力する(S1002)。これにより、周期・ページ数情報とサーバ種類情報との情報セットが、管理記憶装置に格納される。なお、サーバ種類情報が表すサーバ種類とは、フォーマット開始要求をホストプロセッサに出した、或いは、フォーマット処理をホストプロセッサに代わって行ったサーバの種類(例えばそのサーバが搭載するOS(オペレーティングシステム)の種類)とすることができる。また、管理記憶装置とは、管理サーバ16に内蔵された記憶装置、或いは、管理サーバ16の外部にあって管理サーバ16と通信可能な記憶装置である。その記憶装置は、据置型であっても良いし、可搬型であっても良い。
【0116】
図12Bに示すように、管理サーバ16は、管理記憶装置から、周期・ページ数情報とホストプロセッサ種類情報との情報セットを読み出す(S1011)。ここで読み出される情報セットは、その仮想ボリュームをフォーマットしたホストプロセッサ12の種類を表すホストプロセッサ種類情報を含んだ情報セットである。
【0117】
管理サーバ16は、読み出した情報セット中の周期・ページ数情報を、仮想化装置11に送信する(S1012)。
【0118】
仮想化装置11の制御プログラム212は、受信した周期・ページ数情報が表す周期且つページ数で、周期割当てを行う(S1013)。なお、ここで周期割当てがされる仮想ボリュームは、所定の仮想ボリュームであっても良いし、管理サーバ16から指定された仮想ボリュームであっても良い。
【0119】
図13は、第三実施例での領域割当て処理の流れを示す。なお、この図13は、図8との相違点を示す。
【0120】
すなわち、図8のS602でNOの場合、制御プログラム212は、周期・ページ数情報を受信済みか否か判断する(S651)。受信済みでなければ(S651でNO)、図8のS603が行われ、受信済みであれば、S652が行われる。
【0121】
S652では、制御プログラム212は、受信済みの周期・ページ数情報が表す周期・ページ数を基に、周期割当てを行う。その際、制御プログラム212は、周期割当てアクセス変換リスト3311や、周期割当てチャンクリスト3312を更新する。
【実施例4】
【0122】
図14は、本発明の第四実施例に係る計算機システムの構成例を示す。
【0123】
この計算機システムによれば、仮想化装置11に、通信ネットワーク15を介して、管理ボリューム管理サーバ5001が接続される。仮想ボリューム管理サーバ5001は、仮想ボリューム100への領域割り当てを制御する。仮想ボリューム管理サーバ5001と仮想化装置11は、通信ネットワーク15を介して互いに通信が可能である。
【0124】
図15は、仮想化装置11と仮想ボリューム管理サーバ5001の構成例を示す。
【0125】
仮想化装置11は、アクセス変換テーブル224を有し、仮想ボリューム管理サーバ5001が、メモリ501に、全てのテーブル224,222,221を有する。仮想ボリューム管理サーバ5001が持つアクセス変換テーブル224は、仮想化装置11が持つアクセス変換テーブル224と同一内容とすることができる。それに代えて、仮想ボリューム管理サーバ5001は、アクセス変換テーブル224を持たずに、仮想ボリューム管理サーバ5001は、仮想化装置11のアクセス変換テーブル224を参照してもよい。
【0126】
以上のように、第一実施例で説明した各種テーブル224、222、221のうち、少なくともチャンク管理テーブル222及び仮想ボリューム管理テーブル221が、仮想ボリューム管理サーバ501のメモリ501(それに代えて別種の記憶資源でも良い)に記憶される。仮想ボリューム管理サーバ5001のプロセッサ503が、そのテーブル222、221を参照して、処理を実行することができる。
【0127】
図16は、第四実施例において、I/O要求を受信した制御プログラム212によって行われる処理の流れの一例を示す。図16は、第一実施例との相違点を主に示す。
【0128】
図6のS500でNOの場合、制御プログラム212が、仮想ボリューム管理サーバ5001に、領域割当てを依頼する(S600A)。その依頼に従って、仮想ボリューム管理サーバ5001が、図6のS600と同様の流れで、領域割当て処理を実行する。この領域割当て処理では、仮想ボリューム管理サーバ5001におけるアクセス変換テーブル224が更新されることになる。仮想ボリューム管理サーバ5001は、更新前のアクセス変換テーブル224と更新後のアクセス変換テーブル224との差分(以下、テーブル差分)を、仮想化装置11に送信する。
【0129】
制御プログラム212は、仮想ボリューム管理サーバ5001から、テーブル差分を受け取る(S600B)。そして、制御プログラム212は、テーブル差分を、仮想化装置11におけるアクセス変換テーブル224に反映する(S600C)。これにより、仮想化装置11におけるアクセス変換テーブル224の内容が、仮想ボリューム管理サーバ5001における更新後のアクセス変換テーブル224の内容と同一になる。
【0130】
以上、この第四実施例では、領域割当て処理や、アクセス変換テーブル224における各種リスト3310、3311を参照する処理を、仮想化装置11ではなく、仮想ボリューム管理サーバ5001が行うことができる。
【0131】
以上、本発明の好適な幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【0132】
例えば、仮想化装置としての機能が、ストレージシステム13のコントローラに搭載されても良い。この場合、コントローラのメモリに、前述した各種テーブル221、222、224や、制御プログラム212が記憶され、コントローラのCPUで、その制御プログラム212が実行されても良い。
【0133】
また、例えば、そのストレージシステム13には、外部のストレージシステムが接続されても良い。その場合、該外部のストレージシステムに、複数のチャンクが存在し、ストレージシステム13が、その外部ストレージシステムに存在する未割当てのチャンクからページを切り出して仮想ボリュームに割り当てても良い。
【図面の簡単な説明】
【0134】
【図1】図1は、本発明の第一実施例に係る仮想化装置が適用された計算機システムの構成例を示す。
【図2】図2は、仮想化装置11の内部構成例を示す。
【図3】図3Aは、非周期割当てアクセス変換リストの構成例を示す。図3Bは、周期割当てアクセス変換リストの構成例を示す。図3Cは、非周期割当てチャンクリストの構成例を示す。図3Dは、周期割当てアクセス変換リストの構成例を示す。
【図4】図4は、ストレージシステム13の構成例を示す。
【図5】図5は、周期割当ての説明図である。
【図6】図6は、I/O要求を受信した制御プログラム212によって行われる処理の流れの一例を示す。
【図7】図7は、図6のS200での処理の詳細を示す。
【図8】図8は、図6のS600での処理の詳細を示す。
【図9】図9は、周期割当てアクセス変換リストの更新の様子の一例を示す。
【図10】図10は、フォーマット中か否かの判断方法の第一のバリエーションの説明図である。
【図11】図11は、本発明の第二実施例で行われる処理の流れの一例を示す。
【図12】図12Aは、本発明の第三実施例で行われる処理の流れの一例の一部を示す。図12Bは、その処理の流れの一例の残りの一部を示す。
【図13】図13は、第三実施例での領域割当て処理の流れを示す。
【図14】図14は、本発明の第四実施例に係る計算機システムの構成例を示す。
【図15】図15は、仮想化装置11と仮想ボリューム管理サーバ5001の構成例を示す。
【図16】図16は、第四実施例において、I/O要求を受信した制御プログラム212によって行われる処理の流れの一例を示す。
【符号の説明】
【0135】
11…仮想化装置 12…ホストプロセッサ 13…ストレージ装置 210…プロセッサパッケージ 220…共有メモリ 212…制御プログラム 221…仮想ボリューム管理テーブル 222…チャンク管理テーブル 224…アクセス変換テーブル

【特許請求の範囲】
【請求項1】
上位装置に提供される仮想ボリュームに対する書込み要求の書込み先に複数の実領域のうちの未割当ての実領域を割り当てる仮想化システムであって、
前記仮想ボリュームに対する書込み要求を受信する要求受信部と、
前記仮想ボリュームに対する書込み要求を受信した場合に、前記仮想ボリュームのフォーマットであるか否かを判断する判断部と、
前記複数の実領域の各々について未割当てか否かを表す情報を含んだ管理情報を記憶する記憶部と、
前記仮想ボリュームのフォーマットであると判断された場合に、前記複数の実領域のうちの未割当ての実領域を前記管理情報から特定し、特定された未割当ての実領域を複数のサブ領域に分割し、前記複数のサブ領域をそれぞれ割当てる領域割当て制御部と
を備える仮想化システム。
【請求項2】
前記領域割当て制御部は、前記仮想ボリュームのフォーマットではないと判断された場合には、前記仮想ボリュームに対する書込み要求に応答して、該書込み要求の書込み先に、前記特定された未割当ての実領域それ自体を割り当てる、
請求項1記載の仮想化システム。
【請求項3】
前記実領域の記憶容量及び前記サブ領域の記憶容量の両方がそれぞれ固定値である、
請求項1記載の仮想化システム。
【請求項4】
前記領域割当て制御部は、前記仮想ボリュームの最初の連続領域における、前記フォーマットでのそれぞれの書き込み先に、連続したサブ領域を割り当てていき、次の連続領域の初めの書き込み先にサブ領域を割り当てたときに、該書き込み先と、前記最初の連続領域の初めの書き込み先との差分である連続領域間隔を求め、前記次の連続領域以降のそれぞれの連続領域に対し、前記最初の連続領域に割り当てたサブ領域数の連続したサブ領域を割り当てる、
請求項1記載の仮想化システム。
【請求項5】
前記領域割当て制御部は、前記次以降の連続領域のそれぞれに対する書込み要求を受信することに先駆けて、前記次の連続領域以降のそれぞれの連続領域に連続したサブ領域を割り当てる、
請求項4記載の仮想化システム。
【請求項6】
前記領域割当て制御部は、前記次の連続領域以降の連続領域に連続したサブ領域を割り当てた後、前記フォーマットであるにも関わらず、受信した書込み要求の書込み先が、連続領域と異なる場所である場合には、該書込み先には、未割当ての実領域を割り当てる、
請求項4記載の仮想化システム。
【請求項7】
受信した書込み要求の書込み先が連続領域と異なる場所である回数をカウントするカウント部を更に備え、
前記判断部は、前記回数が、所定の値を超えている場合に、前記フォーマットでないと判断する、
請求項6記載の仮想化システム。
【請求項8】
前記仮想ボリュームのフォーマット開始の通知とフォーマット終了の通知を前記上位装置或いはそれとは異なる外部の装置から受ける通知受信部を更に備え、
前記判断部は、前記フォーマット開始の通知を受信した場合、前記フォーマット終了の通知を受信するまで、前記フォーマットであると判断する、
請求項1記載の仮想化システム。
【請求項9】
或る連続領域の基点とその次の連続領域の基点との差分である連続領域間隔と、或る一つの連続領域に割り当てられたサブ領域の数とを所定の計算機に通知する通知部を更に備える、
請求項1記載の仮想化システム。
【請求項10】
連続領域間隔とサブ領域数とを前記仮想化システムの外部から入力する入力部を更に備え、
前記領域割当て制御部は、前記入力された連続領域間隔で、前記入力されたサブ領域数の連続したサブ領域を割り当てる、
請求項1記載の仮想化システム。
【請求項11】
前記仮想化システムは、ストレージシステムであり、
前記ストレージシステムは、複数の記憶装置と、コントローラとを備え、
前記複数の記憶装置には、前記複数の実領域で構成される一以上の論理ボリュームが用意され、
前記コントローラが、前記要求受信部と、前記判断部と、前記記憶部と、前記領域割当て制御部とを有し、該領域割当て制御部が、割り当てたサブ領域に、前記要求受信部が受信した書込み要求に従うデータを書込む、
請求項1記載の仮想化システム。
【請求項12】
前記仮想化システムは、外部のストレージシステムに接続されたストレージシステムであり、
前記ストレージシステムは、複数の記憶装置と、コントローラとを備え、
前記外部のストレージシステムには、前記複数の実領域で構成される一以上の論理ボリュームが用意され、
前記コントローラが、前記要求受信部と、前記判断部と、前記記憶部と、前記領域割当て制御部とを有し、該領域割当て制御部が、割り当てたサブ領域に、前記要求受信部が受信した書込み要求に従うデータを書込む、
請求項1記載の仮想化システム。
【請求項13】
前記仮想化システムは、前記上位装置とストレージシステムとの間に介在するスイッチ装置であり、
前記複数の実領域は、前記ストレージシステムに備えられる一以上の論理ボリュームの構成要素である、
請求項1記載の仮想化システム。
【請求項14】
前記仮想化システムは、前記上位装置とストレージシステムとの間に介在するスイッチ装置と、前記スイッチ装置と通信可能に接続された管理装置とで構成されており、
前記スイッチ装置が、前記要求受信部と、前記仮想ボリュームのフォーマットであるか否かの判断を依頼する依頼部とを有し、
前記管理装置が、前記依頼に応答して前記判断を行う前記判断部と、前記記憶部と、前記領域割当て制御部とを有する、
請求項1記載の仮想化システム。
【請求項15】
前記管理情報には、前記仮想ボリュームに対する実領域それ自体の割当てを管理するための第一の管理サブ情報と、前記仮想ボリュームに対するサブ領域の割当てを管理するための第二の管理サブ情報が含まれ、
前記領域割当て制御部は、前記仮想ボリュームに前記未割当ての実領域それ自体を割り当てた場合、前記第一の管理サブ情報を更新し、前記仮想ボリュームにサブ領域を割り当てた場合、前記第二の管理サブ情報を更新する、
請求項1記載の仮想化システム。
【請求項16】
前記第二の管理サブ情報には、或る連続領域の基点とその次の連続領域の基点との差分である連続領域間隔と、或る一つの連続領域に割り当てられたサブ領域の数とが含まれる、
請求項15記載の仮想化システム。
【請求項17】
前記実領域の記憶容量及び前記サブ領域の記憶容量の両方がそれぞれ固定値であり、
前記管理情報には、前記仮想ボリュームに対する実領域それ自体の割当てを管理するための第一の管理サブ情報と、前記仮想ボリュームに対するサブ領域の割当てを管理するための第二の管理サブ情報が含まれ、
前記領域割当て制御部は、以下の(A)乃至(C)の処理、
(A)前記仮想ボリュームのフォーマットではないと判断された場合には、前記仮想ボリュームに対する書込み要求に応答して、該書込み要求の書込み先に、前記特定された未割当ての実領域それ自体を割り当て、
(B)前記仮想ボリュームのフォーマットであると判断された場合に、前記仮想ボリュームの最初の連続領域における、前記フォーマットでのそれぞれの書き込み先に、連続したサブ領域を割り当てていき、次の連続領域の初めの書き込み先にサブ領域を割り当てたときに、該書き込み先と、前記最初の連続領域の初めの書き込み先との差分である連続領域間隔を求め、前記次以降の連続領域のそれぞれに対する書込み要求を受信することに先駆けて、前記次の連続領域以降のそれぞれの連続領域に対し、前記最初の連続領域に割り当てたサブ領域数の連続したサブ領域を割り当て、
(C)前記仮想ボリュームに前記未割当ての実領域それ自体を割り当てた場合、前記第一の管理サブ情報を更新し、前記仮想ボリュームにサブ領域を割り当てた場合、前記第二の管理サブ情報を更新する、
を実行する、
請求項1記載の仮想化システム。
【請求項18】
上位装置に提供される仮想ボリュームに対する書込み要求の書込み先に複数の実領域のうちの未割当ての実領域を割り当てる方法であって、
前記仮想ボリュームのフォーマットであるか否かを判断し、
前記仮想ボリュームのフォーマットであると判断された場合に、前記複数の実領域の各々について未割当てか否かを表す情報を含んだ管理情報から、前記複数の実領域のうちの未割当ての実領域を特定し、
特定された未割当ての実領域を複数のサブ領域に分割し、
前記仮想ボリュームにおいて規則的な間隔で並んだそれぞれの連続領域に、前記複数のサブ領域をそれぞれ割当てる、
領域割当て制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate