JP2013506886A - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP2013506886A
JP2013506886A JP2012517600A JP2012517600A JP2013506886A JP 2013506886 A JP2013506886 A JP 2013506886A JP 2012517600 A JP2012517600 A JP 2012517600A JP 2012517600 A JP2012517600 A JP 2012517600A JP 2013506886 A JP2013506886 A JP 2013506886A
Authority
JP
Japan
Prior art keywords
storage
virtual
real
storage area
pdev
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.)
Granted
Application number
JP2012517600A
Other languages
English (en)
Other versions
JP5444464B2 (ja
Inventor
太郎 石崎
勝喜 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2013506886A publication Critical patent/JP2013506886A/ja
Application granted granted Critical
Publication of JP5444464B2 publication Critical patent/JP5444464B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0608Saving storage space on 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/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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/103Hybrid, i.e. RAID systems with parity comprising a mix of RAID types

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)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

複数の記憶装置でRAIDグループを構成せず、RAIDグループ内の論理ボリュームを仮想ボリュームに提供する代わりに、記憶装置の記憶領域を仮想ボリュームに直接提供する。すなわち、ストレージシステムは、仮想記憶領域に書き込み要求を受信したとき、まず、当該仮想記憶領域が含まれる仮想ボリュームに設定されたRAIDレベルとデータの冗長構成(データの分割数と生成するパリティの数)を特定する。特定されたRAIDレベルと冗長構成に応じた数の記憶装置を、当該仮想記憶領域に対して選択する。選択された記憶装置のそれぞれから、いずれの仮想記憶領域にも割当てられていない記憶領域を選択し、当該仮想記憶領域に割当てる。この割当てられた記憶領域に対して、データを分割し、パリティと共に書き込む。
【選択図】図2

Description

本発明は、Dynamic Provisioning(Thin Provisioningとも呼ばれる)の技術が適用される記憶制御に関する。
現在、企業等が扱うデータを安全に格納するために、RAID(Redundant Array of Independent (or Inexpensive) Disks)を構成するストレージシステムが広く用いられている。さらに、ストレージシステムの容量の利用効率向上のために、シン・プロビジョニングの導入がすすんでいる。
RAIDでは、複数の記憶装置からRAIDグループを構成し、RAIDグループ上に論理ボリュームを構成している。シン・プロビジョニングによらないストレージシステムでは、ホストに対して、論理ボリュームが提供され、論理ボリューム作成時から、当該論理ボリュームに論理ボリュームの全記憶容量に等しい容量の記憶装置の記憶領域が割当てられる。これに対し、ホストに対して仮想ボリュームが提供されるシン・プロビジョニングでは、当該仮想ボリューム内の仮想記憶領域には、当初仮想記憶領域に対応する記憶装置の記憶領域は割当てられておらず、仮想記憶領域に書き込み要求が来た際に、仮想記憶領域に対してだけ論理ボリュームに割当てられている記憶装置の記憶領域を割当てている。このため、システム導入時には当面必要な容量の記憶装置のみを備え、必要に応じて記憶装置を増設していくことが容易にできる。
シン・プロビジョニングにおける技術として、特許文献1では、シン・プロビジョニングを適用したストレージシステムにおいて、複数の記憶装置上のデータの再配置を論理ボリューム単位で行う方法が提案されている。
また、特許文献2では、記憶装置を増設後、データの冗長構成を変更することにより、記憶装置を記憶装置単位で増設する方法が提案されている。
特開2008−234158号公報 特開2009−230352号公報
上記特許文献1では、仮想ボリュームに割当てる前から複数の記憶装置でRAIDグループを構成し、RAIDグループ内の論理ボリューム単位でデータの管理が行われている。たとえば、論理ボリューム内のデータを当該RAIDグループの複数の記憶装置に跨って格納することにより、データの冗長性を保っている。そのため、記憶装置の増設は、RAIDグループを構成するために必要な数の記憶装置をひとまとまりとして、1回の増設で複数の記憶装置の増設を行わなければならない。
一方、上記特許文献2の方法でも、上記特許文献1と同様に、仮想ページへの割当て前に、複数の記憶装置でRAIDグループを構成し、その中の論理ボリュームを仮想ボリュームに提供することが前提である。そのことから、単一の記憶装置を増設後、RAIDグループの再構成が必要となり、データの冗長構成を再編する必要が生じる。
本発明の1つの目的は、シン・プロビジョニングを適用したストレージシステムにおいて、記憶装置増設の自由度を向上させ、記憶装置増設時のコストを低減する方法を提供することである。
また、本発明の他の目的は、シン・プロビジョニングを適用したストレージシステムにおいて、記憶装置の増設が業務性能へ与える影響を押さえることである。
さらに、本発明の他の目的は、記憶装置の障害発生に備えた特定の記憶装置であるスペアディスクを必要としないストレージシステムを提供することである。
シン・プロビジョニング機能を有するストレージシステムにおいて、複数の記憶装置でRAIDグループを構成せず、RAIDグループ内の論理ボリュームを仮想ボリュームに提供する代わりに、記憶装置の記憶領域を仮想ボリュームに直接提供する。すなわち、ストレージシステムは、仮想記憶領域に書き込み要求を受領したとき、まず、当該仮想記憶領域が含まれる仮想ボリュームに設定されたRAIDレベルとデータの冗長構成(データの分割数と生成するパリティの数)を特定する。特定されたRAIDレベルと冗長構成に応じた数の記憶装置を、当該仮想記憶領域に対して選択する。選択された記憶装置のそれぞれから、いずれの仮想記憶領域にも割当てられていない記憶領域を選択し、当該仮想記憶領域に割当てる。この割当てられた記憶領域に対して、データを分割し、パリティと共に書き込む。
本発明の一実施形態によれば、記憶装置の増設コストを最小限に抑えながら、記憶容量を拡張することができる。
本発明の一実施形態に係るストレージシステムの構成を示す。 本実施形態に係る動的容量拡張の概要を示す。 DPプールの第1の構成例を示す。 DPプールの第2の構成例を示す。 メモリ123に記憶されるコンピュータプログラム及び情報を示す。 DP共通仕様テーブル503の構成を示す。 プール管理テーブル505の構成を示す。 仮想LU管理テーブル507の構成を示す。 PDEV管理テーブル509の構成を示す。 実ページ管理テーブル511の構成を示す。 マッピング管理テーブル513の構成を示す。 実アクセス状況テーブル515の構成を示す。 仮想アクセス状況テーブル517の構成を示す。 DPプールの生成の流れを示すフローチャートである。 仮想LU201の生成の流れを示すフローチャートである。 仮想ページに対するライトの流れの概要を示す。 仮想ページに対するライトの流れを示すフローチャートである。 仮想ページに対するリードの流れを示すフローチャートである。 複数のRAIDタイプに従って格納されたデータが一つのDPプールに混在している様子を示す。 一つの仮想ページに割り当てられるPDEVがPDEV番号に依存せずに選択された場合のデータユニット(データ要素及びパリティの総称)の配置の一例を示す。 PDEVの増設の際に行われる処理のフローチャートである。 再配置処理のフローチャートを示す。 PDEVが増設された場合に行われる再配置の一例を示す。 PDEVの減設の際に行われる処理のフローチャートである。 アクセス頻度に基づく再配置の一例を示す。 PDEVに障害が発生した場合のリストア処理の概要を示す。 リストア優先タイプのリストア処理のフローチャートである。 交換優先タイプのリストア処理のフローチャートである。
図1は、本発明の一実施形態に係るストレージシステムの構成を示す。
一以上(例えば二つ)のホスト装置(以下、ホスト)101がストレージシステム103に接続されている。ホスト101とストレージシステム103との間の通信は、例えば、ファイバチャネル(FC)又はiSCSI(SCSIはSmall Computer System Interfaceの略)に従うプロトコルで行われる。
ストレージシステム103は、仮想LU(LUはLogical Unitの略)を管理する。仮想LUとは、Dynamic Provisioning(Thin Provisioningとも呼ばれる)の技術に従う仮想的なLUである。仮想LUは、複数の仮想ページ(仮想的な記憶領域)を有する。各仮想ページには、一以上のアドレス(例えばLBA(Logical Block Address))が属する。
ホスト101は、仮想LUに対するI/O(Input/Output)を行うためのI/Oコマンドを送信する。I/Oコマンドは、I/O先情報を有する。I/O先情報は、仮想LUのLUN(Logical Unit Number)と、仮想LUの仮想ページのアドレスとを含む。ホスト101は、一般的には計算機であるが、計算機に代えて、別のストレージシステムであってもよい。
ストレージシステム103は、複数の物理記憶デバイス(PDEV)117と、複数のPDEV117に接続された記憶制御装置(以下、「DKC」と表記する)111とを有する。DKC111は、多重化(例えば二重化)されている。複数のPDEV117は、同種のPDEVで構成されていても良いし、複数種類のPDEVが混在していても良い。PDEVの種類としては、例えば、HDD(Hard Disk Drive)とSSD(Solid State Drive)がある。
DKC111は、ホスト101からI/Oコマンド(ライトコマンド又はリードコマンド)を受信し処理する。DKCは、例えば、ライトコマンドを受信した場合、受信したライトコマンドから特定される一以上のライト先の仮想ページの各々に、複数の実ページ(実体的な記憶領域)を割り当てる。以下、仮想ページに実ページを割り当てることを、便宜上、「動的容量拡張」と言う。
DKC111に、一以上のバックエンド接続デバイス113を介して、複数のPDEV117が接続されている。バックエンド接続デバイス113は、多重化(例えば二重化)されている。バックエンド接続デバイス113としては、例えば、FC−AL(Fibre Channel-Arbitrated Loop)或いはSAS(Serial Attached SCSI)エクスパンダなどを採用することができる。一つのバックエンド接続デバイス113に、複数のPDEV117のうちの二以上のPDEV117が接続される。
少なくとも一つのDKC111に、管理装置105が接続されている。管理装置105は、例えばLAN(Local Area Network)を通じて、少なくとも一つのDKC111に接続されている。管理装置105は、例えば計算機であり、LUに関する各種設定及び参照を行うことができる。
各DKC111は、FE−IF(フロントエンドインタフェース)121と、BE−IF(バックエンドインタフェース)127と、コントローラとを有する。コントローラは、例えば、転送回路129と、メモリ123と、MP(マイクロプロセッサ)125とを有する。コントローラは、それらの要素に加えて、例えば、MP125に代えてパリティを生成するためのハードウェア回路を有しても良い。
転送回路129には、FE−IF121、メモリ123、MP125及びBE−IF127が接続されている。転送回路129は、それらの要素121、123、125及び127間でやり取りされるデータ或いはコマンドを中継する。
FE−IF121は、ホスト101に接続されるインタフェース装置である。FE−IF121は、複数の通信ポートを有しており、各通信ポートに、ホスト101が接続される。FE−IFは、ホスト101から、I/Oコマンドを受信し、受信したI/Oコマンドを、MP125に転送する。
BE−IF127は、PDEV117に接続されるインタフェース装置である。BE−IF127は、複数の通信ポートを有しており、各通信ポートに、バックエンド接続デバイス113を通じてPDEV117が接続される。
メモリ123は、一以上のメモリで構成されている。メモリ123は、情報(例えばテーブル)及びコンピュータプログラムを記憶する。メモリ123は、キャッシュ領域を有する。キャッシュ領域には、ホスト101とPDEV117との間でやり取りされるデータが一時格納される。
MP125は、ホスト101からのI/Oコマンドを処理する。また、MP125は、管理装置105からの要求に応答して、情報(例えばLUに関する情報)をメモリ123に設定したり、メモリ123に格納されている情報(例えばLUに関する情報)を管理装置105に提供したりする。
図2は、本実施形態に係る動的容量拡張の概要を示す。
仮想LU201とDP(Dynamic Provisioning)プール203がDKC111によって管理されている。一つのDPプール203には、仮想LU201が関連付けられ、DPプール203からその仮想LU201に実ページが割り当てられる。
仮想LU201は、複数の仮想ページで構成されており、ホスト101から認識される。仮想LU201について、RAIDレベルが定義される。仮想LU201のRAIDレベル、コンビネーション及び容量などを、例えば管理装置105(図1参照)から設定可能である。ここで、RAIDレベルとは、RAIDの技術をその機能によって、分類したものであり、RAID5、RAID6のように表される。たとえば、RAID5では、書き込み要求の来たデータをn個(nは自然数)に分割し、当該データから1つのパリティデータを作成して、(n+1)台の記憶装置に分散して書き込む。また、RAID6では、分割したn個のデータに対し、2種類のパリティデータを作成し、(n+2)台の記憶装置に分散して書き込まれる。また、コンビネーションとは、RAIDを構成するために任意に定められたデータ要素への分割数nと、RAIDレベルによって定められるパリティの数m(mは0以上の整数)との組み合わせであり、nD+mP(or D)と表される。つまり、仮想ページに書き込まれたデータは、n個のデータ要素に分割され、m個のパリティが生成され、(n+m)台の記憶装置に分散して書き込まれる。
DPプール203は、ストレージシステム103が有する複数のPDEV117のうちの一部又は全部のPDEV117で構成されている。DPプール203は、多数の実ページで構成されている。
ここで、本実施形態の一つの特徴として、DPプール203にはRAIDの定義が無く、実ページが、複数のPDEVで構成されるRAIDグループからではなく、個々のPDEVから提供されることがある。
一般に、Dynamic Provisioning(Thin Provisioning)の技術によれば、仮想LUに割り当てられる実ページは、予め定義されたRAIDグループの記憶空間を基に形成されている。具体的には、例えば、プールは、一又は複数のRAIDグループで構成されている。各RAIDグループは、RAIDレベル及びコンビネーションに基づき二以上のPDEVで構成されている。実ページは、一つのRAIDグループに基づいて構成されており、一つの実ページが、RAIDグループを構成する二以上のPDEVに予め跨っている。このため、仮想ページに割り当てられた実ページに対するライトでは、ライト対象のデータが、その実ページを提供するRAIDグループのRAIDレベル及びコンビネーションに基づいて書き込まれる。
それに対し、本実施形態によれば、RAIDグループの定義は無く、DPプール203を構成する個々のPDEV117は、RAIDグループを構成するメンバではない。実ページが、個々のPDEVから提供される。また、RAIDレベル及びコンビネーションは、仮想LU201について設定されている。仮想LU201の仮想ページに、その仮想LU201のRAIDレベル及びコンビネーションに基づいて決定された数の実ページがDPプール203から割り当てられ、その仮想ページに対するライトの対象のデータが、割り当てられた複数の実ページに書き込まれる。
RAID技術によれば、ライト対象のデータを構成する複数のデータ要素のうちの二以上のデータ要素(或いは、ライト対象のデータ及びそのデータの複製)が、一つのPDEV117に格納されることはない。このため、本実施形態では、一つのPDEV117から二以上の実ページが同一の仮想ページに割り当てられることはない。つまり、一つの仮想ページには、それぞれ異なるPDEV117から実ページが割り当てられる。従って、DPプールに属する複数のPDEVの使用率(PDEVの容量に対する割当て済み実ページの総容量の比率)が均一になるように、仮想ページに複数の実ページが割り当てられることが望ましい。なぜなら、例えば一つのPDEVにたくさんの空きの実ページがあっても、その一つのPDEVから複数の実ページを一つの仮想ページに割り当てることができず、故に、結果として、空きの実ページが余ってしまう可能性があるからである。また、このとき、複数のPDEVの使用率で無く複数のPDEVの空き容量が均一になるように実ページが割当てても良い。
仮想LU201及びDPプール203は、一つであっても複数であっても良い。図2の例によれば、仮想LU201として、二つの仮想LU#1及び#2があり、DPプール203として、一つのDPプール#1があり、DPプール#1に仮想LU#1及び#2が関連付けられているとする。また、仮想LU#1のRAIDレベル及びコンビネーションがRAID5(2D+1P)であり、仮想LU#2のRAIDレベル及びコンビネーションがRAID6(4D+2P)であるとする。また、DPプール#1が、六つのPDEV#01〜#06で構成されているとする。
仮想LU#1のRAIDレベル及びコンビネーション:RAID5(2D+1P)によれば、仮想LU#1の仮想ページV11に対するライトの対象となるデータは、DKC111によって、二つのデータ要素に分割され、且つ、一つのパリティが生成される。そのため、仮想ページV11には、三つのPDEV#01〜#03から三つの実ページR11、R22及びR31が割り当てられる。DKC111によって、仮想ページV11と実ページR11、R22及びR31との対応関係が管理される。そして、三つの実ページR11、R22及びR31のうちの二つに、二つのデータ要素がそれぞれ書き込まれ、残りの一つに、パリティが書き込まれる。
また、仮想LU#2のRAIDレベル及びコンビネーション:RAID6(4D+2P)によれば、仮想LU#2の仮想ページV21に対するライトの対象となるデータは、四つのデータ要素に分割され、且つ、二つのパリティが生成される。そのため、仮想ページV21には、六つのPDEV#01〜#06から六つの実ページR18、R23、R33、R41、R51及びR61が割り当てられる。DKC111によって、仮想ページV21と実ページR18、R23、R33、R41、R51及びR61との対応関係が管理される。そして、六つの実ページR18、R23、R33、R41、R51及びR61のうちの四つに、四つのデータ要素がそれぞれ書き込まれ、残りの二つに、二つのパリティがそれぞれ書き込まれる。
一つのDPプール203は、一以上の属性が同じ物理記憶デバイス(PDEV)で構成されていても良いし、属性が異なるPDEVで構成されていても良い。属性としては、例えば、PDEVのI/O性能や信頼性(例えばMTBF(Mean Time Between Failures))がある。PDEVのI/O性能としては、例えば、PDEVそれ自体の種類(例えば、HDD、SSDなど)、インタフェースの種類(例えば、FC(Fibre Channel)、SATA(Serial ATA)、SAS(Serial Attached SCSI))、ディスクの回転速度などがある。
図3に示すように、一つのDPプール203は、異なる種類の属性を有するPDEV(図3の例ではHDDとSSD)で構成されていても良い。仮想ページは、異なる属性を有する複数の実ページから構成された場合、各PDEVからデータを書き込みや読み出しを行う際、I/O性能の低いPDEVに合わせられて性能が低下するため各仮想ページは同一の属性を有するPDEVから構成されることが望ましい。しかし、各仮想LUは、1つのプールに所属している。そのため、同一プール内に属性が異なるPDEVを混在させることで、アクセス頻度等に応じて、同一仮想LUの仮想ページごとに属性が異なるPDEV内の実ページを割当てることができる。また、同一仮想ページに対しては同一の属性を有するPDEVから実ページを割当てた場合も、ある属性のPDEVの容量が不足したとき、属性が異なるPDEVから実ページを割当てることができる。そして、当該容量不足の属性のPDEVを増設後に、異なる属性のPDEVに割当てたデータ要素を増設したPDEVに割当てることができる。この種の構成のDPプール203によれば、ディスクの容量を効率的に消費することができる。
また、図4に示すように、一つのDPプール203は、複数の属性のうちの所定の一種類以上の属性が同じPDEVで構成されても良い。図4の例によれば、PDEVの性能、PDEVのインタフェース、及び、PDEVそれ自体の種類の全てが同じであるPDEVで一つのDPプール203が構成されている。この種の構成のDPプール203によれば、仮想LU201に対するアクセスについて所望のI/O性能を見込むことが出来る。例えば、DPプール#Eに関連付けられていた仮想LUのI/O性能を上げることが望ましい場合には、その仮想LUを、DPプール#Eを構成するPDEVよりもI/O性能の高いPDEVで構成されているDPプール(例えばDPプール#D)に関連付けるといったことが行われても良い。なお、仮想LUが関連付けられるDPプールが別のDPプールに変更される場合、変更元のDPプールから変更先のDPプールにデータ要素及びパリティが移動される。
DPプール203に関する情報や、仮想ページと複数の実ページとの対応関係を表す情報などが、DKC111によって管理される。それらの情報は、例えば、DKC111のメモリ123(例えばキャッシュ領域)に格納される。
図5は、メモリ123に記憶されるコンピュータプログラム及び情報を示す。
メモリ123は、制御プログラム501を記憶する。制御プログラム501は、MP125で実行される。以下の説明においてプログラム501によって行われる処理は、実際にはMP125によって行われる。
メモリ123は、DP共通仕様テーブル503、プール管理テーブル505、仮想LU管理テーブル507、PDEV管理テーブル509、実ページ管理テーブル511、マッピング管理テーブル513、実アクセス状況テーブル515及び仮想アクセス状況テーブル517を記憶する。実ページ管理テーブル511は、DPプール203毎に存在する。これらのテーブルのうちの少なくとも一つのテーブルにおける情報は、テーブル以外の構造で管理されても良い。
図6は、DP共通仕様テーブル503の構成を示す。
DP共通仕様テーブル503は、DPプールの仕様に関する共通の情報を有する。具体的には、例えば、テーブル503は、DPプールの仕様に関する項目毎に、項目200と値201とを有する。項目200は、項目の名称であり、値201は、その項目についての値である。図6の例によれば、作成可能最大プール数(ストレージシステム103に作成可能なDPプール203の最大数)の50であり、実ページ容量が32KB(キロバイト)である。
なお、本実施形態では、全てのDPプールにおいて、実ページの容量は同じである。そのため、実ページの容量、RAIDレベル及びコンビネーションを基に、仮想LU201を構成する仮想ページの容量が決定される。コンビネーションがnD+mPのとき、仮想ページには、実ページ容量のn倍の容量のデータを記憶でき、(n+m)倍の容量が割当てられる。例えば、RAID6(4D+2P)の仮想LU201の仮想ページの容量は、RAID5(2D+1P)の仮想LU201の仮想ページの容量の2倍である。なぜなら、前述の通り、実ページの容量は同じであり、RAID6(4D+2P)の仮想LU201の仮想ページに割り当てられる実ページの数が、RAID5(2D+1P)の仮想LU201の仮想ページに割り当てられる実ページの数の2倍だからである。具体的には、RAID6(4D+2P)の仮想LU201の仮想ページには、六つの実ページが割り当てられ、RAID5(2D+1P)の仮想LU201の仮想ページには、三つの実ページが割り当られる。
図7は、プール管理テーブル505の構成を示す。
プール管理テーブル505は、DPプール203に関する情報を有する。具体的には、例えば、テーブル505は、DPプール203毎に、プール番号210、PDEV番号リスト211、実割当容量212、使用容量213及び先頭PDEV番号214を有する。
プール番号210は、DPプール203の番号である。
PDEV番号リスト211は、DPプール203を構成するPDEVの番号のリストである。
実割当容量212は、DPプール203を構成するPDEVの総容量である。従って、DPプール203に新たにPDEVが追加される場合、実割当容量212は、追加されたPDEVの容量分増えることになり、一方、DPプール203からPDEVが減設された場合、実割当容量212は、減設されたPDEVの容量分減ることになる。
使用容量213は、DPプール203から割り当てられている実ページの総容量である。
先頭PDEV番号214は、実ページの次の割当元となるPDEVの番号である。例えば、本実施形態では、仮想ページに割り当てられる二以上の実ページを提供する二以上のPDEVは、PDEV番号の順である。具体的には、例えば、DPプールがPDEV#01〜#04の四つのPDEVで構成されていて、仮想LUのRAIDレベル及びコンビネーションがRAID5(2D+1P)であり、且つ、その仮想LUにおける未割当ての仮想ページ(実ページが割り当てられていない仮想ページ)に初めてライトが発生する場合、先頭PDEV番号214は「1」であり、それ故、ライト先の仮想ページには、PDEV#01、#02及び#03からそれぞれ実ページが割り当てられる。その後、先頭PDEV番号214が「4」に更新される。そして、その仮想LUにおける未割当ての仮想ページに二回目にライトが発生する場合、先頭PDEV番号214が「4」であるため、ライト先の仮想ページには、PDEV#04、#01及び#02から、それぞれ実ページが割り当てられる。その後、先頭PDEV番号214が「3」に更新される。このように、本実施形態では、仮想ページに割り当てられる二以上の実ページの提供元の二以上のPDEVは、PDEV番号の順序を基に決定される。なお、DPプールを構成する複数のPDEVの番号は、連続でも非連続でもよい。また、仮想ページに割り当てられる二以上の実ページの提供元の二以上のPDEVは、番号の小さい順に代えて、番号の大きい順でも良い。PDEVの番号順に、提供元の二以上のPDEVが決定されるので、DPプール内のPDEVが均等に使用される。
図8は、仮想LU管理テーブル507の構成を示す。
仮想LU管理テーブル507は、仮想LU201に関する情報を有する。仮想LUの設定及び確認を行うことに使用できる。具体的には、例えば、テーブル507は、仮想LU201毎に、LUN220、所属プール番号221、RAIDレベル222、コンビネーション223及び容量224を有する。
LUN220は、仮想LU201のLUNである。
所属プール番号221は、仮想LU201が所属するDPプール(仮想LU201が関連付けられているDPプール)203の番号である。
RAIDレベル222は、仮想LU201のRAIDレベルである。
コンビネーション223は、仮想LU201のコンビネーションである。
容量224は、仮想LU201の容量である。
図9は、DPプール作成等に使用するPDEV管理テーブル509の構成を示す。
PDEV管理テーブル509は、PDEV117に関する情報を有する。具体的には、例えば、テーブル509は、PDEV117毎に、PDEV番号230、所属プール番号231、IF種別232、PDEV性能233、容量234、空き容量235及びデバイス種別236を有する。
PDEV番号230は、PDEV117の番号である。
所属プール番号231は、PDEV117が所属するDPプール(PDEV117が構成要素の一つとなっているDPプール)203の番号である。「null」は、いずれのプールにも割当てられていないことを示す。
IF種別232は、PDEV117のインタフェースの種別(例えば、SAS、SATAなど)である。
PDEV性能233は、PDEV117のデバイス種別236に応じた表記となる。例えば、PDEV117のデバイス種別236がHDDであれば、PDEV性能233は、ディスクの回転速度(例えば7200回転/秒)等で表される。
容量234は、PDEV117の容量、言い換えれば、PDEV117が提供する実ページの総容量である。
空き容量235は、PDEV117が提供する実ページのうち仮想ページに割り当てられておらず、仮想ページに割当可能な実ページの総容量である。
デバイス種別236は、PDEV117それ自体の種別である。デバイス種別236としては、例えば、HDD、SSDがある。
図10は、実ページに対する仮想ページの関係を示す実ページ管理テーブル511の構成を示す。実ページ管理テーブル511は仮想ページに対して、実ページを割当てる際等に使用する。
実ページ管理テーブル511は、DPプール毎に存在する。実ページ管理テーブル511は、そのテーブル511に対応したDPプール内の実ページに関する情報を有する。具体的には、例えば、テーブル511は、実ページ毎に、PDEV番号240、実ページ番号241、LUN242、仮想ページ番号243及びアクセスカウンタ244を有する。
PDEV番号240は、実ページを提供するPDEV117の番号である。
実ページ番号241は、実ページの番号である。
LUN242は、実ページの割当先の仮想ページを有する仮想LU201のLUNである。
仮想ページ番号243は、実ページの割当先の仮想ページの番号である。
アクセスカウンタ244は、実ページに対して行われたI/O(アクセス)の回数である。なお、本実施形態のように代替情報として例えば実アクセス状況テーブル515があれば、アクセスカウンタ244は無くても良い。
図11は、ライトコマンドを受領した仮想ページに実ページが割当てられているか判定する際等に使用するマッピング管理テーブル513の構成を示す。
マッピング管理テーブル513は、仮想ページと実ページとの対応関係を表す。具体的には、例えば、テーブル513は、仮想ページ毎に、LUN250、仮想ページ番号251、実ページ識別情報252及びアクセスカウンタ253を有する。
LUN250は、仮想ページを有する仮想LU201のLUNである。
仮想ページ番号251は、仮想ページの番号である。
実ページ識別情報252は、仮想ページに割り当てられている実ページの識別情報、例えば、実ページの番号と、その実ページを有するPDEV117の番号との組合せである。
アクセスカウンタ253は、仮想ページに対して行われたI/O(アクセス)の回数である。なお、本実施形態のように代替情報として例えば仮想アクセス状況テーブル517があれば、アクセスカウンタ253は無くても良い。
図12は、再配置等をする記憶装置を決定する際等に参照する実アクセス状況テーブル515の構成を示す。
実アクセス状況テーブル515は、一以上のDPプール203に共通であり、実ページ毎のアクセス状況を表す情報を有する。具体的には、例えば、テーブル515は、実ページ毎にセルを有し、セルが、実ページに対するアクセスの頻度を表す情報(以下、実アクセス頻度情報)を有する。実アクセス頻度情報は、例えば、その情報に対応する実ページの使用の有無を表す情報を含み、ライトの頻度とリードの頻度とを別々に表す。ライト頻度は、単位期間当たりのライトの回数、具体的には、例えば、1分、1時間、1日及び1週間毎のライトの回数である。リード頻度は、単位期間当たりのリードの回数、具体的には、例えば、1分、1時間、1日及び1週間毎のリードの回数である。
いずれかのDPプール203にPDEV117が一つ追加された場合、その追加されたPDEV117に対応するレコードがテーブル515に追加される。また、いずれかのDPプール203からPDEV117が一つ減らされた場合、その減らされたPDEV117に対応するレコードがテーブル515から除去される。
図13は、再配置等をする仮想ページを決定する際等に参照する仮想アクセス状況テーブル517の構成を示す。
仮想アクセス状況テーブル517は、仮想ページ毎のアクセス状況を表す情報を有する。具体的には、例えば、テーブル517は、仮想ページ毎にセルを有し、セルが、仮想ページに対するアクセスの頻度を表す情報(以下、仮想アクセス頻度情報)を有する。仮想アクセス頻度情報は、例えば、その情報に対応する仮想ページの使用の有無を表す情報を含み、ライトの頻度とリードの頻度との両方を表す。ライト頻度は、単位期間当たりのライトの回数、具体的には、例えば、1分、1時間、1日及び1週間毎のライトの回数である。リード頻度は、単位期間当たりのリードの回数、具体的には、例えば、1分、1時間、1日及び1週間毎のリードの回数である。
いずれかのDPプール203に仮想LU201が一つ関連付けられた場合、その関連付けられた仮想LU201に対応するレコードがテーブル517に追加される。また、いずれかのDPプール203から仮想LU201が一つ外された場合、その外された仮想LU201に対応するレコードがテーブル517から除去される。
なお、仮想アクセス頻度情報及び前述の実アクセス頻度情報のうちの少なくとも一方は、ライト頻度とリード頻度とを別々に表すことに代えて、ライトかリードに関わらずアクセスの頻度を表しても良いし、ライト頻度のみを表しても良いし、リード頻度のみを表しても良い。
また、仮想アクセス頻度情報及び実アクセス頻度情報のうちの少なくとも一方が、仮想領域或いは実ページにアクセスが発生する都度に更新されてもよいし、所定のスケジュールで(例えば定期的に)更新されてもよい。例えば、制御プログラム501が、処理されたコマンド履歴をメモリ123で管理してよい。コマンド履歴は、処理されたI/Oコマンド毎に、例えば、種別、日時(例えば、受信日時、処理完了日時、或いは、I/Oコマンドが有するタイムスタンプが表す日時)、アクセス先の仮想ページの番号、アクセス先の実ページの識別情報(例えばPDEV番号と実ページ番号との組合せ)を有してよい。制御プログラム501は、I/Oコマンドを処理した場合、そのI/Oコマンドに関する種別、日時、アクセス先の仮想ページの番号、及びアクセス先の実ページの識別情報を、コマンド履歴に追加してよい。制御プログラム501は、そのコマンド履歴を基に、仮想アクセス頻度情報及び実アクセス頻度情報を更新してよい。
図14は、DPプールの生成の流れを示すフローチャートである。
(S10)
制御プログラム501が、管理装置105から、プール生成指示を受ける。プール生成指示は、パラメータとして、例えば、以下の(p1)〜(p3)のうちの、少なくとも(p1)がある。(p1)は、ユーザによる入力が必須のパラメータであり、(p2)及び(p3)は、ユーザが任意に入力するパラメータである。
(p1)ユーザ(例えば管理者)が要求する容量(ユーザ要求プール容量)。ユーザ要求プール容量は、実割当容量212とは異なる。なぜなら、実割当容量212は、DPプールに所属するPDEVの総容量であるからである。
(p2)PDEV117の属性を表す情報(PDEV情報)。例えば、デバイス種別、IF種別及びPDEV性能。
(p3)プールに付与する番号(プール番号)。
(S11)
制御プログラム501が、プール管理テーブル505から特定されるDPプール203の数が、作成可能最大プール数の値201より小さいか否かを判断する。この判断の結果が肯定的の場合、S12が行われる。この判断の結果が否定的の場合、制御プログラム501は、エラーを表す情報を管理装置105に送信し、管理装置105が、エラーを表示する(S16)。
(S12)
制御プログラム501が、ユーザ要求プール容量以上の総容量となるようにPDEV117を選択する。具体的には、例えば、制御プログラム501は、下記の処理を行う。
(S12−1): 制御プログラム501は、PDEV管理テーブル509を参照し、所属プール番号213が「null」になっているPDEV(いずれのDPプール203にも所属していないPDEV)を特定する。特定されたPDEVが、作成されるDPプールの構成要素の候補である。なお、プール生成指示のパラメータとして、PDEV情報があれば、所属プール番号213が「null」であり、且つ、PDEV情報に適合するPDEVが、DPプールの構成要素の候補として特定される。以下、この(S12−1)で特定されたPDEVを、「候補PDEV」と言う。
(S12−2): 制御プログラム501は、複数の候補PDEVから、ユーザ要求プール容量以上の総容量となるようにPDEVを選択する。この結果、選択されたPDEVの総容量(DPプールの実割当容量)は、ユーザ要求プール容量と同じか又はそれより大きい。なお、PDEVの選択のためにRAIDレベル及びコンビネーションが考慮されて良い。例えば、ユーザ要求プール容量が1TB(テラバイト)の場合、制御プログラム501は、選択されたPDEVの総容量がユーザ要求プール容量の1.3倍(1.3TB)となるように、複数の候補PDEVからPDEVを選択して良い。作成されるDPプールに、異なるRAIDレベル及びコンビネーションの仮想LUが関連付けられる場合には、パリティ比率が最も高いRAIDレベル及びコンビネーションのそのパリティ比率を基に、PDEVが選択されて良い。また、DPプールに関連付けられる仮想LUのRAIDレベル及びコンビネーションが決められている場合には、そのRAIDレベル及びコンビネーションでのパリティ比率を基に、PDEVが選択されて良い。なお、「パリティ比率」とは、仮想ページに対するI/O対象のデータのサイズに対する、生成されるパリティの総サイズの割合である。
(S13)
制御プログラム501は、作成するDPプールに関する情報を、プール管理テーブル505に追加する。作成するDPプールに関する情報として、下記が追加される。
*プール番号210: 所定の規則に従って決定された番号(例えば、プール管理テーブル505に登録されているプール番号210のうち最も大きい番号の次の番号)。或いは、S10での上記パラメータ(p3)が表すプール番号。
*PDEV番号リスト211: S12で選択されたPDEVの番号。
*実割当容量212: S12で選択されたPDEVの総容量。
*使用容量213:ゼロ。なぜなら、当該DPプールから実ページが割り当てられていないため。
*先頭PDEV番号214: S12で選択されたPDEVの番号のうちの、所定の規則に従って決定された番号。例えば、S12で選択されたPDEVの番号のうちの最も小さい番号。
(S14)
制御プログラム501が、PDEV管理テーブル509における、S12で選択されたPDEVの所属プール番号231を、「null」から、作成されるDPプールの番号(S13での番号)に更新する。
(S15)
制御プログラム501が、作成されるDPプールを構成する各PDEV(S12で選択された各PDEV)の記憶空間を、実ページ容量毎に分割し、それにより得られる各実ページを管理する。具体的には、制御プログラム501は、作成されるDPプールに対応した実ページ管理テーブル511を作成しメモリ123に格納する。作成された実ページ管理テーブル511が有する各レコードは、下記情報を有する。
*PDEV番号240: S12で選択されたいずれかのPDEVの番号。
*実ページ番号241: S12で選択されたPDEVが提供する実ページに付与されたいずれかの通し番号。
*LUN242: null。いずれの実ページがいずれの仮想ページにも割り当てられていないため。
*仮想ページ番号243: null。いずれの実ページがいずれの仮想ページにも割り当てられていないため。
*アクセスカウンタ244: ゼロ。いずれの実ページに対してI/Oが発生していないため。
図15は、仮想LU201の生成の流れを示すフローチャートである。
(S20)
制御プログラム501が、管理装置105から、仮想LU生成指示を受ける。仮想LU生成指示は、パラメータとして、例えば、以下の(p11)〜(p15)のうちの、少なくとも(p15)がある。(p15)は、ユーザによる入力が必須のパラメータであり、(p11)〜(p14)は、ユーザが任意に入力するパラメータである。(p11)〜(p14)のうち、ユーザから入力されていないパラメータは、所定の規則によって決定される値(デフォルト値)である。
(p11)作成する仮想LUに付与するLUN。デフォルト値は、例えば、仮想LUのLUNとして付与可能な番号群のうちの最も小さい番号である。
(p12)作成する仮想LUの数。デフォルト値は、「1」である。
(p13)作成する仮想LUの所属先のDPプールの番号(プール番号)。デフォルト値は、作成されているDPプールの番号のうちの最も小さい番号である。
(p14)RAIDレベル(コンビネーションの設定も同時に行う)。デフォルト値は、例えば、RAID5(2D+1P)である。
(p15)仮想LUの容量。
(S21)
制御プログラム501が、上記(p12)が表す数の仮想LU毎に、作成する仮想LUに関する情報を、仮想LU管理テーブル507に追加する。作成する仮想LUに関する情報として、下記が追加される。
*LUN220: 上記パラメータ(p11)が表すLUN。
*所属プール番号221: 上記パラメータ(p13)が表すプール番号。上記パラメータ(p13)が表すプール番号のDPプールに、上記(p12)が表す数の仮想LUが関連付けられる。
*RAIDレベル222: 上記パラメータ(p14)が表すRAIDレベル。
*コンビネーション223:上記パラメータ(p14)が表すコンビネーション。
*容量224:上記パラメータ(p15)が表す容量。
(S22)
制御プログラム501が、上記(p12)が表す数の仮想LU毎に、作成する仮想LUの各仮想ページに関する情報を、マッピング管理テーブル513に追加する。各仮想ページについて追加される情報は、例えば下記の通りである。
*LUN250: 仮想ページを有する仮想LUのLUN。
*仮想ページ番号251: 仮想ページの番号。
*実ページ識別情報252: null。いずれの仮想ページに実ページが割り当てられていないため。
*アクセスカウンタ253: ゼロ。いずれの仮想ページに対してI/Oが発生していないため。
図16は、仮想ページに対するライトの流れの概要を示す。以下、実ページが割り当てられていない仮想ページに対するライトの流れと、実ページが割り当てられている仮想ページに対するライトの流れとを説明する。
<ケース1:実ページが割り当てられていない仮想ページに対するライト>
以下の処理が行われる。
(w11)制御プログラム501が、仮想LU#11の仮想ページV11を指定したライトコマンドをホスト#1から受け、マッピング管理テーブル513を参照し、ライト先の仮想ページV11に実ページが割り当てられていないことを特定する。
(w12)制御プログラム501が、仮想LU管理テーブル507を参照して、仮想ページV11を有する仮想LU#11のRAIDレベルがRAID5(2D+1P)であることを特定する。
(w13)制御プログラム501が、仮想LU#11が所属するDPプール#11に対応した実ページ管理テーブル511を参照し、LUN242及び仮想ページ番号243がnullである実ページから、PDEV番号240が異なる三つの実ページ((w12)で特定されたRAIDレベル(RAID5(2D+1P))に基づく数の実ページ)を選択する。ここでは、PDEV#11内の実ページR11、PDEV#12内の実ページR21、及び、PDEV#13内の実ページR31が選択される。
(w14)制御プログラム501が、(w13)で選択した実ページR11、R21及びR31を、仮想ページV11に割り当て、マッピング管理テーブル513を更新する。
(w15)制御プログラム501が、三つの実ページR11、R21及びR31のうちの二つに、仮想ページV11に対するライト対象のデータを分割することにより得られた二つのデータ要素を書き込み、それら三つの実ページのうちの残りの一つに、それら二つのデータ要素に基づくパリティを書き込む。
<ケース2:実ページが割り当てられている仮想ページに対するライト>
以下の処理が行われる。
(w21)制御プログラム501が、仮想LU#12の仮想ページV22を指定したライトコマンドをホスト#2から受け、マッピング管理テーブル513を参照し、ライト先の仮想ページV22に割り当てられている実ページを特定する。仮想ページV22を有する仮想LU#12のRAIDレベルがRAID6(3D+2P)なので、仮想ページV22には五つの実ページが割り当てられており、(w21)では、それら五つの実ページが特定される。具体的には、PDEV#13内の実ページR32、PDEV#14内の実ページR41、PDEV#15内の実ページR51、PDEV#16内の実ページR61、及び、PDEV#17内の実ページR71が選択される。
(w22)制御プログラム501が、(w21)で特定した五つの実ページR32、R41、R51、R61及びR71のうちの三つに、仮想ページV22に対するライト対象のデータを分割することにより得られた三つのデータ要素を書き込み、それら五つの実ページのうちの残りの二つに、それら三つのデータ要素に基づく二つのパリティを書き込む。
図17は、仮想ページに対するライトの流れを示すフローチャートである。
(S30)
制御プログラム501が、ライト先情報を有するライトコマンドとライト対象のデータとを受ける。ライト先情報は、LUNとLBAとを有する。ライト対象のデータは、メモリ123(キャッシュ領域)に書き込まれる。
(S31)
制御プログラム501が、マッピング管理テーブル513を参照して、ライト先情報から特定される仮想ページ(ライト先仮想ページ)に実ページが割り当てられているか否かを判断する。
<(S31)の判断の結果が肯定的の場合(ライト先仮想ページについてのPDEV識別情報252がnullではない場合)>。
これは、上記ケース2に相当する。具体的には、S32〜S36が行われることなく、S37が行われる。すなわち、制御プログラム501が、ライト先仮想ページ(例えば、図16での仮想ページV22)に割り当てられている実ページ(例えば、図16での実ページR32、R41、R51、R61及びR71)に、ライト先仮想ページを有する仮想LU(例えば、図16での仮想LU#12)のRAIDレベルに基づいて、ライト対象のデータ(例えば、そのデータを分割して得られた二以上のデータ要素と、一以上のパリティ)を書き込む。そして、制御プログラム501は、以下のライト状況更新処理:
*ライト先仮想ページに対応したアクセスカウンタ253の値を1インクリメントする;
*ライト先仮想ページに対応した仮想アクセス頻度情報(仮想アクセス状況テーブル517内の情報)を更新する(具体的には、ライト頻度(1分、1時間、1日、1週間)を増加する更新を行う);
*ライト先仮想ページに割り当てられている各実ページに対応したアクセスカウンタ244の値を1インクリメントする;
*ライト先仮想ページに割り当てられている各実ページに対応した実アクセス頻度情報(実アクセス状況テーブル515内の情報)を更新する(具体的には、ライト頻度(1分、1時間、1日、1週間)を増加する更新を行う)、
を行う。なお、ライト先仮想ページに割り当てられている実ページは、マッピング管理テーブル513から特定可能である。ライト先仮想ページを有する仮想LU(以下、ライト先仮想LU)は、ライト先情報が有するLUNから識別可能である。ライト先仮想LUのRAIDレベルは、仮想LU管理テーブル507から特定可能である。
<(S31)の判断の結果が否定的の場合(ライト先仮想ページについてのPDEV識別情報252がnullである場合)>。
これは、上記ケース1に相当する。そのため、S32〜S36が行われ、その後で、S37が行われる。
(S32)
制御プログラム501が、ライト先仮想LU(例えば、図16での仮想LU#11)に対応したRAIDレベル222及びコンビネーション223(例えば、RAID5(2D+1P)を特定する。制御プログラム501が、特定されたRAIDレベル222及びコンビネーション223を基に、選択するPDEVの数Kを決定する。例えば、RAIDレベルが表すコンビネーションが、「nD+mP(or D)」の場合(nは自然数、mは0以上の整数)、選択するPDEVの数Kは、(n+m)である。具体的には、例えば、コンビネーションが「2D+1P」の場合、K=2+1=3である。
(S33)
制御プログラム501が、ライト先仮想LUに対応した所属プール番号221と同じ値のプール番号210に対応する先頭PDEV番号214を特定する。
(S34)
制御プログラム501が、ライト先仮想LUに対応した所属プール番号221と同じ値のプール番号210に対応するPDEV番号リスト211から、S32で選択した数Kと同数のPDEV番号を選択する。その際、制御プログラム501は、まず、S33で特定した先頭PDEV番号214と同じPDEV番号(例えば#11)を選択し、そのPDEV番号を先頭に、順次、PDEV番号の小さい順に、選択されたPDEV番号の数がKに達するまで、PDEV番号を選択していく。もし、選択されたPDEV番号の数がKに達する前に、選択したPDEV番号が、ライト先仮想LUが所属するDPプール(例えば、図16でのDPプール#11)に対応したPDEV番号リスト211のうちの最も大きい番号になった場合には、そのPDEV番号リスト211のうちの最も小さい番号が選択される。
なお、この(S34)では、PDEV番号の順序に従ってPDEV番号(PDEV)を選択することに代えて、以下のようにしてPDEV番号(PDEV)が選択されても良い。
*空き容量235の多いPDEVを優先的に選択すること。これにより、DPプールにおけるPDEVを均等に使用することが期待できる。
*IF種別232及びPDEV性能233の両方又は片方が同一のPDEVを選択すること。これにより、一つの仮想ページに割り当てられる実ページに対するI/O性能が同じであることが期待される。
(S35)
制御プログラム501が、S34で選択した各PDEV番号から特定される各PDEVから、一つの空き実ページを選択する。具体的には、例えば、制御プログラム501は、ライト先仮想LUが所属するDPプールに対応した実ページ管理テーブル511を基に、選択したPDEV番号毎に、nullであるLUN242及び仮想ページ番号243に対応したいずれかの実ページ番号241を選択する。図16の例によれば、PDEV番号#11について実ページ番号R11が選択され、PDEV番号#12について実ページ番号R21が選択され、PDEV番号#13について実ページ番号R31が選択される。
(S36)
制御プログラム501が、ライト先仮想ページに対応した実ページ識別情報252を、nullから、S35で選択した実ページ番号241と、その番号241に対応したPDEV番号240との組合せ(例えば、#11−R11、#12−R21、#13−R31)に更新する。つまり、制御プログラム501は、ライト先仮想ページ(例えば、図16での仮想ページV11)に、S35で選択された二以上の空き実ページを割り当てる。
(S37)
制御プログラム501が、S36で割り当てた二以上の実ページに、ライト先仮想LUのRAIDレベル及びコンビネーションに基づいて、ライト対象のデータを書き込む。図16の例によれば、二つのデータ要素と一つのパリティが、三つの実ページR11、R21及びR31に書き込まれる。そして、制御プログラム501は、前述したようなライト状況更新処理を行う。これにより、ライト先仮想ページに対応したアクセスカウンタ253の値、ライト先仮想ページに対応した仮想アクセス頻度情報、ライト先仮想ページに割り当てられている各実ページに対応したアクセスカウンタ244の値、及び、ライト先仮想ページに割り当てられている各実ページに対応した実アクセス頻度情報が、更新される。
図18は、仮想ページに対するリードの流れを示すフローチャートである。
(S40)
制御プログラム501が、リード元情報を有するリードコマンドを受ける。リード元情報は、例えば、LUN及びLBAを有する。
(S41)
制御プログラム501が、マッピング管理テーブル513を参照して、リード元情報から特定される仮想ページ(リード元仮想ページ)に実ページが割り当てられているか否かを判断する。S41の判断の結果が否定的の場合、S42が行われる。S41の判断の結果が肯定的の場合、S43が行われる。
(S42)
制御プログラム501が、エラーを、リードコマンドの送信元のホストに送信する。
(S43)
制御プログラム501が、リード元仮想ページに割り当てられている二以上の実ページから、二以上のデータ要素(及び一以上のパリティ)を読み出し、読み出した二以上のデータ要素で構成されるデータ(つまり、リード対象のデータ)を、リードコマンドの送信元のホストに送信する(リード対象のデータは、パリティで復元されたデータ要素を含んだデータであっても良い。)。そして、制御プログラム501は、以下のリード状況更新処理:
*リード元仮想ページに対応したアクセスカウンタ253の値を1インクリメントする;
*リード元仮想ページに対応した仮想アクセス頻度情報(仮想アクセス状況テーブル517内の情報)を更新する(具体的には、リード頻度(1分、1時間、1日、1週間)を増加する更新を行う);
*リード元仮想ページに割り当てられている各実ページに対応したアクセスカウンタ244の値を1インクリメントする;
*リード元仮想ページに割り当てられている各実ページに対応した実アクセス頻度情報(実アクセス状況テーブル515内の情報)を更新する(具体的には、リード頻度(1分、1時間、1日、1週間)を増加する更新を行う)、
を行う。
以上、これまで説明したように、本実施形態では、DPプール203を構成する実ページは、RAIDグループから提供される実体的な記憶領域ではなく、一つのPDEVから提供される記憶領域である。そして、一つのDPプール203には、異なるRAIDレベル及びコンビネーションが定義された複数の仮想LUを関連付けることが可能である。このため、図19に例示するように、一つのDPプール#40に、異なるRAIDレベル及びコンビネーションでそれぞれ格納されたデータ(例えば、RAID5(3D+1P)で格納されたデータ(データ要素a、b及びc)とパリティPのセットと、RAID6(5D+2P)で格納されたデータ(データ要素e、f、g、h及びi)とパリティP1及びP2のセット)が混在する。この場合、もし、或る仮想LUについて定義されているRAIDレベル又はコンビネーションが別のRAIDレベル又はコンビネーションに変更された場合には、その仮想LUに割り当てられている実ページについてのみ、データの再構築が行われれば良い。例えば、仮想LUのRAIDレベル(又はコンビネーション)が第1のRAIDレベル(又はコンビネーション)から第2のRAIDレベル(又はコンビネーション)に変更された場合、制御プログラム501が、実ページが割り当てられている仮想ページ毎に、以下の処理(k1)〜(k3):
(k1)仮想ページに割り当てられているv個の実ページからv個のデータユニットを読み出し、v個のデータユニットを基にデータを構築する(本実施形態の説明で言う「データユニット」とは、実ページに格納されているデータ要素又はパリティの総称である);
(k2)第2のRAIDレベル及びコンビネーションに基づくw個の実ページを、仮想LUが関連付けられているDPプールのw個のPDEVからそれぞれ選択し、仮想ページに、(k1)でのv個の実ページに代えて、選択したw個の実ページを割り当てる;
(k3)割り当てたw個の実ページに、(k1)で構築したデータに基づくw個のデータユニットを書き込む、
を行う。なお、(k2)では、RAIDレベル(又はコンビネーション)が変更される仮想LUが関連付けられているDPプールでの各PDEVの使用率が均一になるように、w個の実ページが選択されて良い。これにより、仮想LUについて定義されているRAIDレベル(又はコンビネーション)の変更を契機に、その仮想LUが関連付けられているDPプールに属する各PDEVの使用率の均一化が期待できる。このとき、PDEVの使用率ではなく空き容量が均一になるようにw個の実ページが選択されても良い。
また、上述の説明では、仮想ページに割り当てられる実ページの提供元のPDEVは、PDEV番号の順番で選択されるが、例えば、図20に示すように、ランダムにPDEVが選択されて良い。図20の例によれば、RAID5(3D+1P)に従うデータ要素a、b及びcとパリティPも、RAID6(5D+2P)に従うデータ要素e、f、g、h及びiとパリティP1及びP2も、PDEV番号に依存せずに選択された各PDEVにおける実ページに格納されている。なお、PDEV番号に依存しないが、PDEVの使用率(もしくは空き容量)は考慮されて良い。DPプールにおける複数のPDEVの使用率(もしくは空き容量)を均等にするためである。
また、制御プログラム501は、同一のバックエンド接続デバイス113に接続されている複数のPDEVから、一つの仮想ページに複数の実ページを割り当てて良い。これにより、それら複数の実ページへのアクセスの性能の均一化が期待できる。なお、もし、同一のバックエンド接続デバイス113に接続されている複数のPDEVの使用率(もしくは空き容量)が均等ではなければ、複数のバックエンド接続デバイス113に接続されている複数のPDEVから複数の実ページが仮想ページに割り当てられて良い。
ところで、本実施形態では、或るHDD内の実ページから別のPDEV内の実ページにデータユニットが移動される再配置処理が行われる。
例えば、PDEVが増設又は減設された時に行われる。具体的には、例えば、DPプール203に空きの実ページの総容量が不足した場合(例えば、DPプール203の実割当容量212に対する使用容量213の比率が所定の閾値以上になった場合)、空きの実ページを増やすために、PDEVの増設が行われる。DPプール203に対するPDEVの増設は、PDEV単位で行うことができる。なお、空きの実ページの総容量が不足したことは、例えば、制御プログラム501が、プール管理テーブル505を参照することにより、検出することができる。制御プログラム501は、空きの実ページの総容量が不足したことを検出した場合、空きの実ページの総容量が不足したDPプールの番号と警告とを、管理装置105に送信する。管理装置105は、警告とDPプール番号とを表示する。ユーザは、その警告及びDPプール番号を見て、PDEVを増設し、増設したPDEVを、警告と共に表示されたDPプール番号から識別されるDPプールのメンバにさせる。なお、PDEVの増設は、空きの実ページの総容量が不足したときに限らず、他のタイミングで(例えば所定の計画に従って)行うこともできる。
図21は、PDEVの増設の際に行われる処理のフローチャートである。
(S1801)
PDEVの増設が行われた場合(例えば、制御プログラム501が、PDEVが増設されたことを検出した場合)、制御プログラム501は、増設されたPDEV(以下、増設PDEV)に関する情報(レコード)を、PDEV管理テーブル509に追加する。PDEVに関する情報のうち、IF種別232、PDEV性能233、容量234及び空き容量235は、ユーザから管理装置105を通じて入力されても良いし、増設PDEVから取得されても良い。PDEV番号230は、ユーザから管理装置105を通じて入力されても良いし、制御プログラム501によって決められても良い。制御プログラム501は、PDEV管理テーブル509における、増設PDEVに関する情報に、所属プール番号231、すなわち、増設PDEVがメンバとなるDPプールの番号を追加する。この所属プール番号231は、ユーザから管理装置105を通じて入力された番号でも良いし、制御プログラム501が決定した番号(例えば、空きの実ページの総容量が不足していると検出されたDPプールの番号)でも良い。
(S1802)
制御プログラム501が、S1801で追加した所属プール番号231と同じプール番号210(図7参照)に対応したPDEV番号リスト211(以下、図21の説明において「対象リスト211」と言う)に、増設PDEVの番号を追加し、且つ、そのプール番号210に対応した実割当容量212に、増設PDEVの容量を追加する。また、制御プログラム501は、S1801で追加した所属プール番号231に対応する実ページ管理テーブル511に、増設PDEVが有する各実ページに対応する情報(レコード)を追加する。
(S1803)
制御プログラム501が、PDEV管理テーブル509で管理されている容量234及び空き容量235のうち、対象リスト211に属するPDEVに対応した容量234及び空き容量235を参照し、対象リスト211に属する各PDEVの使用率(容量234に対する空き容量235の比率)を算出する。そして、制御プログラム501は、使用率が所定の閾値を超過しているPDEVを特定する。
(S1804)
制御プログラム501が、S1803で特定されたPDEVの使用率が所定の閾値以下となるまで、再配置処理を実行する。「再配置処理」とは、一つのDPプールにおいて或るPDEV内の実ページから別のPDEV内の実ページにデータユニットを移動する処理である。
(S1805)
制御プログラム501が、増設PDEVを有するDPプールにおける全てのPDEVの使用率が均等になるまで再配置処理を実行する。このPDEVの増設の際に行われる処理では、PDEVの使用率の代わりに、空き容量を基に、再配置処理の対象のPDEVが決定されても良い。
図22は、再配置処理のフローチャートを示す。なお、以下の説明では、複数のデータユニットを基に生成されるデータ(仮想領域に対してI/Oが行われるデータ)を、「I/Oデータ」と言う。
(S1901)
制御プログラム501が、データユニットの移動元の実ページと、データユニットの移動先の実ページとを選択する。この再配置処理が、図21のS1804での再配置処理であれば、移動元の実ページは、図21のS1803で特定されたPDEV(使用率が所定の閾値を超過しているPDEV)から選択され、移動先の実ページは、少なくとも一つの空きの実ページにデータユニットが格納されても使用率が所定の閾値を超過しないPDEV(例えば、使用率が最も低いPDEV)から選択される。一方、この再配置処理が、図21のS1805での再配置処理であれば、移動元の実ページは、使用率が最も高いPDEVから選択され、移動先の実ページは、使用率が最も低いPDEVから選択される。
(S1902)
制御プログラム501が、RAIDが維持されるか否かを判断する。「RAIDが維持されるか否か」とは、RAID技術に基づいてI/Oデータの生成が可能か否かである。具体的には、移動先の実ページを有するPDEV内の別の実ページに、移動元の実ページに格納されているデータユニットに基づいて生成されるI/Oデータの基になる別のデータユニットが存在するか否かである。より具体的には、例えば、制御プログラム501は、移動元の実ページの割当先の仮想ページに対応する実ページ識別情報252に、移動先の実ページを有するPDEVの番号が含まれておらず、RAIDが維持されるか否かを判断する。この判断の結果が肯定的の場合、S1903が行われ、この判断の結果が否定的の場合、S1904が行われる。
(S1903)
制御プログラム501は、移動元の実ページから移動先の実ページにデータユニットを移動する。そして、制御プログラム501は、移動元の実ページの割当先であった仮想ページに対応する実ページ識別情報252に含まれている、移動元実ページの識別情報(PDEV番号と実ページ番号との組合せ)を、移動先実ページの識別情報に更新する。つまり、制御プログラム501は、移動先の実ページを、移動元の実ページに代えて仮想ページに割り当てる。
(S1904)
制御プログラム501は、移動先の実ページを別のPDEVから選択する。例えば、別のPDEVは、この再配置処理が図21のS1804及びS1805のどちらであるかに関わらず、S1901で選択した移動先実ページを有するPDEVの次に使用率が低いPDEVでよい。また、この再配置処理では、PDEVの使用率の代わりに空き容量を基にPDEVが選択されても良い。
以上が、PDEVが増設された場合に行われる処理の説明である。図21のS1805によれば、例えば、図23に示すようにしてデータユニットが移動される。例えば、一つのDPプールに属するPDEV#01〜#09において、PDEV#01及び#05が、四つのデータユニットを記憶していて、残りのPDEV#02〜#04及び#06〜#09が、三つのデータユニットを記憶しているとする。ここで、増設PDEV#10がDPプールに所属させられた場合、PDEV#01及び#05からそれぞれ一つのデータユニットが増設PDEV#10に移動される。これにより、PDEV#01〜#10の使用率がなるべく均一になる。
PDEVの増設に関する処理は、上述の説明に限らず、下記のようなバリエーションが考えられる。下記の処理においても、PDEVの使用率の代わりに空き容量を基にPDEVが選択されても良い。
(第1のバリエーション)
S1803〜S1805が行われない。このバリエーションでは、制御プログラム501は、各ライトコマンドの処理において、ライト先の仮想ページに割り当てる実ページを、必ず、増設PDEVから選択するようにする。例えば、DPプール#20にPDEV#51〜#53があり、PDEV#54が増設された場合、制御プログラム501は、ライトコマンドの処理では、必ず、ライト先の仮想ページに割り当てる二以上の実ページにPDEV#54内の実ページが含まれるようにする。なお、ライトコマンドの処理において増設PDEVから実ページを必ず選択することは、増設PDEVの使用率が、増設PDEVを有するDPプール内の他のPDEVの使用率と同程度(例えば、DPプールでのPDEVの使用率の平均と同じ、又は、その平均との差が所定値未満)になるまで行われる。その後は、DPプールに属する複数のPDEVが均等に選択される。
(第2のバリエーション)
移動先の実ページが、移動元の実ページのアクセス頻度(実アクセス状況テーブル515から特定されるアクセス頻度)に基づいて決定される。例えば、移動元実ページのアクセス頻度の割りに、移動元実ページを有するPDEVのI/O性能が高ければ、移動先の実ページは、移動元の実ページを有するPDEV(例えばSSD)よりもI/O性能の低いPDEV(例えばHDD)から選択されて良い。逆に、例えば、移動元実ページのアクセス頻度の割りに、移動元実ページを有するPDEVのI/O性能が低ければ、移動先の実ページは、移動元の実ページを有するPDEV(例えばHDD)よりもI/O性能の高いPDEV(例えばSSD)から選択されて良い。
図24は、PDEVの減設の際に行われる処理のフローチャートである。
(S2701)
制御プログラム501が、ユーザから管理装置105を通じて、減設対象のPDEVの番号の入力を受ける。
(S2702)
制御プログラム501が、実ページ管理テーブル511を参照して、減設対象のPDEVが有する複数の実ページのうち仮想ページに割り当てられている一以上の実ページをLUN242及び仮想ページ番号243がnullでない実ページから特定する。
(S2703)
制御プログラム501が、RAIDを維持し、且つ、使用率が均等になるように、データユニットを移動する。具体的には、例えば、制御プログラム501が、S2702で特定された実ページ(移動元の実ページ)毎に、減設対象のPDEV以外のPDEVのうち使用率が最も低いPDEVから一つの実ページ(移動先の実ページ)を選択し、選択した移動先実ページに、移動元の実ページからデータユニットを移動する。移動元の実ページを有するPDEVのI/O性能と、移動先の実ページを有するPDEVのI/O性能が同じであることが好ましい。
(S2704)
制御プログラム501が、S2702で特定された実ページ(移動元の実ページ)毎に、移動元実ページが割り当てられた仮想ページに、移動元実ページに代えて移動先実ページを割り当てる。具体的には、例えば、制御プログラム501は、S2702で特定された実ページ(移動元の実ページ)毎に、移動元実ページが割り当てられている仮想ページに対応した実ページ識別情報252における、移動元実ページの識別情報を、移動先実ページの識別情報に更新する。
(S2705)
制御プログラム501が、減設対象のPDEVに関する情報を、メモリ123に格納されているテーブルから削除する。具体的には、例えば、制御プログラム501は、以下の処理:
*PDEV管理テーブル509から、減設対象のPDEVに対応するレコードを削除する;
*プール管理テーブル505における、減設対象PDEVが属するDPプールに対応したPDEV番号リスト211から、減設対象のPDEVの番号を削除し、且つ、実割当容量212から、減設対象PDEVの容量を引く。また、減設対象のPDEVの番号が先頭PDEV番号214であった場合、先頭PDEV番号214の値を減設対象PDEVの番号の次に大きいPDEV番号の値に更新する。;
*減設対象PDEVが属するDPプールに対応する実ページ管理テーブル511から、減設対象PDEVが有する各実ページに対応する情報(レコード)を削除する、
を行う。また、このPDEVの減設の際に行われる処理では、PDEVの使用率の代わりに、空き容量を基に、PDEVが選択されても良い。
ところで、ストレージシステム103の稼動中において、ストレージシステム103が単位時間当たりに受け付けるI/Oコマンドの数、種別及びI/O先情報に応じて、特定の実ページのアクセス頻度が高くなってその実ページを有するPDEVの稼働率(負荷)が高くなることがある。
そこで、本実施形態では、I/Oコマンドの処理に応じて更新される実アクセス状況テーブル515及び/又は仮想アクセス状況テーブル517に基づいて、再配置処理が行われる。再配置処理については、例えば以下のような三つの例(EX1)〜(EX3)が考えられる。
(EX1)制御プログラム501は、実アクセス状況テーブル515及び/又は仮想アクセス状況テーブル517を参照して、アクセス頻度或いは稼働率が第1の閾値を超過しているPDEV(以下、高負荷PDEV)が存在するか否かを判断する。PDEVのアクセス頻度は、例えば、PDEVが有する実ページのアクセス頻度の平均である。高負荷PDEVが特定された場合、制御プログラム501は、高負荷PDEV内のデータユニットを、稼働率が最も低いPDEV内の空きの実ページに移動する。移動対象のデータユニットを記憶している実ページは、アクセス頻度が最も高い仮想ページに割り当てられている実ページ、又は、アクセス頻度が最も高い実ページである。図25の例によれば、高負荷PDEV#05内のデータユニット「J」が、稼働率が最も低いPDEV#10に移動される。その結果、高負荷PDEV#05の稼働率が40%から20%に下がり、一方、PDEV#10の稼働率が10%から20%に上がる。データユニットの移動は、複数のPDEVの稼働率が均一になるように行われることが好ましい。
(EX2)制御プログラム501は、実アクセス状況テーブル515及び/又は仮想アクセス状況テーブル517を参照して、アクセス頻度或いは稼働率が第2の閾値(第2の閾値<第1の閾値)を下回っているPDEV(以下、低負荷PDEV)が存在するか否かを判断する。低負荷PDEVが特定された場合、制御プログラム501は、稼働率が最も高いPDEV内のデータユニットを、低負荷PDEV内の空きの実ページに移動する。移動対象のデータユニットを記憶している実ページは、アクセス頻度が最も高い仮想ページに割り当てられている実ページ、又は、アクセス頻度が最も高い実ページである。
(EX3)制御プログラム501は、実アクセス状況テーブル515及び/又は仮想アクセス状況テーブル517を参照して、実ページ毎又は仮想ページ毎のリード比率及びライト比率を算出する。リード比率及びライト比率とは、アクセス全体に対するリード及びライトの比率である。具体的には、例えば、リード比率及びライト比率は、リード頻度及びライト頻度と、リード頻度とライト頻度との合計を基に算出することができる。制御プログラム501は、以下の(X1)又は(X2)の条件の合致が得られた場合、算出されたリード率又はライト率を有する実ページ内のデータユニットを、算出されたリード率又はライト率に相応しい属性(例えばI/O性能)を有する実ページに移動する。
(X1)算出されたリード比率又はライト比率が、そのリード比率又はライト比率を有する実ページを提供するPDEVの属性(例えばI/O性能)に適していない。
(X2)算出されたリード比率又はライト比率が、そのリード比率又はライト比率を有する仮想ページに割り当てられている実ページを提供するPDEVの属性(例えばI/O性能)に適していない。
仮想LUの所属先が、第1のDPプールから第2のDPプールに切り替えられることがある。この場合、第1のDPプール内の実ページが割り当てられている仮想ページ毎に、以下の(f1)及び(f2)の処理:
(f1)仮想ページに割り当てられている、第1のDPプール内の複数の実ページから、第2のDPプール内の複数の実ページに、それぞれデータユニットを移動する;
(f2)複数の移動先の実ページを、複数の移動元の実ページに代えて仮想ページに割り当てる、
を行う。なお、(f1)での移動先の実ページは、仮想ページのアクセス頻度(仮想アクセス状況テーブル517から特定されるアクセス頻度)に適した属性(例えばI/O性能)を有するPDEVから選択される。例えば、仮想ページのアクセス頻度が所定の閾値以上であれば、I/O性能が高いPDEVから移動先の実ページが選択され、一方、仮想ページのアクセス頻度が所定の閾値より低ければ、I/O性能が低いPDEVから移動先の実ページが選択されてよい。
本実施形態では、前述した通り、DPプールの実ページは、RAIDグループからではなくPDEVから提供される。このため、PDEVに障害が発生した場合には、障害が発生したPDEV(以下、障害PDEV)が有する複数の実ページのうちの、仮想ページに割り当てられている実ページについてのみ、データユニットのリストアがされればよい。ここで、リストアとは、同一仮想ページに割当てられた実ページのうち、障害PDEV内の実ページ以外の実ページに書き込まれたデータ要素およびパリティから、障害PDEV内の当該実ページに格納されていたデータを修復することをいう。具体的には、例えば、図26に示すように、障害PDEVにデータ要素「b」のみが格納されていた場合、制御プログラム501は、他のデータ要素「a」及び「c」とパリティ「P」とを基に、データ要素「b」をリストアし、リストアしたデータ要素「b」を、障害の発生していないPDEVに書き込む。書込み先となるPDEVは、DPプールでの使用率(もしくは空き容量)が均等になるように選択される。
障害PDEV内のデータユニットのリストアに関する処理として、リストア優先タイプのリストア処理と、交換優先タイプのリストア処理が考えられる。
リストア優先タイプのリストア処理は、例えば次の通りである。すなわち、制御プログラム501が、障害PDEVのうちの、一以上の仮想ページに割り当てられている一以上の実ページ内のデータユニットをリストアし、リストアされた一以上のデータユニットを、複数の他のPDEVに分散しておく。障害PDEVが別のPDEVに交換された後、制御プログラム501が、複数のPDEVの使用率が均一になるように再配置処理を行うことで、複数の他のPDEVから交換後のPDEVにデータユニットを移動する。
交換優先タイプのリストア処理は、例えば次の通りである。すなわち、障害PDEVが別のPDEVに交換される。制御プログラム501が、障害PDEVのうちの、一以上の仮想ページに割り当てられていた一以上の実ページ内のデータユニットをリストアし、リストアされた一以上のデータユニットを、交換後のPDEVに書き込む。
以下、それぞれのリストア処理を詳細に説明する。
図27は、リストア優先タイプのリストア処理のフローチャートである。
(S2501)
制御プログラム501は、実ページ管理テーブル511を参照し、障害PDEVのうちの割当て済み実ページを特定する。制御プログラム501は、特定された割当て済み実ページ毎に、以下の(S2502)〜(S2504)を行う。
(S2502)
制御プログラム501は、割当て済み実ページの割当先の仮想ページに割り当てられている一以上の他の実ページからデータユニットを読み出す。
(S2503)
制御プログラム501は、S2502で読み出された一以上のデータユニットを基に、障害PDEV内の実ページが記憶しているべきデータユニットをリストアする。
(S2504)
制御プログラム501は、RAIDが維持され、且つ、障害PDEVが属するDPプール内のPDEVの使用率が均一になるよう、そのDPプール内の他のPDEVから、S2503でリストアしたデータユニットのライト先の空きの実ページを選択し、選択した実ページに、リストアしたデータユニットを書き込む。制御プログラム501は、障害PDEV内の実ページに代えてその書き込み先の実ページを仮想ページに割り当てる。
(S2505)
障害PDEVにおける全ての割当て済み実ページについてS2502〜S2504が行われた後、障害HDDが別のHDDに交換される。
(S2506)
制御プログラム501は、DPプール内のPDEVの使用率が均一になるよう、DPプール内の複数の他のPDEVから交換後のPDEVにデータユニットを移動する。制御プログラム501は、データユニットの移動元の実ページに代えて交換後のPDEV内の移動先実ページを仮想ページに割り当てる。交換優先タイプのリストア処理において、PDEVの使用率の代わりに空き容量が均一になるよう移動先のPDEVを選択しても良い。
このリストア処理の変形例として、以下が考えられる。例えば、制御プログラム501が、ホスト101からリードコマンドを受信し、且つ、そのリード元の仮想ページに割り当てられている複数の実ページに障害PDEV内の実ページが含まれていることを検出した場合に、リードコマンドに応答して読み出された一以上のデータユニットを基に、S2503及びS2504が行われて良い。障害PDEVにおける全ての割当て済み実ページについてS2503及びS2504が行われた後に、S2505及びS2506が行われて良い。
図28は、交換優先タイプのリストア処理のフローチャートである。
(S2601)
障害PDEVが別のPDEVに交換される。
(S2602)
制御プログラム501が、実ページ管理テーブル511を参照し、障害PDEVのうちの割当て済み実ページを特定する。制御プログラム501は、特定された割当て済み実ページ毎に、以下の(S2603)〜(S2605)を行う。
(S2603)
制御プログラム501は、割当て済み実ページの割当先の仮想ページに割り当てられている一以上の他の実ページからデータユニットを読み出す。
(S2604)
制御プログラム501は、S2603で読み出された一以上のデータユニットを基に、障害PDEV内の実ページが記憶しているべきデータユニットをリストアする。
(S2605)
制御プログラム501は、リストアしたデータユニットを、交換後のPDEVに書き込む。
リストア優先とするか交換優先とするかは、ストレージシステム103に対するアクセスの状況に応じて決められても良いし、ユーザから予め指定されていても良い。
以上、本発明の一つの実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、各要素は、番号或いは名称に代えて又は加えて他種の識別情報で識別されて良い。また、例えば、パリティの生成は、制御プログラム501に代えて、ハードウェア回路によって行われて良い。また、例えば、実ページ毎のアクセスカウンタ244及び仮想ページ毎のアクセスカウンタ253のうちの少なくとも一方が、アクセスカウンタに代えて、ライト用のカウンタと、リード用のカウンタとの少なくとも一方であっても良い。また、例えば、実アクセス状況テーブル515は無くても良い。この場合には、仮想ページのアクセス頻度を、仮想ページに対応する実ページのアクセス頻度とみなすことができる。
103…ストレージシステム

Claims (15)

  1. ホスト装置と接続されたストレージシステムであって、
    前記ホスト装置に仮想ボリュームを提供し、前記ホスト装置からの前記仮想ボリュームに対するライトコマンドとリードコマンドとを処理するコントローラと、
    複数の記憶装置と、
    を有し、
    前記コントローラは、
    前記仮想ボリュームの有する複数の仮想記憶領域のうちの第1仮想記憶領域へのデータのライトコマンドを受領すると、前記第1仮想記憶領域に、前記複数の記憶装置の有する複数の実記憶領域のいずれも割当られていない場合に、
    前記仮想ボリュームに設定されたRAIDレベルとコンビネーションとに基づいた数の複数の記憶装置を選択し、
    前記複数の記憶装置のそれぞれから前記仮想記憶領域に割当てられていない前記実記憶領域を選択し、
    前記選択された実記憶領域を前記第1仮想記憶領域に割り当て、
    当該割当てられた実記憶領域に、前記RAIDレベルまたはコンビネーションにしたがって、前記データを書き込む
    ことを特徴とするストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記コントローラは、前記複数の仮想記憶領域それぞれと、前記複数の仮想記録領域それぞれに割当てられた前記複数の実記憶領域のいずれかとの対応付けの情報である第1情報を有し、
    前記コントローラは、前記第1仮想記憶領域に、前記複数の実記憶領域のいずれかが割当てられた場合、前記第1仮想記憶領域と前記割当てられた実記憶領域との対応付けの情報を新たに第1情報に記憶する
    ことを特徴とするストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    複数の前記記憶装置は、前記記憶装置の管理単位であるプールを形成し、
    前記コントローラは、前記ホストに対して、前記仮想ボリュームに設定された前記RAIDレベルまたは前記コンビネーションとは異なるRAIDレベルまたはコンビネーションが設定された他の仮想ボリュームを提供し、
    前記コントローラは、前記第1仮想記憶領域に前記実記憶領域を割当てる場合、前記プールに含まれる前記記憶装置を選択し、
    前記コントローラは、前記他の仮想ボリュームが有する第2仮想記憶領域に前記実記憶領域を割当てる場合、前記プールに含まれる前記記憶装置を選択する
    ことを特徴とするストレージシステム。
  4. 請求項3に記載のストレージシステムであって、
    前記第1仮想記憶領域と、前記第2仮想記憶領域とは同一の記憶装置が有する異なる前記実記憶領域が割当てられる
    ことを特徴とするストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記複数の記憶装置は、
    前記第1仮想記憶領域に割当てられた第1実記憶領域を有する第1記憶装置と、
    いずれの前記実記憶領域も第1仮想記憶領域に割当てられていない第2記憶装置と、
    を有し、
    前記コントローラは、
    前記第1実記憶領域に記憶された第1データを移行する際に、
    前記第2記憶装置の有する前記複数の実記憶領域のうちから、いずれの前記仮想記憶領域にも割り当てられていない第2実記憶領域を選択し、
    前記第1データを前記第2実記憶領域に移行する
    ことを特徴とするストレージシステム。
  6. 請求項5に記載のストレージシステムであって、
    前記コントローラは、前記第1記憶装置が有する前記複数の実記憶領域の総容量と、前記仮想記憶領域に割当てられていない前記実記憶領域の総容量との情報である第3情報を有し、
    前記コントローラは、
    前記第3情報を参照し、
    前記仮想記憶領域に割当てられた前記実記憶領域の総容量に基づいて、前記複数の記憶装置から移行元である前記第1記憶装置と移行先である前記第2記憶装置とを選択する
    ことを特徴とするストレージシステム。
  7. 請求項6に記載のストレージシステムであって、
    前記第2記憶装置の、前記記憶装置が有する全記憶領域に対する前記仮想記憶領域に割当てられている前記実記憶領域が、所定の閾値より低い
    ことを特徴とするストレージシステム。
  8. 請求項1に記載のストレージシステムであって、
    前記ストレージシステムに第4実記憶領域を備える前記記憶装置である第4記憶装置が追加された場合、前記コントローラは、前記複数の記憶装置のうち前記第1仮想記憶領域に割当てられた第1実記憶領域を有する第1記憶装置に記憶された第1データを前記第4実記憶領域に移行する
    ことを特徴とするストレージシステム。
  9. 請求項8に記載のストレージシステムであって、
    前記コントローラは、前記ストレージシステムが有する前記複数の記憶装置の情報である第2情報を有し、
    前記コントローラは、前記ストレージシステムに前記第4記憶装置が追加された場合、前記第4記憶装置の情報を前記第2情報に記憶する
    ことを特徴とするストレージシステム。
  10. 請求項1に記載のストレージシステムであって、
    前記ストレージシステムに第4実記憶領域を備える前記記憶装置である第4記憶装置が追加された場合、
    前記コントローラは、
    前記仮想ボリュームの有する複数の仮想記憶領域のうちの第2仮想記憶領域への第2データのライトコマンドを受領すると、前記第2仮想記憶領域に、前記複数の記憶装置の有する複数の実記憶領域のいずれも割当られていない場合に、
    前記仮想ボリュームに設定されたRAIDレベルとコンビネーションとに基づいた数の複数の記憶装置を選択し、
    前記選択した複数の記憶装置に前記第4の記憶装置を含み、
    前記複数の記憶装置のそれぞれから前記仮想記憶領域に割当てられていない前記実記憶領域を選択し、
    前記選択された実記憶領域を前記第2仮想記憶領域に割り当て、
    当該割当てられた実記憶領域に、前記RAIDレベルまたはコンビネーションにしたがって、前記第2データを書き込む
    ことを特徴とするストレージシステム。
  11. 請求項1に記載のストレージシステムであって、
    前記複数の記憶装置は、
    前記第1仮想記憶領域に割当てられた第1実記憶領域を有する第1記憶装置と、
    いずれの前記実記憶領域も前記第1仮想記憶領域に割当てられていない第2記憶装置と、
    を有し、
    前記第1記憶装置に障害が発生すると、
    前記コントローラは、
    前記第1仮想記憶領域に割当てられた前記第1実記憶領域以外の複数の前記実記憶領域に記憶されたデータから、前記第1記憶領域に記憶されていた第1データを修復し、
    前記第2記憶装置の有する前記複数の実記憶領域のうちから、いずれの前記仮想記憶領域にも割り当てられていない第2実記憶領域を選択し、
    前記第1データを前記第2実記憶領域に移行することを特徴とするストレージシステム。
  12. ホスト装置と接続されたストレージシステムの制御方法であって、
    前記ストレージシステムは、
    前記ホスト装置に仮想ボリュームを提供し、前記ホスト装置からの前記仮想ボリュームに対するライトコマンドとリードコマンドとを処理するコントローラと、
    複数の記憶装置と、
    を備え,
    前記制御方法は、
    前記仮想ボリュームの有する複数の仮想記憶領域のうちの第1仮想記憶領域へのデータのライトコマンドを受領し、
    前記第1仮想記憶領域に、前記複数の記憶装置の有する複数の実記憶領域のいずれも割当ていない場合に、
    前記仮想ボリュームに設定されたRAIDレベルとコンビネーションとに基づいた数の複数の記憶装置を選択し、
    前記複数の記憶装置のそれぞれから前記仮想記憶領域に割当てられていない前記実記憶領域を選択し、
    前記第1仮想記憶領域に割り当て、
    当該割当てられた実記憶領域に、前記RAIDレベルまたはコンビネーションにしたがって、処理されたデータを書き込むことを特徴とするストレージシステムの制御方法。
  13. 請求項12に記載のストレージシステムの制御方法であって、
    前記記憶装置の管理単位であるプールを形成し、
    前記ホストに対して、前記仮想ボリュームに設定された前記RAIDレベルまたは前記コンビネーションとは異なるRAIDレベルまたはコンビネーションが設定された他の仮想ボリュームを提供し、
    前記第1仮想記憶領域に前記実記憶領域を割当てる場合、
    前記プールに含まれる前記記憶装置を選択し、
    前記他の仮想ボリュームが有する第2仮想記憶領域に前記実記憶領域を割当てる場合、
    前記プールに含まれる前記記憶装置を選択する
    ことを特徴とするストレージシステムの制御方法。
  14. 請求項13に記載のストレージシステムの制御方法であって、
    前記第2仮想記憶領域に前記実記憶領域を割当てる場合、
    少なくとも1つの前記第1仮想記憶領域に割当てた前記実記憶領域を有する前記記憶装置と同一の前記記憶装置が有する、いずれの前記仮想記憶領域にも割当てられていない前記実記憶領域を選択する
    ことを特徴とするストレージシステムの制御方法。
  15. 請求項12に記載のストレージシステムの制御方法であって、
    前記複数の記憶装置は、
    前記第1仮想記憶領域に割当てられた第1実記憶領域を有する第1記憶装置と、
    いずれの前記実記憶領域も第1仮想記憶領域に割当てられていない第2記憶装置と、
    を備える場合、
    前記第1実記憶領域に記憶された第1データを移行する際に、
    前記第2記憶装置の有する前記複数の実記憶領域のうちから、いずれの前記仮想記憶領域にも割り当てられていない第2実記憶領域を選択し、
    前記第1データを前記第2実記憶領域に移行することを特徴とするストレージシステムの制御方法。
JP2012517600A 2010-01-14 2010-01-14 ストレージシステム Expired - Fee Related JP5444464B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/000166 WO2011086598A1 (en) 2010-01-14 2010-01-14 Storage system

Publications (2)

Publication Number Publication Date
JP2013506886A true JP2013506886A (ja) 2013-02-28
JP5444464B2 JP5444464B2 (ja) 2014-03-19

Family

ID=42562589

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012517600A Expired - Fee Related JP5444464B2 (ja) 2010-01-14 2010-01-14 ストレージシステム

Country Status (3)

Country Link
US (2) US8468302B2 (ja)
JP (1) JP5444464B2 (ja)
WO (1) WO2011086598A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182744A (ja) * 2013-03-21 2014-09-29 Nec Corp ディスク制御装置およびディスクの減設方法、ストレージシステム、並びにコンピュータ・プログラム
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置
JP5971354B2 (ja) * 2013-01-25 2016-08-17 株式会社日立製作所 ストレージシステム
JP2016170489A (ja) * 2015-03-11 2016-09-23 日本電気株式会社 プロビジョニング設定支援装置、プロビジョニング設定支援方法、そのプログラム及びシステム

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134922B2 (en) 2009-03-12 2015-09-15 Vmware, Inc. System and method for allocating datastores for virtual machines
WO2011108027A1 (ja) * 2010-03-04 2011-09-09 株式会社日立製作所 計算機システム及びその制御方法
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
US8775774B2 (en) 2011-08-26 2014-07-08 Vmware, Inc. Management system and methods for object storage system
US8775773B2 (en) * 2011-08-26 2014-07-08 Vmware, Inc. Object storage system
US8595460B2 (en) 2011-08-26 2013-11-26 Vmware, Inc. Configuring object storage system for input/output operations
US8719620B2 (en) 2011-08-29 2014-05-06 Hitachi, Ltd. Storage control apparatus and storage control apparatus control method
US8677085B2 (en) 2011-08-29 2014-03-18 Vmware, Inc. Virtual machine snapshotting in object storage system
US8769174B2 (en) 2011-08-29 2014-07-01 Vmware, Inc. Method of balancing workloads in object storage system
US8856440B2 (en) * 2011-09-12 2014-10-07 Microsoft Corporation Volatile memory representation of nonvolatile storage device set
WO2013061368A1 (en) * 2011-10-26 2013-05-02 Hitachi, Ltd. Storage apparatus and method of controlling storage apparatus
US9229637B2 (en) * 2011-11-18 2016-01-05 Hitachi, Ltd. Volume copy management method on thin provisioning pool of storage subsystem
JP2013114624A (ja) * 2011-11-30 2013-06-10 Hitachi Ltd ストレージシステム及びプール容量縮小の制御方法
US20140136643A1 (en) * 2012-11-13 2014-05-15 Motorola Mobility Llc Dynamic Buffer Management for a Multimedia Content Delivery System
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
US20150286531A1 (en) * 2012-12-20 2015-10-08 Hewlett-Packard Development Company, L.P. Raid storage processing
JP5713412B2 (ja) * 2013-01-31 2015-05-07 株式会社日立製作所 管理装置、管理システム、および管理方法
US9697063B2 (en) * 2013-05-15 2017-07-04 Amazon Technologies, Inc. Allocating data based on hardware faults
US11150807B2 (en) 2015-02-23 2021-10-19 Avago Technologies International Sales Pte. Limited Dynamic storage system configuration
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9811280B2 (en) * 2015-12-23 2017-11-07 Netapp, Inc. Efficient method of combining parity groups for uniform load distribution and maximizing parallelization in parity de-clustered and sliced disk raid architecture
KR102581479B1 (ko) * 2016-05-31 2023-09-21 삼성전자주식회사 스토리지 시스템 및 그의 볼륨 관리 방법
US10459663B2 (en) * 2017-01-23 2019-10-29 International Business Machines Corporation Thin provisioning of raid storage
CN109213695B (zh) * 2017-06-30 2023-07-21 伊姆西Ip控股有限责任公司 缓存管理方法、存储系统以及计算机程序产品
EP3695319B1 (en) * 2017-09-27 2022-11-23 Telefonaktiebolaget LM Ericsson (publ) Method and reallocation component for managing reallocation of information from source to target memory sled
CN110858124B (zh) * 2018-08-24 2021-06-01 华为技术有限公司 数据迁移方法及装置
KR20200043814A (ko) * 2018-10-18 2020-04-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003077111A1 (fr) * 2002-03-13 2003-09-18 Fujitsu Limited Controleur pour dispositif raid
JP2006505831A (ja) * 2002-01-09 2006-02-16 シスコ テクノロジー インコーポレイテッド 仮想エンクロージャを通してストレージエリアネットワーク内のストレージの仮想化を実現する方法および装置
JP2008146574A (ja) * 2006-12-13 2008-06-26 Hitachi Ltd 記憶制御装置及び記憶制御方法
US20080275928A1 (en) * 2007-04-27 2008-11-06 Gary Stephen Shuster Flexible data storage system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1668486A2 (en) 2003-08-14 2006-06-14 Compellent Technologies Virtual disk drive system and method
JP5379956B2 (ja) 2007-03-19 2013-12-25 株式会社日立製作所 ストレージ装置及び記憶領域配置方法
JP5075699B2 (ja) 2008-03-21 2012-11-21 株式会社日立製作所 ストレージ容量拡張方法及びその方法を使用するストレージシステム
US8099623B1 (en) 2008-10-08 2012-01-17 Netapp, Inc. Efficient distributed hot sparing scheme in a parity declustered RAID organization
US7904749B2 (en) * 2008-10-24 2011-03-08 Hitachi, Ltd. Fast data recovery from HDD failure
JP5214502B2 (ja) * 2009-03-12 2013-06-19 株式会社日立製作所 ストレージ装置を管理する計算機及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505831A (ja) * 2002-01-09 2006-02-16 シスコ テクノロジー インコーポレイテッド 仮想エンクロージャを通してストレージエリアネットワーク内のストレージの仮想化を実現する方法および装置
WO2003077111A1 (fr) * 2002-03-13 2003-09-18 Fujitsu Limited Controleur pour dispositif raid
JP2008146574A (ja) * 2006-12-13 2008-06-26 Hitachi Ltd 記憶制御装置及び記憶制御方法
US20080275928A1 (en) * 2007-04-27 2008-11-06 Gary Stephen Shuster Flexible data storage system

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5971354B2 (ja) * 2013-01-25 2016-08-17 株式会社日立製作所 ストレージシステム
JPWO2014115320A1 (ja) * 2013-01-25 2017-01-26 株式会社日立製作所 ストレージシステム
JP2014182744A (ja) * 2013-03-21 2014-09-29 Nec Corp ディスク制御装置およびディスクの減設方法、ストレージシステム、並びにコンピュータ・プログラム
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置
GB2528585A (en) * 2013-05-17 2016-01-27 Hitachi Ltd Storage device
JP6073471B2 (ja) * 2013-05-17 2017-02-01 株式会社日立製作所 ストレージ装置
US9665286B2 (en) 2013-05-17 2017-05-30 Hitachi, Ltd. Storage device
JP2016170489A (ja) * 2015-03-11 2016-09-23 日本電気株式会社 プロビジョニング設定支援装置、プロビジョニング設定支援方法、そのプログラム及びシステム

Also Published As

Publication number Publication date
US20120011315A1 (en) 2012-01-12
WO2011086598A1 (en) 2011-07-21
US8650360B2 (en) 2014-02-11
JP5444464B2 (ja) 2014-03-19
US8468302B2 (en) 2013-06-18
US20130254482A1 (en) 2013-09-26

Similar Documents

Publication Publication Date Title
JP5444464B2 (ja) ストレージシステム
US10558383B2 (en) Storage system
US8984221B2 (en) Method for assigning storage area and computer system using the same
CN111158587B (zh) 基于存储池虚拟化管理的分布式存储系统及数据读写方法
JP4874368B2 (ja) フラッシュメモリを用いたストレージシステムの管理方法及び計算機
JP5112003B2 (ja) ストレージ装置及びこれを用いたデータ格納方法
WO2014115320A1 (ja) ストレージシステム及びデータ管理方法
US20110167236A1 (en) Storage system providing virtual volumes
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
WO2018138813A1 (ja) 計算機システム
US11507287B1 (en) Adding single disks to an array by relocating raid members
CN111090394A (zh) 一种基于卷级别raid的磁阵管理方法及装置
JP2020144459A (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
KR20210122726A (ko) 메모리제어장치 및 메모리제어장치의 동작 방법
JP5962621B2 (ja) ストレージ装置及びその制御方法、並びにストレージ制御プログラム
CN101997919B (zh) 一种存储资源的管理方法及管理装置
US11314608B1 (en) Creating and distributing spare capacity of a disk array
CN114415968B (zh) 存储系统及其数据写入方法
US11256428B2 (en) Scaling raid-based storage by redistributing splits
US10402095B1 (en) Online data expansion in redundant data storage systems
JP5222388B2 (ja) フラッシュメモリを用いたストレージシステムの管理システム及び管理方法
US11630596B1 (en) Sharing spare capacity of disks with multiple sizes to parallelize RAID rebuild
US11544005B2 (en) Storage system and processing method
US20240201862A1 (en) Disk array load balancing via interchangeable spare and data allocation
US11561695B1 (en) Using drive compression in uncompressed tier

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130829

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131220

R150 Certificate of patent or registration of utility model

Ref document number: 5444464

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees