JP6451770B2 - ストレージ制御装置およびストレージ制御プログラム - Google Patents

ストレージ制御装置およびストレージ制御プログラム Download PDF

Info

Publication number
JP6451770B2
JP6451770B2 JP2017083353A JP2017083353A JP6451770B2 JP 6451770 B2 JP6451770 B2 JP 6451770B2 JP 2017083353 A JP2017083353 A JP 2017083353A JP 2017083353 A JP2017083353 A JP 2017083353A JP 6451770 B2 JP6451770 B2 JP 6451770B2
Authority
JP
Japan
Prior art keywords
data
storage
storage area
unit
capacity expansion
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.)
Expired - Fee Related
Application number
JP2017083353A
Other languages
English (en)
Other versions
JP2018181172A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017083353A priority Critical patent/JP6451770B2/ja
Priority to US15/955,866 priority patent/US20180307427A1/en
Publication of JP2018181172A publication Critical patent/JP2018181172A/ja
Application granted granted Critical
Publication of JP6451770B2 publication Critical patent/JP6451770B2/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/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
    • 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

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)

Description

本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
ストレージシステムは、複数の記憶装置を有して、情報処理で扱う大量のデータを記録管理する。また、近年では、記憶装置として、HDD(Hard Disk Drive)よりも高速なSSD(Solid State Drive)を用いたストレージシステムの採用が広がっている。
一方、ストレージシステムに格納されるデータ量は年々増加していることから、ストレージシステム内の記憶領域を効率よく使用して、実際に使用する物理記憶領域の容量を削減するための技術が注目されている。
物理記憶領域の容量を削減する技術として、シン・プロビジョニング(Thin Provisioning)がある。シン・プロビジョニングは、記憶装置を多重化したRAID(Redundant Array of Inexpensive Disks)グループを束ねてプール(ストレージプール)として管理し、仮想化された論理ボリュームに書き込まれたデータ量に応じて記憶装置の容量を割り当てる。
特開2010−79886号公報 特表2014−506367号公報
シン・プロビジョニングでは、記憶装置の容量を論理的に増加させるが、物理的な記憶容量が増加するものではないので、物理的な記憶容量の余裕が減少した際には、記憶装置の増設が行われる。また、シン・プロビジョニングの物理割当の単位(データがストライプされる単位)は、チャンク(chunk)と呼ばれる記憶領域単位で行われる。
記憶装置の増設時、チャンクの大きさ(チャンクサイズ)には無関係に容量拡張化が行われている。この場合、例えば、ユーザデータの物理アドレスを管理する管理データを扱うストレージシステムに対して、このような容量拡張化が実施されると、管理データの物理位置情報が変わってしまう可能性がある。
このため、増設前のチャンクサイズに依存して記憶装置の構成本数を増やせば、該物理位置情報が変わらないように記憶装置を増設することができる。しかし、このような記憶装置の増設を行うと、RAIDグループ毎に記憶装置の増設数が多くなるなど、記憶容量の拡張化の自由度が低くなる。
1つの側面では、本発明は、記憶容量の拡張化自由度を高めたストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
上記課題を解決するために、ストレージ制御装置が提供される。ストレージ制御装置は、制御部を備える。制御部は、ストレージグループを構成する複数の記憶装置に対して、所定のデータ量を有するデータ格納領域単位でバッファ上のデータを格納する制御を行い、ストレージグループの容量拡張を行う場合、容量拡張後のストレージグループ内の記憶装置の数に応じたストライプサイズで、所定のデータ量になるようなストライプサイズの倍数のストライプ数を有する新データ格納領域単位を決定し、容量拡張前のストレージグループに旧データ格納領域単位で格納されているデータを一時記憶領域へ移動し一時記憶領域から容量拡張後のストレージグループを構成する複数の記憶装置へのデータの書き戻しを、新データ格納領域単位で行ってデータ再配置を行う。
また、上記課題を解決するために、コンピュータに上記ストレージ制御装置と同様の制御を実行させるプログラムが提供される。
1側面によれば、記憶容量の拡張化自由度を高めることが可能になる。
ストレージ制御装置の構成の一例を示す図である。 ストレージ制御システムの構成の一例を示す図である。 プールの一例を示す図である。 RAIDユニットの一例を示す図である。 ドライブグループ構成本数とRAIDユニットサイズとの関係の一例を示す図である。 RAIDユニットの獲得の一例を示す図である。 RAIDユニットの解放の一例を示す図である。 ドライブグループに書き込まれるユーザデータおよび論物メタの管理方法について説明するための図である。 メタアドレスのフォーマットの一例を示す図である。 論物メタのフォーマットの一例を示す図である。 ドライブグループのドライブ増設の一例を示す図である。 ストレージ制御装置のハードウェア構成の一例を示す図である。 DGE処理の一例を示す図である。 DGE処理の全体動作を示すフローチャートである。 メタアドレスのDGE処理の一例を示す図である。 論物メタのDGE処理の一例を示す図である。 論物メタのDGE処理のフローチャートを示す図である。 ユーザデータのDGE処理の一例を示す図である。 ユーザデータのDGE処理のフローチャートを示す図である。 DGE処理中のIO制御の一例を示す図である。 DGE処理中のIO制御のフローチャートを示す図である。
以下、本実施の形態について図面を参照して説明する。
図1はストレージ制御装置の構成の一例を示す図である。ストレージ制御装置1は、ストレージグループ1aと制御部1bを備える。ストレージグループ1aは、複数の記憶装置M1、・・・、Mnを含む。
制御部1bは、ストレージグループ1aの容量拡張を行う場合、容量拡張後のストレージグループ内の記憶装置の数に応じた新データ格納領域単位を生成する。そして、制御部1bは、新データ格納領域単位で、容量拡張後のストレージグループのデータ再配置を行う。
ここで、ストレージグループ1a−1は、容量拡張前であり、記憶装置M1、・・・、M6を含む。また、ストレージグループ1a−1の記憶領域は、旧データ格納領域単位11、・・・、14を含み、1つの旧データ格納領域単位は、ストライプ数5本で形成されている。
ストレージグループ1a−1に対して、記憶装置M7が追加されて、容量の拡張が行われるとする。ストレージグループ1a−2は、容量拡張後であり、記憶装置M1、・・・、M7を含む。制御部1bは、容量拡張後のストレージグループ1a−2内の記憶装置M1、・・・、M7の数に応じた新データ格納領域単位を生成し、新データ格納領域単位に対してデータ再配置を行う。
図1の例では、ストレージグループ1a−2の記憶領域は、新データ格納領域単位11a、・・・、15aを含む。また、1つの新データ格納領域単位は、ストライプ数4本で形成され、ストライプサイズは、容量拡張前の旧データ格納領域単位のストライプサイズよりも伸長している。
このように、ストレージ制御装置1は、容量拡張後のストレージグループ内の記憶装置の数に応じた新データ格納領域単位を生成し、新データ格納領域単位でデータ再配置を行う。これにより、記憶容量の拡張化自由度を高めることが可能になり、よって、旧データ格納領域単位に依存した記憶装置の増設による記憶容量の拡張化と比較して、小規模な記憶容量の拡張化が可能になる。
<システム構成>
次にストレージ制御装置1の機能を含むストレージ制御システムについて説明する。図2はストレージ制御システムの構成の一例を示す図である。ストレージ制御システム2は、ノードブロックNB1、NB2、ホスト20−1、20−2およびスイッチSWを有する。
ノードブロックNB1は、一対のノードN1、N2を含み、ノードブロックNB2は、一対のノードN3、N4を含む。ノードブロックNB1は、ノードN1、N2間でデータの二重化や、ストレージへのデータの書き込み/読み出し処理であるIO(入出力)処理の負荷分散を行う。ノードブロックNB2もノードN3、N4間で同様の動作を行う。
また、ノードブロックNB1、NB2は、スイッチSWで接続されることで、ノードブロックの拡張化が可能なスケールアウトの接続構成になっている。
ノードブロックNB1は、記憶装置(ストレージデバイス)26−1、・・・、26−nを備える(ノードブロックNB2内の記憶装置の図示は省略)。ノードN1、N2は、記憶装置26−1、・・・、26−nに対して、データのIO制御を行う。
すなわち、ノードN1、N2は、ホスト20−1、20−2からのデータ読み出し(Read IO)およびデータ書き込み(Write IO)の要求にもとづいて、記憶装置26−1、・・・、26−nに対してIO制御を行う。
ノードN1は、インタフェース部21−1、プロセッサ22a−1、22b−1、メモリ23−1、ドライバ24−1を含む。ノードN2は、インタフェース部21−2、プロセッサ22a−2、22b−2、メモリ23−2、ドライバ24−2を含む。
なお、ノードN1、N2は、図1のストレージ制御装置1の機能を有する。ノードN1、N2のプロセッサ22a−1、22b−1、22a−2、22b−2は、制御部1bの機能を実現する。また、記憶装置26−1、・・・、26−nは、ストレージグループ1a内の記憶装置M1、・・・、Mnに対応する。
ノードN1の構成要素において、インタフェース部21−1は、ノードN1と、ホスト20−1、20−2とをマルチパスで接続する。インタフェース部21−1は、例えば、EC−H(Expansion Card for Host)が使用される。
EC−Hは、SAN(Storage Area Network)を構築するインタフェースアダプタに接続される。例えば、光ファイバを利用した大規模SANを構築するFC(Fibre Channel)やIP(Internet Protocol)ネットワークを利用した小中規模SANを構築するiSCSI(Internet Small Computer System Interface)等に接続される。
プロセッサ22a−1、22b−1は、例えば、CPU(Central Processing Unit)またはMPU(Micro Processing Unit)等であって、マルチプロセッサ構成をとり、ノードN1内の機能全体を制御する。
メモリ23−1は、ノードN1のメインメモリとして利用され、プロセッサ22a−1、22b−1に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
ドライバ24−1は、プロセッサ22a−1、22b−1と、記憶装置26−1、・・・、26−nとの間でデータ転送を行う。ドライバ24−1は、例えば、PCIe(Peripheral Component Interconnect Express)プロトコルに従って、データをドライブ転送するPCIeSW(Switch)が使用される。なお、ノードN2の構成要素もノードN1と同様であり説明は省略する。
一方、MP(Middle Plane)25は、ノードN1、N2間の通信をインターコネクト(相互接続)する伝送路であり冗長化されている。
記憶装置26−1、・・・、26−nは、例えば、SSDであり、冗長アレイ化されている。記憶装置26−1、・・・、26−nは、ノードN1のドライバ24−1と、ノードN2のドライバ24−2との双方に接続して、ノードN1、N2間で共有される。
また、記憶装置26−1、・・・、26−nには、例えば、PCIeを通じてSSDを接続するNVMe(Non Volatile Memory Express)規格のSSD(NVMe_SSD)が使用される。
<プール>
図3はプールの一例を示す図である。図2に示した記憶装置26−1、・・・、26−nは、プールによって管理される。プールとは、記憶装置の仮想的な集合体であり、仮想化プールP11および階層化プールP12に分けられる。
ストレージの階層化(ティアリング:Tiering)が行われた際、1つのプールに1つのティア(Tier:層)を含むプールが仮想化プールP11であり、1つのプールに2以上のティアを含むプールが階層化プールP12である。
また、ティアには、1つ以上のドライブグループが含まれる。ドライブグループは、例えば、6本から24本の記憶装置(ドライブ)を含むグループであり、RAIDに相当する。
一方、記憶装置の記憶空間は、複数のストライプで構成される。データ書き込み時、分割したデータは、ストライプに書き込まれ(ストライピング)、パリティ計算が行われて計算結果が保持され、パリティによるデータ保護が行われる。このため、ドライブグループを構成する記憶装置の内、例えば、2本はパリティデータ(PパリティおよびQパリティ)を記憶するパリティデバイスとして使用される。
さらに、故障等によって1つの記憶装置の使用が中止されると、使用が中止された記憶装置に記憶されていたデータが再構築されて、他の記憶装置に格納されるリビルド(Rebuild)処理が行われる。この場合、ホットスペア(Hot Spare)と呼ばれる予備用記憶装置が用いられる。このため、ドライブグループを構成する記憶装置の内、例えば、1本はホットスペアとして使用される。
<RAIDユニット>
シン・プロビジョニングの物理割当の単位は、一般に固定サイズのチャンク単位で行われ、1チャンクは1RAIDユニットに該当する。以降の説明では、チャンクをRAIDユニットと呼称する。
図4はRAIDユニットの一例を示す図である。ドライブグループDpは、記憶装置dk0、・・・、dk5を備える。ドライブグループDpの記憶空間は、ストライプで形成される。ストライプは、記憶装置dk0、・・・、dk5に渡って延びており、記憶装置dk0、・・・、dk5それぞれのブロックを有している(1ブロックは例えば、128KB容量)。
ストライプs0〜s5の格納状態について、記憶装置dk0、・・・、dk5のブロック順に示すと、ストライプs0では、データd0、d1、d2、パリティP0、パリティQ0、ホットスペアHS0が格納されている。ストライプs1では、データd4、d5、パリティP1、パリティQ1、ホットスペアHS1、データd3が格納されている。
ストライプs2では、データd8、パリティP2、パリティQ2、ホットスペアHS2、データd6、データd7が格納されている。ストライプs3では、パリティP3、パリティQ3、ホットスペアHS3、データd9、d10、d11が格納されている。
ストライプs4では、パリティQ4、ホットスペアHS4、データd12、d13、d14、パリティP4が格納されている。ストライプs5では、ホットスペアHS5、データd15、d16、d17、パリティP5、パリティQ5が格納されている。
上記のような格納状態において、例えば、ストライプs0、・・・、s5の記憶領域が1つのRAIDユニットとなる。RAIDユニットのサイズは、ストライプサイズの倍数であり、ストライプサイズ×nである。nは、RAIDユニットが所定値(例えば、24MB程度)となるような値が設定される。
図5はドライブグループ構成本数とRAIDユニットサイズとの関係の一例を示す図である。テーブルT0は、項目として、ドライブグループ構成本数、RAIDユニットサイズ(MB)および物理割当RAIDユニットサイズ(MB)を有する。
ドライブグループ構成本数は、1つのドライブグループが有する記憶装置の数である。RAIDユニットサイズは、パリティとホットスペアの記憶領域を含まないデータのみの記憶領域のRAIDユニットサイズを示す。物理割当RAIDユニットサイズは、データ、パリティおよびホットスペアの記憶領域を含んだRAIDユニットサイズを示す。
なお、テーブルT0のドライブグループ構成本数=6の欄は、データを格納する3本の記憶装置と、パリティを格納する2本の記憶装置と、ホットスペア用の1本の記憶装置とを含む。ドライブグループ構成本数が7、8、・・・と増えると、データを格納する記憶装置が増えていくことになる(いずれの構成本数に対しても、パリティ2本、ホットスペア1本は変わらない)。
よって、テーブルT0のドライブグループ構成本数=24の欄は、データを格納する記憶装置が21本、パリティを格納する記憶装置が2本およびホットスペア用の記憶装置が1本となる。
<RAIDユニットの獲得・解放>
次にRAIDユニットの獲得、解放について図6、図7を用いて説明する。図6はRAIDユニットの獲得の一例を示す図である。初期設定時、オフセットスタックには、RAIDユニット番号が先頭から配列として格納されている。そして、オフセットスタックに対してスタックポインタが示すRAIDユニット番号が獲得される。
獲得手順としては、スタックポインタが示す位置のRAIDユニット番号が取り出され、取り出された位置に無効値(0xFFFFFFFF)が挿入される。そして、スタックポインタを1つ下へ移動させる。
図6の例において、オフセットスタック内のスタックst0に、スタックポインタspが位置している。したがって、スタックst0に格納されるRAIDユニット番号(0x00000000)が獲得される。
また、RAIDユニット番号(0x00000000)の獲得後、スタックst0には無効値(0xFFFFFFFF)が挿入され、スタックポインタspは1つ下のスタックst1へ移動する。
図7はRAIDユニットの解放の一例を示す図である。RAIDユニットの解放手順は、上記の獲得手順の逆操作となる。すなわち、スタックポインタを1つ上に戻し、戻したスタックポインタが示すスタックにRAIDユニット番号が挿入される。
図7の例において、オフセットスタック内のスタックst1に、スタックポインタspが位置している。したがって、スタックポインタspは1つ上のスタックst0へ移動する。移動したスタックポインタspが示すスタックst0には、無効値(0xFFFFFFFF)が挿入されており、スタックst0に対して、解放対象のRAIDユニット番号(0x00000000)が挿入される。
<SSDの寿命管理>
ストレージ制御システム2の記憶装置26−1、・・・、26−nには例えば、SSDが使用される。SSDは、HDDよりも高速アクセスが可能であるが、SSDのデバイスの特性上、ランダムライト(ランダムアクセス)を苦手としており、ランダムライトのようなデータ書き込みや消去によって記憶素子が劣化しやすい。このため、信頼性確保のために、SSDの寿命管理が行われる。
SSDの寿命管理としては、ランダムライトの性能向上が行われる。この場合、データを連続的なログフォーマットとして管理し、連続データとしてSSDに追記書きすることが行われる。
また、データの重複排除(De-duplication)と、データ圧縮とが行われる。重複排除は、ファイルを任意の長さに分割して、分割ブロック毎に、重複するデータを排除するものである。
重複排除とデータ圧縮を組み合わせることで、SSDに書き込むデータ量を削減し、さらに追記書きを行ってストライプバウンダリかつSSDのページバウンダリでデータを書き込むことで、SSDの寿命を最大化することができる。
一方、上記の重複排除や追記書きを行うための管理データとして、論物メタ(logical physical meta)情報およびメタアドレス(meta address)が用いられる。
論物メタ情報(以下、論物メタと略す)は、記憶装置上でユーザデータが格納されている物理アドレスを少なくとも管理するデータである。メタアドレスは、記憶装置(またはオンメモリ)上で論物メタが格納されている物理アドレスを少なくとも管理するデータである。
なお、ユーザデータユニット(データログとも呼ばれる)は、データ圧縮されたユーザデータを格納する記憶領域を示すものであり、例えば、8KB単位に圧縮されたデータを格納するデータ部と、ヘッダ部(参照メタとも呼ばれる)とを有する。ヘッダ部には、圧縮データのハッシュ値や圧縮データをポイントするための論物メタの情報等が格納される。また、ユーザデータユニットは、以下略してユーザデータと表記する。なお、ハッシュ値は重複を検索する際のキーワードとして利用される。
ここで、メタアドレス、論物メタおよびユーザデータそれぞれは、RAIDユニットに格納されるので、メタアドレスから論物メタの物理位置をポイントする情報、論物メタからユーザデータの物理位置をポイントする情報は、RAIDユニット番号と、オフセットLBA(Logical Block Address)により指定される。
<メタ構造の管理>
次にメタ構造(ユーザデータ、論物メタおよびメタアドレス)管理について説明する。図8はドライブグループに書き込まれるユーザデータおよび論物メタの管理方法について説明するための図である。(A)に示すように、実データD0をドライブプールDpに書き込むとき、実データD0には参照情報41が付加されてユーザデータ42が生成される。
参照情報41は、SB(Super Block)43aと、参照LUN(Logical Unit Number)/LBA情報43bを含む。
SB43aは、例えば、32バイトに設定され、参照情報41の長さを示すヘッダ長(Header length)や実データD0のハッシュ値(Hash Value)等を含む。
参照LUN/LBA情報43bは、例えば、8バイトに設定され、実データD0が格納される論理領域のLUN、およびその格納位置を示すLBAを含む。つまり、参照LUN/LBA情報43bは、実データD0の論理的な格納先に関する情報を含む。
ここで、実データD0と同じ内容の実データDxを書き込む場合、実データDxの格納先となる論理領域のLUN、およびその格納位置を示すLBAを含む参照LUN/LBA情報43bが生成される。また、実データDxの参照LUN/LBA情報43bが実データD0のユーザデータ42に追加される。
一方、(B)のように、ユーザデータ42は、メモリ23−1に一時的に格納される。そして、複数の実データのそれぞれに対応する複数のユーザデータがメモリ23−1に追記され、所定のデータ量(例えば、24MB)を単位としてドライブプールDkに書き出す制御が実施される。
また、(C)の例では、ユーザデータUD#1、UD#2、…、US#mを結合したデータがドライブプールDpに書き込まれている。なお、(C)の矢印(a)、(b)、(c)は、参照LUN/LBA情報43bと実データとの対応関係を示している。ドライブプールDpには、ユーザデータ42の他に、メタアドレスおよび論物メタが書き込まれる。
論物メタ44は、論理アドレスと物理アドレスとを対応付ける情報である。メタアドレス45は、ドライブプールDpにおける論物メタ44の位置情報である。メタアドレス45および論物メタ44もRAIDユニット単位でドライブプールDpに書き込まれる。
他方、ユーザデータ42および論物メタ44は、RAIDユニット単位のデータが集まったタイミングでドライブプールDpに順次追記される。そのため、(C)に示すように、メタアドレス45がドライブプールDpの所定範囲(この例では先頭から所定範囲)に書き込まれ、ユーザデータ42および論物メタ44は混在する。
図9はメタアドレスのフォーマットの一例を示す図である。メタアドレス45は、ドライブプールDpの識別情報(Disk Pool No.)を含む。また、メタアドレス45は、対応する論物メタ44のRAIDユニットを特定するための識別情報(RAID Unit No.)を含む。
さらに、メタアドレス45は、対応する論物メタ44があるRAIDユニット内の位置情報(RAID Unit Offset LBA)を含む。メタアドレス45が参照されることで、ドライブプールDpに格納されている論物メタ44を検索することができる。
図10は論物メタのフォーマットの一例を示す図である。論物メタ44は、論理アドレス情報44aおよび物理アドレス情報44b等を含む。論理アドレス情報44aには、ユーザデータ42が格納される論理領域のLUNおよびその格納位置を示すLBAが含まれる。
また、物理アドレス情報44bには、ユーザデータ42が格納されるドライブプールDpの識別情報(Disk Pool No.)、そのドライブプールDpにおけるRAIDユニットの識別情報(RAID Unit No.)、そのRAIDユニット内の位置情報(RAID Unit LBA)が含まれる。
<ドライブ増設による活性容量拡張処理>
図11はドライブグループのドライブ増設の一例を示す図である。ドライブグループの構成本数を活性増設する場合、活性容量拡張処理が実施される。
図11では、RAID5(分割されたデータのブロックとパリティが複数のドライブに分散して書き込まれるタイプのRAID)の増設例として、増設前が1ストライプに3データ、1パリティのRAID5を、1ストライプに4データ、1パリティに増設する例を示している。
まず、増設前のドライブグループに対し、テンポラリバッファ3の領域にステージング処理(記憶装置のデータを読み出し、テンポラリバッファへ格納する処理)が行われる。そして、テンポラリバッファ3に格納されたデータを、増設後のドライブグループの記憶装置にライト(ライトバック)する処理が行われる。
上記の動作は、ドライブグループ内の記憶装置の先頭のストライプから開始される。また、増設前のドライブグループ(以下、旧構成と呼ぶ)と、増設後のドライブグループ(以下、新構成と呼ぶ)とのストライプサイズの最小公倍数のサイズで、旧構成からデータがリードされる。そして、リードされたデータはテンポラリバッファ3に一旦格納され、パリティが再生成された後、新構成に対してライトされる。
ここで、上記のような活性容量拡張処理では、増設前のRAIDユニットには無関係に容量拡張化が行われるので、論物メタおよびユーザデータの物理位置情報がずれてしまう可能性がある。増設前のRAIDユニットに依存して記憶装置の構成本数を増やせば、該物理位置情報が変わらないように記憶装置を増設することも可能ではあるが、記憶容量の拡張化自由度が低く、記憶容量の拡張化の規模が大きくなる。
このような状況に鑑みて、本発明では、記憶容量の拡張化自由度を高め、RAIDユニットに依存した記憶装置の増設による記憶容量の拡張化と比較して、小規模な記憶容量の拡張化を可能にするものである。
<ハードウェア構成>
次にストレージ制御装置1のハードウェア構成について説明する。図12はストレージ制御装置のハードウェア構成の一例を示す図である。ストレージ制御装置1は、プロセッサ100によって装置全体が制御されている。すなわち、プロセッサ100は、ストレージ制御装置1の制御部1bとして機能する。
プロセッサ100には、バス103を介してメモリ101と複数の周辺機器が接続されている。プロセッサ100は、図2で示したようにマルチプロセッサであってもよい。プロセッサ100は、例えば、CPU、MPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ100は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
メモリ101は、図2に示したメモリ23−1、23−2に対応し、ストレージ制御装置1の主記憶装置として使用される。メモリ101には、プロセッサ100に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ101には、プロセッサ100による処理に要する各種メッセージが格納される。
また、メモリ101は、ストレージ制御装置1の補助記憶装置としても使用され、OSのプログラム、アプリケーションプログラム、および各種メッセージが格納される。メモリ101は、補助記憶装置として、フラッシュメモリやSSD等の半導体記憶装置やHDD等の磁気記録媒体を含んでもよい。
バス103に接続されている周辺機器としては、入出力インタフェース102およびネットワークインタフェース104がある。入出力インタフェース102は、プロセッサ100からの命令に従ってストレージ制御装置1の状態を表示する表示装置として機能するモニタ(例えば、LED(Light Emitting Diode)やLCD(Liquid Crystal Display)等)が接続されている。
また、入出力インタフェース102は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ100に送信する。
さらに、入出力インタフェース102は、図2に示したドライバ24−1、24−2の機能を含み、ストレージデバイスと接続する。また、入出力インタフェース102は、その他の周辺機器を接続するための通信インタフェースとしても機能する。
例えば、入出力インタフェース102は、レーザ光等を利用して、光ディスクに記録されたメッセージの読み取りを行う光学ドライブ装置を接続することができる。光ディスクは、光の反射によって読み取り可能なようにメッセージが記録された可搬型の記録媒体である。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(Rewritable)等がある。
また、入出力インタフェース102は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース102との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのメッセージの書き込み、またはメモリカードからのメッセージの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
ネットワークインタフェース104は、図2に示したインタフェース部21−1、21−2の機能を含み、ホスト20−1、20−2と接続する。また、ネットワークインタフェース104は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等の機能を有してもよく、ネットワークインタフェース104で受信された信号やメッセージ等は、プロセッサ100に出力される。
以上のようなハードウェア構成によって、ストレージ制御装置1の処理機能を実現することができる。例えば、ストレージ制御装置1は、プロセッサ100がそれぞれ所定のプログラムを実行することで、ストレージ制御を行うことができる。
ストレージ制御装置1は、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。ストレージ制御装置1に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
例えば、ストレージ制御装置1に実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ100は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ100からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ100が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
<ドライブグループ拡張処理>
次にストレージ制御装置1によるドライブグループ拡張処理の全体動作について、図13、図14を用いて説明する。なお、以降では、本発明のドライブグループ拡張処理をDGE(Drive Group Expansion)処理と呼称する。
図13はDGE処理の一例を示す図である。DGE処理実施前のドライブグループDr1において、ドライブグループDr1は、記憶装置dk0、・・・、dk5を含む。また、ドライブグループDr1の記憶領域に対し、RAIDユニット#0、・・・、#3(旧データ格納領域単位に該当)が格納される。RAIDユニット#0、・・・、#3それぞれは、ストライプ数が5本になっている。
DGE処理実施後のドライブグループDr2において、ドライブグループDr2は、ドライブdk0、・・・、dk6を含み、新たに記憶装置dk6が増設される。ドライブグループDr2の記憶領域に対し、RAIDユニット#0a、・・・、#4a(新データ格納領域単位に該当)が格納され、RAIDユニット#4aが増えている。
この場合、RAIDユニット#0a、・・・、#3aそれぞれは、拡張前のRAIDユニット#0、・・・、#3に対応している。RAIDユニット#0a、・・・、#4aは、ストライプ数が4本になって拡張前よりも減少するが、ストライプサイズは拡張前よりも増加する。
このように、DGE処理後のドライブグループDr2では、RAIDユニットのストライプ数は減少し、ストライプサイズが増加する。DGE処理によって拡張された記憶領域に対し、RAIDユニットを先頭から格納していくことにより、記憶領域の末尾には空き領域ができるので、この空き領域に新しいRAIDユニットを割り当てることで、記憶容量の追加が実現される。
図14はDGE処理の全体動作を示すフローチャートである。ドライブグループの記憶領域の先頭のRAIDユニットから順にDGE処理が実施される。
〔ステップS10〕制御部1bは、処理対象のRAIDユニットを選択する。
〔ステップS11〕制御部1bは、選択されたRAIDユニットの用途がメタアドレス、論物メタ、ユーザデータおよび未割当のいずれに対するDGE処理を行うかを判別する。メタアドレスの場合はステップS12aへ、論物メタの場合はステップS13aへ、ユーザデータの場合はステップS14aへ、未割当の場合はステップS15aへ処理が進む。
〔ステップS12a〕制御部1bは、メタアドレスに対するDGE処理を実施する。
〔ステップS12b〕制御部1bは、未処理のRAIDユニットが有るか否かを判別する。未処理のRAIDユニットが有る場合は、未処理のRAIDユニットのメタアドレスに対するDGE処理を実施するためにステップS12aへ処理が戻り、未処理のRAIDユニットが無い場合は、ステップS16へ処理が進む。
〔ステップS13a〕制御部1bは、論物メタに対するDGE処理を実施する。
〔ステップS13b〕制御部1bは、未処理のRAIDユニットが有るか否かを判別する。未処理のRAIDユニットが有る場合は、記憶領域の末尾まで論物メタに対するDGE処理を実施するためにステップS13aへ処理が戻り、未処理のRAIDユニットが無い場合は、ステップS16へ処理が進む。
〔ステップS14a〕制御部1bは、ユーザデータに対するDGE処理を実施する。
〔ステップS14b〕制御部1bは、未処理のRAIDユニットが有るか否かを判別する。未処理のRAIDユニットが有る場合は、記憶領域の末尾までユーザデータに対するDGE処理を実施するためにステップS14aへ処理が戻り、未処理のRAIDユニットが無い場合は、ステップS16へ処理が進む。
〔ステップS15a〕制御部1bは、未割当に対するDGE処理を実施する。
〔ステップS15b〕制御部1bは、未処理のRAIDユニットが有るか否かを判別する。未処理のRAIDユニットが有る場合は、記憶領域の末尾まで未割当に対するDGE処理を実施するようにステップS15aへ処理が戻り、未処理のRAIDユニットが無い場合は、ステップS16へ処理が進む。
〔ステップS16〕制御部1bは、全RAIDユニットの処理が完了したか否かを判別する。処理が完了した場合はステップS16へ処理が進み、処理が未完了の場合はステップS10へ処理が戻る。
〔ステップS17〕制御部1bは、RAIDユニットのオフセットスタックに、追加したRAIDユニットの番号を追加してオフセットスタックを拡張し、ドライブグループの記憶容量を拡張する。
<メタアドレスのDGE処理>
図15はメタアドレスのDGE処理の一例を示す図である。RAIDユニット#0、・・・、#4のメタアドレスまでDGE処理が終了し、RAIDユニット#5のメタアドレスのDGE処理が行われるものとする。
〔ステップS21〕制御部1bは、テンポラリバッファ3aに対して、旧構成のRAIDユニット#5のメタアドレスのステージング処理を行う。
〔ステップS22〕制御部1bは、テンポラリバッファ3aに格納されたメタアドレスを、新構成としてライトバック処理する。
〔ステップS23〕制御部1bは、RAIDユニット単位のDGE進捗標示を進める。DGE進捗標示済みのRAIDユニットは、新構成のRAIDユニットとして扱われ、進捗未標示のRAIDユニットは、旧構成のRAIDユニットとして扱われる。このように、RAIDユニット単位で進捗管理が行われるので、処理の順序性を保障することができる。
なお、メタアドレスのDGE処理では、記憶領域の末尾までのRAIDユニットの格納が発生せず、記憶容量の空きが生じる場合がある(メタアドレスは固定容量で(例えば、24MB)常時格納されるため)。よって、メタアドレスのDGE処理では、DGE処理で記憶領域が拡張された場合でも、メタアドレスとLBAの対応関係は拡張前と比べて変わることはない。
<論物メタのDGE処理>
次に論物メタのDGE処理について図16、図17を用いて説明する。図16は論物メタのDGE処理の一例を示す図である。
〔ステップS31〕制御部1bは、テンポラリバッファ3aに対して、旧構成のRAIDユニット#5の論物メタのステージング処理を行う。
〔ステップS32〕制御部1bは、テンポラリバッファ3a上の論物メタの有効・無効を判断する。
〔ステップS33〕制御部1bは、論物メタが有効の場合、追記書きバッファ3bの論物メタバッファ領域3b−1に論物メタを追記書きする。
〔ステップS34〕論物メタの物理アドレスが変わるため、制御部1bは、メタアドレスキャッシュメモリ3c上の論物メタのメタアドレスを更新する。なお、ステップS31からS34までの処理は、テンポラリバッファ3a上の論物メタ数分繰り返される。
〔ステップS35〕制御部1bは、RAIDユニット単位のDGE進捗標示を進める。
〔ステップS36〕制御部1bは、RAIDユニット#5を解放する。このように、旧RAIDユニットに無効化可能な論物メタがある場合は、新構成のRAIDユニットの構築時に解放されてデータ再配置は実施されないので、データ再配置の作業量を削減することができる。
〔ステップS37〕制御部1bは、DGE処理と非同期に、IO延長で追記書きバッファ3b(論物メタバッファ領域3b−1)がフルになったらライトバックする。
図17は論物メタのDGE処理のフローチャートを示す図である。
〔ステップS41〕制御部1bは、旧構成のRAIDユニットからテンポラリバッファ3aにステージング処理を行う。
〔ステップS42〕制御部1bは、ステップS42aからS42cまでの処理をRAIDユニット内の論物メタの数分繰り返す。すべての論物メタに対してステップS42aからS42cまでの処理が完了するとステップS43へ処理が進む。
〔ステップS42a〕制御部1bは、論物メタが有効か否かを判別する。有効の場合はステップS42bへ処理が進み、有効でない場合は次の論物メタが有効か否かの判別処理を行う。
〔ステップS42b〕制御部1bは、追記書きバッファ3bに論物メタを書き込む。
〔ステップS42c〕制御部1bは、メタアドレスを更新する。
〔ステップS43〕制御部1bは、DGE進捗標示を進める。
〔ステップS44〕制御部1bは、RAIDユニットの解放を行う。
<ユーザデータのDGE処理>
次にユーザデータのDGE処理について図18、図19を用いて説明する。図18はユーザデータのDGE処理の一例を示す図である。
〔ステップS51〕制御部1bは、テンポラリバッファ3aに対して、旧構成のRAIDユニット#5のユーザデータのステージング処理を行う。
〔ステップS52〕制御部1bは、テンポラリバッファ3a上のユーザデータの有効・無効を判断する。
〔ステップS53〕制御部1bは、ユーザデータが有効の場合、追記書きバッファ3bのユーザデータバッファ領域3b−2にユーザデータを追記書きする。
〔ステップS54a〕制御部1bは、ユーザデータに対する論物メタが格納されているRAIDユニットから、該論物メタを読み出す。
〔ステップS54b〕制御部1bは、ユーザデータの物理位置が変わるため、論物メタのユーザデータのポイント情報を更新する。
〔ステップS55a〕制御部1bは、更新後の論物メタを、追記書きバッファ3bの論物メタバッファ領域3b−1に追記書きする。
〔ステップS55b〕論物メタの物理アドレスが変わるため、制御部1bは、メタアドレスキャッシュメモリ3c上のメタアドレスの論物メタをポイントする情報を更新する。なお、ステップS51からS55bまでの処理は、テンポラリバッファ3a上のユーザデータ数分繰り返される。
〔ステップS56〕制御部1bは、RAIDユニット単位のDGE進捗標示を進める。
〔ステップS57〕制御部1bは、RAIDユニット#5を解放する。このように、旧RAIDユニットに無効化可能なユーザデータがある場合は、新構成のRAIDユニットの構築時に解放されてデータ再配置は実施されないので、データ再配置の作業量を削減することができる。
〔ステップS58〕制御部1bは、DGE処理と非同期に、IO延長で追記書きバッファ3b(ユーザデータバッファ領域3b−2)がフルになったら、新構成のRAIDユニットにユーザデータをライトバックする。
図19はユーザデータのDGE処理のフローチャートを示す図である。
〔ステップS61〕制御部1bは、旧構成のRAIDユニットからテンポラリバッファ3aにステージング処理を行う。
〔ステップS62〕制御部1bは、ステップS62aからS62fまでの処理をRAIDユニット内のユーザデータの数分繰り返す。すべてのユーザデータに対してステップS62aからS62fまでの処理が完了するとステップS63へ処理が進む。
〔ステップS62a〕制御部1bは、ユーザデータが有効か否かを判別する。有効の場合はステップS62bへ処理が進み、有効でない場合は次のユーザデータが有効か否かの判別処理を行う。
〔ステップS62b〕制御部1bは、追記書きバッファ3bにユーザデータを書き込む。
〔ステップS62c〕制御部1bは、論物メタを読み出す。
〔ステップS62d〕制御部1bは、論物メタの更新を行う。
〔ステップS62e〕制御部1bは、追記書きバッファ3bに論物メタを書き込む。
〔ステップS62f〕制御部1bは、メタアドレスを更新する。
〔ステップS63〕制御部1bは、DGE進捗標示を進める。
〔ステップS64〕制御部1bは、RAIDユニットの解放を行う。
<DGE処理中のIO制御>
次にDGE処理中のIO制御について図20、図21を用いて説明する。図20はDGE処理中のIO制御の一例を示す図である。DGE処理中のIO制御については、制御部1bは、DGE処理済みのRAIDユニット番号を境に、DGE処理済みの範囲に対しては、新構成としてIO制御(Read IOおよびWrite IO)を行う。
図20の例において、RAIDユニット#13までがDGE処理済みとする。この場合、制御部1bは、RAIDユニット#0、・・・、#13を新構成としてのIO制御を行い、RAIDユニット#14以降を旧構成としてのIO制御を行う。
図21はDGE処理中のIO制御のフローチャートを示す図である。
〔ステップS71〕制御部1bは、アクセス対象のドライブグループがDGE処理中か否かを判別する。DGE処理中でない場合は、ステップS72へ処理が進み、DGE処理中の場合は、ステップS73へ処理が進む。
〔ステップS72〕制御部1bは、通常のIO制御を実施する。
〔ステップS73〕制御部1bは、DGE進捗標示にもとづき、DGE処理済みか否かを判別する。アクセス対象のRAIDユニットがDGE処理済みの場合は、ステップS74aへ処理が進み、DGE処理済みでない場合は、ステップS74bへ処理が進む。
〔ステップS74a〕制御部1bは、アクセス対象のRAIDユニットに対して、新構成としてのIO制御を行う。
〔ステップS74b〕制御部1bは、アクセス対象のRAIDユニットに対して、旧構成としてのIO制御を行う。
以上説明したように、本発明によれば、容量拡張後のストレージグループ内の記憶装置の数に応じた新たなRAIDユニットを生成してデータ再配置を行う。これにより、記憶容量の拡張化自由度を高めることができる。よって、旧構成のRAIDユニットに依存した記憶装置の増設による記憶容量の拡張化と比較して、例えば、ドライブグループの1本単位の記憶装置の増設が可能になるので、メタ構造の物理位置情報を更新しつつ、小規模な記憶容量の拡張化が可能になる。
また、本発明のDGE処理では、旧構成から読み出したデータを再配置する際に無効データの書き込みを排除するため、ドライブへの無駄な書き込みを防ぐことができ、拡張後の割当済容量の削減と、拡張処理自体の高速化を行うことが可能になる。
上記で説明したストレージ制御装置1の処理機能は、コンピュータによって実現することができる。この場合、ストレージ制御装置1が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等がある。光磁気記録媒体には、MO(Magneto Optical disk)等がある。
プログラムを流通させる場合、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLD等の電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 ストレージ制御装置
1a ストレージグループ
1b 制御部
1a−1 容量拡張前のストレージグループ
1a−2 容量拡張後のストレージグループ
M1、・・・、Mn 記憶装置
11、・・・、14 旧データ格納領域単位
11a、・・・、15a 新データ格納領域単位

Claims (8)

  1. ストレージグループを構成する複数の記憶装置に対して、所定のデータ量を有するデータ格納領域単位でバッファ上のデータを格納する制御を行い、
    前記ストレージグループの容量拡張を行う場合、容量拡張後のストレージグループ内の記憶装置の数に応じたストライプサイズで、前記所定のデータ量になるような前記ストライプサイズの倍数のストライプ数を有する新データ格納領域単位を決定し、容量拡張前の前記ストレージグループに旧データ格納領域単位で格納されているデータを一時記憶領域へ移動し前記一時記憶領域から容量拡張後の前記ストレージグループを構成する複数の記憶装置へのデータの書き戻しを、前記新データ格納領域単位で行ってデータ再配置を行う制御部、
    を有するストレージ制御装置。
  2. 前記制御部は、容量拡張前の前記ストレージグループに前記旧データ格納領域単位で格納されているユーザデータを前記一時記憶領域へ移動し、パリティを再生成して、前記一時記憶領域に移動した前記ユーザデータを前記新データ格納領域単位で容量拡張後の前記ストレージグループを構成する複数の記憶装置に対して書き戻しを行って前記データ再配置を行う請求項1記載のストレージ制御装置。
  3. 前記制御部は、容量拡張前の前記ストレージグループに前記旧データ格納領域単位で格納されているデータが、前記記憶装置上に格納されるユーザデータの物理アドレスを少なくとも管理する第1の管理データ、前記記憶装置上に格納される前記第1の管理データの物理アドレスを少なくとも管理する第2の管理データ、または前記ユーザデータのいずれであるかに応じて、異なる処理の前記データ再配置を行う請求項1または2に記載のストレージ制御装置。
  4. 容量拡張前の前記旧データ格納領域単位で格納されているデータが前記第1の管理データの場合、
    前記制御部は、
    容量拡張前の前記ストレージグループに前記旧データ格納領域単位で格納される前記第1の管理データを、前記旧データ格納領域単位で前記一時記憶領域へ移動し、
    記一時記憶領域から前記第1の管理データを読み出して前記バッファへ書き込み、
    前記第1の管理データの物理アドレスを管理する前記第2の管理データを更新し、
    前記バッファがバッファフルになったら、前記バッファに書き込んだ前記第1の管理データを前記新データ格納領域単位で書き戻しを行って前記データ再配置を行う請求項3記載のストレージ制御装置。
  5. 容量拡張前の前記旧データ格納領域単位で格納されているデータが前記第2の管理データの場合、
    前記制御部は、容量拡張前の前記ストレージグループに前記旧データ格納領域単位で格納される前記第2の管理データを、前記旧データ格納領域単位で前記一時記憶領域へ移動し、前記一時記憶領域に移動した前記第2の管理データを前記新データ格納領域単位で容量拡張後の前記ストレージグループを構成する複数の記憶装置に対して書き戻しを行う請求項3記載のストレージ制御装置。
  6. 容量拡張前の前記旧データ格納領域単位で格納されているデータがユーザデータの場合、
    前記制御部は、
    容量拡張前の前記ストレージグループに前記旧データ格納領域単位で格納される前記ユーザデータを、前記旧データ格納領域単位で前記一時記憶領域へ移動し、
    記一時記憶領域から前記ユーザデータを読み出して前記バッファへ書き込み、
    前記バッファがバッファフルになったら、前記バッファに書き込んだ前記ユーザデータを前記新データ格納領域単位で容量拡張後の前記ストレージグループを構成する複数の記憶装置に対して書き戻しを行う請求項記載のストレージ制御装置。
  7. 前記制御部は、前記データ再配置の処理中に記憶領域へのアクセスが生じた場合、前記記憶領域の前記データ再配置が処理済みであれば前記新データ格納領域単位としての入出力制御を行い、前記記憶領域の前記データ再配置が処理済みでなければ前記旧データ格納領域単位としての入出力制御を行う請求項1記載のストレージ制御装置。
  8. コンピュータに、
    ストレージグループを構成する複数の記憶装置に対して、所定のデータ量を有するデータ格納領域単位でバッファ上のデータを格納する処理と、
    前記ストレージグループの容量拡張を行う場合、容量拡張後のストレージグループ内の記憶装置の数に応じたストライプサイズで、前記所定のデータ量になるような前記ストライプサイズの倍数のストライプ数を有する新データ格納領域単位を決定し、容量拡張前の前記ストレージグループに旧データ格納領域単位で格納されているデータを一時記憶領域へ移動し前記一時記憶領域から容量拡張後の前記ストレージグループを構成する複数の記憶装置へのデータの書き戻しを、前記新データ格納領域単位で行ってデータ再配置を行う処理と、
    を実行させるストレージ制御プログラム。
JP2017083353A 2017-04-20 2017-04-20 ストレージ制御装置およびストレージ制御プログラム Expired - Fee Related JP6451770B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017083353A JP6451770B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置およびストレージ制御プログラム
US15/955,866 US20180307427A1 (en) 2017-04-20 2018-04-18 Storage control apparatus and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017083353A JP6451770B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置およびストレージ制御プログラム

Publications (2)

Publication Number Publication Date
JP2018181172A JP2018181172A (ja) 2018-11-15
JP6451770B2 true JP6451770B2 (ja) 2019-01-16

Family

ID=63854437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017083353A Expired - Fee Related JP6451770B2 (ja) 2017-04-20 2017-04-20 ストレージ制御装置およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US20180307427A1 (ja)
JP (1) JP6451770B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949434B (zh) * 2019-05-17 2022-06-14 华为技术有限公司 磁盘冗余阵列raid管理方法、raid控制器和系统
US11204706B2 (en) * 2020-03-23 2021-12-21 Vmware, Inc. Enhanced hash calculation in distributed datastores
CN115576500B (zh) * 2022-12-06 2023-02-28 苏州浪潮智能科技有限公司 一种raid阵列的扩容方法及相关装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4792490B2 (ja) * 2008-09-08 2011-10-12 株式会社日立製作所 記憶制御装置及びraidグループの拡張方法
WO2016174729A1 (ja) * 2015-04-28 2016-11-03 株式会社日立製作所 ストレージ装置

Also Published As

Publication number Publication date
JP2018181172A (ja) 2018-11-15
US20180307427A1 (en) 2018-10-25

Similar Documents

Publication Publication Date Title
US10019364B2 (en) Access-based eviction of blocks from solid state drive cache memory
US10176212B1 (en) Top level tier management
US6898668B2 (en) System and method for reorganizing data in a raid storage system
JP5944587B2 (ja) 計算機システム及び制御方法
JP4440803B2 (ja) 記憶装置、その制御方法及びプログラム
US8392648B2 (en) Storage system having a plurality of flash packages
US10521345B2 (en) Managing input/output operations for shingled magnetic recording in a storage system
JP5853734B2 (ja) 仮想ストレージ装置,制御装置及び制御プログラム
CN102405460A (zh) 虚拟存储系统及其运行方法
CN111857540B (zh) 数据存取方法、装置和计算机程序产品
JP6663482B2 (ja) 計算機システム、物理記憶デバイスの制御方法、および記録媒体
JP2020533694A (ja) クラウド・ベースのランクを使用するデータの動的再配置
US10579540B2 (en) Raid data migration through stripe swapping
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP2000010738A (ja) ディスクアレイシステム、同システムに適用される記憶容量拡張方法および記録媒体
JP6451770B2 (ja) ストレージ制御装置およびストレージ制御プログラム
US20180307426A1 (en) Storage apparatus and storage control method
US20180307440A1 (en) Storage control apparatus and storage control method
JP5802283B2 (ja) ストレージシステム及びその論理ユニット管理方法
US11526447B1 (en) Destaging multiple cache slots in a single back-end track in a RAID subsystem
JP4838054B2 (ja) ディスクアレイ装置及びその負荷分散方法
US11592988B2 (en) Utilizing a hybrid tier which mixes solid state device storage and hard disk drive storage
JP7219746B2 (ja) ストレージシステム及びストレージシステムのファイル再配置方法
JP2004102823A (ja) 冗長化論理ディスクに対するライトスルー処理方法、ライトスルー処理用プログラム及びディスクコントローラ
US11544005B2 (en) Storage system and processing method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181102

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: 20181113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181126

R150 Certificate of patent or registration of utility model

Ref document number: 6451770

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees