JP2007323224A - フラッシュメモリストレージシステム - Google Patents

フラッシュメモリストレージシステム Download PDF

Info

Publication number
JP2007323224A
JP2007323224A JP2006150912A JP2006150912A JP2007323224A JP 2007323224 A JP2007323224 A JP 2007323224A JP 2006150912 A JP2006150912 A JP 2006150912A JP 2006150912 A JP2006150912 A JP 2006150912A JP 2007323224 A JP2007323224 A JP 2007323224A
Authority
JP
Japan
Prior art keywords
fmd
fmds
control unit
storage system
flash memory
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
JP2006150912A
Other languages
English (en)
Other versions
JP4818812B2 (ja
Inventor
Takanari Iwamura
卓成 岩村
Kazuhisa Fujimoto
和久 藤本
Kentetsu Eguchi
賢哲 江口
Shunji Kawamura
俊二 川村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006150912A priority Critical patent/JP4818812B2/ja
Priority to US11/503,217 priority patent/US7640390B2/en
Priority to EP06256191A priority patent/EP1862905A3/en
Priority to CN200710001906.5A priority patent/CN100552612C/zh
Publication of JP2007323224A publication Critical patent/JP2007323224A/ja
Priority to US12/617,765 priority patent/US7899981B2/en
Priority to US13/010,897 priority patent/US8166235B2/en
Application granted granted Critical
Publication of JP4818812B2 publication Critical patent/JP4818812B2/ja
Priority to US13/414,755 priority patent/US8359426B2/en
Priority to US13/716,326 priority patent/US8924637B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】複数のフラッシュメモリを備えた大容量のストレージシステムを高信頼にする。
【解決手段】フラッシュメモリストレージシステムが、複数のフラッシュメモリを備えたフラッシュメモリデバイスを複数個と、複数のフラッシュメモリデバイスのうち、外部装置から受信したI/Oリクエストで指定のアクセス先から特定されるフラッシュメモリデバイスにアクセスするI/O処理制御部を有するコントローラーとを備える。同一の内部構成を有するフラッシュメモリデバイスでパリティグループを構成することができる。
【選択図】図3

Description

本発明は、複数の記憶デバイスを備えたストレージシステムに関する。
一般に、情報システムでは、記憶デバイスとしてHDD(ハードディスクドライブ)を用いるストレージシステムが備えられ、そのストレージシステムが、ストレージエリアネットワーク(SAN)経由で、複数の上位装置(例えばホスト)からアクセスされる。ストレージシステムでは、RAID(Redundant Array of Independent (or Inexpensive) Disks)技術に従う記憶制御が行われる。これにより、高信頼な情報システムが実現される。
一方で、近年、フラッシュメモリのビットコストが低下しつつあることから、フラッシュメモリが、有力な記憶デバイスとなりつつある。特許文献1に開示の技術では、フラッシュメモリの欠点である、書き換え回数増加を契機としたライト失敗に対する対策について開示されている。
特許3507132号
HDDに代えて又は加えてフラッシュメモリを搭載し、フラッシュメモリで、上位装置に書かれる又は読み出されるデータを記憶するストレージシステムが考えられる。たくさんのフラッシュメモリを備えることにより、複数のHDDでのストレージシステムと同程度の記憶容量を有するストレージシステムを実現することが期待できる。
しかし、特許文献1には、書き換え回数増加の対策は開示されているものの、一つの部品障害(閉塞)による対策についての開示は無い。このような対策がされていないと、一つの部品障害によって、フラッシュメモリに記憶されているデータが揮発するおそれがあり、そのため、複数のフラッシュメモリを備えたストレージシステムを大容量にすることはできても、ストレージシステムを高信頼にすることはできない。
本発明は、複数のフラッシュメモリを備えた大容量のストレージシステムを高信頼にすることを目的とする。
本発明に従うフラッシュメモリストレージシステムは、外部装置からI/Oリクエストを受信し処理するストレージシステムであって、複数のフラッシュメモリを備えたフラッシュメモリデバイス(FMD)を複数個と、前記複数のFMDのうち、前記受信したI/Oリクエストで指定のアクセス先から特定されるFMDにアクセスするI/O処理制御部を有するコントローラーとを備える。
第一の実施態様では、前記複数のFMDのうちの二以上のFMDにより構成されたパリティグループが二つ以上存在することができる。前記複数のFMDには、内部構成が異なるFMDが含まれてもよい。各パリティグループは、同一の内部構成のFMDで構成することができる。
第二の実施態様では、前記第一の実施態様において、前記内部構成とは、以下の(1)乃至(3)、
(1)FMDに備えられているフラッシュメモリの数、
(2)FMDで採用されるブロックサイズ、
(3)FMDに備えられている複数のフラッシュメモリの総記憶容量、
のうちの少なくとも一つとすることができる。
第三の実施態様では、前記第一の実施態様において、前記内部構成として、第一種、第二種及び第三種のうちの少なくとも一種類のFMDタイプを含んだ複数種類のFMDタイプとすることができる。前記第一種のFMDタイプのFMDである第一のFMDは、複数のフラッシュメモリと、該複数のフラッシュメモリに対する入出力を制御する第一のFMD制御部を有した内部コントローラーとを備えることができる。前記FMDが該第一のFMDの場合、前記第一のFMD制御部は、前記I/O処理制御部からのアクセスに応じて前記入出力を制御することができる。前記第二種のFMDタイプのFMDである第二のFMDは、複数の前記第一FMDと、前記I/O処理制御部からのアクセスに応じて前記複数の第一FMDに対するアクセスを制御する第二のFMD制御部とを備えることができる。前記複数の第一FMDがそれぞれ前記コントローラーに認識される。各第一FMDの前記第一のFMD制御部は、前記第二のFMD制御部からのアクセスに応じて前記入出力を制御することができる。前記第三種のFMDタイプのFMDである第三のFMDは、複数の前記第一FMDと、前記I/O処理制御部からのアクセスに応じて前記複数の第一FMDに対するアクセスを制御する第三のFMD制御部とを備えることができる。前記複数のFMDが一つのデバイスとして前記コントローラーに認識される。各第一FMDの前記第一のFMD制御部は、前記第三のFMD制御部からのアクセスに応じて前記入出力を制御することができる。
第四の実施態様は、前記第三の実施態様において、前記内部構成とは、更に、前記内部コントローラー、前記第二のFMD制御部及び前記第三のFMD制御部のうちの少なくとも一つの性能とすることができる。
第五の実施態様では、前記複数のFMDには、ベンダー及び/又は製造年度の異なるFMDが含まれてもよい。
第六の実施態様では、前記第一の実施態様において、前記複数のFMDに加えて、一又は複数のディスク型記憶装置が混在してもよい。前記FMDが含まれる前記パリティグループには、前記一又は複数のディスク型記憶装置のいずれも存在しないようにすることができる。
第七の実施態様では、各FMDが、自分の空きの記憶容量の不足を検知し、該不足を検知した場合に、所定のメッセージを通知する情報通知部を更に備えることができる。前記コントローラーが、前記所定のメッセージに応じた制御を実行することができる。
第八の実施態様では、前記第一の実施態様において、前記コントローラーが、構成制御部を更に備えることができる。前記構成制御部が、前記複数のFMDのうちのいずれかのFMDが閉塞したことを検知した場合に、該閉塞したFMDが属するパリティグループを特定し、該パリティグループに適合する別のFMDを検索し、前記閉塞したFMD内のデータを復元し、該復元したデータを、探し出された別のFMDに書き込むことができる。
第九の実施態様では、前記二以上のパリティグループのうちの少なくとも一つが、二以上の第二FMDで構成することができる。前記第二FMDは、複数の第一FMDと、前記I/O処理制御部からのアクセスに応じて前記複数の第一FMDに対するアクセスを制御する第二のFMD制御部とを備えることができる。前記複数の第一FMDがそれぞれ前記コントローラーに認識される。前記第一のFMDは、複数のフラッシュメモリと、該複数のフラッシュメモリに対する入出力を制御する第一のFMD制御部を有した内部コントローラーとを備えることができる。各第一FMDの前記第一のFMD制御部は、前記第二のFMD制御部からのアクセスに応じて前記入出力を制御することができる。
第十の実施態様では、前記第九の実施態様において、前記コントローラーが、前記二以上の第二FMDで構成されるパリティグループについて、障害有無を第一FMD単位で管理することができる。
第十一の実施態様では、前記第九の実施態様において、前記二以上の第二FMDで構成されたパリティグループは、複数のサブパリティグループで構成することができる。各サブパリティグループは、前記二以上の第二FMDのうちの少なくとも一つにおける二以上の第一FMDにより構成することができる。前記各サブパリティグループにより、一以上の論理的な記憶ユニットが提供される。前記I/O処理制御部は、前記複数のサブパリティグループのうちの或るサブパリティグループ内でデータを復元できない場合でも、前記複数のサブパリティグループのうちの障害が発生していない他のサブパリティグループがあれば、該他のサブパリティグループ上に存在する記憶ユニットを閉塞せず入出力を行うことができる。
第十二の実施態様では、前記第九の実施態様において、前記二以上の第二FMDで構成されたパリティグループは、複数のサブパリティグループで構成することができる。各サブパリティグループは、前記二以上の第二FMDのうちのそれぞれ異なる第二FMDに存在する第一FMDにより構成することができる。
第十三の実施態様では、前記第九の実施態様において、少なくとも一つの第二FMDには、パリティグループに属しないスペアの第一FMDを備えることができる。前記コントローラーが、構成制御部を備えることができる。該構成制御部が、或る第二FMDで必要が生じた場合には、該第二FMDに存在する前記スペアの第一FMDを用いることができる。
第十四の実施態様では、前記第十三の実施態様において、前記構成制御部が、前記必要が生じた第二FMDに、前記スペアの第一FMDが存在しない場合には、他の第二FMDに存在する前記スペアの第一FMDを用いることができる。
第十五の実施態様では、前記第十三の実施態様において、前記構成制御部が、前記必要が生じた第二FMDに、前記スペアの第一FMDが存在しない場合には、該第二FMDが属するパリティグループに適合する別の第二FMDを検索し、前記第二FMD内のデータを前記別の二FMDに書き込み、前記第二FMDを閉塞することができる。
第十六の実施態様では、前記コントローラーが、構成制御部を備えることができる。該構成制御部が、パリティグループの構成要素として前記外部装置から指定された複数のFMDのそれぞれの内部構成が同じか否かをチェックし、同じでない場合には前記外部装置に警告を出力することができる。
第十七の実施態様では、前記複数のFMDにより複数個の論理的な記憶ユニットが提供され、各FMDのブロックサイズよりも、各記憶ユニットのブロックサイズが小さい。
第十八の実施態様では、キャッシュメモリを更に備えることができる。前記I/O処理制御部は、前記I/Oリクエストがリードリクエストの場合に、前記リードリクエストに従って、前記複数のFMDからデータを読出し、読み出したデータを、前記キャッシュメモリに一時蓄積した後に、前記キャッシュメモリに蓄積したデータを前記外部装置に送信し、前記読み出したデータを前記キャッシュメモリに蓄積する際に、前記キャッシュメモリに蓄積するデータの正否をチェックすることができる。
第十九の実施態様では、複数のアドレス空間を階層化することができる。各レイヤでのブロックサイズを異なるようにすることができる。レイヤとして、フラッシュメモリと、FMDと、二以上のFMDにより構成されたパリティグループと、前記外部装置に提供される論理的な記憶ユニットとがある。
第二十の実施態様では、前記FMDは、ディスクのインターフェースと互換性のあるI/Oインターフェースを有することができる。
第二十一の実施態様では、前記FMDは、各フラッシュメモリに対する入出力を制御するFMD制御部を有した内部コントローラーを備えることができる。前記FMD制御部は、フラッシュメモリにデータを書く場合には、所定の規則に従って、最近書いたフラッシュメモリ以外のフラッシュメモリに書くことができる。また、この場合、前記FMD制御部は、フラッシュメモリにおける更新前のブロックを空き領域とすることができる。また、前記FMD制御部は、空き領域としたブロックを、イレースコマンドで書込み可能とするために、複数ブロックを集めたセグメント単位でブロックデータを移動し、セグメント全体を空き領域として、イレースコマンドを実行することができる。
上述した各部は各手段と言い換えてもよい。各部或いは各手段は、ハードウェア(例えば回路)、コンピュータプログラム、或いはそれらの組み合わせ(例えば、コンピュータプログラムを読み込んで実行する一又は複数のCPU)によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源(例えばメモリ)から読み込むことができる。その記憶資源には、CD−ROMやDVD(Digital Versatile Disk)等の記録媒体を介してインストールすることもできるし、インターネットやLAN等の通信ネットワークを介してダウンロードすることもできる。
また、上述したコントローラー及び内部コントローラーのうちの少なくとも一つは、一又は複数のハードウェア資源で構成することができる。具体的には、例えば、一又は複数の回路基盤で構成することができる。
本発明によれば、複数のフラッシュメモリを備えた大容量のストレージシステムを高信頼にすることができる。
以下、図面を参照して、本発明の実施の形態を説明する。
<1.情報システムの構成>。
図1は、本発明の一実施形態に係る情報システムのハードウェア構成の一例を示す図である。
情報システムは、例えば、ストレージシステム1000、ホストコンピュータ(以後ホストと省略する)1100及び管理サーバー1200から構成される。ストレージシステム1000、ホスト1100及び管理サーバー1200の数は、それぞれ、1以上とすることができる。ストレージシステム1000とホスト1100は、I/Oネットワーク1300を介して、相互に接続される。ストレージシステム1000と管理サーバー1200は、管理ネットワーク(図示せず)またはI/Oネットワーク1300を介して、相互に接続される。
ホスト1100には、ホスト内部ネットワーク1104があり、そのネットワーク1104に、プロセッサ(図中ではProcと略記)1101と、メモリ(図中ではMemと略記)1102と、I/Oポート(図中ではI/O Pと略記)1103とが接続されている。管理サーバー1200も、ホスト1100と同じハードウェア構成を有することができる。
管理サーバー1200は、表示装置を有し、その表示装置に、ストレージシステム1000の管理用の画面を表示することができる。また、管理サーバー1200は、管理操作リクエストを、ユーザー(例えば管理サーバー1200のオペレーター)から受付け、その受け付けた管理操作リクエストを、ストレージシステム1000に送信することができる。管理操作リクエストは、ストレージシステム1000の操作のためのリクエストであり、例えば、パリティグループ作成リクエスト、内部LU作成リクエスト、及びパス定義リクエストがある。それぞれのリクエストについては、後述する。
I/Oネットワーク1300は、ファイバーチャネルによる接続が第一に考えられるが、それ以外でも、FICON(FIbre CONnection:登録商標)やEthernet(登録商標)とTCP/IPとiSCSIの組み合わせや、EthernetとNFS(Network File System)やCIFS(Common Internet File System)等のネットワークファイルシステムの組み合わせ等が考えられる。さらに、I/Oネットワーク1300は、I/Oリクエストを転送可能な通信装置であればこれ以外でもよい。
ストレージシステム1000は、コントローラー(図中はCTLと表記)1010と、キャッシュメモリ(図中はCache/Shared Memと表記)1020と、複数のフラッシュメモリデバイス(Flash Memory Device:以後FMDと省略することがある)1030とを備える。好ましい形態としては、コントローラー1010及びキャッシュメモリ1020は、それぞれ複数のコンポーネントから構成することが考えられる。なぜなら、コンポーネント単体に障害が発生して閉塞した場合でも、残りのコンポーネントを用いてリードやライトに代表されるI/Oリクエストを引き続き受けることができるためである。
コントローラー1010は、ストレージシステム1000の動作を制御する装置(例えば回路基盤)である。コントローラー1010には、内部ネットワーク1016があり、そのネットワーク1016に、I/Oポート1013、キャッシュポート(図中ではC Pと表記)1015、管理ポート(図中ではM Pと表記)1016、バックエンドポート(図中ではB/E Pと表記)1014、プロセッサ(例えばCPU)1011及びメモリ1012が接続されている。コントローラー1010同士とキャッシュメモリ1020は、ストレージ内部ネットワーク1050にて相互に接続される。また、コントローラー1010と各FMD1030は、複数のバックエンドネットワーク1040にて相互接続される。
なお、ホスト1100及びストレージシステム1000の内部のネットワークは、好ましくは、I/Oポート1013の有する転送帯域より広帯域であり、また、バスやスイッチ型のネットワークによって全てまた一部が代替されてもよい。また、図1では、I/Oポート1013は、コントローラー1010に一つ存在することになっているが、実際には、複数のI/Oポート1013がコントローラー1010に存在してもよい。
以上のハードウェア構成によって、ストレージシステム1000のFMD1030に保存された全てまたは一部のデータを、ホスト1100が読出したり書き込んだりすることができるようになる。
図4は、ホスト1100とストレージシステム1000のそれぞれに存在するコンピュータプログラムと情報を示す図である。
コントローラー1010では、プロセッサ1011とメモリ1012とI/Oポート1013とバックエンドポート1014とキャッシュポート1015とのうちの少なくとも一つによって、FMD情報4050とPG構成情報4060と内部LU構成情報4070とLUパス情報4080を保持し、且つ、I/O処理プログラム4010とキャッシュ制御プログラム4020と構成制御プログラム4030を実行する。なお、コントローラー1010で保持される情報の一部または全ては、ストレージシステム1000内部でコントローラー1010外部の領域(例えばキャッシュメモリ1020や、FMD1030の一部)にて保持されてもよい。
以下、プログラムが主語になる場合は、実際にはそのプログラムを実行するプロセッサによって処理が行われるものとする。
I/O処理プログラム4010は、ホスト1100からI/Oリクエスト(例えばリードコマンド又はライトコマンド)を受け、そのI/Oリクエストに従う処理を実行する。具体的には、例えば、I/O処理プログラム4010は、キャッシュメモリ1020に保存されたデータ(リードコマンドに従う読出し対象データ)を、ホスト1100へ転送したり、ホスト1100から受信したデータ(ライトコマンドに従う書込み対象データ)を、キャッシュメモリ1020へ保存する。なお、ホスト1100からのI/Oリクエストがブロックアクセス形式の場合は、I/O処理プログラム4010は、アクセス対象である論理ボリューム(例えばSCSIでの論理ユニット(Logical Unit:LU))を提供するための処理も行うことができる。また、ホスト1100からのI/Oリクエストがファイル形式の場合は、I/O処理プログラム4010は、アクセス対象であるファイルやディレクトリを提供するための処理を行うことができる。なお、I/O処理プログラム4010は、前記以外のI/Oリクエスト(例えば、データベースクエリーやCKD形式のI/Oリクエスト)でのアクセスを提供するために必要な処理を行っても良い。
キャッシュ制御プログラム4020は、I/O処理プログラム4010と連動または自立的に、FMD1030が保存するデータをキャッシュメモリ1020へコピー(移動を含む)したり、キャッシュメモリ1020が保存するデータをFMD1030へコピーしたりすることができる。キャッシュ制御プログラム4020は、さらに、信頼性を向上させるための処理として、例えば、RAIDに代表される冗長化データを、キャッシュメモリ1020に保存されたデータから作成する及び/又は更新することを行ってもよい。
構成制御プログラム4030は、構成変更及び/又は構成参照のリクエストに応答して、FMD情報4050、PG構成情報4060、内部LU構成情報4070及びLUパス情報4080のうちの少なくとも一つを参照及び/又は更新する処理を行うことができる。構成変更及び/又は構成参照のリクエストは、例えば、管理サーバー1200、ホスト1100及びその他コンピュータのうちの少なくとも一つから発行される。
FMD情報4050は、FMD1030に関する情報を含む。PG構成情報4060は、パリティグループ(Parity Group: 以後PGと省略することがある)の構成情報を含む。内部LU構成情報4030は、パリティグループに含まれるFMDの一部または全ての領域を内部的な論理ユニット(以後「内部LU」と省略する)として構成するための情報を含む。LUパス情報は、内部LUとI/Oポート1013がホスト1100に対して提供するLUとの間の対応関係を表す情報を含む。なお、以後の説明では、内部LUは一つのパリティグループの領域に対応する場合を中心に説明するが、本発明はこれに限定されるものではない。内部LUは、複数のパリティグループの領域からConcatenateやストライピングを伴って構成されてもよい。
ホスト1100では、プロセッサ1101とメモリ1102とI/Oポート1103の少なくとも一つによって、OS4101とファイルシステム4102とアプリケーションプログラム(以後アプリケーションと省略する)4103の少なくとも一つが実行される。
アプリケーション4103は、OS4101やファイルシステム4102に依頼することで、ファイル等のデータを読み書きしつつ、ユーザーや他のコンピュータからのリクエストに応じて業務処理等を行うプログラム(例えばWebサーバープログラムやデータベース管理プログラム)である。
OS4101は、アプリケーション4103やファイルシステム4102から発行されるI/Oリクエストを、ストレージシステム1000のI/Oポート1013へ送信したり、データをストレージシステム1000から受信したりすることができる。ファイルシステム4102は、アプリケーションからのファイル形式のI/Oリクエストを、ブロック形式のI/Oリクエストやネットワークファイルシステムプロトコル形式のI/Oリクエストに変換してOS4101へI/Oリクエストの転送を依頼することができる。
なお、ホスト1100は、これ以外のプログラムが実行されていてもよい。また、ホスト1100は、ブロックI/OリクエストやファイルI/Oリクエスト以外にデータベースクエリーやCKD方式のリクエストを送信及び受信してもよい。また、ホスト1100やコントローラー1010で実行されるOSやファイルシステムを含めたプログラムは、一部または全ての処理をハードウェアにて実装されてもよい。
<2.本実施形態の概要>。
フラッシュメモリ(以後FMと省略することがある)は、HDDとは異なり、ヘッドシークや回転待ちが存在しないため、ランダムアクセスに適したブロック型の記憶デバイスである。しかし、フラッシュメモリは、パッケージ(半導体部品形式での提供形態をさす、以下、FMパッケージと言うこともある)単体では、データ容量や物理的な大きさがHDDより小さい。そのため、HDDの交換では、保守員やユーザーが手でHDDを引き抜くことができたが、フラッシュメモリをパッケージ単位で交換しようとした場合は、ピンセット等の特殊な工具で交換が必要となり、現実的でないと考えられる。そのため、ストレージシステム1000の中の全FMパッケージを交換可能とするために、FMパッケージの配置方法を考え直す必要がある。
そこで、本実施形態では、複数のフラッシュメモリパッケージ(以後FMPと省略することがある)を一つのモジュールとする。そのモジュールが、FMD1030である。FMD1030は、一つのFMパッケージよりもデータ容量も物理的な大きさも増加した一つの保守部品である。好ましくは、FMD1030は、HDDのインターフェースと互換性のあるI/Oインターフェースを有し、HDDが内蔵されていた部位にも内蔵可能な形状とすることで、ストレージシステムの保守に必要な作業の一部またはすべてをHDDの場合と同一にすることができるようにすることも考えられる。
さらに、本実施形態では、FMD1030に障害が発生した場合のデータ消失の回避とI/O性能の向上等の理由で、一つ以上(好ましくは複数)のFMDでパリティグループが構成される。
なお、この場合、I/O性能(例えば、レスポンスタイム、転送帯域、IOPS(1秒当たりのI/Oリクエストの処理数)等)が大きく異なるFMD1030同士でパリティグループを構成してしまうと、ホスト1100にとっては一つのLUとして提供されているにもかかわらず、I/Oリクエストによってアクセスするアドレスによって、I/O性能が変化し得る。HDDを搭載したストレージシステムでは、I/O性能の変化を回避するための方法として、例えば、I/O性能が同一または近いHDD同士でパリティグループを構成する方法が考えられる。この方法の実現のためには、例えば、種類(例えば、型番或いはサポートインターフェース)が同じまたは近いHDDを用いたり、性能(例えば、回転数やヘッド移動時間)が同じまたはその差が小さいHDDを用いたりして、パリティグループを構成することが考えられる。
しかし、FMDは、半導体で構成された記憶デバイスのために、回転数やヘッド移動時間がない。
そこで、本実施形態では、こうした性能関連のパラメーターとして、FMDに含まれるフラッシュメモリパッケージの数を用いる。なぜならば、FMD1030のI/Oポートの限界性能は、FMP単体の限界性能より高いため、FMP数が多いFMD1030のほうが、よりI/O性能が高くなる傾向があると考えられるからである。
図3は、本実施形態の概要を示す図である。
ストレージシステム1000に4つの同一容量のFMD1030−1〜1030−4が備えられる場合を例として説明する。ここで、FMD1030−1とFMD1030−2は内部に2つのFMPを有し、FMD1030−3とFMD1030−4は内部に4つのFMPを有すものとする。
コントローラー1010は、パリティグループ構成を定義する場合に、それぞれのFMDから、FMDの構成に関する情報(以下、FMD構成情報、例えば、FMPの数または型番)を取得することで、図中のパリティグループ1、2のように、同じFMP数を有するFMDの集合としてのパリティグループを作成する。コントローラー1010は、さらに、パリティグループの一部の領域を論理ユニットとしてホストに提供することができる。それにより、ホストからその論理ユニットに対するアクセスを受け付けることができる。
なお、ストレージシステム1000では、上記パリティグループ1とパリティグループ2の構成によって記憶階層を作ることができる。その場合の使い分けとして、例えば、更新が頻繁なデータが、FMP数の多いパリティグループ2に記憶されるようにし、それより更新が頻繁でないデータが、FMP数の少ないパリティグループ1に記憶されるように、コントローラー1010或いはホスト1100が制御してもよい。
なお、一つのストレージシステム1000に搭載される各FMD1030のFMP数は同一でも良いが、以下に例示する理由から、異なるFMP数を持つFMD1030が一つのストレージシステム1000に混在することになるケースが多いと考えられる。
(混在理由1)ストレージシステム1000は一般に大規模である。例えば、大規模エンタープライズストレージでは、多くのFMDを搭載する必要があるために、内部構成の異なるFMDを混在して用いることが考えられる。
(混在理由2)FMPのベンダー毎の製造能力に差がある。この場合、ベンダー毎にFMPに内蔵できる記憶容量が異なるため、同一容量のFMDを製造したとしても、FMDに搭載されるFMP数が異なる。そのため、保守作業としてFMDの交換作業を行う場合、異なるベンダーの同容量のデバイスを利用するとFMPの数が異なり、性能が変わることがある。
(混在理由3)FMPの製造時期に差がある。同一ベンダーが製造した場合でも、半導体技術の進歩によって、FMPに内蔵可能な記憶容量が異なるため、同じベンダーの同一容量のFMDであっても、FMDに搭載されるFMP数が異なる。そのため、保守作業としてFMDの交換作業を行う場合、例え同一ベンダーの同容量のデバイスを利用したとしても、製造時期が異なるとFMPの数が異なり、性能が変わることがある。具体的には、例えば、製造年度の異なるFMDが混在している場合に、保守において、最も製造年度の古いFMDを、ストレージシステムに存在しない最新の製造年度のFMDに交換する場合が考えられる。
また、図には記していないが、ストレージシステム1000に、FMD1030とHDDが混在した構成としてもよい。その場合、HDDとFMD1030では、I/O特性(例えば、ランダムアクセスかシーケンシャルアクセスか、ライトが多いのかリードが多いのか)が異なるため、HDD同士でパリティグループを構成し、FMDについては、本実施形態で説明するパリティグループとすることができる。つまり、HDDのパリティグループとFMDのパリティグループとが一つのストレージシステム1000に混在してもよい。
なお、今後の技術の発展方向によっては、FMDのI/O性能が、フラッシュメモリパッケージの数ではなく、フラッシュメモリパッケージ内部のコントローラーの性能(特に、例えば、プロセッサの性能)がネックとなる可能性もある。これに対応するには、以後説明を行う情報や処理についてのフラッシュメモリパッケージの数に関連する部分を、FMD内部のコントローラーの性能に置き換えればよい。例えば、FMD内部のコントローラーの性能を外部に提供し、コントローラー1010は、FMD内部のコントローラー性能が同一(完全同一だけでなく近いことも含む)FMD同士でパリティグループを構成する方法が考えられる。
<3.詳細>。
<3.0.ブロックサイズ>。
より詳細な説明に入る前に、本実施形態におけるブロックサイズについて、図20を用いて説明する。本実施形態では、アドレス空間(正確には、デバイスの識別子とデバイス内のアドレス空間を指す)が、以下の4レイヤに分かれており、それぞれのレイヤで、異なるブロックサイズを採用することができる。
(レイヤ1)FMPにアクセスするときに用いるアドレス空間。以後の説明で、本レイヤを明示する時は、単語の末尾に'[P]'をつけることがある。
(レイヤ2)FMD1030にアクセスする時に用いるアドレス空間。FMD1030は、FMPとは異なるブロックサイズを採用することがある。なぜなら、FMD1030は、複数のFMPから構成されており、また、後述するフラッシュメモリの特徴を回避するためである。以後の説明で、本レイヤを明示する時は、単語の末尾に'[D]'をつけることがある。
(レイヤ3)コントローラー1010がキャッシュメモリ1020上のデータを管理するための、パリティグループに割り当てられたアドレス空間。本実施形態では、さまざまなブロックサイズを持つFMD1030がコントローラー1010に接続されることが考えられる。そこで、I/O処理やキャッシュ制御処理ではそのような異なるブロックサイズをできるだけ考慮しなくてもよい様に、コントローラー1010が、所定のブロックサイズ(例えば、SCSIで最も一般的な最小ブロックサイズである512バイト)でパリティグループにアドレス空間を割り当てることができる。そのために、キャッシュメモリ1020とFMD1030間でデータをコピーするステージングやデステージング処理の時点でブロックサイズの変換が行われる。以後の説明で、本レイヤを明示する時は、単語の末尾に'[G]'をつけることがある。
(レイヤ4)LU(または後述する内部LU)にアクセスする時に用いるアドレス空間。ホスト1100に対して512バイトのブロックサイズ以外のLUを提供することがあるために、キャッシュのレベルとは異なるブロックサイズが採用される。以後の説明で、本レイヤを明示する時は、単語の末尾に'[L]'をつけることがある。なお、レイヤ1からレイヤ4までの各ブロックには制御用のデータまたは冗長コードが含まれることがある(例えば、コントローラー1010は、データと共に冗長コードをFMD1030のブロック[D]に保存するようにI/Oリクエストを発行する)。
<3.1.FMD>。
<3.1.1.概要>。
図2は、FMDのハードウェア構成及びソフトウェア構成のそれぞれの一例について示した図である。
FMD1030は、I/Oポート2030と、FMDコントローラー2010と、複数のFMP2020とを備える。I/Oポート2030は、バックエンドネットワーク1040と、FMDコントローラー2010とに接続される。FMDコントローラー2010は、複数のFMP2020に接続される。
なお、好ましくは、FMD1030は、複数のI/Oポート2030を備える。なぜならば、バックエンドネットワーク1040が冗長化されているために、冗長化された各々のバックエンドネットワーク1040とFMD1030が独立の部品で接続されたほうが冗長性維持のためには望ましいからである。
ところで、FMP2020は、前述の特徴以外に、HDDやDRAM(Dynamic Random Access Memory)には無い以下に例示する(A1)乃至(A4)の特徴を有する
(A1)アクセス単位はブロックである。
(A2)ブロックデータを更新する場合、複数ブロックをまとめたセグメント単位でデータを削除するイレースコマンドの使用が必要である。
(A3)同一ブロックに更新を繰り返すと更新処理が失敗することがある。
(A4)更新を契機として別ブロックのデータ化けが発生することがある。
これらの特徴を考慮したI/O処理(コントローラー1010からのI/Oリクエストに応じてデータ更新や読み出し等)を行うために、FMDコントローラー2010には、例えば、FMD I/O処理プログラム2011やFMD内部構成情報通知プログラム2014やFMDアドレス変換情報2012やFMD内部構成情報2013が備えられる。また、上記特徴に鑑み、FMD1030は、複数のFMP2020の総記憶容量より少ない記憶容量をコントローラー1010へ報告することで、予備領域を確保することができる。
FMDアドレス変換情報2012は、FMDコントローラー2010が受信するI/Oリクエストに含まれるブロックアドレスとFMP2020のブロックの対応関係を含む。例えば、FMDアドレス変換情報2012は、以下に例示する種類(B1)及び(B2)の情報を各論理ブロックアドレス単位に持つことが考えられる。
(B1)アドレス[D]のデータが実際に保存されているFMPの識別子とアドレス[P]。
(B2)アドレス[D]が参照された回数。
FMD内部構成情報2013は、各フラッシュメモリパッケージの障害状況を管理する情報で、好ましくは、各FMP2020内のセグメントを一つ以上集めた領域単位で以下に例示する種類(C1)及び(C2)の情報を保持している。
(C1)障害状況。
(C2)イレース済みフラグ。
当該情報2013は、また、FMDとしてコントローラー1010に提供する記憶領域(言い換えればアドレス空間)の属性(例えば、ブロックサイズ[D]、ブロック数[D])と、空きブロックを管理するための情報を保持している。
FMD I/O処理プログラム2011は、I/Oポート2030を通じてFMDコントローラー2010が受信したI/Oリクエストを解析し、FMP2020が保存するデータの更新や、FMPからデータを読み出し後にコントローラー1010へのデータ転送等を行う。
<3.1.2.FMDのI/O処理>。
以下に、FMD I/O処理プログラム2011の処理内容を示す。
(Step1)FMD I/O処理プログラム2011は、I/Oリクエストを受信する。
(Step2)もし、リクエストがリードリクエストの場合、FMD I/O処理プログラム2011は、当該リクエストに含まれる開始論理ブロックアドレス[D]とブロック長[D]とFMDアドレス変換情報から、データが保存されている一つ以上のフラッシュメモリパッケージ2020と当該パッケージ内のブロック [P]を特定し、特定したブロック[P]からデータを読み出して、読み出したデータを、リクエスト送信元(コントローラー1010)に返し、Step1へ戻る。もし、リクエストがライトリクエストの場合は、FMD I/O処理プログラム2011は、受信したブロックデータ毎にStep3以降を実行する。
(Step3)FMD I/O処理プログラム2011は、最近データ保存したFMP2020の次のFMPから、以下の条件(D1)乃至(D3)の全てを満たすブロック[P]を検索する。
(D1)障害が発生していないこと。
(D2)空き領域である。
(D3)イレースコマンド実施済みのセグメントに含まれる。
なお、最近データ保存したFMP2020は、例えば、FMD内部構成情報2013に、FMD1030に搭載される各FMP2020に対応したフラグエリアを設け、最近データ保存したFMPに対応するフラグエリアに、フラグを立て(例えば"1"を書き)、その前にデータ保存したFMPに対応するフラグエリアのフラグを倒す(例えば"1"を"0"に変える)ことで、特定することができる。他の方式としては、FMDコントローラー2010がFMPへデータ保存をした時点で当該コントローラー内部にFMPの識別子を保存することでも特定することができる。また、次のFMPとは、例えば、前回データ保存したFMP2020の番号より1大きい番号のFMPとすることができる。
上記条件に適合するブロック[P]が当該FMPから見つからない場合は、FMD I/O処理プログラム2011は、更に次のFMPから検索を繰り返す。
(Step4)FMD I/O処理プログラム2011は、見つけたブロック[P]に対して、ライトデータ(ライトリクエストに従うライト対象のデータ)の一部またはすべてを保存する。なお、当該プログラム2011は、保存処理に付随して以下の(E1)及び(E2)のいずれかまたはすべての処理を行ってもよい。
(E1)保存前に、ライトデータからLRC(Longitudinal Redundancy Check)やCRC(Cyclic Redundancy Check)等の冗長コードを計算し、その冗長コードと共にライトデータを保存する。なお、当該冗長コードは、リードリクエスト受付時に、データ化けの有無を確認するために使うもので、データ化けが発生した場合は、当該リードリクエストでエラーを返し、FMD内部構成情報2013に、ブロック障害が発生したことを記録する。
(E2)保存後に、FMP2020から当該ブロックデータを読み込んで比較を行う。比較が失敗した場合は、FMD内部構成情報2013にブロックに障害が発生したことを記録し、再びStep3からやり直す。
(Step5)FMD I/O処理プログラム2011は、アドレス変換情報2012のブロックアドレス[D]に対応するFMP2020とブロックアドレス[P]を、新たにデータ保存したFMPのブロック[P]を示すように更新し、更新前のブロック[P]は空き領域とする。
なお、FMD I/O処理プログラム2011は、別処理として、新たに空き領域となったブロックをイレースコマンドで書き込み可能にする処理(イレース処理)を実行することが考えられる。しかし、イレースコマンドは、複数ブロックを集めたセグメント単位でしか実行できないため、ブロックデータ移動によってセグメント全体を空き領域としてからイレースコマンドを実行し、完了した後に、FMD内部構成情報2013に、イレース済みフラグを立てる(すなわちイレース済みセグメントであることを記録する)ことが考えられる。当該処理は、リクエスト処理と連動あるいは非同期のタイミングで繰り返し行うことができる。
なお、これまで説明してきたイレース処理やリードやライトの処理方法については、前記(A1)から(A4)の特徴に鑑み、以下の(F1)乃至(F4)の一部または全ての条件を備えていれば、ほかの処理で代替されてもよい。
(F1)フラッシュメモリパッケージ内の同一ブロックへの更新集中の回避。
(F2)フラッシュメモリパッケージ内のブロック上書き前のイレース処理の実行。
(F3)冗長コードを伴ったデータ化けの検知及び修復。
(F4)複数のフラッシュメモリパッケージへのアクセスを分散可能とする処理(例えば、特許3507132号に記載の方法)。
<3.1.3.FMD内部構成情報通知プログラム>。
FMD内部構成情報通知プログラム2014は、FMDの内部情報をコントローラー1010等に通知するプログラムである。当該プログラム2014が提供する情報の例を、以下(G1)乃至(G8)に示す。
(G1)FMD1030のブロックサイズ[D](コントローラー1010は、当該ブロックサイズ単位でアクセスを行ってくる)。
(G2)FMDの利用可能ブロック数[D](コントローラー1010は、当該ブロック数とブロックサイズ[D]から利用可能な記憶容量を知ることがある)。
(G3)FMD内部の空き記憶容量(またはブロック数)。当該記憶容量を提供する処理としては、FMD内部構成情報2013での障害が発生したセグメント数(またはブロック数)を求めて以下の計算、
空きブロック数=(全フラッシュメモリパッケージのブロック数)−(障害発生ブロック数)−((G2)に記載のブロック数)
が行われればよい。なお、フラッシュメモリパッケージの一部の領域を管理用や内部冗長化等に用いている場合は、そのブロック数を考慮して(例えば減じて)計算してもよい。また、上記計算式は、FMPのブロックサイズを基準としているため、情報提供に当たってはFMDのブロックサイズに換算して提供することができる。
(G4)スレッショルド値。
(G5)(G3)の空きブロック数[D]を(G2)の利用可能ブロック数[D]で割った値が(G4)のスレッショルド値以下になった場合の警告。なお、この警告は、例えば、HDDが障害発生時に提供していた警告と同じ値を提供することで、HDDをエミュレーションしてもよい。
(G6)FMD1030が搭載するFMP数。または、FMD1030が搭載するFMP数から障害によって利用できないと判断したFMP数を引いた数。その他、FMD内部構成情報通知プログラム2014は、以下の場合等に、I/Oリクエストのエラーメッセージをコントローラー1010へ通知してもよい。
(G7)FMD1030へ提供される電圧または電力が不足していることや、FMD1030の内部バスやFMDコントローラー2010の破損。
(G8)FMDコントローラー2010による、FMPに保存されたデータのデータ化けの検知。
<3.2.ストレージシステムで管理する情報>。
図5は、コントローラー1010にて保存されるFMD情報4050の構成例を示す図である。
FMD情報4050は、それぞれのFMD1030に対応するFMD1030の識別子毎に以下の(H1)乃至(H5)の情報を持つ。
(H1)閉塞フラグ。閉塞フラグは、当該FMDに対して使用不可能な状況(たとえば、ハードウェア障害や、FMD1030を抜き取った場合や、図2に示すFMD1030の場合は空き容量が少ないことによってコントローラー1010が報告を受けた場合)の場合にYesとなり、そうではない場合に、Noとなる。
(H2)WWN(World Wide Name)。FMD1030にアクセスするために必要なFibreChannelの通信識別子。なお、実際のFibreChannelではWWNからPort番号を作成して、その値を使って通信を行っているため、Port番号を登録してもよい。また、これ以外にも、コントローラー1010からFMD1030に通信するための他の識別子(例えば、IPアドレス、TCP/IPのポート番号、iSCSI Name等)で代替されてもよい。
(H3)LUN(Logical Unit Number)。本実施形態では、FMDは一つの論理ユニットしか提供していないので、FMDが提供するLUの番号を保存すればよい。
(H4)FMDの型番。ストレージシステム1000を長期間継続的に利用する場合、保守作業によって複数型番を併用することも考えられるため。
(H5)容量とブロックサイズとフラッシュメモリパッケージ枚数。これらの情報のうちの少なくとも一つが、FMD1030のFMD内部構成情報通知プログラム2014によって、コントローラー1010に提供される。
なお、図には記述されていないが、各FMD1030についてストレージシステムに搭載した物理的な場所が判る情報が、FMD情報4050に含められてもよい。
図6は、PG構成情報4060の構成例を示す図である。
PG構成情報4060は、それぞれのパリティグループ(PG)の識別子毎に、以下の(I1)乃至(I3)の情報を持つ。
(I1)閉塞フラグ。閉塞フラグはPGが使用不可能な状況の場合にYesとなり、そうではない場合にNoとなる。なお、使用不可能な状況とは、以下に例示する事象が多重に発生した場合が考えられる。
(事象1)ハードウェア障害。
(事象2)FMD1030の抜き取り。
(事象3)図2に示すFMD1030の場合は空き容量が少ないことによってコントローラー1010が報告を受信。
(I2)RAIDレベル。
(I3)パリティグループに属するFMD1030の数と、そのFMDの識別子。
なお、前述のとおり、コントローラー1010は、パリティグループに対してアドレス空間を割り当てることができる。図8は、RAID1+0を例に採ったパリティグループのアドレス空間[G]と、FMD1030のアドレス空間[D]の関係を示す。図9は、RAID5を例に採った場合の同様の関係を示す。
用例の説明:
図8及び図9は、4つのFMD8200、8210、8222、8230を用いてパリティグループ8100を構成する場合を示している。ハッチングされた箱8010は、FMDのブロック[D]を示し、そのブロックアドレス[D]を8011に示している。箱8010の中の点線の枠を持つ箱8020は、コントローラー1010がパリティグループ8100に割り当てたブロック[G]で、コントローラー1010が割り当てるブロックアドレス[G]を8021に示す。なお、ブロック8020のブロックサイズ[G]は、SCSIの規格が提供しうる最低のブロックサイズである512バイトとすることが考えられるが、これ以外のサイズでもよい。
RAID1+0:
RAID1+0の場合、ミラーリングのために、コントローラー1010は、二つのFMDで同じアドレス空間を割り当て(例では、FMD8200と8210、FMD8220と8230)、その後ストライピングする。ストライピングの場合、コントローラー1010は、定められたブロック数(以後、ストライピング用連続ブロック数と呼ぶ)毎に、続きのアドレス空間[G]を別なFMDへ切り替える(例では、ブロック[G]では4つ、ブロック[D]では2つ)。なお、ストライプサイズ(パリティグループ内の全FMDからデータを読み書きすることで行うI/Oサイズ)は、以下の式で算出することができる。
ストライプサイズ=(ストライピング用連続ブロック数[G])×(FMDの数/2)×(ブロックサイズ[G])。
なお、RAID1の場合は、RAID1+0のストライピングを省略したものであるため、説明は省略する。
RAID5:
RAID5の場合も、コントローラー1010は、ストライピング用連続ブロック数を単位にストライピング処理を行ったり、パリティ保存領域を割り当てる(例では、アドレスP0からP3が、アドレス0から11までのパリティを保存する領域)。RAID5の場合のストライプサイズは、以下の式で算出することができる。
ストライプサイズ=(ストライピング用連続ブロック数[G])×(FMD数−1)×(ブロックサイズ[G])。
図7は、内部LU構成情報4070の構成例を示す図である。
内部LU構成情報4070は、それぞれの内部LUの識別子毎に以下の(J1)乃至(J4)情報を持つ。なお、ホスト1100に記憶領域として提供されるLUは、この内部LUを元にパスを定義することによって、外部に提供される。なお、ここで言う「外部」とは、ホスト1100に代えて又は加えて、他種の装置、例えば、仮想化スイッチや別のストレージシステムであっても良い。換言すれば、該他種の装置が、ホスト1100に代わって又は加えて、ストレージシステムにI/Oリクエストを発行することができる。
(J1)閉塞フラグ。閉塞フラグは当該内部LUに対して使用不可能な状況(例えば、パリティグループが閉塞している場合や、当該内部LUに領域が割り当てられていない場合)の場合にYesとなり、そうではない場合にNoとなる。
(J2)PG識別子と開始アドレス[G]と終了アドレス[G]。当該内部LUの記憶領域として用いるパリティグループと、パリティグループ内の開始ブロックアドレス[G]と終了ブロックアドレス[G]を示す。なお、本エントリは、コントローラー1010で管理されている。このため、当該ブロックアドレスは、コントローラーにとってのブロックで管理されるが、その場合も、開始アドレス[G]と終了アドレス[G]はFMD1030のブロックサイズやストライプサイズを考慮した値とすることで、複数の内部LUが同じストライピングやFMDのブロック[D]を用いないようにすることができる。なお、内部LUに対して、複数のパリティグループの記憶領域を割り当てる場合、内部LU構成情報4070のエントリは、(J2)の情報が複数個登録され、さらに、(J2)で定義した空間を結合するための情報が加えられることになる。
(J3)ブロックサイズ[L]。コントローラー1010は、例えば、512バイトをブロックサイズとしているが、ホスト1100はこれより大きいブロックサイズを希望する場合があるため、ホスト1100からのリクエストが前提とするブロックサイズが保持される。
(J4)コンペアフラグ。コントローラー1010がキャッシュメモリ1020へステージングする際に、パリティやミラーの情報と比較するかどうかを指定するためのオプションである。そのような比較が行われれば、信頼性を向上させることができる。
図13は、LUパス情報4080の構成例を示した図である。
例えば、以下の(K1)乃至(K3)の情報が保持される。
(K1)ホスト1100に対して提供する内部LUの識別子。
(K2)WWN(またはI/Oポート1013の識別子)。本情報は、ホスト1100に対して提供する内部LUを、どのポート1013から提供するかを示す。なお、前述したように、WWNに代えて、ポート番号など、他種の識別子で代替されてもよい。
(K3)LUN。本情報は、ホストへ向けて提供する内部LUを、(K2)に記載のWWNのどのLUNとして提供するかを示す。
なお、LUNは限られた数しか定義できないため、ストレージシステム1000内で定義された全ての内部LUにWWNとLUNを割り当てる必要はなく、あるWWNとLUNをある時間帯はある内部LUに割り当て、別な時間は別な内部LUに割り当てることで、LUNの有効利用が行われても良い。
<3.3.パリティグループ定義>。
図14は、構成制御プログラム4030にて実行される、パリティグループの定義処理について示したフローである。以下に個々のステップの説明を記す。
(Step14001)構成制御プログラム4030は、必要に応じて、管理サーバー1200へ、FMD情報4050の一部または全ての情報を提供する。なお、管理サーバー1200は、以下の(方法1)及び(方法2)のいずれかまたはすべてを実施してもよい。
(方法1)型番、容量、ブロックサイズの一つ以上を基準に構成されたグループを表示装置に表示する。
(方法2)フラッシュメモリパッケージ(FMP)数を基に構成されたグループを表示装置に表示する。
また、「必要に応じて」とは、例えば、管理サーバー1200が、ユーザーからの要求にて、コントローラー内部の情報を表示する必要が出たために、情報のリクエストを送信し、構成制御プログラム4030が、そのリクエストを受信したときである。
(Step14002)構成制御プログラム4030は、管理サーバー1200から、複数のFMD1030の識別子(識別子は、物理的なストレージシステムへの搭載位置や論理的な識別情報でも代替可能である)とRAIDレベルとを含んだパリティグループ定義リクエストを受信し、そのリクエストに付随した情報(各FMD識別子及びRAIDレベル)を基に、PG構成情報4060を作成及び/又は更新する。なお、前記処理の前に以下の(チェック1)乃至(チェック5)の少なくとも一つのチェック処理(または、チェックの結果を表示する処理)を加えることで、好ましくないパリティグループ構成の定義が回避されてもよい。
(チェック1)ストレージシステム1000内のFMDを除いた各コンポーネント(コントローラー、キャッシュメモリ、バックエンドI/Oネットワーク等を指す)の一つが障害等によって閉塞した場合に、パリティグループ定義リクエストに含まれる複数のFMD1030のうち二つ以上のFMD1030にアクセス(I/Oリクエストによるリード・ライトを含む)可能か否かのチェック。アクセス不可能であれば、パリティグループのデータ復元処理が失敗することになる。このチェックは、1点閉塞でI/Oリクエストを停止させないことを目的としたチェックである。なお、RAID1やRAID1+0等ミラーリングを伴うRAIDレベルでは、ミラーリング関係にある二つのFMDの両方についてこの(チェック1)が行われても良い。
(チェック2)パリティグループ定義リクエストで指定された全てのFMD1030においてFMP数が異なるか否かのチェック。このチェックは、パリティグループ構成定義を支援するためのチェックである。
(チェック3)パリティグループ定義リクエストで指定された全てのFMD1030において型番が異なるか否かのチェック。FMD1030の型番にFMP数が関係している場合は、(チェック2)が含まれてもよい。ただし、在庫切れなどの理由により、全て同じ型番のFMD1020を指定できない場合は、本チェックによる警告を無視してパリティグループ構成を定義することも考えられる。
(チェック4)パリティグループ定義リクエストに指定された全てのFMD1030において総記憶容量が異なるか否かのチェック。総記憶容量の有効利用を図ることが目的のチェックである。ただし、在庫切れなどで全て同じ容量のFMDを指定できない場合は、本チェックによる警告を無視してパリティグループ構成を定義することも考えられる。
(チェック5)パリティグループ定義リクエストで指定された複数のFMD1030のブロックサイズ[D]が異なるか否かのチェック。FMDのブロックサイズ[D]はキャッシュメモリ1020へのステージングやデステージング時のデータ単位となるため、パリティグループ内でI/O性能の変化を軽減するためのチェックである。
また、例えば、チェック6として、構成制御プログラム4030は、一つのパリティグループについて異種の記憶デバイス(例えば、HDDとFMD1030)が指定されているか否かをチェックし、異種の聞くデバイスが指定されている場合には、管理サーバー1200に報告しても良い。
(Step14003)構成制御プログラムは、パリティグループを初期化(ミラーデータやパリティデータの作成を含む)
(Step14004)構成制御プログラム4030は、PG構成情報4060の該当するパリティグループの閉塞フラグをYesからNoへ変更し、利用可能なことを示し、管理サーバー1200に完了メッセージを返す。
なお、FMD1030の型番によってFMP数や総記憶容量を一意に特定できる場合、ストレージシステム1000の外部(例えば、ストレージシステム1000の製造会社のコンピュータ)で、各種チェック毎に、パリティグループの定義が可能なFMDの型番リストを作成し、当該リストをコントローラー1010へダウンロードして前記チェックに用いてもよい。
<3.4.内部LU定義>。
図15は、構成制御プログラム4030にて実行される、内部LUの定義処理について示したフローである。以下に個々のステップの説明を記す。
(Step15001)構成制御プログラム4030は、必要に応じて、管理サーバー1200からのリクエストに応じて、PG構成情報4060の一部または全てを管理サーバーへ送信する。
(Step15002)構成制御プログラム4030は、管理サーバー1200から、以下に例示する(引数1)乃至(引数5)の一部または全ての情報を含んだ内部LU定義リクエストを受信したら、当該リクエストに付随した情報を基に、内部LU構成情報4070を作成及び/又は更新する。
(引数1)パリティグループの識別子。
(引数2)パリティグループの開始アドレス[G]。
(引数3)内部LUの記憶容量またはパリティグループの終了アドレス[G]。
(引数4)内部LUのブロックサイズ[L]。
(引数5)内部LUのコンペアフラグ。
なお、(引数3)については、終了アドレスが当該パリティグループのストライピングサイズの整数倍となることで、一つのパリティデータが複数の内部LUで共有することを回避するチェックを実施してもよい。また、(引数2)と(引数3)は、パリティグループのブロックサイズで指定するとしたが、ストライピングサイズを単位として当該引数の値を受け取ってもよい。同様に、最終的にパリティグループの開始アドレス[G]と終了アドレス[G]を求められるのであれば、他の形式で引数を受け取ってもよい。
(Step15003)構成制御プログラム4030は、必要に応じて、内部LUの初期化処理を行う。例えば、初期化処理の一環として内部LUの管理領域を作成してもよい。
(Step15004)構成制御プログラム4030は、内部LU構成情報4070の該当する内部LUの閉塞フラグをYesからNoへ変更し、内部LUが利用可能であることを示し、管理ホストに完了メッセージを返す。
<3.5.LUパス定義>。
図16は、構成制御プログラム4030にて実行される、LUのパス定義処理について示したフローである。以下に個々のステップの説明を記す。
(Step16001)構成制御プログラム4030は、必要に応じて、管理サーバー1200からの要求に応じて、内部LU構成情報4070とLUパス定義情報4080の一部または全てを管理サーバーへ送信する。
(Step16002)構成制御プログラム4030は、管理サーバー1200から、内部LUの識別子とポート情報(最終的にI/Oポート1013の識別子またはWWNへ変換可能な識別情報であればこれら以外の情報でもよい)とLUNを含んだパス定義リクエストを受信する。
(Step16003)構成制御プログラム4030は、リクエストで指定されたWWNとLUNが割り当て済みでないか確認し、割り当て済みの場合はエラーで応答して終了する。未割り当ての場合はStep16004を行う。
(Step16004)構成制御プログラム4030は、リクエストに付随した情報を元に、LUパス定義情報4080を作成及び/又は更新し、完了メッセージを管理サーバー1200へ返す。
なお、ホスト1100からのアクセスパス多重化のために、内部LUに対して複数のパス定義を行っても良い。また、定義されたパスの解除処理の場合は、管理サーバー1200から、内部LUの識別子か、或いは、WWNとLUNの組み合わせを用いて、LUパス定義情報の対応エントリを見つけ、当該エントリを削除することによって、パス設定を解除してもよい。また、LUパス定義リクエストでWWNとLUNを指定する代わりに、構成制御プログラム4030が空いているWWNとLUNを探して割り当ててもよい。
<3.6.閉塞検知>。
構成制御プログラム4030は、障害や電源断やコンポーネントの抜き去り等が原因のコンポーネント閉塞を検知する。以下に閉塞検知処理のフローを示す。
(L1)構成制御プログラム4030は、各コンポーネントの状態を取得する。なお、コンポーネントがコントローラーやFMDの場合は当該コンポーネント上で動作するプログラムの状態やログでもよい。また、当該プログラム4030は、問い合わせの代替として各コンポーネントからの報告を本処理に用いてもよい。
(L2)構成制御プログラム4030は、取得した状態をチェックすることで、各コンポーネント閉塞の有無を判断し、閉塞が無い場合は(L1)に戻る。
(L3)(L2)にて閉塞と判断した場合、構成制御プログラム4030は、閉塞と判断したコンポーネントの識別子を管理サーバー1200へ転送し、ユーザーに表示する。
なお、FMD1030の閉塞検知とその後のダイナミックスペアリングについては後述する。また、FMD1030以外のコンポーネント閉塞によって一部のFMD1030に対してアクセス不可能な状況が発生することもあるが、その場合も後述するような処理(特にダイナミックスペアリング)を行ってもよい。
<3.6.1.FMD1030の閉塞検知>。
以下に、構成制御プログラム4030にて実行される、FMD1030の閉塞検知処理のフローについて記す。
(M1)FMD1030は、構成制御プログラムからのリクエストに応じて、情報を返すか、あるいは能動的に報告を送信する。
(M2)構成制御プログラム4030は、受け取った情報をチェックし、FMDの閉塞の有無を判断する。判断方法の一例を以下に挙げる。
(判断方法1)I/Oリクエストエラーに代表される処理失敗の情報の場合は、規定回数(1回以上を含む)受け取ったことで判断する。
(判断方法2)3.1.3章に記載した空き領域に関連する情報(3.1.3章に記載の(G3)空きブロック数を(G2)のFMDブロック数で割った値が考えられる)の場合は、定められたスレッショルド値(本情報はコントローラー1020内部で保持されており、管理サーバー1200経由でコントローラー1020へ設定されてもよい)を下回ったことで判断する。
(判断方法3)3.1.3章に記載した(G6)FMP数の場合は、出荷時や仕様書の数から一定の割合以下となったことで判断する。
なお、FMDの実装のバリエーションとして、上記判断方法をFMD1030内部で実現し、該当した場合は、コントローラー1010に、HDDと同様のデバイス障害として報告を行うことが考えられる。その場合は、コントローラー1010は、当該障害を(判断方法1)によって判断すればよい。
(M3)構成制御プログラム4030は、FMD構成情報4050の閉塞と判断したFMDの閉塞フラグをYesに変更し、FMDが利用不可能であることを示す。
(M4)構成制御プログラム4030は、PG構成情報とFMD構成情報を参照することで、閉塞したFMD1030によってパリティグループがリード・ライトリクエストを処理できない状態かどうかを判断し、処理不可能な場合は該当するパリティグループの閉塞フラグをYes(すなわち利用不可能)に変更する。なお、前記判断方法は、RAID1+0などのミラーリングを伴う冗長化方式の場合は、データを二重化しているペアとなるFMDが両方とも閉塞状態かどうかで判断し、RAID5の場合はパリティグループ中の閉塞状態のFMDの数が2以上かどうかで判断する。
(M5)構成制御プログラム4030は、内部LU構成情報を参照することで、閉塞したパリティグループ上にデータが保存された内部LUの閉塞フラグをYes(すなわち利用不可能)とする。
(M6)構成制御プログラム4030は、必要に応じて、閉塞したFMD1030の識別情報を管理サーバー1300に通知する。この通知には閉塞の理由となる情報(例えばどの判断方法で閉塞と判断したのか)を付随させてもよい。また、FMD1030の閉塞によって閉塞したパリティグループや内部LUやLUが存在する場合は、これらの識別情報を管理サーバー1300に通知してもよい。なお、本通知を受け取った管理サーバー1300は障害情報としてユーザーにこれらの情報を表示することが考えられる。
なお、以後の説明では、閉塞状態のFMDを含み、かつ、I/Oリクエストが可能なパリティグループの状態を、「縮退状態」と呼ぶ。この縮退状態のパリティグループに対するI/Oリクエストでは、データ復元処理を行って当該リクエストに応答する。なお、データ復元処理とは、冗長データから閉塞したFMDのデータを復元することを指す。ミラーリングの場合は、閉塞したFMDと同じデータが別のFMDに存在するため、当該処理は当該FMDのデータを使用する。パリティ方式の場合は、本処理は閉塞せずに残ったデータとパリティから閉塞したFMDのデータを計算することで復元する。
<3.6.2.FMDのダイナミックスペアリング>。
以下に、構成制御プログラム4030による、ダイナミックスペアリング処理について説明する。
(N1)構成制御プログラム4030は、障害検知処理でFMD閉塞を検知するまで待つ。
(N2)構成制御プログラム4030は、N1で閉塞と検知したFMDが関連する(例えばそのFMDが含まれる)パリティグループを、PG構成情報4060を参照することにより、見つける。
(N3)構成制御プログラム4030は、見つけたパリティグループについて、データ復元処理が実行可能であるかどうか判断し、実行不可能な場合はあきらめる(例えば終了する)。実行可能な場合は、N4以降を行う。
(N4)構成制御プログラム4030は、パリティグループに適合する代替FMDを検索する。なお、検索条件としては、パリティグループ定義で提供した情報やチェック項目と類似な以下に例示の条件が考えられる。
(条件1)FMDのデータ容量や型番やFMP数やブロックサイズ[D]。
(条件2)FMD以外のコンポーネント一点閉塞でFMD1030の二重閉塞とならないFMD1030の選択(パリティグループ閉塞をできるだけ回避するため)。
(N5)構成制御プログラム4030は、データ復元処理で代替FMDへデータを復元する(以後復元コピー処理と呼ぶ)。より具体的な復元コピー処理の内容を以下に例示する。
(N5−1)構成制御プログラム4030は、コピーの完了位置を示す情報(コピー完了位置情報)をFMDの先頭アドレスへ初期設定する。
(N5−2)構成制御プログラム4030は、コピー完了位置情報から、複数ブロック分だけ閉塞FMDのデータを復元(3.6.1章に記載の処理方法で)し、代替FMDへ書き込む。
(N5−3)構成制御プログラム4030は、コピー完了位置情報を書き込み済みブロック数分だけ進める。
(N5−4)コピー完了位置情報がFMDの終了アドレスに進むまで、構成制御プログラム4030は、(N5−1)から(N5−3)を繰り返す。
(N6)構成制御プログラム4030は、代替FMDを新たにパリティグループに登録し、閉塞FMDを除外する。
なお、FMDの閉塞理由が空き容量不足の場合は、FMDへ保存されているデータに対するリードリクエストが可能であるため、(N5−2)のデータ復元処理の代替として、パリティデータやミラーデータを用いずに、閉塞FMDからデータを読み込んでも良い。
上記復元コピー中の閉塞FMDに対するI/Oリクエストについては、コピー完了位置情報以前のブロック[D]について代替FMDにデータが復元されているため、コントローラー1010は、そのデータをホスト1100へ返したり(リードの場合)、代替FMDに対してライトデータを保存してもよい(ライトの場合)。なお、コピー完了位置情報以降のブロックアドレスに対しては、コントローラー1010は、以下の処理を実行することができる。
(O1)リードリクエストを受けた場合でFMDの閉塞理由が空き領域不足の場合は、データ復元処理として、閉塞FMDからキャッシュメモリにデータをステージングした後に、そのデータをホスト1100へ返す
(O2)(O1)以外でリードリクエストを受けた場合、データ復元処理で閉塞したFMD1030に保存されたデータをキャッシュメモリ1020へ復元し、そのデータをホスト1100へ返す
(O3)ライトリクエストを受けた場合、冗長データ(パリティデータやミラーデータ)を更新し、これ以降のリードリクエストやライトリクエストで本リクエストのライトデータを復元できるようにする。
<3.7.ライト処理>。
図17は、I/O処理プログラム4010がライトリクエストを受信した場合に行われる処理のフローである。また、図10は、図8のRAID1+0のパリティグループのFMD8200とFMD8210とキャッシュ2枚(CM−AとCM−B)上のデータの流れや変化の例を示す概要図である。さらに、図11と図12は、図9のRAID1パリティグループのFMD9200とFMD9230とキャッシュ2枚(CM−AとCM−B)上のデータの流れや変化の例を示す概要図である。
<3.7.1.概要図の前提と用例>。
図10から12は、ホスト1100に対して、ブロックサイズ[L]を512B(Byte)で公開しており、かつ、パリティグループの先頭から領域を割り当てられた内部LUについて、ブロック'3'にライトリクエストが到着した場合の、キャッシュメモリとFMDと間のデータの流れとデータの変化を示した図である。また、キャッシュメモリとFMD上の数字つきの箱は、パリティグループにコントローラー1010が割り当てたブロック[G]と、当該ブロック[G]のアドレスを指す。本例では、FMDブロックサイズ[D]は、ブロックサイズ[G]の二倍である。
なお、キャッシュメモリ1020の領域管理では、キャッシュメモリ上のデータ領域とFMD上のデータ領域を対応付ける情報を小さくするために、FMDの連続した複数ブロック[D](例で4ブロック[G]かつ、2ブロック[D])で、キャッシュ上の連続アドレス領域(キャッシュセグメント)を割り当てるようにしている。そのため、例えば、コントローラー1010は、キャッシュセグメント毎に、以下に例示する(Q1)乃至(Q6)の属性情報を管理している。
(Q1)キャッシュセグメント上のアドレス。
(Q2)パリティグループの識別子とパリティグループ上のブロックアドレス[G]。
(Q3)キャッシュセグメント内のブロック[G]毎のステージングフラグ。概要図ではキャッシュ上のブロック[G]の下に黒帯がある場合は当該データがステージング済みを意味している。
(Q4)キャッシュセグメント内のブロック[G]毎のダーティ(更新済みだが、FMDへは未反映であること)フラグ。概要図では、キャッシュブロック内のブロック[G]の上に黒帯がある場合はダーティを意味している。
(Q5)旧データフラグ。
(6)パリティ更新要フラグ。図11と12の数字なしのPと書かれた箱の上に黒帯がある場合は、パリティ更新が必要なことを意味し、数字なしのPと書かれた箱のみの場合は更新不要を意味する。
また、両概要図とも、リード用にブロック[G]の'0'と'1'はステージング済みの状態から説明を始める。
<3.7.2.ライトリクエスト処理フロー>。
図17のフローと図10から12までの例を用いて、I/O処理プログラム4010がライトリクエストを受信した時の処理内容を説明する。
(Step17001)I/O処理プログラム4010は、コントローラー1010が受け取ったライトリクエストからWWNとLUNと開始ブロックアドレス[L]と、ブロック長[L]とライトデータを取得する。繰り返すが、予めコントローラー1010は当該LUNのブロックサイズ[L]として対応する内部LUの内部LU構成情報4070のブロックサイズを報告しており、ライトリクエストの開始ブロックアドレスとブロック長は当該ブロックサイズ[L]を前提としている。なお、実際のライトリクエストにはWWNのかわりにPortIDが含まれるため、PortIDをWWNに変換する必要がある。
(Step17002)I/O処理プログラム4010は、WWNとLUNとLUパス定義情報から内部LU番号を求める。なお、ネットワークとしてFibreChannel以外を用いている場合は、ライトリクエストから内部LU番号を求めるほかの方法によってStep17001とStep17002を代替してもよい。例えば、iSCSIの場合は、IPアドレスとPort番号の組み合わせや、iSCSIターゲット名がWWNの代わりとなり、LUNと組み合わせることで内部LU番号を求めることができる。
(Step17003)I/O処理プログラム4010は、内部LU構成情報4070を用いて、リクエストの開始ブロックアドレス[L]とブロック長[L]を、パリティグループの識別子と開始ブロックアドレス[G]と終了ブロックアドレス[G]へ変換する。変換計算は、以下の式で行う。
・開始ブロックアドレス[G] =(ブロックサイズ[L]*開始ブロックアドレス[L]/ブロックサイズ[G])+(内部LU構成情報の開始ブロックアドレス[G])
・終了ブロックアドレス[G] =(ブロックサイズ[L]*ブロック長[L]/ブロックサイズ[G])+開始ブロックアドレス[G]。
(Step17005)I/O処理プログラム4010は、キャッシュ上にライトデータを保存する。この時、キャッシュ上に必要なブロック[G]のデータがステージング済の場合は、キャッシュ上のデータをライトデータで更新する。しかし、ステージング済みのブロックデータが存在する場合でも、本実施形態では、パリティ更新要フラグがNo(更新済み)で、保存対象ブロックのダーティフラグが立っている場合(すなわち、前回のパリティ更新で元としたライトデータ)は、今回のパリティ更新で旧データとして用いる必要があるため、別キャッシュセグメントを確保してライトデータを保存する。キャッシュ上にライトデータがない場合も、必要に応じて、キャッシュセグメントを確保してライトデータを保存する。
なお、ライトデータは二枚のキャッシュ両方に保存することで、キャッシュが1枚閉塞してもライトデータを保持できるようにする。また保存と共に、I/O処理プログラム4010は、保存したブロックのステージングフラグとダーティフラグとパリティ更新要フラグを立てて、ライトリクエストに対する応答をホスト1100へ返す。図10と図11の(1)では、ブロック[G]'3'のライトデータがキャッシュ2枚にライトされ、ステージングフラグとダーティフラグが立っている。
以上が、I/O処理プログラム4010のフローである。
<3.7.2.パリティ作成からデステージングまで>。
キャッシュ制御プログラム4020が繰り返し実行するパリティ作成とデステージングの手順を図18に示す。
(Step18001)キャッシュ制御プログラム4020は、LRU(Least Recently Used)等のキャッシュアルゴリズムによってパリティ作成またはデステージ対象のキャッシュセグメントを選択する。図10〜12(以下、「概要図」と記載することもある)ではブロック'2'と'3'が選択された。
(Step18002)キャッシュ制御プログラム4020は、デステージ対象のキャッシュセグメントのパリティグループIDやブロックアドレスを元にした計算式で、2枚のキャッシュのどちらに保存されたライトデータを、パリティ生成やデステージングに用いるか決定する。概要図ではCM−A上のライトデータを用いることにした。
(Step18003)キャッシュ制御プログラム4020は、デステージング対象キャッシュセグメントを、デステージング先となるFMD1030のブロックサイズ[D]に合わせて、セグメント中の未ステージ済みブロック[G]を埋める。これは、キャッシュメモリに対して、キャッシュメモリのブロック単位でデータを読み書きできるようにするために行われる。
具体的には、キャッシュセグメント中の複数ブロック[G]を先頭からFMDブロックサイズ[D]毎に区切り(つまり、デステージング単位に区切り)、その区切り毎にダーティなブロック[G]を持ち、かつ部分的未ステージング状態のブロック[G]がある場合は、FMD1030から未ステージ状態のブロック[G]に対応するデータをコピーする。この時のコピーは、最初に、キャッシュ上の別領域にダーティなブロック[G](例えばブロック'2')と未ステージング状態のブロック[G](例えばブロック'3')を含むブロック[D]をステージングし、そこから未ステージング状態のブロック[G]だけコピーする。概要図(例えば図10(1))ではブロック'3'が未ステージング状態である。
(Step18004)キャッシュ制御プログラム4020は、デステージング対象キャッシュセグメントについて、パリティ生成が必要な場合はStep18005を行い、ミラーリングが必要な場合はStep18011を行う。
(Step18005)キャッシュ制御プログラム4020は、パリティ生成のためにキャッシュセグメントのデステージング先FMD1030に保存された旧データを、デステージング対象のキャッシュセグメントとは別なキャッシュセグメントにステージングする。なお、このステージングはStep18003で行ったFMDブロックサイズ化でステージングしたキャッシュセグメントと同じ領域を用いてもよいし、予めStep18003で両方に必要なデータをステージングしておいてもよい(概要図の図11の(2)では、両方に必要なデータをまとめてステージングした)。また、キャッシュ上に前回のパリティ更新で用いたデータがある場合は、ステージングを省略することができる。
(Step18006)キャッシュ制御プログラム4020は、デステージング対象のキャッシュセグメントに対応するパリティが保存されたブロック[L]を、FMD1020からキャッシュセグメントへステージングする(概要図の図11の(2)では、CM−Bへブロック'P2'と'P3'をステージングする)。なお、キャッシュ上に前回計算したパリティが存在する場合は、ステージングを省略することができる。
(Step18007)キャッシュ制御プログラム4020は、デステージング対象のキャッシュセグメント上のライトデータと、Step18005でステージングした旧データと、Step18006でステージングした現在のパリティとを用いて、新たなパリティを計算し、それを、現在のパリティとは別なキャッシュセグメントへダーティフラグを立てて保存する。当該プログラム4020は、また、デステージ対象キャッシュセグメントのパリティ更新要フラグを下げて、Step18005とStep18006でステージングした旧データとパリティのキャッシュセグメントを破棄する。概要図の図11の(3)で、ブロック'2'のパリティ'P2'がダーティとなっている。
(Step18008)キャッシュ制御プログラム4020は、Step18007で計算した新たなパリティのキャッシュセグメントをデステージし、ダーティフラグを下げる。概要図の図12の(4)では、パリティ'P2'と'P3'をデステージングしている。
(Step18009)キャッシュ制御プログラム4020は、デステージング対象キャッシュセグメントをデステージし、ダーティフラグを下げる。デステージングが完了したら片方のキャッシュ上のライトデータを破棄してデステージングが完了する。なお、本ステップとStep18008の順序は問わない。
(Step18011)キャッシュ制御プログラムは、Step18003で未ステージング済みブロックを埋めるために別キャッシュセグメントへステージングしたデータを破棄する。そして、キャッシュ制御プログラム4020は、デステージング対象キャッシュセグメントのライトデータをミラー関係の二つのFMD1030へデステージングする。当該プログラムは、両方とも完了するまで待った後、キャッシュの片方のライトデータを破棄する。概要図の図10の(3)は、CM−Aからブロック'2'と'3'がデステージされたことを示す。
以上がパリティ生成処理である。
次に前記処理で用いられていたデステージングの処理内容を示す。
(R1)キャッシュ制御プログラム4020は、キャッシュセグメントのパリティグループのブロックアドレス[G]を、ストライピングの計算とブロックサイズの変換によって、FMDの識別子とFMDのブロックアドレス[D]に変換する。
(R2)キャッシュ制御プログラム4020は、(R1)で求めたブロックアドレス[D]で、(R1)で求めたFMDに対して、ライトリクエストを送信する。
リードについても同様に、キャッシュ制御プログラム4020は、パリティグループのブロックアドレス[G]をFMDの識別子とFMDのブロックアドレス[D]に変換して、リードリクエストをFMD1030に対して送信する。
また、信頼性向上のため、キャッシュ制御プログラム4020は、FMD1030へのデステージング時に、LRCやCRC等の冗長コードをライトデータに付加し、ステージング時にチェックしてもよい。さらに、キャッシュ制御プログラム4020は、デステージング後に、FMDに保存されたデータとキャッシュ上のデータを比較して、データが確実に保存されたことを確認してもよい。いずれの場合も、チェックで異常を検出した場合、キャッシュ制御プログラム4020は、FMD閉塞検知処理やデータ復元処理を行うことができる。
さらに、内部LU構成情報4070のデータコンペアフラグがYesとなっている内部LUに対応するステージングについては、信頼性を向上させるために、キャッシュ制御プログラム4020は、RAID1であれば、本来のデータをFMD1030からキャッシュメモリ1020へコピーするとともに、ミラーリングペアの別FMDからもデータを読み出して比較する。同様に、RAID5の場合は、キャッシュ制御プログラム4020は、本来のデータをFMD1030からキャッシュメモリ1020へコピーするとともに、他のFMDからパリティデータと他のデータを用いて回復させたデータと当該FMDから読み出したデータを比較する。HDDの場合、回復処理はヘッドの移動や回転待ちを伴うアクセスパターンが増加する場合もあり、回復処理で行うI/Oリクエスト数の増加以上の性能低下も考慮が必要であるが、FMDの場合はこうした性能低下の考慮は不要である。
<3.8.リード処理>。
図19は、I/O処理プログラム4010がリードリクエストを受信した場合に行われる処理の流れの一例を示す。以下、各ステップを説明する。
(Step19001)I/O処理プログラム4010は、コントローラー1010が受け取ったリードリクエストから、WWN、LUN、開始ブロックアドレス、ブロック長及びライトデータを取得する。
(Step19002)I/O処理プログラム4010は、WWNとLUNを、LUパス定義情報に基づいて、内部LUNに変換する。なお、ライト処理と同様の方法でStep19001とStep19002を代替してもよい。
(Step19003)I/O処理プログラム4010は、内部LU構成情報4070を用いて、リードリクエストの開始アドレスとブロック長(ホスト1100へ予め通知したブロックサイズをベースとした開始ブロックアドレスとブロック長)を、コントローラー1010内部で管理するブロック長をベースとした値へ、変換する。
(Step19004)I/O処理プログラム4010は、さらに、内部LU構成情報4070を用いて、内部LUNと変換した開始ブロックアドレスとブロック長とを、パリティグループIDとパリティグループ上での開始ブロックアドレスと終了ブロックアドレスへ変換する。変換のための計算では、内部LU構成情報4070の開始アドレスに開始ブロックアドレスを加えた値をパリティグループ上での開始ブロックアドレスとし、パリティグループ上での開始ブロックアドレスにブロック長を加えた値をパリティグループ上での終了ブロックアドレスとする。
(Step19005)I/O処理プログラム4010は、リードリクエストで要求されたデータがキャッシュに存在するか確認し、存在しない場合はキャッシュセグメントを確保し、ステージング処理でキャッシュにデータをコピーする。
(Step19006)I/O処理プログラム4010は、キャッシュ上のデータをホスト1100へ転送する。
以上が、I/O処理プログラム4010のフローである。なお、本手順のいずれかのステップでWWNやLUNや開始ブロックアドレスやブロック長のチェックを行っても良い。
なお、本実施形態としては、LUのブロックサイズよりFMDのブロックサイズが大きい形態で用いられることがある。なぜならば、FMDのFMDアドレス変換情報2012のエントリ量は、FMDの記憶容量をブロックサイズで割った値に関係しており、将来はエントリ量が増加することが予測され、その結果、I/Oリクエストで必要なデータを見つけるための検索時間が増えてしまい、FMDのブロックサイズを8192バイトなど大きなブロックサイズにすることが考えられるからである。一方、通常のホストでは、ブロックサイズは、現時点では512Bブロックを基本としているからでもある。ただし、これは、ほかの関係を否定するものではない。LUのブロックサイズがFMDのブロックサイズ以上であれば、キャッシュ上のステージングやデステージング処理が効率が良いと考えられるので、こうした構成を積極的に採用することもありえる。
また、ストレージシステム1000は、一つの装置から構成される必要はない。例えば、FMD1030とコントローラー1010は別の装置として存在し、バックエンドI/Oネットワークにて接続されることも考えられる。さらに、コントローラー1010に、LUに対してアクセス可能なホストを限定するアクセス制御プログラムを付加したり、LUのレプリカを同じストレージシステム1000内に作成するローカルレプリケーションプログラムや、異なるストレージシステムへミラーリングを行うリモートミラーリングプログラムを実行してもよい。より具体的には、例えば、リモートミラーリングを行うにあたってはコピー元とコピー先でFMD1030を用いたストレージシステムを採用することも考えられる。さらに、コピー元のストレージシステムは、FMD1030を用いたストレージシステム1000を採用し、コピー先のストレージシステムには、HDDを用いたストレージを採用したリモートミラーリングを実施することも考えられる。その理由としては、FMD1030とHDDの性能特性やビットコストが異なる事や、FMDに内臓されたフラッシュメモリが電荷を操作することでデータを保持するのに対して、HDDの場合は磁気によってデータを保持するため、データ消失やデータ化けを起こしやすい環境(例えば、温度、湿度、X線、電場、及び磁場のうちの少なくとも一つを含む)が異なることを利用して耐障害性を向上させる事を挙げることができる。
さて、以下、更に説明を続ける。
<4.FMD1030の代替デバイス>。
<4.1.SFMD1030(2)>。
FMD1030には、いくつかのバリエーションが考えられる。図21に、その一例を示す。
SFMD1030(2)は、FMD1030のsubstituteデバイスである。SFMD1030(2)は、SFMDマスターコントローラー21010と、複数のI/Oポート2030(2)と、複数のFMD1030とを備える。各FMD1030は、I/Oポート2030を介してSFMDマスターコントローラー21010と接続されている。なお、I/Oポート2030は内部バスで代替してもよく、図が示すように一つのI/Oポート2030が接続された形態でも、複数のI/Oポートが接続された形態でもよい。なお、一つのSFMD1030(2)に含まれるFMD1030は、以下の項目(T1)乃至(T3)が同じであるほうが望ましいと考えられる。
(T1)記憶容量[D]。
(T2)ブロックサイズ[D]。
(T3)FMDコントローラー2010の性能。
SFMDマスターコントローラー21010は、複数のFMD1030をまとめて一つの記憶領域を提供するため、ストライピング処理を行う。すなわち、コントローラー1010が、SFMD1030(2)にアクセスする際は、FMD1030のアドレス空間[D]ではなく、新たなアドレス空間[SD]を用いる。I/Oリクエストを受信したSFMDマスターコントローラー21010は、ストライピング処理を行うことで、I/Oリクエストに含まれる開始アドレス[SD]とブロック長[SD]から、データが保存されているFMD1030とその開始アドレス[D]とブロック長[D]を得て、I/Oリクエストを送信する。なお、SFMD1030(2)に対するI/Oリクエストのブロック長[SD]が長い場合は、データ受信又はデータ送信の途中で、前記変換とFMD1030に対するI/Oリクエストの送信が行われることは、FMD1030の場合と同じである。
好ましくは、SFMD1030(2)のブロックサイズ[SD]は、FMD1010のブロックサイズ[D]と等しいと考えられる。また、SFMD1030(2)のブロック数[SD](または記憶容量[SD])は、内蔵するFMD1030のブロック数[D](または記憶容量[D])の総数に等しいが、制御目的にFMD1030のブロック[D]の一部を用いる場合は、総数から当該ブロック分を差し引いた数でもよい。
SFMDマスターコントローラー21010は、以下の(U1)乃至(U4)の情報を、コントローラー1010へ送信することができる。
(U1)ブロック数[SD]。
(U2)ブロックサイズ[SD]。
(U3)空きブロック数[SD]。
(U4)FMP2020の数、及び/又は、FMD1030の数。
なお、SFMDマスターコントローラー21010は、上記情報に加えて、FMD内部構成情報通知プログラム2013が提供する情報の一部または全てをコントローラー1010へ送信してもよい。
ところで、SFMD1030(2)は、FMD1030と異なり、或るFMD1030の空きブロック数がゼロになった時点で、たとえ他のFMD1030の空きブロック数がゼロ以上であっても、ライトリクエストは失敗する。そのため、(U3)の空きブロック数[SD]の値は、各FMD1030の空きブロック数の最小値(または最小値にFMD1030の数を掛けた数)を報告することが考えられる。
SFMD1030(2)は、FMD1030と比較して、以下に示す欠点と利点があると考えられる。
(欠点)FMPの利用効率が悪い。アクセスパターンによっては、特定のFMD1030にライトリクエストが集中するため、コンポーネントが閉塞になるまでの時間が短い。
(利点)ボトルネック箇所が少ない。FMDコントローラー2010で行われる空き領域管理やアドレス変換は、FMDアドレス変換情報2012の検索を必要とする負荷が低くない処理であるため、FMD1030に内蔵するFMPの数を増加させても、FMDコントローラー21010のボトルネック化によって、性能が向上しない場合がある。これを回避するため、ブロックサイズ[D]を大きくすることで、FMD1030のアドレス変換時に検索するFMDアドレス変換情報2012の大きさを小さくして性能向上する方法も考えられる。しかし、大きすぎるブロックサイズは、ランダムアクセスが多い環境ではアクセスに直接関係ないデータまでステージングやデステージングをしてしまうため、性能が劣化する。SFMD1030(2)の場合は、アドレス変換は、複数のFMDコントローラー2010にて分散して処理されるため、ボトルネックとなりにくく、かつ大容量のFMPを多く搭載してもブロックサイズを大きくする必要がない。
なお、上記欠点を解決するため、コントローラー1010で行われる以下の一つ以上の処理をSFMDマスターコントローラー21010でも実行することも考えられる。
(処理1)ダイナミックスペアリング。SFMD1030(2)に内蔵するFMD1030の一部をスペア用途として扱い、稼働中のFMD1030の空きブロック数が少なくなった場合に、ダイナミックスペアリングを行う。冗長領域を割り当てるためにFMPの利用効率は下がるが、特定のFMD1030にアクセスが集中することによるコンポーネント閉塞までの時間は長くなる。
(処理2)ミラーリングやパリティ等の冗長データの付加。
なお、上記の処理の有無について、SFMDマスターコントローラー21010がコントローラー1010からの要求に応じて情報を送信することが考えられる。また、SFMD1030(2)の型番によって有無がわかるのであれば、当該情報をコントローラー1010が取得することによって前記情報取得に代えてもよい。
<4.2.SFMDとFMDの混在ストレージシステム>。
SFMD1030(2)とFMD1030は、コントローラー1010から同じ方法でリードリクエストやライトリクエストを送信できる。そのため、ストレージシステム1000は、複数のSFMD1030(2)を搭載することができ、こうした構成でも、これまで説明してきた処理が実行可能である。さらに、ストレージシステム1000は、SFMD1030(2)とFMD1030の両方を搭載することも可能である。こうした構成は、FMD1030におけるFMP数の違いと同様の理由にて発生しうる。この場合、SFMD1030(2)とFMD1030では、内部構造に起因するI/O特性の差や閉塞までの時間(耐久性)が異なるため、パリティグループにSFMD1030(2)とFMD1030が混在しないような構成をとることが考えられる。これを実現するため、コントローラー1010は、両デバイスの内部構造に関連する情報を取得し、その情報を、パリティグループ構成定義時にユーザーに提供したり、チェック処理に用いたりすることが考えられる。また、ユーザーがLUを利用するときに、当該LUが、SFMD1030(2)かFMD1030のいずれで構成されているのかを表示することで、ストレージ階層を意識したシステム活用を促進することも考えられる。しかし、デバイスが不足している場合等の理由が考えられるため、パリティグループに両デバイスが混在してもよい。
さらに、SFMD1030(2)は、ダイナミックスペアリングや冗長データの有無によって部品点数が増加するかわりに耐久性を向上させることができるため、前記と同様に、内部構造(ダイナミックスペアリングや冗長データの有無を含める)をコントローラー1010が取得し、SFMD1030(2)の中でもさらに、ダイナミックスペアリング有りのデバイスだけでパリティグループを構成したり、冗長データ有りのデバイスだけでパリティグループを構成したりすることも考えられる。
<5.FMD1030の代替デバイスその2>。
<5.1.マルチLU-FMD>。
これまでの説明では、FMD1030またはFMD1030(2)は、一つのLUをコントローラー1010に提供する。しかし、そのためには、少なくともSFMDマスターコントローラー21010のようなストライピング機能をデバイスに持たせる必要がある。このため、FMDの製造コストが高くなる可能性がある。
図22に示す、マルチLUのFMD1030(3)は、内蔵する複数のFMD1030をコントローラー1010へ提供する。提供方式の一例としては、I/Oポート2030(3)が持つWWNに属するLUとして各FMD1030を提供する方法が考えられる。コンバーター22010は、例えば、LUNにて指定されたFMD1030へアクセスリクエストを振り分けたり、FMD1030のポート2030がポート2030(2)と異なる転送媒体である場合に変換処理を行ったりする。一方、コントローラー1010は、マルチLU-FMD1030(3)に内蔵された複数のFMD1030を認識し、障害発生の有無は当該FMD1030を単位として管理する。なお、保守員はマルチLU-FMD1030(3)単位で保守交換を行うことができる。
<5.2.マルチLU-FMD1030(3)を用いたパリティグループ構成>。
マルチLU-FMD1030(3)を用いてパリティグループを構成する場合、コントローラー1010は、或るマルチLU-FMD1030(3)から複数のFMD1030を選択してパリティグループを構成しないようにする必要がある。なぜならば、物理的な障害の単位、電源断の単位、及び、デバイスの抜き差しを行う単位のうちの少なくとの一つの単位は、マルチLU-FMD1030(3)であるため、同一デバイスから複数のFMD1030を用いていた状況でデバイス障害が発生すると、パリティグループのデータ復元処理が不可能になってしまうからである。
上記パリティグループ構成を支援するために、コントローラー1010は、パリティグループ構成を定義する場合に以下の二つの方法を用いることが考えられる。
(方法1)パリティグループ構成定義時、コントローラー1010は、例えば、GUI(Graphical User Interface)により、マルチLU-FMD1030(3)とそこに内蔵されているFMD1030の対応関係を表示し、ユーザーから、複数のFMD1030の指定を受け付ける。その指定を受けたコントローラー1010は、指定された複数のFMD1030の一部が同じマルチLU-FMD1030(3)に属していないかチェックを行う。
(方法2)パリティグループ構成定義時、コントローラー1010は、例えば、GUIにより、マルチLU-FMD1030(3)の一覧を表示し、ユーザーから、複数のマルチLU-FMD1030(3)の指定を受け付ける。指定を受けたコントローラー1010は、指定された複数のマルチLU-FMD1030(3)が、それぞれ互いに、搭載されたFMD1030の数と記憶容量が等しいことをチェックする。その後、コントローラー1010は、図23に例示するように、各マルチLU-FMD1030(3)のFMD1030により構成するサブパリティグループを定義し、さらに、マルチLU-FMD1030(3)内の複数のサブパリティグループを、Concatenate等で結合した領域をパリティグループとして用いたり、ユーザーに提供したりする。なお、"Concatenate"について説明すると、例えば、LU1にLU2をConcatenateするとは、LU1のアドレス空間の最後尾にLU2のアドレス空間の先頭をくっつけることである。
<5.2.ダイナミックスペアリングと閉塞検知>。
マルチLU-FMD1030(3)を用いる場合も、SFMD1030(2)と同様に、特定のFMD1030にライトリクエストが集中することがある。そのため、コントローラー1010は、各マルチLU-FMD1030(3)内の各FMDの空き容量を把握し、いずれかのFMD1030に対して空きブロック数が少なくなってきた時点で、当該FMD1030を他のマルチLU-FMD1030(3)に内蔵されたFMD1030へダイナミックスペアリングを行う。あるいは、各マルチLU-FMD1030(3)利用時にあらかじめスペアリング用のFMD1030を確保しておき、或るFMD1030の空きブロック数が少なくなってきた時点で、当該FMD1030から、当該FMD1030と同じマルチLU-FMD1030(3)に内蔵されるスペアリング用のFMD1030へダイナミックスペアリングを行う方法も考えられる。あるいは、コントローラー1010が、空きブロック数が少なくなったマルチLU−FMD1030(3)内に、スペアリング用のFMD1030が無い場合には、他のマルチLU−FMD1030(3)のFMDを自己のスペアリング用のFMD1030として使う方法も考えられる。また、コントローラー1010(例えば構成制御プログラム4030)が、コピー先のスペアリング用のFMD1030を、コピー元のFMD1030が属していたパリティグループ(或いはサブパリティグループ)の要素とし、そのコピー元のFMD1030を、そのパリティグループ(或いはサブパリティグループ)から外すことができる。具体的には、例えば、PG構成情報4060において、そのパリティグループ(或いはサブパリティグループ)に対応する欄に、コピー先のスペアリング用のFMD1030のIDを追加し、その欄から、コピー元のFMD1030のIDを削除することができる。
なお、マルチLU-FMD1030(3)を内蔵したストレージシステムについても、これまで説明した処理が適用可能である。例えば、ユーザーがパリティグループ構成を定義する際は、各マルチLU-FMD1030から、内蔵するFMPの数またはFMD1030の数を取得し、同じ数のデバイス同士でパリティグループを構成する等がある。
また、マルチLU-FMD1030(3)を内蔵したストレージシステムの場合、閉塞検知は、FMD1030単位で行うことができる。そのため、パリティグループとしてみた場合は、データ復元処理が不可能な場合でも、サブパリティグループとしてみた場合は、データ復元処理が可能または不要でI/Oリクエストを処理可能な場合がある。もし、内部LUが、このようなI/Oリクエストを処理可能なサブパリティグループだけで構成されている場合は、コントローラー1010は、パリティグループとしてはデータ復元処理が不可能と判断した場合でも、内部LUを閉塞とせずにI/Oリクエストを継続させてもよい。
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、コントローラー1010は、他の構成を採用することもできる。例えば、上記の構成に代えて、上位装置との通信を制御する複数の第一の制御部(例えば制御回路基板)と、FMD1030との通信を制御する複数の第二の制御部(例えば制御回路基板)と、上位装置とFMD1030との間で授受されるデータを記憶することができるキャッシュメモリと、ストレージシステム1000を制御するためのデータを記憶することができる制御メモリと、各第一の制御部、各第二の制御部、キャッシュメモリ及び制御メモリを接続する接続部(例えば、クロスバスイッチなどのスイッチ)とを備えることができる。この場合、第一の制御部と第二の制御部の一方が、又は双方が協働して、前述したコントローラー1010としての処理を行うことができる。制御メモリは無くても良く、その場合、キャッシュメモリに、制御メモリが記憶する情報を記憶する領域が設けられても良い。
図1は、本発明の一実施形態に係る情報システムのハードウェア構成の一例を示す図である。 図2は、FMDのハードウェア構成及びソフトウェア構成のそれぞれの一例について示した図である。 図3は、本実施形態の概要を示す図である。 図4は、ホスト1100とストレージシステム1000のそれぞれに存在するコンピュータプログラムと情報を示す図である。 図5は、コントローラー1010にて保存されるFMD情報4050の構成例を示す図である。 図6は、PG構成情報4060の構成例を示す図である。 図7は、内部LU構成情報4070の構成例を示す図である。 図8は、RAID1+0のパリティグループのアドレス空間を示す。 図9は、RAID5のパリティグループのアドレス空間を示す。 図10は、図8のアドレス空間でのキャッシュ使用例を示す。 図11は、図9のアドレス空間でのキャッシュ使用例の一部を示す。 図12は、図9のアドレス空間でのキャッシュ使用例の残りの一部を示す。 図13は、LUパス定義情報4080の構成例を示す。 図14は、構成制御プログラム4030にて実行される、パリティグループの定義処理について示したフローである。 図15は、構成制御プログラム4030にて実行される、内部LUの定義処理について示したフローである。 図16は、構成制御プログラム4030にて実行される、LUのパス定義処理について示したフローである。 図17は、I/O処理プログラム4010がライトリクエストを受信した場合に行われる処理のフローである。 図18は、キャッシュ制御プログラム4020が繰り返し実行するパリティ作成とデステージングの手順を示す。 図19は、I/O処理プログラム4010がリードリクエストを受信した場合に行われる処理の流れの一例を示す。 図20は、アドレス空間の階層構造の一例を示す。 図21は、FMD1030のバリエーションの一つであるSFMD1030の構成例を示す。 図22は、FMD1030のバリエーションの一つであるマルチLU-FMD1030(3)の構成例を示す。 図23は、図22のマルチLU-FMD1030(3)のFMD1030により構成されたサブパリティグループの一例を示す。
符号の説明
1000…ストレージシステム 1010…コントローラー 1020…キャッシュメモリ 1030…FMD(フラッシュメモリデバイス)

Claims (20)

  1. 外部装置からI/Oリクエストを受信し処理するストレージシステムにおいて、
    複数のフラッシュメモリを備えたフラッシュメモリデバイス(FMD)を複数個と、
    前記複数のFMDのうち、前記受信したI/Oリクエストで指定のアクセス先から特定されるFMDにアクセスするI/O処理制御部を有するコントローラーと
    を備えるフラッシュメモリストレージシステム。
  2. 前記複数のFMDのうちの二以上のFMDにより構成されたパリティグループが二つ以上存在し、
    前記複数のFMDには、内部構成が異なるFMDが含まれ、
    各パリティグループは、同一の内部構成のFMDで構成されている、
    請求項1記載のフラッシュメモリストレージシステム。
  3. 前記内部構成とは、以下の(1)乃至(3)、
    (1)FMDに備えられているフラッシュメモリの数、
    (2)FMDで採用されるブロックサイズ、
    (3)FMDに備えられている複数のフラッシュメモリの総記憶容量、
    のうちの少なくとも一つである、
    請求項2記載のフラッシュメモリストレージシステム。
  4. 前記内部構成として、第一種、第二種及び第三種のうちの少なくとも一種類のFMDタイプを含んだ複数種類のFMDタイプがあり、
    前記第一種のFMDタイプのFMDである第一のFMDは、
    複数のフラッシュメモリと、
    該複数のフラッシュメモリに対する入出力を制御する第一のFMD制御部を有した内部コントローラーと
    を備え、前記FMDが該第一のFMDの場合、前記第一のFMD制御部は、前記I/O処理制御部からのアクセスに応じて前記入出力を制御し、
    前記第二種のFMDタイプのFMDである第二のFMDは、
    複数の前記第一FMDと、
    前記I/O処理制御部からのアクセスに応じて前記複数の第一FMDに対するアクセスを制御する第二のFMD制御部と
    を備え、前記複数の第一FMDがそれぞれ前記コントローラーに認識され、各第一FMDの前記第一のFMD制御部は、前記第二のFMD制御部からのアクセスに応じて前記入出力を制御し、
    前記第三種のFMDタイプのFMDである第三のFMDは、
    複数の前記第一FMDと、
    前記I/O処理制御部からのアクセスに応じて前記複数の第一FMDに対するアクセスを制御する第三のFMD制御部と
    を備え、前記複数のFMDが一つのデバイスとして前記コントローラーに認識され、各第一FMDの前記第一のFMD制御部は、前記第三のFMD制御部からのアクセスに応じて前記入出力を制御する、
    請求項2記載のフラッシュメモリストレージシステム。
  5. 前記内部構成とは、更に、前記内部コントローラー、前記第二のFMD制御部及び前記第三のFMD制御部のうちの少なくとも一つの性能である、
    請求項4記載のフラッシュメモリストレージシステム。
  6. 前記複数のFMDには、ベンダー及び/又は製造年度の異なるFMDが含まれる、
    請求項1記載のフラッシュメモリストレージシステム。
  7. 前記複数のFMDに加えて、一又は複数のディスク型記憶装置が混在するが、前記FMDが含まれる前記パリティグループには、前記一又は複数のディスク型記憶装置のいずれも存在しない、
    請求項2記載のフラッシュメモリストレージシステム。
  8. 各FMDが、自分の空きの記憶容量の不足を検知し、該不足を検知した場合に、所定のメッセージを通知する情報通知部を更に備え、
    前記コントローラーが、前記所定のメッセージに応じた制御を実行する、
    請求項1記載のフラッシュメモリストレージシステム。
  9. 前記コントローラーが、構成制御部を更に備え、
    前記構成制御部が、前記複数のFMDのうちのいずれかのFMDが閉塞したことを検知した場合に、該閉塞したFMDが属するパリティグループを特定し、該パリティグループに適合する別のFMDを検索し、前記閉塞したFMD内のデータを復元し、該復元したデータを、探し出された別のFMDに書き込む、
    請求項2記載のフラッシュメモリストレージシステム。
  10. 前記二以上のパリティグループのうちの少なくとも一つが、二以上の第二FMDで構成され、
    前記第二FMDは、
    複数の第一FMDと、
    前記I/O処理制御部からのアクセスに応じて前記複数の第一FMDに対するアクセスを制御する第二のFMD制御部と
    を備え、前記複数の第一FMDがそれぞれ前記コントローラーに認識され、
    前記第一のFMDは、
    複数のフラッシュメモリと、
    該複数のフラッシュメモリに対する入出力を制御する第一のFMD制御部を有した内部コントローラーと
    を備え、各第一FMDの前記第一のFMD制御部は、前記第二のFMD制御部からのアクセスに応じて前記入出力を制御する、
    請求項1記載のフラッシュメモリストレージシステム。
  11. 前記コントローラーが、前記二以上の第二FMDで構成されるパリティグループについて、障害有無を第一FMD単位で管理する、
    請求項10記載のフラッシュメモリストレージシステム。
  12. 前記二以上の第二FMDで構成されたパリティグループは、複数のサブパリティグループで構成されており、
    各サブパリティグループは、前記二以上の第二FMDのうちの少なくとも一つにおける二以上の第一FMDにより構成されており、
    前記各サブパリティグループにより、一以上の論理的な記憶ユニットが提供され、
    前記I/O処理制御部は、前記複数のサブパリティグループのうちの或るサブパリティグループ内でデータを復元できない場合でも、前記複数のサブパリティグループのうちの障害が発生していない他のサブパリティグループがあれば、該他のサブパリティグループ上に存在する記憶ユニットを閉塞せず入出力を行う、
    請求項10記載のフラッシュメモリストレージシステム。
  13. 前記二以上の第二FMDで構成されたパリティグループは、複数のサブパリティグループで構成されており、
    各サブパリティグループは、前記二以上の第二FMDのうちのそれぞれ異なる第二FMDに存在する第一FMDにより構成されている、
    請求項10記載のフラッシュメモリストレージシステム。
  14. 少なくとも一つの第二FMDには、パリティグループに属しないスペアの第一FMDが備えられ、
    前記コントローラーが、構成制御部を備え、
    該構成制御部が、或る第二FMDで必要が生じた場合には、該第二FMDに存在する前記スペアの第一FMDを用いる、
    請求項10記載のフラッシュメモリストレージシステム。
  15. 前記構成制御部が、前記必要が生じた第二FMDに、前記スペアの第一FMDが存在しない場合には、他の第二FMDに存在する前記スペアの第一FMDを用いる、
    請求項14記載のフラッシュメモリストレージシステム。
  16. 前記構成制御部が、前記必要が生じた第二FMDに、前記スペアの第一FMDが存在しない場合には、該第二FMDが属するパリティグループに適合する別の第二FMDを検索し、前記第二FMD内のデータを前記別の二FMDに書き込み、前記第二FMDを閉塞する、
    請求項14記載のフラッシュメモリストレージシステム。
  17. 前記コントローラーが、構成制御部を備え、
    該構成制御部が、パリティグループの構成要素として前記外部装置から指定された複数のFMDのそれぞれの内部構成が同じか否かをチェックし、同じでない場合には前記外部装置に警告を出力する、
    請求項1記載のフラッシュメモリストレージシステム。
  18. 前記複数のFMDにより複数個の論理的な記憶ユニットが提供され、各FMDのブロックサイズよりも、各記憶ユニットのブロックサイズが小さい、
    請求項1記載のフラッシュメモリストレージシステム。
  19. キャッシュメモリを更に備え、
    前記I/O処理制御部は、前記I/Oリクエストがリードリクエストの場合に、前記リードリクエストに従って、前記複数のFMDからデータを読出し、読み出したデータを、前記キャッシュメモリに一時蓄積した後に、前記キャッシュメモリに蓄積したデータを前記外部装置に送信し、前記読み出したデータを前記キャッシュメモリに蓄積する際に、前記キャッシュメモリに蓄積するデータの正否をチェックする、
    請求項1記載のフラッシュメモリストレージシステム。
  20. 複数のアドレス空間が階層化されており、各レイヤでのブロックサイズは異なっており、
    レイヤとして、フラッシュメモリと、FMDと、二以上のFMDにより構成されたパリティグループと、前記外部装置に提供される論理的な記憶ユニットとがある、
    請求項1記載のフラッシュメモリストレージシステム。
JP2006150912A 2001-01-21 2006-05-31 フラッシュメモリストレージシステム Active JP4818812B2 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2006150912A JP4818812B2 (ja) 2006-05-31 2006-05-31 フラッシュメモリストレージシステム
US11/503,217 US7640390B2 (en) 2006-05-31 2006-08-14 Flash memory storage system
EP06256191A EP1862905A3 (en) 2006-05-31 2006-12-05 Flash memory storage system
CN200710001906.5A CN100552612C (zh) 2006-05-31 2007-01-12 闪速存储器存储***
US12/617,765 US7899981B2 (en) 2006-05-31 2009-11-13 Flash memory storage system
US13/010,897 US8166235B2 (en) 2006-05-31 2011-01-21 Flash memory storage system
US13/414,755 US8359426B2 (en) 2006-05-31 2012-03-08 Flash memory storage system
US13/716,326 US8924637B2 (en) 2001-01-21 2012-12-17 Flash memory storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006150912A JP4818812B2 (ja) 2006-05-31 2006-05-31 フラッシュメモリストレージシステム

Publications (2)

Publication Number Publication Date
JP2007323224A true JP2007323224A (ja) 2007-12-13
JP4818812B2 JP4818812B2 (ja) 2011-11-16

Family

ID=38791732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006150912A Active JP4818812B2 (ja) 2001-01-21 2006-05-31 フラッシュメモリストレージシステム

Country Status (3)

Country Link
US (5) US7640390B2 (ja)
JP (1) JP4818812B2 (ja)
CN (1) CN100552612C (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009277215A (ja) * 2008-05-15 2009-11-26 Lumos Technology Co Ltd 多チャンネル記憶システム
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
JP2011003111A (ja) * 2009-06-22 2011-01-06 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理方法及び計算機
JP2012048746A (ja) * 2011-11-22 2012-03-08 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理システム及び管理方法
JP2012068862A (ja) * 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶制御装置
JP2012174037A (ja) * 2011-02-22 2012-09-10 Nec Corp ディスクアレイ装置及びその制御方法
JP2012523622A (ja) * 2009-04-08 2012-10-04 グーグル インコーポレイテッド フラッシュメモリデータストレージデバイスにおけるデータストライピング
US8533549B2 (en) 2009-06-03 2013-09-10 Kabushiki Kaisha Toshiba Memory system and computer system
JP2014194667A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 情報処理装置、情報処理装置の制御プログラムおよび情報処理装置の制御方法
WO2016194095A1 (ja) * 2015-06-01 2016-12-08 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
JPWO2015114744A1 (ja) * 2014-01-29 2017-03-23 株式会社日立製作所 ストレージ装置
JPWO2016001962A1 (ja) * 2014-06-30 2017-04-27 株式会社日立製作所 ストレージシステム及び記憶制御方法

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4818812B2 (ja) * 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US7836380B2 (en) * 2006-10-31 2010-11-16 Intel Corporation Destination indication to aid in posted write buffer loading
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
JP5014821B2 (ja) 2007-02-06 2012-08-29 株式会社日立製作所 ストレージシステム及びその制御方法
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
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
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8458285B2 (en) * 2008-03-20 2013-06-04 Post Dahl Co. Limited Liability Company Redundant data forwarding storage
US8195978B2 (en) 2008-05-16 2012-06-05 Fusion-IO. Inc. Apparatus, system, and method for detecting and replacing failed data storage
CN103984587B (zh) * 2008-06-12 2017-10-20 普安科技股份有限公司 储存虚拟化***中更新实体储存装置的控制程序的方法
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8463932B2 (en) * 2008-08-28 2013-06-11 Red Hat, Inc. Fast HTTP seeking
US8762621B2 (en) * 2008-10-28 2014-06-24 Micron Technology, Inc. Logical unit operation
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
EP2270644A3 (en) 2009-06-22 2012-10-17 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
US20110029716A1 (en) * 2009-07-29 2011-02-03 Stec, Inc. System and method of recovering data in a flash storage system
US9377960B2 (en) 2009-07-29 2016-06-28 Hgst Technologies Santa Ana, Inc. System and method of using stripes for recovering data in a flash storage system
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8964757B2 (en) * 2009-12-18 2015-02-24 Qualcomm Incorporated HTTP optimization, multi-homing, mobility and priority
CN102209087B (zh) * 2010-03-31 2014-07-09 国际商业机器公司 在具有存储网络的数据中心进行MapReduce数据传输的方法和***
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
JP5395959B2 (ja) * 2010-08-10 2014-01-22 株式会社日立製作所 計算機システムの管理方法、及び管理システム
US8601313B1 (en) * 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8615681B2 (en) * 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
DE102012206283B4 (de) * 2011-05-06 2013-04-11 International Business Machines Corporation Verteilung des Datenflusses auf mehrere Pfade (Multi-Pathing) in einem Speicherbereichsnetzwerk
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9547448B2 (en) 2014-02-24 2017-01-17 Netapp, Inc. System and method for transposed storage in raid arrays
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10275356B2 (en) * 2015-12-11 2019-04-30 Quanta Computer Inc. Component carrier with converter board
US9990256B1 (en) * 2016-03-30 2018-06-05 EMC IP Holding Company, LLC Storage management system and method
JP6253752B1 (ja) * 2016-11-29 2017-12-27 株式会社東芝 階層化ストレージシステム
KR20180062246A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 재분배기를 포함하는 메모리 시스템
CN108037894B (zh) * 2017-12-05 2021-07-20 浙江大华技术股份有限公司 一种磁盘空间管理方法及装置
US10929034B2 (en) 2018-05-08 2021-02-23 International Business Machines Corporation Allocation of task control blocks in a storage controller for staging and destaging based on storage rank response time
CN109086229B (zh) * 2018-07-17 2020-07-07 京信通信***(中国)有限公司 器件访问方法、装置、控制器和存储介质
US10783857B2 (en) 2018-08-02 2020-09-22 Dell Products, Lp Apparatus and method for fast memory validation in a baseboard management controller
KR102606009B1 (ko) * 2018-08-16 2023-11-27 에스케이하이닉스 주식회사 캐시 버퍼 및 이를 포함하는 반도체 메모리 장치
JP2020177501A (ja) * 2019-04-19 2020-10-29 株式会社日立製作所 ストレージシステム、そのドライブ筐体、およびパリティ演算方法。
JP7191003B2 (ja) * 2019-12-17 2022-12-16 株式会社日立製作所 ストレージシステムおよびストレージ管理方法
US11449271B2 (en) * 2019-12-30 2022-09-20 Micron Technology, Inc. Implementing fault tolerant page stripes on low density memory systems
US20220246285A1 (en) * 2021-02-04 2022-08-04 Kleenedge, Llc Hospital curtain protocol and tracking system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08235076A (ja) * 1994-11-10 1996-09-13 Raymond Eng Inc 半導体メモリ素子の冗長アレイ
JP2000207137A (ja) * 1999-01-12 2000-07-28 Kowa Co 情報記憶装置
JP2001290681A (ja) * 2000-04-05 2001-10-19 Nec Corp ファイルデータ格納装置及び方法並びに記録媒体
JP2005018185A (ja) * 2003-06-24 2005-01-20 Hitachi Ltd 記憶装置システム
JP2006018419A (ja) * 2004-06-30 2006-01-19 Matsushita Electric Ind Co Ltd 記憶装置
JP2006048559A (ja) * 2004-08-09 2006-02-16 Hitachi Ltd ストレージシステムの記憶容量管理方法
JP2006079380A (ja) * 2004-09-10 2006-03-23 Hitachi Ltd ディスクアレイ装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190617B1 (en) 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
EP1376329A2 (en) * 1994-06-22 2004-01-02 Hewlett-Packard Company, A Delaware Corporation Method of utilizing storage disks of differing capacity in a single storage volume in a hierarchic disk array
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5920884A (en) 1996-09-24 1999-07-06 Hyundai Electronics America, Inc. Nonvolatile memory interface protocol which selects a memory device, transmits an address, deselects the device, subsequently reselects the device and accesses data
US6182188B1 (en) * 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
JP3565687B2 (ja) 1997-08-06 2004-09-15 沖電気工業株式会社 半導体記憶装置およびその制御方法
US5956743A (en) * 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US6311283B1 (en) * 1998-09-17 2001-10-30 Apple Computer, Inc. Need based synchronization of computer system time clock to reduce loading on network server
JP3726663B2 (ja) * 2000-09-07 2005-12-14 日産自動車株式会社 電子制御装置の制御データ記憶装置
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6571326B2 (en) * 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
CN1147933C (zh) 2002-04-22 2004-04-28 ***电子第15研究所 高速大容量快闪固态存储器的制作方法
JP4651913B2 (ja) * 2003-02-17 2011-03-16 株式会社日立製作所 記憶装置システム
KR100546348B1 (ko) * 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
JP2005100259A (ja) 2003-09-26 2005-04-14 Hitachi Ltd ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法
JP2005181185A (ja) 2003-12-22 2005-07-07 Orion Denki Kk 電流検出機能付きチョークコイル
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7631245B2 (en) * 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP2008015769A (ja) * 2006-07-05 2008-01-24 Hitachi Ltd ストレージシステム及び書き込み分散方法
JP4932427B2 (ja) * 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08235076A (ja) * 1994-11-10 1996-09-13 Raymond Eng Inc 半導体メモリ素子の冗長アレイ
JP2000207137A (ja) * 1999-01-12 2000-07-28 Kowa Co 情報記憶装置
JP2001290681A (ja) * 2000-04-05 2001-10-19 Nec Corp ファイルデータ格納装置及び方法並びに記録媒体
JP2005018185A (ja) * 2003-06-24 2005-01-20 Hitachi Ltd 記憶装置システム
JP2006018419A (ja) * 2004-06-30 2006-01-19 Matsushita Electric Ind Co Ltd 記憶装置
JP2006048559A (ja) * 2004-08-09 2006-02-16 Hitachi Ltd ストレージシステムの記憶容量管理方法
JP2006079380A (ja) * 2004-09-10 2006-03-23 Hitachi Ltd ディスクアレイ装置

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009277215A (ja) * 2008-05-15 2009-11-26 Lumos Technology Co Ltd 多チャンネル記憶システム
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
JP2012523622A (ja) * 2009-04-08 2012-10-04 グーグル インコーポレイテッド フラッシュメモリデータストレージデバイスにおけるデータストライピング
TWI453750B (zh) * 2009-06-03 2014-09-21 Toshiba Kk 記憶體系統及電腦系統
US8533549B2 (en) 2009-06-03 2013-09-10 Kabushiki Kaisha Toshiba Memory system and computer system
US9329957B2 (en) 2009-06-22 2016-05-03 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
JP2011003111A (ja) * 2009-06-22 2011-01-06 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理方法及び計算機
US8909848B2 (en) 2009-06-22 2014-12-09 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
US9069476B2 (en) 2009-06-22 2015-06-30 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
JP2012068862A (ja) * 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶制御装置
US8555027B2 (en) 2010-09-22 2013-10-08 Kabushiki Kaisha Toshiba Semiconductor memory controlling device
US9213604B2 (en) 2010-09-22 2015-12-15 Kabushiki Kaisha Toshiba Semiconductor memory controlling device which writes data and error correction codes into different semiconductor storage drives
JP2012174037A (ja) * 2011-02-22 2012-09-10 Nec Corp ディスクアレイ装置及びその制御方法
JP2012048746A (ja) * 2011-11-22 2012-03-08 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理システム及び管理方法
JP2014194667A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 情報処理装置、情報処理装置の制御プログラムおよび情報処理装置の制御方法
US9619181B2 (en) 2013-03-28 2017-04-11 Fujitsu Limited Information processing device and method for controlling replacement of semiconductor storage device
JPWO2015114744A1 (ja) * 2014-01-29 2017-03-23 株式会社日立製作所 ストレージ装置
US9946616B2 (en) 2014-01-29 2018-04-17 Hitachi, Ltd. Storage apparatus
JPWO2016001962A1 (ja) * 2014-06-30 2017-04-27 株式会社日立製作所 ストレージシステム及び記憶制御方法
WO2016194095A1 (ja) * 2015-06-01 2016-12-08 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
JPWO2016194095A1 (ja) * 2015-06-01 2017-07-20 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
US10102070B2 (en) 2015-06-01 2018-10-16 Hitachi, Ltd. Information processing system, storage apparatus and storage device

Also Published As

Publication number Publication date
US20120173802A1 (en) 2012-07-05
US8924637B2 (en) 2014-12-30
CN101082853A (zh) 2007-12-05
US20110119435A1 (en) 2011-05-19
US20100064097A1 (en) 2010-03-11
US8359426B2 (en) 2013-01-22
US8166235B2 (en) 2012-04-24
CN100552612C (zh) 2009-10-21
JP4818812B2 (ja) 2011-11-16
US7899981B2 (en) 2011-03-01
US20130103895A1 (en) 2013-04-25
US7640390B2 (en) 2009-12-29
US20070283079A1 (en) 2007-12-06

Similar Documents

Publication Publication Date Title
JP4818812B2 (ja) フラッシュメモリストレージシステム
US9069476B2 (en) Method for managing storage system using flash memory, and computer
US9519554B2 (en) Storage system with rebuild operations
US7568075B2 (en) Apparatus, system and method for making endurance of storage media
JP6000376B2 (ja) 特性の異なる複数種類のキャッシュメモリを有する情報処理装置
US20120023287A1 (en) Storage apparatus and control method thereof
EP1876519A2 (en) Storage system and write distribution method
JP2009043030A (ja) ストレージシステム
US8667098B2 (en) Cluster storage setting method, system, and management system
JP2006113648A (ja) ディスクアレイ装置
US9223655B2 (en) Storage system and method for controlling storage system
US20180307427A1 (en) Storage control apparatus and storage control method
CN102158538B (zh) 一种存储资源的管理方法及装置
CN102147714A (zh) 一种网络存储***的管理方法及装置
JP5222388B2 (ja) フラッシュメモリを用いたストレージシステムの管理システム及び管理方法
EP1862905A2 (en) Flash memory storage system
JPWO2008126169A1 (ja) ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置
US20140019678A1 (en) Disk subsystem and method for controlling memory access
EP2270644A2 (en) Method for managing storage system using flash memory, and computer
JP5047342B2 (ja) ストレージ装置およびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110831

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140909

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4818812

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150