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

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

Info

Publication number
JP5521716B2
JP5521716B2 JP2010087890A JP2010087890A JP5521716B2 JP 5521716 B2 JP5521716 B2 JP 5521716B2 JP 2010087890 A JP2010087890 A JP 2010087890A JP 2010087890 A JP2010087890 A JP 2010087890A JP 5521716 B2 JP5521716 B2 JP 5521716B2
Authority
JP
Japan
Prior art keywords
data
access
schedule
unit
process proceeds
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010087890A
Other languages
English (en)
Other versions
JP2011221648A (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.)
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 JP2010087890A priority Critical patent/JP5521716B2/ja
Priority to US13/064,508 priority patent/US8516206B2/en
Publication of JP2011221648A publication Critical patent/JP2011221648A/ja
Application granted granted Critical
Publication of JP5521716B2 publication Critical patent/JP5521716B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置に関する。
業務の電子化や法規制等により、電子メールや資料・書類を全て電子化して保管する記憶媒体の需要が高まっている。
電子データを記憶する記憶媒体としては、即応性があり大容量のデータを記憶できるものが主流になっている。この記憶媒体としては、ハードディスク(HDD:Hard Disk Drive)等が知られている。
また、ハードディスク等に加え、記憶媒体を搭載した装置(ストレージ装置)の省電力化に向けて、書き込み速度の高速化、および、ディスクの消費電力が可能なフラッシュメモリ等の半導体記憶素子を使用したSSD(Solid State Drive)が使用されることが増えている。
ストレージ装置では、冗長性を考慮した構成をとることが知られている。冗長性を考慮した構成をとる場合、装置を制御するモジュールやディスク、SSDは少なくとも二重化された状態になる。
特開2009−163647号公報 特開2008−52313号公報
SSDに対する書き込みアクセスが高い頻度で発生すると、半導体記憶素子の構造上、ハードディスクに比べて早い期間で、書き換え可能回数の上限に達してしまう可能性がある。
なお、SSDについて説明したが、他の不揮発性半導体メモリについても同様の問題がある。
本発明はこのような点に鑑みてなされたものであり、データ管理の信頼性を高めるストレージ制御プログラム、ストレージ制御方法、および、信頼性の高いストレージ制御装置を提供することを目的とする。
上記目的を達成するために、開示のストレージ制御プログラムが提供される。このプログラムは、コンピュータに、作成手順、判断手順、および書き込み手順を実行させる。
作成手順では、ホスト装置から送信されたデータの記憶媒体への書き込みアクセス状況に応じてデータ毎のアクセス頻度を識別するアクセス頻度情報を定期的に作成する。
判断手順では、作成手順によりアクセス頻度情報が作成される度に、アクセス頻度情報に基づいて、データ退避用に設けられた退避領域に退避されたデータを記憶媒体に書き込むか、退避領域に退避させた状態を保持するかを判断する。
書き込み手順では、判断手順の判断に応じてデータを記憶媒体に書き込む。
開示のストレージ制御プログラムによれば、データ管理の信頼性を高めることができる。
第1の実施の形態のストレージ制御装置の概要を示す図である。 第2の実施の形態のストレージシステムを示すブロック図である。 ドライブエンクロージャの一例を示す図である。 ストレージ装置の機能を示すブロック図である。 アクセスカウンタを示す図である。 アクセス頻度情報を示す図である。 アクセス履歴情報を示す図である。 スケジュール管理情報を示す図である。 スケジュール調整管理情報を示す図である。 RAIDグループ情報を示す図である。 退避データ管理情報を示す図である。 退避データ管理テーブルの更新を示す具体例である。 書き込みアクセス時のデータ退避を説明する図である。 読み出しアクセス時のデータ読み出しを説明する図である。 更新処理を示す図である。 I/O制御処理を示すフローチャートである。 SSD書き込み制御処理を示すフローチャートである。 運用状態確認処理を示すフローチャートである。 アクセス監視起動処理を示すフローチャートである。 アクセス回数収集処理を示すフローチャートである。 更新処理実行確認処理を示すフローチャートである。 更新処理を示すフローチャートである。 アクセス回数履歴管理処理を示すフローチャートである。 スケジュール管理処理を示すフローチャートである。 更新スケジュール算出処理を示すフローチャートである。 更新スケジュール算出処理を示すフローチャートである。 ユーザが設定するスケジュールを示す図である。 スケジュール調整処理を示すフローチャートである。 データ毎の運用ランクを設定したスケジュール調整管理テーブルを示す図である。 履歴情報確認処理を示すフローチャートである。 履歴情報確認処理を示すフローチャートである。 SSDランク補正処理を示すフローチャートである。
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のストレージ制御装置について説明し、その後、実施の形態をより具体的に説明する。
<第1の実施の形態>
図1は、第1の実施の形態のストレージ制御装置の概要を示す図である。
ストレージ制御装置1は、ストレージ装置群2と、ホスト装置3と接続されている。ストレージ制御装置1は、ホスト装置3から受信したアクセス要求に基づいて、ストレージ装置群2へのアクセス処理を行う。
ホスト装置3は、ストレージ装置群2に記憶された情報の読み出し、または、ストレージ装置群2への情報の書き込みのアクセス要求をストレージ制御装置1に対して行う。
ストレージ装置群2は、複数のストレージ装置2a、2bを有する。
また、ストレージ装置群2では、SSDとハードディスクドライブとが混在している。本実施の形態では、ストレージ装置2aがSSDを有しており、ストレージ装置2bがハードディスクドライブを有している。
次に、ストレージ制御装置1について説明する。ストレージ制御装置1は、入出力制御部1aと、アクセス監視部1bと、アクセス制御部1cと、キャッシュ1dとを有している。
入出力制御部1aは、ホスト装置3からのアクセス要求を受信し、受信したアクセス要求に基づいて、ストレージ装置群2に記憶された情報の読み出し、または、ストレージ装置群2への情報の書き込み処理を行う。入出力制御部1aによる読み出し、または、書き込みの処理のタイミングは、アクセス監視部1bにより制御されている。
アクセス監視部1bは、入出力制御部1aを監視し、ホスト装置3からアクセス要求のあった情報が属する論理ボリュームを検出する。論理ボリュームの検出は、例えば、アクセス要求のあった書き込みデータと、その書き込みデータが属する論理ボリュームとが対応付けられたテーブルを参照することで行われる。さらに、アクセス監視部1bは、各ストレージ装置2a、2bの動作状態を監視する。
さらに、アクセス監視部1bは、アクセス要求のあった書き込みデータが属する論理ボリュームを検出すると、検出した論理ボリュームを構成するストレージ装置の集合(ストレージグループ)の動作状態を確認し、対応するストレージグループが稼動状態の場合は、入出力制御部1aに情報の読み出し、または、書き込み処理を進めさせる。
アクセス制御部1cは、作成部11cと、判断部12cと、書き込み部13cとを有している。
作成部11cは、ホスト装置3から送信されたデータのストレージ装置2a、2bへの書き込みアクセス状況に応じて、データ毎のアクセス頻度を識別するアクセス頻度情報を作成する。
アクセス頻度情報は、全てのストレージ装置2a、2bについて作成してもよいが、少なくともSSDを有するストレージ装置2aについて作成する。
アクセス頻度情報は、所定時間毎のストレージ装置へのアクセスの累積数を段階的に表したものとするのが好ましい。例えば、アクセス回数が30分に300回以上の場合のアクセス頻度情報をα、アクセス回数が30分に10回以上で300回未満の場合のアクセス頻度情報をβ、アクセス回数が10回未満の場合のアクセス頻度情報をγと設定することができる。アクセス頻度情報は、書き込みアクセス頻度の大小を判断する基準として用いる。これにより判断部12cの判断を簡易なものとすることができる。
判断部12cは、作成部11cにより作成されたアクセス頻度情報に基づいて、ストレージ装置2aを書き込み先とするデータをストレージ装置2aに書き込むか、データの退避用に設けられた退避領域に書き込むかを判断する。
なお、退避領域は、SSD以外の記憶媒体に設けることが好ましい。本実施の形態では、退避領域は、ハードディスクドライブを有するストレージ装置2bに予め設定されているものとする。
本実施の形態での判断方法としては、例えば、以下のようにすることができる。
前述したアクセス頻度情報がαである場合は、ストレージ装置に対するアクセス頻度が比較的多いものと判断し、ストレージ装置2bの空き領域、言い換えると退避領域にデータを書き込むのが好ましい。図1では、ストレージ装置2bの空き領域にデータDt1、Dt2が書き込まれた状態を図示している。これにより、SSDを有するストレージ装置2aにデータが高頻度で書き込まれ、ストレージ装置2aが早期に書き換え可能回数の上限に達してしまうことを回避することができる。これにより、データ管理の信頼性を高めることができる。
この際、データを書き込んだ領域を識別するために、キャッシュ1dにデータの書き込み箇所を識別する情報(退避データ管理情報)を書き込んでおき、入出力制御部1aが、データを読み出すときに参照し、退避したデータの書き込み箇所を特定し、特定した箇所からデータを読み出すようにするのが好ましい。これにより、データを容易に読み出すことができる。
また、前述したアクセス頻度情報がβである場合は、ストレージ装置2aへのアクセスが所定時間なかった場合には書き込み対象データをストレージ装置2aに書き込むと判断し、それ以外の場合には書き込み対象のデータをストレージ装置2bに退避するのが好ましい。
これにより、SSDを有するストレージ装置2aにデータが高頻度で書き込まれ、ストレージ装置2aが早期に書き換え可能回数の上限に達してしまうことを回避することができる。
前述したアクセス頻度情報がγである場合は、ストレージ装置に対するアクセス頻度が比較的少ないものと判断し、ストレージ装置2aにデータを書き込むのが好ましい。
書き込み部13cは、判断部12cの判断に応じて、データをストレージ装置2a、またはストレージ装置2bに書き込む。
ストレージ装置へのデータ書き込みの後、作成部11cは、アクセス頻度情報を定期的に作成する。アクセス頻度情報を作成するタイミングは、この他にも、例えば、再度、ホスト装置3からのアクセスがあった場合や、ユーザが指定した時間や、予め周期的に設定された時間等が挙げられる。
判断部12cは、作成部11cによりアクセス頻度情報が作成される度に、ストレージ装置2bに退避されたデータDt1、Dt2をストレージ装置2aに書き込むか、ストレージ装置2bに退避させた状態を保持するかを判断する。この判断は、データ単位で行ってもよいし、ストレージ装置単位で行ってもよい。例えば、ストレージ装置2bに退避した、アクセス頻度情報がβであるデータへのアクセスが半日ない場合には、ストレージ装置2bに退避したデータをストレージ装置2aに書き込む。また、他の例として、ストレージ装置2aへのアクセスが半日ない場合には、ストレージ装置2bに退避したデータをストレージ装置2aに書き込む。
図1では、前回アクセス頻度情報がαであると判断された、ストレージ装置2bに退避されたデータDt1について、作成部11cが再度作成したアクセス頻度情報がγである場合の処理を示している。この場合、ストレージ装置2bに退避されたデータDt1をストレージ装置2aに書き込むと判断する。書き込み部13cは、ストレージ装置2bに退避しているデータDt1をストレージ装置2aに書き込む。
また、図1では、前回アクセス頻度情報がαであると判断された、ストレージ装置2bに退避されたデータDt2について、作成部11cが再度作成したアクセス頻度情報がαである場合の処理を示している。この場合、データDt2をストレージ装置2bに退避させた状態を保持すると判断する。この場合、データDt2のデータ更新は、ストレージ装置2bで行われる。
本実施の形態のストレージ制御装置1によれば、作成部11cがSSDを有するストレージ装置2aに対するアクセス頻度情報を定期的に作成し、アクセス頻度情報が作成される度に、データをストレージ装置2aに書き込むか、ストレージ装置2bに退避した状態を保持するかを判断部12cが判断するようにした。具体的には、ストレージ装置2aに対するアクセス頻度が高い場合は、データをストレージ装置2bに退避する状態を保持し、ストレージ装置2aに対するアクセス頻度が低い場合は、データをストレージ装置2aに書き込むようにした。
このように、ストレージ装置2aにデータを書き込む回数を制御することにより、SSDが、早期に、書き換え可能回数の上限に達してしまうことを抑制することができる。また、アクセス頻度が低いデータをSSDに格納しておくことで、読み出しアクセス性能を向上させることができる。従って、信頼性の高い装置を実現することができる。
なお、入出力制御部1a、アクセス監視部1b、アクセス制御部1cは、ストレージ制御装置1が有するCPU(Central Processing Unit)が備える機能により実現することができる。また、キャッシュ1dは、ストレージ制御装置1が有するRAM(Random Access Memory)等が備えるデータ記憶領域により実現することができる。
また、本実施の形態では、データの書き込みを退避する記憶媒体としてSSDを有するストレージ装置2aを挙げた。しかし、データの書き込みを退避する記憶媒体は、これに限らず、例えば、書き込み回数の回数制限がハードディスクより少ない他の記憶媒体を用いることもできる。
次に、ストレージ制御装置1が有する機能を、RAID(Redundant Arrays of Inexpensive Disks)を構成するストレージ群を有するストレージシステムに適用した実施の形態を、第2の実施の形態として説明する。
<第2の実施の形態>
図2は、第2の実施の形態のストレージシステムを示すブロック図である。
ストレージシステム100は、ホストコンピュータ(以下、単に「ホスト」と言う)30と、ディスクの動作制御を行う制御モジュールである制御モジュール(CM:Controller Module)10a、10b、10cと、ストレージ装置群を実装するドライブエンクロージャ(DE:Drive Enclosure)20a、20b、20c、20dとを有する。
ストレージシステム100は、RAIDを構成するドライブエンクロージャ20a、20b、20c、20dと、ホスト30とが、制御モジュール(CM:Control Module)10a、10b、10cを介して接続されている。
ストレージシステム100は、運用に使用する制御モジュールを2以上有することで、冗長性が確保されている。
制御モジュール10a、10b、10cは、コントローラエンクロージャ(CE:Controller Enclosure)18内に実装されている。各制御モジュール10a、10b、10cは、それぞれストレージ制御装置として機能する。
なお、図2では、1つのホスト30を図示しているが、複数のホストが、コントローラエンクロージャ18に接続されていてもよい。
制御モジュール10a、10b、10cは、それぞれ、アクセス指示情報としてI/Oコマンドをドライブエンクロージャ20a、20b、20c、20dに送信し、ストレージ装置の記憶領域に対するデータの入出力指令を行う。また、入出力指令からアクセス監視時間が経過しても応答が得られないときは、このI/O処理を中断するアボート指示コマンドをドライブエンクロージャ20a、20b、20c、20dに送信する。
ドライブエンクロージャ20a、20b、20c、20dに実装されるストレージ装置群は、冗長性を考慮したRAID構成を有する。
これらドライブエンクロージャ20a、20b、20c、20dにて構成されるRAIDグループは、複数のハードディスクドライブ、または、複数のSSDのいずれかで構成される。
ここで、制御モジュール10aは、CPU(Central Processing Unit)11と、CPU12とによって装置全体が制御されている。なお、図2中、制御モジュール10aの「CPU0」は、CPU11を識別する名称であり、「CPU1」は、CPU12を識別する名称である。
CPU11、および、CPU12には、内部バスを介してメモリ13、チャネルアダプタ(CA:Channel Adapter)14、および、デバイスアダプタ(DA:Device Adapter)15が接続されている。
メモリ13には、CPU11およびCPU12に実行させるプログラムの少なくとも一部が一時的に格納される。また、メモリ13は、CPU11およびCPU12の共有のメモリであり、CPU11およびCPU12による処理に必要な各種データが格納される。
チャネルアダプタ14は、ファイバチャネル(FC:Fibre Channel)スイッチ31に接続され、ファイバチャネルスイッチ31を介してホスト30のチャネルCH1、CH2、CH3、CH4に接続される。この経路を介して、ホスト30と、CPU11およびCPU12との間でデータの送受信が行われる。
デバイスアダプタ15は、外部のドライブエンクロージャ20a、20b、20c、20dに接続される。CPU11およびCPU12は、デバイスアダプタ15を介して外部のドライブエンクロージャ20a、20b、20c、20dとの間でデータの送受信を行う。
なお、制御モジュール10b、10cのハードウェア構成も、制御モジュール10aと同様である。このようなハードウェア構成によって、制御モジュール10a、10b、10cの処理機能を実現することができる。
図3は、ドライブエンクロージャの一例を示す図である。
ドライブエンクロージャ20aは、複数のストレージ装置211a、211b、211c、211d、211e、211f、211g、211hと、各ストレージ装置211a〜211hにそれぞれ電源経路221a、221bを介して電源を供給する複数の電源供給部(PSU:Power Supply Unit)231a、231bとを有する。さらに、ドライブエンクロージャ20aは、各ストレージ装置211a〜211hとそれぞれ入出力経路222a、222bを介して接続された複数のデバイス監視部(PBC:Port Bypass Circuit)230a、230bを有する。
各ストレージ装置211a〜211hには、電源供給部231a、231bの両方から電力が供給される。
これら、各ストレージ装置211a〜211hには、ハードディスクとSSDとが混在して用いられている。
電源供給部231a、231bは、それぞれが、ドライブエンクロージャ20aが備える全てのストレージ装置211a〜211hを同時に稼動し、また、全てのストレージ装置211a〜211hのうち所定の数のストレージ装置を同時に起動するのに充分な電力を供給する能力を備えている。
このように、電源供給部231a、231bが冗長化された構成であるため、一方の電源供給部が故障したとしても、ストレージ装置211a〜211hへの電力の供給の停止を抑制することができる。
デバイス監視部230a、230bは、各制御モジュール10a〜10cの指示に基づいて、各ストレージ装置211a〜211hに記憶される情報を読み出したり、書き込んだりする。
さらに、デバイス監視部230a、230bは、各ストレージ装置211a〜211hを監視し、各ストレージ装置211a〜211hの動作状態(稼動、起動、停止)を検出する。ここで、稼動とは、起動後の安定した状態を指し、この稼動状態においてデータの書き込み、または、読み出し処理が行われる。
さらに、デバイス監視部230a、230bは、各電源供給部231a、231bを監視し、各電源供給部231a、231bの動作モードの検出及び故障検出を行う。さらに、デバイス監視部230a、230bは、電源供給部231a、231bが供給可能な最大電力量と、電源供給部231a、231bの現在の電力使用量とを検出する。
なお、他のドライブエンクロージャ20b〜20dも、ドライブエンクロージャ20aと同様の構造を備えている。
このようなドライブエンクロージャ20b〜20dで構成されるドライブエンクロージャ群20は、各ドライブエンクロージャ20b〜20dが備えるストレージ装置のうちの複数のストレージ装置に、例えばユーザ情報等の情報を分割して記憶し、またはそれぞれ同じ情報を記憶するRAID構造を備える。
そして、ドライブエンクロージャ群20は、各ドライブエンクロージャ20a〜20dが備えるストレージのうち、1つ、または複数のストレージによりそれぞれ構成された複数のRAIDグループを有する。ここで、ドライブエンクロージャ群20では、各RAIDグループに論理ボリュームが設定されている。なお、ここでは、RAIDグループと論理ボリュームとは一致するが、これに限らず、1つの論理ボリュームが複数のRAIDグループに対して設けられていてもよく、1つのRAIDグループに対して複数の論理ボリュームが設けられていてもよい。また、図2、図3ではドライブエンクロージャ20a〜20dは、8つのストレージ装置211a〜211hを有するが、これに限らず、任意の個数のストレージを有してもよい。
図4は、ストレージ装置の機能を示すブロック図である。
以下、制御モジュール10aの機能を説明するが、制御モジュール10b、10cも制御モジュール10aと同様の機能を有している。
制御モジュール10aは、I/O制御部111と、システム制御部112と、装置監視部113と、アクセス情報収集部114と、制御部115と、アクセス情報格納部116と、スケジュール格納部117と、RAIDグループ情報格納部118とを有している。
I/O制御部111は、ホスト30からのI/O要求を処理する。具体的には、I/O制御部111はドライブエンクロージャ20a、20b、20c、20dに対するデータの書き込み処理や読み出し処理を制御する。
システム制御部112は、装置全体を制御するものであり、例えば各装置の電源制御を行う。
装置監視部113は、ストレージ装置内の各装置の状態を監視する。ここで「各装置の状態」としては、例えば、各装置の稼働状態や、電源状態等が挙げられる。
アクセス情報収集部114は、ホスト30からの処理要求に基づいて、ホスト30によるドライブエンクロージャ20a〜20dに対するデータのアクセス回数の収集を制御するものであり、アクセス回数を計数するアクセスカウンタ114aを備えている。
なお、アクセス情報収集部114は、I/O制御部111と協働して、ホスト30からのデータ毎のアクセス回数を収集する。
制御部115は、ホスト30からのアクセス回数を記憶・管理する。この制御部115は、SSD書き込み制御部115aと、アクセス監視・履歴管理部115bと、スケジュール管理・変更部115cと、スケジュール調整部115dとを有している。
SSD書き込み制御部115aは、ストレージ装置へのアクセス状況やアクセススケジュールから、SSDに対する書き込みアクセス処理の実行や、SSDとは別個の記憶媒体へのデータの退避要否を判断し、判断した処理を実行する。また、SSD書き込み制御部115aは、一定期間内にスケジュールの更新処理がない場合のSSDに対する書き込み制御判定や、一定期間内にスケジュールの更新処理が実行される可能性がある場合のデータを退避した記憶媒体の管理・制御を実施する。
このSSD書き込み制御部115aは、図1の判断部12c、および、書き込み部13cに対応している。
アクセス監視・履歴管理部115bは、ストレージ装置への各データのアクセス状況を日時単位で監視する。具体的には、アクセス監視・履歴管理部115bは、アクセス情報収集部114によって取得されたアクセス回数をデータ毎、かつ、所定時間毎にまとめたアクセス頻度情報を作成する。そしてアクセス監視・履歴管理部115bは、作成したアクセス頻度情報を、アクセス情報格納部116に格納する。
また、アクセス監視・履歴管理部115bは、アクセス頻度情報に基づいて、データ毎のデータ書き込みの判断基準を段階的に示す情報を作成する。なお、この情報もアクセス頻度を示す情報であるが、以下では、説明の便宜上、「アクセス履歴情報」と言う。アクセス監視・履歴管理部115bは、作成したアクセス履歴情報をアクセス情報格納部116に格納する。
このアクセス監視・履歴管理部115bは、図1の作成部11cに対応している。
スケジュール管理・変更部115cは、アクセス履歴情報に基づいて作成されるSSDを構成するRAIDグループにデータを書き込むスケジュールを管理する。このスケジュールは、SSDへデータを書き込む時間か否かの判断を行う基準となるものである。また、必要に応じてスケジュールを変更する。
具体的には、スケジュール管理・変更部115cは、アクセス監視・履歴管理部115bが作成したアクセス履歴情報に基づいて、更新用の運用ランクを作成する。そして、作成した更新用の運用ランクに基づいて、当日のSSDを構成するRAIDグループにデータを書き込むスケジュールを作成する。
また、スケジュール管理・変更部115cは、既にスケジュールが作成されている場合は、作成済みの現在のスケジュールと今回作成された当日のスケジュールとを照合し、スケジュールを最適化し、更新用のスケジュールを作成する。作成したスケジュールは、スケジュール格納部117に格納する。なお、最適化の方法については、後に詳述する。
なお、スケジュール管理・変更部115cは、更新用のスケジュールを、アクセス履歴等(例えば、直前の所定期間分のアクセス履歴)に基づいて作成するようにしてもよい。
さらに、スケジュール管理・変更部115cは、過去のSSDを構成するRAIDグループに対するアクセス履歴やユーザが設定したスケジュールに基づいて、更新用のスケジュールを調整するようにしてもよい。なお、スケジュールの調整方法については、後述する。
例えば、スケジュール管理・変更部115cは、更新用のスケジュールを新たに作成する日が2009年11月1日の日曜日であれば、過去数か月分の毎月1日のアクセス履歴情報や、過去数ヵ月分の毎月第1週の日曜日のアクセス履歴情報や、過去の金曜日のアクセス履歴情報や、前年の6月1日のアクセス履歴情報等により、最近収集したアクセス履歴情報に基づいて作成した更新用のスケジュールを変更することもできる。
スケジュール調整部115dは、スケジュール管理・変更部115cにより作成されたスケジュールと、現在運用しているスケジュールとに基づいて、スケジュール管理・変更部115cが最適化したスケジュールを一定時間間隔で更新する。スケジュールの更新にあたっては、ユーザが作成したスケジュールを優先させることができる。
アクセス情報格納部116には、データの書き込みアクセス数が、データ毎、かつSSD毎に格納される。アクセス情報格納部116にはまた、対象SSDにおけるデータ毎の読み出しアクセス数、対象SSDにおけるデータ毎の書き込みアクセス頻度が格納される。
また、アクセス情報格納部116には、当日以外のアクセス履歴情報も格納される。
スケジュール格納部117には、スケジュールを管理する種々の情報が格納される。
RAIDグループ情報格納部118には、データの最終書き込みアクセス時間が、データ毎、かつ、SSD毎に格納される。RAIDグループ情報格納部118にはまた、SSD毎のデータの別領域への退避データ管理情報が、データ毎に格納される。なお、退避データ管理情報には、退避先、退避元等が含まれる。
退避先に指定する領域は、不揮発媒体であるハードディスクを有するRAIDグループや、Thin Provisioning Pool等の仮想ボリューム等が挙げられる。なお、以下の説明では、退避先に指定された領域を「プール領域」と言う。
なお、I/O制御部111、システム制御部112、装置監視部113、アクセス情報収集部114、および、制御部115は、制御モジュール10aが有するCPU11、12が備える機能により実現することができる。なお、これらの各機能をCPU11、12がそれぞれ備えていてもよい。
アクセス情報格納部116、スケジュール格納部117、および、RAIDグループ情報格納部118は、メモリ13により実現することができる。
次に、アクセス情報格納部116、スケジュール格納部117、および、RAIDグループ情報格納部118に格納されている情報について詳しく説明する。
図5は、アクセスカウンタを示す図である。
図5に示すアクセスカウンタ114aには、データおよびアクセス数の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
データの欄には、データを識別する名前が格納されている。
アクセス数の欄には、ストレージ装置でデータへのアクセスが発生した場合、領域にデータの書き込みアクセスがあった回数(アクセス回数)が格納されている。
図6は、アクセス頻度情報を示す図である。
アクセス頻度管理テーブル116aは、データ毎に設けられている。
図6に示すアクセス頻度管理テーブル116aには、時間およびアクセス数の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
時間の欄には、予め定められた時間間隔で時刻が設定されている。図6では、時間間隔が1分に設定されている。
アクセス数の欄には、時刻毎のアクセス数が格納されている。例えば、00:00:00の欄には、00:00:00から00:00:59までのアクセス数が格納されている。
図7は、アクセス履歴情報を示す図である。
アクセス履歴管理テーブル116bは、データ毎に設けられている。
図7に示すアクセス履歴管理テーブル116bには、時間、運用ランク(Operational Rank)、および、カウント数の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
時間の欄には、所定の時間帯が設定されている。図7では、時間帯が30分毎に設定されている。
運用ランクの欄には、時間帯毎の運用ランク(アクセス履歴情報)が設定されている。
この運用ランクは、予め定められた判断基準と、カウント数の欄の値に基づいて設定される。例えば、カウント数の欄の値が300以上であれば、運用ランクは「A」に設定される。カウント数の欄の値が200〜299であれば、運用ランクは「B」に設定される。カウント数の欄の値が1〜199であれば、運用ランクは「C」に設定される。カウント数の欄の値が0であれば、運用ランクは「D」に設定される。
カウント数の欄には、アクセス頻度管理テーブル116aに基づいて累積されたアクセス数が格納されている。例えば、時間00:00:00−00:30:00の欄のカウント数は、アクセス頻度管理テーブル116aの00:00:00から00:30:00までのアクセス数の累計を示している。
次に、スケジュール格納部117に格納されている各情報を説明する。
図8は、スケジュール管理情報を示す図である。図8では、スケジュール管理情報がテーブル化されている。
スケジュール管理テーブル117aは、データ毎に設けられている。
スケジュール管理テーブル117aには、時間(Time)、現在の運用ランク(Present Operational Rank)、今日の運用ランク(Today Operational Rank)、更新用運用ランク(Renewal Operational Rank)の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
時間の欄には、アクセス履歴管理テーブル116bと同じ単位での時間帯が設定されている。
現在の運用ランクの欄には、前日までの同一時間帯の運用ランクの平均が格納されている。SSD書き込み制御部115aは、現在の運用ランクに基づいて、後述するSSD書き込み制御処理を実行する。各時間帯の運用ランクをひとまとめにしたものがスケジュールとなる。
今日の運用ランクの欄には、アクセス履歴管理テーブル116bに格納されている当日の運用ランクが時間帯毎に格納されている。
更新用運用ランクの欄には、スケジュール管理・変更部115cが作成した更新用の運用ランクが格納されている。
また、時間の欄には、スケジュールが半日分であれば00:00:00から11:59:59までの12時間分の時間が、30分おきに設定される。スケジュールが1日分であれば00:00:00から23:59:59までの24時間分の時間が、30分おきに設定される。
スケジュール管理・変更部115cは、データ毎、かつ、所定時間帯毎に、SSDに記録させるデータの優先度(運用ランクA〜D)を示す優先度情報を作成する。
すなわち、スケジュール管理テーブル117aの更新用運用ランクの欄には、ホスト30からのアクセス頻度に基づく運用ランクA〜Dが、プール領域に退避すべき優先度を表す指標として格納されている。
運用ランクAに設定されたデータは、原則として、プール領域に退避すべきデータ(退避最優先データ)であることを表している。
運用ランクB、Cに設定されたデータは、それぞれ、原則として、プール領域に退避し、所定時間以上当該データに対するアクセスがない場合にSSDに書き込むデータ(退避優先データ)であることを表している。なお、前述した所定時間は、運用ランクBの方が、運用ランクCより長く設定されている。所定時間を運用ランク毎に設定していることは、SSDに対する高頻度のアクセスを抑制するためである。
運用ランクDに設定されたデータは、プール領域には退避せず、SSDに書き込むデータ(退避抑止データ)であることを表している。
図9は、スケジュール調整管理情報を示す図である。図9では、スケジュール調整管理情報がテーブル化されている。
スケジュール調整管理テーブル117bは、日にち毎に設けられている。
スケジュール調整管理テーブル117bには、時間、RLU#0の運用ランク、RLU#1の運用ランク、・・・、RLU#4の運用ランクの欄が設けられている。
時間の欄には、アクセス履歴管理テーブル116bと同じ単位での時間が設定されている。
各RLU(RAIDグループの論理ユニット)の運用ランクの欄には、それぞれ、各スケジュール管理テーブル117aの更新用運用ランクに、ユーザが設定した運用ランクが考慮された結果作成された各データの運用ランクが、RLU毎且つ時間帯毎に格納されている。この運用ランクの作成方法については、後に詳述する。
次に、RAIDグループ情報格納部118に格納されている各情報を説明する。
図10は、RAIDグループ情報を示す図である。図10では、RAIDグループ情報がテーブル化されている。
図10に示すRAIDグループ情報管理テーブル118aは、RLUナンバー(RLU No.)、ステータス(Status)、ディスクタイプ(Disk Type)、最終書き込み時間(Last Write Time)、書き込みアクセスランク(Write Access RANK)、テンポラリデータフラグ(Temporary Data Flag)、テンポラリRLUナンバー(Temporary RLU No.)の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
RLUナンバーの欄には、RAIDグループを識別する情報が設定されている。
ステータスの欄には、RLUナンバーの欄に設定されたRLUが有効(Available)か否(Non Available)か(使用可能か否か)を示す情報が設定されている。
ディスクタイプの欄には、当該RAIDグループを構成するディスク種別が格納されている。本実施の形態では、SSD、FC/SAS(Serial Attached SCSI)ディスク、SATA(Serial ATA)ディスクの3種が設定されている。なお、図10中では、FC/SASディスクを単に「FC/SAS」と表記し、SATAディスクを単に「SATA」と表記している。
最終書き込み時間の欄には、当該RAIDグループに対する書き込みアクセスの最終時間が格納されている。最終書き込み時間は、最終アクセス時間を元にSSDに対する書き込みデータの更新を行うか、あるいはデータを退避するかの判断を行う際に使用する。
書き込みアクセスランクの欄には、当該RAIDグループに対する書き込みアクセスの頻度を表す運用ランクが格納されている。
書き込みアクセスランクの算出は後述の手法で算出する。なお、書き込みアクセスランクはアクセス状況に応じて常に変化する。更には書き込みアクセスランクは、アクセス予測を含めて算出される。この書き込みアクセスランクも、SSDに対する書き込みデータの更新を行うか、退避するかの判断を行う際に使用する。
テンポラリデータフラグの欄には、「On」、「Off」、または、「−」のいずれかが格納される。
ディスクタイプの欄にSSDが設定されている場合は、テンポラリデータフラグは他のRAIDグループに退避したデータの有無を示す情報となる。退避したデータが存在する場合には「On」が格納される。退避したデータが存在しない場合には「Off」が格納される。
例えば、RAIDグループ情報管理テーブル118aの4行目のレコードのディスクタイプの欄には「SSD」が設定されているが、そのテンポラリデータフラグの欄には「Off」が格納されているため、RLU#3のデータは退避されていないことを示している。また、1行目のレコードのディスクタイプの欄にも「SSD」が設定されており、テンポラリデータフラグの欄には、「On」が格納されている。これは、退避したデータが他のRLUナンバーのRAIDグループに存在していることを示している。
ディスクタイプの欄にSSD以外が設定されている場合は、当該RLUナンバーのRAIDグループが、退避したデータを受け入れたか否かを示す情報となる。
当該RLUナンバーのRAIDグループが退避したデータを受け入れた場合は、「On」が格納される。当該RLUナンバーのRAIDグループが退避したデータを受け入れていない場合は「−」が設定される。
例えば、5行目のレコードのディスクタイプの欄には「FC/SAS」が設定されており、テンポラリデータフラグの欄には、「On」が格納されている。これは、RLU#4のRAIDグループが、退避したデータを受け入れていることを示している。
テンポラリRLUナンバーの欄には、データを退避した先のRAIDグループ、または、データを受け入れたRAIDグループのRLUナンバーの情報が格納されている。
ディスクタイプの欄にSSDが設定されている場合は、テンポラリRLUナンバーは退避したデータの退避先を示す情報となる。データを退避したRAIDグループが複数存在する場合は、データを退避した全てのRAIDグループのRLUナンバーの情報が格納される。ディスクタイプの欄にSSD以外が設定されている場合は、テンポラリRLUナンバーはデータの退避元を示す情報となる。
例えば、1行目のレコードのテンポラリRLUナンバーの欄には、「4」が格納されているが、これは、RLU#4のRAIDグループが、RLU#0に対する書き込みアクセスがあったデータの退避先になっていることを示している。また、5行目のレコードのテンポラリRLUナンバーの欄には、「0」が格納されているが、これは、RLU#4のRAIDグループが、受け入れたデータの退避元が、RLU#0のRAIDグループであることを示している。
図11は、退避データ管理情報を示す図である。図11では、退避データ管理情報がテーブル化されている。
退避データ管理テーブル118bには、退避元RLUナンバー(Src. RLU No.)、退避先RLUナンバー(Dst. RLU No.)、スタートオフセット(Start Offset)、データサイズ(Data Size)、オフセット、有効フラグ(Valid Flag)の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
退避元RLUナンバーの欄には、データ退避元のRAIDグループを識別する情報、つまりRLUナンバーが格納されている。例えば、退避元RLUがRLU#0であれば、退避元RLUナンバーの欄に「0」が格納される。また、退避元RLUがRLU#1であれば、退避元RLUナンバーの欄に「1」が格納される。
退避先RLUナンバーの欄には、データ退避先のRAIDグループを識別する情報(番号)が格納されている。図11の例で退避先RLUナンバーに格納されている「4」は、RLU#4を示している。
スタートオフセットの欄には、退避元RLUナンバーの欄に格納されたRAIDグループの、退避元データの先頭位置を示す情報が格納されている。
データサイズの欄には、退避元RLUナンバーの欄に格納されたRAIDグループの退避元データのデータサイズを示す情報が格納されている。
オフセットの欄には、退避先RLUナンバーの欄のRAIDグループに格納された退避元データの先頭位置を示す情報が格納されている。例えば、1行目のレコードのデータサイズは、「0x00001000」であり、オフセットは、「0x00000000」である。このため、1行目の退避データは、「0x00000000」から「0x00000999」まで書き込まれていることになる。従って、「0x00000999」の次の「0x00001000」からデータが書き込み可能であることが分かる。従って、2行目のレコードのオフセットの欄には、「0x00001000」が格納される。
有効フラグの欄には、当該レコードの内容を有効とするか無効とするかを識別するフラグが設定される。フラグが「On」である場合は、当該レコードの内容が有効であることを示し、フラグが「Off」である場合は、当該レコードの内容が無効であることを示す。
この有効フラグの欄を設けたのは、退避されたデータに対する再アクセスが発生した場合、再アクセスが118bのレコードに記録されたスタートオフセット、データサイズの範囲内に入るか否かで処理が異なるからである。
SSD書き込み制御部115aは、再アクセスが、当該スタートオフセット、データサイズの範囲内に入る書き込みアクセスの場合は、退避先領域をそのまま更新する。この場合、有効フラグは、「On」のままとする。
SSD書き込み制御部115aは、再アクセスが、当該スタートオフセット、データサイズの範囲内に入らない書き込みアクセスの場合は、既に保持している退避先領域を解除、新規に退避先領域を確保して更新を行う。この場合、SSD書き込み制御部115aは、有効フラグを「On」から「Off」に書き換える。
図12は、退避データ管理テーブルの更新を示す具体例である。
スタートオフセット「0x00150000」、データサイズ「0x00002000」の書き込みアクセスが発生した場合、図12(a)に示す退避データ管理テーブル118bの1行目のレコードに記載された各情報を参照すると、1行目のレコードのデータを更新することはできない。具体的には以下のとおりである。
図12(a)は、RLU#0に対する書き込みアクセスが発生する前の段階の退避データ管理テーブルを示している。
図12(a)では、スタートオフセットが「0x00150000」、データサイズが「0x00001000」の退避対象データが、オフセット「0x00000000」でRLU#4に退避されている。
同様に、図12(a)では、スタートオフセットが「0x11223300」、データサイズが「0x00022000」の退避対象データが、オフセット「0x00001000」でRLU#4に退避されている。
RLU#0に対するスタートオフセット「0x00150000」、データサイズ「0x00002000」の書き込みアクセスが発生したものとする。
図12(a)を見ると、RLU#4の「0x00000000」から、スタートオフセット「0x00150000」の退避対象データが書き込まれており、このデータに続いてRLU#4の「0x00001000」から、スタートオフセット「0x1122330000」の退避対象データが書き込まれている。
今回の書き込みアクセス対象のデータサイズは「0x00002000」であり、スタートオフセット「0x00150000」、データサイズ「0x00001000」の退避データが退避されているRLU#4の領域でのアクセス対象データの更新ができない。
このため、図12(b)に示す退避データ管理テーブル118bのように、新規に退避データを書き込み、既存の退避データを削除する。すなわち、1行目のレコードに記載された情報は、有効でないため、1行目のレコードの有効フラグを「Off」に設定する。また、スタートオフセットの値は使用しないため消す(図12では「−」で表記している)。なお、1行目のレコードに記載されたデータサイズ、オフセットおよび有効フラグの欄の情報を参照することにより、オフセット「0x00000000」からデータサイズが「0x0000100」分だけ、退避領域が空き領域であることが分かる。従って、1行目のレコードは、削除せずに残す。そして、スタートオフセットおよびデータサイズが1行目のレコードに等しいレコードを新たに6行目に作成する。すなわち、6行目のレコードのスタートオフセットの欄には、1行目のスタートオフセットに格納されていたスタートオフセット「0x00150000」を格納する。データサイズの欄には、今回の書き込みアクセス対象のデータサイズ「0x00002000」を格納する。オフセットの欄には、RLU#4に格納された退避元データの先頭位置を示す情報「0x00027710」を格納する。
なお、前述した更新処理がこれ以降の時間に書き込みアクセスデータの退避が行われた場合に、退避対象となるアクセスデータのデータサイズが、退避データ管理テーブル118bの2行目のオフセットと1行目のオフセットとの差分であれば、この1行目のレコードが示すRLU#4の領域に退避対象となるアクセスデータを格納することができる。
なお、退避データ管理テーブル118bに格納できる情報(レコード数)が予め定めた上限に達した場合には、退避したデータを強制的に退避元に書き込み、退避元に書き込んだデータに対応する退避先情報をリセットするようにすることができる。これについては、後述するステップS23にて説明する。
次に、制御モジュール10aの処理の概要を説明し、その後、各処理についてフローチャートを用いて詳しく説明する。
<処理概要>
制御モジュール10aは、ホスト30からのI/Oアクセスをチャネルアダプタ14が受け付けると、実際にデータを保存、保持している箇所に対するRAIDグループ、ディスク・SSDの位置情報をI/O制御部111が確認する。
ここで、データ書き込み要求時に、アクセス情報収集部114は、SSDに対するアクセス状況を監視する。アクセス状況の監視は、アクセス回数をベースにSSD構成RAIDグループを含む全てのRAIDグループを対象に行う。
SSD書き込み制御部115aは、SSDに対するアクセスが発生した場合、アクセスのタイプに応じて処理を変更する。
・書き込みアクセスの場合
アクセスがSSDに対する書き込みアクセスの場合、SSD書き込み制御部115aは、当該領域に対するアクセスが、初回アクセス(1回目のアクセス)か更新アクセス(2回目以降のアクセス)かで処理を変更する。
図13は、書き込みアクセス時のデータ退避を説明する図である。
初回アクセスの場合は、SSD書き込み制御部115aはSSDにデータを書き込む。
更新アクセスの場合は、SSD書き込み制御部115aは、RAIDグループ情報管理テーブル118aの書き込みアクセスランクの欄を参照し、書き込みアクセスの対象となっているRAIDグループのボリュームに対するアクセス状況を確認する。
当該ボリュームに対する運用ランクがB、C、またはDである場合は、SSD書き込み制御部115aは、後述する書き込み判定論理結果に基づいて、SSDに対する即時書き込みアクセスを行うか、あるいはSSDに対する書き込みアクセスを行わないかを判断する。
他方、当該ボリュームに対する運用ランクがAである場合は、SSD書き込み制御部115aは、即時にはSSDに対する書き込みアクセスは行わない。図13に示すように、SSD書き込み制御部115aは、書き込み対象のデータのうち、新たに追加、または、上書きされたデータ箇所(更新箇所)のデータD1のみをプール領域に退避する。なお、図13では、データD1が書き込まれなかったSSDの記憶領域(=更新されないSSDの領域)D1a、D2aを示している。
また、プール領域には、以前に退避されたデータD2も格納されている。
そして、メモリ13内の、退避したデータD1の退避位置を識別する位置情報d1を、退避データ管理テーブル118bに格納する。なお、図12に示す退避データ管理テーブル118bには、以前に退避されたデータD2に関する位置情報d2が格納されている。
図14は、読み出しアクセス時のデータ読み出しを説明する図である。
・読み出しアクセスの場合
読み出しアクセスが発生した場合は、書き込みアクセス時に読み出しアクセス対象のデータをSSDに書き込んでいるか否かで処理を変更する。
なお、読み出しアクセス対象のデータをSSDに書き込んでいるか否かは、退避データ管理テーブル118bのスタートオフセットの欄を参照することにより、識別することができる。
読み出しアクセスによる読み出し対象のデータが、プール領域に退避しているデータのみである場合、例えば、読み出し対象がデータD1のみである場合は、退避データ管理テーブル118bのオフセットの欄を参照し、データD1の退避位置を識別するメモリ13内の位置情報d1を特定する。そして、退避しているデータD1のみを読み出す。
なお、読み出しアクセスによる読み出し対象のデータが、プール領域に退避しているデータのみであるか否かは、退避データ管理テーブル118bのデータサイズの欄を参照し、そのデータサイズを確認することにより、識別することができる。
読み出しアクセスによる読み出し対象のデータが、プール領域に退避しているデータ以外のデータを含んでいる場合、すなわち、プール領域に退避しているデータとSSDに格納されているデータとが混在している場合、SSDから読み出したデータに、プール領域に退避しているデータを更新したデータを読み出す。
例えば、図14に示すように、読み出し対象が、データD1を含むデータD3である場合、データD3のデータD1を除くデータD4をSSDから読み出す。そして、プール領域に退避しているデータD1を、退避データ管理テーブル118bを参照することで読み出す。そして、データD4にデータD1を更新したデータを、データD3として読み出す。
他方、読み出しアクセスによる読み出し対象のデータが、SSDに格納しているデータのみである場合は、SSDに格納されているデータを読み出す。
図15は、更新処理を示す図である。
プール領域に退避していたデータの更新処理を実行する場合、SSD構成RAIDグループに格納されているデータのうち、プール領域に格納されているデータ部分のみを更新する(図15中、更新箇所のみ更新処理実施)。その後、プール領域に退避した、更新されたデータを初期化する。また、当該退避しているデータに関する退避データ管理テーブル118bのレコードも初期化する。
以下、前述した処理概要について、フローチャートを用いて詳しく説明する。
<I/O制御処理>
以下、I/O制御部111のI/O制御処理を説明する。
図16は、I/O制御処理を示すフローチャートである。
[ステップS1] I/O制御部111は、ホスト30からI/Oアクセスを受け付ける。その後、ステップS2に遷移する。
[ステップS2] I/O制御部111は、RAIDグループ情報管理テーブル118aを参照し、アクセス対象のRAIDグループ(I/Oアクセスで指定されているRAIDグループ)(以下、「アクセス対象RAIDグループ」と言う)の状態を確認する。I/O制御部111は例えば、アクセス対象RAIDグループの実装状態や、アクセス対象RAIDグループが動作しているか等の動作状態を確認する。その後、ステップS3に遷移する。
[ステップS3] I/O制御部111は、アクセス対象RAIDグループの実装状態を確認した結果に基づいて、アクセス対象RAIDグループの実装状態がOKか否か(異常が発生していないか)を判断する。なお、ここでの異常とは、例えば、アクセス対象RAIDグループ未実装等を言う。アクセス対象RAIDグループの実装状態がOKである場合(ステップS3のYes)、ステップS4に遷移する。アクセス対象RAIDグループの実装状態がOKではない場合(ステップS3のNo)、ステップS11に遷移する。
[ステップS4] I/O制御部111は、RAIDグループ情報管理テーブル118aのディスクタイプの欄を参照し、アクセス対象RAIDグループのディスクタイプを確認する。その後、ステップS5に遷移する。
[ステップS5] I/O制御部111は、ステップS4にて確認したディスクタイプが、SSDか否かを判断する。確認したディスクタイプがSSDである場合(ステップS5のYes)、ステップS6に遷移する。確認したディスクタイプがSSDではない場合(ステップS5のNo)、ステップS12に遷移する。
[ステップS6] I/O制御部111は、SSD書き込み制御処理の運用状態を確認する。運用状態を確認する処理は、SSD書き込み制御部115aに、スケジュールに基づく制御を行わせるか否かをI/O制御部111が確認するものである。コントローラエンクロージャ18は、ユーザによって制御部115にスケジュールに基づく処理を実行させるか否か、すなわち、SSD書き込み制御処理の運用を行うか否かを設定可能に構成されており、I/O制御部111は、その設定状態をチェックする。その後、ステップS7に遷移する。
[ステップS7] I/O制御部111は、ステップS6にて確認したSSD書き込み制御処理が運用中か否かを判断する。SSD書き込み制御処理が運用中である場合(ステップS7のYes)、ステップS8に遷移する。SSD書き込み制御処理が運用中ではない場合(ステップS7のNo)、ステップS12に遷移する。
[ステップS8] I/O制御部111は、アクセス対象RAIDグループに実装されているSSDに対するアクセス種(書き込みアクセスか読み出しアクセスか)の有無を確認する。
[ステップS9] I/O制御部111は、ステップS8の確認の結果に基づいて、SSD書き込み制御部115aが、書き込みアクセスか否かを判断する。書き込みアクセスである場合(ステップS9のYes)、ステップS10に遷移する。書き込みアクセスではない場合(ステップS9のNo)、ステップS12に遷移する。
[ステップS10] I/O制御部111は、SSD書き込み制御部115aにSSD書き込み制御処理を実行させる。なお、SSD書き込み制御処理は後に詳述する。その後、I/O制御処理を終了する。
[ステップS11] I/O制御部111は、アクセス対象のRAIDグループを、アクセスできないRAIDグループであると判断する。その後、I/O制御処理を終了する。
[ステップS12] I/O制御部111は、アクセス対象RAIDグループに対し、ホストI/O処理を実行する。
具体的には、I/O制御部111は、ホスト30からのI/OアクセスがSSD以外に対するデータ書き込み要求であった場合、メモリ13上に書き込み対象のデータを記憶することで、ホスト30側に書き込み完了を応答する。また、RAIDグループの該当箇所にメモリ13に記憶したデータを書き込む。
他方、ホスト30からのI/Oアクセスがデータ読み出し要求であった場合、メモリ13上に読み出し対象のデータが存在するか否かを判断する。具体的には、RAIDグループ情報管理テーブル118aのアクセス対象RAIDグループのテンポラリデータフラグの欄を参照する。メモリ13上に読み出し対象データが存在する場合は、メモリ13上のデータをホスト30側に応答する。メモリ13上に読み出しデータが存在しない場合は、実データが存在するRAIDグループの該当箇所からデータを読み出し、メモリ13上に当該データを展開した後、ホスト30に当該データと応答を返す。
その後、I/O制御処理を終了する。
以上で、I/O制御処理の説明を終了する。
次に、ステップS10にてI/O制御部111から指示を受け、SSD書き込み制御部115aが実行するSSD書き込み制御処理を説明する。
<SSD書き込み制御処理>
図17は、SSD書き込み制御処理を示すフローチャートである。
[ステップS21] SSD書き込み制御部115aは、ステップS1で受け付けたアクセスの領域を確認する。その後、ステップS22に遷移する。
[ステップS22] SSD書き込み制御部115aは、ステップS21の確認に基づいて、I/Oアクセスがアクセス対象の領域に対する初回アクセスか否かを判断する。具体的には、I/O制御部111がSSDに書き込んだ領域を識別する情報を有しており、SSD書き込み制御部115aは、I/Oアクセスによるアクセス対象の領域に、すでにデータが書き込まれているか否かをI/O制御部111に問い合わせる。問い合わせの結果、アクセス対象の領域が、既にデータが書き込まれた領域ではない場合にI/Oアクセスが初回アクセスであると判断する。初回アクセスである場合(ステップS22のYes)、ステップS23に遷移する。初回アクセスではない場合(ステップS22のNo)、ステップS24に遷移する。
[ステップS23] SSD書き込み制御部115aは、SSDへの書き込み処理を行う。このとき、SSD書き込み制御部115aは、退避データ更新フラグを確認する。退避データ更新フラグが「On」である場合、退避データ管理テーブル118bに格納されているレコードのうち、アクセス対象RAIDグループについてのレコードのデータを、退避先のプール領域から読み出し、併せてSSDに書き込む。書き込み領域としては、例えば、SSDの未使用領域の先頭等が挙げられる。また、プール領域に退避していたデータをプール領域から消去し、書き込みを行った領域に対応する退避データ管理テーブル118bのレコードを消去する。また、併せて、RAIDグループ情報管理テーブル118aも更新する。併せて書き込むことにより、退避データ管理テーブル118bに書き込むことができるレコードが増え、退避データ管理テーブル118bが作成できるレコードが上限に達することを抑制することができる。その後、SSD書き込み制御処理を終了する。
[ステップS24] SSD書き込み制御部115aは、RAIDグループ情報管理テーブル118aの書き込みアクセスランクの欄を参照し、アクセス対象RAIDグループの書き込みアクセスランクを確認する。その後、ステップS25に遷移する。
[ステップS25] SSD書き込み制御部115aは、ステップS24にて確認した運用ランクが運用ランクDか否かを判断する。ステップS24にて確認した運用ランクが運用ランクDである場合(ステップS25のYes)、ステップS40に遷移する。ステップS24にて確認した運用ランクが運用ランクDではない場合(ステップS25のNo)、ステップS26に遷移する。
[ステップS26] SSD書き込み制御部115aは、ステップS24にて確認した運用ランクが運用ランクCか否かを判断する。ステップS24にて確認した運用ランクが運用ランクCである場合(ステップS26のYes)、ステップS31に遷移する。ステップS24にて確認した運用ランクが運用ランクCではない場合(ステップS26のNo)、ステップS27に遷移する。
[ステップS27] SSD書き込み制御部115aは、ステップS24にて確認した運用ランクが運用ランクBか否かを判断する。ステップS24にて確認した運用ランクが運用ランクBである場合(ステップS27のYes)、ステップS29に遷移する。ステップS24にて確認した運用ランクが運用ランクBではない場合(ステップS27のNo)、ステップS28に遷移する。
[ステップS28] SSD書き込み制御部115aは、ステップS24にて確認した運用ランクが運用ランクAであると判断する。その後、ステップS33に遷移する。
[ステップS29] SSD書き込み制御部115aは、I/O制御部111がSSDに最終にアクセスした時間(最終アクセス時間)を確認する。具体的には、SSD書き込み制御部115aはRAIDグループ情報管理テーブル118aを参照し、当該RAIDグループの最終書き込み時間を確認する。その後、ステップS30に遷移する。
[ステップS30] SSD書き込み制御部115aは、ステップS29にて確認した最終書き込み時間と現時間とを比較する。そしてSSD書き込み制御部115aは、現時間が最終書き込み時間から1日(24時間)以上経過したか否かを判断する。現時間が最終書き込み時間から1日以上経過している場合(ステップS30のYes)、ステップS40に遷移する。現時間が最終書き込み時間から1日以上経過していない場合(ステップS30のNo)、ステップS33に遷移する。
[ステップS31] SSD書き込み制御部115aは、I/O制御部111が、SSDに最終にアクセスした時間(最終アクセス時間)を確認する。具体的にはSSD書き込み制御部115aは、RAIDグループ情報管理テーブル118aを参照し、当該RAIDグループの最終書き込み時間を確認する。その後、ステップS32に遷移する。
[ステップS32] SSD書き込み制御部115aは、ステップS31にて確認した最終アクセス時間と現時間とを比較する。そしてSSD書き込み制御部115aは、現時間が最終アクセス時間から半日(12時間)以上経過したか否かを判断する。現時間が最終アクセス時間から半日以上経過している場合(ステップS32のYes)、ステップS40に遷移する。現時間が最終アクセス時間から半日以上経過していない場合(ステップS30のNo)、ステップS33に遷移する。
[ステップS33] SSD書き込み制御部115aは、退避データ管理テーブル118bを参照し、退避データ管理テーブル118bのレコード残数(メモリ13管理上の残りの領域)を確認する。その後、ステップS34に遷移する。
[ステップS34] SSD書き込み制御部115aは、ステップS33にて確認したレコード残数が存在するか否かを判断する。レコード残数が存在する場合(ステップS34のYes)、ステップS36に遷移する。レコード残数が存在しない場合(ステップS34のNo)、ステップS35に遷移する。
[ステップS35] SSD書き込み制御部115aは、退避データ更新フラグを「On」に設定する。この退避データ更新フラグは、SSD書き込み制御処理内で使用するフラグであり、例えば、メモリ13にて管理される。その後、ステップS23に遷移する。
[ステップS36] SSD書き込み制御部115aは、プール領域の残り領域を確認する。その後、ステップS37に遷移する。
[ステップS37] SSD書き込み制御部115aは、ステップS36にて確認した結果に基づいて、プール領域にデータを格納できるか否かを判断する。プール領域にデータを格納できる場合(ステップS37のYes)、ステップS38に遷移する。プール領域にデータを格納できない場合(ステップS37のNo)、ステップS35に遷移する。
[ステップS38] SSD書き込み制御部115aは、退避データ管理テーブル118bに今回退避した退避データの管理情報を格納する。その後、ステップS39に遷移する。
[ステップS39] SSD書き込み制御部115aは、退避データをプール領域に格納する。その後、SSD書き込み制御処理を終了する。
[ステップS40] SSD書き込み制御部115aは、アクセス対象RAIDグループの退避データを確認する。具体的には、SSD書き込み制御部115aは退避データ管理テーブル118bの退避元RLUナンバーの欄を参照し、アクセス対象RAIDグループのレコードが存在するか否かを確認する。その後、ステップS41に遷移する。
[ステップS41] SSD書き込み制御部115aは、ステップS40にて確認した結果に基づいて、アクセス対象RAIDグループの退避データが存在するか否かを判断する。退避データが存在する場合(ステップS41のYes)、ステップS42に遷移する。退避データが存在しない場合(ステップS41のNo)、ステップS43に遷移する。
[ステップS42] SSD書き込み制御部115aは、退避データ更新フラグを「On」に設定する。その後、ステップS43に遷移する。
[ステップS43] SSD書き込み制御部115aは、SSDへの書き込み処理を行う。この処理は、ステップS23の処理と同様の処理を行う。その後、SSD書き込み制御処理を終了する。
以上で、SSD書き込み制御処理の説明を終了する。
なお、本実施の形態では、初回アクセスの場合は、ステップS23に遷移しデータをSSDに書き込んだが、これに限らず、更新アクセスと同様にアクセス頻度に応じて、SSDに書き込むか否かを決定するようにしてもよい。
また、図17には示していないが、SSDのデータを退避するプール領域の残量が足りない場合は、更新頻度が低いデータをSSDに更新し、プール領域の該当領域を使用可能にするようにしてもよい。
次に、SSD書き込み制御処理の運用に伴い実行される処理(運用状態確認処理)を説明する。
図18は、運用状態確認処理を示すフローチャートである。
[ステップS51] 制御部115は、SSD書き込み制御処理の運用状態を確認する。その後、ステップS52に遷移する。
[ステップS52] 制御部115は、ステップS51にて確認した結果に基づいて、SSD書き込み制御処理が運用状態か否かを判断する。SSD書き込み制御処理が運用状態である場合(ステップS52のYes)、ステップS53に遷移する。SSD書き込み制御処理が運用状態ではない場合(ステップS52のNo)、運用状態確認処理を終了する。
[ステップS53] アクセス監視・履歴管理部115bは、アクセス情報収集部114に対して、対象データのアクセス数の収集を依頼し、アクセス情報収集部114によるアクセス回数の収集を開始させる(アクセス監視起動処理)。なお、この処理については後に詳述する。その後、ステップS54に遷移する。以下、ステップS54〜ステップS64の処理は、一定時間間隔(例えば、半日毎や、1日毎)で繰り返し実行される。
[ステップS54] アクセス監視・履歴管理部115bは、上記ステップS53においてアクセス情報収集部114によって収集されたアクセス数を収集する(アクセス回数収集処理)。その後、ステップS55に遷移する。
[ステップS55] アクセス監視・履歴管理部115bは、ステップS54にて収集したアクセス数に基づいて、アクセス頻度情報を作成する。そしてアクセス監視・履歴管理部115bは、作成したアクセス頻度情報をアクセス頻度管理テーブル116aに格納する。
また、アクセス監視・履歴管理部115bは、作成したアクセス頻度情報に基づいて、データ毎の運用ランクを示すアクセス履歴情報を作成する。そしてアクセス監視・履歴管理部115bは、作成したアクセス履歴情報をアクセス履歴管理テーブル116bに格納する。その後、ステップS56に遷移する。
[ステップS56] スケジュール管理・変更部115cは、アクセス履歴管理テーブル116bに基づいて、スケジュールを更新することを示す更新処理実行フラグを確認する(更新処理実行確認処理)。なお、更新処理実行確認処理については、後に詳述する。その後、ステップS57に遷移する。
[ステップS57] スケジュール管理・変更部115cは、ステップS56にて確認した更新処理実行フラグに基づいて、更新処理を実行するか否かを判断する。更新処理を実行する場合(ステップS57のYes)、ステップS58に遷移する。更新処理を実行しない場合(ステップS57のNo)、ステップS59に遷移する。
[ステップS58] スケジュール管理・変更部115cは、SSDへの退避データの更新処理を実行する。なお、更新処理については、後に詳述する。その後、ステップS59に遷移する。
[ステップS59] スケジュール管理・変更部115cは、SSD書き込み制御処理の運用状態を確認する。これは、運用中に運用設定が解除されたか否かを確認する処理である。その後、ステップS60に遷移する。
[ステップS60] スケジュール管理・変更部115cは、ステップS59にて確認した結果に基づいて、SSD書き込み制御処理が運用状態か否かを判断する。SSD書き込み制御処理が運用状態である場合(ステップS60のYes)、ステップS61に遷移する。SSD書き込み制御処理が運用状態ではない場合(ステップS60のNo)、ステップS64に遷移する。
[ステップS61] アクセス監視・履歴管理部115bは、監視周期を確認する。その後、ステップS62に遷移する。
[ステップS62] アクセス監視・履歴管理部115bは、ステップS61にて確認した結果に基づいて、ステップS63にて説明するリセット監視パラメータを初期化してから一定周期が経過したか否かを判断する。一定周期が経過した場合(ステップS62のYes)、ステップS63に遷移する。一定周期が経過していない場合(ステップS62のNo)、一定時間間隔経過後に、ステップS54に遷移する。
[ステップS63] アクセス監視・履歴管理部115bは、リセット監視パラメータ、つまりアクセスカウンタ114a、アクセス頻度管理テーブル116a、および、アクセス履歴管理テーブル116bのパラメータを初期化する。その後、ステップS54に遷移する。
[ステップS64] スケジュール管理・変更部115cは、SSD書き込み制御処理の運用を終了するために、現在、プール領域を有する全てのストレージ装置について、プール領域に退避されているデータをSSDへ書き戻すための更新処理を実行する。その後、運用状態確認処理を終了する。
以上で、運用状態確認処理の説明を終了する。
次に、ステップS53のアクセス監視起動処理を説明する。
<アクセス監視起動処理>
図19は、アクセス監視起動処理(S53)を示すフローチャートである。
[ステップS53a] アクセス監視・履歴管理部115bは、アクセス対象RAIDグループを確認する。その後、ステップS53bに遷移する。以下、アクセス監視・履歴管理部115bは、ステップS53b〜ステップS53dの処理を、アクセス対象RAIDグループ毎に繰り返し実行する。
[ステップS53b] アクセス監視・履歴管理部115bは、ステップS53aにて確認したアクセス対象RAIDグループの1つについて、実装状態や、稼働状態を確認する。その後、ステップS53cに遷移する。
[ステップS53c] アクセス監視・履歴管理部115bは、ステップS53bにて確認した実装状態や、稼働状態がOKか否か(異常が発生していないか)を判断する。なお、ここでの異常とは、例えば、未実装、故障の発生、電源OFF等を言う。
状態がOKであれば(ステップS53cのYes)、ステップS53dに遷移する。状態がOKではなければ(ステップS53cのNo)、未だアクセス監視起動処理を行っていないアクセス対象RAIDグループが存在すれば、ステップS53bに遷移する。そして、そのアクセス対象RAIDグループについてステップS53b以降の処理を行う。全てのアクセス対象RAIDグループについてアクセス監視起動処理を行った場合は、アクセス監視起動処理を終了する。
[ステップS53d] アクセス監視・履歴管理部115bは、状態がOKと判断されたアクセス対象RAIDグループについてのアクセス回数の収集の開始を、アクセス情報収集部114に依頼する。その後、未だアクセス監視起動処理を行っていないアクセス対象RAIDグループが存在すれば、ステップS53bに遷移する。そして、そのアクセス対象RAIDグループについてステップS53b以降の処理を行う。全てのアクセス対象RAIDグループについてアクセス監視起動処理を行った場合は、アクセス監視起動処理を終了する。
以上でアクセス監視起動処理の説明を終了する。
次に、ステップS54のアクセス回数収集処理を説明する。
<アクセス回数収集処理>
図20は、アクセス回数収集処理(S54)を示すフローチャートである。
[ステップS54a] アクセス監視・履歴管理部115bは、アクセス対象RAIDグループを確認する。その後、ステップS54bに遷移する。以下、制御部115は、ステップS54b〜ステップS54kの処理を、アクセス対象RAIDグループ毎に繰り返し実行する。
[ステップS54b] アクセス監視・履歴管理部115bは、ステップS54aにて確認したアクセス対象RAIDグループの1つについて、実装状態や、稼働状態を確認する。その後、ステップS54cに遷移する。
[ステップS54c] アクセス監視・履歴管理部115bは、ステップS54bにて確認した実装状態や、稼働状態がOKか否かを判断する。状態がOKであれば(ステップS54cのYes)、ステップS54dに遷移する。状態がOKではなければ(ステップS54cのNo)、ステップS54iに遷移する。
[ステップS54d] アクセス監視・履歴管理部115bは、アクセス情報収集部114のアクセス回数の収集状態を確認する。アクセス監視・履歴管理部115bは例えば、アクセス情報収集部114が、ストレージ装置211a等を未実装状態から実装状態に変更したか否かや、ストレージ装置211aが故障状態から復帰した場合等の再起動処理を行っていないかを確認する。
[ステップS54e] アクセス監視・履歴管理部115bは、ステップS54dにて確認したアクセス回数の収集状態に基づいて、アクセス情報収集部114による収集処理が動作中か否かを判断する。収集処理が動作中である場合(ステップS54eのYes)、ステップS54fに遷移する。収集処理が動作中ではない場合(ステップS54eのNo)、ステップS54gに遷移する。
[ステップS54f] アクセス監視・履歴管理部115bは、アクセス情報収集部114が収集したアクセス回数の送信をアクセス情報収集部114に指示する。その後、ステップS54kに遷移する。
[ステップS54g] アクセス情報収集部114による収集処理が動作中でない場合、アクセス監視・履歴管理部115bは、アクセス回数の再度の収集開始をアクセス情報収集部114に指示する。その後、ステップS54hに遷移する。
[ステップS54h] アクセス監視・履歴管理部115bは、アクセス回数の初期値を「0」に設定する。その後、ステップS54kに遷移する。
[ステップS54i] アクセス監視・履歴管理部115bは、状態がOKではないと判断された処理対象RAIDグループが、状態異常で監視対象外であると決定する。その後、ステップS54jに遷移する。
[ステップS54j] アクセス監視・履歴管理部115bは、アクセス回数の初期値を「0」に設定する。その後、ステップS54kに遷移する。
[ステップS54k] アクセス監視・履歴管理部115bは、収集したアクセス回数をメモリ13に一時記憶する。その後、未だ状態確認を行っていないアクセス対象RAIDグループが存在すれば、ステップS54bに遷移する。そして、そのアクセス対象RAIDグループについてステップS54b以降の処理を行う。全てのアクセス対象RAIDグループについて状態確認を行った場合は、ステップS54mに遷移する。
[ステップS54m] アクセス監視・履歴管理部115bは、アクセス回数ランク更新処理を実行する。なお、この処理については後に詳述する。その後、アクセス回数収集処理を終了する。
以上で、アクセス回数収集処理の説明を終了する。
次に、ステップS56に示す更新処理実行確認処理を説明する。
<更新処理実行確認処理>
図21は、更新処理実行確認処理(S56)を示すフローチャートである。
以下、制御部115は、ステップS56a〜ステップS56gの処理を、アクセス対象RAIDグループ毎に繰り返し実行する。
[ステップS56a] スケジュール管理・変更部115cは、ユーザが指定した指定時間を確認する。この指定時間は、ユーザが時、分、秒単位で指定することができる。指定時間は例えば、13時35分34秒のように指定することができる。その後、ステップS56bに遷移する。
[ステップS56b] スケジュール管理・変更部115cは、ステップS56aにて確認した指定時間と現在の時間とを比較し、指定時間が経過しているか否かを判断する。指定時間が経過している場合(ステップS56bのYes)、ステップS56fに遷移する。指定時間が経過していない場合(ステップS56bのNo)、ステップS56cに遷移する。
[ステップS56c] スケジュール管理・変更部115cは、アクセス対象RAIDグループのアクセス状況を確認する。具体的には、スケジュール管理・変更部115cはRAIDグループ情報管理テーブル118aの書き込みアクセスランクの欄を参照し、アクセス対象RAIDグループの運用ランクを取得する。その後、ステップS56dに遷移する。
[ステップS56d] スケジュール管理・変更部115cは、一定時間が経過したか否かを判断する。具体的には、スケジュール管理・変更部115cはRAIDグループ情報管理テーブル118aの最終書き込み時間の欄を参照し、ステップS56cにて取得した運用ランクが、取得した運用ランクに対応する最終書き込み時間が定めた時間を経過したか否かを判断する。取得した運用ランクに対応する最終書き込み時間が定めた時間を経過した場合(ステップS56dのYes)、ステップS56fに遷移する。取得した運用ランクに対応する最終書き込み時間が定めた時間を経過していない場合(ステップS56dのNo)、ステップS56eに遷移する。
[ステップS56e] スケジュール管理・変更部115cは、退避データの更新処理が実行されていないと判定する。その後、未だ更新処理実行確認処理を行っていないSSD構成RAIDグループが存在すれば、ステップS56aに遷移し、スケジュール管理・変更部115cはそのSSD構成RAIDグループについてステップS56a以降の処理を行う。全てのSSD構成RAIDグループについて更新処理実行確認処理を行った場合は、更新処理実行確認処理を終了する。
[ステップS56f] スケジュール管理・変更部115cは、退避データの更新処理が実行されたと判定する。その後、ステップS56gに遷移する。
[ステップS56g] スケジュール管理・変更部115cは、更新処理実行フラグを「On」に設定する。この更新処理実行フラグは、例えばメモリ13に記憶する。その後、未だ更新処理実行確認処理を行っていないSSD構成RAIDグループが存在すれば、ステップS56aに遷移し、スケジュール管理・変更部115cはそのSSD構成RAIDグループについてステップS56a以降の処理を行う。全てのSSD構成RAIDグループについて更新処理実行確認処理を行った場合は、更新処理実行確認処理を終了する。
以上で、更新処理実行確認処理の説明を終了する。
次に、ステップS58の更新処理を説明する。
<更新処理>
図22は、更新処理(S58)を示すフローチャートである。
[ステップS58a] スケジュール管理・変更部115cは、運用解除時の全てのボリューム更新か、すなわち、ステップS64の処理か否かを確認する。その後、ステップS58bに遷移する。
[ステップS58b] スケジュール管理・変更部115cは、ステップS58aにて確認した結果に基づいて、運用を解除するか否かを判断する。運用を解除すると判断した場合、(ステップS58bのYes)、ステップS58cに遷移する。運用を解除しないと判断した場合(ステップS58bのNo)、ステップS58dに遷移する。
[ステップS58c] スケジュール管理・変更部115cは、退避データのSSD更新処理をSSD書き込み制御部115aに依頼する。具体的にはスケジュール管理・変更部115cは、退避データのSSDへの書き込みと、退避データ管理テーブル118bの初期化をSSD書き込み制御部115aに依頼する。その後、未だ更新処理を行っていないSSD構成RAIDグループが存在すれば、ステップS58aに遷移し、そのSSD構成RAIDグループについてステップS58a以降の処理を行う。全てのSSD構成RAIDグループについて更新処理を行った場合は、更新処理を終了する。
[ステップS58d] スケジュール管理・変更部115cは、退避データの更新処理が実行済みかを確認する。具体的には、スケジュール管理・変更部115cはメモリ13を参照し、ステップS56gにて設定された更新処理実行フラグを確認する。その後、ステップS58eに遷移する。
[ステップS58e] スケジュール管理・変更部115cは、ステップS58dにて確認した結果に基づいて、退避データの更新処理を実行するか否かを判断する。具体的にはスケジュール管理・変更部115cは、ステップS58dにて確認した更新処理実行フラグに対応するSSD構成RAIDグループの更新処理実行フラグが「On」である場合(ステップS58eのYes)、ステップS58cに遷移する。当該SSD構成RAIDグループの更新処理実行フラグが「Off」である場合(ステップS58eのNo)、未だ更新処理を行っていないSSD構成RAIDグループが存在すれば、ステップS58aに遷移し、そのSSD構成RAIDグループについてステップS58a以降の処理を行う。全てのSSD構成RAIDグループについて更新処理を行った場合は、更新処理を終了する。
以上で、更新処理の説明を終了する。
次に、図20のステップS54mのアクセス回数ランク更新処理を説明する。
この処理は、以下のアクセス回数履歴管理処理、スケジュール管理処理、および、スケジュール調整処理の3つの処理によって実現される。以下、順番に説明する。
<アクセス回数履歴管理処理>
図23は、アクセス回数履歴管理処理を示すフローチャートである。
[ステップS71] アクセス監視・履歴管理部115bは、短時間履歴更新処理を開始する。ここで、短時間履歴更新処理とは、アクセス情報収集部114によって収集され、アクセスカウンタ114aに一時記憶されたアクセス回数を、所定時間帯毎(ここでは0時から30分毎)の履歴情報に集約してまとめる処理をいう。その後、ステップS72に遷移する。以下、アクセス監視・履歴管理部115bは、ステップS72、S73の処理を、対象データ数分繰り返し実行する。
[ステップS72] アクセス監視・履歴管理部115bは、対象データ毎に、予め定められた時間から30分間のアクセス回数からアクセス頻度情報を作成する。そして、アクセス監視・履歴管理部115bは作成したアクセス頻度情報をアクセス頻度管理テーブル116aに格納する。その後、ステップS73に遷移する。
[ステップS73] アクセス監視・履歴管理部115bは、上記ステップS72にてアクセス頻度管理テーブル116aに格納されたアクセス頻度情報に基づいて、現時点における運用ランク(A〜D)を決定して、メモリ13に一時記憶する。
アクセス監視・履歴管理部115bは、上記ステップS72、S73の処理をデータ数分実行したら、ステップS74に遷移する。
[ステップS74] アクセス監視・履歴管理部115bは、メイン履歴更新処理を実行する。ここで、メイン履歴更新処理とは、30分毎の履歴情報を、データ別に半日毎の情報にまとめて、アクセス履歴管理テーブル116bに格納する処理をいう。
[ステップS75] アクセス監視・履歴管理部115bは、現在時刻が更新時間であるか否かを判断する。つまり、半日分のアクセス回数を集約すべき時間であるか、換言すると、30分毎のアクセス回数が半日分取得できているかをアクセス監視・履歴管理部115bは判断する。更新時間である場合(ステップS75のYes)、ステップS76に遷移する。更新時間ではない場合(ステップS75のNo)、アクセス回数履歴管理処理を終了する。
[ステップS76] アクセス監視・履歴管理部115bは、対象データ毎に30分間のアクセス回数からアクセス履歴情報を作成する。そしてアクセス監視・履歴管理部115bは、作成したアクセス履歴情報を運用ランクとしてアクセス履歴管理テーブル116bに格納する。アクセス監視・履歴管理部115bは、上記ステップS76の処理をデータ数分実行した後に、アクセス回数履歴管理処理を終了する。
以上で、アクセス回数履歴管理処理の説明を終了する。
次に、スケジュール管理処理フローを説明する。
<スケジュール管理処理フロー>
図24は、スケジュール管理処理を示すフローチャートである。
[ステップS81] スケジュール管理・変更部115cは、スケジュール(履歴・既存)を確認する。このスケジュールの確認は、既存の履歴情報(アクセス状況)から作成される現在のスケジュールを確認して更新するものである。
[ステップS82] スケジュール管理・変更部115cは、スケジュールを更新、または、再構築すべき時間であるか否かを判断する。現在時刻がスケジュールを更新、または、再構築すべき時間である場合(ステップS82のYes)、ステップS83に遷移する。スケジュールを更新、または、再構築すべき時間ではない場合(ステップS82のNo)、ステップS91に遷移する。
[ステップS83] スケジュール管理・変更部115cは、現在のスケジュールの再構築処理を確認する。その後、ステップS84に遷移する。
[ステップS84] スケジュール管理・変更部115cは、ステップS83の確認に基づいて、再構築処理が必要であるか否かを判断する。再構築処理が必要である場合は、制御モジュール10a等がリセットされた場合や、履歴やスケジュールが存在しない場合等が挙げられる。再構築処理が必要である場合(ステップS84のYes)、ステップS85に遷移する。再構築処理が必要ではない場合(ステップS84のNo)、ステップS87に遷移する。以下、スケジュール管理・変更部115cは、ステップS85、ステップS86の処理を、対象データ数分、および、半日分の時間単位(30分間隔)毎に繰り返し実行する。
[ステップS85] スケジュール管理・変更部115cは、アクセス情報格納部116に保持された当日以外の履歴情報を元に、スケジュール管理テーブル117aに示す現在のスケジュールの欄の運用ランクを算出する。スケジュール管理・変更部115cは具体的には、当日以外の過去の履歴に基づいて、スケジュール管理テーブル117aに示す時間単位毎に過去のアクセス状況を算出する。ステップS85の処理については、後述する更新スケジュール算出処理を参照しながら詳細に説明する。その後、ステップS86に遷移する。
[ステップS86] スケジュール管理・変更部115cは、上記ステップS85で算出した運用ランクをスケジュール管理テーブル117aに格納する。
スケジュール管理・変更部115cは、上記ステップS85、S86の処理をデータ数分、および、半日分の時間単位(30分間隔)分実行した後に、ステップS87に遷移する。
[ステップS87] スケジュール管理・変更部115cは、新しいスケジュール、つまり、スケジュール管理テーブル117aの更新用運用ランクの欄のアクセス状況の更新時間を確認する。その後、ステップS88に遷移する。
[ステップS88] スケジュール管理・変更部115cは、ステップS87にて確認した更新時間に基づいて、新スケジュールの更新時間であるか否かを判断する。新スケジュールの更新時間である場合(ステップS88のYes)、ステップS89に遷移する。新スケジュールの更新時間ではない場合(ステップS88のNo)、ステップS91に遷移する。以下、スケジュール管理・変更部115cは、ステップS89、S90の処理を、対象データ数毎に繰り返し実行する。
[ステップS89] スケジュール管理・変更部115cは、対象データ数分の更新用のスケジュールを作成する、更新スケジュール算出処理を実行する。なお、スケジュール管理・変更部115cは、スケジュール管理テーブル117aに格納されている全ての履歴情報、即ち、過去の履歴情報に当日分の履歴情報を合わせたアクセス履歴に基づいて、更新用のスケジュールとしての運用ランクを算出する。つまり、スケジュール管理・変更部115cは、当日分の履歴を用いて運用ランクを更新する。この処理については、後に詳述する。
[ステップS90] スケジュール管理・変更部115cは、算出した運用ランクを、スケジュール管理テーブル117aの更新用運用ランクの欄の該当する時間帯に格納する。
スケジュール管理・変更部115cは、上記ステップS89、S90の処理をデータ数分実行した後に、ステップS91に遷移する。
[ステップS91] スケジュール管理・変更部115cは、現在時間を確認する。その後、ステップS92に遷移する。
[ステップS92] スケジュール管理・変更部115cは、ステップS91にて確認した現在時間が、スケジュールを最新の情報に更新する更新時間であるか否か、即ち、スケジュール管理テーブル117aの更新用運用ランクの欄の運用ランクを、現在の運用ランクの欄に更新するか否かを判断する。更新時間であると判断すると(ステップS92のYes)、ステップS93に遷移する。更新時間ではない場合(ステップS92のNo)、スケジュール管理・変更部115cはスケジュール管理処理を終了する。以下、スケジュール管理・変更部115cは、ステップS93、S94の処理を、対象データ数毎に繰り返し実行する。
[ステップS93] スケジュール管理・変更部115cは、スケジュール管理テーブル117aの今日の運用ランクの欄のスケジュールを、上記ステップS90において更新(格納)した更新用運用ランクの欄のスケジュールに更新する。その後、ステップS94に遷移する。
[ステップS94] スケジュール管理・変更部115cは、スケジュール管理テーブル117aの更新用運用ランクの欄のスケジュールを初期化する。
スケジュール管理・変更部115cは、ステップS93、S94の処理を対象データ数分実行してから、スケジュール管理処理を終了する。
スケジュール管理処理が終了すると、スケジュール調整処理を行う。
次に、ステップS89の更新スケジュール算出処理を詳しく説明する。
<更新スケジュール算出処理>
図25、および、図26は、更新スケジュール算出処理を示すフローチャートである。なお、図25、および、図26では運用ランクを単に「ランク」と表記している。
更新スケジュール算出処理では、運用ランクに基づいた、計算用の値(以下、「ランク数値」)と、運用ランクA、B、C、Dが登場した数(「運用ランクの数」)を管理する。
図25の処理開始時点の「ランク数値」「運用ランク数」の初期値は、それぞれ、「0」とする。
スケジュール管理・変更部115cは、更新スケジュール算出処理を、対象データ数毎に繰り返し実行する。
[ステップS89a] スケジュール管理・変更部115cは、以下のステップS89a〜S89d2:g2の処理を、対象データ数分行って、更新スケジュールを算出する。つまり、スケジュール管理・変更部115cは、全履歴情報(過去のスケジュールおよび当日のスケジュール)を元に、更新用のスケジュールとしての運用ランク(A〜D)を所定の時間帯毎(ここでは0時から30分おき)に算出する。その後、ステップS89bに遷移する。
[ステップS89b] スケジュール管理・変更部115cは、全履歴情報(格納データ)を取得し、取得したデータ(スケジュール)に対して以下のステップS89c〜S89g2の処理を、取得したデータ数分繰り返し実行し、所定の時間帯毎の優先度を算出する。
なお、スケジュール管理・変更部115cは、ステップS89bにおいて全履歴情報ではなく、所定の情報だけを取得するようにしてもよい。例えば、スケジュール管理・変更部115cは、全履歴情報のうち、更新スケジュールを作成すべき時間帯の過去のスケジュールを取得してもよい。
[ステップS89c] スケジュール管理・変更部115cは、上記ステップS89aにおいて取得した過去のスケジュールの運用ランクを判断する。判断した運用ランクが運用ランクAの場合、ステップS89d1に遷移する。運用ランクBの場合、ステップS89e1に遷移する。運用ランクCの場合、ステップS89f1に遷移する。運用ランクDの場合、ステップS89g1に遷移する。
[ステップS89d1] スケジュール管理・変更部115cは、ランク数値を1加点する。その後、ステップS89d2に遷移する。
[ステップS89d2] スケジュール管理・変更部115cは、運用ランクAの数を1加える。その後、ステップS89hに遷移する。つまり、スケジュール管理・変更部115cは、上記ステップS89bで取得した全てのデータに対するランク数値を算出し保持するとともに、取得したデータのうちの運用ランクA、B、C、Dの数を管理する。
[ステップS89e1] スケジュール管理・変更部115cは、ランク数値を2加点する。その後、ステップS89d2に遷移する。
[ステップS89e2] スケジュール管理・変更部115cは、運用ランクBの数を1加える。その後、ステップS89hに遷移する。
[ステップS89f1] スケジュール管理・変更部115cは、ランク数値を3加点する。その後、ステップS89f2に遷移する。
[ステップS89f2] スケジュール管理・変更部115cは、運用ランクCの数を1加える。その後、ステップS89hに遷移する。
[ステップS89g1] スケジュール管理・変更部115cは、ランク数値を4加点する。その後、ステップS89g2に遷移する。
[ステップS89g2] スケジュール管理・変更部115cは、運用ランクDの数を1加える。その後、ステップS89hに遷移する。
[ステップS89h] スケジュール管理・変更部115cは、全ての取得データに対して上記ステップS89e1〜S89g2の処理が終了すると、算出したランク数値の平均値を算出する。つまり、スケジュール管理・変更部115cは、算出したランク数値を取得データ数で割ることにより平均値を算出する。例えば、図8に示すスケジュール管理テーブル117aを例にとると、更新用運用ランクの欄の運用ランクは、それぞれ、A、A、B、B、Cである。スケジュール管理・変更部115cは、最初に取得した運用ランクがAであるため、ランク数値に1を加点し、運用ランクAの数を1加える。この結果、ランク数値は「1」、運用ランクAの数は「1」、その他の運用ランクの数は「0」となる。
スケジュール管理・変更部115cは、次に取得した運用ランクがAであるため、ランク数値に1を加点し、運用ランクAの数を1加える。この結果、ランク数値は「2」、運用ランクAの数は「2」、その他の運用ランクの数は「0」となる。
スケジュール管理・変更部115cは、次に取得した運用ランクがBであるため、ランク数値に2を加点し、運用ランクBの数を1加える。この結果、ランク数値は「4」、運用ランクAの数は「2」、運用ランクBの数は「1」、その他の運用ランクの数は「0」となる。
スケジュール管理・変更部115cは、次に取得した運用ランクがBであるため、ランク数値に2を加点し、運用ランクBの数を1加える。この結果、ランク数値は「6」、運用ランクAの数は「2」、運用ランクBの数は「2」、その他の運用ランクの数は「0」となる。
スケジュール管理・変更部115cは、次に取得した運用ランクがCであるため、ランク数値に3を加点し、運用ランクCの数を1加える。この結果、ランク数値は「7」、運用ランクAの数は「2」、運用ランクBの数は「2」、運用ランクCの数は「1」、運用ランクDの数は「0」となる。
スケジュール管理・変更部115cは、全ての取得データに対して上記ステップS89e1〜S89g2の処理が終了したので、算出したランク数値「7」を取得データ数「5」で割ることにより平均値1.4を算出する。
その後、ステップS89iに遷移する。
[ステップS89i] スケジュール管理・変更部115cは、算出したランク数の平均値が予め設定された複数の数値範囲のうちのどの範囲に属するかを判断する。平均値が1未満であれば(ステップS89iの1未満)ステップS89jに遷移する。平均値が1〜1.99であれば(ステップS89iの1〜1.99)ステップS89kに遷移する。平均値が2〜2.99であれば(ステップS89iの2〜2.99)ステップS89oに遷移する。平均値が3〜3.99であれば(ステップS89iの3〜3.99)ステップS89rに遷移する。平均値が4であれば(ステップS89iの4)ステップS89tに遷移する。
[ステップS89j] スケジュール管理・変更部115cは、当該データの運用ランクをAであると判断する。その後、ステップS89uに遷移する。
[ステップS89k] スケジュール管理・変更部115cは、当該データの運用ランクがAであるかBであるかを判定する判定処理を行うことを決定する。その後、ステップS89mに遷移する。
[ステップS89m] スケジュール管理・変更部115cは、ステップS89kの決定に基づき、ステップS89d1〜S89g2にて集計した各運用ランクの数に基づいて、運用ランクを判定する。具体的には、スケジュール管理・変更部115cは、運用ランクAの数と、運用ランクB〜Dの数に重み付けを施した数と比較し(ステップS89m;図中“ランク A>ランク B?”と表記)、運用ランクAの数の方が多ければ(ステップS89mのYes)、ステップS89jに遷移する。運用ランクAの数の方が少なければ(ステップS89mのNo)、ステップS89nに遷移する。
このとき、スケジュール管理・変更部115cは、運用ランクA、Bの数に対する重み係数を“1”、運用ランクCの数に対する重み係数を“1.25”、運用ランクDの数に対する重み係数を“1.5”として、下記式(1)が成り立つか否かを当該ステップにおいて判断する。
運用ランクAの数>運用ランクBの数+運用ランクCの数×1.25+運用ランクDの数×1.5・・・(1)
[ステップS89n] スケジュール管理・変更部115cは、当該データの運用ランクをBと判定する。その後、ステップS89uに遷移する。
[ステップS89o] スケジュール管理・変更部115cは、当該データの運用ランクがBであるかCであるかを判定する判定処理を行うことを決定する。その後、ステップS89pに遷移する。
[ステップS89p] スケジュール管理・変更部115cは、ステップS89oの決定に基づき、ステップS89d1〜S89g2にて集計した各運用ランクの数に基づいて、運用ランクを判定する。
具体的には、スケジュール管理・変更部115cは、運用ランクA、Bの数に重み付けを施した数と、運用ランクC、Dの数に重み付けを施した数と比較し(ステップS89p;図中“ランク B>ランク C?”と表記)、運用ランクA、Bの数の方が多ければ(ステップS89pのYes)、ステップS89nに遷移する。運用ランクA、Bの数の方が少なければ(ステップS89pのNo)、ステップS89qに遷移する。
このとき、スケジュール管理・変更部115cは、運用ランクA、Dの数に対する重み係数を“1.25”、運用ランクB、Cの数に対する重み係数を“1”として、下記式(2)が成り立つか否かを当該ステップにおいて判断する。
運用ランクAの数×1.25+運用ランクBの数>運用ランクCの数+運用ランクDの数×1.25・・・(2)
[ステップS89q] スケジュール管理・変更部115cは、当該データの運用ランクをCと判定する。その後、ステップS89uに遷移する。
[ステップS89r] スケジュール管理・変更部115cは、当該データの運用ランクがCであるかDであるかを判定する判定処理を行うことを決定する。その後、ステップS89sに遷移する。
[ステップS89s] スケジュール管理・変更部115cは、ステップS89rの決定に基づき、ステップS89d1〜S89g2にて集計した各運用ランクの数に基づいて、運用ランクを判定する。
具体的には、スケジュール管理・変更部115cは、運用ランクA〜Cの数に重み付けを施した数と、運用ランクDの数と比較し(ステップS89s;図中“ランク C>ランク D?”と表記)、運用ランクA〜Cの数の方が多ければ(ステップS89sのYes)、ステップS89qに遷移する。運用ランクA〜Cの数の方が少なければ(ステップS89sのNo)、ステップS89tに遷移する。
このとき、スケジュール管理・変更部115cは、運用ランクAの数に対する重み係数を“1.5”、運用ランクBの数に対する重み係数を“1.25”、運用ランクC、Dの数に対する重み係数を“1”として、下記式(3)が成り立つか否かを上記ステップS42において判断する。
運用ランクAの数×1.5+運用ランクBの数×1.25+運用ランクCの数>運用ランクDの数・・・(3)
[ステップS89t] スケジュール管理・変更部115cは、当該データの運用ランクをDと判定する。その後、ステップS89uに遷移する。
[ステップS89u] スケジュール管理・変更部115cは、これら判定した運用ランクを次回の更新用のスケジュールとして設定(あるいは保持)する。
スケジュール管理・変更部115cは、上述したステップS89a〜S89uの処理を対象データ数分実行し、更新スケジュール算出処理を終了する。
このように、スケジュール管理・変更部115cは、過去のスケジュール(履歴情報)に基づいて更新用のスケジュールを算出する際に、過去のスケジュールの運用ランクに一義的に与えた数値の平均値を単に用いるのではなく、各運用ランクの数に重み付けを施して算出した値にも基づいて更新スケジュールを算出するので、当該データに対する過去のアクセス傾向に則した正確な優先度付け(更新スケジュールの算出)を行うことができる。その結果、メモリ13をより有効に利用できるようになる。
つまり、スケジュール管理・変更部115cは、過去の履歴情報に基づく運用ランク数値の平均値に基づく運用ランクのランク付けに対して、頻度に応じた補正を行うべく、当該運用ランクに対極する運用ランクの数(頻度)に重みを付した判断を行うようにした。これにより、当該データに対する過去の実績を、より正確に反映させた運用ランクのランク付けを行うことができる。
なお、図25、および、図26に示すフローチャート(ステップS89a〜S89u)に示す処理は、対象とするデータ(上記ステップS89bにおいて取得するデータ)の内容によって、ステップS85の処理にもなるし、あるいは、後述する図28のステップS109の処理にもなる。
換言すると、これらステップS89、S85、およびS109の処理は、図25、および、図26に示す同一のアルゴリズムによって実現されるものである。
具体的には、上記ステップS89の処理は、上述した通りである。ステップS85の処理は、ステップS89bの処理をアクセス情報格納部116内の当日分の履歴情報以外の過去の履歴情報を対象として行う。さらに、後述する図28のステップS109の処理は、ステップS89bの処理をユーザが設定したスケジュール、または過去のスケジュールを対象として行う。
次に、スケジュール調整処理を説明する。
<スケジュール調整処理>
スケジュール調整処理は、例えば、ユーザが設定したスケジュールがある場合には、それらを考慮して、スケジュールを調整するものである。このスケジュールは、ユーザが、インタフェース(図示せず)を介して入力することができる。
図27は、ユーザが設定するスケジュールを示す図である。
ユーザが設定するスケジュールは、スケジュール管理テーブル117aと同様のフォーマットでメモリ13に格納されている。
図28は、スケジュール調整処理を示すフローチャートである。
[ステップS101] スケジュール調整部115dは、スケジュール管理テーブル117aの今日の運用ランクの欄のスケジュール(以下、処理日スケジュールともいう)を確認する。その後、ステップS102に遷移する。
[ステップS102] スケジュール調整部115dは、ステップS101の確認結果に基づいて、処理日スケジュールがスケジュール管理テーブル117aに存在するか否かを判断する。処理日スケジュールがスケジュール管理テーブル117aに存在する場合(ステップS102のYes)、ステップS103に遷移する。処理日スケジュールがスケジュール管理テーブル117aに存在しない場合(ステップS102のNo)、ステップS105に遷移する。
[ステップS103] スケジュール調整部115dは、処理日スケジュールを更新すべき更新時間を確認する。
[ステップS104] スケジュール調整部115dは、ステップS103の確認結果に基づいて、現在時刻が処理日スケジュールを更新すべき更新時間であるか否かを判断する。現在時刻が更新時間である場合(ステップS104のYes)、ステップS105に遷移する。現在時刻が更新時間ではない場合(ステップS104のNo)、スケジュール調整処理を終了する。
[ステップS105] スケジュール調整部115dは、ユーザが設定したユーザ設定スケジュール(図27参照)を確認する。その後、ステップS106に遷移する。
[ステップS106] スケジュール調整部115dは、ステップS105の確認結果に基づいて、ユーザ設定スケジュールがメモリ13に存在するか否かを判断する。ユーザ設定スケジュールが存在すれば(ステップS106のYes)、ステップS107に遷移する。
なお、このときステップS106で、上記ステップS102において処理日スケジュールがないと判断されていれば、スケジュール管理・変更部115cは、今日の運用ランクの欄に何ら情報を設定せずに、情報がない状態のまま維持する。
一方、ユーザ設定スケジュールが存在しなければ(ステップS106のNo)、ステップS114に遷移する。この場合、スケジュール管理・変更部115cは、ステップS114の処理を、対象データ数毎、および、時間単位(30分間隔)毎に繰り返し実行する。
[ステップS107] スケジュール調整部115dは、ユーザ設定スケジュールによる最適化処理を行うか否かを判断する。本実施の形態のストレージシステム100では、ユーザがインタフェース(図示せず)を介して、メモリ13の内容を決定するスケジュールを調整するにあたり、ユーザ設定スケジュールを優先させる(即ち、ユーザ設定スケジュールをそのままスケジュールとする)か、あるいは、ユーザ設定スケジュールと対応する過去のスケジュール(履歴情報)の一方または両方を優先させるか(すなわち、ユーザ設定スケジュールと対応する過去のスケジュールとの一方または両方を用いた最適化処理を実行するか)を示す優先情報を、CPU11、12の制御部115に対して設定可能に構成されている。
[ステップS108] スケジュール管理・変更部115cは、ユーザによって設定された優先情報に基づいて、最適化処理が必要であるか否かを判断する。最適化処理が必要である場合(ステップS108のYes)、ステップS109に遷移する。この場合、スケジュール管理・変更部115cは、以下のステップS109、S110の処理を、全ての時間単位分実行し、さらにS109、S110の処理の時間単位分の実行を対象データ数分実行する。
最適化処理が必要ではない場合(ステップS108のNo)、ステップS112に遷移する。
この場合、スケジュール管理・変更部115cは、ステップS112の処理を全ての時間単位分実行し、さらにステップS112の全ての時間単位分の実行を対象データ数分実行する。
[ステップS109] スケジュール調整部115dは、ユーザ設定スケジュールに基づいた処理日スケジュールの最適化を実施する。このとき、スケジュール管理・変更部115cは、上記図25、および、図26に示した処理手順(アルゴリズム)により最適化処理を実行する。具体的には、スケジュール管理・変更部115cは、上記図25のステップS89bにおいて、現在のスケジュールとユーザ設定スケジュールとを取得し、取得した処理日スケジュールとユーザ設定スケジュールとに対して、以降のステップS89c〜S89uの処理を実行する。その後、ステップS110に遷移する。
[ステップS110] スケジュール調整部115dは、現在のスケジュールとユーザ設定スケジュールとの合わせ込みを行って、処理日スケジュールを最適化し、最適化したスケジュール(即ち、“Operational Rank”)をメモリ13に一時記憶する。
スケジュール調整部115dは、上記ステップS109、S110の処理を対象データ数分、および、時間単位分実行したら、ステップS111に遷移する。
[ステップS111] スケジュール調整部115dは、ステップS110にてメモリ13に一時記憶した処理日スケジュールを、スケジュール管理テーブル117aの今日の運用ランクの欄に格納する。スケジュール調整部115dはまた、スケジュール調整管理テーブル117bの運用ランクの欄に一時記憶した処理日スケジュールを、格納する。スケジュール調整部115dはさらに、RAIDグループ情報管理テーブル118aの書き込みアクセスランクの欄にも一時記憶した処理日スケジュールを、格納する。その後、スケジュール調整処理を終了する。
[ステップS112] スケジュール調整部115dは、ユーザ設定スケジュールをメモリ13に一時記憶する。
スケジュール調整部115dは、上記ステップS112の処理を対象データ数分、および、時間単位分実行したら、ステップS113に遷移する。
[ステップS113] スケジュール調整部115dは、ステップS112にてメモリ13に一時記憶したユーザ設定スケジュールをスケジュール調整管理テーブル117bの今日の運用ランクの欄に格納する。その後、スケジュール調整処理を終了する。
[ステップS114] スケジュール調整部115dは、対象データ数分全てに対して、半日分における所定時間帯毎(30分単位間隔)に、処理日スケジュール(更新用スケジュール)をそのまま今日のスケジュールに設定する。
スケジュール調整部115dは、上記ステップS114の処理を対象データ数分、および、時間単位分実行したら、スケジュール調整処理を終了する。
このように、スケジュール調整部115dは、ユーザが設定したユーザ設定スケジュールが存在し、且つ、ユーザによって最適化の指示があれば、過去の履歴情報に基づいて作成した処理日スケジュール(現在のスケジュール)とユーザ設定スケジュールとの合わせ込みを行って、処理日スケジュールを最適化する。これにより、ユーザの意思にも過去の傾向にも合致した処理日スケジュールを設定することができる。その結果、メモリ13をより有効に使用できる。
さらに、ユーザの設定により、処理日スケジュールをユーザ設定スケジュールに変更することもできるので、ユーザの利便性が向上する。
以上述べたように、ストレージシステム100によれば、SSD書き込み制御部115aが、SSD書き込み制御処理において、運用ランクに応じて、データをSSDに書き込むか、プール領域に退避するのかを決定するようにした。これにより、SSD構成RAIDグループにデータが高頻度で書き込まれ、早期に書き換え可能回数の上限に達してしまうことを回避することができる。従って、ストレージシステム100の信頼性を向上させることができる。
また、更新処理を行うようにしたので、アクセス状況に応じたより精密な制御を行うことができる。
なお、本実施の形態では、RLU毎に運用ランクを設定したスケジュール調整管理テーブル117bを作成した。しかし、これに限らず、このスケジュール調整管理テーブル117bの代わりに、データ毎の運用ランクを設定したスケジュール調整管理テーブルを作成するようにしてもよい。
図29は、データ毎の運用ランクを設定したスケジュール調整管理テーブルを示す図である。
スケジュール調整管理テーブル117cは、日にち毎に設けられている。
スケジュール調整管理テーブル117cには、時間、データ1の運用ランク、データ2の運用ランク、・・・、データnの運用ランクの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
時間の欄には、アクセス履歴管理テーブル116bと同じ単位での時間が設定されている。
各データの運用ランクの欄には、それぞれ、各スケジュール管理テーブル117aの更新予測値の運用ランクに、ユーザが設定した運用ランクが考慮された結果、作成された運用ランクがまとめられて格納されている。
このようなスケジュール調整管理テーブル117cを使用しても、スケジュール調整管理テーブル117bを使用した場合と同様の効果が得られる。
次に、第3の実施の形態のストレージシステムについて説明する。
<第3の実施の形態>
以下、第3の実施の形態のストレージシステムについて、前述した第2の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
第3の実施の形態のストレージシステムは、アクセス回数履歴管理処理が第2の実施の形態と異なり、それ以外は第2の実施の形態と同様である。
第3の実施の形態のアクセス回数履歴管理処理は、S76において、以下の履歴情報確認処理、および、SSDランク補正処理を行うことで、運用ランクを決定し、格納する。以下、これらの処理について順番に説明する。
<履歴情報確認処理>
図30、および、図31は、履歴情報確認処理を示すフローチャートである。
[ステップS121] アクセス監視・履歴管理部115bは、直前の短時間履歴情報として、アクセス頻度管理テーブル116aに格納された1分間隔のアクセス回数を所定時間分(ここでは30分間分)取得する。その後、ステップS122に遷移する。
アクセス監視・履歴管理部115bは、対象データ全てに対して後述するステップS122〜S165の処理を行う。
[ステップS122] アクセス監視・履歴管理部115bは、上記ステップS121で取得した直前30分間の履歴情報の1分間毎の平均値(以下、負荷平均値という)を算出する。その後、ステップS123に遷移する。
アクセス監視・履歴管理部115bは、1分間毎のアクセス回数(つまり、30個の履歴情報)全てに対して、後述するステップS123〜S136の処理を行う。
[ステップS123] アクセス監視・履歴管理部115bは、1分間毎のアクセス回数を確認する。その後、ステップS124に遷移する。
[ステップS124] アクセス監視・履歴管理部115bは、ステップS123にて確認した結果に基づいて、1分間毎のアクセス回数が、かかる30分間の前半部分のものか、後半部分のものかを判断する。
なお、アクセス監視・履歴管理部115bは、現在に近い方の最新の15分間のアクセス回数を前半部分と判断し、30分間のうちの古い方の15分間を後半部分と判断する。
前半部分のものである場合(ステップS124の前半)、ステップS125に遷移する。後半部分のものである場合(ステップS124の後半)、ステップS131に遷移する。
[ステップS125] アクセス監視・履歴管理部115bは、負荷平均値と、当該アクセス回数(実測値)との差分を確認する。その後、ステップS126に遷移する。
[ステップS126] アクセス監視・履歴管理部115bは、ステップS125の確認結果に基づいて、実測値が平均値以上か否かを判断する。実測値が平均値以上である場合(ステップS126のYes)、ステップS127に遷移する。実測値が平均値より小さい場合(ステップS126のNo)、ステップS129に遷移する。
[ステップS127] アクセス監視・履歴管理部115bは、前半部分で高負荷(アクセス頻度が増加)傾向であることを示す前半高負荷値(初期値は0)に1点を加点する。その後、ステップS128に遷移する。
[ステップS128] アクセス監視・履歴管理部115bは、前半部分における高負荷差分の合計値を表す前半高負荷差分値(初期値は0)に、上記ステップS125において算出された実測値と平均値との差(絶対値)を加点する。その後、ステップS137に遷移する。
[ステップS129] アクセス監視・履歴管理部115bは、前半部分で低負荷(アクセス頻度が減少)傾向であることを示す前半低負荷値(初期値は0)に1点を加点する。その後、ステップS130に遷移する。
[ステップS130] アクセス監視・履歴管理部115bは、前半部分における低負荷差分の合計値を表す前半低負荷差分値(初期値は0)に、上記ステップS125において算出された実測値と平均値との差(絶対値)を加点する。その後、ステップS137に遷移する。
[ステップS131] アクセス監視・履歴管理部115bは、アクセス監視・履歴管理部115bは、負荷平均値と、当該アクセス回数との差分を確認する。その後、ステップS132に遷移する。
[ステップS132] アクセス監視・履歴管理部115bは、ステップS131の確認結果に基づいて、実測値が平均値以上か否かを判断する。実測値が平均値以上の場合(ステップS132のYes)、ステップS135に遷移する。実測値が平均値より小さい場合(ステップS132のNo)、ステップS133に遷移する。
[ステップS133] アクセス監視・履歴管理部115bは、後半部分で低負荷(アクセス頻度が減少)傾向であることを示す後半低負荷値(初期値は0)に1点を加点する。その後、ステップS134に遷移する。
[ステップS134] アクセス監視・履歴管理部115bは、後半部分における低負荷差分の合計値を表す後半低負荷差分値(初期値は0)に、上記ステップS131において算出された実測値と平均値との差(絶対値)を加点する。その後、ステップS137に遷移する。
[ステップS135] アクセス監視・履歴管理部115bは、後半部分で高負荷(アクセス頻度が増加)傾向であることを示す後半高負荷値(初期値は0)に1点を加点する。その後、ステップS136に遷移する。
[ステップS136] アクセス監視・履歴管理部115bは、後半部分における高負荷差分の合計値を表す後半高負荷差分値(初期値は0)に、上記ステップS131において算出された実測値と平均値との差(絶対値)を加点する。その後、ステップS137に遷移する。
[ステップS137] アクセス監視・履歴管理部115bは、上記ステップS123〜S136の処理を直前の30分間の1分単位のアクセス回数の全てに対して実行した後に、前半部分について負荷加点を確認する。つまり、アクセス監視・履歴管理部115bは、上記ステップS127において算出した前半高負荷値と、上記ステップS129において算出した前半低負荷値とを比較する。その後、ステップS138に遷移する。
[ステップS138] アクセス監視・履歴管理部115bは、前半部分が高負荷傾向であるか低負荷傾向であるかを判断する。ここで、前半高負荷値と前半低負荷値との差分がサンプルの1/4(つまり、ここでは前半15分間分の15個のデータの1/4である3.75)以上ではない場合には、アクセス監視・履歴管理部115bは、高負荷と低負荷とが略同一であると判断して(ステップS138の“高負荷≒低負荷”)、ステップS139に遷移する。
また、前半高負荷値が前半低負荷値よりも4以上多い場合には、アクセス監視・履歴管理部115bは、前半部分が高負荷の可能性があると判断して(ステップS138の“高負荷≫低負荷”)、ステップS140に遷移する。
また、前半低負荷値が前半高負荷値よりも4以上多い場合には、アクセス監視・履歴管理部115bは、前半部分が低負荷の可能性があると判断して(ステップS138の“高負荷≪低負荷”)、ステップS143に遷移する。
[ステップS139] アクセス監視・履歴管理部115bは、前半部分に負荷変化(増減傾向)はないと判断する。その後、ステップS146に遷移する。
[ステップS140] アクセス監視・履歴管理部115bは、負荷平均値と前半高負荷差分値の平均値(即ち、前半高負荷差分値をステップS126において“上”(高負荷)と判定されたサンプル数で割った値)との差分を算出する前半高負荷差分加点比較処理を行う。その後、ステップS141に遷移する。
[ステップS141] アクセス監視・履歴管理部115bは、ステップS140の比較結果に基づいて、算出した差分が平均値に対して5%未満であれば(ステップS141の“5%未満”)、ステップS139に遷移する。算出した差分が平均値に対して5%以上であれば(ステップS141の“5%以上”)、ステップS142に遷移する。
[ステップS142] アクセス監視・履歴管理部115bは、アクセス監視・履歴管理部115bは、前半部分が高負荷傾向(増加傾向;前半高負荷)と判断する。その後、ステップS146に遷移する。
[ステップS143] アクセス監視・履歴管理部115bは、負荷平均値と前半低負荷差分値の平均値(即ち、前半低負荷差分値をステップS126において“下”(低負荷)と判定されたサンプル数で割った値)との差分を算出する前半低負荷差分加点比較処理を行う。
[ステップS144] アクセス監視・履歴管理部115bは、ステップS143の比較結果に基づいて、算出した差分が平均値に対して5%未満であれば(ステップS144の“5%未満”)、ステップS139に遷移する。
一方、算出した差分が平均値に対して5%以上であれば(ステップS144の“5%以上”)、ステップS145に遷移する。
[ステップS145] アクセス監視・履歴管理部115bは、前半部分が低負荷傾向(減少傾向;前半低負荷)と判断する。その後、ステップS146に遷移する。
[ステップS146] アクセス監視・履歴管理部115bは、上記ステップS137〜S145に示した前半部分に対する処理と同様の処理を、後半部分に対しても実行する。
なお、上記ステップS137〜S145の処理と、ステップS146〜S154の処理とはそれぞれ対応しており、各処理において対象とするデータが、後半低負荷値、後半高負荷値、後半低負荷差分値、および後半高負荷差分値である点のみが異なっている。従って、ステップS147〜S154については、その詳細な説明を省略する。
[ステップS155] アクセス監視・履歴管理部115bは、後半部分について、後半負荷変化なし(ステップS148)か、後半高負荷(ステップS151)か、後半低負荷(ステップS154)のいずれかを判断すると、前半部分の負荷傾向(前半負荷)と後半部分の負荷傾向(後半負荷)とを比較する。その後、ステップS156に遷移する。
[ステップS156] アクセス監視・履歴管理部115bは、ステップS155の比較結果に基づいて、前半負荷がどのように判断されたかを、上記ステップS139、S142、S145の判断結果に基づいて判断する。
ここで、アクセス監視・履歴管理部115bは、前半負荷が高負荷であると判断すると(ステップS156の“高負荷”)、ステップS157に遷移する。
また、アクセス監視・履歴管理部115bは、前半負荷の変化がないと判断すると(ステップS156の“変化なし”)、ステップS161に遷移する。
また、アクセス監視・履歴管理部115bは、前半負荷が低負荷であると判断すると(ステップS156の“低負荷”)、ステップS163に遷移する。
[ステップS157] アクセス監視・履歴管理部115bは、後半負荷がどのように判断されたかを、上記ステップS148、S151、S154の判断結果に基づいて判断する。そして、アクセス監視・履歴管理部115bは、後半負荷が逆に低負荷であると判断すると(ステップS157の“低負荷”)、ステップS158に遷移する。後半負荷の変化がないと判断すると(ステップS157の“変化なし”)、ステップS159に遷移する。
さらに、アクセス監視・履歴管理部115bは、後半負荷も高負荷であると判断すると(ステップS157の“高負荷”)、ステップS160に遷移する。
[ステップS158] アクセス監視・履歴管理部115bは、直前のアクセス傾向が、増加傾向化が大きい(高負荷化大)と判断する。その後、ステップS165に遷移する。
[ステップS159] アクセス監視・履歴管理部115bは、直前のアクセス傾向が、増加傾向化が小さい(高負荷化小)と判断する。その後、ステップS165に遷移する。
[ステップS160] アクセス監視・履歴管理部115bは、直前のアクセス傾向が、増減変化なし(負荷変化なし)と判断する。その後、ステップS165に遷移する。
[ステップS161] アクセス監視・履歴管理部115bは、後半負荷の傾向を判断する。ここで、アクセス監視・履歴管理部115bは、後半負荷が低負荷であると判断すると(ステップS161の“低負荷”)、ステップS159に遷移する。
そして、後半負荷の変化がないと判断すると(ステップS161の“変化なし”)、直前のアクセス傾向が、増減変化なし(負荷変化なし)と判断する(ステップS160)。
さらに、アクセス監視・履歴管理部115bは、後半負荷が高負荷であると判断すると(ステップS161の“高負荷”)、ステップS162に遷移する。
[ステップS162] アクセス監視・履歴管理部115bは、直前のアクセス傾向が、減少傾向化が小さい(低負荷化小)と判断する。その後、ステップS165に遷移する。
[ステップS163] アクセス監視・履歴管理部115bは、後半負荷が低負荷であると判断すると(ステップS163の“低負荷”)、ステップS160に遷移する。
一方、アクセス監視・履歴管理部115bは、後半負荷の変化がないと判断すると(ステップS163の“変化なし”)、ステップS162に遷移する。
さらに、アクセス監視・履歴管理部115bは、後半負荷が高負荷であると判断すると(ステップS163の“高負荷”)、ステップS164に遷移する。
[ステップS164] アクセス監視・履歴管理部115bは、直前のアクセス傾向が、減少傾向化が大きい(低負荷化大)と判断する。その後、ステップS165に遷移する。
[ステップS165] アクセス監視・履歴管理部115bは、上述した負荷判定結果をメモリ13に保存する。
アクセス監視・履歴管理部115bは、上述したステップS123〜S165の処理を、処理対象の全データに対して実行し、履歴情報確認処理を終了する。
このように、アクセス監視・履歴管理部115bは、アクセス履歴管理テーブル116bに運用ランクを格納する際に、当該スケジュールを作成してから当該スケジュールに基づく更新処理を開始するまでの間に収集された直前のアクセス回数(履歴)に基づいて、直前のアクセス傾向を判断する。
その際、アクセス監視・履歴管理部115bは、直前の所定時間分のアクセス回数を、前半部分と後半部分とに分け、それぞれについて増減傾向を判断し、それら前半部分の増減傾向と後半部分の増減傾向とを比較することにより、直前のアクセス傾向を判断するので、かかる判断を正確に行うことができる。
また、増減傾向を判断するにあたり、負荷平均値に対するアクセス頻度の大小(前半高負荷値、前半低負荷値、後半高負荷値、後半低負荷値)だけを比較する(ステップS138、S147)だけでなく、負荷平均値に対する実際の差分値(前半高負荷差分値、前半低負荷差分値、後半高負荷差分値、後半低負荷差分値)に基づいて、増減傾向を判断するので、直前のアクセス傾向をより正確に判断できる。
さらにその際、アクセス監視・履歴管理部115bは、差分値の平均値が、負荷平均値に対して5%未満の差しかなければ(ステップS141、S144、S150、S153の“5%未満”)、負荷変化なしと判断するので(ステップS139、S148)、負荷値に基づけば高負荷傾向または低負荷傾向であると判断できるものであっても、実際の差分値が殆どなければ変化なしと判断することにより、増減傾向の判断をより正確なものにできる。
次に、SSDランク補正処理を説明する。
<SSDランク補正処理>
図32は、SSDランク補正処理を示すフローチャートである。なお、図32では運用ランクを単に「ランク」と表記している。
[ステップS171] スケジュール管理・変更部115cは、スケジュール調整部115dの処理日スケジュールを取得する。そして、スケジュール管理・変更部115cは、ステップS172〜S198の処理を、処理対象のデータ数分実行する。
[ステップS172] スケジュール管理・変更部115cは、取得した処理日スケジュールにおける現在時刻の運用ランク(Operational Rank)を確認する。その後、ステップS173に遷移する。
[ステップS173] スケジュール管理・変更部115cは、ステップS172にて確認した運用ランクに基づいて、データ展開制御のベース値を設定する。具体的には、運用ランクAである場合(ステップS173のランクA)、ステップS174に遷移する。運用ランクBである場合(ステップS173のランクB)、ステップS175に遷移する。運用ランクCである場合(ステップS173のランクC)、ステップS176に遷移する。運用ランクDである場合(ステップS173のランクD)、ステップS177に遷移する。
[ステップS174] スケジュール管理・変更部115cは、退避最優先モードに設定する。その後、ステップS178に遷移する。
[ステップS175] スケジュール管理・変更部115cは、退避優先モードに設定する。その後、ステップS178に遷移する。
[ステップS176] スケジュール管理・変更部115cは、退避可能モードに設定する。その後、ステップS178に遷移する。
[ステップS177] スケジュール管理・変更部115cは、退避抑止モードに設定する。その後、ステップS178に遷移する。
[ステップS178] スケジュール管理・変更部115cは、履歴情報の付け合せ処理として、図30、および、図31に示す履歴情報確認処理によって獲得したアクセス傾向(負荷傾向)を示す情報から、実際のデータ展開制御処理の運用ランクを決定する処理を開始する。
[ステップS179] スケジュール管理・変更部115cは、当該データの負荷傾向(図31のステップS165において保存された負荷判定結果)を確認する。負荷傾向が高負荷傾向大であれば(ステップS179の高負荷傾向大)、ステップS180に遷移する。負荷傾向が高負荷傾向小であれば(ステップS179の高負荷傾向小)、ステップS181に遷移する。負荷傾向が変更なしであれば(ステップS179の変更なし)、ステップS182に遷移する。負荷傾向が低負荷傾向小であれば(ステップS179の低負荷傾向小)、ステップS183に遷移する。負荷傾向が低負荷傾向大であれば(ステップS179の低負荷傾向大)、ステップS184に遷移する。
[ステップS180] スケジュール管理・変更部115cは、予め設定された重み基準値(例えば、1)を1.2倍して補正用の重みを算出する。その後、ステップS185に遷移する。
[ステップS181] スケジュール管理・変更部115cは、重み基準値を1.1倍して補正用の重みを算出する。その後、ステップS185に遷移する。
[ステップS182] スケジュール管理・変更部115cは、重み基準値を1.0倍して補正用の重みを算出する。その後、ステップS185に遷移する。
[ステップS183] スケジュール管理・変更部115cは、重み基準値を0.9倍して補正用の重みを算出する。その後、ステップS185に遷移する。
[ステップS184] スケジュール管理・変更部115cは、重み基準値を0.8倍して補正用の重みを算出する。その後、ステップS185に遷移する。
[ステップS185] スケジュール管理・変更部115cは、図30のステップS128またはステップS130において算出した履歴情報の差分結果としての前半高負荷差分または前半低負荷差分を、補正用の重みに反映する。具体的には、スケジュール管理・変更部115cは、下記、式(4)に示す計算を行う。
補正用の重み+(差分結果/100)・・・(4)
ここで、スケジュール管理・変更部115cは、上記ステップS179のチェック結果が、高負荷傾向大、または、高負荷傾向小であった場合には、上記図30のステップS128において算出した前半高負荷差分を上記式(4)の差分結果の値として採用する。このとき、スケジュール管理・変更部115cは、前半高負荷差分をそのまま正の値として差分結果に使用する。
一方、スケジュール管理・変更部115cは、上記ステップS179のチェック結果が、低負荷負荷傾向小、または、低負荷傾向大であった場合には、上記図30のステップS130において算出した前半低負荷差分を上記式(4)の差分結果の値として採用する。
このとき、スケジュール管理・変更部115cは、前半低負荷差分を負の値として差分結果に使用する。
また、スケジュール管理・変更部115cは、上記ステップS179のチェック結果が、変化なしであった場合には、差分結果の値として0を使用する。その後、ステップS186に遷移する。
[ステップS186] スケジュール管理・変更部115cは、上記図30のステップS122において算出した履歴情報の負荷平均値に補正用の重みの値を反映する。具体的には、負荷平均値に上記ステップS185において処理を施された補正用の重みを積算する。その後、ステップS187に遷移する。
[ステップS187] スケジュール管理・変更部115cは、ステップS186の反映結果を判定する。反映結果(即ち、上記ステップS186による処理結果)が、10以上であれば(ステップS187の10〜)、ステップS188に遷移する。
また、スケジュール管理・変更部115cは、反映結果が5以上、9.99以下であれば(ステップS187の5〜9.99)、ステップS189に遷移する。反映結果が1以上、4.99以下であれば(ステップS187の1〜4.99)、ステップS190に遷移する。反映結果が0以上、0.99以下であれば(ステップS187の0〜0.99)、ステップS191に遷移する。
[ステップS188] スケジュール管理・変更部115cは、当該対象データの補正用の運用ランクを運用ランクAと判定する。その後、ステップS192に遷移する。
[ステップS189] スケジュール管理・変更部115cは、当該対象データの補正用の運用ランクを運用ランクBと判定する。その後、ステップS192に遷移する。
[ステップS190] スケジュール管理・変更部115cは、当該対象データの補正用の運用ランクを運用ランクCと判定する。その後、ステップS192に遷移する。
[ステップS191] スケジュール管理・変更部115cは、当該対象データの補正用の運用ランクを運用ランクDと判定する。その後、ステップS192に遷移する。
なお、これら運用ランクA〜Dは、スケジュールにおける優先度としての運用ランクと同様の意義を持つものであるが、反映結果は、30分間の平均値(1分間当たりの値)であるので、上記ステップS187の分岐条件に基づいて、同義のランク付けを行うことができる。
[ステップS192] スケジュール管理・変更部115cは、反映結果の結果値と補正用の運用ランクとをメモリ13に記憶する。その後、ステップS193に遷移する。
[ステップS193] スケジュール管理・変更部115cは、上記ステップS173における判定結果であるベース値としての運用ランクと、補正用の運用ランク(反映結果)との照合を行う。具体的には、スケジュール管理・変更部115cは、ベース値としての運用ランク、および、補正用の運用ランクをそれぞれ数値化して平均値を算出する。ここでは、運用ランクAは1、運用ランクBは2、運用ランクCは3、運用ランクDは4として、ベース値としての運用ランクおよび補正用の運用ランクをそれぞれ数値化して、これら2つの値の平均値を求める。その後、ステップS194に遷移する。
[ステップS194] スケジュール管理・変更部115cは、ステップS193にて求めた平均値を用いてデータ退避優先度判定処理を開始する。
[ステップS195] スケジュール管理・変更部115cは、ステップS173にて行ったランク判定により得られたモードに基づいて、データを退避が優先であるか否かを判断する。スケジュール管理・変更部115cは、モードが、退避最優先モード、または、退避優先モードであれば(ステップS195のYes)、ステップS196に遷移する。データ退避優先情報が、退避可能モード、または、退避抑止モードであれば(ステップS195のNo)、ステップS197に遷移する。
[ステップS196] スケジュール管理・変更部115cは、データ退避優先判定処理として、上記ステップS193において算出した平均値の余りを切り捨てた値に基づいて、当該対象データの最終的な運用ランクを判定する処理を行う。
例えば、平均値が1.5であった場合には、スケジュール管理・変更部115cは、その平均値における0.5を切り捨てて平均値を1.0として取り扱い、上記ステップS193において運用ランクを数値化した値を用いて、その平均値をランク化する。
具体的には、スケジュール管理・変更部115cは、平均値が1であれば運用ランクAと判定し、平均値が2であれば運用ランクBと判定し、平均値が3であれば運用ランクCと判定し、平均値が4であれば運用ランクDと判定する。その後、ステップS198に遷移する。
このように、スケジュール管理・変更部115cは、データ退避優先時には、平均値の余りを切り捨てることによって、平均値を極力小さい値にして当該データの最終的な優先度を高めるようにする。
[ステップS197] スケジュール管理・変更部115cは、通常運用優先判定処理として、上記ステップS193において算出した平均値の余りを繰り上げた値に基づいて、当該対象データの最終的な運用ランクを判定する処理を行う。
例えば、平均値が1.5であった場合には、スケジュール管理・変更部115cは、その平均値における0.5を繰り上げて平均値を2.0として取り扱い、その平均値を上記ステップS196の処理と同様にランク化する。その後、ステップS198に遷移する。
このように、スケジュール管理・変更部115cは、通常運用優先時には、平均値の余りを繰り上げることによって、平均値を通常通り取り扱って当該データの最終的な優先度を求める。
[ステップS198] スケジュール管理・変更部115cは、上記ステップS196、または、ステップS197において判定した運用ランクを、最終的な運用ランクとしての個別制御用ランク(Operational Rank)としてアクセス履歴管理テーブル116bの運用ランクの欄に設定する。
スケジュール管理・変更部115cは、上述したステップS172〜S198までの処理を、対象データ数分実行し、SSDランク補正処理を終了する。
この第3の実施の形態のストレージシステムによれば、第2の実施の形態のストレージシステム100と同様の効果が得られる。
そして、第3の実施の形態のストレージシステムによれば、さらに、スケジュール管理・変更部115cは、データ展開処理を行う前に直前のアクセス傾向に基づいて、スケジュールを当該アクセス傾向に合わせて確実に補正することができる。つまり、スケジュール管理・変更部115cは、直前のアクセス傾向に基づいてスケジュールを動的に変化させることができる。従って、スケジュールを決定してからアクセス傾向が変化した場合等であっても、補正後のアクセス傾向に基づいてSSD書き込み制御処理を行うことにより、メモリ13を有効に活用することができる。
なお、上述した図30、および、図31の各ステップにおいて用いた全ての数値は、本発明において限定されるものではなく、上記図30、および、図31の処理の趣旨を逸脱しない範囲で種々変更することができる。
以上、本発明のストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
また、本発明は、前述した実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御モジュール10aが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等がある。光磁気記録媒体には、MO(Magneto-Optical disk)等がある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することもできる。
以上の第1〜第3の実施の形態に関し、さらに以下の付記を開示する。
(付記1) コンピュータに、
ホスト装置から送信されたデータの記憶媒体への書き込みアクセス状況に応じて前記データ毎のアクセス頻度を識別するアクセス頻度情報を作成する作成手順、
前記作成手順により作成された前記アクセス頻度情報に基づいて、データ退避用に設けられた退避領域に退避されたデータを前記記憶媒体に書き込むか、前記退避領域に退避させた状態を保持するかを判断する判断手順、
前記判断手順の判断に応じて前記退避領域に退避させたデータを前記記憶媒体に書き込む書き込み手順、
を実行させることを特徴とするストレージ制御プログラム。
(付記2) 前記アクセス頻度情報は、前記記憶媒体へのアクセス頻度に応じたデータ書き込みの判断基準が段階的に設定されており、前記アクセス頻度が最も低い段階にある場合は、前記退避領域に退避させたデータを前記記憶媒体に書き込むよう設定されていることを特徴とする付記1記載のストレージ制御プログラム。
(付記3) 前記アクセス頻度情報は、前記記憶媒体へのアクセス頻度が最も低い段階以外の段階において、前記記憶媒体へのアクセスが所定時間なかった場合に前記退避領域に退避させたデータを前記記憶媒体に書き込むと判断することを特徴とする付記2記載のストレージ制御プログラム。
(付記4) 前記アクセス頻度が最も高い段階では、前記退避領域に退避させたデータを前記退避領域に退避させた状態を保持することを特徴とする付記2記載のストレージ制御プログラム。
(付記5) 前記判断手順では、前記退避領域の残量がデータ量未満である場合は、前記アクセス頻度にかかわらず前記データを前記記憶媒体に書き込むことを特徴とする付記1記載のストレージ制御プログラム。
(付記6) 前記コンピュータに、さらに、前記ホスト装置からの前記データの読み出し要求に対し、前記記憶媒体より先に前記退避領域にデータが存在するか否かを判断するデータ読み出し判断手順を実行させることを特徴とする付記1記載のストレージ制御プログラム。
(付記7) 前記データ読み出し判断手順では、前記退避領域にデータが存在する場合、全データか一部データかを判断し、一部データの場合、前記退避領域のデータと前記記憶媒体に記憶されたデータとを読み出すことを特徴とする付記6記載のストレージ制御プログラム。
(付記8) コンピュータが、
ホスト装置から送信されたデータの記憶媒体への書き込みアクセス状況に応じて前記データ毎のアクセス頻度を識別するアクセス頻度情報を作成し、
作成されたアクセス頻度情報に基づいて、データ退避用に設けられた退避領域に退避されたデータを前記記憶媒体に書き込むか、前記退避領域に退避させた状態を保持するかを判断し、
前記判断に応じて前記退避領域に退避させたデータを前記記憶媒体に書き込む、
ことを特徴とするストレージ制御方法。
(付記9) ホスト装置から送信されたデータの記憶媒体への書き込みアクセス状況に応じて前記データ毎のアクセス頻度を識別するアクセス頻度情報を作成する作成部と、
前記作成部により作成された前記アクセス頻度情報に基づいて、データ退避用に設けられた退避領域に退避されたデータを前記記憶媒体に書き込むか、前記退避領域に退避させた状態を保持するかを判断する判断部と、
前記判断部の判断に応じて前記退避領域に退避させたデータを前記記憶媒体に書き込む書き込み部と、
を有することを特徴とするストレージ制御装置。
1 ストレージ制御装置
1a 入出力制御部
1b アクセス監視部
1c アクセス制御部
1d キャッシュ
2 ストレージ装置群
2a、2b ストレージ装置
3 ホスト装置
10a、10b、10c 制御モジュール
11c 作成部
12c 判断部
13 メモリ
13c 書き込み部
14 チャネルアダプタ
15 デバイスアダプタ
18 コントローラエンクロージャ
20 ドライブエンクロージャ群
20a〜20d ドライブエンクロージャ
30 ホスト
100 ストレージシステム
111 I/O制御部
112 システム制御部
113 装置監視部
114 アクセス情報収集部
114a アクセスカウンタ
115 制御部
115a SSD書き込み制御部
115b アクセス監視・履歴管理部
115c スケジュール管理・変更部
115d スケジュール調整部
116 アクセス情報格納部
116a アクセス頻度管理テーブル
116b アクセス履歴管理テーブル
117 スケジュール格納部
117a スケジュール管理テーブル
117b、117c スケジュール調整管理テーブル
118 RAIDグループ情報格納部
118a RAIDグループ情報管理テーブル
118b 退避データ管理テーブル

Claims (6)

  1. コンピュータに、
    ホスト装置から送信されたデータの半導体メモリへの書き込みアクセス状況に応じてデータ毎の書き込みアクセス頻度を求め
    ータ退避用に設けられた退避領域に退避されたデータを前記半導体メモリに書き込むか、前記退避領域に退避させた状態を保持するかについて、当該データの書き込みアクセス頻度の大きさにより判断し
    記退避領域に退避されたデータのうち、前記半導体メモリに書き込むと判断されたデータを前記半導体メモリに書き込む
    処理を実行させることを特徴とするストレージ制御プログラム。
  2. データ毎の書き込みアクセス頻度を、当該書き込みアクセス頻度の大きさにより複数の段階に分け
    前記退避領域に退避されたデータの書き込みアクセス頻度が最も低い段階ある場合は、当該データを前記半導体メモリに書き込むと判断することを特徴とする請求項1記載のストレージ制御プログラム。
  3. 前記退避領域に退避されたデータの書き込みアクセス頻度が最も低い段階以外の段階であり、当該データの前記半導体メモリへの書き込みアクセスが所定時間なかった場合に、当該データを前記半導体メモリに書き込むと判断することを特徴とする請求項2記載のストレージ制御プログラム。
  4. 前記退避領域に退避されたデータの書き込みアクセス頻度が最も高い段階である場合は当該データを前記退避領域に退避させた状態を保持すると判断することを特徴とする請求項2または3記載のストレージ制御プログラム。
  5. コンピュータが、
    ホスト装置から送信されたデータの半導体メモリへの書き込みアクセス状況に応じてデータ毎の書き込みアクセス頻度を求め
    ータ退避用に設けられた退避領域に退避されたデータを前記半導体メモリに書き込むか、前記退避領域に退避させた状態を保持するかについて、当該データの書き込みアクセス頻度の大きさにより判断し、
    記退避領域に退避されたデータのうち、前記半導体メモリに書き込むと判断されたデータを前記半導体メモリに書き込む、
    ことを特徴とするストレージ制御方法。
  6. ホスト装置から送信されたデータの半導体メモリへの書き込みアクセス状況に応じてデータ毎の書き込みアクセス頻度を求める作成部と、
    ータ退避用に設けられた退避領域に退避されたデータを前記半導体メモリに書き込むか、前記退避領域に退避させた状態を保持するかについて、当該データの書き込みアクセス頻度の大きさにより判断する判断部と、
    記退避領域に退避されたデータのうち、前記半導体メモリに書き込むと判断されたデータを前記半導体メモリに書き込む書き込み部と、
    を有することを特徴とするストレージ制御装置。

