(57)【特許請求の範囲】
【請求項１】
計算機であって、
メモリと、
前記メモリに接続されるプロセッサと、
を備え、
前記プロセッサは、
ＯＳを実行し、前記ＯＳ上で複数のプロセスを実行し、前記複数のプロセスは、仮想ストレージ装置とアプリケーションを含み、
前記ＯＳが管理する前記メモリの物理領域を、前記アプリケーションに提供し、
前記計算機には搭載されているが、前記ＯＳが管理しない前記メモリの物理領域を、前記仮想ストレージ装置が、利用するよう制御し、
前記ＯＳが管理するメモリの物理領域内から、連続する物理領域を確保し、前記仮想ストレージ装置に利用させる、ことを特徴とする計算機。
【請求項２】
請求項１に記載の計算機において、
前記プロセッサは、
前記ＯＳが管理する前記メモリの物理領域を、ＯＳ管理内領域とし、前記ＯＳ管理内領域に仮想アドレスを割当てて前記アプリケーションに提供し、
前記計算機には搭載されているが、前記ＯＳが管理しない前記メモリの物理領域を、ＯＳ管理外領域として管理し、
前記ＯＳ管理内領域から、確保した連続する物理領域を用いて、前記仮想ストレージ装置と前記アプリケーションの間で、ＤＭＡ転送を行う、ことを特徴とする計算機。
【請求項３】
請求項２に記載の計算機において、
ブートディスクを更に備え、
前記ブートディスクに、前記メモリの領域毎に、前記ＯＳの仮想先頭アドレスと、前記ＯＳ管理内領域か否かの情報と、を管理するマッピングテーブルを、格納することを特徴とする計算機。
【請求項４】
請求項３に記載の計算機において、
前記プロセッサによる、前記ＯＳ管理内領域から、連続する物理領域の確保は、hugepageの機能を用いて行うことを特徴とする計算機。
【請求項５】
請求項４に記載の計算機において、
前記メモリは、
前記ＯＳ管理内領域の物理領域を管理するため、前記hugepageのサイズに対し、前記hugepageの予約数と前記hugepageの割当済数とを管理するhugepage数管理テーブルと、
前記メモリの前記ＯＳ管理外領域の先頭物理アドレスに対応する情報、前記仮想ストレージ装置に割当て済みの物理アドレスと、を管理するＯＳ管理外管理テーブルと、を格納することを特徴とする計算機。
【請求項６】
請求項５に記載の計算機において、
前記プロセッサは、
前記マッピングテーブルを参照し、対象領域が前記ＯＳ管理内領域か否かを判断し、
前記対象領域が、前記ＯＳ管理内領域でなければ、前記ＯＳ管理外管理テーブルの前記割当て済みの物理アドレスから要求サイズ分の物理アドレスを、前記マッピングテーブルの前記仮想先頭アドレスから割当て、前記ＯＳ管理外管理テーブルの前記割当て済みの物理アドレスを更新し、
前記対象領域が、前記ＯＳ管理内領域であれば、前記hugepage数管理テーブルを参照して、要求サイズより大きいhugepageを選択し、前記マッピングテーブルの前記仮想先頭アドレスから、前記選択されたhugepageによって確保された物理領域を割当て、前記hugepage数管理テーブルの前記割当済数を更新する、ことを特徴とする計算機。
【請求項７】
請求項６に記載の計算機において、
前記マッピングテーブルは、前記メモリの領域毎に、当該領域が電断時に退避すべきデータを格納しているかを示す電断時対象フラグを管理し、
前記プロセッサは、
前記電断時対象フラグにより、当該領域が電断時に退避すべきデータを格納している領域である場合、前記ＯＳ管理外管理テーブルの前記割当て済みの物理アドレス、或いは、前記選択されたhugepageによって確保された物理領域の先頭物理アドレスを、当該領域の先頭物理アドレスとし、当該領域のサイズと共にバックアップデバイス内の物理アドレスと対応付けて管理する保護対象管理テーブルを作成する、ことを特徴とする計算機。
【請求項８】
請求項７に記載の計算機において、
前記メモリは、揮発性メモリと不揮発性メモリとを含み、
前記マッピングテーブルは、更に、前記メモリの領域毎に、当該領域が配置されるメモリが揮発性メモリか不揮発性メモリかを示す情報と、当該領域が電断時に退避すべきデータを格納しているかを示す電断時対象フラグとを、更に管理する、ことを特徴とする計算機。
【請求項９】
請求項７に記載の計算機において、
前記計算機は、バックアップ用デバイスを有し、
前記保護対象管理テーブルの前記バックアップデバイス内の物理アドレスは、前記バックアップ用デバイスにおける退避データの格納先アドレスを管理することを特徴とする計算機。
【請求項１０】
請求項９に記載の計算機において、
前記プロセッサは、前記バックアップ用デバイスに退避された退避データを、前記マッピングテーブルの対応する領域の仮想先頭アドレスに対応させてリストアすることを特徴とする計算機。
【請求項１１】
メモリと、前記メモリに接続されるプロセッサと、を備える計算機のメモリ管理方法であって、
前記プロセッサは、
ＯＳを実行し、
ＯＳ上で複数のプロセスを実行し、前記複数のプロセスは、仮想ストレージ装置とアプリケーションを含み、
前記ＯＳが管理する前記メモリの物理領域を、前記アプリケーションに提供し、
前記計算機には搭載されているが、前記ＯＳが管理しない前記メモリの物理領域を、前記仮想ストレージ装置が、利用するよう制御し、
前記ＯＳが管理するメモリの物理領域内から、連続する物理領域を確保し、前記仮想ストレージ装置に利用させ、
前記確保した連続する物理領域を用いて、前記仮想ストレージ装置と前記アプリケーションの間で、ＤＭＡ転送を行う、ことを特徴とするメモリ管理方法。
【請求項１２】
メモリと、記憶装置と、前記メモリ及び前記記憶装置に接続されるプロセッサと、ネットワークに接続される第1のインタフェースと、前記記憶装置に接続される第２のインタフェースと、を備える計算機のメモリ管理方法であって、
前記プロセッサは、
ＯＳを実行し、
ＯＳ上で複数のプロセスを実行し、前記複数のプロセスは、仮想ストレージ装置とアプリケーションを含み、
前記ＯＳが管理する前記メモリの物理領域を、前記アプリケーションに提供し、
前記計算機には搭載されているが、前記ＯＳが管理しない前記メモリの物理領域を、前記仮想ストレージ装置が、利用するよう制御し、
前記ＯＳが管理するメモリの物理領域内から、連続する物理領域を確保し、前記仮想ストレージ装置に利用させ、
前記確保した連続する物理領域を用いて、前記第１のインタフェース或いは前記第２のインタフェースと前記仮想ストレージとの間で、データ転送を行う、ことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、ストレージシステム及びストレージシステムのメモリ管理方法に関する。
【背景技術】
【０００２】
クラウド環境では、複数のテナントの性能を管理する性能管理機能が知られている。また、テナントにより用いられる仮想ストレージが知られている。Ｌｉｎｕｘ（登録商標）等の汎用ＯＳ（Operating System）において、ＯＳ上で稼働するプロセスに割当てるリソースを制御する技術としてはコンテナ技術が知られている。
【０００３】
仮想ストレージに対し、物理的に連続するメモリ領域を割当てることにより、データ転送の性能を保証することができる。
【０００４】
しかし、仮想ストレージが汎用ＯＳ上のプロセスとして実行される場合、ＯＳがプロセスに割当てるメモリは仮想メモリであり、仮想メモリ領域に対応する物理メモリ領域が連続である保証はない。
【０００５】
そのため、ＯＳにより提供されるリソース割当量制御技術を用いても、物理的に連続したメモリ領域の割当てを制御することはできず、仮想ストレージの性能を保証することはできない。
【０００６】
ＯＳ上で実行される仮想ストレージ装置に、物理的に連続するメモリ領域を割当てることにより、仮想ストレージ装置の性能を保証する技術が特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１７／０５６３１０号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１によれば、計算機に搭載されているがＯＳにより管理されないＯＳ管理外物理リソース内の物理的に連続するメモリ領域を、仮想ストレージ装置に割当てている。Ｌｉｎｕｘ上で動作するＯＳＳ（Open Source Software）のアプリケーションは、一般的にＬｉｎｕｘ管理内領域から使用するメモリを確保する。そのため、例えば、Ｌｉｎｕｘ上で動作するＯＳＳのアプリケーションと仮想ストレージ装置との間でデータ転送を行う場合、Ｌｉｎｕｘ管理外物理リソース内の領域とＬｉｎｕｘ管理内領域の領域との間において、データ転送を行う必要が生じる。この余分なデータ転送が生じるため、性能低下の要因となることが考えられる。
【０００９】
特に、仮想ストレージ装置のフロントエンドやバックエンドのプロトコルチップがＯＳＳを用いてデータ転送する際は、ＯＳＳからＬｉｎｕｘ管理外領域は使用できないため、Ｌｉｎｕｘ管理内領域に転送する必要がある。
【００１０】
そこで、本発明の目的は、汎用ＯＳ上のＯＳＳと仮想ストレージ装置間で余分なデータ転送をなくすことで、性能向上を図ることができる計算機システム及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するためのストレージシステムを構成する計算機の実施形態の一つは、メモリと、メモリに接続されるプロセッサと、を備える。プロセッサは、ＯＳを実行し、ＯＳ上で複数のプロセスを実行する。複数のプロセスは、仮想ストレージ装置とアプリケーションを含む。プロセッサは、ＯＳが管理するメモリの物理領域を、アプリケーションに提供し、計算機には搭載されているが、ＯＳが管理しないメモリの物理領域を、仮想ストレージ装置が、利用するよう制御するとともに、ＯＳが管理するメモリの物理領域内から、連続する物理領域を確保し、仮想ストレージ装置に利用させる。
【発明の効果】
【００１２】
本発明の代表的な実施例によれば、汎用ＯＳ上のＯＳＳと仮想ストレージ装置間で余分なデータ転送をなくすことで、性能向上を図ることができる。
前記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】実施例１に係る計算機システムの構成例を示すブロック図。
【図２】計算機１０の内部構成を示すブロック図。
【図３】実施例１に係るＤＲＡＭ１０５の物理リソースの構成例を示す図。
【図４】ストレージプログラムメモリマッピングテーブルの一例を示した図。
【図５】ＤＲＡＭ内  hugepage数管理テーブルの一例を示す図。
【図６】ＤＲＡＭ  ＯＳ管理外管理テーブルの一例を示した図。
【図７】システム内メモリ管理テーブルの一例を示した図。
【図８】計算機１０で実行される初期起動動作を示すフローチャート。
【図９】メモリ割当処理の詳細動作を説明するフローチャート。
【図１０】電断時に利用するデータ項目を追加したストレージプログラムメモリマッピングの一例を示す図。
【図１１】ＳＣＭ内  hugepage数管理テーブルの一例を示す図。
【図１２】ＳＣＭ  ＯＳ管理外管理テーブルの一例を示した図。
【図１３】保護対象管理テーブルの一例を示す図。
【図１４】システム内メモリ量管理テーブルの一例を示す図。
【図１５】ストレージ管理プログラムによるメモリ割当処理と保護対象管理テーブル作成の詳細動作を説明するフローチャート。
【図１６】電断時のデータバックアップ処理動作を説明するフローチャート。
【図１７】リストア処理動作を説明するフローチャート。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて、本発明の実施の形態を説明する。
【００１５】
なお、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされており、本発明は、他の種々の形態でも実施する事が可能であり、特に限定しない限り、各構成要素は単数でも複数でも構わない。
【００１６】
また、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、実施例の中で説明されている要素の組み合わせの全てが、発明の解決手段に必須であるとは限らない。
【００１７】
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で実現されてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。以下の説明では、識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ＩＤ」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【００１８】
また、以下の説明では、要素の識別情報として、ＩＤが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
【００１９】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られた符号を使用することがある。
【００２０】
また、以下の説明では、Ｉ／Ｏ（Input/Output）要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
【００２１】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又はインターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ（例えばＣＰＵ）と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００２２】
また、以下の説明では、計算機は、一以上の計算機を含んでいてもよい。
【実施例１】
【００２３】
＜システム構成＞
図１は、実施例１に係る計算機システムの構成例を示すブロック図を示す。
計算機システムは、１台以上の計算機１０、ネットワーク２０、１台以上のクライアント３０を含む。
【００２４】
ストレージシステムを構成する計算機１０は、物理メモリとしてＤＲＡＭ１０５と、ＣＰＵ（Central Processing Device）１０４と、ネットワークＩＦとなる、ＡＳＩＣ１０１、ＨＢＡ１０２、ＮＩＣ１０３と、ドライブコントローラ１０９と、ＳＡＳドライブ等からなるドライブ１２０とを含む。
【００２５】
プロセッサであるＣＰＵ１０４は、コア１０４１と、ＤＭＡ（Direct Memory Access）コントローラ１０４２とを含む。ＤＲＡＭ１０５と、ＣＰＵ１０４と、ネットワークＩＦと、ドライブコントローラとは、バス１００を介して互いに接続されている。ＤＭＡコントローラ１０４２によって、ＤＭＡ転送されるデータは、ライト要求に応じてクライアント３０から受信されるライトデータであってもよいし、リード要求に応じてドライブ１２０から読み出されるリードデータであってもよいし、リード要求時のキャッシュヒットにより読み出されるリードデータであってもよい。なお、ＤＭＡコントローラ１０４２によるＤＭＡ転送の転送元及び転送先の一方が、ネットワークＩＦ（ＨＢＡ１０２、ＮＩＣ１０３）、ドライブコントローラ１０９、ドライブ１２０等の物理デバイス内のメモリであってもよい。ＦＥｃｈｉｐは、ＨＢＡ１０２、ＮＩＣ１０３に含まれ、ＢＥｃｈｉｐは、ドライブコントローラ１０９に含まれる。
【００２６】
バス１００には、ブートディスク１０７、バックアップ用デバイス１０８が接続される。また、バス１００には、ＳＳＤ１１０ａ、ＳＡＳ１１０ｂ、ＳＡＴＡドライブ１１０ｃが記憶装置１１０として接続されていても良い。
【００２７】
物理メモリとして、ＤＲＡＭ１０５に加えて、ＳＣＭ１０６が接続されていても良い。実施例１では、物理メモリはＤＲＡＭで構成されている前提で説明する。
【００２８】
ＤＲＡＭ１０５は、プログラムやデータを格納する。ネットワークＩＦは、ネットワーク２０に接続され、ネットワーク２０を介してクライアント３０と通信する。ドライブコントローラ１０９は、ドライブ１２０に接続され、ドライブ１２０と通信するインタフェースである。ドライブ１２０は、データを格納する。コア１０４１は、ＤＲＡＭ１０５に格納されたプログラムに従って処理を実行する。ＤＭＡコントローラ１０４２は、コア１０４１の指示に従って、データのＤＭＡ転送を実行する。ＤＲＡＭ１０５は、複数の物理メモリを含んでいてもよい。
【００２９】
ネットワーク２０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｉｎｆｉｎｉｂａｎｄ（登録商標）等の高性能なネットワークで、ＮＶＭｅ  ｏｖｅｒ  Ｆａｂｒｉｃｓ（ＮＶＭｅ−ｏＦ）に対応している。
【００３０】
クライアント３０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びメモリ等の記憶装置を備えたコンピュータ装置であり、ユーザ操作や、実装されたプログラムからの要求に応じてネットワーク２０を介して、計算機１０に、ライトコマンドやリードコマンド（ＩＯコマンド）を送信する。
【００３１】
ドライブ１２０は、例えば、冗長パスを持ち、片方のパスの接続が切れた場合でも、計算機１０とデータ通信できる構成をとってもよい。
【００３２】
図２は、計算機１０の内部構成を示すブロック図である。
ＣＰＵ１０４では、ＢＩＯＳ１０４ｅ、ＯＳ１０４ｄ上で、複数のプロセスを実行する。複数のプロセスは、複数のアプリケーションである複数のＯＳＳ１０４ｂ、複数のストレージプログラム１０４ａが動作する。尚、実施例１では、ＯＳ１０４ｄはＬｉｎｕｘを想定する。各ストレージプログラムが仮想ストレージ装置を構成する。
【００３３】
また、ストレージプログラム１０４ａは、データの冗長性を与える機能として、「ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）」や、データの複製を取得するスナップショット機能等のストレージシステムとして提供される機能を実現するためのソフトウェアであり、ＣＰＵ１０４によって実行されることで、仮想ストレージ装置を構成する。ストレージプログラム１０４ａ（仮想ストレージ装置）は、ＯＳ１０４ｄによりプロセスとして管理される。ストレージプログラム１０４ａの一つがストレージ管理プログラムとして動作し、ストレージプログラム１０４ａが利用する物理リソース（以下、物理領域とも呼ぶ）を管理しても良い。
【００３４】
ブートディスク１０７には、ＯＳブートパラメータファイルとＯＳ設定ファイルが格納されている。バックアップ用デバイス１０８には、保護対象論物変換テーブルＴ１３０が格納される。ＤＲＡＭ１０５の物理リソースについては、図３を用いて説明する。
【００３５】
図３は、実施例１に係るＤＲＡＭ１０５の物理リソースの構成例を示す。
計算機１０内のＤＲＡＭの物理リソースは、ＯＳ１０４ｄにより管理されるＯＳ管理内領域３０１と、計算機１０に搭載されているがＯＳ１０４ｄにより管理されないＯＳ管理外領域３０２とを含む。
【００３６】
ＯＳ管理内領域３０１は、ＯＳ１０４ｄが管理するメモリ、ＤＲＡＭ１０５の物理領域であり、ＣＰＵ１０４によりＯＳＳ１０４ｂ等のアプリケーションに提供される。ＯＳ管理内領域３０１の物理領域は、ＯＳ１０４ｄにより仮想アドレスを割当てられて、ＯＳＳ１０４ｂ等のアプリケーションに提供される。ＯＳ管理外領域３０２は、計算機１０には搭載されているが、ＯＳ１０４ｄが管理しないメモリの物理領域であり、ストレージプログラム１０４ａによって利用される。ストレージプログラム１０４ａが仮想ストレージ装置を構成する場合には、ＯＳ管理外領域３０２は、仮想ストレージ装置に提供される。
【００３７】
計算機１０において、ＯＳ１０４ｄを起動させる場合、ユーザは、ＯＳ１０４ｄのブートオプションとして、ＯＳ１０４ｄにより使用される物理メモリ量であるＯＳ管理内領域のメモリ量を設定することができる。ＯＳ管理内領域のメモリ量は、ＤＲＡＭ１０５の容量以下であればよい。ＯＳ管理内領域３０１は、ＤＲＡＭ１０５のうち、物理アドレスの先頭からＯＳ管理内領域のメモリ量までの領域となる。ＯＳ管理外領域３０２は、ＤＲＡＭ１０５のうちＯＳ管理内領域３０１の領域の直後の物理アドレスからＤＲＡＭ１０５の終端の物理アドレスまでの領域となる。
【００３８】
ＯＳ１０４ｄにより使用可能な領域として、ＯＳ管理内領域３０１を設定することにより、ＯＳ管理外領域３０２がＯＳ１０４ｄに使用されることがなく、ＯＳ管理外領域３０２内の連続領域を仮想ストレージ装置に割当てることができる。
【００３９】
また、ユーザにより設定されるＯＳ管理内領域のメモリ量は、ストレージプログラム１０４ａが仮想ストレージとして利用する物理メモリ量を求め、ＤＲＡＭ１０５の全メモリ量から差し引くことで、求めても良い。
【００４０】
ＯＳ管理内領域３０１は、ＯＳ１０４ｄ、もしくは各アプリケーションがＯＳ１０４ｄにＤＲＡＭ１０５のメモリ確保を依頼した際に、ＯＳ１０４ｄが管理するメモリ領域である。この領域は、ストレージプログラム１０４ａからＤＲＡＭ１０５の物理アドレスを指定してメモリ確保することはできない。
【００４１】
ＯＳ管理外領域３０２は、ＯＳ１０４ｄから、ＤＲＡＭ１０５の物理メモリ空間は見えても、ＯＳのメモリ確保論理によってメモリを使用しない領域である。つまりＯＳ１０４ｄの仮想アドレスに対応付けられないＤＲＡＭの物理リソースである。このＯＳ管理外領域３０２は、ストレージプログラム１０４ａからＯＳ１０４ｄのI/Fを用いて明示的に物理アドレスを指定して、割り当て可能な領域である。
【００４２】
ＯＳ１０４ｄは、複数のプロセスを統合管理するコンテナ技術を用いて、ＯＳ管理内領域３０１から仮想ストレージ装置のプロセスを構築する。コンテナ技術は、ＣＰＵ割当調整プログラムおよびメモリ割当調整プログラムを含むリソース分割機能である。ＯＳ１０４ｄは、このようなリソース分割機能を有している技術であれば、コンテナ技術以外の技術を用いて、仮想ストレージ装置のプロセスを構築しても良い。ＣＰＵ割当調整プログラムは、ＯＳ上で実行されるプロセスに対してＣＰＵ１０４のリソースを割当てる。計算機１０は、ＯＳ１０４ｄ上で実行されるプロセスに対して物理メモリのＯＳ管理内領域３０１のリソースを割当てる。
【００４３】
ＯＳ管理内領域３０１は、用途別割当領域３０１ａ、３０１ｂとして、ＤＲＡＭ１０５の連続領域（連続したアドレス）が割当てられ、ＯＳ管理外領域３０２にも用途別割当領域３０２ａ、３０２ｂとして、ＤＲＡＭ１０５の連続領域（連続したアドレス）が割当てられる。
【００４４】
＜各種管理テーブル＞
図４は、ブートディスク１０７に格納される、ストレージプログラムメモリマッピングテーブル（以下、マッピングテーブルＴ４０）の一例を示した図である。尚、このテーブルの内容は、ユーザにより設定される。
【００４５】
マッピングテーブルＴ４０は、ＤＲＡＭ１０５の物理領域を識別する領域ＩＤ４０１、領域ＩＤによって識別される領域に対応して、仮想ストレージ装置がＤＲＡＭ１０５を用いる用途４０２、共有範囲４０３、連続要求サイズ４０４、ＯＳの管理する仮想先頭アドレス４０５、当該領域がＯＳ管理内領域かを示すＯＳ管理内領域４０６、割当済フラグ４０７を格納する。
【００４６】
用途４０２としては、領域ＩＤによって識別される領域が、各コア１０４１が占有して使用する管理領域であるローカルメモリ（ＬＭ）、システム内の全コア１０４１で共有して使用するシェアードメモリ（ＳＭ）、システム内の全コア１０４１で共有して使用するユーザデータ領域であるキャッシュメモリ（ＣＭ）、データ転送用のバッファ領域として利用されるＤＸＢＦ等がある。
【００４７】
共有範囲４０３には、領域ＩＤで特定される領域を利用するストレージプロセスに関する情報が格納される。例えば、どの仮想ストレージ装置によって利用されるかを示す情報が格納される。
【００４８】
連続要求サイズ４０４には、ストレージプロセスが要求する連続サイズの情報が格納される。
【００４９】
仮想先頭アドレス４０５は、ＯＳ１０４ｄがストレージプログラム等に提供する仮想アドレスの先頭アドレスが格納される。
【００５０】
ＯＳ管理内領域４０６は、領域ＩＤで特定される領域が、ＯＳ管理内領域３０１であるか否かの情報が格納される。ここで、「TRUE」の場合は、ＯＳ管理内領域３０１内に領域を設定することを示す。
【００５１】
領域ＩＤで示される領域をＯＳ管理内領域３０１にすることで、ＯＳＳとの連携やストレージプログラム１０４ａによる仮想ストレージ装置としてエンハンスが容易となる。
【００５２】
また、領域ＩＤで示される領域をＯＳ管理外領域３０２にすることで、ストレージプログラム１０４ａによる仮想ストレージ装置が利用する仮想アドレスの割当サイズを柔軟に設定することができる。また、物理アドレスの連続性を容易に確保できる。
【００５３】
ストレージプログラム１０４ａの用途に応じて、ＯＳ管理内領域３０１とＯＳ管理外領域３０２を使い分けることで、データ転送が早く、ストレージプログラムが必要とするメモリ領域を柔軟に構成することができる。
【００５４】
割当済フラグ４０７は、領域ＩＤで特定される領域の仮想アドレスにＤＲＡＭ１０５の物理リソースが割当たっているかを示す情報が格納される。
【００５５】
図４において、例えば、領域４０１「１」に対し、用途４０２「ＬＭ」、共有範囲４０３「ストレージプロセス１」、連続要求サイズ４０４「0x1000」、仮想先頭アドレス４０５「0x0000_0010_0000」、ＯＳ管理内領域４０６「TRUE」、割当済フラグ４０７「TRUE」が格納される。尚、割当済フラグ４０７は、システムブート時には、全ての領域ＩＤに「FALSE」が、対応して格納されている。
【００５６】
図５は、ＯＳ１０４ｄによって、ＤＲＡＭ１０５或いは記憶装置１１０に格納され、ＯＳ管理内領域の物理領域を管理するＤＲＡＭ内  hugepage数管理テーブルの一例を示す図である。hugepageは、所定の割当サイズ、例えば、１ＧＢ、２ＭＢ、４ｋといった３つの割当サイズから選択できる。３つの割当サイズ５０１毎に、予約数５０２、割当済み数５０３が対応して管理される。ＯＳ１０４ｄは、hugepage機能を用いてＤＲＡＭ１０５の物理リソースを確保した場合、マッピングテーブルＴ４０(図４)の仮想先頭ドレス４０５と確保した物理リソースのアドレスとの対応を管理する。尚、hugepageは、ＯＳ１０４ｄがＯＳ管理内領域３０１内において、連続する物理アドレス(所定サイズの領域)を、確保する機能である。
【００５７】
ＯＳ管理内領域３０１に、ＯＳ１０４ｄがhugepage機能を用いて、物理的に連続した領域を確保し、ストレージプログラム（仮想ストレージ装置）１０４ａに提供することができる。
【００５８】
hugepage機能を用いて確保された物理的に連続するメモリ領域は、ＯＳ管理内領域３０１内であることから、ＯＳＳ１０４ｂであるアプリケーションも利用することができる。そのため、ＯＳ１０４ｄが割当てた仮想アドレスを用いて、ストレージプログラム１０４ａとＯＳＳ１０４ｂの双方が参照可能となり、アプリケーションと仮想ストレージ装置間のデータ転送を行う際に、メモリ内で無駄なデータ転送を防止することができる。
【００５９】
尚、アプリケーションと仮想ストレージ装置間のデータ転送は、ＤＭＡコントローラ１０４２によりＤＭＡ転送で処理される。
【００６０】
本実施例は、このようなデータ転送として、上記ＤＭＡ転送に加え、ＦＥ／ＢＥｃｈｉｐとＡＳＩＣによるデータ転送を含めることができる。例えば、ＡＳＩＣ１０１による、ＨＢＡ１０２やＮＩＣ１０３に含まれるＦＥｃｈｉｐと、ＢＥｃｈｉｐが含まれるドライブコントローラ１０９間のデータ転送が該当する。図２に示す、ＯＳ１０４ｄ上で動作するＦＥｃｈｉｐ或いはＢＥｃｈｉｐと、ストレージプログラム（仮想ストレージ装置）１０４ａとのデータ転送にも用いられる。ＦＥｃｈｉｐとＢＥｃｈｉｐ間、ＦＥｃｈｉｐ或いはＢＥｃｈｉｐとストレージプログラム（仮想ストレージ装置）１０４ａ間のデータ転送は、ＡＳＩＣ１０１により制御されてもよい。
【００６１】
図６は、ストレージプログラム１０４ａによって、ＤＲＡＭ１０５或いは記憶装置１１０に格納されるＤＲＡＭ  ＯＳ管理外管理テーブルの一例を示した図である。
【００６２】
ＤＲＡＭ  ＯＳ管理外管理テーブルＴ５１は、ＯＳ管理内領域３０１の最終物理アドレス（ＯＳ管理外領域の先頭物理アドレスに対応する情報）に対応する管理内オフセット「0xA_8000_0000」、ＯＳ管理外領域３０２として利用可能なＤＲＡＭの最終アドレスである管理外ｍａｘアドレス「0xF_FFFF_FFFF」、仮想アドレスを割当てた物理メモリの最終アドレスを、割当済みoffsetアドレス「0xA_F004_3FFF」として管理する。
【００６３】
図７は、システム内メモリ管理テーブルの一例を示した図である。
このシステム内メモリ管理テーブルＴ７０は、ＤＲＡＭ１０５或いは記憶装置１１０に格納され、システム全体のＤＲＡＭ容量、ストレージプロセス単位制御情報資料量(LM)、ストレージシステム単位制御情報資料量(SM)、ストレージシステム転送バッファメモリ使用量(DXBF)、ストレージキャッシュ量メモリ使用量(CM)の容量がそれぞれ管理される。
【００６４】
＜動作説明＞
図８は、計算機１０のＣＰＵ１０４で実行される動作（初期起動動作を含む）を示すフローチャートである。
【００６５】
初期起動ステップＳ９１が開始されると、ステップＳ９２でＯＳ１０４ｄが起動する。
次に、ステップＳ９３で、ＯＳ１０４ｄがブートディスク１０７内のＯＳブートパラメータファイル（マッピングテーブルＴ４０を含む）を参照し、ＯＳが使用するＤＲＡＭのメモリ量(ＯＳ管理内領域)を設定する。このステップにより、ＯＳ１０４ｄであるＬｉｎｕｘのＯＳ管理外領域に設定可能な物理リソースも決まる。
次に、ステップＳ９４で、ＯＳ１０４ｄがシステム設定ファイル（ＤＲＡＭ hugepage数管理テーブルＴ５０）のhugepage予約数を参照し、hugepageを予約する。
次に、ステップＳ９５で、ストレージプログラム１０４ａを起動させる。
【００６６】
ステップＳ９６で、ストレージプログラム１０４ａが、ステップＳ９３で決まるＯＳ管理内領域のサイズを参考に、ＯＳ管理外領域のサイズをチェックする。
【００６７】
ステップＳ９７で、ストレージ管理プログラム１０４ａが、管理外管理テーブルＴ５１を更新する。具体的には、ステップＳ９３で決まるＯＳ管理内領域に基づいて、ＯＳ管理外領域を示す、管理内offsetアドレス、管理外maxアドレス、割当て済みoffsetアドレスに値を更新する。
【００６８】
ステップＳ９８で、ストレージ管理プログラム１０４ａは、hugepage割当数を確認する。ストレージ管理プログラム１０４ａが、ステップＳ９４でＯＳが予約したhugepageの割当ができたか確認するためである。
【００６９】
ステップＳ９９で、ストレージプログラム１０４ａが、hugepage数管理テーブルを更新する。ステップＳ９６からステップＳ９９の動作は、ストレージプログラム１０４ａの一つがストレージ管理プログラムとして動作し、ストレージ管理プログラムにより実行されても良い。
【００７０】
ステップＳ１００でメモリ割当処理を実行し、ステップＳ２００でリストア処理を実行する。これらの動作は、後述する。
【００７１】
図９は、ストレージ管理プログラム１０４ａによるメモリ割当処理（Ｓ１００）の詳細動作を説明するフローチャートである。
メモリ割当処理が開始されると（Ｓ１００）、ストレージ管理プログラム１０４ａは、マッピングテーブルＴ４０を参照する（Ｓ１０１）。
【００７２】
次に、ステップＳ１０２で、マッピングテーブルＴ４０の割当済フラグ４０７がFALSEの項目があるか判定する。割当済フラグ４０７が「FALSE」であれば、当該領域ＩＤで特定される仮想アドレスにＤＲＡＭ１０５の物理リソースが割当たっていないことを示す。割当済フラグ４０７がFALSEの項目がない場合、全ての領域に対して物理リソースが割当たっているため、処理を終了する（Ｓ１０３）。
【００７３】
ステップＳ１０２で、割当済フラグ４０７がFALSEの項目がある場合、ステップＳ１０４に進み、マッピングテーブルＴ４０のＯＳ管理内領域４０６が「TRUE」であるかを判定する。
【００７４】
ステップＳ１０４の判定で、ＹＥＳの場合にはステップＳ１０８に進み、ＮＯの場合にはステップＳ１０５に進む。
【００７５】
ステップＳ１０５で、ＤＲＡＭ  管理外管理テーブルＴ５１の管理外maxアドレスをチェックする。
【００７６】
ステップＳ１０６で、ＤＲＡＭ  管理外管理テーブルＴ５１の管理内offsetアドレスから連続要求サイズ４０４分の物理アドレスを仮想先頭アドレス４０５に割当る。つまり、ＯＳ管理外管理テーブルの割当て済みの物理アドレスから要求サイズ分の物理アドレスを、マッピングテーブルの仮想先頭アドレスから割当てる。これにより、ＯＳの仮想アドレスに対しＤＲＡＭの物理アドレスの割当が行われる。このステップでは、ＯＳ管理外領域３０２を用いて、例えば、仮想ストレージ装置にＤＲＡＭの物理リソースを割り当てる。
【００７７】
ステップＳ１０７で、ＤＲＡＭ  管理外管理テーブルＴ５１の管理外テーブルの割当済みoffsetアドレスを更新する。更新された割当済みoffsetアドレスが、次の領域に対する先頭アドレスになる。つまり、ＯＳ管理外管理テーブルの割当て済みの物理アドレスを更新する。この際、マッピングテーブルＴ４０の割当済みフラグを「TRUE」に更新する。
【００７８】
一方、ステップＳ１０４からステップＳ１０８に進むと、ステップＳ１０８で、ＤＲＡＭ  hugepage数管理テーブルＴ５０をチェックし、連続要求サイズより大きいhugepageを選択する。例えば、連続要求サイズが１ＭＢの場合、２ＭＢのhugepageを選択する。
【００７９】
ステップＳ１０９で、マッピングテーブルＴ４０の仮想先頭アドレス４０５に入っているアドレスをhugepageに割当る。これにより、ＯＳの仮想アドレスをＤＲＡＭの物理アドレスに対して割当る。
【００８０】
ステップＳ１１０で、ＤＲＡＭ hugepage数管理テーブルＴ５０の割当済のhugepage数を更新する。この際、マッピングテーブルＴ４０の割当済みフラグを「TRUE」に更新する。
【００８１】
ステップＳ１０７、ステップＳ１１０の処理が終了すると、ステップＳ１０２に戻り、割当済フラグに「FALSE」の項目があるか判定し、あれば同様の処理を繰り返し、なければ、処理を終了する。
【００８２】
実施例１によれば、ストレージプログラムの用途に応じて、ＯＳ１０４ｄであるＬｉｎｕｘがメモリ内のＯＳ管理内領域３０１にまとまった物理的に連続するメモリ領域をhugepageにより確保して、ストレージプログラム１０４ａが自由にコントロールすることができる。
【００８３】
FE/BEchip制御プログラム１０４ｂやFE/BEchip制御プログラムI/F１０４ｃ等のＯＳＳが、ストレージプログラムで使用するマッピングテーブルＴ４０を参照し、仮想アドレスでアクセスする。これにより、hugepageにより確保されたメモリ領域は、Ｌｉｎｕｘ上で動作するよう構成されたＯＳＳからもアクセス可能となる。
【００８４】
このように、実施例１によれば、ＤＲＡＭの用途毎に、連続した物理領域をＯＳ管理外物理リソース内の領域とＯＳ管理内領域の領域とに設定できるので、ＯＳ（Ｌｉｎｕｘ）上で動作するＯＳＳのアプリケーションと仮想ストレージ装置との間でデータ転送を行う場合、ＯＳ（Ｌｉｎｕｘ）管理外物理リソース内の領域とＯＳ（Ｌｉｎｕｘ）管理内領域の領域間で発生する余分なデータ転送をなくし、性能向上を図ることができる。
【実施例２】
【００８５】
実施例１では、ＯＳ管理外物理リソース内の領域とＯＳ管理内領域の領域間で発生する余分なデータ転送をなくすため、ＯＳ１０４ｄであるＬｉｎｕｘがメモリ内のＯＳ管理内領域３０１にまとまった物理的に連続するＤＲＡＭのメモリ領域をhugepageにより確保した。このhugepageは、ストレージプログラムのＬＭ、ＣＭ、ＳＭ、ＤＸＢＦ等の用途に応じて、確保されるため、電断時に退避すべきデータを格納するＤＲＡＭの物理アドレスが離散的になる。
【００８６】
電断時は、ＯＳの提供する仮想アドレスを参照できないＢＩＯＳが、ＤＲＡＭの物理アドレスを指定して、データの退避を行う。そのため、hugepageで確保した物理領域の内、電断時に退避すべきデータを格納するＤＲＡＭの物理アドレスの新たな管理方法が必要となる。
【００８７】
実施例２では、電断時にデータを退避するための物理アドレスを管理するための技術について、説明する。
【００８８】
図１０は、実施例１のストレージプログラムメモリマッピング（以下、マッピングテーブルＴ４０） (図４)に、電断時に利用するデータ項目を追加した、ストレージプログラムメモリマッピングＴ１００を示す。
【００８９】
用途４０２に応じて電断時に退避すべきデータであることを示す電断時対象フラグ１００１を追加している。電断時対象フラグ１００１は、「FALSE」の場合には電断時に退避する必要がないことを示し、「TRUE」の場合には電断時にデータを退避する必要があることを示す。
【００９０】
電断時対象フラグ１００１は、用途４０２や領域のサイズ等に応じて設定される。電断時に消失してはいけないデータを格納するメモリ領域が対象となる。
【００９１】
また、図１０には、メモリの種類として、ＤＲＡＭかＳＣＭ（Storage Class Memory）かのメモリの種別を示す配置先メモリ種別１００２が追加されている。ＤＲＡＭが揮発性メモリであるのに対し、ＳＣＭは不揮発性メモリである。各用途のデータをＳＣＭに格納する場合には、電断時のデータ退避の必要性はない。そのため、配置先メモリ種別１００２が「ＳＣＭ」の場合、電断時対象フラグ１００１は「FALSE」となる。尚、配置先メモリ種別１００２は、ＳＣＭを使用しない場合には、不要となる。
【００９２】
図１１は、ＯＳ１０４ｄによって、ＳＣＭ１０６或いは記憶装置１１０に格納されるＳＣＭ内  hugepage数管理テーブルＴ１１０の一例を示す図である。
【００９３】
図１２は、ストレージプログラム１０４ａによって、ＳＣＭ１０６或いは記憶装置１１０に格納されるＳＣＭ  ＯＳ管理外管理テーブルＴ１２０の一例を示した図である。
【００９４】
図５がＤＲＡＭのhugepage数管理テーブルＴ５０に対し、図１１はＳＣＭのhugepage数管理テーブルＴ１１０であり、管理するデバイスが異なるが内容は共通する。
【００９５】
図６がＤＲＡＭ  ＯＳ管理外管理テーブルＴ５１に対し、図１２はＳＣＭ  ＯＳ管理外管理テーブルＴ１２０であり、管理するデバイスが異なるが内容は共通する。
【００９６】
図１３は、電断時にＢＩＯＳによって参照される保護対象管理テーブルＴ１３０の一例を示す。
【００９７】
保護対象管理テーブルＴ１３０は、領域１Ｄ１１０１、物理先頭アドレス１１０２、サイズ１１０３、リストア管理フラグ１１０４を管理する。
【００９８】
領域ＩＤ１１０１は、ストレージプログラムメモリマッピングＴ１００の領域ＩＤ４０１に対応し、ＤＲＡＭやＳＣＭの物理領域を特定する情報である。
【００９９】
物理先頭アドレス１１０２は、領域ＩＤで特定される領域に対応する物理アドレスの値である。ＤＲＡＭの場合にはＤＲＡＭ  ＯＳ管理外管理テーブルＴ５１の割当済みoffsetアドレスの値、ＳＣＭの場合にはＳＣＭ  ＯＳ管理外管理テーブルＴ１２０の割当済みoffsetアドレスの値が入力される。
【０１００】
サイズ１１０３は、領域ＩＤ１１０１によって特定されるメモリ領域のサイズである。
【０１０１】
リストア管理フラグ１１０４は、データ復旧の状態を示す。データ復旧とは、退避したデータによって、メモリ（ＤＲＡＭ或いはＳＣＭ）のデータが回復することをいう。「FALSE」の場合にはデータ復旧が未済であり、「TRUE」の場合にはデータ復旧が完了していることを示す。尚、図１３には、示していないが、各エントリーにバックアップ用デバイス１０８のアドレスを管理する項目を設けても良い。
【０１０２】
図１４は、図７のシステム内メモリ量管理テーブルＴ７０に対応するテーブルであり、システム全体ＤＲＡＭ容量とシステム全体ＳＣＭ容量が追加される。
【０１０３】
図１５は、ストレージ管理プログラム１０４ａによるメモリ割当処理と保護対象管理テーブル作成の詳細動作を説明するフローチャートである。
【０１０４】
図１５のメモリ割当処理に関し、ＤＲＡＭに対するメモリ割当処理は、実施例１の図９で示したステップＳ１００からステップＳ１１０と同様であるので説明を省略し、差分のみを説明する。
【０１０５】
ステップＳ１０２で割当済フラグ４０７にFALSEの項目あるかを判定した後、ステップＳ１３０１にて、マッピングテーブルＴ１００を参照して、メモリ種別の判定を行う。メモリがＤＲＡＭである場合ステップＳ１０４に進み、メモリがＳＣＭである場合にはステップＳ１３０２に進む。
【０１０６】
ＳＣＭに対する処理であるステップＳ１３０２からステップＳ１３０８は、ＤＲＡＭに対する処理であるステップＳ１０４からステップＳ１１０に対応する動作である。
【０１０７】
ＤＲＡＭやＳＣＭに対するメモリの割当処理を行い、ＤＲＡＭ内  hugepage数管理テーブル  Ｔ５０、ＤＲＡＭ  ＯＳ管理外テーブルＴ５１、ＳＣＭ内  hugepage数管理テーブル  Ｔ１１０、ＳＣＭ  ＯＳ管理外管理テーブル  Ｔ１２０を更新すると、ステップＳ１３０９に進む。
【０１０８】
ステップＳ１３０９では、マッピングテーブル  Ｔ１００の電断時対象フラグ１００１を判定する。電断時対象フラグ１００１が、「TRUE」の場合にはステップＳ１３１０に進み、「FALSE」の場合にはステップＳ１０２に戻って、他の領域ＩＤについて処理を繰り返す。
【０１０９】
ステップＳ１３１０では、物理アドレスチェックし、ステップＳ１３１１でチェックしたアドレスを保護対象管理テーブルＴ１３０に格納する。
【０１１０】
マッピングテーブルＴ１００により、処理の対象領域がＯＳ管理内領域４０６によりＯＳ管理外領域３０２とされ、配置先メモリ種別１００２がＤＲＡＭの場合には、ＤＲＡＭ  ＯＳ管理外管理テーブルＴ５１(図６)の割当済みoffsetアドレスの値をチェックし、保護対象管理テーブルＴ１３０(図１３)の処理対象の領域ＩＤに対応する物理先頭アドレス１１０２に格納する。尚、マッピングテーブルＴ１００により、処理の対象領域がＯＳ管理内領域４０６によりＯＳ管理外領域３０２とされ、配置先メモリ種別１００２がＳＣＭの場合には、ＳＣＭ  ＯＳ管理外管理テーブルＴ１２０(図１２)の割当済みoffsetアドレスの値をチェックし、保護対象管理テーブルＴ１３０(図１３)の処理対象の領域ＩＤに対応する物理先頭アドレス１１０２に格納する。
【０１１１】
一方、マッピングテーブルＴ１００により、処理の対象領域がＯＳ管理内領域４０６によりＯＳ管理内領域３０１とされる場合、ＯＳ１０４ｄにhugepageで当該領域用に確保したＤＲＡＭ或いはＳＣＭのメモリの先頭物理アドレスを問合わせて（チェック）し、その値を、保護対象管理テーブルＴ１３０(図１３)の処理対象の領域ＩＤに対応する物理先頭アドレス１１０２に格納する。
【０１１２】
つまり、ＣＰＵ１０４は、電断時対象フラグにより、当該領域が電断時に退避すべきデータを格納している領域である場合、ＯＳ管理外管理テーブルの割当て済みの物理アドレス、或いは、選択されたhugepageによって確保された物理領域の先頭物理アドレスを、当該領域の先頭物理アドレスとし、当該領域のサイズと共にバックアップ用デバイス１０８内の物理アドレスと対応付けて管理する保護対象管理テーブルを作成・更新する。
【０１１３】
これにより、保護対象管理テーブルＴ１３０の物理先頭アドレス１１０２に、退避すべきデータを格納するＤＲＡＭ若しくはＳＣＭの物理アドレスを管理することができる。
【０１１４】
ＯＳ１０４ｄであるＬｉｎｕｘのhugepageでＯＳ管理内領域３０１に確保したメモリ領域や、ストレージプログラムがＯＳ管理外領域３０２に確保したメモリ領域の内、電断時にデータ退避をすべきデータを格納するＤＲＡＭやＳＣＭの物理アドレスが保護対象管理テーブルＴ１３０の物理先頭アドレス１１０２に格納されるため、ストレージプログラムの仮想アドレスではなくＤＲＡＭやＳＣＭの物理アドレスによりアクセスするＢＩＯＳによって、データをバックアップデバイス内アドレスに退避することができる。
【０１１５】
ＳＣＭについては、電断時にデータ退避する必要がないとの前提に立つと、図１０の配置先メモリ種別１００２がＳＣＭの場合、図１０の電断時対象フラグ１００１を「False」に設定すればよい。
【０１１６】
図１６は、ストレージプログラム１０４ａによって実行される、電断時のデータバックアップ処理動作を説明するフローチャートである。
【０１１７】
停電等による電断時に、バックアップ処理を開始する（Ｓ２００）。
【０１１８】
リストア処理が開始されると（Ｓ２００）、ステップＳ２０１で保護対象管理テーブルＴ１３０をチェックし、先頭物理アドレス１１０２とそのサイズ１１０３を把握する。
【０１１９】
次に、ステップＳ２０２で、先頭物理アドレス１１０２からサイズ分１１０３をバックアップデバイス内に退避する。
【０１２０】
次に、ステップＳ２０３で、バックアップデバイス内アドレスを更新し、リストア管理フラグ１１０５を「FALSE」に設定する。
【０１２１】
図１７は、図９のステップＳ２００のリストア処理に相当し、ストレージプログラム１０４ａを実行するＣＰＵ１０４のリストア処理動作を説明するフローチャートである。リストア処理はバックアップデバイスに退避されたデータを用いて行う。
【０１２２】
リストア処理が開始（Ｓ３００）されると、ステップＳ３０１で保護対象管理テーブルＴ１３０の各領域ＩＤ１１０１に対し、リストア管理フラグ１１０５をチェックする。
【０１２３】
次に、ステップＳ３０２で、リストア済みフラグ「FALSE」があるかを判定する。「FALSE」が設定されている領域がなければ処理を終了する（Ｓ３０６）。
【０１２４】
ステップＳ３０３で、「FALSE」が設定されていると、領域ＩＤ１１０１をチェックして確認する。ステップＳ３０４で確認した領域ＩＤに対応する仮想アドレスに書き戻す。つまり、バックアップ用デバイスに退避された退避データを、マッピングテーブルの対応する領域の仮想先頭アドレスに対応させてリストアする。これによりストレージプログラム１０４ａが仮想アドレスを用いて、退避されたデータを格納するデバイスの物理アドレスにアクセスすることができる。
【０１２５】
最後に、ステップＳ３０５で、保護対象管理テーブルＴ１３０のリストア管理フラグ１１０５を「TRUE」更新に更新する。
【０１２６】
実施例２のデータ退避時のアドレス管理により、ストレージプログラムで使用する仮想アドレスに対応するＤＲＡＭやＳＣＭの物理アドレスが、離散的に確保された場合であっても、電断時に退避すべきデータを退避することができる。
【０１２７】
また、実施例２のリストア処理によりストレージプログラムの仮想アドレスで退避されたデータにアクセスすることができる。
【０１２８】
以上の通り、本実施形態によれば、Ｌｉｎｕｘ上で動作するＯＳＳのアプリケーションと仮想ストレージ装置との間でデータ転送を行う場合、Ｌｉｎｕｘ管理外物理リソース内の領域とＬｉｎｕｘ管理内領域の領域間で発生する余分なデータ転送をなくし、性能向上を図ることができる。
【０１２９】
また、ＯＳが仮想ストレージ装置のために確保したメモリ領域が離散的に確保された場合であっても、電断時に退避すべきデータを退避することができる。
【０１３０】
さらに、仮想ストレージ装置は、リストア処理によりストレージプログラムの仮想アドレスで退避されたデータにアクセスすることができる。
【符号の説明】
【０１３１】
１０：計算機
２０：ネットワーク
３０：クライアント
１０１−１０３：ネットワークＩＦ
１０４：ＣＰＵ
１０４１：コア
１０４２：ＤＭＡコントローラ
１０４ａ：ストレージプログラム
１０４ｂ：ＯＳＳ（FE/BEchip制御プログラム）
１０４ｃ：ＯＳＳ（FE/BEchip制御プログラム I/F）
１０４ｄ：ＯＳ（Ｌｉｎｕｘ）
１０４ｅ：ＢＩＯＳ
１０５：ＤＲＡＭ
１０６：ＳＣＭ
１０７：ブートディスク
１０８：バックアップ用デバイス
１２０：ドライブ
３０１：ＯＳ管理内領域
３０２：ＯＳ管理外領域
【図１】
0006972202.tif 000002
【図２】
0006972202.tif 000003
【図３】
0006972202.tif 000004
【図４】
0006972202.tif 000005
【図５】
0006972202.tif 000006
【図６】
0006972202.tif 000007
【図７】
0006972202.tif 000008
【図８】
0006972202.tif 000009
【図９】
0006972202.tif 000010
【図１０】
0006972202.tif 000011
【図１１】
0006972202.tif 000012
【図１２】
0006972202.tif 000013
【図１３】
0006972202.tif 000014
【図１４】
0006972202.tif 000015
【図１５】
0006972202.tif 000016
【図１６】
0006972202.tif 000017
【図１７】
0006972202.tif 000018