JP6005533B2 - 記憶装置および記憶方法 - Google Patents

記憶装置および記憶方法 Download PDF

Info

Publication number
JP6005533B2
JP6005533B2 JP2013006754A JP2013006754A JP6005533B2 JP 6005533 B2 JP6005533 B2 JP 6005533B2 JP 2013006754 A JP2013006754 A JP 2013006754A JP 2013006754 A JP2013006754 A JP 2013006754A JP 6005533 B2 JP6005533 B2 JP 6005533B2
Authority
JP
Japan
Prior art keywords
data
memory node
memory
group
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.)
Expired - Fee Related
Application number
JP2013006754A
Other languages
English (en)
Other versions
JP2014137758A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013006754A priority Critical patent/JP6005533B2/ja
Priority to TW102130683A priority patent/TWI516929B/zh
Priority to KR1020130102531A priority patent/KR101581086B1/ko
Priority to CN201310384208.3A priority patent/CN103942153A/zh
Priority to US14/023,901 priority patent/US10691542B2/en
Publication of JP2014137758A publication Critical patent/JP2014137758A/ja
Application granted granted Critical
Publication of JP6005533B2 publication Critical patent/JP6005533B2/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
    • 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
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Computer Security & Cryptography (AREA)

Description

本発明の実施形態は、記憶装置および記憶方法に関する。
複数のハードディスク装置を備え、当該複数のハードディスク装置を1の記憶装置として扱って、データを当該複数のハードディスク装置に分散して格納するディスクアレイ装置が知られている。ハードディスク装置は、記憶媒体であるハードディスク上でヘッドを移動させて読み書きを行うため、シーケンシャルな書き込みを行うことで、ヘッドのシークタイムの短縮による読み出し時間の高速化が期待できる。
一方、それぞれ記憶素子およびデータ転送機能を有する複数のメモリノードを相互に接続することで、容量の拡張を容易としたストレージ装置が開発されている。各メモリノードは、自身のメモリノード宛のデータを受信した場合は、読み出しまたは書き込みなどの所定の処理を行う。また、各メモリノードは、自身のメモリノード宛ではないデータを受信した場合は、受信パケットを適切な他のメモリノードに転送する。各メモリノードによって適切な転送が繰り返されることにより、データは目的のメモリノードに到達できる。
特開平7−234763号公報 特開2012−103926号公報
従来技術によるディスクアレイ装置では、ハードディスク装置同士の物理的な配列が考慮されていなかった。そのため、従来技術によるディスクアレイ装置におけるアクセス制御をメモリノードを相互に接続して構成するストレージ装置にそのまま適用した場合、メモリノードに対するアクセスの集中によりデータの転送待機時間が延長され、スループットの低下を招くおそれがあるという問題点があった。
すなわち、メモリノードを相互に接続して構成するストレージ装置に対してハードディスク装置のシーケンシャルな書き込みをそのまま適用すると、1のメモリノードにアクセスが集中してデータの転送待機時間が発生し、読み出し効率が低下してしまう可能性がある。
本発明が解決しようとする課題は、メモリノードを相互に接続した構成において、効率的なデータ転送が可能な記憶装置および記憶方法を提供することにある。
実施形態の記憶装置は、予め定められたサイズの記憶領域を複数含む記憶部を備え、2以上の異なる方向に通信路を介して相互に接続される複数のメモリノードを有する。各メモリノードは自身宛てのパケットの処理と他のメモリノード宛てのパケットの通信路を介した転送とを実行する。複数のメモリノードは、それぞれ2以上のメモリノードを備える複数の第1グループを構成する。複数の第1グループは、同一の第1グループに属する2以上のメモリノードのうちの任意の2のメモリノードは相互に接続されているかまたは同一の第1グループに属する他のメモリノードを介して接続されている、第2グループを含む。記憶装置は、制御部を備える。制御部は、記憶部へのデータの書き込み先を、記憶領域毎に異なる第1グループに順次割り当てる。そして、前記制御部は、書き込み先に宛てた前記記憶部へのデータを含むパケットを発行する。
図1は、実施形態に係る記憶装置の一例の構成を示すブロック図である。 図2は、実施形態に係るメモリノードの一例の構成を示すブロック図である。 図3は、実施形態に係る、複数のメモリノードを互いに異なる方向に分割して4のグループを形成した例を示す図である。 図4は、実施形態に係る、複数のメモリノードを同一の方向に分割して4のグループを形成した例を示す図である。 図5は、実施形態に係るメモリノードの構成を概略的に示す図である。 図6は、実施形態に係るメモリノードに書き込まれるデータの構成例を概略的に示す図である。 図7は、実施形態に係るシーケンシャル書き込みの例を示す図である。 図8は、実施形態による、各グループにおいて、1のページに書き込みを行う毎にメモリノードグループを変更する例を示す図である。 図9は、実施形態に係る、メモリノードグループ内でパリティを格納するメモリノードを選択する方法について説明するための図である。 図10は、実施形態に係る、サイクリック書き込み方式において、論理アドレスからメモリノードの物理アドレスとページアドレスとを決定する例を示す図である。 図11は、実施形態に係る、グループにおいて物理アドレスの増加方向を示す図である。 図12は、実施形態に係るメモリノードグループの位置関係を示す図である。 図13は、実施形態に係る、値γとデータおよびパリティとの対応例を示す図である。 図14は、実施形態に係る第1のデータ復元処理を説明するための概念図である。 図15は、実施形態に係る第1のデータ復元処理の一例を示すフローチャートである。 図16は、実施形態に係る第2のデータ復元処理を説明するための概念図である。 図17は、実施形態に係る第2のデータ復元処理の一例を示すフローチャートである。
(実施形態に適用可能な構成)
以下、実施形態に係る記憶装置について説明する。図1は、実施形態に係る記憶装置10の一例の構成を示す。記憶装置10は、記憶機能およびデータ転送機能を有する複数のメモリノード11を相互に接続した構成を備え、データ転送機能は、各メモリノード11が効率的にデータパケットを転送する転送方式を備える。
図1において、記憶装置10は、複数のメモリノード11に対してデータが分散して格納される。図1の例では、各メモリノード11は、矩形格子の格子点に配置される。格子点の座標を座標(x,y)で示し、格子点に配置されるメモリノード11の物理アドレスは、当該格子点の座標と対応して物理アドレス(xD,yD)で示されるものとする。また、図1の例では、左上隅に位置するメモリノード11が原点の物理アドレス(0,0)を有し、各メモリノード11を横方向(X方向)および縦方向(Y方向)に移動することで、物理アドレスが整数値で増減する。
各メモリノード11は、それぞれ4の入力ポート12および出力ポート13を備え、隣接するメモリノード11と、これら4の入力ポート12および出力ポート13を介して接続される。より具体的には、対向する2の隣接するメモリノード11は、互いの入力ポート12および出力ポート13とを介して接続される。
また、各メモリノード11は、2以上の異なる方向に隣接するメモリノード11と接続される。例えば、図1において左上隅の物理アドレス(0,0)で示されるメモリノード11は、X方向に隣接する物理アドレス(1,0)で表されるメモリノード11と、X方向とは異なる方向であるY方向に隣接する物理アドレス(0,1)で表されるメモリノード11と、それぞれ接続される。また、図1において物理アドレス(1,1)で表されるメモリノード11は、互いに異なる4の方向に隣接する、物理アドレス(1,0)、(0,1)、(2,1)および(1,2)でそれぞれ示される4のメモリノード11に接続される。
記憶装置10は、パリティの計算とデータ読み書き命令の発行とを行う、少なくとも1のデータコントローラ14を備える。データコントローラ14は、入力ポート12および出力ポート13を介してメモリノード11に接続される。このとき、メモリノード11同士の通信規格とデータコントローラ14の通信規格とが異なる場合は、両者の間にアダプタを設けてもよい。図1の例では、データコントローラ14は、各メモリノード11が配置される正方格子のx方向およびy方向それぞれの一方向の各端に、それぞれ接続されている。
各メモリノード11に格納するためのデータは、例えば外部のホストコンピュータからこの記憶装置10に供給され、図示されない選択回路に入力される。選択回路は、各データコントローラ14の状態を調べ、処理に余裕があるデータコントローラ14を選択して、当該データを転送する。
このように、実施形態に係る記憶装置10は、複数のデータコントローラ14と複数のメモリノード11とから構成されているため、データの入り口とその間のデータ転送経路が複数存在することになり、故障耐性に対して有利である。すなわち、記憶装置10は、メンテナンスの際や障害が発生した場合であっても、メンテナンスや障害箇所以外の転送経路を用いることが可能となり、動作の完全な停止が不要なシステムが実現される。さらに、記憶装置10は、メモリノード11やデータコントローラ14といったモジュールを増やすだけでスケールアウト特性を達成でき、サーバを増やすという従来の方法と比較しても、手間が少なく低コストで実装可能である。
なお、各メモリノード11は、記憶領域として複数のブロックを含み、各ブロックは、複数のページを含む。メモリノード11に対するデータの書き込みは、ページ単位で行われる。また、メモリノード11に対するデータの消去は、ブロック単位で行われる。以下では、説明のため、1のメモリノード11が1のブロックを含み、1のブロックが4のページを含むものとする。
なお、図1では、各メモリノード11が矩形格子の格子点に配置されるように示したが、各メモリノード11の配置は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各メモリノード11が2以上の異なる方向に隣接するメモリノード11と接続されればよく、例えば三角形、六角形などでもよい。また、図1では各メモリノード11が2次元的に配置されているが、各メモリノード11を3次元的に配置しても構わない。
図2は、実施形態に係るメモリノード11の一例の構成を示す。メモリノード11は、入力ポート12および出力ポート13に対応し、それぞれ4の入力ポートバッファ12Aおよび出力ポートバッファ13Aと、4のセレクタ15とを有すると共に、パケットコントローラ16と、メモリ17と、メモリコントローラ18と、MPU(Micro-Processing Unit)19とを有する。
パケットコントローラ16と、メモリコントローラ18と、MPU19と、各入力ポートバッファ12Aとがローカルバス20により互いに通信可能に接続される。また、メモリ17は、メモリコントローラ18を介してローカルバス20に接続される。
各入力ポートバッファ12Aは、各入力ポート12が接続される。なお、データは、所定サイズのパケットを単位として、各メモリノード11間を転送される。パケットは、送信先アドレスおよび送信元アドレスを少なくとも含むヘッダ部と、データ部とを有する転送データの単位である。各出力ポートバッファ13Aは、各出力ポート13が接続される。セレクタ15は、それぞれ、パケットコントローラ16からの制御信号に従い、各入力ポートバッファ12Aおよび各出力ポートバッファ13A間の接続を制御する。
このような構成において、入力ポート12に入力されたパケットは、入力ポートバッファ12Aに一時的に記憶される。セレクタ15は、入力ポートバッファ12Aからパケットが入力されると共に、パケットコントローラ16から制御信号が入力される。セレクタ15は、制御信号に従い、入力されたパケットから何れかのパケットを選択して出力ポートバッファ13Aに出力する。出力ポートバッファ13Aは、セレクタ15から出力されたパケットを一時的に記憶すると共に、出力ポート13に出力する。パケットコントローラ16は、セレクタ15の出力を制御する。
メモリ17は、データを記憶する複数のメモリセルを有する記憶素子である。メモリ17は、例えばNAND型フラッシュメモリや、ビットコストスケーラブルメモリ(BiCS)、磁気抵抗メモリ(MRAM)、相変化メモリ(PcRAM)、抵抗変化型メモリ(RRAM(登録商標))等が挙げられる。メモリコントローラ18は、メモリ17への書き込み、読み出しおよび消去の動作を制御する。MPU19は、メモリノード11内で必要な演算処理を行う。また、MPUは汎用的な演算処理にも利用可能だが、MPUの代わりに、特定の処理に特化した専用ハードウェアで構成しても構わない。
メモリノード11が受信したパケットは、入力ポート12を介して入力ポートバッファ12Aに格納される。パケットコントローラ16は、パケットが含む送信先(宛先)アドレスと、そのメモリノード11自身のアドレスの2つの情報に基づいて、受信したパケットが自メモリノード11宛であるか否かを判定する。
若し、自メモリノード11宛であると判定した場合、パケットコントローラ16は、自メモリノード11のメモリ17に対する書き込み、読み出しおよびその他の処理のうち、指定された処理を行う。一方、受信したパケットが自メモリノード11宛ではないと判定した場合、パケットコントローラ16は、パケットの送信先アドレスの情報と自メモリノード11のアドレスの情報とに基づいて、受信したパケットを転送する隣接するメモリノード11を決定し、セレクタ15に対して制御信号を送信する。セレクタ15は、この制御信号に従い、対応する出力ポートバッファ13Aに当該パケットを出力する。
(実施形態に係るアドレス割当処理)
次に、実施形態についてより詳細に説明する。先ず、実施形態に適用可能な既存技術について、概略的に説明する。複数のハードディスク装置を備えるディスクアレイ装置におけるデータの分散格納方法の一つとして、複数のハードディスク装置を1の記憶装置として扱うことにより、アクセス処理のパフォーマンスや信頼性の向上を実現するRAID(Redundant Array of Independent Disks)と呼ばれる技術が知られている。
RAIDは、レベル0〜6のレベルに分類され、レベル3〜6では、ディスク故障時にデータを回復するための冗長情報としてパリティを保持する。RAIDは、ディスクアレイ装置において、論理アドレスに対応する物理アドレスと物理ページアドレスとを、複数のハードディスク装置の中からマッピングすることで実現される。
本実施形態では、上述した、相互に接続された複数のメモリノードを備える記憶装置10において、RAID(例えばRAIDレベル5)を適用する。すなわち、記憶装置10は、所定量の入力データからパリティを生成し、入力データとパリティとを複数のメモリノード11に対して分散して格納する。このとき、記憶装置10は、複数のメモリノード11を仮想的に複数のグループに分割し、分割した各グループに対して入力データとパリティとを分散させて格納する。すなわち、記憶装置10が備える複数のメモリノード11は、それぞれ所定数のメモリノード11を備える2以上のグループを構成する。
図3および図4は、複数のメモリノード11を相互に接続した記憶装置10において、RAIDを構成するメモリノード11を選択する例を示す。以下、メモリノード11の配列において、図中でX方向に並ぶメモリノード11の個数を値NX、Y方向に並ぶメモリノード11の個数を値NYとする。さらに、RAIDを構成するメモリノード11の数を値(NR+1)として、選択されたメモリノード11に、分散ノード番号[ND0〜NDNR]を定義する。以下、分散ノード番号NDnが定義されたメモリノード11を、選択メモリノードNDxのように記述する。
この選択メモリノードNDnにおいて、インデクス「n」が、選択された各メモリノード11に一意に付された番号であって、例えば、格子の左上隅からX方向に増加し、さらに、格子の上から下に向けて増加するものとする。
なお、RAIDを構成するメモリノード11とは、所定量のデータと、当該所定量のデータから生成されるパリティとがそれぞれ格納される各メモリノード11をいう。例えば、1の論理アドレス(LA:Logical Address)で示されるデータが2以上に分割され、分割されたデータそれぞれを用いて1のパリティが生成される。この分割された各データと、当該データから生成されたパリティとが、それぞれ異なるメモリノード11に格納される。
以下では、説明のため、1の論理アドレスLAで示されるデータが、それぞれメモリノード11の書き込み単位(例えばページ)のサイズを有する3のデータに分割され、この3のデータから、当該書き込み単位のサイズを有するパリティが生成されるものとする。すなわち、値NR=3であり、RAIDを構成するメモリノード11の数は4個となる。また、1のRAIDを構成するメモリノード11の集合を、メモリノードグループと呼ぶ。
図3および図4は、値NR=3の場合におけるメモリノード11の選択の例である。図3は、複数のメモリノード11を互いに異なる方向に分割して4のグループを形成した例である。より具体的には、正方格子上に配列された複数のメモリノード11を、X方向およびY方向にそれぞれ2分割し(以下、十字分割と呼ぶ)、4のグループ1010、1011、1012および1013を形成した例である。
また、図4は、複数のメモリノード11を同一の方向に分割して4のグループを形成した例である。より具体的には、正方格子状に配列された複数のメモリノード11を、X方向に向けて4分割し、Y方向に4のグループ1020、1021、1022および1023を形成した例である。
図3および図4に示されるように各メモリノード11を分割した配列から、それぞれ1つずつメモリノード11を選択することで、RAIDを構成するメモリノード11を物理的に分散させることができる。
図3の例において、選択メモリノードND0の物理アドレスをアドレス(xD,yD)とすると、このアドレス(xD,yD)が示す位置のメモリノード11を十字分割された配列の左上のグループ1010から選択する場合、次式(1)の条件式を満たすことになる。
Figure 0006005533
また、これにより、選択メモリノードND1〜ND3の物理アドレスは、それぞれ下記の式(2)、式(3)および式(4)として表される。
Figure 0006005533
Figure 0006005533
Figure 0006005533
十字分割の場合、このように選択メモリノードND0を選択することで、RAIDを構成するメモリノードグループを一意に決定することができる。
例えば、選択メモリノードND0としてメモリノード11a0を選択した場合、上述の式(2)〜式(4)に従い、メモリノード11a0と、メモリノード11a1、11a2および11a3とによりRAIDを構成するメモリノード11のグループが決定される。選択メモリノードND0としてメモリノード11bやメモリノード11cを選択した場合も同様にして、上述の式(2)〜式(4)に従い、RAIDを構成するメモリノードグループが決定される。
図4の例において、選択メモリノードND0をY方向に4分割された配列の最上部のグループ1020から選択する場合、次式(5)の条件式を満たすことになる。
Figure 0006005533
これにより、選択メモリノードND1〜ND3の物理アドレスは、それぞれ下記の式(6)、式(7)および式(8)として表される。
Figure 0006005533
Figure 0006005533
Figure 0006005533
すなわち、これは固定数での分割と考えられるので、それぞれ下記の式(9)、式(10)および式(11)を計算することで求められる。なお、演算子「Integer」は、整数部分を抽出することを示し、演算子「%」は、余剰演算子を示す。
Figure 0006005533
Figure 0006005533
Figure 0006005533
図3および図4は、値NXおよび値NYが等しい値の偶数であり、メモリノード11の配列がX方向およびY方向にそれぞれ対称である場合を示している。これに対して、値NXと値NYとが異なる場合は、例えば図3の十字分割の例では、十字に等しく4分割できない可能性がある。このような場合は、メモリノード11の1または複数の行または列をスペアディスクとして用いることで、情報を書き込むメモリノード11の対称性を確保できるが、容量効率低下のおそれがあり、適用の可能性に制限が生じる。
一方、複数のメモリノード11の一方向への分割(図4参照)または固定数での分割は、メモリノード11の配列が非対称である場合に、柔軟な対応が可能である。しかしながら、配列規模とRAIDを構成するメモリノード11の数との組み合わせによっては、図4に例示されるように、1のメモリノードグループに属する各メモリノード11が特定の列に偏ってしまう場合が発生する。メモリノードグループのように、一連のデータの読み出しまたは書き込みを行う複数のメモリノード11が1列または1行に多く配置されるほど、データ転送の際に転送データが渋滞を起こす可能性が高くなる。
各メモリノード11に対する物理アドレスマッピングの方法としては、図3のように異なる方向に分割する方法と、図4のように一方向に分割する方法との何れの方法も考えられる。何れの方法を選択するかは、上述したような、容量効率低下や渋滞発生可能性などの影響を考慮して決定することが好ましい。以下では、図3に示す、各メモリノード11の物理アドレスマッピングを、配列の十字分割による行うものとして説明する。
次に、実施形態に係る、各メモリノード11に対する物理アドレスマッピング方法について、より詳細に説明する。図5および図6は、以下の説明で用いるメモリノード11の構成とデータ構成を概略的に示す。
図5は、メモリノード11の構成を概略的に示す。上述したように、メモリノード11は、データの消去単位であるブロックを複数含み、ブロックは、データの書き込み単位に対応する記憶領域であるページを複数含む。以下では、図5に例示されるように、メモリノード11は、それぞれページアドレス#0、#1、#2および#3で示されるページPage#0、#1、#2および#3を有する1のブロックを含むものとする。また、記憶装置10は、X方向に4、Y方向に4の計16のメモリノード11を有し、値NX=値NY=4で配列を形成し、16のメモリノード11がそれぞれ4のメモリモード11を含む4のグループに仮想的に分割されるものとする。このような構成において、各メモリノード11に対して、各データと、データから生成されたパリティとを分散して格納する場合を考える。
図6は、メモリノード11に書き込まれるデータの構成例を概略的に示す。データ30は、ホストコンピュータ装置などの上位装置から記憶装置10に転送されるデータの例を示す。各データは、論理アドレスLAを指定されて、上位装置から記憶装置10に転送される。各データは、記憶装置10に転送されると、図示されない選択回路を介して何れかのデータコントローラ14に入力される。データコントローラ14は、入力されたデータに基づきパリティ31を生成する。
この例では、データコントローラ14は、1の論理アドレスLAで示されるデータ30をそれぞれページのサイズに等しいサイズの3のデータに分割し、この3分割されたデータから、同様にページのサイズに等しい1のパリティ31を生成している。1の論理アドレスLAが示すデータ30と、当該データ30に対応するパリティ31とで、メモリノードグループが形成される。
図7は、1のメモリノードグループのページが埋まるまで書き込みを続ける、シーケンシャル書き込みの例を示す。すなわち、シーケンシャル書き込みにおいては、1のメモリノードグループのデータまたはパリティが書き込まれたメモリノード11のページに対して、当該ページが埋まるまで、他のメモリノードグループのデータおよびパリティを書き込む。
図7において、複数のメモリノード11が4のグループ1030、1031、1032および1033に分割される。この例では、各グループ1030〜1033において、左上のメモリノード11の各ページに対して、論理アドレスLA=0〜3のデータおよび当該データに対応するパリティP0〜P3が書き込まれている。
このシーケンシャル書き込みでは、例えばHDD(Hard Disk Drive)で構成されたストレージ装置の連続した論理アドレスLAのデータ読み出し(シーケンシャル読み出し)において、ヘッドのシークタイム短縮による読み出し時間の高速化が期待できる。
図8は、各グループ1030〜1033において、1のページにデータまたはパリティを書き込む毎に、メモリノードグループを変更する。すなわち、図8に示される方法では、データまたはパリティを1のページに書き込む毎に、グループ1030〜1033を順次変更している。また、各グループ1030〜1033内において、データまたはパリティをページに書き込むメモリノード11を順次変更している。この図8に示される書き込み方法を、サイクリック書き込みと呼ぶ。
図8に例示されるサイクリック書き込みでは、論理アドレスLA=0のデータについて、分割した各データとパリティとを、各グループ1030〜1033の左上のメモリノード11のページPage#0に順次書き込む。次に、論理アドレスLA=1のデータについて、分割した各データとパリティとを、各グループ1030〜1033内で書き込み先のメモリノード11を右上のメモリノード11に切り替えて、ページPage#0に順次書き込む。そして、論理アドレスLA=2、論理アドレスLA=3の各分割データおよびパリティが、グループ1030〜1033を順次変更されると共に、各グループ1030〜1033内で書き込み先のメモリノード11を順次変更されて、ページPage#0に順次書き込む。以下、各メモリノード11の同一ページが全て書き込まれたら、ページアドレスが切り替えられる。つまり、論理アドレスLA=4の各分割データおよびパリティを、各グループ1030〜1033の左上のメモリノード11のページPage#1に順次書き込む。
このサイクリック書き込みでは、例えばSSD(Solid State Drive)で構成されたストレージ装置において、シーケンシャル読み出しの際でも、各メモリノード11への並列アクセスによりアクセス集中が抑制され、読み出しの高効率化が期待できる。
各メモリノード11に対する物理アドレスマッピングの方法は、上述に限られない。例えば、1のメモリノード11の全ページではない複数ページを書き込む毎に、メモリノードグループを変更する方法が考えられる。この方法は、上述したシーケンシャル書き込みとサイクリック書き込みとを融合させた方法となる。何れの方法を用いて物理アドレスマッピングを行うかは、記憶装置10の構成や使用環境などを考慮して選択するのが好ましい。以下では、サイクリック書き込みを採用した場合について述べる。
図9および上述した図8を用いて、RAIDを構成するメモリノードグループ内でパリティP0〜P15を格納するメモリノード11を選択する方法について説明する。実施形態では、論理アドレスLAが互いに隣接するデータから生成された各パリティの書き込み先を、異なるメモリノード11に割り当てるようにしている。
図9は、メモリノードグループが変更された際に、パリティを格納するメモリノード11の分散ノード番号を変更する例を示す。図9において、同一のメモリノードグループの書き込みがなされるページに同一の斜線を付して示す。図9の例では、パリティP0を含むメモリノードグループについて、パリティP0が、選択メモリノードND0の分散ノード番号に従いグループ1030に書き込まれる。次のパリティP1を含むメモリノードグループについて、パリティP1が、選択メモリノードND1の分散ノード番号に従いグループ1031に書き込まれる。次のパリティP2を含むメモリノードグループについて、パリティP2が、選択メモリノードND2の分散ノード番号に従いグループ1032に書き込まれる。さらに次のパリティP3を含むメモリノードグループについて、パリティP3が、選択メモリノードND3の分散ノード番号に従いグループ1033に書き込まれる。
この方式では、メモリノードグループ内でパリティを格納するメモリノード11が常に同じになる。ただし、同じメモリノード11に全てのパリティを書き込むわけではないので、RAIDレベル4のような性能劣化の問題は起こりにくい。一方で、データ更新が多い場合は、パリティ更新のためにパリティを格納するメモリノード11への書き込みが頻発する。そのため、アクセスの集中により処理性能が劣化する可能性がある。さらに、書き込み回数が制限されるNANDフラッシュのようなメモリで構成された場合、パリティを格納しているメモリノード11が先に寿命を迎え、システムとしてメモリノード11の交換までの運用期間が短いといった問題が起こりうる。
パリティを格納するメモリノード11の分散ノード番号を「N」とすると、インデクスγは、γ=LA%(NR+1)=LA%4として選択することができる。
上述した図8は、全てのメモリノードグループが各メモリノード11の同一ページに書き込まれ、ページアドレスが切り替えられた場合に、パリティを格納するメモリノード11の分散ノード番号を変更する例を示す。換言すれば、図8に示す方法では、各メモリノード11の同一ページ、すなわち、互いに位置が対応する記憶領域に対する全てのメモリノードグループのデータの割り当てが一巡した場合に、パリティの書き込み先のグループを切り替える。
図8の例では、パリティP0、P1、P2およびP3をそれぞれ含む各メモリノードグループの各パリティP0、P1、P2およびP3が、選択メモリノードND0の分散ノード番号に従いグループ1030に書き込まれる。当該メモリノードグループの書き込みが完了すると、各メモリノード11のページアドレスPage#0のページ全てに書き込みがなされたので、次からの書き込みは、ページアドレスを切り替えて行われる。次のパリティP4、P5、P6およびP7を含む各メモリノードグループの各パリティP4、P5、P6およびP7が、選択メモリノードND1の分散ノード番号に従いグループ1031に書き込まれる。このように、各メモリノード11の同一ページアドレスのページ全てに書き込みがなされ、ページアドレスの切り替えがなされた場合に、パリティを書き込むメモリノード11の分散ノード番号を切り替える。
この方式では、シーケンシャル読み出しにおいて、ページアドレスが変わるまで、パリティを格納するメモリノード11以外の領域にアクセスが偏る。一方で、この方式では、パリティを格納するメモリノード11が分散される。つまり、更新が多い場合でも、パリティの書き込み作業がメモリノード全体に分散されることになる。したがって、この図8に示す方式ならば、寿命のあるメモリで構成されたシステムであっても、図9の方式と比較して有利である。
パリティを格納するための選択メモリノードNは、下記の式(12)により決められる。
Figure 0006005533
図8および図9で示したパリティを格納するメモリノード11の選択手法は、記憶装置10を含むストレージ装置の構成や、データの読み出し方式を考慮して選択するのが好ましい。
以下では、図8に示した、サイクリック書き込みによりパリティを格納するメモリノードが分散されている場合について述べる。
図10は、サイクリック書き込み方式において、論理アドレスLAからメモリノード11の物理アドレス(x,y)とページアドレスPとを決定する例を示す。図11は、図10に示される物理アドレス(x,y)の増加方向を示す。図11の例では、値NX=12、値NY=12として配置された各メモリノード11が十字分割され、グループ1040、1041、1042および1043が形成されている。例えばグループ1040において、物理アドレス(x,y)は、X方向にメモリノード11毎に増加し、さらに、Y方向にメモリノード11毎に増加する。
RAIDを構成するメモリノードグループを決定する選択メモリノードND0〜ND3は、選択メモリノードND0の物理アドレス(xD,yD)から一意に決める事ができるので、選択メモリノードND0についてのみの議論で十分である。なお、各選択メモリノードND0〜ND3は、それぞれ各グループ1040、1041、1042および1043に含まれる。
図10より、物理アドレス(xD,yD)における値xDは、[0,1,2,…,(NX/2)−1]を繰り返すので、xD=LA%(NX/2)として求められる。値yDは、[0,1,2,…,(NX/2)−1]をそれぞれ(NX/2)回繰り返すので、次式(13)により求められる。また、ページアドレスPは、論理アドレスLAが値(NXY/4)増えるごとに1増えるので、次式(14)により求められる。
Figure 0006005533
Figure 0006005533
図12は、値NXおよび値NYが2の冪乗、値(NR+1)が4の冪乗と仮定した場合のメモリノードグループの位置関係を示す。このとき、選択メモリノードND0の物理アドレスは、次式(15)に示される範囲内に存在する。なお、図12において、分散ノード番号を「Num」、物理アドレスを「PA」として示している。
Figure 0006005533
なお、図12における各値を一般化すると、値αおよび値βをそれぞれ式(16)および式(17)で示される範囲の整数値とすると、分散ノード番号「NDn」のインデクス「n」がn=(α+1)(β+1)−1となり、物理アドレスは、次式(18)で表される。
Figure 0006005533
Figure 0006005533
Figure 0006005533
論理アドレスLAに従いメモリノードグループの中からパリティ格納用のメモリノード11の分散ノード番号「N」を選択するための一般式は、式(19)として求められる。また、論理アドレスLAからメモリノードの物理アドレス(xD,yD)とページアドレスPとを決定する一般式は、それぞれ式(20)、式(21)および式(22)として示される。
Figure 0006005533
Figure 0006005533
Figure 0006005533
Figure 0006005533
次に、値NR=3の場合において、ある論理アドレスLAにデータDを書き込む場合の書き込み命令の例を示す。データDは、書き込まれる単位(例えばページ)のサイズに分割される。ここでは、データDは、値NRに従いデータd1、d2およびd3に3分割される。また、これらデータd1、d2およびd3の排他的論理和から、パリティpを生成する。
図13は、パリティpを格納するメモリノード11の分散ノード番号「NDn」を判定するための値γと、データd1〜d3およびパリティpとの対応例を示す。ここで、変数a、b、cおよびdは、各データを格納するための変数である。
以上の結果を用いて、論理アドレスLAのデータDを記憶装置10の各メモリノード11に書き込むための書き込み命令Writeは、例えば次式(23)〜(26)のように示される。
Write[xD(LA),yD(LA),ND0,γ(LA),P(LA),a] …(23)
Write[xD(LA),yD(LA),ND1,γ(LA),P(LA),b] …(24)
Write[xD(LA),yD(LA),ND2,γ(LA),P(LA),c] …(25)
Write[xD(LA),yD(LA),ND3,γ(LA),P(LA),d] …(26)
なお、式(23)〜式(26)において、値γは、パリティ担当を判定するために導出した値であるので、パケットとして送信しなくてもよい。
書き込み時には、書き込み時の書き込み命令Writeに対するメモリノード11からの応答であるメッセージReplyをデータコントローラ14が受信した回数のカウントと、タイムアウト監視とによる故障判定を行うことが好ましい。
例えば、上述のようにRAIDが3のデータd1〜d3と、1のパリティpの4のデータから構成される場合、1の書き込み命令Writeに対するメッセージReplyの、タイムアウト期間内における受信回数のカウント値が4の場合は、書き込みが正常に行われたと判定できる。
一方、タイムアウト時にメッセージReplyの受信回数のカウント値が3の場合は、RAIDを構成する4のデータのうち1のデータの書き込みが正常に行われていないと判定できる。書き込みが正常に行われない要因としては、先ず、書き込みたいメモリノード11の物理的な位置関係や、渋滞による寿命切れなどが考えられる。
これらの要因の場合は、同じメモリノード11に対して各データの再書き込みを試み、当該メモリノード11からのメッセージReplyを受信するか否かを確認する。このとき、書き込み命令Writeを発行したデータコントローラ14と当該メモリノード11との経路途中に物理的断線やノード異常が存在する場合も考えられる。そのため、データの再書き込みでは、書き込み命令Writeを発行するデータコントローラ14の位置や、当該メモリノード11に対するデータ経路の方向を変えることが望ましい。
若し、データの再書き込みに対して1のメッセージReplyが帰ってこない場合は、RAIDによる回復でデータの読み出しは可能である。この場合は、エラー通知を行い、どのメモリノード11が故障可能性があるかを出力することで早急なリビルドに繋がるシステムが望ましい。さらに、スペアのメモリノード11を設けていれば、データをその領域に書き込んで退避させておくことでより信頼性を高められる。これに限らず、新たな論理アドレスLAに対して再度書き込み命令Writeを発行することも有効である。
また、論理アドレスLAのデータDを記憶装置10の各メモリノード11から読み出すための読み出し命令Readは、例えば次式(27)〜(30)のように示される。なお、読み出し命令Readにおいては、データ格納用の変数a〜dを省略することができる。
Read[xD(LA),yD(LA),ND0,γ(LA),P(LA),a] …(27)
Read[xD(LA),yD(LA),ND1,γ(LA),P(LA),b] …(28)
Read[xD(LA),yD(LA),ND2,γ(LA),P(LA),c] …(29)
Read[xD(LA),yD(LA),ND3,γ(LA),P(LA),d] …(30)
なお、式(27)〜式(30)において、値γはパリティ担当を判定するために導出した値であるので、パケットとして送信しなくてもよい。また、変数a、b、cおよびdは、読み出したデータやパリティを格納するものなので、パケットとして送信しなくてもよい。
読み出しにおいても、書き込み時と同様に、タイムアウト監視による故障判定があると望ましい。
なお、読み出しは、データd1、d2およびd3だけを読み出す第1の読み出し方法と、データd1、d2およびd3とパリティpとを読み出す第2の読み出し方法とが考えられる。
第1の読み出し方法では、パリティ読み出し用のパケット転送が不要となるため、渋滞発生率が下がりスループットが向上する可能性が考えられる。しかし、1のデータが読み出されないと分かった時点で初めてパリティの読み出し命令を実行するため、故障時の読み出しには余計に時間がかかってしまう可能性も考えられる。
一方で、第2の読み出し方法では、パリティpを読み出すパケットが第1の読み出し方法に対して追加されることになるため、第1の読み出し方法よりもデータの渋滞発生率が高くなるおそれがある。また、1のデータが読み出されないことがわかった時点で、既にパリティpの読み出し命令が並列に実行されており、RAIDによるデータ回復を迅速に実行することが可能になることも考えられる。さらに、パリティpを、同じメモリノードグループの他のデータd1〜d3の何れか1よりも先に読み出せた場合には、メモリノードグループ内で読み出し済みの他の2つのデータを用いて、未だ読み出されていないデータを計算して当該データを読み出したと見做すことも考えられる。さらにまた、メモリノードグループの全てのデータd1〜d3およびパリティpがデータコントローラ14に到着するまで待ち、パリティpを用いてデータ整合性のチェックを行ってから、読み出されたデータd1〜d3を出力することで信頼性を高めることも可能である。
これらの手法は、ユーザーが速度を重視するのか、安全を重視するのかに基づき選択することが望ましい。
(実施形態に適用可能な故障処理)
次に、実施形態による記憶装置10に適用可能な故障検知およびデータ復元について説明する。記憶装置10におけるメモリノード11の故障判定は、データコントローラ14が、メモリノード11にアクセスした際のメッセージReplyの受信回数のカウントと、データ誤りによる反転ビットの訂正回数のカウントとを行うことで実現できる。例えば、これらの各カウント値にそれぞれ閾値を設定し、少なくとも一方のカウント値が対応する閾値を超えた場合に、そのメモリノード11に係るデータ転送が異常であると判定する。
図1に例示した記憶装置10は、各メモリノード11が4方向の経路を持つため、目的のメモリノード11の1つの経路が断線していても、他の経路を通って目的のメモリノード11にアクセスできる。そして処理完了すると、その合図としてメッセージReplyを返答する。RAIDで分割したデータに対する読み書き処理を行った場合は、RAIDを構成するメモリノード11からメッセージReplyが戻ってくれば、全ての処理が成功したことを確認できる。ただし、アクセス渋滞が起こっている場合や4方向の経路が全て断線した場合は、寿命切れによりパケットが消えてしまうので、メッセージReplyを受け取ることができない。このような場合は、メッセージReplyの回数を数えることでシステムの状態が確認できるため、故障などの問題に即座に対応することができる。
また、メモリノード11は、図示されないビジー(busy)伝送線路とエラー(error)伝送線路を有していてもかまわない。これにより隣接するメモリノード11の状態を検知することができる。
入力ポートバッファ12Aが使用中の場合、使用中の入力ポートバッファ12Aに接続されているメモリノード11は、パケットを送信することができない。そこで、使用中の入力ポートバッファ12Aに接続されているメモリノード11対してビジー伝送線路を介してビジー信号を送り、パケット受信できない状態(ビジー状態)であることを通知する。
さらに、経路異常や物理アドレス不整合、メモリ17へのアクセス不能な状態(エラー状態)になった場合には、隣接する全てのメモリノード11に対してエラー伝送線路を介してエラー信号を送り、エラー状態を通知することができる。ただし、断線などの経路異常の場合は、経路異常を起こしている線路にのみ、エラー状態を通知してもよい。
例えば、ルーティングにおいて、経路途中のメモリノード11がパケットを受信した際に、ビジー状態もしくはエラー状態を発信しているメモリノード11に対してパケットを送信しないようにすることで、そのノードを迂回して目的のメモリノード11に到達できる。
もし、目的のメモリノード11のビジー状態を検知していた場合は、ビジー信号が消えるまでパケットを保持しておくことが可能である。一方で、目的のメモリノード11のエラー信号を検知していた場合は、クライアント装置にエラー状態を通知することで早急に対応することができる。
ところで、読み出されたデータに含まれる誤ビット数が多いほど、メモリノード11がデータを正確に保持できていないことになるため、誤ビット数の多さは、当該メモリノード11が故障していると判定するに十分な理由と考えられる。
また、一般的に、記憶媒体に対するデータ書き込みの際には、書き込まれるデータに基づき生成されたエラー訂正符号が、当該データと共に記憶媒体に書き込まれる。そして、読み出しの際に、読み出されたデータに対してエラー訂正符号を用いてエラー訂正を行う。このとき、エラー訂正を行った訂正ビットの数を検出して出力できる。この訂正ビット数が誤ビット数に相当する。なお、読み出されたデータに、エラー訂正符号によるエラー訂正能力を超えたエラーが含まれる場合、エラー訂正が行われない。記録装置10においては、各メモリノード11内のMPU19、もしくは専用ハードウェアがエラー訂正処理を行う。
読み出されたデータの誤ビット数をカウントする方法として、データコントローラ14がメモリノード11から受け取ったデータの訂正ビット数をカウントする第1のカウント方法と、メモリノード11が、エラー訂正結果に基づく不良ビット情報(訂正ビット数情報)を、読み出したデータに付加してデータコントローラ14に応答する第2のカウント方法とが考えられる。
何れのカウント方法においても、データコントローラ14による処理が必要となる。ここで、第2のカウント方法は、複数のメモリノード11において分散処理がなされることになり、データコントローラ14の処理が軽減される。したがって、データコントローラ14自体がボトルネックとなるおそれを低減できる。
具体的な故障検知方法としては、例えば、訂正するビット数に閾値を設けておき、データコントローラ14は、あるメモリノード11における訂正ビット数が閾値に到達または超える場合に、当該メモリノード11が故障の可能性があるとしてエラー通知すればよい。この場合は、データ自体は読み出せるので、当該メモリノード11の故障が確定しているわけではないが、故障する可能性の高いメモリノード11を把握することができるので、故障時には迅速な対応ができる可能性が高まる。
また、訂正ビット数に対する閾値を複数設定することで、故障可能性に優先度を付加できるため、より効率的な運用が可能になると考えられる。この場合、このシステムを管理するためのデータも増えるため、処理負荷が大きくなる可能性がある。また、故障予知された時点でメモリノード11を交換することで、記憶装置10に対して、より信頼性を確保できると考えられるが、コストも増大する。ユーザーの要求によってこれらを考慮したうえで、訂正ビット数に対する閾値や閾値数を設定するのが望ましい。
次に、メモリノード11に格納されるデータを復元するデータ復元処理について、より具体的に説明する。なお、メモリノード11に対するデータ復元処理が必要な場合とは、例えば、あるメモリノード11が故障検知された場合や、メンテナンスなどでメモリノード11を交換する場合である。ここでいうメモリノード11の交換は、記憶装置10に組み込まれたメモリノード11を、ユーザが取り外し、取り外した場所に新たなメモリノード11を取り付けることをいう。交換前と交換後とで、メモリノード11の物理アドレスは変化しない。
図14は、第1のデータ復元処理を説明するための概念図である。第1のデータ復元処理では、それぞれメモリノード11に相当する3のメモリノードA、BおよびCでRAIDを構成する。図14において、コントローラ100は、図1におけるデータコントローラ14に対応するもので、各メモリノードA、BおよびCに対するデータの読み書きや各種コマンドの発行、パリティ演算などを行う。バッファ101は、コントローラ100がデータを一時的に記憶するために用いられる。また、図15は、第1のデータ復元処理の一例を示すフローチャートである。メモリノードA、BおよびCは、それぞれデータa、bおよびcが格納されており、何れか(例えばデータc)がパリティであるものとする。
以下では、メモリノードBについて故障の検知または交換が行われ、メモリノードBに格納されるデータbを復元する場合を例にとって説明する(図14(a)参照)。図15のフローチャートにおいて、ステップS100でメモリノードBの故障検知またはメモリノードBの交換合図が通知された場合、当該メモリノードBは、交換への待機状態に移行する。次のステップS101で、当該メモリノードBが新たなメモリノードB’に交換される。この時点では、メモリノードB’は空であり、何もデータが格納されていない(図14(b)参照)。
メモリノードBがメモリノードB’に交換されたことが確認されると、コントローラ100からメモリノードB’に対してコマンドInfoが送信される(ステップS102)。このコマンドInfoは、目的メモリノードの情報を返すコマンドであり、コントローラ100から送信先までデータが到達するか否かを確認することができる。ステップS102によるコマンドInfoの送信は、例えば、ユーザにより記憶装置10の図示されない操作部や、記憶装置10に接続される上位装置が操作されることにより実行される。
次のステップS103で、コントローラ100は、ステップS102で送信したコマンドInfoに対するメッセージReplyが受信されたか否かを判定する。若し、メッセージReplyを受信したと判定した場合、経路異常が無く、メモリノードBからメモリノードB’への交換が正常に完了したと判定できる。この場合、処理がステップS104に移行され、コントローラ100は、交換前のメモリノードBに対してRAIDが構成される他のメモリノードAおよびCに格納されるデータaおよびcを読み出す。
次のステップS105で、コントローラ100は、ステップS104でメモリノードAおよびCから読み出されたデータaおよびcを用いて演算を行い、データbを復元する(図14(c)参照)。復元されたデータbは、一時的にバッファ101に格納される。
次のステップS106で、コントローラ100は、復元されたデータbをバッファ101から読み出し、交換後のメモリノードB’に書き込む(図14(d)参照)。交換後のメモリノードB’の物理アドレスは、交換前のメモリノードBの物理アドレスと等しいので、交換後のメモリノードB’に対するアクセスは、交換前のメモリノードBへのアクセスと同様にして行われる。これにより、メモリノードBの交換に伴うデータbの復元が完了し、図15のフローチャートによる一連の処理が終了される。
一方、ステップS103で、メッセージReplyが受信されないと判定された場合、処理がステップS107に移行され、コントローラ100とメモリノードB’との間の経路に、断線などの経路異常が発生している可能性があるとされる。この場合、経路異常ではなく、交換されたメモリノードB’が故障している可能性もある。コントローラ100は、例えば、経路異常などが発生している旨の通知を出力し、図15のフローチャートによる一連の処理が終了される。
メッセージReplyが受信されない原因が経路異常の場合、この位置の物理アドレスが使用できないことになる。ここで、記憶装置10は、ある物理アドレスに対する経路を複数持つため、経路異常に対する耐性は高い。
図16は、第2のデータ復元処理を説明するための概念図である。第2のデータ復元処理では、RAIDを構成する3のメモリノードA、BおよびCに対して、スペアのメモリノードSを追加して設ける。なお、図16において、上述した図14と対応する部分には同一の符号を付して、詳細な説明を省略する。また、図17は、第2のデータ復元処理の一例を示すフローチャートである。メモリノードA、BおよびCは、それぞれデータa、bおよびcが格納されており、何れか(例えばデータc)がパリティであるものとする。
スペアメモリノードSは、記憶装置10の通常使用時には、データの格納先としては用いられず空のまま保持される。また、スペアメモリノードSは、上述したようにして、他のメモリノードと同様にして分散させて物理アドレスがマッピングされていると好ましい。また、コントローラ100は、スペアメモリノードSの物理アドレスを、予め知っているものとする。
以下では、上述と同様に、メモリノードBについて故障の検知または交換が行われ、メモリノードBに格納されるデータbを復元する場合を例にとって説明する(図16(a)参照)。図17のフローチャートにおいて、ステップS200でメモリノードBの故障検知またはメモリノードBの交換合図が通知された場合、当該メモリノードBは、交換への待機状態に移行する。
次のステップS201で、コントローラ100は、交換前のメモリノードBに対してRAIDが構成される他のメモリノードAおよびCに格納されるデータaおよびcを読み出す。次のステップS202で、コントローラ100は、ステップS201でメモリノードAおよびCから読み出されたデータaおよびcを用いて演算を行い、データbを復元する(図16(b)参照)。復元されたデータbは、一時的にバッファ101に格納される(図16(c)参照)。
次のステップS203で、コントローラ100は、ステップS202で復元されたデータbをバッファ101から読み出して、スペアメモリノードSに格納する(図16(d)参照)。
次のステップS204で、当該メモリノードBが新たなメモリノードB’に交換される。この時点では、メモリノードB’は空であり、何もデータが格納されていない(図16(d)参照)。メモリノードBがメモリノードB’に交換されたことが確認されると、コントローラ100は、メモリノードB’に対してコマンドInfoを送信する(ステップS205)。
次のステップS206で、コントローラ100は、ステップS205で送信したコマンドInfoに対するメッセージReplyが受信されたか否かを判定する。若し、メッセージReplyを受信したと判定した場合、経路異常が無く、メモリノードBからメモリノードB’への交換が正常に完了したと判定できる。この場合、処理がステップS207に移行され、コントローラ100は、スペアメモリノードSからデータbを読み出して、読み出したデータbを交換後のメモリノードB’に格納する(図16(e)参照)。
そして、次のステップS208で、コントローラ100は、スペアメモリノードSからデータbを消去してスペアメモリノードSを空として、スペアのメモリノードとしての機能を回復し、高信頼性を保持する。これにより、メモリノードBの交換に伴うデータbの復元が完了し、図17のフローチャートによる一連の処理が終了される。
一方、ステップS206で、メッセージReplyが受信されないと判定された場合、処理がステップS209に移行され、コントローラ100とメモリノードB’との間の経路に、断線などの経路異常が発生している可能性があるとされる。この場合、経路異常ではなく、交換されたメモリノードB’が故障している可能性もある。コントローラ100は、例えば、経路異常などが発生している旨の通知を出力し、図15のフローチャートによる一連の処理が終了される。
このように、スペアメモリノードSを用意した場合、データbの計算結果をスペアメモリノードSに格納することを優先するべきである。これにより、最初にメモリノードA、CおよびSでRAIDを再構成させていることになるので、より信頼性が高いシステムを構築可能になる。
なお、上述では、スペアメモリノードSを通常のデータ格納には使用しないメモリノードとして別途、設けたが、これはこの例に限定されない。例えば、記憶装置10の複数のメモリノードのうちデータが格納されていないメモリノードを、スペアメモリノードSとして割り当てることもできる。
このように、実施形態に係る記憶装置10は、複数のメモリノードに対して複数のデータコントローラを備えることにより、複数の経路を介しての並列処理が可能である。そのため、あるデータコントローラでデータの復元処理を実行しながら、別のデータコントローラで交換中のメモリノードのデータにアクセスすることが可能になる。この場合、実際は、交換中のメモリノードがロックされているので、データコントローラ間の処理により、データ復元とアクセスとの同時進行が実現する。この場合、スループットが落ちる可能性があるが、従来技術よりも格段に高い性能を維持できる。
なお、データ復元処理においては、故障検知の条件設定が重要であり、信頼性やランニングコストなどユーザの要求によって条件変更が可能であることが望ましい。
なお、本発明は上述した各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
10 記憶装置
1010,1011,1012,1013,1020,1021,1022,1023,1030,1031,1032,1033,1040,1041,1042,1043 グループ
11,11a0,11a1,11a2,11a3 メモリノード
14 データコントローラ
15 セレクタ
17 メモリ
19 MPU
30 データ
31 パリティ
100 コントローラ
101 バッファ

