JP2018190192A - ストレージ装置およびストレージ制御プログラム - Google Patents

ストレージ装置およびストレージ制御プログラム Download PDF

Info

Publication number
JP2018190192A
JP2018190192A JP2017092229A JP2017092229A JP2018190192A JP 2018190192 A JP2018190192 A JP 2018190192A JP 2017092229 A JP2017092229 A JP 2017092229A JP 2017092229 A JP2017092229 A JP 2017092229A JP 2018190192 A JP2018190192 A JP 2018190192A
Authority
JP
Japan
Prior art keywords
data
write
cache memory
read
storage
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.)
Pending
Application number
JP2017092229A
Other languages
English (en)
Inventor
康弘 永冶
Yasuhiro Nagaya
康弘 永冶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017092229A priority Critical patent/JP2018190192A/ja
Publication of JP2018190192A publication Critical patent/JP2018190192A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ハードディスクの障害が検出されたデータを早期に復旧し、システム運用への影響を低減できる。
【解決手段】ストレージ装置10は、データの書込指示を受け付けた場合、データをハードディスク13およびキャッシュメモリ12に書き込み、ハードディスク13におけるデータの第1の書込位置11aとキャッシュメモリ12におけるデータの第2の書込位置11bとを記憶部11に格納し、書き込み後の所定のタイミングで、第1の書込位置11aと第2の書込位置11bとを記憶部11から取得し、第1の書込位置11aから読み出したデータと第2の書込位置11bから読み出したデータとが一致するか否かを判定し、第1の書込位置11aから読み出したデータと第2の書込位置11bから読み出したデータとが一致しない場合に第2の書込位置11bから読み出したデータを第1の書込位置11aに上書きする。
【選択図】図1

Description

本発明は、ストレージ装置およびストレージ制御プログラムに関する。
近年、半導体メモリの低価格化や高性能化に伴い、ストレージ装置にハードディスク(HDD;Hard Disk Drive)と半導体メモリを用いたSSD(Solid State Drive)とを搭載した階層型ストレージ装置がある。このような、半導体メモリを搭載したストレージ装置においては、半導体メモリを一時記憶用のメモリとハードディスクとの間に位置づけ、キャッシュとして使用するストレージ装置もある。
ストレージ装置においては、大量のハードディスクが搭載されており、ハードディスクが障害を発生した場合に、その障害を検出する必要がある。RAID(Redundant Arrays of Independent Disks)構成のストレージ装置において、記憶媒体の障害の有無をチェックし、記憶媒体のエラーや書き込み不良などのチェックを行う技術として、データスクラブやディスクパトロールがある。
また、ストレージ装置において、ハードディスクのヘッドの劣化などによりデータがハードディスクに正常に書き込まれないライト抜け障害を診断する技術が知られている。
特開2007−122476号公報
RAID構成のストレージ装置においては、書き込みエラーが発生したハードディスクに記憶したデータについてパリティディスクを用いて再構築し、再構築したデータを書き込みエラーが発生したハードディスクに書き込むことでデータの復旧が行われる。パリティディスクを用いたデータの復旧には時間および負荷がかかるため、ユーザがストレージ装置を使用する時間帯を避けてハードディスクの診断およびデータの復旧を実行するシステム運用が多い。
また、ストレージ装置は、記憶領域の全領域を対象として一括してハードディスクの診断および復旧を実行するため、障害が発生してから診断および復旧までに時間がかかり、ハードディスクに障害が発生した状態でシステム運用を継続する場合があった。
一側面では、本発明は、ハードディスクの障害が検出されたデータを早期に復旧し、システム運用への影響を低減できるストレージ装置を提供することを目的とする。
上記目的を達成するために、以下に示すようなストレージ装置を提供する。ストレージ装置は、記憶部と、制御部とを備える。制御部は、データの書込指示を受け付けた場合、データをハードディスクおよびキャッシュメモリに書き込み、ハードディスクにおけるデータの第1の書込位置とキャッシュメモリにおけるデータの第2の書込位置とを記憶部に格納し、書き込み後の所定のタイミングで、第1の書込位置と第2の書込位置とを記憶部から取得し、第1の書込位置から読み出したデータと第2の書込位置から読み出したデータとが一致するか否かを判定し、第1の書込位置から読み出したデータと第2の書込位置から読み出したデータとが一致しない場合に第2の書込位置から読み出したデータを第1の書込位置に上書きする。
一態様によれば、ハードディスクの障害が検出されたデータを早期に復旧し、システム運用への影響を低減できる。
第1の実施形態のストレージシステムの構成の一例を示す図である。 第2の実施形態のストレージシステムの構成の一例を示す図である。 第2の実施形態のストレージ装置のハードウェア構成の一例を示す図である。 第2の実施形態のアクセス頻度情報の一例を示す図である。 第2の実施形態のリードアフターライトキューの一例を示す図である。 第2の実施形態のデータ書き込み処理のフローチャートを示す図である。 第2の実施形態のHDDデータ書き込み処理のフローチャートを示す図である。 第2の実施形態のデータチェック処理のフローチャートを示す図である。 第2の実施形態のリードアフターライト処理のフローチャートを示す図である。 第2の実施形態の削除スキャン処理のフローチャートを示す図である。
以下、図面を参照して実施形態を詳細に説明する。
[第1の実施形態]
まず、第1の実施形態のストレージシステムについて図1を用いて説明する。図1は、第1の実施形態のストレージシステムの構成の一例を示す図である。
ストレージシステム50は、ストレージ装置10と情報処理装置20がネットワーク30を介して接続したシステムである。ストレージシステム50は、情報処理装置20が書込対象データを記憶装置に書き込む書込指示を送信し、ストレージ装置10が書込指示を受信してデータを記憶装置に書き込むシステムである。
ストレージ装置10は、複数の記憶装置を備えた情報処理装置であり、たとえば、SSDやハードディスクなどを備える。なお、ストレージ装置10は、分散している記憶装置をソフトウェアで管理したストレージ装置であるSDS(Software Defined Storage)であってもよい。
ストレージ装置10は、記憶部11と、キャッシュメモリ12と、ハードディスク13と、制御部14とを含む。記憶部11は、第1の書込位置11aと第2の書込位置11bとを記憶可能であり、たとえば、RAM(Random Access Memory)などの各種メモリである。第1の書込位置11aは、ハードディスク13における書込対象データの書き込み位置を示す情報であり、たとえば、ハードディスク13におけるデータを書き込んだアドレス情報である。第2の書込位置11bは、キャッシュメモリ12における書込対象データの書き込み位置を示す情報であり、たとえば、キャッシュメモリ12におけるデータを書き込んだアドレス情報である。
キャッシュメモリ12は、データを一時的に記憶する領域として使用する記憶装置であり、たとえば、半導体メモリを記憶媒体として用いるSSDである。SSDは、不揮発であり、ある程度の記憶容量が確保でき、ストレージ装置10の使用形態により、低負荷状態になるまでの時間や期間が長期になる場合にも、データの記憶領域として有効である。
また、キャッシュメモリ12として、RAMおよびSSDを用いることができる。ストレージ装置10において、RAMを1次キャッシュメモリとし、SSDを大容量の2次キャッシュメモリとすることで、キャッシュの能力を向上させることができる。たとえば、ストレージ装置10は、1次キャッシュメモリを介して、2次キャッシュメモリとハードディスク13にデータを書き込む。ストレージ装置10は、データの読み出しの際、1次キャッシュメモリでキャッシュヒットしない場合、2次キャッシュメモリに読み出し対象のデータが存在するか否か探索する。ストレージ装置10は、2次キャッシュメモリでキャッシュヒットしない場合、ハードディスク13からデータを読み出す。ストレージ装置10は、大容量の2次キャッシュメモリを備えることで、2次キャッシュメモリにおけるキャッシュヒット率を向上でき、ハードディスク13に対するアクセスを減らすことで読み出し性能を向上できる。また、ストレージ装置10は、大容量の2次キャッシュメモリに記憶されたデータを、リードアフターライトの書き込みデータとしても利用できる。
ハードディスク13は、データを長期的に格納する記憶装置である。キャッシュメモリ12およびハードディスク13は、それぞれRAID構成をとることができる。
制御部14は、書き込み対象のデータをハードディスク13に書き込む書込指示を受け、データをキャッシュメモリ12とハードディスク13に書き込む。制御部14は、書込受付制御14aと、データ判定書込制御14bとを行う。書込受付制御14aは、ハードディスク13への書込指示を受け付けた場合、書込指示の対象となるデータをハードディスク13およびキャッシュメモリ12に書き込む制御である。データ判定書込制御14bは、キャッシュメモリ12に書き込んだデータとハードディスク13に書き込んだデータとが一致するか否かを判定し、データが不一致である場合にキャッシュメモリ12のデータをハードディスク13に書き込む制御である。制御部14は、ストレージ制御プログラムを実行することにより、これらの制御を実現する。
情報処理装置20は、ストレージ装置10に対してデータの書込指示を送信するコンピュータである。
ここで、ストレージ装置10が書込対象データを書き込む処理について説明する。制御部14は、情報処理装置20からデータを書き込む書込指示を受け付けた場合、データをハードディスク13およびキャッシュメモリ12に書き込む(書込受付制御14a)。制御部14は、ハードディスク13におけるデータの第1の書込位置11aとキャッシュメモリ12におけるデータの第2の書込位置11bとを記憶部11に格納する(書込受付制御14a)。
制御部14は、書き込み後の所定のタイミングで、第1の書込位置11aと第2の書込位置11bとを記憶部11から取得する(データ判定書込制御14b)。書き込み後の所定のタイミングは、所定の処理の負荷が閾値よりも低い低負荷状態の場合である。また、所定の処理の負荷は、ストレージ装置10の負荷であり、たとえば、キャッシュメモリ12に対する入出力処理の負荷、ハードディスク13に対する入出力処理の負荷、書込指示の受け付けに伴う処理の負荷のうちいずれかを含む。書込指示の受け付けに伴う負荷とは、たとえば、制御部14が情報処理装置20から受信する書込指示などのデータ入出力命令を処理する負荷である。低負荷状態とは、たとえば、キャッシュメモリ12やハードディスク13に対する単位時間あたりの入出力数や情報処理装置20に対する応答時間などが予め定めた閾値よりも低い状態である。
制御部14は、第1の書込位置11aから読み出したデータと第2の書込位置11bから読み出したデータとが一致するか否かを判定する(データ判定書込制御14b)。制御部14は、第1の書込位置11aから読み出したデータと第2の書込位置11bから読み出したデータとが一致しない場合、第2の書込位置11bから読み出したデータを第1の書込位置11aに上書きする(データ判定書込制御14b)。
このように、ストレージ装置10は、低負荷状態において、キャッシュメモリ12に書き込んだデータとハードディスク13に書き込んだデータとを比較し、不一致の場合にキャッシュメモリ12に書き込んだデータをハードディスク13に書き込む。
ストレージ装置10は、キャッシュメモリ12とハードディスク13からデータを読み出し、データを比較することでハードディスク13を診断する。ストレージ装置10は、データの書込位置を管理することで、新規に書き込んだ位置に対してハードディスク13の診断が可能となる。このため、ストレージ装置10は、ディスクパトロールなどによりハードディスク13の記憶領域の全域を定期的に診断するよりも早期にハードディスク13の障害を検出できる。
また、ストレージ装置10は、低負荷状態においてハードディスク13を診断するため、ストレージシステム50の運用に影響を与えることを低減しつつハードディスク13の診断が可能となる。ストレージ装置10は、ハードディスク13に書き込んだデータとキャッシュメモリ12に書き込んだデータとが不一致である場合に、キャッシュメモリ12から読み出したデータをハードディスク13に書き込むことでハードディスク13のデータを復旧する。
ストレージ装置10は、キャッシュメモリ12に書き込んだデータを用いてハードディスク13のデータを復旧するため、RAID構成におけるパリティディスクを使用してデータを復旧するよりも早くデータの復旧が可能となる。つまり、ストレージ装置10は、キャッシュメモリ12に保持された書き込み要求時のデータでハードディスク13の診断および復旧を行うため、パリティディスク使用時よりも診断および復旧の処理を高速に行うことができる。
また、ストレージ装置10は、記憶領域全域の診断および復旧には処理の負荷が高くなるが、書込指示の受け付け時にキャッシュメモリ12に書き込んだデータの書込位置について診断および復旧するため処理の負荷が低減できる。
また、ストレージ装置10は、書込指示を受けた順序性を維持してデータのチェック(ハードディスク13の診断および復旧)の順番を管理し、キャッシュメモリ12に書き込まれたデータのチェックを実行するまで削除せずに保持する。ストレージ装置10は、書込指示を受けた順番にデータのチェックをすることで、書込指示を受けたデータが長期間チェックされない状態を低減できる。また、ストレージ装置10は、データのチェックを実行するまでキャッシュメモリ12に書き込まれたデータを削除せずに保持することで、書込指示を受けたデータのチェック漏れを防止できる。
ストレージ装置10は、記憶装置の全ての記憶領域に対して一括してデータのチェックを実行するよりも早期に記憶装置の不良箇所を検出できる。また、ストレージ装置10は、パリティディスクを使用せず、データの書き込み要求時にキャッシュメモリ12に書き込んだデータを用いてハードディスク13に書き込んだデータのチェックをするため、データのチェックおよび復旧の処理がパリティディスク使用時よりも高速にできる。また、ストレージ装置10は、閑散時期にデータのチェックを実行することにより、ストレージシステム50の運用に与える影響を低減できる。
このように、ストレージ装置10は、ハードディスク13の障害が検出されたデータを早期に復旧し、システム運用への影響を低減できる。
[第2の実施形態]
次に、第2の実施形態としてストレージシステムについて図2を用いて説明する。図2は、第2の実施形態のストレージシステムの構成の一例を示す図である。
ストレージシステム400は、ネットワーク350を介してホスト200および管理端末300と接続するストレージ装置100を備える。なお、ストレージシステム400は、複数のストレージ装置100を備えることもできる。ストレージシステム400は、ホスト200がデータの書き込みの要求をストレージ装置100に送信し、ストレージ装置100が受信したデータを記憶装置に記憶する。
ホスト200は、ネットワーク350を介してストレージ装置100に対し、データの読み出しや書き込みを要求するコンピュータである。
管理端末300は、ネットワーク350を介してストレージ装置100の管理をするコンピュータである。
ストレージ装置100は、専用のストレージ装置であってもよいし、SDSでもよい。ストレージ装置100は、ネットワーク350を介してホスト200からデータやデータ書き込み命令を受信し、データ書き込み命令に対する応答を送信する。ストレージ装置100は、受信したデータ書き込み命令に従い受信したデータを記憶装置に記憶する。ストレージ装置100は、管理端末300から監視コマンドを受信する。また、ストレージ装置100は、状態情報やエラーメッセージなどを管理端末300に送信する。ストレージ装置100は、ホスト200からのデータ入出力(I/O)要求に応じて、ストレージ装置100が備える記憶装置に対するI/Oを制御する。ストレージ装置100およびホスト200が送受信するI/Oを要求する命令(コマンド)は、たとえばSAM(SCSI Architecture Model)、SPC(SCSI Primary Commands)、SBC(SCSI Block Commands)などで規定されている。コマンドに関する情報は、たとえばCDB(Command Description Block)に記述される。データの読み出しや書き込みに関するコマンドとして、たとえばReadコマンドや、Writeコマンドなどがある。コマンドは、読み出しや書き込みの対象とするデータが記憶されているLUN(Logical Unit Number)やLBA(Logical Block Address)、読み出しや書き込みの対象とするデータのブロック数などを含めることができる。
以上のようなシステムの構成によって、第2の実施形態の処理機能を実現できる。なお、第1の実施形態に示したストレージシステム50も図2に示したストレージシステム400と同様のシステムにより実現できる。
次に、ストレージ装置100のハードウェア構成について図3を用いて説明する。図3は、第2の実施形態のストレージ装置のハードウェア構成の一例を示す図である。
ストレージ装置100は、プロセッサ110、外部インタフェース111、RAM112、バッテリ113、ROM114、ディスク制御部115、HDD116、SSD117およびノード間インタフェース118を有する。各ユニットは、ストレージ装置100が備えるバスに接続されている。
ストレージ装置100は、プロセッサ110によって装置全体が制御されている。プロセッサ110には、バスを介してRAM112と複数の周辺機器が接続されている。プロセッサ110は、2以上のプロセッサを有するマルチコアプロセッサであってもよい。プロセッサ110は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。
外部インタフェース111は、ホスト200や管理端末300と接続するための通信インタフェースである。外部インタフェース111は、チャネルアダプタやネットワークアダプタなどの複数の通信インタフェースを備えることができる。
RAM112は、ストレージ装置100の主記憶装置として使用される。RAM112は、複数のメモリチップを搭載したものでもよく、たとえば、DIMM(Dual Inline Memory Module)でもよい。RAM112には、プロセッサ110に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時格納される。また、RAM112には、プロセッサ110による処理に必要な各種データが格納される。また、RAM112は、プロセッサ110の1次キャッシュメモリとして機能する。
バッテリ113は、RAM112のバックアップを行う電源装置である。なお、バッテリ113とRAM112との接続は一例であり、他のユニットとバッテリ113とを接続してもよい。また、バッテリ113は、ストレージ装置100の無停電電源装置として用いることもできる。
ROM(Read Only Memory)114は、プロセッサ110に読込まれるプログラムや演算に用いられるデータなどを格納する記憶装置の一例である。
ディスク制御部115は、プロセッサ110からの指示に基づき、HDD116およびSSD117に対するデータの書き込みおよび読み出しを制御する。
HDD116は、内蔵したディスク媒体に対して、磁気的にデータの書き込みおよび読み出しを行う。HDD116は、ストレージ装置100の補助記憶装置として使用される。HDD116には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。HDD116は、複数のディスク媒体を備え、RAIDグループを構成するものとする。
SSD117は、半導体メモリを記憶媒体として、データの書き込みおよび読み出しを行う。SSD117は、複数の記憶媒体を備え、RAIDグループを構成するものとする。また、SSD117は、HDD116に書き込むデータを所定期間において保存し、RAM112とHDD116との中間にあたるキャッシュとしても機能する。
たとえば、ストレージ装置100は、1次キャッシュメモリであるRAM112を介して、2次キャッシュメモリであるSSD117とHDD116にデータを書き込む。ストレージ装置100は、データの読み出しの際、1次キャッシュメモリでキャッシュヒットしない場合、2次キャッシュメモリに読み出し対象のデータが存在するか否か探索する。ストレージ装置100は、2次キャッシュメモリでキャッシュヒットしない場合、HDD116からデータを読み出す。ストレージ装置100は、大容量の2次キャッシュメモリを備えることで、2次キャッシュメモリにおけるキャッシュヒット率を向上でき、HDD116に対するアクセスを減らすことで読み出し性能を向上できる。また、ストレージ装置100は、大容量の2次キャッシュメモリに記憶されたデータを、リードアフターライトの書き込みデータとしても利用できる。
HDD116およびSSD117が備えるRAIDグループのRAIDレベルは、RAID6やRAID4などを採用することができる。
ノード間インタフェース118は、ストレージ装置100がクラスタ構成を組む場合において、他のストレージ装置と接続するインタフェースである。
なお、ストレージ装置100は、図示しない機器接続インタフェースを備えることができる。機器接続インタフェースは、ストレージ装置100に周辺機器やネットワークに接続するための通信インタフェースである。たとえば機器接続インタフェースには、図示しないメモリ装置やメモリリーダライタを接続することができる。メモリ装置は、機器接続インタフェースとの通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行う装置である。メモリカードは、たとえば、カード型の記録媒体である。また、機器接続インタフェースは、図示しない光学ドライブ装置を接続してもよい。光学ドライブ装置は、レーザ光などを利用して、光ディスクに記録されたデータの読み取りを行う。光ディスクは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
以上のようなハードウェア構成によって、ストレージ装置100の処理機能を実現することができる。
ストレージ装置100は、たとえば、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、ストレージ装置100の処理機能を実現する。ストレージ装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、ストレージ装置100に実行させるプログラムをHDD116に格納しておくことができる。プロセッサ110は、HDD116内のプログラムの少なくとも一部をRAM112にロードし、プログラムを実行する。また、ストレージ装置100に実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくことができる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ110からの制御により、HDD116にインストールされた後、実行可能となる。またプロセッサ110は、可搬型記録媒体から直接プログラムを読み出して実行することができる。
以上のようなハードウェア構成によって、第2の実施形態の処理機能を実現できる。なお、第1の実施形態に示したストレージ装置10も図3に示したストレージ装置100と同様のハードウェアにより実現できる。
次に、第2の実施形態のアクセス頻度情報について図4を用いて説明する。図4は、第2の実施形態のアクセス頻度情報の一例を示す図である。
アクセス頻度情報500は、SSD117に格納されたデータのアクセス頻度を記録した情報である。アクセス頻度情報500は、キャッシュとして用いられるSSD117からデータが格納されたブロックを削除する際にプロセッサ110によって参照される情報である。アクセス頻度情報500は、SSD117に記憶される。
アクセス頻度情報500は、SSDアドレスと、アクセスレベルと、削除非対象フラグとを含む。SSDアドレスは、データが格納された先頭ブロックのアドレスを示す識別情報である。なお、SSDアドレスは、識別情報の一例に過ぎず、RAIDグループの識別情報や、ボリュームの識別情報なども含めることができる。
アクセスレベルは、データのアクセス頻度に応じてレベル1からレベル5までに区分される。レベル1は、アクセス頻度が一番高いレベルである。また、レベル5は、アクセス頻度が一番低いレベルである。書き込み対象となるデータが記録されたSSDアドレスは、最初にレベル3に設定される。データに対してアクセスが発生した場合、アクセスレベルはレベル3からレベル2へ、さらにレベル1へと順に引き上げられる。また、SSDアドレスで示されるブロックに対してアクセスが発生しない場合、レベル3からレベル4へ、さらにレベル5へと順に引き下げられる。
ストレージ装置100は、SSD117にキャッシュとして利用可能な領域が減少してきた場合、データを削除するための処理である削除スキャン処理を実行する。また、ストレージ装置100は、削除スキャン処理の実行毎にSSDアドレスで表される各ブロックのアクセスレベルを引き下げる。たとえば、ストレージ装置100は、アクセスレベルの値「1」を「2」に、アクセスレベルの値「2」を「3」に、アクセスレベルの値「3」を「4」に、アクセスレベルの値「4」を「5」に引き下げる。ストレージ装置100は、アクセスレベルの値が「5」のSSDアドレスに格納されているデータに対してI/Oアクセスが発生しなかった場合、次の削除スキャン処理の実施時に削除非対象フラグの値が「OFF」であるSSDアドレスのデータを削除する。
削除スキャン処理は、SSD117に記憶されたデータのうちアクセス頻度の低いデータについて削除を行う処理である。具体的には、ストレージ装置100が、SSD117の空き容量が所定の残量に達したことを検知し、削除非対象フラグの値が「OFF」かつアクセスレベルの値が「5」のデータの削除を実行する処理である。削除スキャンの処理については、後で図10を用いて説明する。
なお、ストレージ装置100は、SSD117に記憶されたデータにI/Oアクセスが発生した場合に、I/Oアクセスが発生したSSDアドレスに対応するアクセスレベルの値を引き上げる。ストレージ装置100がアクセスレベルの値を引き上げる処理については、説明を省略する。
削除非対象フラグは、削除スキャン処理の実施時において削除対象のデータか否かを示す情報である。ストレージ装置100は、削除非対象フラグの値が「ON」である場合、削除スキャンが実施された際に対応するSSDアドレスに格納されているデータを削除しない。また、ストレージ装置100は、削除非対象フラグの値が「OFF」である場合、削除スキャンが実施された際にSSDアドレスに格納されているデータを削除する。なお、削除非対象フラグの値を変更する処理については、後で図7および図8を用いて説明する。
次に、第2の実施形態のリードアフターライトキューについて図5を用いて説明する。図5は、第2の実施形態のリードアフターライトキューの一例を示す図である。
リードアフターライトキュー510は、ホスト200から書き込み命令とともに受信した書き込み対象のデータが書き込まれたアドレス情報を管理する待ち行列である。リードアフターライトキュー510は、書き込み対象のデータが正常にHDD116に書き込まれたか否かを、待ち行列の順にしたがってチェックするためにプロセッサ110が用いる情報である。リードアフターライトキュー510は、RAM112に記憶される。
リードアフターライトキュー510は、キュー管理番号と、HDDアドレスと、SSDアドレスとを含む。キュー管理番号は、リードアフターライトキュー510に記憶されたアドレス情報を管理するための番号である。プロセッサ110は、キュー管理番号「1」から昇順に書き込み対象のデータが正常に書き込まれたか否かをチェックする。HDDアドレスは、書き込み対象のデータが書き込まれたHDD116のアドレスを示す識別情報である。SSDアドレスは、書き込み対象のデータが書き込まれたSSD117のアドレスを示す識別情報である。なお、HDDアドレスおよびSSDアドレスは一例であり、RAIDグループの識別情報や、ボリュームの識別情報なども含めることができる。リードアフターライトキュー510のサイズ(キュー管理番号で管理対象とする書き込み命令の数)は、RAM112の記憶容量や書き込み命令を受信する頻度などに応じてシステム管理者が定めることができる。
なお、ストレージ装置100は、原則としてFIFO(First In First Out)キューとしてリードアフターライトキュー510を制御するが、キューイングされているアドレスに対してI/Oアクセスが発生した場合、キューの順番の入れ替えをする。たとえば、ストレージ装置100は、I/Oアクセスが発生したSSDアドレスが「A00008h」である場合、キュー管理番号の値が「1」のエントリを末尾に変更し、キュー管理番号の値が「2」のエントリを「1」へ繰り上げる。
次に、第2の実施形態のデータ書き込み処理のフローチャートについて図6を用いて説明する。図6は、第2の実施形態のデータ書き込み処理のフローチャートを示す図である。
データ書き込み処理は、ストレージ装置100がホスト200から書き込み命令および書き込み対象のデータを受信し、ストレージ装置100が備える記憶装置に書き込み対象のデータを書き込む処理である。
ストレージ装置100が備える制御部(プロセッサ110)は、ホスト200から書き込み命令および書き込み対象のデータを受信し、データ書き込み処理を実行する。
[ステップS11]制御部は、ホスト200から書き込み命令および書き込み対象のデータを受信したか否かを判定する。制御部は、ホスト200からデータを受信した場合にステップS12にすすみ、データを受信しない場合にステップS11にすすむ。
[ステップS12]制御部は、RAM122に設けたキャッシュメモリにステップS11で受信した書き込み対象のデータを書き込む。
[ステップS13]制御部は、データ書き込み完了通知をホスト200に送信する。
[ステップS14]制御部は、SSD117にステップS11で受信した書き込み対象のデータを書き込む。
[ステップS15]制御部は、HDDデータ書き込み処理を実行する。HDDデータ書き込み処理は、制御部が、HDD116にデータを書き込み、アクセス頻度情報500とリードアフターライトキュー510の設定を行う処理である。
HDDデータ書き込み処理は、後で図7を用いて説明する。
[ステップS16]制御部は、ステップS12でキャッシュメモリに書き込んだデータを消去してキャッシュメモリを解放し、データ書き込み処理を終了する。
次に、第2の実施形態のHDDデータ書き込み処理のフローチャートについて図7を用いて説明する。図7は、第2の実施形態のHDDデータ書き込み処理のフローチャートを示す図である。
HDDデータ書き込み処理は、ストレージ装置100が備える制御部(プロセッサ110)が、HDD116にデータを書き込み、アクセス頻度情報とリードアフターライトキューの設定を行う処理である。HDDデータ書き込み処理は、データ書き込み処理のステップS15において制御部が実行する処理である。
[ステップS21]制御部は、HDD116にステップS11で受信した書き込み対象のデータを書き込む。
[ステップS22]制御部は、アクセス頻度情報500において、書き込み対象のデータを格納したSSD117のアドレスに対応するアクセスレベルの値を初期値に設定する。たとえば、制御部は、ステップS14でSSD117に書き込みを行ったデータのアドレスが「A00016h」である場合、アクセス頻度情報500のSSDアドレス「A00016h」に対応するアクセスレベルの値を初期値として「3」に設定する。
[ステップS23]制御部は、アクセス頻度情報500において、書き込み対象のデータを格納したSSD117のアドレスに対応する削除非対象フラグの値を「ON」に設定する。なお、削除非対象フラグの値を「ON」にする設定は、書き込みを行ったデータについて、データの診断および復旧を行う処理が未だ実行されていないため、SSD117からデータが削除されるのを防ぐ設定である。
たとえば、制御部は、ステップS14でSSD117に書き込みを行ったデータのアドレスが「A00016h」である場合、アクセス頻度情報500のSSDアドレス「A00016h」に対応する削除非対象フラグの値を「ON」に設定する。
[ステップS24]制御部は、書き込み対象のデータを格納したHDD116およびSSD117のアドレスをリードアフターライトキュー510にキューイングする。制御部は、HDD116およびSSD117のアドレスにキュー管理番号を昇順に付与し、リードアフターライトキュー510で管理する。
次に、第2の実施形態のデータチェック処理のフローチャートについて図8を用いて説明する。図8は、第2の実施形態のデータチェック処理のフローチャートを示す図である。
データチェック処理は、ストレージ装置100が備える制御部(プロセッサ110)が、リードアフターライトキューにキューイングされているデータのチェックを行う処理である。データチェック処理は、制御部がデータ書き込み処理とは独立して実行する処理である。制御部は、ストレージ装置100の負荷が所定の値よりも低い閑散時期である場合、データチェック処理を実行する。
[ステップS31]制御部は、ストレージ装置100が閑散時期であるか否かを判定する。閑散時期とは、ストレージ装置100の負荷が所定の値よりも低い状態のことである。たとえば、制御部は、プロセッサ110の使用率が所定の値よりも低い場合(たとえば、使用率10%以下である場合)、閑散時期であると判定する。また、制御部は、SSD117に対するIOPS(Input/Output Per Second)が所定の値よりも低い場合(たとえば、100IOPS以下である場合)、閑散時期であると判定する。また、制御部は、HDD116に対するI/O負荷(I/Oレスポンス、I/Oスループットなど)が所定の値よりも低い場合、閑散時期であると判定する。
なお、制御部は、負荷が所定の値よりも低い状態であるか否かの判定について、単一の指標(たとえば、プロセッサ110の使用率のみ)で判定してもよいし、複数の指標(たとえば、プロセッサ110の使用率およびIOPS)で判定してもよい。
制御部は、ストレージ装置100が閑散時期であると判定した場合にステップS32にすすみ、閑散時期でないと判定した場合にステップS31にすすむ。
[ステップS32]制御部は、リードアフターライトキュー510にキューイングされたエントリが存在するか否かを判定し、存在する場合にステップS33にすすみ、存在しない場合にステップS31にすすむ。
[ステップS33]制御部は、リードアフターライトキュー510の先頭キューの値を読み出す。具体的には、制御部は、リードアフターライトキュー510からキュー管理番号「1」、HDDアドレス「F00034h」、SSDアドレス「A00008h」、を読み出す。
[ステップS34]制御部は、リードアフターライト処理を実行する。リードアフターライト処理は、書き込みデータがHDD116に正しく記憶されているか否かをSSD117に記憶されたデータと比較することでチェックを行う処理である。リードアフターライト処理は、後で図9を用いて説明する。
制御部は、リードアフターライトキュー510でデータの書込指示を受けた順序性を維持してリードアフターライト処理(HDD116の診断および復旧)を実行する順番を管理する。制御部は、データの書込指示を受けた順番にリードアフターライト処理を実行することで、書込指示を受けたデータが長期間チェックされない状態を低減できる。
[ステップS35]制御部は、リードアフターライトキュー510の先頭キューに対応するSSDアドレスについて、アクセス頻度情報500の削除非対象フラグの値を「OFF」に設定する。言い換えると、制御部は、リードアフラーライト処理を実行したデータについて削除非対象フラグの値を「OFF」にし、SSD117から削除対象のデータに設定する。
たとえば、リードアフターライトキュー510において先頭キューは、キュー管理番号の値が「1」、HDDアドレスの値が「F00034h」、SSDアドレスの値が「A00008h」のエントリである。制御部は、アクセス頻度情報500において、SSDアドレスの値が「A00008h」のエントリについて削除非対象フラグの値を「OFF」に設定する。
[ステップS36]制御部は、リードアフターライトキュー510の先頭キューを削除する。具体的には、制御部は、リードアフターライトキュー510からキュー管理番号「1」のエントリを消去し、キュー管理番号「2」のエントリをキュー管理番号「1」に繰り上げる。
このように、制御部は、閑散時期である場合にデータをチェックしてHDD116を診断するため、診断によってストレージシステム400の運用に影響を与えることを低減することができる。
次に、第2の実施形態のリードアフターライト処理のフローチャートについて図9を用いて説明する。図9は、第2の実施形態のリードアフターライト処理のフローチャートを示す図である。
リードアフターライト処理は、書き込みデータがHDD116に正しく記憶されているか否かをSSD117に記憶されたデータと比較することでチェックを行う処理である。リードアフターライト処理は、データチェック処理のステップS34において制御部が実行する処理である。
[ステップS41]制御部は、リードアフターライトキュー510の先頭キューのHDDアドレスについてHDD116からデータを読み出す。
[ステップS42]制御部は、リードアフターライトキュー510の先頭キューのSSDアドレスについてSSD117からデータを読み出す。
[ステップS43]制御部は、ステップS41およびS42で読み出したデータが一致するか否かを判定し、一致しない場合にステップS44にすすみ、一致する場合にリードアフターライト処理を終了する。
[ステップS44]制御部は、SSD117から読み出したデータをHDD116に書き込む。
[ステップS45]制御部は、ステップS44でHDD116に書き込んだデータと、ステップS42でSSD117から読み出したデータとをチェックする。具体的には、制御部は、ステップS44でHDD116に書き込んだデータを読み出し、ステップS42でSSD117から読み出したデータと一致するか否かを判定する。制御部は、一致する場合、リードアフターライト処理を終了し、一致しない場合、管理端末300にエラーメッセージを送信する。制御部は、ステップS44でデータを書き込んだHDD116のHDDアドレスをエラーメッセージに含める。
このように、ストレージ装置100は、HDD116に対しデータの書き込みの不具合を検出した場合、SSD117から読み出したデータをHDD116に再度書き込むことができる。また、ストレージ装置100は、再度のデータ書き込みが失敗した場合、エラーメッセージを管理端末300に送信することで、データ書き込みの不具合のアドレスを管理者に報知することができる。
次に、第2の実施形態の削除スキャン処理のフローチャートについて図10を用いて説明する。図10は、第2の実施形態の削除スキャン処理のフローチャートを示す図である。
削除スキャン処理は、ストレージ装置100が備える制御部(プロセッサ110)が、SSD117に記憶されたデータのうちアクセス頻度の低いデータについて削除を行う処理である。削除スキャン処理は、制御部が、データ書き込み処理およびデータチェック処理とは独立して実行する処理である。
制御部は、SSD117の空き容量が所定値以下の場合に削除スキャン処理を実行する。
[ステップS51]制御部は、SSD117の空き容量が所定値以下であるか否かを判定する。たとえば、制御部は、SSD117の空き容量が全体の10%以下であるか否かを判定する。制御部は、SSD117の空き容量が所定値以下である場合、ステップS52にすすむ。制御部は、SSD117の空き容量が所定値以下でない場合、ステップS51にすすむ。
[ステップS52]制御部は、アクセス頻度情報500を記憶部から読み出す。
[ステップS53]制御部は、アクセスレベルの値が「5」のデータが有るか否かを判定する。制御部は、アクセスレベルの値が「5」のデータが有る場合、ステップS54にすすむ。制御部は、アクセスレベルの値が「5」のデータが無い場合、ステップS55にすすむ。
[ステップS54]制御部は、削除非対象フラグの値が「OFF」であり、アクセスレベルの値が「5」であるSSDアドレスに記憶されているデータをSSD117から削除する。言い換えると、制御部は、リードアフターライト処理を実行したデータであり、かつ、入出力のアクセスが少ないデータをSSD117から削除する。制御部は、入出力アクセスが少ないデータであっても、リードアフターライト処理を未だ実行していないデータについては削除対象のデータから除外することで、データの診断漏れが発生することを防ぐ。
つまり、制御部は、アクセス頻度情報500の削除非対象フラグを用いてリードアフターライト処理を実行したか否かを管理し、SSD117に書き込まれたデータについてリードアフターライト処理を実行するまで削除せずに保持する。制御部は、リードアフターライト処理を実行するまでSSD117に書き込まれたデータを削除せずに保持することで、書込指示を受けたデータのチェック漏れを防止できる。
[ステップS55]制御部は、アクセス頻度情報500について全てのアクセスレベルを引き下げる。具体的には、制御部は、アクセス頻度情報500について、アクセスレベルの値「1」を「2」に変更する。同様に、制御部は、アクセス頻度情報500についてアクセスレベルの値「2」を「3」に変更し、「3」を「4」に変更し、「4」を「5」に変更する。
このように、制御部は、アクセス頻度情報500を用いて、アクセス頻度の低いデータをSSD117から削除する。言い換えると、制御部は、SSD117の空き容量が所定の値よりも小さい場合、SSD117に書き込んだデータのうち入出力の頻度が所定の頻度よりも少ないデータを特定し、特定したデータをSSD117から削除する。
また、制御部は、アクセス頻度情報500を用いて、SSD117に書き込んだデータのうちリードアフターライト処理が未処理のデータを管理する。制御部は、SSD117の空き容量が所定の値よりも小さい場合、入出力の頻度が所定の頻度よりも少ないデータを特定し、特定したデータのうちリードアフターライト処理が未処理のデータを除くデータをSSD117から削除する。これにより、制御部は、SSD117の空き容量を確保するとともに、リードアフターライト処理が未処理のデータが発生することを防止することができる。
こうして、ストレージ装置100は、書き込み処理が完了したデータを所定単位(たとえば、論理ブロックアドレス(LBA)単位、書き込み処理または読み出し処理のために設定されたブロック単位やチャンク単位)で待ち行列において管理する。また、ストレージ装置100は、ストレージ装置100の負荷が少ないタイミングで、待ち行列において管理したデータを所定単位ごとにリードアフターライト処理を実行し、書き込みデータをチェックする。
これにより、ストレージ装置100は、記憶装置に対して一括してデータのチェックを実行するよりも早期に記憶装置の不良箇所を検出できる。また、ストレージ装置100は、パリティディスクを使用せず、データの書き込み要求時にSSD117に書き込んだデータを用いてHDD116に書き込んだデータのチェックをするため、データのチェックおよび復旧の処理がパリティディスク使用時よりも高速にできる。また、ストレージ装置100は、閑散時期にデータのチェックを実行することにより、ストレージシステム400の運用に与える影響を低減できる。
ストレージ装置100は、HDD116の障害が検出されたデータを早期に復旧し、ストレージシステム400の運用への影響を低減できる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ストレージ装置10,100、情報処理装置20、ホスト200、管理端末300が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハード記憶装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLDなどの電子回路で実現することもできる。
10,100 ストレージ装置
11 記憶部
11a 第1の書込位置
11b 第2の書込位置
12 キャッシュメモリ
13 ハードディスク
14 制御部
14a 書込受付制御
14b データ判定書込制御
20 情報処理装置
30,350 ネットワーク
50,400 ストレージシステム
200 ホスト
300 管理端末

