特許第6978084号(P6978084)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECプラットフォームズ株式会社の特許一覧

特許6978084制御装置、ディスクアレイ装置及びパトロール診断方法
<>
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000002
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000003
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000004
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000005
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000006
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000007
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000008
  • 特許6978084-制御装置、ディスクアレイ装置及びパトロール診断方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6978084
(24)【登録日】2021年11月15日
(45)【発行日】2021年12月8日
(54)【発明の名称】制御装置、ディスクアレイ装置及びパトロール診断方法
(51)【国際特許分類】
   G06F 11/22 20060101AFI20211125BHJP
   G06F 3/08 20060101ALI20211125BHJP
   G06F 3/06 20060101ALI20211125BHJP
   G06F 13/10 20060101ALI20211125BHJP
   G06F 13/14 20060101ALI20211125BHJP
【FI】
   G06F11/22 607Z
   G06F3/08 H
   G06F3/06 304R
   G06F13/10 340A
   G06F13/14 330B
【請求項の数】8
【全頁数】14
(21)【出願番号】特願2019-4645(P2019-4645)
(22)【出願日】2019年1月15日
(65)【公開番号】特開2020-113132(P2020-113132A)
(43)【公開日】2020年7月27日
【審査請求日】2020年5月13日
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】稲垣 智一
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2017−068634(JP,A)
【文献】 米国特許出願公開第2014/0281151(US,A1)
【文献】 特開2011−209973(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G06F 3/08
G06F 3/06
G06F 13/10
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
記憶装置に対するパトロール診断を行う機能を有し、診断対象の記憶装置がSSDの場合、ブロック単位でパトロール診断を行う診断部と、
前記記憶装置にコマンドを発行し、前記記憶装置がSSDであるかHHDであるかを示す前記記憶装置のタイプと、識別情報と、容量とを取得し、前記タイプがSSDの場合、さらに前記SSDを構成するブロックのブロックサイズを取得するコマンドを発行して前記ブロックサイズの情報を取得する構成情報取得部と、
前記記憶装置の識別情報と、前記タイプと、前記タイプがSSDの場合に当該SSDのブロックサイズの情報と、前記容量と、診断対象のアドレスとを対応付けて記憶するドライブ情報記憶テーブルと、
前記SSDの識別情報と前記ブロックサイズとを対応付けて記憶する製品識別コードテーブルと、
前記ドライブ情報記憶テーブルに前記識別情報と前記ブロックサイズと前記容量とを登録する制御部と、
を備え、
前記制御部は、
前記構成情報取得部が取得した前記識別情報、前記ブロックサイズおよび前記容量と、所定の前記診断対象のアドレスと、を前記ドライブ情報記憶テーブルに登録し、
前記構成情報取得部によって前記ブロックサイズが取得できなかった場合、前記構成情報取得部が取得した前記識別情報に基づいて前記製品識別コードテーブルを参照し、当該識別情報に対応する前記ブロックサイズを取得して、前記構成情報取得部が取得した前記識別情報と前記容量とともに、取得した前記ブロックサイズを前記ドライブ情報記憶テーブルに登録し、
前記診断部は、診断対象の前記記憶装置がSSDの場合、診断対象の前記記憶装置の前記識別情報に対応する前記ブロックサイズを前記ドライブ情報記憶テーブルから読み出し、当該ブロックサイズに基づいて、ブロック単位で前記SSDのパトロール診断を行う、
制御装置。
【請求項2】
診断対象の前記記憶装置がSSDの場合、前記診断部は、前記ブロック内の少なくとも1つのアドレスに対して発行された診断用のコマンドに対する応答に基づいて当該ブロックに対する診断を行い、次の診断時には、他のブロック内の少なくとも1つのアドレスに基づいて、当該他のブロックに対する診断を行う、
請求項1に記載の制御装置。
【請求項3】
診断対象の前記記憶装置がSSDの場合、前記制御部は、今回診断したアドレスに前記ブロックサイズの値を加算して、次の診断時における診断対象のアドレスを決定し、当該アドレスを前記ドライブ情報記憶テーブルの前記診断対象のアドレスに登録する、
請求項2に記載の制御装置。
【請求項4】
診断対象の前記記憶装置がSSDであって、前記制御部が、前記製品識別コードテーブルを参照して前記ブロックサイズを取得できなかった場合、今回診断したアドレスに今回診断を行ったセクタ分を加算して、次の診断時における診断対象のアドレスを決定し、当該アドレスを前記ドライブ情報記憶テーブルの前記診断対象のアドレスに登録する、
請求項1から請求項3の何れか1項に記載の制御装置。
【請求項5】
前記ドライブ情報記憶テーブルの前記診断対象のアドレスに登録する次回の診断に係るアドレスが、前記容量より大きい場合、前記制御部は、前記ドライブ情報記憶テーブルの前記診断対象のアドレスに0を登録する、
請求項3または請求項4に記載の制御装置。
【請求項6】
前記診断部は、診断対象の前記記憶装置の識別情報に基づいて、前記ドライブ情報記憶テーブルを参照し、
前記記憶装置がHDDの場合には、診断対象のアドレスを1セクタずつ進めて前記パトロール診断を行う、
請求項1から請求項5の何れか1項に記載の制御装置。
【請求項7】
複数の記憶装置と、
請求項1から請求項6の何れか1項に記載の制御装置と、
を備えるディスクアレイ装置。
【請求項8】
記憶装置に対するパトロール診断を行う機能を有する制御装置によって実行されるパトロール診断方法であって、
前記記憶装置にコマンドを発行し、前記記憶装置がSSDであるかHHDであるかを示す前記記憶装置のタイプ、識別情報、容量を取得し、前記タイプがSSDの場合、さらに前記SSDを構成するブロックのブロックサイズを取得するコマンドを発行して前記ブロックサイズの情報を取得するステップと、
前記記憶装置の識別情報と、前記タイプと、前記タイプがSSDの場合に当該SSDのブロックサイズの情報と、前記容量と、診断対象のアドレスとを対応付けて記憶するドライブ情報記憶テーブルに、前記取得するステップで取得した前記識別情報、前記ブロックサイズおよび前記容量と、所定の前記診断対象のアドレスとを登録するステップと、
前記取得するステップによって前記ブロックサイズが取得できなかった場合、前記取得するステップで取得した前記識別情報に基づいて、前記SSDの識別情報と前記ブロックサイズとを対応付けて記憶する製品識別コードテーブルを参照し、当該識別情報に対応する前記ブロックサイズを取得して、前記取得するステップで取得した前記識別情報と前記容量とともに、取得した前記ブロックサイズを前記ドライブ情報記憶テーブルに登録するステップと、
診断対象の前記記憶装置がSSDの場合、診断対象の前記記憶装置の前記識別情報に対応する前記ブロックサイズを前記ドライブ情報記憶テーブルから読み出し、当該ブロックサイズに基づいて、ブロック単位で前記SSDのパトロール診断を行うステップと、
を有するパトロール診断方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、ディスクアレイ装置及びパトロール診断方法に関する。
【背景技術】
【0002】
ディスクアレイ装置では、搭載しているドライブの故障を検出するためにパトロール診断を実施している。パトロール診断では、一定周期で各ドライブに対してリードコマンドやベリファイコマンドを発行し、エラー応答が返却されるかどうかを確認する。パトロール診断は、ドライブの全領域のアドレスに対して実施する必要があるが、近年採用されているような大容量のドライブでは全領域のチェックが完了するまでに時間がかかるという問題がある。
【0003】
このような問題に対し、特許文献1には、ドライブごとにパトロール診断を行うアドレスを発生させるアドレス発生回路を設け、通常は、アドレス発生回路が発生したアドレスに基づいて、アドレスをスキップしつつパトロール診断を行い、エラー発生時には1ずつアドレスを増加させてパトロール診断を行う方法が開示されている。この方法を用いると、短時間でパトロール診断を実行し、早期にエラーを検知することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特公昭60−42504号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載の技術には、専用のアドレス発生回路が必要になるという課題がある。また、近年、データアクセスの高速性の観点から、ディスクアレイ装置を構成するドライブにSSD(Solid State Drive)を用いることが増えている。SSDに対するパトロール診断を効率的に短時間で行う方法が求められている。
【0006】
そこでこの発明は、上述の課題を解決する制御装置、ディスクアレイ装置及びパトロール診断方法を提供することを目的としている。
【課題を解決するための手段】
【0007】
本発明の一態様によれば、記憶装置に対するパトロール診断を行う機能を有し、診断対象の記憶装置がSSDの場合、ブロック単位でパトロール診断を行う診断部と、前記記憶装置にコマンドを発行し、前記記憶装置がSSDであるかHHDであるかを示す前記記憶装置のタイプ、識別情報、容量を取得し、前記タイプがSSDの場合、さらに前記SSDを構成するブロックのブロックサイズを取得するコマンドを発行して前記ブロックサイズの情報を取得する構成情報取得部と、前記記憶装置の識別情報と、前記タイプと、前記タイプがSSDの場合に当該SSDのブロックサイズの情報と、前記容量と、診断対象のアドレスとを対応付けて記憶するドライブ情報記憶テーブルと、前記SSDの識別情報と前記ブロックサイズとを対応付けて記憶する製品識別コードテーブルと、前記ドライブ情報記憶テーブルに前記識別情報と前記ブロックサイズと前記容量とを登録する制御部と、を備え、前記制御部は、前記構成情報取得部が取得した前記識別情報、前記ブロックサイズおよび前記容量と、所定の前記診断対象のアドレスと、を前記ドライブ情報記憶テーブルに登録し、前記構成情報取得部によって前記ブロックサイズが取得できなかった場合、前記構成情報取得部が取得した前記識別情報に基づいて前記製品識別コードテーブルを参照し、当該識別情報に対応する前記ブロックサイズを取得して、前記構成情報取得部が取得した前記識別情報と前記容量とともに、取得した前記ブロックサイズを前記ドライブ情報記憶テーブルに登録し、前記診断部は、診断対象の前記記憶装置がSSDの場合、診断対象の前記記憶装置の前記識別情報に対応する前記ブロックサイズを前記ドライブ情報記憶テーブルから読み出し、当該ブロックサイズに基づいて、ブロック単位で前記SSDのパトロール診断を行う制御装置である。
【0008】
また、本発明の一態様によれば、複数の記憶装置と、上記の制御装置とを備えるディスクアレイ装置である。
【0009】
また、本発明の他の一態様によれば、記憶装置に対するパトロール診断を行う機能を有する制御装置によって実行されるパトロール診断方法であって、前記記憶装置にコマンドを発行し、前記記憶装置がSSDであるかHHDであるかを示す前記記憶装置のタイプ、識別情報、容量を取得し、前記タイプがSSDの場合、さらに前記SSDを構成するブロックのブロックサイズを取得するコマンドを発行して前記ブロックサイズの情報を取得するステップと、前記記憶装置の識別情報と、前記タイプと、前記タイプがSSDの場合に当該SSDのブロックサイズの情報と、前記容量と、診断対象のアドレスとを対応付けて記憶するドライブ情報記憶テーブルに、前記取得するステップで取得した前記識別情報、前記ブロックサイズおよび前記容量と、所定の前記診断対象のアドレスとを登録するステップと、前記取得するステップによって前記ブロックサイズが取得できなかった場合、前記取得するステップで取得した前記識別情報に基づいて、前記SSDの識別情報と前記ブロックサイズとを対応付けて記憶する製品識別コードテーブルを参照し、当該識別情報に対応する前記ブロックサイズを取得して、前記取得するステップで取得した前記識別情報と前記容量とともに、取得した前記ブロックサイズを前記ドライブ情報記憶テーブルに登録するステップと、診断対象の前記記憶装置がSSDの場合、診断対象の前記記憶装置の前記識別情報に対応する前記ブロックサイズを前記ドライブ情報記憶テーブルから読み出し、当該ブロックサイズに基づいて、ブロック単位で前記SSDのパトロール診断を行うステップと、を有するパトロール診断方法である。
【発明の効果】
【0010】
本発明によれば、SSDに対するパトロール診断の実行時間を短縮し、早期に故障を検出することができる。
【図面の簡単な説明】
【0011】
図1】本発明の一実施形態に係る情報処理システムの概略図である。
図2】本発明の一実施形態によるドライブ情報記憶テーブルの一例を示す図である。
図3】本発明の一実施形態によるSSD製品識別コードテーブルの一例を示す図である。
図4】本発明の一実施形態によるドライブ構成情報の登録処理の一例を示すフローチャートである。
図5】本発明の一実施形態によるパトロール診断処理の一例を示すフローチャートである。
図6】SSDへのアクセスを説明する第1の図である。
図7】SSDへのアクセスを説明する第2の図である。
図8】本発明の一実施形態における制御装置の最小構成を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の一実施形態に係るRAID(Redundant Array of Inexpensive Disks)を構成する各ドライブへのパトロール診断について図面を参照して説明する。
図1は、本発明の一実施形態に係る情報処理システムの概略図である。
図示するように情報処理システム100は、ホスト装置1a,1b,〜1m、ディスクアレイ装置1と、ドライブ群40とを含む。ホスト装置1a〜1mは、ディスクアレイ装置1と接続されている。ディスクアレイ装置1は、ドライブ群40と接続されている。ディスクアレイ装置1に接続されるホスト装置は1台であってもよい。ドライブ群40は、複数のドライブ#0〜#nを含む。複数のドライブ#0〜#nは、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置である。ドライブ#0〜#nは、RAIDによる冗長化構成とされている。なお、ドライブ#0〜#nは、ディスクアレイ装置1の内部に搭載されていてもよい。
【0013】
ホスト装置1a〜1mは、CPU(central processing unit)等のプロセッサを備えたコンピュータである。ホスト装置1a〜1mでは、CPUによりOS(operating system)が稼働している。OSは、ディスクアレイ装置1が管理する論理ボリュームを対象とするIO命令をディスクアレイ装置1へ出力する。
【0014】
ディスクアレイ装置1は、ドライブ群40のドライブ#0〜#nによってRAIDを構成して管理している。また、ディスクアレイ装置1は、ホスト装置1a等によるIO命令に従い、論理ボリュームに対応するドライブへの書き込みや、ドライブからの読み出しを行う。ディスクアレイ装置1は、ホスト制御部10と、キャッシュメモリ20と、ドライブ制御部30とを備えている。ホスト制御部10は、ホスト装置1a〜1mから受信したコマンドを解析して実行する。キャッシュメモリ20は、種々の情報を記憶する。例えば、キャッシュメモリ20は、ドライブ群40のドライブの構成情報を記憶する構成情報記憶領域21と、ホスト装置1a〜1mとの間で送受信するデータを格納するデータキャッシュ領域24を備えている。構成情報記憶領域21には、ドライブ情報記憶テーブル22と、SSD製品識別コードテーブル23とが格納される。これらのテーブルについては後述する。
【0015】
ドライブ制御部30は、ドライブ群40を制御する。ドライブ制御部30は、コマンド発行部31と、診断部33とを備える。コマンド発行部31は、ドライブ群40に含まれる各ドライブへコマンドを発行する。例えば、コマンド発行部31は、パトロール診断時に、診断対象のアドレスへリードコマンドまたはベリファイコマンドを発行する。また、コマンド発行部31は、SSD情報取得インターフェース32を備える。SSD情報取得インターフェース32は、SSDに対してNANDチップの構成情報を取得するコマンドを発行する。診断部33は、ドライブ群40の各ドライブに対するパトロール診断を行う。パトロール診断とは、HDDやSDDに故障が生じていないかどうかを検査する処理である。診断部33は、検査すべきアドレスを決定し、そのアドレスに対して、コマンド発行部31を介してリードコマンド等を発行する。診断部33は、リードコマンドに対する応答を確認し、例えば、コマンドに対する応答があれば当該アドレスは正常で、応答が無ければ当該アドレスは故障していると判定する。診断部33は、ドライブがSSDの場合に、ブロック単位でパトロール診断を行う機能を有している。
【0016】
ここで、図6図7を用いてSSDに対するパトロール診断について説明する。
図6図7は、それぞれ、SSDへのアクセスを説明する第1の図、第2の図である。
SSDは、NANDチップと呼ばれるフラッシュメモリで構成された記憶素子を複数備えた記憶装置である。図示するように、記憶領域は、複数のブロックで構成されている。1ブロックの容量は、512KBや1MBである。また、各ブロックは、複数のセルによって構成されている。SSDでは、一度書き込んだデータについては、セル単位ではなく、ブロック単位で書き込みを行う。例えば、図6の例では、LBA(Logical Block Addressing)1000〜1400のアドレスがブロック0と対応付けられている。そして、ホスト装置1a等が、LBA1000〜1400の何れかのアドレスに書き込んだデータを更新等するときには、当該データが格納されたセルではなく、ブロック0全体のデータを書き換える。
【0017】
また、一つのセルが劣化して読み書きができなくなった場合、通常は、SSDのコントローラがチップ内に持っている誤り訂正符号と別のセルのデータを用いて、読み出せなくなったデータを生成し、ブロック単位で別のブロックにデータをコピーして復旧する。しかし、ブロック内で複数のセルが劣化した場合、誤り訂正符号でも復旧できなくなる。すると、ブロック単位で読み書きができなくなり、同じブロック内の劣化していないセルに格納されたデータの読み書きもできなくなる。従って、ブロック内の任意のアドレスに対してデータを読み取れるかどうかをチェックすれば、ブロック内の別のアドレスに対してもチェックを実施したことになる。つまり、パトロール診断の対象ドライブがSSDの場合、複数セルの劣化による復旧不能な故障は、ブロック内の任意のアドレスに対するチェックの実施により検出可能である。本実施形態では、この性質を利用して、診断部33が、SSDに対してブロック単位でパトロール診断を行う。これにより、1アドレスずつ全アドレスを対象として診断を行う処理と比べ、パトロール診断の実行時間を短縮化することができる。例えば、図6の構成例であれば、ブロック0〜ブロックnの各々に対し1回ずつ診断(ベリファイコマンド等を発行し、その応答を確認)すれば、診断部33は、LBA1000〜1400の範囲のアドレスが正常か異常かを診断することができる。
なお、ブロック単位での診断とは、各ブロックにつき1アドレスを対象とする診断を行い、それを全ブロック分繰り返すということである。
【0018】
ところで、SSDのブロックのサイズは、NANDチップの容量や数に依存するため、SSDの製品や世代によって異なる。ブロック単位での診断を行うためには、診断対象SSDのブロックサイズの情報が必要である。そこで、コマンド発行部31は、例えば、ドライブが接続されたときにINQUIRYコマンドを発行し、ドライブの製品識別コード、タイプ(HDDまたはSSD)、容量などの情報を取得する。また、タイプがSSDの場合、コマンド発行部31は、SSD情報取得インターフェース32を介して、SSDからNANDチップのブロックサイズの情報を取得し、キャッシュメモリ20の構成情報記憶領域21が記憶するドライブ情報記憶テーブル22に記録する。診断部33は、ドライブ情報記憶テーブル22に記録されたブロックサイズの情報を用いて、SSDに対するブロック単位のパトロール診断を実行する。
【0019】
また、SSD情報取得インターフェース32を介して、ブロックサイズの情報が取得できない場合、診断部33は、キャッシュメモリ20の構成情報記憶領域21が記憶するSSD製品識別コードテーブル23を参照して、INQUIRYコマンドにより得たSSDドライブの製品識別コードに対応するブロックサイズの情報を取得する。診断部33は、SSD製品識別コードテーブル23から読み出したブロックサイズの情報を用いて、SSDに対するブロック単位のパトロール診断を実行する。
【0020】
次にドライブ情報記憶テーブル22、SSD製品識別コードテーブル23について説明する。
図2は、本発明の一実施形態によるドライブ情報記憶テーブルの一例を示す図である。
図2に示すようにドライブ情報記憶テーブル22には、ドライブごとに「製品識別コード」、「タイプ」、「容量」、「パトロール診断アドレス」、「NANDブロックサイズ」の各情報を格納するフィールドが設けられている。例えば、図2の例では、ドライブ#1の製品識別コードは「HDD80008」、タイプは「HDD」、容量は「8TB」、パトロール診断アドレスは「40000セクタ」、NANDブロックサイズは「無効」である。同様にドライブ#2の製品識別コードは「SSD16000A」、タイプは「SSD」、容量は「16TB」、パトロール診断アドレスは「10000セクタ」、NANDブロックサイズは「512KB」である。
【0021】
コマンド発行部31は、ドライブ#1が接続されたときにINQUIRYコマンドをドライブ#1へ発行し、製品識別コード(「HDD80008」)、ドライブタイプの情報(「HDD」)、ドライブ容量の情報(「8TB」)を取得し、取得した情報をドライブ#1に対応付けてドライブ情報記憶テーブル22へ登録する。ドライブタイプが「HDD」の場合、「NANDブロックサイズ」フィールドには「無効」を登録する。また、「パトロール診断アドレス」フィールドには「0」を登録する。そして、パトロール診断を実行したときに、診断部33が、次に診断すべきアドレスの値を「パトロール診断アドレス」フィールドに登録する。接続されたドライブがSSDの場合も同様に、コマンド発行部31は、INQUIRYコマンドの発行により取得した情報をそのドライブと対応付けてドライブ情報記憶テーブル22に格納する。SSDの場合、図2のドライブ#2、#3に例示するように「NANDブロックサイズ」フィールドに、SSDへの書き込み単位であるブロックのサイズが登録される。このとき、接続されたSSDが、SSD情報取得インターフェース32に対応するSSDであれば、コマンド発行部31は、INQUIRYコマンドの発行により、ブロックサイズを取得することができる。しかし、接続されたSSDが、SSD情報取得インターフェース32に対応するSSDでは無い場合、INQUIRYコマンドの発行により、ブロックサイズを取得することができない可能性がある。このような場合、ドライブ制御部30は、INQUIRYコマンドの発行によって取得した製品識別コード(SSDのProduct Identification情報など)に基づいて、次に説明するSSD製品識別コードテーブル23を参照し、製品識別コードに対応するブロックサイズの情報を取得する。そして、ドライブ制御部30は、SSD製品識別コードテーブル23から取得したブロックサイズの情報を、ドライブ情報記憶テーブル22の「NANDブロックサイズ」フィールドに登録する。
【0022】
そして、診断部33は、ドライブの接続時にドライブ情報記憶テーブル22に格納された情報を用いて、パトロール診断を実行する。例えば、ドライブがHDDの場合、診断部33は、ドライブ情報記憶テーブル22を参照して、診断対象のドライブの「パトロール診断アドレス」フィールドからアドレスの値を取得し、当該アドレスに対して診断を行う。診断後、診断部33は、「パトロール診断アドレス」フィールドの値に診断したセクタサイズを加算する。加算後の値は、次回の診断アドレスを示す。
【0023】
ドライブがSSDの場合も同様に、診断部33は、ドライブ情報記憶テーブル22を参照して診断対象のドライブの「パトロール診断アドレス」フィールドからアドレスの値を取得し、当該アドレスに対して診断を行う。診断後、診断部33は、「パトロール診断アドレス」フィールドの値にブロックサイズの値を加算する。図2のドライブ#2であれば、今回の診断アドレス10000に512を加算する。加算後の値は、次回の次の診断対象のブロックにおける診断用の1つのアドレスを示す。
【0024】
次にSSD製品識別コードテーブル23について説明する。
図3は、本発明の一実施形態によるSSD製品識別コードテーブルの一例を示す図である。
図3に例示するように、SSD製品識別コードテーブル23には、SSDの製品識別コードとNANDブロックサイズ(SSDのブロックサイズ)とが対応付けて格納されている。これらの情報は、市場に提供されている、あるいは、提供されていた、様々な世代の様々なSSD製品についての識別情報とブロックサイズの情報が収集されて登録されたものである。SSD製品識別コードテーブル23は、予めキャッシュメモリ20の構成情報記憶領域21に格納されている。SSD製品識別コードテーブル23を参照すると、SSDの識別情報が分かっていれば、そのSSDのブロックサイズの情報を取得することができる。従って、SSDのパトロール診断を行う際に、ブロック単位での診断を行うことができる。
【0025】
次にドライブ情報記憶テーブル22へSSDのブロックサイズ等を登録する処理について説明する。
図4は、本発明の一実施形態によるドライブ構成情報の登録処理の一例を示すフローチャートである。
前提として、キャッシュメモリ20には、ドライブ情報記憶テーブル22とSSD製品識別コードテーブル23が格納されているとする。
まず、ドライブ群40に新しいドライブが挿入される。ドライブ制御部30は、このドライブの挿入を検出する(ステップS101)。ドライブ制御部30は、コマンド発行部31へドライブの構成情報の取得を指示する。すると、コマンド発行部31が、INQUIRYコマンドを、挿入が検出されたドライブへ発行する(ステップS102)。挿入が検出されたドライブは、INQUIRYコマンドに対して自ドライブの構成に関する情報を回答する。ドライブ制御部30は、回答された情報の中から、製品識別コード、ドライブのタイプ、ドライブの容量の情報を、挿入が検出されたドライブ(例えば、ドライブの挿入位置を示すスロット番号)と対応付けてドライブ情報記憶テーブル22に登録する。また、コマンド発行部31は、ドライブ情報記憶テーブル22の「パトロール診断アドレス」フィールドに「0」を登録する(ステップS103)。
【0026】
次にドライブ制御部30は、回答された情報のタイプがSSDかどうかを判定する(ステップS104)。タイプがSSDではない場合(ステップS104;No)、後述するステップS112の処理を行う。タイプがSSDの場合(ステップS104;Yes)、ドライブ制御部30は、コマンド発行部31へSSDのブロックサイズ等の取得を指示する。すると、コマンド発行部31が、SSD情報取得インターフェース32を介して、所定の一般的なSSD情報取得コマンドを、挿入が検出されたドライブへ発行する(ステップS105)。ドライブ制御部30は、このコマンドへの応答がエラー応答かどうかを判定する(ステップS106)。
【0027】
SSD情報取得コマンドに対し、エラーが応答された場合(ステップS106;Yes)、ドライブ制御部30は、先にINQUIRYコマンドによって取得したドライブの製品識別コードをドライブ情報記憶テーブル22から読み出す。ドライブ制御部30は、SSD製品識別コードテーブル23を参照し(ステップS107)、読み出した製品識別コードに一致するデータが登録されているかどうか判定する(ステップS108)。
【0028】
一致する製品識別コードが登録されている場合(ステップS108;No)、ドライブ制御部30は、製品識別コードが一致したレコードの「NANDブロックサイズ」フィールドの値を読み出して(図3)、その値を、ドライブ情報記憶テーブル22における対象となる製品識別コードが格納されたデータ(レコード)の「NANDブロックサイズ」フィールドに登録する(ステップS111)。
【0029】
一致する製品識別コードが登録されていない場合(ステップS108;Yes)、ドライブ制御部30は、ドライブ情報記憶テーブル22における対象となる製品識別コードが格納されたレコードの「NANDブロックサイズ」フィールドに「無効」を登録する(ステップS109)。
【0030】
また、SSD情報取得コマンドに対し、エラーが応答されなかった場合(ステップS106;No)、ドライブ制御部30は、SSD情報取得コマンドによって取得したブロックサイズの情報を、ドライブ情報記憶テーブル22における対象となる製品識別コードが格納されたレコードの「NANDブロックサイズ」フィールドに登録する(ステップS110)。
【0031】
以上の処理により、ドライブ制御部30は、挿入が検出されたドライブに関する構成情報のドライブ情報記憶テーブル22への登録を完了する(ステップS112)。このようにドライブの挿入時にドライブの構成情報の登録を行うので、ドライブ情報記憶テーブル22には、ドライブ群40に含まれるドライブ#0〜#nに関する構成情報がすべて登録される。特にドライブがSSDの場合、ドライブ情報記憶テーブル22には、ブロックサイズが取得できなかった場合を除き、ブロックサイズの情報が格納されている。診断部33は、このブロックサイズの情報を用いて、効率よくSSDのパトロール診断を行う。
【0032】
次に診断部33によるパトロール診断処理の流れについて説明する。
図5は、本発明の一実施形態によるパトロール診断処理の一例を示すフローチャートである。
診断部33は、例えば、所定の周期で所定回数だけドライブ#0〜#nに対するパトロール診断を行うものとする。図5のフローチャートは、そのうちの1回のパトロール診断処理を示している。例えば、診断部33は、所定の周期で、以下に説明する処理を所定回数だけ行ってもよい。
パトロール診断を行うべきタイミングが到来すると、まず、診断部33は、ドライブ情報記憶テーブル22を参照し(ステップS201)、診断アドレスを取得する(ステップS202)。具体的には、診断部33は、ドライブ情報記憶テーブル22の診断対象ドライブにおける「パトロール診断アドレス」フィールドの値を読み出す。
【0033】
次に診断部33は、診断アドレスに対する診断を実施する(ステップS203)。具体的には、診断部33は、コマンド発行部31へ、診断アドレスに対する診断用コマンドの発行を指示する。コマンド発行部31は、指示されたアドレスへリードコマンド又はベリファイコマンドを発行する。診断部33は、発行されたコマンドに対する応答を取得して、診断アドレスが故障しているかどうかを判定する。例えば、診断部33は、コマンドに対して所定時間内に応答がある場合、故障していないと判定する。また、例えば、診断部33は、所定時間内に応答が無い場合やエラーコードが返ってきた場合、当該アドレスは故障していると判定する。
【0034】
今回の診断アドレスに対する診断を終えると、診断部33は、次回診断するアドレスを決定する。まず、診断部33は、ドライブ情報記憶テーブル22を参照し、ブロックサイズの情報を取得する。具体的には、診断部33は、ドライブ情報記憶テーブル22の診断対象ドライブにおける「NANDブロックサイズ」フィールドの値を参照する。診断部33は、ブロックサイズの登録の有無を判定する(ステップS204)。ブロックサイズの登録が有る場合とは、ドライブがSSDで、且つブロックサイズを取得できた場合である。ブロックサイズの登録が無い場合とは、ドライブがHDD、又は、ドライブがSSD且つブロックサイズが取得できなかった場合である。
【0035】
(SSDでブロックサイズが判明している場合)
ブロックサイズの登録が有る場合(ステップS204;Yes)、診断部33は、ブロックサイズ(「NANDブロックサイズ」フィールドの値)をドライブ情報記憶テーブル22から、読み出して取得する(ステップS206)。診断部33は、診断アドレスをブロックアドレス分進める(ステップS207)。例えば、診断部33は、今回の診断アドレスに、取得したブロックサイズを加算する。加算後の値は、次のブロックに含まれるアドレスである。診断部33は、加算後の値で「パトロール診断アドレス」フィールドの値を更新する。更新後の値は、次回の診断対象のアドレスである。
【0036】
(HDD、又は、SSDでブロックサイズ不明の場合)
ブロックサイズの登録が無い場合(ステップS204;No)、診断部33は、診断アドレスを診断セクタ分進める(ステップS205)。例えば、診断部33は、今回の診断アドレスに、今回診断を行ったセクタ分のアドレスを加算する。例えば、1セクタ分の診断を行ったのであれば、1セクタ分進めた次セクタのアドレスを算出する。診断部33は、算出した値で「パトロール診断アドレス」フィールドの値を更新する。更新後の値は、次回の診断対象のアドレスである。
【0037】
なお、ステップS205、S207の処理で、パトロール診断アドレスがドライブ情報記憶テーブル22のドライブ容量(「容量」フィールドの値)よりも大きい値であれば、診断部33は、「パトロール診断アドレス」フィールドに「0」を格納して、次回の診断は先頭から実施する。
【0038】
以上の処理により、診断部33は、今回の診断を完了する(ステップS208)。
このように診断部33は、診断対象がSSDでブロックサイズが判明している場合、ブロック単位で診断を行うことができるので、1回当たりの診断を短時間で行うことができる。また、ブロックの代表アドレスへ1回診断処理を行うだけでよいので、SSDの全領域に渡る診断についても短時間で完了することができる。また、診断対象がSSDでブロックサイズが不明な場合や診断対象がHDDの場合でも、一般的なパトロール診断と同様に診断を行うことができるので、ドライブ群40に含まれるドライブのタイプに関わらず、パトロール診断を行うことができる。
【0039】
複数のドライブを搭載し、それらをRAID構成で管理しているディスクアレイ装置に大容量ドライブが含まれる場合、全アドレスの診断に時間を要し、診断処理の完了前に故障が発生するというリスクがある。これに対し、本実施形態によれば、ドライブにSSDが含まれている場合、当該SSDのNANDチップの構成情報を取得し、記憶する領域を設ける。そして、パトロール診断を行うときには、ブロックごとに1つのアドレスの診断だけを行う処理を各ブロックに対して行う。これにより、SSDが大容量ドライブであっても短時間で効率的に全領域に対するパトロール診断を完了することができる。従って、大容量ドライブの場合に起こりがちな全アドレスの診断に時間を要し、診断処理の完了前に故障が発生するというリスクを低減し、早期な故障検知が可能になる。
【0040】
図8は、本発明の一実施形態における制御装置の最小構成を示す図である。
図示するように制御装置200は、少なくとも診断部201を備える。
診断部201は、ドライブ(記憶装置)に対してパトロール診断を行う機能を有している。診断部201は、対象の記憶装置がSSDの場合、ブロック単位でパトロール診断を行う。例えば、SSDがブロック0〜ブロックnで構成されている場合、診断部201は、ブロック0の任意のアドレスに対して診断を行い、ブロック0が故障しているかどうかを判定する。すると診断部201は、次にブロック1の任意のアドレスに対して1回の診断を行い、故障検知を行う。以下、同様に診断部201は、ブロック2〜nに対して、それぞれのブロックを代表するアドレスを任意に選択して、各ブロックに対して1回だけ診断を行う。これにより、SSDが大容量で、且つ、多数のSSDを対象にパトロール診断を行わなければならない状況でも、ストレージの全領域について1アドレスずつ全アドレスに対して診断を行う場合と比較して大幅に診断時間を削減することができる。
図1の構成と対比すると、制御装置200はドライブ制御部30、診断部201は診断部33に相当する。
【0041】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
例えば、SSDに対する診断は、各ブロックに対して少なくとも1回(1アドレス)行えばよいが、その回数は1回に限定されない。パトロール診断の実行時間を短縮できる効果が得られる回数であればよい。例えば、各ブロックに対して2〜3回の診断を行ってもよい。また、ブロックに対する診断を行うアドレスは、必ずしも、今回診断を行ったアドレスにブロックサイズを加算した値に限定されない。例えば、今回診断を行ったアドレスにブロックサイズを加算した値から1を引いた値であってもよい。また、INQUIRYコマンドの発行によるドライブ情報記憶テーブル22へのドライブの構成情報の登録は、ドライブ挿入時に限定されない。なお、コマンド発行部31は、構成情報取得部の一例である。ドライブ#0〜#nは、記憶装置の一例である。
【符号の説明】
【0042】
100・・・情報処理システム
1a,1b,〜1m・・・ホスト装置
1・・・ディスクアレイ装置
10・・・ホスト制御部
20・・・キャッシュメモリ
21・・・構成情報記憶領域
22・・・ドライブ情報記憶テーブル
23・・・SSD製品識別コードテーブル
24・・・データキャッシュ領域
30・・・ドライブ制御部
31・・・コマンド発行部
32・・・SSD情報取得インターフェース
33、201・・・診断部
40・・・ドライブ群
200・・・制御装置
図1
図2
図3
図4
図5
図6
図7
図8