Claims (10)

  1. 予め定められたサイズの記憶領域を複数含む記憶部を備え、2以上の異なる方向に通信路を介して相互に接続される複数のメモリノードであって、各メモリノードは自身宛てのパケットの処理と他のメモリノード宛てのパケットの前記通信路を介した転送とを実行する、前記複数のメモリノードと、
    前記複数のメモリノードは、2以上のメモリノードを備える複数の第1グループを構成し、前記複数の第1グループは、同一の第1グループに属する2以上のメモリノードのうちの任意の2のメモリノードは相互に接続されているかまたは同一の第1グループに属する他のメモリノードを介して接続されている、第2グループを含み、前記記憶部へのデータの書き込み先を、前記記憶領域毎に異なる前記第1グループに順次割り当てて、前記書き込み先に宛てた前記記憶部へのデータを含むパケットを発行する制御部と
    を有する記憶装置。
  2. 前記制御部は、さらに、
    前記第1グループ内での前記書き込み先を、前記第1グループ内の複数の前記メモリノードが含む複数の前記記憶領域に順次割り当てる請求項1に記載の記憶装置。
  3. 所定サイズのデータからパリティを生成するパリティ生成部をさらに有し、
    前記制御部は、
    記所定サイズのデータから生成された各パリティの書き込み先を、異なる前記メモリノードに割り当てる請求項1または請求項2に記載の記憶装置。
  4. 前記制御部は、
    前記複数のメモリノードについて互いに対応する前記記憶領域に対する前記書き込み先の割り当てが一巡した場合に、前記パリティの書き込み先の前記第1グループを切り替える請求項3に記載の記憶装置。
  5. 前記制御部は、
    前記パリティの前記書き込み先を、前記複数の第1グループに順次割り当てる請求項3に記載の記憶装置。
  6. 前記制御部は、
    前記複数のメモリノードを、2以上の方向に分割して前記複数の第1グループを生成する請求項1乃至請求項5の何れか1項に記載の記憶装置。
  7. 前記複数のメモリノードのうちの第1のメモリノードは、
    前記第1のメモリノードと接続され、かつ前記複数のメモリノードのうちの他のメモリノードの故障状態を検知して、検知結果を前記制御部に送信する検知部をさらに備える請求項1乃至請求項6の何れか1項に記載の記憶装置。
  8. 前記メモリノードは、
    前記記憶部から読み出されるデータに含まれる誤ビットを検出し、検出結果を、前記制御部から送信される読み出し命令および書き込み命令のうち少なくとも一方に対する結果に付加して前記制御部に送信する検出部をさらに備える請求項1乃至請求項7の何れか1項に記載の記憶装置。
  9. 前記制御部は、一のアドレスにより指定されたデータから前記記憶領域に対応するサイズの1以上の単位データを生成し、前記記憶部への前記単位データの書き込み先を、前記記憶領域毎に異なる前記第1グループに順次割り当てる、
    ことを特徴とする請求項1に記載の記憶装置。
  10. 予め定められたサイズの記憶領域を複数含む記憶部を備え、2以上の異なる方向に通信路を介して相互に接続される複数のメモリノードであって、各メモリノードは自身宛てのパケットの処理と他のメモリノード宛てのパケットの前記通信路を介した転送とを実行する、前記複数のメモリノードが、2以上のメモリノードを備える複数の第1グループを構成し、前記複数の第1グループは、同一の第1グループに属する2以上のメモリノードのうちの任意の2のメモリノードは相互に接続されているかまたは同一の第1グループに属する他のメモリノードを介して接続されている、第2グループを含み、前記記憶部へのデータの書き込み先を、前記記憶領域毎に異なる前記第1グループに順次割り当てて、前記書き込み先に宛てた前記記憶部へのデータを含むパケットを発行する制御ステップを有する記憶方法。
JP2013006754A 2013-01-17 2013-01-17 記憶装置および記憶方法 Expired - Fee Related JP6005533B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2013006754A JP6005533B2 (ja) 2013-01-17 2013-01-17 記憶装置および記憶方法
TW102130683A TWI516929B (zh) 2013-01-17 2013-08-27 Memory device and memory method
KR1020130102531A KR101581086B1 (ko) 2013-01-17 2013-08-28 기억 장치 및 기억 방법
CN201310384208.3A CN103942153A (zh) 2013-01-17 2013-08-29 存储装置及存储方法
US14/023,901 US10691542B2 (en) 2013-01-17 2013-09-11 Storage device and storage method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013006754A JP6005533B2 (ja) 2013-01-17 2013-01-17 記憶装置および記憶方法

Publications (2)

Publication Number Publication Date
JP2014137758A JP2014137758A (ja) 2014-07-28
JP6005533B2 true JP6005533B2 (ja) 2016-10-12

Family

ID=51166153

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013006754A Expired - Fee Related JP6005533B2 (ja) 2013-01-17 2013-01-17 記憶装置および記憶方法

Country Status (5)

Country Link
US (1) US10691542B2 (ja)
JP (1) JP6005533B2 (ja)
KR (1) KR101581086B1 (ja)
CN (1) CN103942153A (ja)
TW (1) TWI516929B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6171478B2 (ja) * 2013-03-28 2017-08-02 富士通株式会社 ストレージシステム、情報処理装置、情報処理装置の制御プログラム、および情報処理装置の制御方法
JP2015152949A (ja) 2014-02-10 2015-08-24 株式会社東芝 ストレージシステム
JP6342351B2 (ja) 2015-03-02 2018-06-13 東芝メモリ株式会社 ストレージシステム
JP2018041153A (ja) * 2016-09-05 2018-03-15 東芝メモリ株式会社 ストレージシステムおよび入出力処理方法
WO2018078741A1 (ja) * 2016-10-26 2018-05-03 株式会社日立製作所 ストレージ装置
EP3352071B1 (en) * 2016-11-25 2019-08-28 Huawei Technologies Co., Ltd. Data check method and storage system
JP2018156594A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 ストレージシステムおよび処理方法
US11755419B2 (en) * 2018-09-06 2023-09-12 International Business Machines Corporation Utilizing spare network nodes for deduplication fingerprints database
JP7160937B2 (ja) * 2018-09-27 2022-10-25 富士フイルム株式会社 放射線撮影装置
CN111782135A (zh) * 2019-06-14 2020-10-16 北京京东尚科信息技术有限公司 数据存储方法、***、数据节点和计算机可读存储介质

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072371A (en) * 1989-03-01 1991-12-10 The United States Of America As Represented By The United States Department Of Energy Method for simultaneous overlapped communications between neighboring processors in a multiple
US5130992A (en) * 1990-04-16 1992-07-14 International Business Machines Corporaiton File-based redundant parity protection in a parallel computing system
JPH06348516A (ja) * 1993-06-08 1994-12-22 Hitachi Ltd 情報処理装置
JPH07234763A (ja) 1994-02-25 1995-09-05 Fujitsu Ltd ディスクアレイ装置の処理方法
JPH07311752A (ja) 1994-05-11 1995-11-28 Internatl Business Mach Corp <Ibm> 分散データ処理システム及び初期プログラムロード方法
JP3371044B2 (ja) * 1994-12-28 2003-01-27 株式会社日立製作所 ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法
EP0727750B1 (en) * 1995-02-17 2004-05-12 Kabushiki Kaisha Toshiba Continuous data server apparatus and data transfer scheme enabling multiple simultaneous data accesses
JP3197815B2 (ja) 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
JP3401160B2 (ja) 1997-03-28 2003-04-28 三菱電機株式会社 分散共有メモリネットワーク装置
US6424625B1 (en) 1998-10-28 2002-07-23 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for discarding packets in a data network having automatic repeat request
US6457100B1 (en) 1999-09-15 2002-09-24 International Business Machines Corporation Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
US7543100B2 (en) * 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
JP2003345531A (ja) 2002-05-24 2003-12-05 Hitachi Ltd ストレージシステム、管理サーバ、及びそのアプリケーションの管理方法
WO2004102403A2 (en) 2003-05-13 2004-11-25 Advanced Micro Devices, Inc. A system including a host connected to a plurality of memory modules via a serial memory interconnect
US20050108593A1 (en) * 2003-11-14 2005-05-19 Dell Products L.P. Cluster failover from physical node to virtual node
KR101271245B1 (ko) 2005-04-21 2013-06-07 바이올린 메모리 인코포레이티드 상호접속 시스템
JP2007087062A (ja) * 2005-09-21 2007-04-05 Canon Inc アレイ型記憶装置
JP4254933B2 (ja) * 2005-11-30 2009-04-15 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
JP4661566B2 (ja) * 2005-11-30 2011-03-30 Tdk株式会社 アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
JP4434171B2 (ja) * 2006-04-26 2010-03-17 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8041990B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
CN101354694B (zh) * 2007-07-26 2010-10-13 上海红神信息技术有限公司 基于mpu架构的超高扩展超级计算***
US7836226B2 (en) * 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
KR101083673B1 (ko) 2008-10-01 2011-11-16 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
JP2010171557A (ja) 2009-01-21 2010-08-05 Mitsubishi Electric Corp 同報送信装置及び受信ノード及び同報送信プログラム及び記録媒体
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
US20100241783A1 (en) 2009-03-23 2010-09-23 Honeywell International Inc. Memory node for use within a data storage system having a plurality of interconnected memory nodes
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
JP2011134031A (ja) * 2009-12-24 2011-07-07 Panasonic Corp 半導体記録装置および半導体記録システム
JP2011170589A (ja) * 2010-02-18 2011-09-01 Nec Corp ストレージ制御装置、ストレージ装置およびストレージ制御方法
JP4940322B2 (ja) * 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
US8812800B2 (en) * 2010-06-24 2014-08-19 Hitachi Ltd. Storage apparatus and storage management method
US8688899B2 (en) * 2010-09-28 2014-04-01 Fusion-Io, Inc. Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol
JP5238791B2 (ja) * 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
US8745294B2 (en) * 2011-04-01 2014-06-03 Taejin Info Tech Co., Ltd. Dynamic random access memory for a semiconductor storage device-based system
CN102169462B (zh) * 2011-04-27 2014-03-05 中国科学院光电技术研究所 基于NAND Flash的数据记录方法与记录控制器
US8914670B2 (en) * 2012-11-07 2014-12-16 Apple Inc. Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks
US9832068B2 (en) * 2012-12-17 2017-11-28 Microsoft Technology Licensing, Llc Reachability-based coordination for cyclic dataflow