Claims (7)

  1. 記憶部と、
    データの書込指示を受け付けた場合、前記データをハードディスクおよびキャッシュメモリに書き込み、
    前記ハードディスクにおける前記データの第1の書込位置と前記キャッシュメモリにおける前記データの第2の書込位置とを前記記憶部に格納し、
    書き込み後の所定のタイミングで、前記第1の書込位置と前記第2の書込位置とを前記記憶部から取得し、前記第1の書込位置から読み出したデータと前記第2の書込位置から読み出したデータとが一致するか否かを判定し、
    前記第1の書込位置から読み出したデータと前記第2の書込位置から読み出したデータとが一致しない場合に前記第2の書込位置から読み出したデータを前記第1の書込位置に上書きする、制御部と、
    を備えるストレージ装置。
  2. 前記所定のタイミングは、
    所定の処理の負荷が閾値よりも低い低負荷状態の場合である、
    請求項1記載のストレージ装置。
  3. 前記所定の処理の負荷は、
    前記ハードディスクに対する入出力処理の負荷、前記キャッシュメモリに対する入出力処理の負荷、前記書込指示の受け付けに伴う処理の負荷のうちいずれかを含む、
    請求項2記載のストレージ装置。
  4. 前記制御部は、
    前記キャッシュメモリに書き込んだ前記データのうちリードアフターライトの処理が未処理のデータを管理し、
    前記キャッシュメモリの空き容量が所定の値よりも小さい場合、前記データのうち入出力の頻度が所定の頻度よりも少ないデータを特定し、前記特定した前記データのうち前記リードアフターライトの処理が未処理のデータを除くデータを前記キャッシュメモリから削除する、
    請求項1記載のストレージ装置。
  5. 前記制御部は、
    前記第1の書込位置と前記第2の書込位置とを前記記憶部が記憶するキューに前記書込指示ごとに格納し、
    前記低負荷状態において、前記第1の書込位置と前記第2の書込位置とを前記キューから取得する、
    請求項1記載のストレージ装置。
  6. 前記ストレージ装置は、
    前記キャッシュメモリとは異なる他のキャッシュメモリを備え、
    前記他のキャッシュメモリは、前記ハードディスクおよび前記キャッシュメモリに対する前記データの書き込みの際に、前記データの一時格納領域として使用される、
    請求項1記載のストレージ装置。
  7. コンピュータに、
    データの書込指示を受け付けた場合、前記データをハードディスクおよびキャッシュメモリに書き込み、
    前記ハードディスクにおける前記データの第1の書込位置と前記キャッシュメモリにおける前記データの第2の書込位置とを記憶部に格納し、
    書き込み後の所定のタイミングで、前記第1の書込位置と前記第2の書込位置とを前記記憶部から取得し、前記第1の書込位置から読み出したデータと前記第2の書込位置から読み出したデータとが一致するか否かを判定し、
    前記第1の書込位置から読み出したデータと前記第2の書込位置から読み出したデータとが一致しない場合に前記第2の書込位置から読み出したデータを前記第1の書込位置に上書きする、
    処理を実行させるストレージ制御プログラム。
JP2017092229A 2017-05-08 2017-05-08 ストレージ装置およびストレージ制御プログラム Pending JP2018190192A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017092229A JP2018190192A (ja) 2017-05-08 2017-05-08 ストレージ装置およびストレージ制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017092229A JP2018190192A (ja) 2017-05-08 2017-05-08 ストレージ装置およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2018190192A true JP2018190192A (ja) 2018-11-29

Family

ID=64478514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017092229A Pending JP2018190192A (ja) 2017-05-08 2017-05-08 ストレージ装置およびストレージ制御プログラム

Country Status (1)

Country Link
JP (1) JP2018190192A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022168399A1 (ja) * 2021-02-05 2022-08-11 富士フイルム株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022168399A1 (ja) * 2021-02-05 2022-08-11 富士フイルム株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Similar Documents

Publication Publication Date Title
US8589724B2 (en) Rapid rebuild of a data set
US8943358B2 (en) Storage system, apparatus, and method for failure recovery during unsuccessful rebuild process
US7975168B2 (en) Storage system executing parallel correction write
US8356292B2 (en) Method for updating control program of physical storage device in storage virtualization system and storage virtualization controller and system thereof
CN102929750B (zh) 非易失性介质肮脏区段跟踪
US20130047028A1 (en) Storage system, storage control device, and storage control method
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
US20060236161A1 (en) Apparatus and method for controlling disk array with redundancy
JP2006146833A (ja) ディスク装置の整合性検査支援方法およびディスクアレイ装置の整合性検査方法
US10338844B2 (en) Storage control apparatus, control method, and non-transitory computer-readable storage medium
US10346051B2 (en) Storage media performance management
US10606490B2 (en) Storage control device and storage control method for detecting storage device in potential fault state
US9378092B2 (en) Storage control apparatus and storage control method
US10795790B2 (en) Storage control apparatus, method and non-transitory computer-readable storage medium
US8938641B2 (en) Method and apparatus for synchronizing storage volumes
US8433949B2 (en) Disk array apparatus and physical disk restoration method
JP2018190192A (ja) ストレージ装置およびストレージ制御プログラム
US20140380090A1 (en) Storage control device and storage control method
US11443826B2 (en) Storage area retirement in a storage device
JP2012174037A (ja) ディスクアレイ装置及びその制御方法
JP7288191B2 (ja) ストレージ制御装置およびストレージ制御プログラム
CN111475112A (zh) 一种提升Oracle数据库性能的装置及数据读写方法
US20230244385A1 (en) Storage apparatus and control method
US9639417B2 (en) Storage control apparatus and control method
JP5585930B2 (ja) ディスクアレイ装置、及びデータ制御方法