JPWO2016194199A1 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JPWO2016194199A1
JPWO2016194199A1 JP2017521450A JP2017521450A JPWO2016194199A1 JP WO2016194199 A1 JPWO2016194199 A1 JP WO2016194199A1 JP 2017521450 A JP2017521450 A JP 2017521450A JP 2017521450 A JP2017521450 A JP 2017521450A JP WO2016194199 A1 JPWO2016194199 A1 JP WO2016194199A1
Authority
JP
Japan
Prior art keywords
storage
data
controller
storage device
sector
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
JP2017521450A
Other languages
English (en)
Other versions
JP6453457B2 (ja
Inventor
文翰 施
文翰 施
中野 昌司
昌司 中野
純司 小川
純司 小川
章 松井
章 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2016194199A1 publication Critical patent/JPWO2016194199A1/ja
Application granted granted Critical
Publication of JP6453457B2 publication Critical patent/JP6453457B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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/10Programming or data input circuits
    • G11C16/20Initialising; Data preset; Chip identification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)

Abstract

本発明の一観点に係るストレージ装置は、複数の記憶デバイスとストレージコントローラを有する。記憶デバイスは、ライトデータ格納領域と検査用コード格納領域を含むセクタを複数有する記憶空間をストレージコントローラに提供している。記憶デバイスがストレージコントローラからリード要求を受領した時、リード対象のセクタが未書き込みの場合、リード要求に含まれている情報に基づいて検査用コードを生成し、ストレージコントローラには、所定のパターンのデータと検査用コードを送信する。

Description

本発明は、不揮発性半導体メモリを用いたストレージ装置に関する。
ITの進歩やインターネットの普及などにより、企業等における計算機システムが扱うデータ量は増加を続けている。そのため、大量のデータを扱う組織で用いられるストレージシステムも大容量化が進んでいる。
ストレージシステムを使い始める時には、ストレージシステムに搭載される複数の記憶デバイスの初期化(フォーマット)を行う必要がある。初期化の際、記憶デバイスの全記憶領域に対して所定のパターンのデータ(たとえばall zero)の書き込みが行われる。そのためストレージシステムの大容量化が進むにつれ、初期化にはきわめて長い時間が必要になってきている。初期化が完了するまでは、ストレージシステムが使用できないため、初期化に長時間を要することはシステムにとって好ましいことではない。
この問題を解決するために、たとえば特許文献1には、ホストからのI/O要求を受け付けながら、ディスクドライブの初期化を行うストレージシステムが開示されている。この初期化方法では、バックグラウンドで初期化を実行し、初期化によりall zero等の所定のデータパターンが書き込まれる。ホストI/Oが来ると、I/O対象領域が初期化済みの場合には、その領域に対して通常のI/Oを行う。初期化済でない場合には、I/Oがライトの場合には初期化後にデータを書き込み、I/Oがリードの場合には、初期化データをホストに返送する。これらの処理は、ストレージコントローラ、またはディスクドライブで実施される。
米国特許第7461176号明細書
ところで高い信頼性を要求されるストレージシステムの中には、記憶デバイスへのデータライト時に、データとともに、データの妥当性検証を可能にするための、検査用コードを格納することがある。このようなストレージシステムでは、記憶領域上に、データを記憶する領域に加えて、検査用コードを格納するフィールド(DIF (Data Integrity Field)と呼ばれる)が設けられている。そしてデータライト時にストレージシステムが検査用コードを生成し、DIFに検査用コードを格納する。一般に検査用コードには、ライトデータをもとに算出される誤り検出符号と、データアクセス位置の妥当性検証を可能にするための情報(データ格納先アドレスをもとに算出される情報)が格納されるため、検査用コードの内容は、データの格納位置によって異なり得る。
特許文献1に開示されているような初期化技術では、あらかじめ定められたデータパターンを記憶領域に書き込むことは可能であるが、データ格納位置によって異なる情報を格納することは考慮されていない。そのため、高い信頼性を要求されるストレージシステムに、特許文献1に開示の技術を導入することは困難である。
本発明の一観点に係るストレージ装置は、複数の記憶デバイスとストレージコントローラを有する。記憶デバイスは、複数のセクタを有する記憶空間をストレージコントローラに提供しており、各セクタはライトデータ格納領域と検査用コード格納領域から構成される。記憶デバイスがストレージコントローラからリード要求を受領した時、リード対象のセクタが未書き込みの場合、リード要求に含まれている情報に基づいて検査用コードを生成し、ストレージコントローラには、所定のパターンのデータと検査用コードを送信する。
本発明によれば、記憶デバイスに対する初期化処理を実質的に不要にすることができる。
本発明の実施例に係るストレージシステムを含む計算機システムのハードウェア構成図である。 FMPKの構成図である。 RAIDグループの説明図である。 データフォーマットの一例である。 論理物理マッピングテーブルの構成を説明する図である。 空きページリストの構成を説明する図である。 未初期化ブロックリストの構成を説明する図である。 初期化処理のフローチャートである。 ライト処理のフローチャートである。 リード処理のフローチャートである。
以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
また、以後の説明では「aaaテーブル」等の表現にて本発明の情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。また、「bbb名」等の表現にて本発明の「bbb」を識別するための情報を説明する場合があるが、これらの識別するための情報は、名前に限られず、識別子や識別番号、アドレスなど、「bbb」が特定できる情報であればよい。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、実際には、プログラムはプロセッサ(CPU(Central Processing Unit))によって実行されることで、プロセッサが定められた処理をメモリ及びI/F(インタフェース)を用いながら行う。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
図1は、実施例に係るストレージシステム1を含む計算機システムの構成を示す。ストレージシステム(ストレージ装置とも呼ばれる)1は、ストレージコントローラ(DKCと表記することもある)10と、ストレージコントローラ10に接続された複数の記憶デバイス(200、200’)を有する。
記憶デバイス(200、200’)は、ホスト2などの上位装置からのライトデータを格納するために用いられる。本実施例のストレージシステム1は、記憶デバイスとして、磁気ディスクを記録媒体とするHDD(Hard Disk Drive)の他、フラッシュメモリなどの不揮発性半導体メモリを記憶媒体として用いた記憶装置であるFMPK(Flash Memory PacKage)を用いることができる。FMPKの具体的な構成については後述する。
本実施例では、記憶デバイス200’がHDDで、記憶デバイス200がFMPKである例を説明する。そのため記憶デバイス200のことを「FMPK200」と呼び、また記憶デバイス200’のことを「HDD200’」と呼ぶこともある。ただし、記憶デバイス(200,200’)として、HDDやFMPK以外の種類の記憶デバイスを用いてもよい。また本実施例では、記憶デバイス(200、200’)はSAS(Serial Attached SCSI)規格に従って、ストレージコントローラ10との通信を行う。
DKC10には、1以上のホスト2が接続される。DKC10とホスト2とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)3を介して接続される。
DKC10は少なくとも、プロセッサ11、ホストインタフェース(図中では「ホストIF」と表記)12、デバイスインタフェース(図中では「デバイスIF」と表記)13、メモリ14、パリティ演算回路15を有する。そしてプロセッサ11、ホストIF12、デバイスIF13、メモリ14、パリティ演算回路15は、相互結合スイッチ(相互結合SW)16を介して相互接続されている。これらの構成要素は、高性能化及び高可用性の確保のため、DKC10内に複数搭載されていてよい。ただしこれらの構成要素が1つだけDKC10内に設けられている構成でもよい。
デバイスIF13は少なくとも、記憶デバイス200、200’と通信するためのインタフェースコントローラ131(図中では「SAS−CTL」と表記されている)、及び転送回路(非図示)を有する。インタフェースコントローラ131は、記憶デバイス200、200’で用いられているプロトコル(一例ではSAS)を、DKC10内部で用いられている通信プロトコル(一例としてPCI−Express)に変換するためのものである。本実施例では、記憶デバイス200、200’がSAS規格に従った通信を行うため、インタフェースコントローラ131にはSASコントローラ(以下、「SAS−CTL」と略記する)が用いられる。図1では、1つのデバイスIF13にSAS−CTL131が1つのみ記載されているが、1つのデバイスIF13に複数のSAS−CTL131が存在する構成を採用してもよい。
ホストIF12は、デバイスIF13と同様に、インタフェースコントローラと転送回路(非図示)を少なくとも有する。インタフェースコントローラは、ホスト2とDKC10間で用いられている通信プロトコル(たとえばファイバチャネル)を、DKC10内部で用いられている通信プロトコルに変換するためのものである。
パリティ演算回路15は、RAID技術で必要とされる冗長データ(パリティ)の生成を行うハードウェアである。パリティ演算回路15により生成される冗長データの例としては、排他的論理和(XOR)、リードソロモン符号等がある。
プロセッサ11は、ホストIF12から到来するI/O要求の処理等を行う。メモリ14は、プロセッサ11が実行するプログラムや、プロセッサ11が使用するストレージシステム1の各種管理情報を記憶するために用いられる。またメモリ14は、記憶デバイス(200、200’)に対するI/O対象データを一時的に記憶するためにも用いられる。メモリ14はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14を構成してもよい。
先に述べたとおり、本実施例に係るストレージシステム1は、FMPK200、HDD200’等の、複数種類の記憶デバイスを搭載できる。ただし以下では特に断りのない限り、ストレージシステム1にFMPK200のみが搭載されている構成を前提として説明する。
図2を用いて、FMPK200の構成について説明する。FMPK200は、デバイスコントローラ(FMコントローラ)201と複数のFMチップ210から構成される。FMコントローラ201は、メモリ202、プロセッサ203、データの圧縮伸長を行うための圧縮伸長回路204、フォーマットデータを生成するためのフォーマットデータ生成回路205、SAS−CTL206、FM−IF207を備える。メモリ202、プロセッサ203、圧縮伸長回路204、フォーマットデータ生成回路205、SAS−CTL206、FM−IF207は、内部接続スイッチ(内部接続SW)208を介して相互接続されている。
SAS−CTL206は、FMPK200とDKC10間の通信を行うためのインタフェースコントローラである。SAS−CTL206は、伝送線(SASリンク)を介して、DKC10のSAS−CTL131に接続される。またFM−IF207は、FMコントローラ201とFMチップ210間の通信を行うためのインタフェースコントローラである。
プロセッサ203は、DKC10から到来する各種コマンドに係る処理を行う。メモリ202は、プロセッサ203が実行するプログラムや、各種管理情報が記憶される。メモリ202には、DRAM等の揮発性メモリが用いられる。ただしメモリ202に不揮発性メモリを使用しても良い。
圧縮伸長回路204は、データの圧縮、または圧縮されたデータの伸長を行う機能を備えたハードウェアである。なお、圧縮伸長回路204に代えて、プロセッサ203でデータ圧縮用プログラムを実行させることでデータ圧縮を行ってもよい。また、データをFMチップ210に格納する際に圧縮を行わない場合には、圧縮伸長回路204は不要である。
フォーマットデータ生成回路205は、初期化データの生成を行うためのハードウェアである。またフォーマットデータ生成回路205に代えて、プロセッサ203でフォーマットデータ生成回路205と同等の処理を実行するプログラムを実行させることで、プロセッサ203にフォーマットデータ生成回路205の代わりをさせてもよい。
FMチップ210は、たとえばNAND型フラッシュメモリ等の不揮発性半導体メモリチップである。フラッシュメモリは周知のとおり、ページ単位でデータの読み出し・書き込みが行われ、またデータ消去は、複数ページの集合であるブロック単位で行われる。そして一度書き込みが行われたページは上書きが出来ず、一度書き込みが行われたページに対して再度書き込みを行うためには、当該ページを含むブロック全体を消去する必要がある。そのため、FMPK200は、FMPK200が接続されるDKC10に対しては、FMチップ210の有する記憶領域をそのまま提供することはせず、論理的な記憶空間を提供する。
続いて、ストレージシステム1で用いられる記憶領域の概念について説明する。ストレージシステム1は、複数のFMPK200を用いてRAID(Redundant Arrays of Inexpensive/Independent Disks)グループを形成する。そしてRAIDグループ内で1つ(あるいは2つ)のFMPK200に障害が発生した場合に、残りのFMPK200内のデータを用いて、障害が発生したFMPK200に格納されていたデータを復旧できるようにしている。また、RAIDグループ内の一部の記憶領域(あるいは全記憶領域)を、論理ボリュームとして、ホスト2などの上位装置に提供する。
RAIDグループ内の記憶領域について、図3を用いて説明する。図3において、FMPK#0〜FMPK#3はそれぞれ、FMPK200(200−0〜200−3)がDKC10に提供している記憶空間を表している。DKC10は、複数(図3の例では4つ)のFMPK200から1つのRAIDグループ20を構成し、RAIDグループ20に所属する各FMPK(FMPK#0(200−0)〜FMPK#3(200−3))上の記憶空間を、ストライプブロックと呼ぶ複数の固定サイズの記憶領域に分割して管理している。
また図3では、RAIDグループ20のRAIDレベル(RAID技術におけるデータ冗長化方式を表すもので、一般的にはRAID1〜RAID6のRAIDレベルがある)がRAID5である場合の例を表している。図3においてRAIDグループ20内の、「0」、「1」、「P」などのボックスがストライプブロックを表しており、ストライプブロックのサイズはたとえば、64KB、256KB、512KBなどである。また、各ストライプブロックに付されている、「1」等の番号のことを、「ストライプブロック番号」と呼ぶ。
図3で、ストライプブロックのうち、「P」と記載されているストライプブロックは、冗長データの格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、数字(0、1等)が記載されているストライプブロックは、ホスト2等の上位装置から書き込まれるデータ(冗長データではないデータ)が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。
図3に示されたRAIDグループ20では、たとえばFMPK#3(200−3)の先頭に位置するストライプブロックはパリティストライプ301−3である。そしてDKC10がこのパリティストライプ301−3に格納される冗長データを作成する際、各FMPK200(FMPK#0(200−0)〜FMPK#2(200−2))の先頭に位置するデータストライプ(ストライプブロック301−0、301−1、301−2)に格納されるデータに対して所定の演算(たとえば排他的論理和(XOR)等)を施すことによって、冗長データを生成する。
以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセット(たとえば図3中の要素300)のことを、「ストライプライン」と呼ぶ。本実施例に係るストレージシステム1の場合、図3に示されているストライプライン300のように、1つのストライプラインに属する各ストライプブロックは、FMPK200−0〜200−3の記憶空間の同じ位置(アドレス)に存在するという規則で、ストライプラインが構成される。
なお、先に説明したストライプブロック番号は、データストライプに付される番号で、RAIDグループ内で一意な番号である。図3に示されているように、DKC10は、RAIDグループ内の先頭のストライプラインに含まれるデータストライプの各々に0、1、2の番号を付す。またそれ以降のストライプラインに含まれるデータストライプにも、図3に示されているように3、4、5...の連続番号が付される。以下、ストライプブロック番号がn番(nは0以上の整数値)であるデータストライプのことを、「データストライプn」と表記する。
本実施例に係るストレージシステム1は、RAIDグループ20の記憶領域を分割して管理する。分割された各記憶領域のことを、仮想デバイス(VDEV)と呼ぶ。なお、1つのRAIDグループ20の全記憶領域が1つのVDEVとして管理されてもよい。各VDEVにはストレージシステム1内で一意な識別番号が付される。この識別番号を、VDEV番号(またはVDEV#)と呼ぶ。またVDEV#がnのVDEVのことを「VDEV#n」と表記する。また、本実施例では、VDEV#は0以上65535以下の整数値、つまり16ビットの2進数で表現可能な範囲の値とする。
さらに本実施例に係るストレージシステム1は、VDEVの記憶領域を分割し、分割された記憶領域からパリティストライプを除いた記憶領域をホスト2に提供する。このホスト2に提供される記憶領域を、論理デバイス(LDEV)と呼ぶ。VDEVと同様、各LDEVにもストレージシステム1内で一意な識別子が付される。この識別子を、LDEV番号(またはLDEV#)と呼ぶ。ホスト2がストレージシステム1に対してデータのライトまたはリードを行う際、LDEV#(またはLUNなどの、LDEVの識別子を導出可能な情報)を指定したライトコマンドまたはリードコマンドを発行する。
コマンド(ライトコマンドまたはリードコマンド)には、LDEV#の他、LDEV内のアクセス対象領域のアドレス(以下、このアドレスを「LDEV LBA」と呼ぶ)も含まれている。DKC10はリードコマンドを受領すると、LDEV#とLDEV LBAを、VDEV#とVDEVの記憶空間上アドレス(以下、これを「VDEV LBA」と呼ぶ)に変換する。さらにDKC10は、VDEV#及びVDEV LBAから、FMPK200の識別子とFMPK200上のアドレス(このアドレスを「FMPK LBA」と呼ぶ)を算出し、この算出されたFMPK LBAを用いて、FMPK200からデータを読み出す。
またDKC10はライトコマンドを受領した時には、ライト対象データの格納されるべきFMPK200のFMPK LBAに加えて、ライト対象データに対応するパリティの格納されるべきFMPK200のFMPK LBAも算出する。
続いてFMPK200に格納されるデータのフォーマットについて説明する。ホスト2がLDEV内の記憶空間に格納されているデータにアクセスするときの最小単位は、一例として512バイトである。ストレージコントローラ10がホスト2からLDEVに対するライトコマンドとライトデータを受領すると、ストレージコントローラ10は512バイトのデータ毎に、8バイトの検査用コードを付加する。本実施例では、この検査用コードのことをDIFと呼ぶ。本実施例では、512バイトのデータとそれに付加されるDIFから成る520バイトのデータの塊(chunk)、またはこの520バイトのチャンクの格納される領域のことを、「セクタ」と呼ぶ。
セクタのフォーマットについて、図4を用いて説明する。セクタはデータ510とDIF511から成る。データ510はホスト2から受領したライトデータが格納される領域で、DIF511はストレージコントローラ10によって付加されるDIFが格納される領域である。
DIF511には、CRC512、LA513、APP514という3種類の情報が含まれる。CRC512は、データ510に所定の演算を施すことで生成される誤り検出符号(一例としてCRC(Cyclic Redundancy Check)が用いられる)で、2バイトの情報である。
LA513はデータの格納位置に基づいて生成される5バイトの情報である。LA513の先頭バイト(以下これを「LA0(513−0)」と呼ぶ)には、データ510の格納先のVDEVのVDEV#を加工した情報が格納される。残りの4バイト(これを「LA1(513−1)」と呼ぶ)には、データ510の格納先アドレス(FMPK LBA)を加工した情報が記録される。ストレージコントローラ10がホスト2からライト要求を受領すると、ストレージコントローラ10はライト要求に含まれているデータ書き込み先アドレスLBAをもとに、ライトデータ格納先のVDEV#、ライトデータ格納先のFMPK及びFMPK LBAを特定することで、LA0(513−0)、LA1(513−1)に格納すべき情報を生成する。
APP514も誤り検出符号の一種で、1バイトの情報である。APP514は、データ510とCRC512とLA513の各バイトの排他的論理和である。
ストレージコントローラ10がFMPK200からデータを読み出す時、データ510とDIF511の両方がストレージコントローラ10に返送される。ストレージコントローラ10はデータ510に所定の演算を施してCRCを算出する。そして算出されたCRCと、DIF511内のCRC512とが一致するか判定する(以下、この判定のことを「CRCチェック」と呼ぶ)。両者が一致しない場合、FMPK200からデータが転送されてくる過程において、障害等の要因でデータ内容が変更されたことを意味する。そのため両者が一致しなかった場合には、ストレージコントローラ10は、データが正しく読み出せなかったと判断する。
またストレージコントローラ10はFMPK200からデータを読み出すと、LA0(513−0)に含まれている情報と、リード対象データの属するVDEV#が一致するか判定する。またFMPK200に対して発行したリードコマンドに含まれるアドレス(FMPK LBA)等に所定の演算(後述)を施し、LA1(513−1)と一致するか判定する(以下、この判定のことを「LAチェック」と呼ぶ)。両者が一致しない場合、ストレージコントローラ10は、データが正しく読み出せなかったと判断する。
続いて、FMPK200の有する管理情報、及びFMPK200で実行されるプログラムについて説明する。まず管理情報について説明する。FMPK200は少なくとも、論理物理マッピングテーブル600、空きページリスト700、未初期化ブロックリスト800の管理情報を有する。
図5は論理物理マッピングテーブル600の構成例である。論理物理マッピングテーブル600は、論理ページ#601、LBA602、割当状態603、ブロック#604、物理ページ#605のカラムを有する。各レコードには、FMPK200のセクタについての情報が格納される。論理物理マッピングテーブル600はメモリ202に格納される。あるいは別の実施形態としてFMチップ210の一部の領域に格納されてもよい。
LBA602がセクタのLBAを表し、論理ページ#601にはセクタが属する論理ページの論理ページ番号が格納される。物理ページ#605には、セクタが属する論理ページにマッピングされる物理ページの識別番号(物理ページ番号)が格納され、ブロック#604には、この物理ページの属するブロックの識別番号(ブロック番号)が格納される。論理ページに物理ページがマッピングされていない状態の場合、その論理ページの全セクタのブロック#604及び物理ページ#605には無効値(NULL)が格納される。なお、フラッシュメモリの最小書き込み単位はページである。そのためDKC10から論理ページの一部に対する書き込みがあった場合にも、1物理ページが論理ページにマッピングされる。物理ページが論理ページにマッピングされる時、この論理ページの全セクタのブロック#604と物理ページ#605にはそれぞれ、マッピングされた物理ページの属するブロックのブロック番号と、マッピングされた物理ページの物理ページ番号が格納される。
割当状態603は、LBA602で特定されるセクタに対して書き込みがあったことを表す情報が格納される。セクタに対して書き込みがあると、割当状態603に“1”が格納される。書き込みが無い場合には“0”が格納される。
論理ページには、DKC10から論理ページへの書き込みがあった時点で初めて物理ページがマッピングされる。物理ページは消去処理を行わない限り再書き込み不可能であるので、FMコントローラ201が論理ページに物理ページをマッピングする時、未書き込み状態の物理ページ(未使用物理ページ)をマッピングする。そのためにFMコントローラ201は、空きページリスト700(図6)にFMPK200内の全未使用物理ページの情報を格納して管理している。空きページリスト700のブロック#701、物理ページ#702にはそれぞれ、未使用物理ページの属するブロックのブロック番号、未使用物理ページの物理ページ番号が格納されている。
図7に未初期化ブロックリスト800の構成を示す。未初期化ブロックリスト800は、FMPK200が初期化処理を行う際に用いられる管理情報である。未初期化ブロックリスト800には、初期化処理時に消去処理の必要なブロックのブロック番号の一覧が格納されている。
続いて、本実施例に係るストレージシステム1で行われる、FMPK200の初期化処理について説明する。DKC10は複数のFMPK200を用いてRAIDグループを形成し、形成されたRAIDグループを用いて1以上のVDEVを定義する。さらにDKC10はVDEVを用いて、1以上のLDEVを定義する。
なお、RAIDグループを形成するために用いられるFMPK200は、ストレージシステム1にインストール直後の未使用のFMPK200の他、過去に別用途で用いられていたFMPK200であってもよい。そのため、RAIDグループを構成する各FMPK200には、RAIDグループ形成直後には任意のデータが格納されている可能性がある。FMPK200に障害が発生した場合に、RAID技術によるデータ復旧を可能にするため、LDEV(VDEV)が定義された時点で、LDEV(VDEV)の属するRAIDグループのデータストライプ及びパリティストライプに適切な情報が格納されている必要がある。つまり各ストライプラインのパリティストライプには、同一ストライプラインの全データストライプから形成される冗長データ(パリティ)が格納された状態にしておく必要がある。
そのため、本実施例に係るストレージシステム1では、RAIDグループを構成する各記憶デバイス200、200’のデータストライプ及びパリティストライプの全領域(DIFの格納される部分を除く)を0に設定することで、RAIDグループの初期化を行う。またRAIDグループの初期化の際、各ストライプブロックのDIFに適切な情報を格納する。DKC10は、VDEVを構成する各FMPK200に対して初期化コマンドを送信し、各FMPK200に初期化を行わせる。ただし、後述するように、実際に記憶領域(FMチップ210)に0が格納されるわけではなく、仮想的に記憶領域にall zeroが格納されている状態を各FMPK200が作り出すに過ぎない。実際にデータ(all zero)が記憶領域に書き込まれないため、初期化処理にかかる時間が実質的に0になる。
続いてFMPK200で実行される各プログラムの処理の流れを説明する。FMPK200では少なくとも、初期化プログラム、リードプログラム、ライトプログラムが実行される。初期化プログラムはFMPK200の初期化を行うためのプログラムで、FMPK200の各セクタに、何もデータが格納されていない状態を形成する。ストレージシステム1の管理者(ユーザ)がストレージシステム1に接続された管理端末(非図示)を用いて、LDEVまたはVDEVの初期化の指示をストレージシステム1に発行したことに応じて、ストレージコントローラ10のプロセッサ11は、LDEVまたはVDEVの初期化を開始する。プロセッサ11は、LDEVまたはVDEVを構成する各FMPK200に対し、初期化コマンドを発行する。FMPK200のプロセッサ203はストレージコントローラ10から初期化コマンドを受領したことに応じて、初期化プログラムの実行を開始する。
リードプログラムは、DKC10から受領したリードコマンドに係る処理を実行するためのプログラムである。ライトプログラムは、DKC10から受領したライトコマンドに係る処理を実行するためのプログラムである。
まずFMPK200が実施する初期化処理の流れを、図8を用いて説明する。FMPK200がストレージコントローラ10から初期化コマンドを受領すると、プロセッサ203で初期化プログラムの実行が開始される。初期化プログラムはまず、初期化コマンドと共に送信されてくる構成情報を取得し、メモリ202に格納する(S11)。構成情報の詳細は後述する。
続いて初期化プログラムは管理情報の初期化を行う(S12)。具体的には、論理物理マッピングテーブル600の全レコードの割当状態603が0に、ブロック#604と物理ページ#605がNULLに設定される。また空きページリスト700に格納されている物理ページの情報がすべて消去される。そして未初期化ブロックリスト800に、FMPK200内の全ブロックのブロック番号が登録される。
続いて初期化プログラムは未初期化ブロックリスト800に登録されているブロック番号のブロックの消去を開始する(S13)。この時、たとえばブロック番号がXのブロック(以下ではこれを「ブロック#X」と表記する)の消去が完了すると、初期化プログラムは、未初期化ブロックリスト800からブロック#Xを消去し、空きページリスト700に、ブロック#Xに属する全物理ページのブロック番号及び物理ページ番号を登録する。
所定数のブロックの消去が完了すると、初期化プログラムはストレージコントローラ10に対し、初期化が完了した旨のメッセージを通知する(S14)。S14の前までに消去が行われるブロックは、FMPK200内のブロックのうち、ごく一部のブロックだけでよい。ストレージコントローラ10はFMPK200から初期化が完了した旨のメッセージを受領すると、そのFMPK200に対してリードコマンドまたはライトコマンドを発行することができる。管理情報の初期化と、幾つかのブロックの消去が行われた時点で、FMPK200はストレージコントローラ10に初期化が完了した旨を通知するため、FMPK200は極めて短時間に初期化が完了した状態になる。
S14の後も、初期化プログラムは未初期化ブロックリスト800に登録されているブロック番号のブロックの消去を継続する(S15)。未初期化ブロックリスト800に登録されていた全ブロックの消去が完了すると、初期化プログラムの実行が終了する。
なお、S13、S15のブロックの消去(Erase)処理は必須の処理ではない。初期化プログラムでブロックの消去を行わず、FMPK200に対してDKC10からライトコマンドを受領した時点で、空き物理ページが無かった場合に、ブロックの消去を行ってもよい。ただし、FMPK200がS13を行わずに、DKC10からのライトコマンドの受け付けを開始すると、DKC10から受領したライトデータを格納する前にブロック消去を実施する必要が生じ、ライト時の性能が悪化する(応答時間が長くなる)。そのため本実施例に係るFMPK200では、あらかじめ所定数のブロックの消去を行っておくことにより、ストレージコントローラ10からのライトデータを即座に(ブロック消去を実行することなく)物理ページに格納できるようにしている。
続いて、FMPK200がDKC10からライトコマンドを受信した時に実施する、ライト処理の流れを、図9を用いて説明する。DKC10がFMPK200にデータライトを行う際の最小書き込み単位はセクタである。一方FMPK200がFMチップ210に書き込みを行う際の最小書き込み単位はページ(物理ページ)で、ページサイズはセクタサイズの整数倍である(ページのサイズはセクタサイズより大きい)。そのため、DKC10からライトコマンドで指定される領域のサイズが1ページ未満等の場合には、FMPK200はいわゆるリードモディファイライトを実施することで、FMチップ210に対してページ単位の書き込みを行う。
FMPK200がライトコマンドを受領すると、プロセッサ203でライトプログラムの実行が開始される。ライトプログラムはS110において、ライトコマンドに含まれているLBA、データ長の情報を用いて、データライト先の論理ページの論理ページ#を算出する。またS110でライトプログラムは、空きページリスト700から未使用ページを確保する。なお、空きページリスト700に物理ページ(未使用ページ)が登録されていない場合、ライトプログラムは未使用ページの確保の前に、未初期化ブロックリスト800に登録されているブロックの消去を行うことで、未使用ページの作成を行う。作成された未使用ページの情報は、空きページリスト700に登録される。
S110で、データライト先の論理ページは複数特定されることもある。データライト先の論理ページが複数特定された場合には、ライトプログラムは未使用ページを複数確保する。ただし以下では、S110で論理ページが1ページ特定された場合の例、かつ特定された論理ページ#がn(nは0以上の整数値)の場合の例を説明する。
続いてライトプログラムは、メモリ202上に、1ページ分のサイズの領域(以下、「バッファ」と呼ぶ)を確保する(S120)。バッファの内容の初期化(たとえば0を書き込む等)は行ってもよいし、行わなくともよい。
S130で、ライトプログラムは、データライト先の論理ページに、すでに物理ページがマッピング済みか否か判定する。これは、論理物理マッピングテーブル600の論理ページ#601がnの行の物理ページ#605(及びブロック#604)にNULLでない値が格納されているか否かで判定可能である。物理ページ#605(及びブロック#604)がNULLの場合、データライト先の論理ページに物理ページがマッピングされていないことを意味する(S130:NO)。この場合ライトプログラムは、S140、S150をスキップして、S160以降の処理を行う。
一方物理ページ#605(及びブロック#604)がNULLでない場合、データライト先の論理ページに物理ページがマッピングされている(S130:YES)。この場合ライトプログラムは、ライトコマンドによって指定されているライト範囲が論理ページ境界に一致しているか判定する(S140)。ライト範囲が論理ページ境界に一致している場合(つまりライト対象領域の先頭LBAが論理ページ内先頭セクタのLBAに一致し、ライト対象領域の終端LBAが論理ページ内の終端セクタのLBAと一致している場合)、S150の処理は行われない。一方ライト範囲が論理ページ境界に一致していない場合(S140:NO)、ライトプログラムは、論理ページにマッピングされている物理ページからデータを読み出して、S120で確保されたバッファに格納する(S150)。
S160ではライトプログラムは、ライトコマンドとともに受領したライトデータを、S120で確保されたバッファに上書きする。上で述べたとおり、DKC10からライトコマンドとともに受領したライトデータには、DKC10によって512バイトのデータ毎にDIFが付加されている。続いてライトプログラムはバッファのデータを、S110で確保した物理ページに格納する(S170)。
最後にS180において、ライトプログラムは、論理物理マッピングテーブル600の更新を行う。具体的にはライトプログラムは、論理物理マッピングテーブル600の論理ページ#601がnの行の物理ページ#605及びブロック#604に、S110で確保した物理ページの物理ページ番号及びブロック番号を格納する。またライトプログラムは、論理物理マッピングテーブル600のLBA602が、ライトコマンドで指定されたアクセス範囲に含まれる行の、割当状態603を“1”に変更する。これらの処理が終了したら、ライトプログラムはライト処理を終了する。
続いて、FMPK200がDKC10からリードコマンドを受信した時に実施する、リード処理の流れを、図10を用いて説明する。DKC10がFMPK200にデータリードを行う際の最小読み出し単位はセクタである。
FMPK200がリードコマンドを受領すると、プロセッサ203でリードプログラムの実行が開始される。リードプログラムはS210において、リードコマンドで指定されているアクセス範囲が、過去にライト済みの領域であるか否か確認する。具体的には、論理物理マッピングテーブル600のレコードのうち、LBA602がリードコマンドで指定されているアクセス範囲に含まれるレコードの割当状態603が“1”であれば、過去にライト済みの領域である。なお、以下では説明が冗長になることを避けるために、リードコマンドで1セクタ分の領域のリードが指定された場合の例を説明する。
リードコマンドで指定されているアクセス範囲に含まれる行の割当状態603が“1”の場合(S220:YES)、リードプログラムはリード対象のデータが格納されている物理ページからデータを読み出してメモリ202に格納する。FMチップ210の最小読出し単位はページ(物理ページ)なので、ここでは1ページ分のデータが読み出される。そしてリードプログラムは、メモリ202上に読み出された1ページ分のデータの中から、リードコマンドでリード対象となっているデータを抽出し、DKC10に返送し(S230)、リード処理を終了する。
リードコマンドで指定されているアクセス範囲に含まれる行の割当状態603が“0”の場合(S220:NO)、リードプログラムはフォーマットデータ生成回路205を用いて、フォーマットデータをメモリ202上に作成する(S250)。フォーマットデータの作成方法については後述する。そして作成されたデータをDKC10に返送し、リード処理を終了する。
上ではリードコマンドで指定されているアクセス範囲が1セクタの場合について説明したが、アクセス範囲が複数セクタに跨る場合でも同様の処理が行われる。ただしアクセス範囲が複数セクタに跨る場合、アクセス範囲の領域の中に、過去にライト済みのセクタと、まだ一度もライトが行われていないセクタとが含まれていることがあり得る。その場合リードプログラムは、過去にライト済みのセクタについては、上で述べたS230の処理を行い、まだ一度もライトが行われていないセクタについては、上で述べたS250の処理を行えば良い。
最後に、S250で行われるフォーマットデータの作成方法を説明する。本実施例では、図4のデータ510に所定のデータパターンが格納されたデータを「フォーマットデータ」と呼ぶ。データパターンの例として、all zero(全ビットが0)がある。以下ではデータ510に、all zeroが格納されたフォーマットデータを作成する場合の例を説明する。
また、フォーマットデータの作成の際、LA513にはデータ510の属するVDEVやFMPK LBAの情報が格納される。これらの情報は初期化処理の際にDKC10から受領する構成情報に含まれており、S250では構成情報を用いてLA513が作成される。DKC10から受領する構成情報について、図3を用いて概説する。図3の例では、FMPK#0(200−0)〜FMPK#3(200−3)で構成されるRAIDグループに、VDEV#100とVDEV#101が定義されている。このRAIDグループに属するFMPK200は、構成情報としてVDEV#(100と101)そして、FMPK200内の領域のうち、VDEV#100に属する領域のアドレス及びサイズ(セクタ数)、VDEV#101に属する領域のアドレス及びサイズ(セクタ数)を受領する。
(1) データ510の格納内容
上でも述べたとおり、all zeroが格納される。なお、データストライプのデータ510とパリティストライプのデータ510のいずれにも、all zeroが格納される。all zeroのデータストライプを用いてパリティを生成すると、その内容はall zeroになるからである。
(2) CRC512の格納内容
データ510に、all zeroが格納される場合、CRC512の値(つまりデータ510から生成されるCRC)も0になる。そのため、CRC512にもall zeroが格納される。
(3) LA0(513−0)の格納内容
S250では、フォーマットデータ生成回路205は構成情報とリードコマンドで指定されているLBAの情報を用いて、リードコマンドで指定されているLBAがどのVDEVに属するか特定する。そして特定されたVDEVのVDEV#がLA0(513−0)に格納される。本実施例では、VDEV#は16ビットのサイズの値なので、1バイトの領域であるLA0(513−0)に収まるように、VDEV#を加工してLA0(513−0)に格納される。一例としてフォーマットデータ生成回路205はVDEV#の上位8ビットと下位8ビットを抽出し、両者の論理和を算出して得られた8ビットの情報をLA0(513−0)に格納する。ただしこれ以外の格納形式が採用されてもよい。
(4) LA1(513−1)の格納内容
LA1(513−1)には、リードコマンドで指定されたLBA(FMPK LBA)を、リードコマンドで指定されているLBAが属するVDEVに含まれるFMPK200の領域サイズ(セクタ数)で割った剰余が格納される。たとえばリードコマンドで指定されているLBAがVDEV#100に属し、FMPK200の領域のうちVDEV#100に属する領域のサイズ(セクタ数)がmであれば、リードコマンドで指定されたLBAをmで割った剰余が格納される。
(5) APP514の格納内容
S250でフォーマットデータ生成回路205は、データ510とCRC512とLA513の各バイトの排他的論理和を算出し、これをAPP514に格納する。
以上が本実施例に係るストレージシステムで行われる処理の内容である。これまで説明してきたように、本実施例に係るFMPK200では、初期化処理が実行されると、各セクタの割当状態603を“0”にすることで、各セクタをデータ未書き込み状態にする。ただし初期化処理が実行される時には、FMチップ210へのデータ書き込みは行われない。初期化が行われた直後のFMPK200の各セクタに対してDKC10がリード要求を発行した場合、FMPK200は初期化状態のデータを作成してDKC10に返却することにより、見かけ上記憶領域が初期化された状態を作り出している。そのため、本実施例に係るFMPK200は極めて短時間でFMPK200の初期化を実施することができる。
また、高い信頼性を要求されるストレージシステムの場合、記憶デバイスへのデータ格納時に、データに検査用コード(DIF)を付加して記憶デバイスに格納する。DIFには、データアクセス位置の妥当性を検証するための情報(データ格納先アドレス等)が含まれるため、ストレージシステムやボリュームの構成、データの格納位置によってDIFの採り得る値は異なる。本実施例に係るFMPK200ではストレージコントローラ10から構成情報を取得することで、DIFに格納するための情報を生成可能に構成されている。そのため、初期化時にストレージコントローラ10から初期化データを受け取ってFMチップ210に書き込む必要もない。
以上、本発明の実施例を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
1: ストレージシステム、2: ホスト、3: SAN、10: ストレージコントローラ、11: プロセッサ(CPU)、12: ホストIF、13: デバイスIF、14: メモリ、16: 相互結合スイッチ、20: RAIDグループ、200: FMPK、200’: HDD、201: FMコントローラ、202: メモリ、203: プロセッサ、204: 圧縮伸長回路、205: フォーマットデータ生成回路、206: SAS−CTL、207: FM―IF、208: 内部接続スイッチ、210: FMチップ

Claims (14)

  1. デバイスコントローラと不揮発性記憶媒体を有する複数の記憶デバイスと、ストレージコントローラとを有し、
    前記記憶デバイスは前記ストレージコントローラに記憶空間を提供するよう構成されており、前記記憶空間は複数のセクタを有し、前記複数のセクタのそれぞれは、ライトデータ格納領域と前記ライトデータ格納領域に格納されたデータの検査用コードの格納領域から成り、
    前記記憶デバイスは、前記複数のセクタのうち、前記ストレージコントローラからの書き込みが行われていない第一セクタに対するリード要求を前記ストレージコントローラから受領した場合、
    所定のパターンのデータと、前記検査用コードとを生成し、前記所定のパターンのデータに前記検査用コードを付加した情報を前記ストレージコントローラに返送する、
    ことを特徴とする、ストレージ装置。
  2. 前記検査用コードには、前記ライトデータ格納領域に格納されるデータを用いて生成される誤り検出符号と、前記データの格納位置に関する情報が含まれる、
    ことを特徴とする、請求項1に記載のストレージ装置。
  3. 前記ストレージコントローラは、ホスト計算機からライト要求とライトデータを受領すると、前記ライト要求に含まれる位置情報と前記ライトデータに基づいて、前記検査用コードを生成し、前記ライトデータに前記検査用コードを付加して前記記憶デバイスに送信し、
    前記記憶デバイスは、前記ライトデータと前記検査用コードを前記不揮発性記憶媒体に格納する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  4. 前記記憶デバイスは、前記セクタに対するライト要求を受領すると、前記セクタに前記不揮発性記憶媒体の記憶領域をマッピングし、前記マッピングされた記憶領域に前記ライトデータと前記検査用コードを格納し、前記セクタに前記ライトデータが書き込まれた旨と前記セクタにマッピングされた前記記憶領域の情報をマッピング情報に記録する、
    ことを特徴とする、請求項2に記載のストレージ装置。
  5. 前記記憶デバイスは、前記複数のセクタのうち、過去に前記ストレージコントローラからの書き込みが行われたセクタに対するリード要求を受領した時、
    前記セクタにマッピングされた前記記憶領域に格納されたデータを、前記ストレージコントローラに返送する、
    ことを特徴とする、請求項4に記載のストレージ装置。
  6. 前記デバイスコントローラは、前記ストレージコントローラから初期化指示を受領すると、前記マッピング情報をクリアする、
    ことを特徴とする、請求項4に記載のストレージ装置。
  7. 前記不揮発性記憶媒体は、データの消去単位であるブロックを複数有するフラッシュメモリであって、
    前記デバイスコントローラは、前記初期化指示を受領すると、複数の前記ブロックのうち、所定数の前記ブロックの消去を行った後、
    前記ストレージコントローラに、前記初期化指示に係る処理が完了した旨を返答する
    ことを特徴とする、請求項6に記載のストレージ装置。
  8. 前記ストレージコントローラは、前記複数の記憶デバイスの有する記憶空間を用いて1以上の論理的記憶空間を形成し、
    前記ストレージコントローラは前記検査用コードを生成する時、前記論理的記憶空間の識別子を前記検査用コードに格納するよう構成されており、
    前記記憶デバイスは、前記ストレージコントローラから前記初期化指示を受領する時に、前記記憶デバイスの属する前記論理的記憶空間の識別子を受領し、
    前記記憶デバイスが前記検査用コードを生成する時、前記受領した識別子を前記検査用コードに格納する、
    ことを特徴とする、請求項6に記載のストレージ装置。
  9. デバイスコントローラと不揮発性記憶媒体を有し、ストレージ装置に接続される記憶デバイスであって、
    前記デバイスコントローラは前記ストレージ装置に複数のセクタを有する記憶空間を提供するよう構成されており、前記複数のセクタのそれぞれは、ライトデータ格納領域と前記ライトデータ格納領域に格納されたデータの検査用コードの格納領域から構成されており、
    前記デバイスコントローラは、前記複数のセクタのうち、前記ストレージ装置からの書き込みが行われていない第一セクタに対するリード要求を前記ストレージ装置から受領した時、
    所定のパターンのデータと、前記検査用コードを生成し、前記所定のパターンのデータに前記検査用コードを付加した情報を前記ストレージ装置に返送する、
    ことを特徴とする、記憶デバイス。
  10. 前記検査用コードには、前記ライトデータ格納領域に格納されるデータを用いて生成される誤り検出符号と、前記データの格納位置に関する情報が含まれる、
    ことを特徴とする、請求項9に記載の記憶デバイス。
  11. 前記デバイスコントローラは、前記セクタに対するライト要求を受領すると、前記セクタに前記不揮発性記憶媒体の記憶領域をマッピングし、前記マッピングされた記憶領域に前記ライトデータと前記検査用コードを格納し、前記セクタに前記ライトデータが書き込まれた旨と前記セクタにマッピングされた前記記憶領域の情報をマッピング情報に記録する、
    ことを特徴とする、請求項10に記載の記憶デバイス。
  12. 前記デバイスコントローラは、前記複数のセクタのうち、過去に前記ストレージ装置からの書き込みが行われたセクタに対するリード要求を受領した時、
    前記セクタにマッピングされた前記記憶領域に格納されたデータを、前記ストレージ装置に返送する、
    ことを特徴とする、請求項11に記載の記憶デバイス。
  13. 前記デバイスコントローラは、前記ストレージ装置から初期化指示を受領すると、前記マッピング情報をクリアする、
    ことを特徴とする、請求項11に記載の記憶デバイス。
  14. 前記不揮発性記憶媒体は、データの消去単位であるブロックを複数有するフラッシュメモリであって、
    前記デバイスコントローラは、前記初期化指示を受領すると、複数の前記ブロックのうち、所定数の前記ブロックの消去を行った後、
    前記ストレージ装置に、前記初期化指示に係る処理が完了した旨を返答する
    ことを特徴とする、請求項13に記載の記憶デバイス。
JP2017521450A 2015-06-04 2015-06-04 ストレージ装置 Active JP6453457B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/066212 WO2016194199A1 (ja) 2015-06-04 2015-06-04 ストレージ装置

Publications (2)

Publication Number Publication Date
JPWO2016194199A1 true JPWO2016194199A1 (ja) 2017-10-12
JP6453457B2 JP6453457B2 (ja) 2019-01-16

Family

ID=57442261

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017521450A Active JP6453457B2 (ja) 2015-06-04 2015-06-04 ストレージ装置

Country Status (3)

Country Link
US (1) US20180067676A1 (ja)
JP (1) JP6453457B2 (ja)
WO (1) WO2016194199A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445506B2 (en) * 2016-03-30 2019-10-15 Airwatch Llc Detecting vulnerabilities in managed client devices
JP7197541B2 (ja) * 2020-04-01 2022-12-27 株式会社日立製作所 ストレージ装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150321A (ja) * 2001-11-09 2003-05-23 Matsushita Electric Ind Co Ltd 仮想記憶デバイス管理装置、仮想記憶デバイス管理方法、仮想記憶デバイス管理プログラム及び仮想記憶デバイスが記録されたコンピュータ読み取り可能な記録媒体
JP2005011317A (ja) * 2003-05-02 2005-01-13 Hitachi Ltd ストレージシステムを初期化する方法と装置
JP2010055557A (ja) * 2008-08-29 2010-03-11 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法
JP2012523594A (ja) * 2009-08-31 2012-10-04 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
JP2013196333A (ja) * 2012-03-19 2013-09-30 Nec Corp ストレージ装置およびストレージ装置における初期化方法
US20130346723A1 (en) * 2012-06-22 2013-12-26 Hitachi, Ltd. Method and apparatus to protect data integrity
JP2014026635A (ja) * 2012-06-19 2014-02-06 Toshiba Corp 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
JP2014222426A (ja) * 2013-05-14 2014-11-27 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
WO2015072028A1 (ja) * 2013-11-18 2015-05-21 株式会社日立製作所 ストレージ制御装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334124B2 (en) * 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7275139B1 (en) * 2004-12-02 2007-09-25 Tormasov Alexander G Secure deletion of information from hard disk drive
US8713251B2 (en) * 2009-05-27 2014-04-29 Hitachi, Ltd. Storage system, control method therefor, and program
US8365057B2 (en) * 2009-07-30 2013-01-29 Mellanox Technologies Ltd Processing of data integrity field
US9086983B2 (en) * 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
WO2013046464A1 (ja) * 2011-09-30 2013-04-04 株式会社日立製作所 不揮発半導体記憶媒体を有するストレージシステム
US10102060B2 (en) * 2013-08-30 2018-10-16 Hitachi, Ltd. Storage apparatus and data control method of storing data with an error correction code
JP6136834B2 (ja) * 2013-10-07 2017-05-31 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法
JP6076506B2 (ja) * 2014-01-29 2017-02-08 株式会社日立製作所 ストレージ装置
KR102188062B1 (ko) * 2014-02-28 2020-12-07 삼성전자 주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150321A (ja) * 2001-11-09 2003-05-23 Matsushita Electric Ind Co Ltd 仮想記憶デバイス管理装置、仮想記憶デバイス管理方法、仮想記憶デバイス管理プログラム及び仮想記憶デバイスが記録されたコンピュータ読み取り可能な記録媒体
JP2005011317A (ja) * 2003-05-02 2005-01-13 Hitachi Ltd ストレージシステムを初期化する方法と装置
JP2010055557A (ja) * 2008-08-29 2010-03-11 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法
JP2012523594A (ja) * 2009-08-31 2012-10-04 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
JP2013196333A (ja) * 2012-03-19 2013-09-30 Nec Corp ストレージ装置およびストレージ装置における初期化方法
JP2014026635A (ja) * 2012-06-19 2014-02-06 Toshiba Corp 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US20130346723A1 (en) * 2012-06-22 2013-12-26 Hitachi, Ltd. Method and apparatus to protect data integrity
JP2014222426A (ja) * 2013-05-14 2014-11-27 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
WO2015072028A1 (ja) * 2013-11-18 2015-05-21 株式会社日立製作所 ストレージ制御装置

Also Published As

Publication number Publication date
US20180067676A1 (en) 2018-03-08
WO2016194199A1 (ja) 2016-12-08
JP6453457B2 (ja) 2019-01-16

Similar Documents

Publication Publication Date Title
CN107111535B (zh) 存储系统中的加速数据恢复
US9910748B2 (en) Rebuilding process for storage array
US9946616B2 (en) Storage apparatus
TWI428737B (zh) 半導體記憶體裝置
US9465561B2 (en) Storage system and storage control method
US8799745B2 (en) Storage control apparatus and error correction method
US9009395B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory
US10768838B2 (en) Storage apparatus and distributed storage system
US20230229328A1 (en) Systems, Methods, and Computer Readable Media Providing Arbitrary Sizing of Data Extents
US10372538B2 (en) Computer system
US20150074371A1 (en) Storage array system and non-transitory recording medium storing control program
US10067833B2 (en) Storage system
US11340986B1 (en) Host-assisted storage device error correction
WO2015029230A1 (ja) 記憶装置及びデータ制御方法
US9990261B2 (en) System and method for recovering a storage array
US11625193B2 (en) RAID storage device, host, and RAID system
JP6453457B2 (ja) ストレージ装置
US8418029B2 (en) Storage control device and storage control method
CN107808686B (zh) 读出错测试方法与装置
CN110737395B (zh) I/o管理方法、电子设备和计算机可读存储介质
US20120260034A1 (en) Disk array apparatus and control method thereof
US12007840B2 (en) Storage controller, operation method thereof
US20220269561A1 (en) Storage controller, operation method thereof
EP2924576A1 (en) Storage control apparatus, control program, and control method
US11221790B2 (en) Storage system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170602

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181003

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181212

R150 Certificate of patent or registration of utility model

Ref document number: 6453457

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150