JP2010087890A 2010-04-06 2010-04-06 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置 Expired - Fee Related JP5521716B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010087890A JP5521716B2 (ja) 2010-04-06 2010-04-06 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置
US13/064,508 US8516206B2 (en) 2010-04-06 2011-03-29 Computer-readable medium storing storage control program, storage control method, and storage control device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010087890A JP5521716B2 (ja) 2010-04-06 2010-04-06 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置

Publications (2)

Publication Number Publication Date
JP2011221648A JP2011221648A (ja) 2011-11-04
JP5521716B2 true JP5521716B2 (ja) 2014-06-18

Family

ID=44710983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010087890A Expired - Fee Related JP5521716B2 (ja) 2010-04-06 2010-04-06 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置

Country Status (2)

Country Link
US (1) US8516206B2 (ja)
JP (1) JP5521716B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819363B2 (en) * 2008-02-12 2014-08-26 Fujitsu Limited Data copying method
JP5585235B2 (ja) * 2010-06-21 2014-09-10 富士通株式会社 ストレージ制御装置、ストレージ制御方法、ストレージシステム
US9569449B2 (en) * 2010-11-18 2017-02-14 International Business Machines Corporation Method and apparatus for autonomic discovery of sensitive content
US20120265932A1 (en) * 2011-04-13 2012-10-18 Jibbe Mahmoud K Method to increase the flexibility of configuration and/or i/o performance on a drive array by creation of raid volume in a heterogeneous mode
US9424128B2 (en) * 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
US9417803B2 (en) * 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
JP5782962B2 (ja) * 2011-09-27 2015-09-24 富士通株式会社 Raidグループ制御装置
US20150278353A1 (en) * 2014-03-31 2015-10-01 Linkedln Corporation Methods and systems for surfacing content items based on impression discounting
CN110187832B (zh) * 2014-05-21 2023-08-22 华为技术有限公司 一种数据操作的方法、设备和系统
JP2016057795A (ja) * 2014-09-09 2016-04-21 富士通株式会社 ストレージ制御装置,ストレージシステム及びストレージ制御プログラム
US10509699B2 (en) * 2017-08-07 2019-12-17 International Business Machines Corporation Zone aware request scheduling and data placement
CN110300138B (zh) * 2018-03-22 2022-04-08 浙江宇视科技有限公司 图片业务调度方法、装置、管理节点及计算机可读存储介质
CN110879818B (zh) * 2019-10-12 2022-11-18 北京字节跳动网络技术有限公司 一种获取数据的方法、装置、介质和电子设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03280125A (ja) * 1990-03-29 1991-12-11 Yokogawa Electric Corp ファイル装置
JPH07244600A (ja) * 1994-03-03 1995-09-19 Fujitsu Ltd バックアップファイル管理方法及び装置
JPH07307096A (ja) * 1994-05-13 1995-11-21 Fujitsu Ltd 半導体補助記憶装置
JP2003167781A (ja) * 2001-11-30 2003-06-13 Matsushita Electric Ind Co Ltd 磁気ディスク装置およびデータ読み出し制御方法
JP2007193441A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
JP4749255B2 (ja) * 2006-07-03 2011-08-17 株式会社日立製作所 複数種類の記憶デバイスを備えたストレージシステムの制御装置
JP2008052313A (ja) 2006-08-22 2008-03-06 Hitachi Ltd シリコンディスク記憶装置のアクセス制御方法
JP4933211B2 (ja) * 2006-10-10 2012-05-16 株式会社日立製作所 ストレージ装置、制御装置及び制御方法
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
JP2009163647A (ja) 2008-01-10 2009-07-23 Hitachi Ltd ディスクアレイ装置
JP5159421B2 (ja) * 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
JP5180865B2 (ja) * 2009-02-10 2013-04-10 株式会社日立製作所 ファイルサーバ、ファイル管理システムおよびファイル管理方法
WO2010122596A1 (en) * 2009-04-21 2010-10-28 Hitachi, Ltd. Storage system, control methods for the same and programs
US8285952B2 (en) * 2009-09-17 2012-10-09 Hitachi, Ltd. Method and apparatus to utilize large capacity disk drives
JP5406363B2 (ja) * 2009-10-27 2014-02-05 株式会社日立製作所 プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法
JP5079841B2 (ja) * 2010-04-15 2012-11-21 株式会社日立製作所 ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置

Also Published As

Publication number Publication date
US8516206B2 (en) 2013-08-20
US20110246730A1 (en) 2011-10-06
JP2011221648A (ja) 2011-11-04

Similar Documents

Publication Publication Date Title
JP5521716B2 (ja) ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置
US8719531B2 (en) System and method for performing data retention that incorporates environmental conditions
US8880801B1 (en) Techniques for reliability and availability assessment of data storage configurations
US10067840B1 (en) Life expectancy data migration
JP4901316B2 (ja) ストレージシステム及び記憶制御装置
US20150100721A1 (en) Storage system and method of control for storage system
JP6119533B2 (ja) ストレージ装置,ステージング制御方法及びステージング制御プログラム
JP6216897B2 (ja) ストレージシステム
JP2007156597A (ja) ストレージ装置
WO2013140435A1 (en) Data storage system comprising non-volatile semiconductor storage device, and storage control method
US9632945B2 (en) Destage grouping for sequential fast write tracks
US8161251B2 (en) Heterogeneous storage array optimization through eviction
US11016889B1 (en) Storage device with enhanced time to ready performance
JP2009157749A (ja) 制御装置,ストレージシステム,及びメモリ制御方法
US20160196085A1 (en) Storage control apparatus and storage apparatus
JP2019074897A (ja) ストレージ制御装置、及びプログラム
JP6191604B2 (ja) 情報処理装置、アクセス制御プログラム、およびアクセス制御方法
US9940192B2 (en) Non-volatile semiconductor storage apparatus
TWI570738B (zh) 具有使用歷程記錄的主記憶體模組以及此主記憶體模組於電腦系統之應用
JP5820078B2 (ja) 記憶装置システム
KR20140041408A (ko) 저장 위치 속성 및 데이터 사용량 통계에 기초하여 데이터 저장을 위한 저장 위치 선택
US11216336B2 (en) Storage apparatus and memory device control method
JP2020038475A (ja) ストレージ制御装置およびストレージ制御プログラム
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
US8762646B2 (en) Destaging of write ahead data set tracks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

R150 Certificate of patent or registration of utility model

Ref document number: 5521716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees