JP2008276326A - 記憶制御装置及び記憶制御装置の仮想メモリ制御方法 - Google Patents
記憶制御装置及び記憶制御装置の仮想メモリ制御方法 Download PDFInfo
- Publication number
- JP2008276326A JP2008276326A JP2007116125A JP2007116125A JP2008276326A JP 2008276326 A JP2008276326 A JP 2008276326A JP 2007116125 A JP2007116125 A JP 2007116125A JP 2007116125 A JP2007116125 A JP 2007116125A JP 2008276326 A JP2008276326 A JP 2008276326A
- Authority
- JP
- Japan
- Prior art keywords
- virtual memory
- control unit
- capacity
- storage
- unused
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/253—Centralized memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】本発明の記憶制御装置は、同時に動作する複数の機能毎にそれぞれ仮想メモリの領域を分割して割り当てる。
【解決手段】上位通信制御部1内の各マイクロプロセッサ部8は、それぞれ複数のプログラムプロダクト8Aを実行させることができる。ローカルメモリ9を利用して生成される仮想メモリ8Cは、複数の領域に分割される。キュー8Bによって、分割された領域は各プログラムプロダクト8Aに割り当てられる。
【選択図】図1
【解決手段】上位通信制御部1内の各マイクロプロセッサ部8は、それぞれ複数のプログラムプロダクト8Aを実行させることができる。ローカルメモリ9を利用して生成される仮想メモリ8Cは、複数の領域に分割される。キュー8Bによって、分割された領域は各プログラムプロダクト8Aに割り当てられる。
【選択図】図1
Description
本発明は、記憶制御装置及び記憶制御装置の仮想メモリ制御方法に関する。
企業等の組織では、多量のデータを管理するために、記憶制御装置を用いる。例えば、金融機関や病院等のような組織では、多くの顧客に関するデータを長期間保存する必要があるため、信頼性が高く、かつ、大容量の記憶制御装置が必要とされる。高信頼性及び大容量の両方を満たす記憶制御装置では、例えば、多数のハードディスクドライブを備えており、RAID(Redundant Array of Independent Disks)に基づく記憶領域をホストに提供可能である。
記憶制御装置は、例えば、多数の物理的記憶デバイス(ハードディスクドライブ等)、論理的記憶デバイス(論理ボリューム等)、通信経路、制御基板等を備えて構成される大規模なシステム製品である。記憶制御装置では、多数の制御基板を協調して動作させるために、共有メモリを用いて、各制御基板の間で制御情報や管理情報を共有させる。
各制御基板は、複数のマイクロプロセッサ及び少なくとも一つのローカルメモリをそれぞれ備えている。各ローカルメモリには、共有メモリに記憶されている制御情報や管理情報の少なくとも一部が予めコピーされる。一つの制御基板内の複数のマイクロプロセッサは、ローカルメモリにコピーされた制御情報や管理情報を用いて、所定の処理をそれぞれ実行する。
仮想メモリ機構を用いることにより、ローカルメモリの物理的サイズを上回るサイズのメモリサイズを得ることができる。仮想メモリ機構は、オペレーティングシステム(OS)の有するメモリ管理サブシステムによって実現することができる。仮想メモリの記憶領域を分割して使用する技術も知られている(特許文献1,特許文献2)。
特開平9−282233号公報
特開平1−283661号公報
前記各文献に記載の仮想メモリに関する従来技術は、いずれも記憶制御装置に直接関係する技術ではない。さらに、前記各文献に記載の従来技術は、いずれも単一のマイクロプロセッサによって使用される仮想メモリを管理するための技術であり、複数のマイクロプロセッサによって共用される仮想メモリの管理に、そのまま適用できない。また、前記各文献に記載の従来技術は、単一のマイクロプロセッサにより使用される仮想メモリを、予め決定される固定サイズで分割して管理するものであり、分割される領域のサイズを可変に制御するものではない。
記憶制御装置は、多数のホストコンピュータ(以下、ホスト)にそれぞれ論理ボリュームを提供する大規模なシステム製品であり、各ホストと各論理ボリュームとの対応関係、各ホストによる論理ボリュームの使用状態等は、種々変化する。例えば、ホストに提供される論理ボリュームのサイズを必要に応じて動的に制御したり、ホストによって使用されている論理ボリュームの記憶内容を別の論理ボリュームにコピーしたり、一方のホストに接続されていた論理ボリュームを他方のホストに接続し直したりする。従って、このような技術的性質を有する記憶制御装置には、新たな仮想メモリ技術が必要となる。
そこで、本発明の目的は、複数のマイクロプロセッサにより実現される所定の複数の機能毎に、仮想メモリ容量を可変に割り当てることができるようにした記憶制御装置及び記憶制御装置の仮想メモリ制御方法を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従う、上位装置に記憶領域を提供する記憶制御装置は、上位装置との間の通信を制御するための上位通信制御部と、記憶デバイスとの間の通信を制御するための下位通信制御部と、上位通信制御部及び下位通信制御部によって共有される共有記憶領域と、を備えており、上位通信部及び下位通信部は、通信相手先と通信するための複数の通信インターフェース部と、通信インターフェース部を用いて、通信相手先との間のデータ転送を制御するためのマイクロプロセッサ部と、物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、仮想メモリ制御部は、各マイクロプロセッサ部により実現される所定の複数の機能毎に仮想メモリ容量をそれぞれ割り当て、かつ、各所定の機能に割り当てられる仮想メモリ容量をそれぞれ可変に制御する。
本発明の実施形態では、仮想メモリには、各所定の機能毎に、共有記憶領域に記憶されている所定データの少なくとも一部がコピーされている。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能毎に予め用意された、仮想メモリ容量を管理するための容量管理キューを用いて、各所定の機能に割り当てる仮想メモリ容量をそれぞれ制御する。
本発明の実施形態では、仮想メモリ制御部は、さらに、未使用容量を管理するための未使用容量管理キューを用いて、仮想メモリの全容量のうち各所定の機能のいずれにも割り当てられていない未使用の容量を管理する。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能にそれぞれ割り当てられる仮想メモリ容量の閾値をそれぞれ管理するための最小値管理テーブルを用いて、各所定の機能に少なくとも閾値以上の仮想メモリ容量をそれぞれ割り当てる。
本発明の実施形態では、閾値は、記憶制御装置の構成が変更された場合に自動でまたは手動により設定される。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能に、予め設定される所定の単位で、少なくとも閾値以上の仮想メモリ容量をそれぞれ割り当てていく。
本発明の実施形態では、仮想メモリ制御部は、仮想メモリの全容量のうち未使用の容量を、予め設定される所定の単位で各所定の機能にそれぞれ割り当てていくことにより、各所定の機能に少なくとも閾値以上の仮想メモリ容量を割り当てる。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能のうち閾値以上の仮想メモリ容量が割り当てられている所定の機能について、未使用の仮想メモリ容量が存在するか否かを検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を未使用の容量として管理する。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を未使用の容量として管理する。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能のうち閾値以上の仮想メモリ容量が割り当てられている所定の機能が存在するか否かを判定し、(1A)閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見した場合には、(1B)その発見された所定の機能に割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かを検査し、(1C)未使用の仮想メモリ容量が存在すると判定した場合は、その未使用の仮想メモリ容量を未使用の容量として管理し、(2A)閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見できない場合には、(2B)各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、(2C)未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を未使用の容量として管理する。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能に割り当てられている仮想メモリ容量のうち未使用の仮想メモリ容量を、予め設定される所定の単位で、他の所定の機能に割り当て直す。
本発明の実施形態では、仮想メモリ制御部は、各所定の機能に割り当てられている仮想メモリ容量のうち最古の仮想メモリ容量を、予め設定される所定の単位で解放して再利用する。
本発明の実施形態では、共有記憶領域は、上位通信制御部及び下位通信制御部によって共有される制御メモリ、または、上位通信制御部及び下位通信制御部によって共有される、記憶デバイス内の記憶領域のいずれかである。
本発明の実施形態では、所定データには、上位装置に提供される論理ボリュームの構成を示すデータ、記憶制御装置の構成を示すデータ、上位装置から発行されるアクセス要求のパターンを示すデータ、上位装置に提供される論理ボリュームと上位装置との間の接続構成を示すデータ、のいずれか少なくとも二つ以上のデータが含まれている。
本発明の他の観点に従う、記憶制御装置内の仮想メモリを制御する方法は、記憶制御装置は、上位装置との間の通信を制御するための上位通信制御部と、記憶デバイスとの間の通信を制御するための下位通信制御部と、上位通信制御部及び下位通信制御部によって共有される共有記憶領域と、を備えており、上位通信部及び下位通信部は、通信相手先と通信するための通信インターフェース部と、通信インターフェース部を用いて、通信相手先との間のデータ転送を制御するための複数のマイクロプロセッサ部と、物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、かつ、記憶制御装置の構成が変更された場合に、各マイクロプロセッサ部によって実現される所定の複数の機能毎にそれぞれ割り当てられる仮想メモリ容量の閾値を設定する設定ステップと、各所定の機能毎に、少なくとも閾値以上の仮想メモリ容量を可変に割り当てる割り当てステップと、各所定の機能にそれぞれ割り当てられた仮想メモリ容量のうち未使用の仮想メモリ容量を未使用容量として解放する解放ステップと、を含む。
本発明の構成要素は、その全部または一部をコンピュータプログラムとして構成できる場合がある。このコンピュータプログラムは、記録媒体に固定して譲渡等することができるほかに、インターネット等の通信ネットワークを介して伝送することもできる。
以下、図面に基づき、本発明の実施の形態を説明する。図1は、本実施形態の全体概念を示す説明図である。図1に示すストレージシステムは、例えば、記憶制御装置1と、「上位装置」としてのホストコンピュータ(以下、ホスト)2とを備えて構成される。さらに、記憶制御装置1の構成変更等を指示するための別のコンピュータ装置を備えることもできる。
記憶制御装置1は、例えば、上位通信制御部3と、下位通信制御部4と、ディスクドライブ5と、共有メモリ6とを備えて構成される。記憶制御装置1の詳細な構成は、後述するが、キャッシュメモリ等も記憶制御装置1に設けられる。
記憶制御装置1には、それぞれ複数の上位通信制御部3及び下位通信制御部4を設けることができる。上位通信制御部3は、ホスト2との間の通信を制御するものである。下位通信制御部4は、「記憶デバイス」としてのディスクドライブ5との間の通信を制御するものである。上位通信制御部3と下位通信制御部4とは、共有メモリ6を介して処理の進行状況を確認し、協調して動作する。上位通信制御部3と下位通信制御部4とは、その内部の制御プログラムや通信相手先は相違するが、実質的に同一の構成を備えるように構成することができる。そこで、上位通信制御部3の構成に着目して説明する。
上位通信制御部3は、例えば、通信インターフェース部7と、マイクロプロセッサ部8と、「物理メモリ」としてのローカルメモリ9と、を備える。通信インターフェース部7及びマイクロプロセッサ8は、それぞれ複数ずつ設けられるが、説明の便宜上、図1では、それぞれ一つずつ示す。
マイクロプロセッサ部8は、複数のプログラムプロダクト8Aをそれぞれ実行することができる。マイクロプロセッサ部8により実現されるOSは、メモリ管理用のサブシステムを備えている。このメモリ管理サブシステムは、複数の仮想メモリ管理キュー(以下、キューと略す場合がある)8Bを用いて、仮想メモリ8Cを制御する。
プログラムプロダクト8Aとしては、例えば、仮想ボリュームを生成するためのプログラム(AOU(Allocation On Use)と呼ぶ場合がある)、データのコピーを制御するプログラム、記憶制御装置1の構成を管理するためのプログラム、ホスト2との通信経路の構成を管理するためのプログラム、ホスト2によるボリュームの使用状況を管理するためのプログラム等を挙げることができる。以上のプログラムプロダクト8Aは、一例であって、本発明は上述のプログラムプロダクト8Aに限定されない。
ローカルメモリ9の物理的記憶領域は、例えば、512バイトのページ単位で、より大きなサイズの仮想メモリ8Cにマッピングされる。仮想メモリ8Cの記憶領域は、例えば、512バイトのページ単位で、各キュー8Bに登録される。これにより、仮想メモリ8Cの記憶領域は、複数の領域に分割される。分割された各領域は、各プログラムプロダクト8Aによって使用される。
従って、一つのプログラムプロダクト8Aに割り当てられてる仮想メモリ8Cの分割領域は、基本的に、他の各プログラムプロダクト8Aに割り当てられる仮想メモリ8Cの分割領域に影響を与えない。しかし、後述の実施例から明らかなように、仮想メモリ8Cの分割領域内で使用頻度の低いページは、その分割領域から取り外されて、別の分割領域に追加される。
仮想メモリ8Cの記憶領域のうち、いずれのプログラムプロダクト8Aにも割り当てられていない領域は、未使用の記憶領域である。未使用の記憶領域は、フリー領域と呼ぶこともできる。未使用の記憶領域に属する各ページは、フリーキュー8Bによって管理することができる。
仮想メモリ8Cの各分割領域には、その分割領域を使用するプログラムプロダクト8Aに応じて、共有メモリ6内の少なくとも一部のデータがコピーされる。従って、各プログラムプロダクト8Aは、共有メモリ6にアクセスすることなく、仮想メモリ8Cの分割領域にアクセスするだけで、処理を実行することができる。仮想メモリ8Cの分割領域内に存在しないデータをプログラムプロダクト8Aが使用する場合、共有メモリ6から仮想メモリ8Cの分割領域に、必要なデータがコピーされる。
なお、ローカルメモリ9にデータを供給する供給元は、共有メモリ6に限らない。後述の実施例のように、ディスクドライブ5内の少なくとも一部のデータを、ローカルメモリ9にコピーして使用することもできる。
本実施例では、記憶デバイスとして、ハードディスクドライブ5を例に挙げる。しかし、ハードディスクドライブに限らず、例えば、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等の、データを読み書き可能な不揮発性の記憶デバイスを利用可能である。
ハードディスクデバイスを用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。
記憶デバイスとして半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々のメモリデバイスを利用可能である。本発明に用いることのできる記憶デバイスの種類は、上記のものに限定されず、将来製品化される他の種類の記憶デバイスを利用することもできるであろう。
記憶デバイスとして半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々のメモリデバイスを利用可能である。本発明に用いることのできる記憶デバイスの種類は、上記のものに限定されず、将来製品化される他の種類の記憶デバイスを利用することもできるであろう。
本実施形態では、複数のマイクロプロセッサ部8によって共有されるローカルメモリ9を用いて仮想メモリ8Cを生成し、この仮想メモリ8Cを各マイクロプロセッサ部8により実現される各プログラムプロダクト8Aに分割して提供する。
従って、本実施形態によれば、複数のプログラムプロダクト8Aが同時に動作している場合でも、あるプログラムプロダクト8Aに割り当てられている仮想メモリ容量が、他のプログラムプロダクト8Aに割り当てられている仮想メモリ容量に影響を及ぼすのを、抑制できる。これにより、複数のマイクロプロセッサ部8により実行される複数のプログラムプロダクト8Aが混在して同時に動作する場合でも、ヒットミスの発生を低減することができ、各プログラムプロダクト8Aを円滑に動作させることができる。即ち、本実施形態の仮想メモリ管理技術を用いれば、限られたサイズの仮想メモリ8Cを有効に利用することができる。以下、本実施形態を詳細に説明する。
図2は、本実施例による記憶制御装置10を備えるストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、一つまたは複数の記憶制御装置10と、一つまたは複数のホスト20と、少なくとも一つの管理サーバ30とを備えて構成される。ストレージシステムは、別の記憶制御装置40を備えることもできる。記憶制御装置10は、図1中の記憶制御装置1に対応する。ホスト20は、図1中のホスト2に対応する。管理サーバ30及び別の記憶制御装置40は、図1では省略されている。記憶制御装置10,ホスト20、管理サーバ30の詳細は、それぞれ後述する。
ストレージシステムのネットワーク構成を説明する。各ホスト20と記憶制御装置10とは、例えば、SANのような通信ネットワークCN1を介して、相互通信可能に接続されている。IP(Internet Protocol)を利用するIP_SANでもよいし、FCP(Fibre Channel Protocol)を利用するFC_SANでもよい。
管理サーバ30は、例えば、LAN(Local Area Network)のような、管理用の通信ネットワークCN3を介して、各ホスト20及び記憶制御装置10とそれぞれ相互通信可能に接続されている。なお、ストレージシステムが外部記憶制御装置40を備える場合、管理サーバ30と外部記憶制御装置40とを、通信ネットワークCN3を介して相互通信可能に接続することもできる。
なお、図2中では、データ入出力用ネットワークCN1と管理用ネットワークCN3とを分離する場合を示すが、これに限らず、一つの通信ネットワークを用いて、データの入出力及び管理を行う構成でもよい。例えば、管理用通信ネットワークCN3を廃止し、通信ネットワークCN1のみを備える構成でもよい。
外部記憶制御装置40は、記憶制御装置10の外部に存在する別の記憶制御装置であるため、本実施例では、外部記憶制御装置と呼ぶ。外部記憶制御装置40は、SANのような、外部接続用通信ネットワークCN2を介して、記憶制御装置10に接続される。なお、外部接続用通信ネットワークCN2を廃止し、データ入出力用ネットワークCN1によって記憶制御装置10と外部記憶制御装置40とを接続する構成でも良い。
記憶制御装置10の構成を説明する。記憶制御装置10は、例えば、コントローラ100と、ハードディスク搭載部200とを備える。コントローラ100は、少なくとも一つ以上のチャネルアダプタ(以下、CHA)110と、少なくとも一つ以上のディスクアダプタ(以下、DKA)120と、サービスプロセッサ(以下、SVP)130と、キャッシュメモリ140と、共有メモリ150と、相互結合部160とを備えている。CHA110,DKA120は、それぞれ複数ずつコントローラ100内に設けられる。
CHA110は、ホスト20との間のデータ通信を制御するためのもので、例えば、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。各CHA110は、少なくとも一つ以上の通信ポートを備える。通信ポートには、例えば、WWN(World Wide Name)のような識別情報が設定される。ホスト20と記憶制御装置10とが、iSCSI(internet Small Computer System Interface)等を用いてデータ通信を行う場合、通信ポートには、IP(Internet Protocol)アドレス等の識別情報が設定される。
図2中には、2種類のCHA110が示されている。図2中右側に位置する一方のCHA110は、ホスト20からのコマンドを受信して処理するためのものであり、その通信ポートは、ターゲットポートとなっている。図2中左側に位置する他方のCHA110は、外部記憶制御装置40にコマンドを発行するためのものであり、その通信ポートは、イニシエータポートとなっている。
DKA120は、各ディスクドライブ210との間のデータ通信を制御するためのもので、CHA110と同様に、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。
DKA120と各ディスクドライブ210とは、例えば、ファイバチャネルプロトコルに従う通信経路を介して接続されている。DKA120と各ディスクドライブ210とは、ブロック単位のデータ転送を行う。コントローラ100が各ディスクドライブ210にアクセスするための経路は、冗長化されている。いずれか一方のDKA120や通信経路に障害が発生した場合でも、コントローラ100は、他方のDKA120や通信経路を用いて、ディスクドライブ210にアクセス可能である。同様に、ホスト20とコントローラ100との間の経路、外部記憶制御装置40とコントローラ100との間の経路も冗長化することができる。なお、DKA120は、ディスクドライブ210の状態を随時監視している。SVP130は、DKA120による監視結果を、内部ネットワークCN4を介して取得する。
CHA110及びDKA120の動作を簡単に説明する。CHA110は、ホスト20から発行されたリードコマンドを受信すると、このリードコマンドを共有メモリ150に記憶させる。DKA120は、共有メモリ150を随時参照しており、未処理のリードコマンドを発見すると、ディスクドライブ210からデータを読み出して、キャッシュメモリ140に記憶させる。CHA110は、キャッシュメモリ140に移されたデータを読み出し、ホスト20に送信する。
一方、CHA110は、ホスト20から発行されたライトコマンドを受信すると、このライトコマンドを共有メモリ150に記憶させる。また、CHA110は、受信したライトデータをキャッシュメモリ140に記憶させる。CHA110は、キャッシュメモリ140にライトデータを記憶させた後、ホスト20に書込み完了を報告する。DKA120は、共有メモリ150に記憶されたライトコマンドに従って、キャッシュメモリ140に記憶されたデータを読出し、所定のディスクドライブ210に記憶させる。
SVP130は、LAN(Local Area Network)のような内部ネットワークCN4を介して、CHA110及びDKA120と通信可能に接続される。また、SVP130は、LANやインターネット等の通信ネットワークCN3を介して、管理サーバ30に接続されている。SVP130は、記憶制御装置10内部の各種状態を収集し、管理サーバ30に提供する。SVP130は、管理サーバ30からの指示に応じて、記憶制御装置10の構成や仮想メモリの閾値等を設定する。なお、SVP130は、CHA110またはDKA120のいずれか一方にのみ接続されてもよい。SVP130は、共有メモリ150を介して、各種のステータス情報を収集可能だからである。
キャッシュメモリ140は、例えば、ホスト20から受信したデータ等を記憶するものである。キャッシュメモリ140は、例えば揮発メモリから構成される。共有メモリ150は、例えば不揮発メモリから構成される。共有メモリ150には、例えば、後述の各種管理用情報等が記憶される。
共有メモリ150及びキャッシュメモリ140は、別々のメモリ基板としてそれぞれ構成することもできるし、または、同一のメモリ基板上に混在して設けることもできる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
相互結合部160は、各CHA110と、DKA120と、キャッシュメモリ140及び共有メモリ150をそれぞれ相互に接続させる。これにより、全てのCHA110,DKA120は、キャッシュメモリ140及び共有メモリ150にそれぞれアクセス可能である。相互結合部160は、例えばクロスバスイッチ等として構成される。
コントローラ100の構成は、上述の構成に限定されない。例えば、一つまたは複数の制御基板上に、ホスト20や外部記憶制御装置40との間のデータ通信をそれぞれ行う機能と、ディスクドライブ210との間のデータ通信を行う機能と、データや各種管理情報等を保存する機能等を、それぞれ設ける構成でもよい。このようなコントローラ基板を用いることにより、記憶制御装置10の外径寸法を小型化することができる。
ハードディスク搭載部200の構成について説明する。ハードディスク搭載部200は、複数のディスクドライブ210を備えている。ディスクドライブ210としては、例えば、FCディスク、SATAディスク等のような種々のハードディスクドライブを用いることができる。
RAID構成等によっても相違するが、例えば、3個1組や4個1組等の所定数のディスクドライブ210によって、パリティグループが構成される。パリティグループは、パリティグループ内の各ディスクドライブ210がそれぞれ有する物理的記憶領域を仮想化したものである。パリティグループは、仮想化された物理的記憶デバイスである。
パリティグループの有する物理的記憶領域には、所定サイズまたは可変サイズの論理デバイス(LDEV:Logigal DEVice)220を一つまたは複数設定できる。論理デバイス220は、論理的な記憶デバイスであり、論理ボリュームに対応付けられる。
外部記憶制御装置40は、記憶制御装置10と同様に、例えば、コントローラ41と、ハードディスク搭載部42とを備えて構成することができる。コントローラ41は、ディスクドライブの記憶領域を利用して、論理ボリュームを生成する。
外部記憶制御装置40は、記憶制御装置10から見た場合に記憶制御装置10の外部に存在するため、外部記憶制御装置と呼ぶ。また、外部記憶制御装置40の有するディスクドライブを外部ディスクと、外部記憶制御装置40の有する論理ボリュームを外部ボリュームと、それぞれ呼ぶ場合がある。
例えば、外部記憶制御装置40内の論理ボリュームは、通信ネットワークCN2等を介して、記憶制御装置10内に設けられる仮想的な論理デバイス(VDEV:Virtual DEVice)に対応付けられる。そして、仮想的な論理デバイスの記憶領域上には、仮想的な論理ボリュームを設定することができる。従って、記憶制御装置10は、外部記憶制御装置40内の論理ボリューム(外部ボリューム)を、それがあたかも記憶制御装置10内の論理ボリュームであるかのようにして、ホスト20に見せかけることができる。
仮想的な論理ボリュームへのアクセス要求が発生した場合、記憶制御装置10は、仮想的論理ボリュームに関するアクセス要求のコマンドを、外部記憶制御装置40内の論理ボリュームにアクセスするためのコマンドに変換する。変換されたコマンドは、通信ネットワークCN2を介して、記憶制御装置10から外部記憶制御装置40に送信される。外部記憶制御装置40は、記憶制御装置10から受領したコマンドに従ってデータの読み書きを行い、その結果を記憶制御装置10に返す。
このように、記憶制御装置10は、外部に存在する別の記憶制御装置40内の記憶資源(外部ボリューム)を、記憶制御装置10内の記憶資源であるかのように利用することができる。従って、記憶制御装置10は、ディスクドライブ210やDKA120を備える必要は必ずしもない。外部記憶制御装置40内のハードディスクが提供する記憶領域を使用可能だからである。記憶制御装置10は、高機能のファイバチャネルスイッチのように構成することもできる。
図3は、CHA110の構成を示す説明図である。CHA110は、例えば、複数のマイクロプロセッサ(CPU)111と、周辺処理部112と、ローカルメモリ113と、チャネルプロトコル処理部114と、内部ネットワークインターフェース部115とを備えて構成される。
各マイクロプロセッサ111は、バス116を介して、周辺処理部112に接続されている。周辺処理部112は、ローカルメモリ113に接続されており、ローカルメモリ113の動作を制御する。さらに、周辺処理部112は、バス117を介して、各チャネルプロトコル処理部114にそれぞれ接続されている。周辺処理部112は、各マイクロプロセッサ111,各チャネルプロトコル処理部114,内部ネットワークインターフェース部115から、それぞれ入力されるパケットを処理する。例えば、転送先がローカルメモリ113になっているパケットの場合、周辺処理部112は、そのパケットを処理し、必要ならば処理結果をパケット送信元に返す。内部ネットワークインターフェース部115は、相互結合部160を介して、他のCHA110,DKA120,キャッシュメモリ140及び共有メモリ150と通信するための回路である。
ローカルメモリ113内には、例えば、制御プログラム113P、通信用領域113B及び各種のテーブルTが記憶される。各マイクロプロセッサ111は、制御プログラム113Pを読み出して実行する。各マイクロプロセッサ111は、通信用領域113Bを介して、他のマイクロプロセッサ111と通信を行う。
各種テーブルTの元データは、共有メモリ150内に存在する。即ち、共有メモリ150内の各種テーブルTのデータは、必要に応じて、その少なくとも一部がローカルメモリ113内にコピーされる。
チャネルプロトコル処理部114は、ホスト20との間で通信を行うための処理を実行する。チャネルプロトコル処理部114は、ホスト20からのアクセス要求を受信すると、そのホスト20を識別するための番号やLUN(Logical Unit Number)、アクセス先アドレス等をマイクロプロセッサ111に通知する。
マイクロプロセッサ111は、チャネルプロトコル処理部114から通知された内容に基づいて、リード要求の対象とされたデータをホスト20に送信させるための転送リストを作成する。チャネルプロトコル処理部114は、転送リストに基づいて、キャッシュメモリ140またはフラッシュメモリデバイス120のいずれかからデータを読み出して、ホスト20に送信する。
ライト要求の場合、マイクロプロセッサ111は、転送リストにライトデータの格納先アドレスをセットする。チャネルプロトコル処理部114は、転送リストに基づいて、キャッシュメモリ140にライトデータを転送する。なお、DKA120は、制御プログラム113Pの内容等は相違するが、実質的にCHA110と同様に構成される。
図4は、マッピングテーブルT1、構成管理テーブルT2及びアクセス履歴管理テーブルT3の一例を示す説明図である。上述の通り、各テーブルT1〜T3の全体は、共有メモリ150内に記憶されており、必要に応じて、各テーブルT1〜T3の一部のデータが、各CHA110や各DKA120のローカルメモリ113内にコピーされる。
マッピングテーブルT1は、記憶制御装置10が他の記憶制御装置40内の論理ボリューム(つまり、結果的にディスクドライブである)を利用するために使用される。マッピングテーブルT1は、例えば、LUNと、論理デバイス(LDEV)を識別するための番号と、仮想的な中間デバイス(VDEV)を識別するための番号とを対応付けることにより構成することができる。
仮想的な中間デバイスを識別するための情報には、例えば、仮想的な中間デバイスの番号と、仮想的な中間デバイスが接続される物理的な記憶デバイスの種類を示す情報と、物理的な記憶デバイスへ接続するための経路情報等を含めることができる。仮想的な中間デバイスが、記憶制御装置10内のディスクドライブ210に対応付けられている場合、ディスクドライブ210にアクセスするための内部パス情報が設定される。
仮想的な中間デバイスが、外部記憶制御装置40内の論理ボリュームに接続されている場合、その論理ボリュームへアクセスするために必要な外部パス情報が設定される。外部パス情報には、例えば、WWNやLUN等が含まれる。記憶制御装置10のコントローラ100は、マッピングテーブルT1を参照することにより、ホスト20から受信したコマンドを、外部記憶制御装置40に送信するためのコマンドに変換する。
構成管理テーブルT2は、記憶制御装置10の管理下にある論理ボリュームの構成を管理するためのテーブルである。構成管理テーブルT2は、例えば、論理ボリュームを識別するための番号(LU#)と、その論理ボリュームに対応付けられる論理デバイスを識別するための番号(LDEV#)と、その論理デバイスに対応付けられる仮想的な中間デバイスを識別するための番号(VDEV#)と、その仮想的な中間デバイスに対応付けられる物理的記憶デバイスを識別するための番号(PDEV#)とを、管理する。
なお、記憶制御装置10に提供する論理ボリュームを、AOU機能を利用した仮想的な論理ボリューム(以下、AOUボリュームとも呼ぶ)として生成する場合、構成管理テーブルT2にAOUボリュームの構成に関する情報を記憶させることができる。AOU機能とは、ホスト20からのアクセスに応じて、プールされている記憶領域を論理ボリュームに対応付ける機能である。即ち、AOUボリュームは、プールされた記憶領域を必要に応じて掻き集めることにより生成される。AOU機能により、必要なサイズのボリュームを必要に応じて生成することができる。
アクセス履歴管理テーブルT3は、ホスト20による論理ボリュームの使用状態の履歴を管理するテーブルである。アクセス履歴管理テーブルT3は、例えば、論理ボリュームを識別するための番号と、アクセスパターンと、アクセス回数等を対応付けて管理することができる。アクセスパターンとは、ホスト20が論理ボリュームにアクセスする場合のパターンを意味し、ランダムアクセスまたはシーケンシャルアクセスのいずれかを示す値が設定される。
図5は、本実施例による仮想メモリ管理方法を模式的に示す説明図である。図5(a)に示すように、ローカルメモリ113の記憶領域は、例えば、512バイトのページ113A単位で管理される。物理的なページであるため、図中では「PP」と示す。
仮想メモリ500も、例えば、512バイトのページ501単位で管理される。仮想的なページであるため、図中では「VP」と示す。物理ページ113Aのサイズと仮想ページ501のサイズとをそれぞれ512バイトに設定することにより、制御構造を簡素化することができる。但し、これに限らず、物理ページ113Aのサイズと仮想ページ501のサイズとを異ならせる構成でもよい。
物理ページ113Aと仮想ページ501には、それぞれを識別するためのページ番号が予め設定されている。物理ページ113Aのページ番号を「PPN」、仮想ページのページ番号を「VPN」として示す。ページ管理テーブルT4は、仮想ページ番号VPNと物理ページ番号PPNとを対応付けて管理する。ページ管理テーブルT4によって、仮想ページ501へのアクセスは、その仮想ページに対応付けられている物理ページ113Aへのアクセスに変換される。
仮想メモリ500の各仮想ページ501は、キュー510に登録されることにより、所定の機能(AOU機能等)によって使用されることになる。仮想メモリ500の記憶領域(全仮想ページ501)のうち、いずれかの機能に割り当てられている領域502は、分割領域または割当済み領域と呼ぶことができる。仮想メモリ500の記憶領域のうち、いずれの機能にも割り当てられていない領域503は、未使用領域またはフリー領域と呼ぶことができる。
図5(b)は、仮想メモリ500を各所定の機能毎に分割して管理するためのキュー構造を示している。所定の機能としては、例えば、AOU機能、記憶制御装置10の構成を管理する機能、ホスト20のアクセスパターンを学習して管理する機能、ホスト20と論理ボリュームとの間の通信経路の構成を管理する機能等を挙げることができる。これらの機能は一例であって、本発明は上述の機能に限定されない。例えば、データをコピーする機能等の他の機能にも本発明は適用可能である。
キュー510は、所定の機能毎にそれぞれ用意される。各キュー510には、その機能によって使用される仮想ページ501を特定するための、仮想ページ管理データ511が少なくとも一つ以上繋がれる。仮想ページ管理データ511には、仮想ページ501が最後に使用された時刻(図中、LTと示す)を含めることができる。
図6は、閾値管理テーブルT5及び各キュー510(即ち、各機能)に割り当てられる仮想メモリ容量を示す説明図である。図6の上側に示す閾値管理テーブルT5は、各キュー510に設定される閾値Thを管理するためのテーブルである。閾値Thは、各キュー510に最低限割り当てられる仮想メモリ容量(仮想ページ数)を規定する。逆に言えば、閾値Thを超えた分の仮想メモリ容量は、そのキューから奪われて別のキューに割り当てられる可能性がある。
図6の下側に示すように、未使用の仮想ページ501から仮想ページ単位で、各キュー510に仮想ページが割り当てられる。各キュー510には、それぞれの閾値Th以上の仮想ページが少なくとも割り当てられる。即ち、各キュー510に関するページ確保要求を満たすまで、閾値Thを超えた量の仮想ページが割り当てられる。
図7は、閾値Thを決定するための処理を示すフローチャートである。以下に示す各フローチャートは、本発明の理解及び実施に必要な範囲で処理の概要を示すものであり、実際のコンピュータプログラムとは相違する場合がある。いわゆる当業者であれば、フローチャート中のステップを変更したり、他のステップを追加等することができる。
コントローラ100は、記憶制御装置10の構成情報(T2または/及びT3)を参照し(S10)、さらに、各プログラムプロダクトの使用状態を判定する(S11)。即ち、コントローラ100は、どのプログラムプロダクトが起動しているか、あるいは、起動が予定されているかを判別する。
コントローラ100は、各プログラムプロダクトに関連づけられる各キュー510の閾値Thをそれぞれ決定する(S12)。例えば、ユーザは、管理サーバ30からSVP130を介して、閾値Thの値を手動で設定することができる。あるいは、コントローラ100は、予め設定される初期閾値を自動的に選択する構成でもよい。
コントローラ100は、決定された閾値Thを閾値管理テーブルT5に記憶させる(S13)。キュー510には、後述のページ確保処理によって、閾値Th以上の仮想ページが登録される。各プログラムプロダクトは、キュー510に登録された仮想ページに、共有メモリ150に記憶されている各種管理情報(各種テーブルT)の有するデータうち、必要なデータをコピーして使用する(S14)。
次に、コントローラ100は、記憶制御装置10の構成が変更されたか否かを判定する(S15)。即ち、閾値決定処理は、記憶制御装置10の構成変更を契機として実行させることができる。記憶制御装置10の構成変更としては、例えば、論理ボリュームの生成、ホスト20に接続される論理ボリュームの変更、ディスクドライブ210の増設や減設等を挙げることができる。ユーザは、管理サーバ30からSVP130を介して、記憶制御装置10の構成変更を指示することができる。なお、記憶制御装置10の構成を管理するための機能を、ホスト20が備える構成でもよい。この場合、ユーザは、ホスト20内の記憶制御装置管理機能を用いて、記憶制御装置10の構成変更を指示できる。
構成変更が指示されると(S15:YES)、S10に戻る。構成変更が指示されない場合(S15:NO)、コントローラ100は、S14に戻り、各機能によって仮想メモリ500を分割して使用させる。
図8は、各キュー510に仮想ページを割り得てるためのページ確保処理を示すフローチャートである。各プログラムプロダクトは、処理量の増大等に応じて、自分自身に割り当てられるべき仮想メモリ容量を要求する(S20)。
プログラムプロダクトから仮想ページの確保を要求された場合(S20:YES)、コントローラ100は、未使用領域内に仮想ページが残っているか否かを判定する(S21)。未使用領域内に仮想ページが残っている場合(S21:YES)、コントローラ100は、ページの確保を要求するプログラムプロダクトに、未使用領域内の仮想ページを割り当て(S22)、要求された量の仮想ページを確保できたか否かを判定する(S23)。即ち、コントローラ100は、プログラムプロダクトが希望する量の仮想メモリ量を割り当てることができたか否かを判定する(S23)。
プログラムプロダクトの要求するだけの仮想ページを、そのプログラムプロダクトに割り当てることができた場合(S23:YES)、本処理は終了する。プログラムプロダクトの要求する量の仮想ページをそのプログラムプロダクトに割り当てていない場合(S23:NO)、S21に戻る。従って、未使用記憶領域内の仮想ページ(未割り当ての仮想ページ)から優先して、プログラムプロダクトに割り当てられていく。
別のプログラムプロダクトが仮想ページの確保を要求した場合(S20:YES)、前記同様に、未使用領域内の仮想ページが優先して割り当てられる。そして、未使用領域の仮想ページが無くなった後で、さらに仮想ページの割り当てが要求された場合(S21:NO)、コントローラ100は、他のキュー510(即ち、他のプログラムプロダクト)に割り当てられている仮想ページの中に、使用されていない仮想ページが存在するか否かを判定する(S24)。使用されていない仮想ページとは、例えば、最近の所定期間内に使用されていない仮想ページである。
他のキュー510に割当済みの、最近使用されていない仮想ページを発見した場合(S24:YES)、コントローラ100は、その最近使用されていない仮想ページを現在のキュー510から解放して、仮想ページの追加を希望しているプログラムプロダクトのキュー510に登録する(S25)。
このように、本実施例では、未使用領域の仮想ページを使い切った後、他のプログラムプロダクトに割り当てられている仮想ページのうち、不要になったと考えられる仮想ページを使用する。
いずれかのプログラムプロダクトに既に割り当てられている仮想ページ群の中に、最近使用されていない仮想ページを発見できない場合(S24:NO)、コントローラ100は、S20で仮想ページの確保を要求するプログラムプロダクトに割り当てられている仮想ページの中から、最古の仮想ページを解放して、再びそのプログラムプロダクトに割り当てる(S26)。
このように、本実施例では、他のプログラムプロダクトに割り当てられている仮想ページの中から不要な仮想ページを奪って利用することができない場合、ページの確保を要求するプログラムプロダクトに割り当てられている仮想ページを再利用する。
従って、プログラムプロダクトに仮想ページを割り当てる場合の、仮想ページの選択順位は、第1順位として未使用領域内の仮想ページ、第2順位として他のプログラムプロダクトで不要となった仮想ページ、第3順位として自プログラムプロダクト内の最古の仮想ページとなっている。
なお、記憶制御装置10の起動時に実行されるプログラムプロダクトの数(即ち、キュー510の本数)等によっても相違するが、記憶制御装置10の起動時には、未使用領域内に多数の仮想ページが存在するため、各プログラムプロダクトには、未使用の仮想ページがそれぞれ割り当てられるであろう。そして、例えば、ホスト20からのアクセス頻度が増大したり、起動するプログラムプロダクトの数が増加したような場合には、第2順位の仮想ページが用いられる。さらに、プログラムプロダクトが仮想ページを要求する場合、第3順位の仮想ページが使用される。
図9は、各プログラムプロダクトに割当済みの仮想ページを未使用領域内に戻すための処理を示すフローチャートである。コントローラ100は、閾値以上の仮想ページが割り当てられているキュー510が存在するか否かを検査する(S30)。
閾値以上の仮想ページを有するキュー510が存在する場合(S30:YES)、コントローラ100は、その閾値以上の仮想ページを有するキュー510に登録されている各仮想ページの中から、所定時間以上アクセスされていない仮想ページを解放し、未使用領域に戻す(S31)。
閾値以上の仮想ページを有するキュー510が存在しない場合(S30:NO)、コントローラ100は、各キュー510に登録されている仮想ページの中から、所定時間以上アクセスされていない仮想ページを解放し、未使用領域に戻す(S32)。
コントローラ100は、所定周期が経過するまで待機し(S33)、所定周期が経過した場合(S33:YES)、S30に戻る。つまり、この処理は、所定周期毎に実行され、所定時間以上使用されていない仮想ページは、強制的に未使用領域に戻される。なお、S31における第1所定時間とS32における第2所定時間とは、同一の値に設定することもできるし、異なる値に設定することもできる。以上述べたページ確保処理、割当済みの仮想ページを未使用領域に戻す処理は、それぞれ独立して動作する。
本実施例は上述の構成を備えるため、複数のプログラムプロダクトが同時に動作している場合でも、あるプログラムプロダクトに割り当てられている仮想メモリ容量が、他のプログラムプロダクトに割り当てられている仮想メモリ容量に影響を及ぼすのを、抑制することができる。
従って、複数のマイクロプロセッサにより実行される複数のプログラムプロダクトが混在して同時に動作する場合でも、ヒットミスの発生を低減することができ、各プログラムプロダクトを円滑に動作させることができ、限られたサイズの仮想メモリを有効に利用することができる。
図10に基づいて本発明の第2実施例を説明する。本実施例は、第1実施例の変形例に該当する。図10は、本実施例による閾値決定処理のフローチャートである。本実施例では、ディスクドライブ210の記憶領域に記憶されているデータの少なくとも一部を、必要に応じて、仮想メモリ内の分割領域にコピーする。このように構成される本実施例も前記第1実施例と同様の効果を奏する。
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
1…記憶制御装置、2…ホスト、3…上位通信制御部、4…下位通信制御部、5…ハードディスクドライブ、6…共有メモリ、7…通信インターフェース部、8…マイクロプロセッサ部、8A…プログラムプロダクト、8B…キュー、8C…仮想メモリ、9…ローカルメモリ、10…記憶制御装置、20…ホスト、30…管理サーバ、40…外部記憶制御装置、41…コントローラ、42…ハードディスク搭載部、100…コントローラ、110…チャネルアダプタ、111…マイクロプロセッサ、112…周辺処理部、113…ローカルメモリ、113P…制御プログラム、113A…物理ページ、113B…通信用領域、114…チャネルプロトコル処理部、115…内部ネットワークインターフェース部、116,117…バス、120…ディスクアダプタ、140…キャッシュメモリ、150…共有メモリ、160…相互結合部、200…ハードディスク搭載部、210…ディスクドライブ、220…論理デバイス、500…仮想メモリ、501…仮想ページ、502…割当済みの領域、503…未使用領域、510…キュー、511…仮想ページ管理データ
Claims (16)
- 上位装置に記憶領域を提供する記憶制御装置であって、
前記上位装置との間の通信を制御するための上位通信制御部と、
記憶デバイスとの間の通信を制御するための下位通信制御部と、
前記上位通信制御部及び前記下位通信制御部によって共有される共有記憶領域と、を備えており、
前記上位通信部及び下位通信部は、
通信相手先と通信するための複数の通信インターフェース部と、
前記通信インターフェース部を用いて、前記通信相手先との間のデータ転送を制御するためのマイクロプロセッサ部と、
物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、
前記仮想メモリ制御部は、前記各マイクロプロセッサ部により実現される所定の複数の機能毎に仮想メモリ容量をそれぞれ割り当て、かつ、前記各所定の機能に割り当てられる仮想メモリ容量をそれぞれ可変に制御する、記憶制御装置。 - 前記仮想メモリには、前記各所定の機能毎に、前記共有記憶領域に記憶されている所定データの少なくとも一部がコピーされている請求項1に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能毎に予め用意された、仮想メモリ容量を管理するための容量管理キューを用いて、前記各所定の機能に割り当てる仮想メモリ容量をそれぞれ制御する、請求項1に記載の記憶制御装置。
- 前記仮想メモリ制御部は、さらに、未使用容量を管理するための未使用容量管理キューを用いて、前記仮想メモリの全容量のうち前記各所定の機能のいずれにも割り当てられていない未使用の容量を管理する、請求項3に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能にそれぞれ割り当てられる仮想メモリ容量の閾値をそれぞれ管理するための最小値管理テーブルを用いて、前記各所定の機能に少なくとも前記閾値以上の仮想メモリ容量をそれぞれ割り当てる、請求項1に記載の記憶制御装置。
- 前記閾値は、記憶制御装置の構成が変更された場合に自動でまたは手動により設定される、請求項5に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能に、予め設定される所定の単位で、少なくとも前記閾値以上の仮想メモリ容量をそれぞれ割り当てていく、請求項5に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記仮想メモリの全容量のうち未使用の容量を、予め設定される所定の単位で前記各所定の機能にそれぞれ割り当てていくことにより、前記各所定の機能に少なくとも前記閾値以上の仮想メモリ容量を割り当てる、請求項5に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能のうち前記閾値以上の仮想メモリ容量が割り当てられている所定の機能について、未使用の仮想メモリ容量が存在するか否かを検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を前記未使用の容量として管理する、請求項4に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を前記未使用の容量として管理する、請求項4に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能のうち前記閾値以上の仮想メモリ容量が割り当てられている所定の機能が存在するか否かを判定し、(1A)前記閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見した場合には、(1B)その発見された所定の機能に割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かを検査し、(1C)未使用の仮想メモリ容量が存在すると判定した場合は、その未使用の仮想メモリ容量を前記未使用の容量として管理し、(2A)前記閾値以上の仮想メモリ容量が割り当てられている所定の機能を発見できない場合には、(2B)前記各所定の機能にそれぞれ割り当てられている仮想メモリ容量内に未使用の仮想メモリ容量が存在するか否かをそれぞれ検査し、(2C)未使用の仮想メモリ容量が存在する場合には、その未使用の仮想メモリ容量を前記未使用の容量として管理する、請求項4に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能に割り当てられている仮想メモリ容量のうち未使用の仮想メモリ容量を、予め設定される所定の単位で、他の所定の機能に割り当て直す、請求項1に記載の記憶制御装置。
- 前記仮想メモリ制御部は、前記各所定の機能に割り当てられている仮想メモリ容量のうち最古の仮想メモリ容量を、予め設定される所定の単位で解放して再利用する、請求項1に記載の記憶制御装置。
- 前記共有記憶領域は、前記上位通信制御部及び前記下位通信制御部によって共有される制御メモリ、または、前記上位通信制御部及び前記下位通信制御部によって共有される、記憶デバイス内の記憶領域のいずれかである、請求項1に記載の記憶制御装置。
- 前記所定データには、前記上位装置に提供される論理ボリュームの構成を示すデータ、前記記憶制御装置の構成を示すデータ、前記上位装置から発行されるアクセス要求のパターンを示すデータ、前記上位装置に提供される論理ボリュームと前記上位装置との間の接続構成を示すデータ、のいずれか少なくとも二つ以上のデータが含まれている、請求項1に記載の記憶制御装置。
- 記憶制御装置内の仮想メモリを制御する方法であって、
前記記憶制御装置は、上位装置との間の通信を制御するための上位通信制御部と、記憶デバイスとの間の通信を制御するための下位通信制御部と、前記上位通信制御部及び前記下位通信制御部によって共有される共有記憶領域と、を備えており、
前記上位通信部及び下位通信部は、通信相手先と通信するための通信インターフェース部と、前記通信インターフェース部を用いて、前記通信相手先との間のデータ転送を制御するための複数のマイクロプロセッサ部と、物理メモリの記憶領域に対応付けられる仮想メモリを生成する仮想メモリ制御部と、をそれぞれ備えており、かつ、
前記記憶制御装置の構成が変更された場合に、前記各マイクロプロセッサ部によって実現される所定の複数の機能毎にそれぞれ割り当てられる仮想メモリ容量の閾値を設定する設定ステップと、
前記各所定の機能毎に、少なくとも前記閾値以上の仮想メモリ容量を可変に割り当てる割り当てステップと、
前記各所定の機能にそれぞれ割り当てられた仮想メモリ容量のうち未使用の仮想メモリ容量を未使用容量として解放する解放ステップと、
を含む記憶制御装置の仮想メモリ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007116125A JP2008276326A (ja) | 2007-04-25 | 2007-04-25 | 記憶制御装置及び記憶制御装置の仮想メモリ制御方法 |
US12/007,548 US7937553B2 (en) | 2007-04-25 | 2008-01-11 | Controlling virtual memory in a storage controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007116125A JP2008276326A (ja) | 2007-04-25 | 2007-04-25 | 記憶制御装置及び記憶制御装置の仮想メモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008276326A true JP2008276326A (ja) | 2008-11-13 |
Family
ID=39888411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007116125A Pending JP2008276326A (ja) | 2007-04-25 | 2007-04-25 | 記憶制御装置及び記憶制御装置の仮想メモリ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7937553B2 (ja) |
JP (1) | JP2008276326A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010106574A1 (ja) * | 2009-03-18 | 2010-09-23 | 株式会社日立製作所 | 記憶制御装置及び仮想ボリュームの制御方法 |
US8244955B2 (en) | 2009-03-17 | 2012-08-14 | Hitachi, Ltd. | Storage system and its controlling method |
WO2016067339A1 (ja) * | 2014-10-27 | 2016-05-06 | 株式会社日立製作所 | ストレージシステム、及び、記憶制御方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI390399B (zh) * | 2008-11-17 | 2013-03-21 | Prolific Technology Inc | 具有虛擬儲存裝置之外接裝置 |
CN102388357B (zh) * | 2011-09-23 | 2013-08-28 | 华为技术有限公司 | 访问存储设备的方法及系统 |
US9104590B2 (en) | 2012-07-20 | 2015-08-11 | Hitachi, Ltd. | Storage system including multiple storage apparatuses and pool virtualization method |
KR20150065435A (ko) * | 2013-12-05 | 2015-06-15 | 삼성전자주식회사 | 저장 장치 및 컴퓨팅 시스템 |
US10481932B2 (en) * | 2014-03-31 | 2019-11-19 | Vmware, Inc. | Auto-scaling virtual switches |
US9965334B1 (en) * | 2014-06-09 | 2018-05-08 | VCE IP Holding Company LLC | Systems and methods for virtual machine storage provisioning |
US10331600B1 (en) | 2016-03-31 | 2019-06-25 | EMC IP Holding Company LLC | Virtual I/O queuing |
US10007443B1 (en) * | 2016-03-31 | 2018-06-26 | EMC IP Holding Company LLC | Host to device I/O flow |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01283661A (ja) | 1988-05-11 | 1989-11-15 | Nec Corp | プロセッサ間共有仮想メモリ制御方式 |
US5212633A (en) * | 1989-08-18 | 1993-05-18 | Sharedata | System for transferring resident programs to virtual area and recalling for instant excution in memory limited DOS system using program control tables |
CA2083634C (en) * | 1991-12-30 | 1999-01-19 | Hung Ping Wong | Method and apparatus for mapping page table trees into virtual address space for address translation |
JP3604176B2 (ja) * | 1994-09-14 | 2004-12-22 | 株式会社東芝 | 仮想空間管理方法及び分散処理システム |
JP3512910B2 (ja) * | 1995-07-06 | 2004-03-31 | 株式会社東芝 | 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法 |
JPH09282233A (ja) | 1996-04-15 | 1997-10-31 | Sharp Corp | 仮想メモリ管理装置 |
JP3444346B2 (ja) * | 1999-01-04 | 2003-09-08 | 日本電気株式会社 | 仮想メモリ管理方式 |
JP2001167040A (ja) * | 1999-12-14 | 2001-06-22 | Hitachi Ltd | 記憶サブシステム及び記憶制御装置 |
US7107411B2 (en) * | 2003-12-16 | 2006-09-12 | International Business Machines Corporation | Apparatus method and system for fault tolerant virtual memory management |
-
2007
- 2007-04-25 JP JP2007116125A patent/JP2008276326A/ja active Pending
-
2008
- 2008-01-11 US US12/007,548 patent/US7937553B2/en not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8244955B2 (en) | 2009-03-17 | 2012-08-14 | Hitachi, Ltd. | Storage system and its controlling method |
WO2010106574A1 (ja) * | 2009-03-18 | 2010-09-23 | 株式会社日立製作所 | 記憶制御装置及び仮想ボリュームの制御方法 |
US8521987B2 (en) | 2009-03-18 | 2013-08-27 | Hitachi, Ltd. | Allocation and release of storage areas to virtual volumes |
JP5538362B2 (ja) * | 2009-03-18 | 2014-07-02 | 株式会社日立製作所 | 記憶制御装置及び仮想ボリュームの制御方法 |
US8812815B2 (en) | 2009-03-18 | 2014-08-19 | Hitachi, Ltd. | Allocation of storage areas to a virtual volume |
CN107247565A (zh) * | 2009-03-18 | 2017-10-13 | 株式会社日立制作所 | 存储控制装置以及虚拟卷的控制方法 |
WO2016067339A1 (ja) * | 2014-10-27 | 2016-05-06 | 株式会社日立製作所 | ストレージシステム、及び、記憶制御方法 |
JPWO2016067339A1 (ja) * | 2014-10-27 | 2017-06-29 | 株式会社日立製作所 | ストレージシステム、及び、記憶制御方法 |
US10162571B2 (en) | 2014-10-27 | 2018-12-25 | Hitachi, Ltd. | Systems and methods for managing public and private queues for a storage system |
Also Published As
Publication number | Publication date |
---|---|
US7937553B2 (en) | 2011-05-03 |
US20080270733A1 (en) | 2008-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008276326A (ja) | 記憶制御装置及び記憶制御装置の仮想メモリ制御方法 | |
JP5538362B2 (ja) | 記憶制御装置及び仮想ボリュームの制御方法 | |
US7797487B2 (en) | Command queue loading | |
US8065483B2 (en) | Storage apparatus and configuration setting method | |
JP2008134712A (ja) | ファイル共有システム、ファイル共有装置及びファイル共有用ボリュームの移行方法 | |
JP2009093571A (ja) | 記憶制御装置、記憶制御装置のデータアーカイブ方法及びストレージシステム | |
US7689797B2 (en) | Method for automatically configuring additional component to a storage subsystem | |
WO2011117925A1 (ja) | ストレージ装置及びその制御方法 | |
US8745326B2 (en) | Request priority seek manager | |
JP2007148812A (ja) | ストレージシステム及びその負荷分散方法 | |
US9003087B2 (en) | Compound storage system and storage control method | |
JP2006285808A (ja) | ストレージシステム | |
JP5214502B2 (ja) | ストレージ装置を管理する計算機及び方法 | |
JP2011070345A (ja) | 計算機システム、計算機システムの管理装置、計算機システムの管理方法 | |
JP2007072519A (ja) | ストレージシステム及びストレージシステムの制御方法 | |
JP2020533689A (ja) | クラウド・ベースのランクを使用するシン・プロビジョニング | |
US20080195832A1 (en) | Storage controller and storage system | |
US20160320990A1 (en) | Preferred zone scheduling | |
US11567883B2 (en) | Connection virtualization for data storage device arrays | |
JP2004355638A (ja) | 計算機システム及びそのデバイスの割り当て方法 | |
US7966448B2 (en) | Storage apparatus and data writing method | |
JP4616899B2 (ja) | 管理サーバ、プール増設方法および計算機システム | |
JP5597266B2 (ja) | ストレージシステム | |
US11507321B1 (en) | Managing queue limit overflow for data storage device arrays | |
US9098212B2 (en) | Computer system with storage apparatuses including physical and virtual logical storage areas and control method of the computer system |