Also Published As

Publication number Publication date
US10691542B2 (en) 2020-06-23
CN103942153A (zh) 2014-07-23
KR101581086B1 (ko) 2015-12-29
TW201430565A (zh) 2014-08-01
TWI516929B (zh) 2016-01-11
KR20140093159A (ko) 2014-07-25
US20140201439A1 (en) 2014-07-17
JP2014137758A (ja) 2014-07-28

Similar Documents

Publication Publication Date Title
JP6005533B2 (ja) 記憶装置および記憶方法
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
US9910748B2 (en) Rebuilding process for storage array
US11182258B2 (en) Data rebuild using dynamic peer work allocation
JP6560759B2 (ja) ストレージシステム
US8601346B1 (en) System and method for generating parity data in a nonvolatile memory controller by using a distributed processing technique
US8108595B2 (en) Storage apparatus and method of managing data storage area
US10545684B2 (en) Storage device
US10649843B2 (en) Storage systems with peer data scrub
JP5532982B2 (ja) ストレージ装置、ストレージ装置のコントローラおよびストレージ装置の記憶領域割当方法
US20180275894A1 (en) Storage system
US10705737B2 (en) Storage system and data arrangement method of storage system
CN114127677B (zh) 用于写高速缓存架构中的数据放置的方法和***
JP6070357B2 (ja) ストレージ装置
JP2013125513A (ja) 不揮発性半導体記憶装置及びその管理方法
US8032703B2 (en) Storage apparatus and failure recovery method
CN113282232A (zh) 具有协同优化的多级擦除***
JP5949816B2 (ja) キャッシュ制御装置及びその制御方法、ストレージ装置、並びにコンピュータ・プログラム
WO2015155824A1 (ja) ストレージシステム
US20170085645A1 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto
JP6365557B2 (ja) 制御回路および制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150210

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160318

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160907

R151 Written notification of patent or utility model registration

Ref document number: 6005533

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees