JP2013125360A - ディスクアレイ装置、制御装置、およびプログラム - Google Patents

ディスクアレイ装置、制御装置、およびプログラム Download PDF

Info

Publication number
JP2013125360A
JP2013125360A JP2011272832A JP2011272832A JP2013125360A JP 2013125360 A JP2013125360 A JP 2013125360A JP 2011272832 A JP2011272832 A JP 2011272832A JP 2011272832 A JP2011272832 A JP 2011272832A JP 2013125360 A JP2013125360 A JP 2013125360A
Authority
JP
Japan
Prior art keywords
data
read
write
update
parity
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
JP2011272832A
Other languages
English (en)
Other versions
JP5923964B2 (ja
Inventor
Ryota Tsukahara
良太 塚原
Norihide Kubota
典秀 久保田
Jun Ito
惇 猪頭
Kenji Kobayashi
賢次 小林
Hidejiro Daikokuya
秀治郎 大黒谷
Kazuhiko Ikeuchi
和彦 池内
Takashi Watanabe
岳志 渡辺
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 JP2011272832A priority Critical patent/JP5923964B2/ja
Priority to US13/650,682 priority patent/US9128846B2/en
Publication of JP2013125360A publication Critical patent/JP2013125360A/ja
Application granted granted Critical
Publication of JP5923964B2 publication Critical patent/JP5923964B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/061Improving I/O performance
    • 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/064Management of blocks
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • 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/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】更新するデータが離散している場合にライトバック処理の速度を向上させること。
【解決手段】複数のディスク装置から、新たなパリティの生成に必要なデータを含むストリップ全体のデータを読み出し、読み出したデータ用いて前記新たなパリティを生成し、更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて書き込みデータを生成し、前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む。
【選択図】図3

Description

本発明は、ディスクアレイ装置、制御装置、およびプログラムに関する。
コンピュータシステムで取り扱う大量のデータを記憶する手段として、Redundant Arrays of Inexpensive Disks(RAID)装置が広く使用されている。特に、RAID5は、コスト効率が高くシンプルな構成でデータの保護を実現できる等の理由から広く利用されている。また、RAID5より更に信頼性を向上させたRAID6も利用されている。
RAID5、6では、パリティを使用してデータの冗長性を維持しているため、ライトバック(Write Back)処理を行なう際にパリティを更新する必要がある。
ここで、ライトバック処理とは、例えば、データの更新時にキャッシュ上のデータをディスクに書き込む処理をいう。
RAID5、6におけるディスクへの書き込み(Write)方法は、下記の3つの方法がある。
(1)Bandwidth Write
1ストライプ分の更新データ(New Data)がそろっているケースで、更新データのみで新しいパリティ(New Parity)を作成し、ディスクに書き込む方法。
(2)Read Bandwidth Write
1ストライプ分に近いデータを更新する場合に、更新対象ではない更新前のデータをディスクから読み出し、1ストライプ分のデータをそろえてからBandwidth Write 方式で新しいパリティを作成し、ディスクに書き込む方法
(3)Small Write
対象のディスクから更新されるデータと更新前のパリティ(Old Parity)を読み出し、更新されるデータ、更新前のパリティ、および更新データから新しいパリティを作成し、ディスクに書き込む方法。
特開2007−87094号公報 特開平7−311659号公報 特開平7−110788号公報 特開2006−163474号公報
従来の書き込み方法のうち、Read Bandwidth Writeは、更新対象ではない更新前のデータをディスクから読み出し、Small Writeは対象のディスクから更新前のデータを読み出している。これらの方法では、ディスクからデータを読み出す場合に、該データが離散している(不連続である)場合、離散しているデータ単位のコマンド発行が必要になっていた。
更新データが離散している場合、Read Bandwidth Writeのケースで読み出す更新対象ではない更新前のデータは離散している。また、Small Writeのケースで読み出す更新対象となる更新前のデータも離散している。すなわち、更新データが離散していれば、読み出す対象となるデータも当然離散している。
したがって、更新データの離散度が上がれば、ディスク上から読み出す対象となるデータの離散度も上がるという関係がある。
そのため、更新データの離散度が上がれば、発行するコマンド数も増えてしまい、処理に時間が掛かるという問題があった。
本発明の課題は、ライトバック処理において、更新データが離散している場合に処理速度を向上させることである。
実施の形態のディスクアレイ装置は、複数のディスク装置、制御装置、および記憶部を備える。
前記複数のディスク装置は、1つのストライプのデータを分割したデータまたはパリティを格納するストリップを有する。
前記制御装置は、前記複数のディスク装置の各ストリップに対して前記1つのストライプのデータを前記ストリップのサイズに分割して書き込みを行う
前記記憶部は、前記ストリップに格納された分割データに対応する更新データを格納する。
前記制御装置は、前記更新データが離散しているか判定し、前記更新データが離散している場合に、前記複数のディスク装置から、1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出すコマンドを発行し、前記複数のディスク装置から、前記1ストライプ内の更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出し、前記記憶部に記憶し、前記記憶部に記憶された前記読み出しデータ、前記パリティ、および前記更新データを用いて新たなパリティを生成する。そして、前記制御装置は、前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて書き込みデータを生成し、前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む。
または、前記制御装置は、前記複数のディスク装置から、1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出すコマンドを発行し、前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出し、前記記憶部に格納し、前記記憶部に記憶された前記更新データおよび前記読み出しデータを用いて前記新たなパリティを生成する。そして、前記制御装置は、前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて前記書き込みデータを生成し、前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む。
実施の形態の装置によれば、更新データが離散している場合に処理速度を向上することが出来る。
RAID5によるストライピングを示す図である。 連続データおよび離散データを示す図である。 実施の形態に係るRAID装置の構成図である。 Fill Small Writeを説明する図である。 Fill Read Bandwidth Writeを説明する図である。 書き込みデータを示す図である。 Read Bandwidth Write処理時のエラーを示す図である。 従来のデータ復旧処理を示す図である。 実施の形態に係るデータ復旧処理を示す図である。 実施の形態に係る書き込み方法の選択処理のフローチャートである。 RAID装置のディスク構成と更新データを示す図である。 RAID装置のディスク構成と更新データを示す図である。 RAID装置のディスク構成と更新データを示す図である。 条件1を満たす場合のコマンド数を示す図である。 条件2を満たす場合のコマンド数を示す図である。
以下、図面を参照しながら実施の形態について説明する。
はじめに、実施の形態で使われるストリップと離散データについて説明する。
図1は、RAID5によるストライピングを示す図である。
RAID5は、分割したデータとパリティを複数のディスク装置に格納する。RAID5では、RAID4のように特定のディスク装置にのみパリティを配置するのではなく、複数のディスク装置にパリティを順番に分散して配置する。
図1では、Disk00〜Disk03の4台のディスク装置で、RAID5を実現している。図1では、あるデータを分割して格納する例を示しており、Disk00〜Disk02にデータを分割して格納し、Disk03に分割されたデータに対応するパリティを格納している。
ここでは、分割されたデータと分割されたデータに対応するパリティの組をストライプ(Stripe)と呼ぶ。
また、分割されたデータまたはパリティを格納する各ディスクの領域をストリップと呼ぶ。また、ストリップのサイズをストライプデプス(Stripe Depth)、または単にデプス(Depth)と呼ぶ。
図2は、連続データおよび離散データを示す図である。
図2は、ストリップ内の更新データの位置を示し、斜線領域は更新データを示している。
図2の左側は連続データを示し、右側は離散データを示す。
連続データは、更新データが連続した1つのデータであるものである。
離散データは、更新データが不連続なデータであるものである。
図3は、実施の形態に係るRAID装置の構成図である。
RAID装置101は、ホスト201と接続している。
RAID装置101は、制御モジュール111−m(m=1〜2)およびデバイスエンクロージャー121を備える。
尚、制御モジュール111−1と制御モジュール111−2の構成は同一なため、図3では制御モジュール111−1の構成についてのみ詳細に記載されている。ここでは、制御モジュール111−1の構成について詳細に説明する。
制御モジュール111−1は、処理部112、記憶部113、ホストI/F114−m、ディスクI/F115−mを備える。
処理部112は、各種処理を行うプロセッサである。
処理部は、キャッシュ制御部121およびRAID制御部122を備える。
キャッシュ制御部121は、RAID制御部122に、ライトバック処理の開始指示などを行う。
RAID制御部122は、ディスク装置132からのデータの読み出し、ディスク装置132へのデータの書き込み、パリティの生成などを行う。
記憶部113は、各種データを格納する記憶装置である。記憶部113は、例えば、Random Access Memory(RAM)である。
記憶部113は、キャッシュ領域123、データバッファ領域124、パリティバッファ領域125、キャッシュ管理テーブル126を備える。
キャッシュ領域123は、ホスト201から受信した更新データを一時的に格納する領域である。
データバッファ領域124は、各ディスク装置132から読み出したデータを一時的に格納する領域である。
パリティバッファ領域125は、ディスク装置132から読み出したパリティまたは新たに生成したパリティを格納する領域である。
キャッシュ管理テーブル126は、キャッシュ領域123に格納されている更新データに関する情報が記載されている。詳細には、キャッシュ管理テーブル126には、更新データがどのストライプのデータであるか、どのストリップに格納されるデータであるか(すなわち、どのディスク装置132に格納されるデータであるか)を示す情報が記載されている。また、キャッシュ管理テーブル126には、更新データがストリップ内のどの位置のデータであるかを示す情報が記載されている。したがって、RAID122は、キャッシュ管理テーブル126を参照することにより、更新データが連続データであるか離散データであるか判別可能である。
ホストI/F114は、ホスト201と接続し、ホスト201とデータの送受信を行うインタフェースである。
ディスクI/F115は、デバイスエンクロージャー131と接続し、デバイスエンクロージャー131とデータの送受信を行うインタフェースである。
デバイスエンクロージャー131は、複数のディスク装置132−i(i=0〜j(jは2以上の整数))を格納する装置である。
ディスク装置132は、データを格納する磁気ディスク装置(ハードディスクドライブ(HDD))である。
以下、実施の形態の2つの書き込み(Write)方法について説明する。
実施の形態の2つの書き込み方法をそれぞれFill Small WriteおよびFill Read Bandwidth Writeと呼ぶ。
実施の形態のRAID制御部122は、従来のSmall WriteおよびRead Bandwidth Writeと以下に説明するFill Small WriteおよびFill Read Bandwidth Writeを実行可能であり、後述する選択処理の結果に応じて上記いずれかの書き込み方法を実行する。
以下では、説明を簡単にするために1つのストライプを更新する場合について説明する。
(1)Fill Small Write
Fill Small Writeは、従来のSmall Writeにおけるディスク装置からの更新データにより更新されるデータの読み出しを連続したデータ単位で行っていたのを、ストリップ単位で(すなわち、ストリップ内のデータ全体を)読み出すように変更したものである。
図4は、Fill Small Writeを説明する図である。
図4において、RAID装置は、RAID5(5+1)の構成、すなわち6台のディスクでRAID5を行っている。
図4においては、Disk00〜Disk05の6台のディスク装置によって構成される。更新データにより更新されるデータを含むストライプは、Disk00〜Disk04にデータが格納され、Disk05にパリティが格納されているものとする。
更新データは、Disk00〜Disk03に対する更新データがあるものとする。更新データは、ある1つのストライプを更新するデータである。また、Disk00〜Disk03の更新データは、図4の斜線部で示すように離散した領域を有する離散データである。更新データは、キャッシュ領域123に格納されている。
更新データをFill Small Writeによって書き込む処理について説明する。
RAID制御部122は、更新データにより更新されるストライプ内で、更新データにより更新される領域を含むストリップ全体のデータをDisk00〜Disk03から読み出し、データバッファ領域124に格納する。また、RAID制御部122は、パリティをDisk05から読み出し、読み出したパリティ(Old Parity)をパリティバッファ領域125に格納する。尚、上記の更新データにより更新される領域を含むストリップ全体のデータとパリティの読み出しに際して、RAID制御部122は、読み出すデータがあるディスク(Disk00〜Disk03、Disk05)に対して、更新データにより更新される領域を含むストリップ全体のデータまたはパリティを読み出すリードコマンドを1個ずつ発行する。すなわち、この場合、5つのリードコマンドが発行されている。尚、RAID制御部122は、尚、RAID制御部122は、どのストライプが更新されるかおよびどのストリップが更新されるか否かを、キャッシュ管理テーブル126を参照することにより、判別可能である。
そして、RAID制御部122は、Disk00〜Disk03から読み出したデータのうちの更新されるデータとパリティ(Old Parity)と更新データとを用いて、新たなパリティ(New Parity)を生成する。新たなパリティは、例えば排他的論理和(XOR)演算により生成される。尚、RAID6の場合は、XOR演算だけでなく係数による重み付けなど異なる計算手法を用いて、複数のパリティを生成する。新たなパリティは、パリティバッファ領域125に格納される。
RAID制御部122は、更新データとDisk00〜Disk03から読み出したデータのうちの更新されないデータを組み合わせて、Disk00〜Disk03に書き込む書き込みデータを生成する。これにより、ストリップ単位の書き込みデータが生成される。
RAID制御部122は、書き込みデータをDisk00〜Disk03に、新たなパリティをDisk05に書き込む。
Fill Small Writeにおいて、Disk00〜Disk03、Disk05からストリップ全体のデータを読み出している。データの読み出しにおいて、1つの読み出し処理コマンドで1つのストリップ全体のデータを読み出すため、従来のSmall Writeに比べ、処理コマンドの数が削減される。
また、ストリップ全体の書き込みデータを生成することで、1つの書き込みコマンドで1つのストリップに対して書き込めるため、従来のSmall Writeに比べ、処理コマンドの数が削減される。
(2)Fill Read Bandwidth Write
Fill Read Bandwidth Writeは、従来のRead Bandwidth Writeにおけるディスク装置からの更新対象ではない更新前のデータの読み出しを連続したデータ単位で行っていたのを、ストリップ単位(すなわち、ストリップ内のデータ全体を)で読み出すように変更したものである。
図5において、RAID装置は、RAID5(5+1)の構成、すなわち6台のディスクでRAID5を行っている。
図5においては、Disk00〜Disk05の6台のディスク装置によって構成される。更新データにより更新されるデータを含むストライプは、Disk00〜Disk04にデータが格納され、Disk05にパリティが格納されているものとする。
更新データは、Disk00〜Disk03に対する更新データがあるものとする。更新データは、ある1つのストライプを更新するデータである。また、Disk00〜Disk03の更新データは、図5の斜線部で示すように離散した領域を有する離散データである。更新データは、キャッシュ領域123に格納されている。
更新データをFill Read Bandwidth Writeによって書き込む処理について説明する。
RAID制御部122は、更新データにより更新されるストライプ内で、更新データにより更新されない領域を含むストリップ全体のデータをDisk00〜Disk04から読み出し、データバッファ領域124に格納する。尚、上記の更新データにより更新されない領域を含むストリップ全体のデータの読み出しに際して、RAID制御部122は、読み出すデータがあるディスク(Disk00〜Disk04)に対して、更新データにより更新されない領域を含むストリップ全体のデータを読み出すリードコマンドを1個ずつ発行する。すなわち、この場合、5つのリードコマンドが発行されている。尚、RAID制御部122は、どのストライプが更新されるかおよびどのストリップが更新されるか否かを、キャッシュ管理テーブル126を参照することにより、判別可能である。
そして、RAID制御部122は、Disk00 〜Disk04から読み出したデータのうちの更新されないデータと更新データとを用いて、新たなパリティ(New Parity)を生成する。新たなパリティは、例えば排他的論理和(XOR)演算により生成される。尚、RAID6の場合は、XOR演算だけでなく係数による重み付けなど異なる計算手法を用いて、複数のパリティを生成する。新たなパリティは、パリティバッファ領域125に格納される。
RAID制御部122は、更新データとDisk00〜Disk04から読み出したデータのうちの更新されないデータを組み合わせて、Disk00〜Disk03に書き込む書き込みデータを生成する。これにより、ストリップ単位の書き込みデータが生成される。
RAID制御部122は、書き込みデータをDisk00〜Disk03に、新たなパリティをDisk05に書き込む。
Fill Read Bandwidth Writeにおいて、Disk00〜Disk04からストリップ全体のデータを読み出している。データの読み出しにおいて、1つの読み出し処理コマンドで1つのストリップ全体のデータを読み出すため、従来のRead Bandwidth Writeに比べ、処理コマンドの数が削減される。
また、ストリップ全体の書き込みデータを生成することで、1つの書き込みコマンドで1つのストリップに対して書き込めるため、従来のRead Bandwidth Writeに比べ、処理コマンドの数が削減される。
図6は、書き込みデータを示す図である。
書き込みデータの生成において、図6に示すように、更新データと更新データに挟まれる更新されないデータとを用いて、書き込みデータを生成しても良い。すなわち、ストリップ内の最初または最後のデータが更新されないデータである場合、該データを書き込みデータの生成に用いないようにしても良い。
次に実施の形態のデータ復旧に関して説明する。
図7は、Read Bandwidth Write処理時のエラーを示す図である。
図8は、従来のデータ復旧処理を示す図である。
図7において、RAID装置は、RAID5(5+1)の構成、すなわち6台のディスクでRAID5を行っている。
図7においては、Disk00〜Disk05の6台のディスク装置によって構成され、更新データに対応するパリティはDisk05に格納されるものとする。
更新データは、Disk00〜Disk03に対する更新データがあるものとする。
Read Bandwidth Writeにおいて、更新対象ではない更新前のデータが各ディスクから読み出され、データバッファ領域124に格納される。このとき、Disk03においてリードエラーが発生し、データが読み出せなかったものとする。
このとき、従来のデータ復旧処理では、リードの失敗したディスク(Disk03)以外のディスク(Disk00〜Disk02、Disk04、Disk05)から、Disk03の復旧に必要なデータの読み出しを行い、読み出したデータと読み出したパリティとを用いてXOR演算を行い、Disk03のデータを生成し、Disk03を復旧する。このような処理は、Regeneration Readと呼ばれる。
上記のように、従来においては、データ復旧時にディスクから再度読み出す処理が必要となる。
図9は、Fill Read Bandwidth Writeにおけるデータ復旧処理を示す図である。
ここでは、上記で説明したのと同様にDisk03でリードエラー発生し、データが読み出せなかったものとする。
Fill Read Bandwidth Writeにおいては、初回のディスクリード時にストリップ全体のデータを読み出し、データバッファ領域124に格納している。
それにより、Disk00〜Disk02、Disk04からは、再度データを読み出す必要が無く、Disk05からパリティを読み出すだけで、Disk03の復旧に必要なデータを用意することが出来る。
実施の形態のデータ復旧処理では、データバッファ領域124に格納されているDidk00〜Disk02、Disk04のストリップ全体のデータとDisk05から読み出したパリティとを用いてXOR演算を行い、Disk03のデータを生成し、Disk03を復旧する。
このように、実施の形態のデータ復旧処理では、パリティ以外のデータを再度ディスクから読み出す必要が無いため、ディスクアクセス回数を削減でき、処理時間を短縮できる。
次に実施の形態に係る書き込み方法の選択について説明する。
従来の書き込み方法の選択は、処理コマンド数、データ転送量、XOR演算回数のいずれかまたはすべてのパラメータについて、Disk ReadとDisk Writeの合計で想定される値を判断材料として行っていた。
従来の選択方法では、データの離散に対する考慮がなされていないため、離散しているデータに基づいた処理コマンド数により、非効率なWrite方法が選択されてしまう場合があった。
実施の形態に係る書き込み方法の選択処理では、まず更新データが離散データであるか否かを判定し、離散データでなければ従来の書き込み方法(Small WriteまたはRead Bandwidth Write)、離散データであれば実施の形態の書き込み方法(Fill Small WriteまたはFill Read Bandwidth Write)を実施する。
また、実施の形態に係る書き込み方法の選択処理では、更新対象ディスク数などに基づいて、読み出し時の処理コマンド数が少なくなる書き込み方法を選択している。
書き込み時の処理コマンド数はFill Read Bandwidth WriteとFill Small Writeで等しいため、Read時の処理コマンド数のみを考慮している。
また、実施の形態に係る書き込み方法の選択処理では、Fill Read Bandwidth WriteとFill Small Writeで処理時間差が顕著に現れる要因はディスクアクセス回数であるため、処理コマンド数、データ転送量、XOR演算回数の各パラメータのうち、処理コマンド数のみを考慮している。
以下、実施の形態に係る書き込み方法の選択処理について詳細に説明する。
図10は、実施の形態に係る書き込み方法の選択処理のフローチャートである。
先ず、キャッシュ制御部121はRAID制御部122にライトバック開始の指示を行う。また、RAID装置101は、ホスト201から更新データを受信し、キャッシュ領域に格納しているものとする。
ステップS501において、RAID制御部122は、更新データが離散しているか否かをチェックする。離散しているか否かは、キャッシュ管理テーブル126を参照することにより判定する。
更新データが離散している場合、制御はステップS503に進み、離散していない場合、制御はステップS502に進む。
ステップS502において、RAID制御部122は、従来の書き込み方法(例えば、Small Write、Read Bandwidth Write)の決定処理と、決定した書き込み方法による更新データの書き込みを行う。尚、従来の書き込み方法や書き込み方法の決定処理については、例えば特開2007−87094号公報に詳細に記載されている。
ステップS503において、RAID制御部122は、更新するディスク装置の数(更新対象Disk数)をチェックする。そして、RAID制御部122は、下記条件1を満たすか否か判定する。すなわち、RAID制御部122は、RAID装置101がRAID5で動作している場合は、更新対象Disk数が(RAID構成Disk数 - 2)以上であるか否か判定する。また、RAID制御部122は、RAID装置101がRAID6で動作している場合は、更新対象Disk数が(RAID構成Disk数 - 3以上であるか否か判定する。尚、RAID構成Disk数は、RAIDを構成するディスク装置の数である。
条件1を満たす場合、制御はステップS506に進み、条件1を満たさない場合、ステップS504に制御は進む。
・条件1
(1)RAID5の場合
更新対象Disk数 ≧ (RAID構成Disk数 - 2)
(2)RAID6の場合
更新対象Disk数 ≧ (RAID構成Disk数 - 3)
ステップS504において、RAID制御部122は、更新データが書き込まれる各ストリップ毎の更新データの離散の有無をチェックする。離散の有無は、キャッシュ管理テーブル126を参照することにより判定可能である。そして、RAID制御部122は、各ストリップに書き込まれる更新データがストリップ全体のデータであるかチェックし、ストリップ内が全て更新対象となるストリップ数をチェックする。
そして、RAID制御部122は、下記条件2を満たすか否か判定する。すなわち、RAID制御部122は、RAID装置101がRAID5で動作している場合は、更新対象Disk数が (RAID構成Disk数 ÷ 2)以上且つストリップ内が全て更新対象となっているストリップ数 が(RAID構成Disk数 -2) - 更新Disk数であるか否か判定する。また、RAID制御部122は、RAID装置101がRAID6で動作している場合は、更新対象Disk数 が ((RAID構成Disk数 - 1) ÷ 2)以上且つストリップ内が全て更新対象となっているストリップ数が (RAID構成Disk数 -3) - 更新Disk数であるか否か判定する。
条件2を満たす場合、制御はステップS506に進み、条件2を満たさない場合ステップS505に制御は進む。
・条件2
(1)RAID5の場合
更新対象Disk数 ≧ (RAID構成Disk数 ÷ 2)
且つ
ストリップ内が全て更新対象となっているストリップ数 ≧ (RAID構成Disk数-2) - 更新Disk数
(2)RAID6の場合
更新対象Disk数 ≧ ((RAID構成Disk数 - 1) ÷ 2)
且つ
ストリップ内が全て更新対象となっているストリップ数 ≧ (RAID構成Disk数-3) - 更新Disk数
ステップS505において、RAID制御部122は、前述のFill Small Writeを実施する。
ステップS506において、RAID制御部122は、前述のFill Read Bandwidth Writeを実施する。
以下、ケース1〜3において、各書き込み方法を実施した場合の処理コマンド数について説明する。
・ケース1
図11は、RAID装置のディスク構成と更新データを示す図である。
図11において、RAID装置101は、RAID5(5+1)の構成、すなわち6台のディスクでRAID5を行っている。
図11においては、Disk00〜Disk05の6台のディスク装置によって構成され、更新データに対応するパリティはDisk05に格納されるものとする。
更新データは、Disk00〜Disk02、Disk05に対する更新データがあるものとする。また、更新データは、図11の斜線部で示すように20個の離散した領域を有する。また、Disk05以外の更新無しの領域の数(パリティ以外の更新無し領域数)は、14個である。
図11に示すケースにおいて、各書き込み方法を実施した場合の処理コマンド数を示す。
Small Writeで処理した場合、処理コマンド数は、Readの20コマンド(更新する領域数)とWriteの20コマンド(更新する領域数)を合計して、計40コマンドとなる。
Read Bandwidth Writeで処理した場合、処理コマンド数は、Readの14コマンド(パリティ以外の更新無し領域数)とWriteの20コマンド(更新する領域数)を合計して、計34コマンドとなる。
Fill Small Writeで処理した場合、処理コマンド数は、Readで4コマンド(更新するディスク数)とWriteの4コマンド(更新するディスク数)を合計して、計8コマンドとなる。
Fill Read Bandwidth Writeで処理した場合、処理コマンド数は、Readの5コマンド(パリティ以外の更新がない部分があるディスク数)とWriteの4コマンド(更新するディスク数)を合計して、計9コマンドとなる。
上記のように、図11に示すケースでは、Fill Small Writeで処理するとコマンド処理数が少なくなり、処理時間を短くすることが出来る。
実施の形態に係る書き込み方法の選択処理を図11のケースに適用すると、更新データに離散部分があり(ステップS501:離散している)、更新対象Disk数をチェックすると条件1に合致せず(ステップS503:条件を満たさない)、さらに条件2にも合致しない(ステップS504:条件を満たさない)ため、Fill Small Writeが実施される。
・ケース2
図12は、RAID装置のディスク構成と更新データを示す図である。
図12において、RAID装置101は、RAID5(6+1)の構成、すなわち7台のディスクでRAID5を行っている。
図12においては、Disk00〜Disk05の7台のディスク装置によって構成され、更新データに対応するパリティはDisk06に格納されるものとする。
更新データは、Disk00〜Disk06に対する更新データがあるものとする。また、更新データは、図12の斜線部で示すように12個の離散した領域を有する。また、Disk06以外の更新無しの領域の数(パリティ以外の更新無し領域数)は、17個である。
図12に示すケースにおいて、各書き込み方法を実施した場合の処理コマンド数を示す。
Small Writeで処理した場合、処理コマンド数は、Readの12コマンド(更新する領域数)とWriteの12コマンド(更新する領域数)を合計して、計24コマンドとなる。
Read Bandwidth Writeで処理した場合、処理コマンド数は、Readの17コマンド(Parity以外の更新無し領域数)とWriteの12コマンド(更新する領域数)を合計して、計29コマンドとなる。
Fill Small Writeで処理した場合、処理コマンド数は、Readで7コマンド(更新するディスク数)とWriteの7コマンド(更新するディスク数)を合計して、計14コマンドとなる。
Fill Read Bandwidth Writeで処理した場合、処理コマンド数は、Readの6コマンド(パリティ以外の更新がない部分があるディスク数)とWriteの7コマンド(更新するディスク数)を合計して、計13コマンドとなる。
上記のように、図12に示すケースでは、Fill Read Bandwidth Writeで処理するとコマンド処理数が少なくなり、処理時間を短くすることが出来る。
実施の形態に係る書き込み方法の選択処理を図12のケースに適用すると、更新データに離散部分があり(ステップS501:離散している)、更新対象Disk数をチェックすると条件1に合致する(ステップS503:条件を満たす)ため、Fill Read Bandwidth Writeが実施される。
・ケース3
図13は、RAID装置のディスク構成と更新データを示す図である。
図13において、RAID装置101は、RAID5(6+1)の構成、すなわち7台のディスクでRAID5を行っている。
図13においては、Disk00〜Disk06の7台のディスク装置によって構成され、更新データに対応するパリティはDisk06に格納されるものとする。
更新データは、Disk00〜Disk03、Disk06に対する更新データがあるものとする。また、更新データは、図12の斜線部で示すように6個の離散した領域を有する。また、Disk06以外の更新無しの領域の数(パリティ以外の更新無し領域数)は、7個である。
図13に示すケースにおいて、各書き込み方法を実施した場合の処理コマンド数を示す。
Small Writeで処理した場合、処理コマンド数は、Readの6コマンド(更新する領域数)とWriteの6コマンド(更新する領域数)を合計して、計12コマンドとなる。
Read Bandwidth Writeで処理した場合、処理コマンド数は、Readの7コマンド(Parity以外の更新無し領域数)とWriteの6コマンド(更新する領域数)を合計して、計13コマンドとなる。
Fill Small Writeで処理した場合、処理コマンド数は、Readで5コマンド(更新するディスク数)とWriteの5コマンド(更新するディスク数)を合計して、計10コマンドとなる。
Fill Read Bandwidth Writeで処理した場合、処理コマンド数は、Readの4コマンド(パリティ以外の更新がない部分があるディスク数)とWriteの9コマンド(更新するディスク数)を合計して、計11コマンドとなる。
上記のように、図13に示すケースでは、Fill Read Bandwidth Writeで処理するとコマンド処理数が少なくなり、処理時間を短くすることが出来る。
実施の形態に係る書き込み方法の選択処理を図13のケースに適用すると、更新データに離散部分があり(ステップS501:離散している)、更新対象Disk数をチェックすると条件1に合致しない(ステップS503:条件を満たさない)が、条件2に合致する(ステップS504:条件を満たす)ため、Fill Read Bandwidth Writeが実施される。
次に、RAID5(9+1)のケースで、Fill Read Band Width WriteとFill Small Writeで処理した場合のコマンド数の例を示す。RAID5(9+1)は、RAIDを構成するディスク数が10個でそのうち、データを格納するディスクが9個、パリティ格納するディスクが1個である。
図14は、条件1を満たす場合のコマンド数を示す。
図14を参照すると、更新Disk数が(RAID構成Disk数 - 2)以上である場合(条件1を満たす場合)、Fill Read Band Width Writeを実施した場合のコマンド数は、Fill Small Writeを実施した場合のコマンド数以下となっている。
図15は、条件2を満たす場合のコマンド数を示す。
図15を参照すると、更新対象Disk数 が (RAID構成Disk数 ÷ 2)以上、且つストリップ内が全て更新対象となっているストリップ数 が( (RAID構成Disk数 -2) - 更新Disk数)以上の場合(条件2を満たす場合)、Fill Read Band Width Writeを実施した場合のコマンド数は、Fill Small Writeを実施した場合のコマンド数以下となっている。
また、更新対象Disk数 が (RAID構成Disk数 ÷ 2)未満の場合、Fill Small Writeを実施した場合のコマンド数は、Fill Read Band Width Writeを実施した場合のコマンド数以下となっている。
尚、実施の形態において、制御部112が記憶部113や可搬記録媒体などに格納されたプログラムを読み出し、該プログラムを実行することにより、上述した各種処理を実行するようにしてもよい。この場合、読み出されたプログラムコード自体が実施の形態の機能を実現する。
可搬記録媒体としては、メモリカード、フレキシブルディスク、Compact Disk Read Only Memory(CD-ROM)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。
実施の形態のRAID装置によれば、更新データが離散している場合に、ライトバック処理の速度を向上させることが出来る。
また、実施の形態のRAID装置によれば、処理速度が速いライト方法を選択することが出来る。
101 RAID装置
111 制御モジュール
112 処理部
113 記憶部
114 ホストI/F
115 ディスクI/F
121 キャッシュ制御部
122 RAID制御部
123 キャッシュ領域
124 データバッファ領域
125 パリティバッファ領域
126 キャッシュ管理テーブル
131 デバイスエンクロージャー
132 ディスク装置

Claims (5)

  1. 1つのストライプのデータを分割した分割データまたはパリティを格納するストリップを有する複数のディスク装置と、
    前記複数のディスク装置の各ストリップに対して前記1つのストライプのデータを前記ストリップのサイズに分割して書き込みを行う制御装置と、
    前記ストリップに格納された分割データに対応する更新データを格納する記憶部と、
    を備え、
    前記制御装置は、前記更新データが離散しているか否か判定し、前記更新データが離散している場合に、
    前記複数のディスク装置から、1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出すコマンドを発行し、
    前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出し、前記記憶部に記憶し、
    前記記憶部に記憶された前記読み出しデータ、前記パリティ、および前記更新データを用いて新たなパリティを生成し、
    前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて書き込みデータを生成し、
    前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む
    第1の書き込み処理
    または
    前記複数のディスク装置から、1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出すコマンドを発行し、
    前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出し、前記記憶部に記憶し、
    前記記憶部に記憶された前記更新データおよび前記読み出しデータを用いて前記新たなパリティを生成し、
    前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて前記書き込みデータを生成し、
    前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む
    第2の書き込み処理
    を行うことを特徴とするディスクアレイ装置。
  2. 前記制御装置は、データを更新するディスク装置の数と前記複数のディスク装置の数とに基づいて、前記第1の書き込み処理または前記第2の書き込み処理を行うか判定し、判定結果に基づき前記第1の書き込み処理または前記第2の書き込み処理のいずれか一方を行うことを特徴とする請求項1記載のディスクアレイ装置。
  3. 前記制御装置は、ストリップ全体が更新対象であるストリップ数、データを更新するディスク装置の数、および前記複数のディスク装置の数に基づいて、前記第1の書き込み処理または前記第2の書き込み処理を行うか判定し、判定結果に基づき前記第1の書き込み処理または前記第2の書き込み処理のいずれか一方を行うことを特徴とする請求項2記載のディスクアレイ装置。
  4. 1つのストライプのデータを分割した分割データまたはパリティを格納するストリップを有する複数のディスク装置の各ストリップに対して前記1つのストライプのデータを前記ストリップのサイズに分割して書き込みを行うディスクアレイ装置の制御装置であって、
    前記ストリップに格納された分割データに対応する更新データが離散しているか否か判定し、前記更新データが離散している場合に、
    前記複数のディスク装置から、1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出すコマンドを発行し、
    前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出し、記憶部に記憶し、
    前記記憶部に記憶された前記読み出しデータ、前記パリティ、および前記更新データを用いて新たなパリティを生成し、
    前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて書き込みデータを生成し、
    前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む
    第1の書き込み処理
    または
    前記複数のディスク装置から、1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出すコマンドを発行し、
    前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出し、前記記憶部に記憶し、
    前記記憶部に記憶された前記更新データおよび前記読み出しデータを用いて前記新たなパリティを生成し、
    前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて前記書き込みデータを生成し、
    前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む
    第2の書き込み処理
    を行うことを特徴とする制御装置。
  5. 1つのストライプのデータを分割した分割データまたはパリティを格納するストリップを有する複数のディスク装置を備えるディスクアレイ装置に、
    前記ストリップに格納された分割データに対応する更新データが離散しているか否か判定し、前記更新データが離散している場合に、
    前記複数のディスク装置から、1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出すコマンドを発行し、
    前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込む領域を含むストリップ全体のデータとパリティを読み出し、記憶部に記憶し、
    前記記憶部に記憶された前記読み出しデータ、前記パリティ、および前記更新データを用いて新たなパリティを生成し、
    前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて書き込みデータを生成し、
    前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む
    第1の書き込み処理
    または
    前記複数のディスク装置から、1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出すコマンドを発行し、
    前記複数のディスク装置から、前記1ストライプ内の前記更新データを書き込まない領域を含むストリップ全体のデータを読み出し、前記記憶部に記憶し、
    前記記憶部に記憶された前記更新データおよび前記読み出しデータを用いて前記新たなパリティを生成し、
    前記更新データと前記読み出したデータのうち更新しない部分のデータとを組み合わせて前記書き込みデータを生成し、
    前記書き込みデータおよび前記新たなパリティを前記複数のディスクに書き込む
    第2の書き込み処理
    を実行させるプログラム。
JP2011272832A 2011-12-13 2011-12-13 ディスクアレイ装置、制御装置、およびプログラム Active JP5923964B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011272832A JP5923964B2 (ja) 2011-12-13 2011-12-13 ディスクアレイ装置、制御装置、およびプログラム
US13/650,682 US9128846B2 (en) 2011-12-13 2012-10-12 Disk array device, control device and data write method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011272832A JP5923964B2 (ja) 2011-12-13 2011-12-13 ディスクアレイ装置、制御装置、およびプログラム

Publications (2)

Publication Number Publication Date
JP2013125360A true JP2013125360A (ja) 2013-06-24
JP5923964B2 JP5923964B2 (ja) 2016-05-25

Family

ID=48573102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011272832A Active JP5923964B2 (ja) 2011-12-13 2011-12-13 ディスクアレイ装置、制御装置、およびプログラム

Country Status (2)

Country Link
US (1) US9128846B2 (ja)
JP (1) JP5923964B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017212515A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム、計算機、およびストレージ制御方法

Families Citing this family (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9507733B2 (en) 2013-06-21 2016-11-29 Microsoft Technology Licensing, Llc Cache destaging for virtual storage devices
US9612952B2 (en) * 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
CN115098046B (zh) * 2022-08-26 2023-01-24 苏州浪潮智能科技有限公司 磁盘阵列初始化方法、系统、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244122A (ja) * 2005-03-03 2006-09-14 Fujitsu Ltd 記憶装置、その制御方法及びプログラム
JP2010218485A (ja) * 2009-03-19 2010-09-30 Fujitsu Ltd ストレージ装置、データ書き込み方法、及びデータ書き込みプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
JP3188071B2 (ja) 1993-10-14 2001-07-16 富士通株式会社 ディスクキャッシュ装置
JPH07311659A (ja) 1994-05-18 1995-11-28 Oki Electric Ind Co Ltd キャッシュ内蔵ディスクアレイ装置
US6282671B1 (en) * 1998-11-10 2001-08-28 International Business Machines Corporation Method and system for improved efficiency of parity calculation in RAID system
US6513093B1 (en) * 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
JP4366298B2 (ja) 2004-12-02 2009-11-18 富士通株式会社 記憶装置、その制御方法及びプログラム
JP4410178B2 (ja) 2005-09-22 2010-02-03 富士通株式会社 Raid装置におけるライトバック方法
US7822921B2 (en) * 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US8103903B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
WO2012117435A1 (en) * 2011-02-28 2012-09-07 Hitachi, Ltd. Storage apparatus and data processing method of the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244122A (ja) * 2005-03-03 2006-09-14 Fujitsu Ltd 記憶装置、その制御方法及びプログラム
JP2010218485A (ja) * 2009-03-19 2010-09-30 Fujitsu Ltd ストレージ装置、データ書き込み方法、及びデータ書き込みプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017212515A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム、計算機、およびストレージ制御方法

Also Published As

Publication number Publication date
US9128846B2 (en) 2015-09-08
JP5923964B2 (ja) 2016-05-25
US20130151771A1 (en) 2013-06-13

Similar Documents

Publication Publication Date Title
JP5923964B2 (ja) ディスクアレイ装置、制御装置、およびプログラム
US10191676B2 (en) Scalable storage protection
JP3742494B2 (ja) 大容量記憶装置
US8555027B2 (en) Semiconductor memory controlling device
KR101502519B1 (ko) 메모리 관리 시스템 및 방법
EP2899626B1 (en) Method and system for service-aware data placement in a storage system
US7761736B2 (en) Storing parity information for data recovery
CN102667738B (zh) 具有多个raid组分条的内存系统及其方法
US20160217040A1 (en) Raid parity stripe reconstruction
JP2006171957A (ja) ストレージ制御装置および方法
CN102081559A (zh) 一种独立磁盘冗余阵列的数据恢复方法和装置
US6332177B1 (en) N-way raid 1 on M drives block mapping
KR20120115012A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN102799533B (zh) 一种磁盘损坏扇区屏蔽方法及装置
JP2009098996A (ja) ストレージシステム
JP2010211420A (ja) ストレージ管理装置、ストレージ管理方法およびストレージシステム
JP2018508073A (ja) データ除去、割り当て、及び再構築
CN102122235A (zh) 一种raid4系统及其数据读写方法
EP1310875A2 (en) Disk array subsystem and data generation method therefor
CN111124262A (zh) 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质
JP6052288B2 (ja) ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム
JP2005099995A (ja) 磁気ディスク装置のディスク共有方法及びシステム
US11748196B2 (en) Adaptive parity rotation for redundant arrays of independent disks
JP2010026812A (ja) 磁気ディスク装置
JP2011008583A (ja) ディスクアレイ制御装置及びディスクアレイ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150707

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150907

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160404

R150 Certificate of patent or registration of utility model

Ref document number: 5923964

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150