以下、本発明の幾つかの実施形態を説明するが、概要の一つとしては、例えば以下の通りである。
ストレージシステムに、複数のRAIDグループ、複数の論理ユニット及び複数の物理記憶装置のうちの少なくとも一つの記憶装置を指定した節電指示を管理コンソールから受け付ける節電指示受信部と、その節電指示で指定されている記憶装置に対応した一以上の物理記憶装置を節電する節電制御部とを備える。管理コンソールが、例えば、複数の上位コンピュータを管理している場合、複数の上位コンピュータで連携が図れる。
一つの実施形態では、ストレージシステムに、更に、論理ユニット属性識別部が備えられる。論理ユニット属性識別部は、受信した節電指示で指定されている記憶装置に対応した論理ユニットの論理ユニット属性を識別する。この場合、節電制御部は、該識別された論理ユニット属性が所定の論理ユニット属性であるか否かを判断し、所定の論理ユニット属性あれば、上記指定されている記憶装置に対応した一以上の物理記憶装置を節電し、所定の論理ユニット属性でなければ、該記憶装置に対応した一以上の物理記憶装置を節電しない。ここで、「節電する」とは、管理コンソールからの節電指示に従い、物理記憶装置に節電(例えば電源オフ或いは後述のスピンダウン)を指示する(例えば節電実行コマンドを出す)ことである。一方、「節電しない」とは、物理記憶装置に節電を指示しないことであり、例えば、管理コンソールからの節電指示を拒否すると言い換えても良い。
このストレージシステムには、例えば、複数のRAIDグループ、複数の論理ユニット及び複数の物理記憶装置の互いの対応関係を表した情報である対応関係情報と、複数の論理ユニットの各々についての論理ユニット属性を表した情報である論理ユニット属性情報とを記憶する記憶域がある。論理ユニット属性識別部は、この記憶域にある対応関係情報や論理ユニット属性情報を参照することにより、論理ユニット属性を識別することができる。
単純に管理者からの指示通りに物理記憶装置を節電する場合、ストレージシステムに悪影響がでるおそれが考えられる。例えば、ストレージシステムが有する複数のLUには、上位コンピュータには提供されない属性のLUがあり、その属性を有するLUは、上位コンピュータには提供されないため、上位コンピュータからのI/Oコマンド(例えばライトコマンド或いはリードコマンド)で指定されることは無いが、ストレージシステム内での処理により該LUにI/Oが発生することがある。この場合に、該LUが管理者により節電対象として指定された場合、そのLUにはストレージシステム内部でI/Oが発生しているにも関わらずそのLUに属する一以上の物理記憶装置が節電されてしまうことになるが、そうなると、データが正しく記憶されないおそれがある。上記の実施形態によれば、このような問題を回避することが期待できる。
一つの実施形態では、複数の物理記憶装置の各々は、例えばディスク装置である。節電指示受信部は、管理コンソールからスピンダウン指示を受信し、節電制御部は、指定されている記憶装置に対応した一以上のディスク装置にスピンダウンを指示する。また、節電制御部は、各ディスク装置について、スピンダウンを指示した場合にスピンダウン回数を更新し、該更新後のスピンダウン回数が所定の回数閾値を超えた場合に、警告を管理コンソールに送信することができる。また、それに代えて、該スピンダウン回数を越えたディスク装置の使用を禁止させても良い。具体的には、例えば、該ディスク装置を閉塞しても良い。その際、該閉塞されるディスク装置が属するRAIDグループ内の一以上の他のディスク装置からデータを読出し、該読み出したデータそれ自体、又は、該読み出したデータを用いた所定の演算を行うことにより得られたデータを、スペアのディスク装置に格納しても良い。
一つの実施形態では、上述した所定の論理ユニット属性として、例えば、I/O系又は障害系を採用することができる。I/O系の論理ユニットとは、該I/O系及び障害系以外の論理ユニット属性の論理ユニットよりもI/Oの頻度が高いことが期待される論理ユニットである。一方、障害系の論理ユニットとは、障害が検出された論理ユニット、或いは、障害が検出されたRAIDグループ或いはディスク装置に対応した論理ユニットである。
例えば、ストレージシステムがデータコピー部を備えているとする。データコピー部は、一方をプライマリの論理ユニットとし他方をセカンダリの論理ユニットとした論理ユニットペアを構成し、プライマリの論理ユニットから前記セカンダリの論理ユニットにデータをコピーすることができる。このデータコピー部が、論理ユニットペアが第一種のペアステータスの場合には、プライマリの論理ユニットに更新があってもセカンダリの論理ユニットを更新せず、論理ユニットペアが第二種のペアステータスの場合には、セカンダリの論理ユニットを更新するよう構成されているとする。この場合、前述したI/O系の論理ユニットとは、第二種のペアステータスの論理ユニットペアの少なくともセカンダリの論理ユニットとすることができる。
また、例えば、ストレージシステムに、ホストコンピュータからのI/Oコマンドに従うI/Oの対象であるデータを一時的に記憶するキャッシュメモリ領域を更に備えられているとする。キャッシュメモリ領域上のデータとしては、複数の物理記憶装置に記憶済みのデータであるクリーンデータと、複数の物理記憶装置に記憶されていないダーティデータとがある。キャッシュメモリ領域上のダーティデータを該ダーティデータの書込み先となる論理ユニットに対応した一以上の物理記憶装置に書くことに失敗した場合と、該物理記憶装置にエラーがあった場合との両方の場合に、該物理記憶装置にはデータが記憶されない。ここで、前述した障害系の論理ユニットとしては、該エラーのあった物理記憶装置に対応した論理ユニット、或いは該物理記憶装置を有するRAIDグループに対応した論理ユニットを採用し、キャッシュメモリ領域上のダーティデータを書きこむことに失敗した場合の該ダーティデータの書込み先の論理ユニットとはしないことができる。
一つの実施形態では、前述した節電制御部は、識別された論理ユニット属性が所定の論理ユニット属性でなくても、予め定められた処理が実行されている最中の場合には、指定されている記憶装置に対応した一以上の物理記憶装置を節電しないことができる。
一つの実施形態では、節電制御部は、上記識別された論理ユニット属性が所定の論理ユニット属性でない場合、指定されている記憶装置に対応した論理ユニットを指定したI/Oコマンドを一定時間内にホストコンピュータから受信するか否かの監視であるI/O監視を実行し、該一定時間内にそのようなI/Oコマンドの受信があった場合には、指定されている記憶装置に対応した一以上の物理記憶装置を節電しないことができる。また、例えば、節電制御部は、I/O優先か節電優先かを判定し、I/O優先ならば、I/O監視を実行し、節電優先ならば、指定されている記憶装置に対応した論理ユニットを指定したI/Oコマンドを受信しても該I/Oコマンドを処理しないI/O保留処理、或いは、指定されている記憶装置に対応した論理ユニットをホストコンピュータにおいてアンマウントすることのアンマウント指示をホストコンピュータ又は管理コンソールに送信することを実行しても良い。また、例えば、複数の論理ユニットのうちの二以上の論理ユニットが仮想的に一つの論理ユニットとしてホストコンピュータに提供されるようになっている場合、節電制御部は、上記指定されている記憶装置に対応した論理ユニットが、その仮想的な一つの論理ユニットである統合論理ユニットを構成する論理ユニットである場合、該統合論理ユニットを構成する他の論理ユニットについても、上記のI/O監視を実行してもよい。
一つの実施形態では、節電制御部は、複数のRAIDグループのうちの或るRAIDグループに属する物理記憶装置で障害が検出された場合、該或るRAIDグループに属する節電中の他の物理記憶装置の該節電を解除して、該障害の復旧処理を実行し、その後、自動的に、該他の物理記憶装置を再び節電することができる。「節電を解除する」とは、例えば、節電解除(例えば電源オン或いは後述のスピンアップ)を物理記憶装置に指示することである。
一つの実施形態では、ストレージシステムに、ホストコンピュータから受信したI/Oコマンドを処理するI/O制御部を更に備えることができる。I/O制御部は、受信したI/Oコマンドで指定されている論理ユニットに対応した一以上の物理記憶装置が節電中ならば、該受信したI/Oコマンドを処理しないことができる。具体的には、例えば、I/O制御部は、該I/Oコマンドに対して、後述の“Not Ready”をホストコンピュータに応答することができる。また、例えば、I/O制御部は、受信したI/Oコマンドで指定されている論理ユニットに対応した一以上の物理記憶装置が節電中でなくても、該論理ユニットが、統合論理ユニットの構成要素であって、該統合論理ユニットを構成する他の論理ユニットに対応した一以上の物理記憶装置が節電中ならば、該受信したI/Oコマンドを処理しないこともできる。
一つの実施形態では、節電制御部は、ストレージシステムにおける所定範囲の節電中でない物理記憶装置の数に基づいて、該所定範囲における、節電中の複数の物理記憶装置のうちの何台を同時に節電解除するかを制御することができる。更に、節電制御部は、節電中でない物理記憶装置の数のうち、I/Oが発生する物理記憶装置が幾つあるかを基に、同時に節電解除する物理記憶装置の台数を制御することができる。なお、所定範囲としては、ストレージシステム全体、RAIDグループ、或いは、複数の物理記憶装置を備えた二以上の筐体の各々とすることができる。この一つの実施形態では、節電中の物理記憶装置は、管理コンソールからの節電指示に従う節電のみならず、例えば、一定時間I/Oの発生しない物理記憶装置を検出し該検出された物理記憶装置を節電することにより節電状態になった物理記憶装置であっても良い。すなわち、この一つの実施形態では、どのような方法で各物理記憶装置が節電になっても良い。
一つの実施形態では、キャッシュメモリ領域上のダーティデータを該ダーティデータの書込み先となる論理ユニットに対応した一以上の物理記憶装置に書くことの失敗があった場合、節電制御部が、該ダーティデータがキャッシュメモリ領域に残っている状態で、該一以上の物理記憶装置を節電することができる。
一つの実施形態では、ストレージシステムにイベント実行制御部を備えることができる。イベント実行制御部は、ストレージシステムで発生したイベントを実行するか否かを、該イベントに関わる物理記憶装置が節電されるかどうかに応じて制御することができる。
一つの実施形態では、管理コンソールに、ストレージシステムのどの物理記憶装置で節電になっているかを表す情報を取得する情報取得部と、管理者所望の指示を受け付け、受けた指示をストレージシステムに対して行う指示部とを備えることができる。指示部は、管理者所望の指示を受けた場合、上記取得された情報を参照することにより、上記受けた指示に従う処理を実行すると節電になっている物理記憶装置にI/Oが発生することになるかどうかを判別し、I/Oが発生することを識別した場合には、該受けた指示をストレージシステムに行うことを拒否することができる。
上述した各部は、手段と読み替えても良い。上述した各部は、ハードウェア(例えば回路)、コンピュータプログラム、或いはそれらの組み合わせ(例えば、コンピュータプログラムを読み込んで実行する一又は複数のCPU)によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源(例えばメモリ)から読み込むことができる。その記憶資源には、CD−ROMやDVD(Digital Versatile Disk)等の記録媒体を介してインストールすることもできるし、インターネットやLAN等の通信ネットワークを介してダウンロードすることもできる。
ところで、詳述する各実施形態において、ディスク装置としては、例えば、図24Bに例示する構成のディスク装置を採用することができる。そのディスク装置103は、例えば、表示部(例えばLED(Light Emitting Diode))105と、ディスク106と、ディスク制御部104とを備える。ディスク106としては、ハードディスク、DVD(Digital
Versatile Disk)など種々のディスクを採用することができる。従って、ディスク装置103としては、ハードディスクドライブ(HDD)、DVDドライブなどの種々の装置を採用することができる。本実施形態では、ディスク装置103はHDDであるとする。HDDとしては、種々のHDD、例えば、SATA(Serial
Attached SCSI)或いはFC(Fibre Channel)のI/Fを有するHDDを採用することができる。このディスク装置103は、後述のディスク装置103A、103Bと同じ装置とすることができる。
ディスク制御部104は、例えば、外部からのI/Oコマンドに従ってディスク106に対しデータのI/Oを行うI/O処理部104Aと、I/Oコマンドと異なる種類の制御コマンド(例えば、後述のスピン指示コマンド、Inquiryコマンド、或いはSES(SCSI Enclosure Services)コマンド)を受信し応答する制御コマンド処理部104Bと、表示部105の表示を制御する表示制御部104Cと、ディスク106の回転を制御するディスク回転制御部104Dとを備える。各部104A〜104Dは、ハードウェア回路、コンピュータプログラム或いはそれらの組み合わせで実現することができる。表示制御部105は、このディスク装置103がスピンアップであるかスピンダウンであるかに応じて異なる態様(例えばLEDの点滅パターン)での表示を行うことができる。
「スピンアップ」とは、ディスク装置103内のディスク106が高速に回転している状態である。ディスク106を高速に回転させることを、以下、「スピンアップさせる」と言う。また、「スピンダウン」とは、ディスク装置103内のディスク106の回転が停止している状態である(それに限らず、スピンアップの場合よりも低速に回転していてもよい)。ディスク106の回転を停止させることを、以下、「スピンダウンさせる」と言う。スピンダウンにおいて、ディスク制御部104では、制御コマンド処理部104Bのみが動作できれば良く、他の部104A、104C及び104Dは動作できなくて良い。例えば、制御コマンド処理部104Bの電源が他の部104A、104C及び104Dの電源から分かれていれば、該他の部の電源をオフにし制御コマンド処理部104Bの電源のみオンにするといった制御が行われても良い。なお、こうすると、表示制御部104Cの電源がオフとなり、故に、表示部105に何も表示されなくなるが、表示部105に何も表示されていないことがスピンダウンを意味するとすれば、表示部105を見た人間は、このディスク装置103がスピンアップにあるのかスピンダウンにあるのかを判別することが可能である。
制御コマンド処理部104Bが、外部からスピン指示コマンドを受け付け、解釈し、処理することができる。例えば、スピン指示コマンドでスピンアップが指定されていれば、制御コマンド処理部104Bは、ディスク回転制御部104Dにディスク106をスピンアップさせ、表示制御部105にスピンアップに応じた表示を実行させる。一方、スピン指示コマンドでスピンダウンが指定されていれば、制御コマンド処理部104Bは、ディスク回転制御部104Dにディスク106をスピンダウンさせ、表示制御部105にスピンダウンに応じた表示を実行させる。その際、制御コマンド処理部104Bが、I/O処理部104A、表示制御部104C及びディス回転制御部104Dの電源をオフにさせても良い。
ディスク装置103に代えて、他種の物理記憶装置を採用しても良い。その場合、例えば、物理記憶装置における記憶媒体が、ディスク106に相当し、該記憶媒体に対する該物理記憶装置の外部からのインタフェース部が、ディスク制御部104に相当する。
以下、具体的に幾つかの実施形態を説明する。なお、以下の実施形態では、例えば、スピンダウンに代えて、ディスク装置の電源オフであっても良いし、スピンアップに代えて、ディスク装置の電源オンであっても良い。電源オフにすれば、スピンダウンに比してより消費電力を節約することが期待できるし、その場合であっても、上述したスピンアップ診断の適用は可能である。一方、電源オフではなくスピンダウンとすることで、節電を実現しつつ、所定種類のコマンドを受けて応答を返せる状態にすることができる。言い換えれば、節電と後述のスピンダウン診断との両方を実現することが可能となる。
<第一の実施形態>。
図1は、本発明の第一実施形態に係るストレージシステムの外観の一例を示す。
ストレージシステム100には、複数の筐体がある。複数の筐体は、例えば、一つの基本筐体101Aと、一以上の増設筐体101Bとで構成される。一以上の増設筐体101Bが全て一つの基本筐体101Aに直結されても良いし、基本筐体101Aを最上流として一以上の増設筐体101Bがカスケード状に連結されても良い。以下、基本筐体101Aと増設筐体101Bのそれぞれの構成要素について、同種の構成要素については、同一の親番号(例えば111)と異なる子符号(例えばA、B)を付すこととする。
基本筐体101Aと増設筐体101Bについて、基本筐体101Aを例に採り説明する。その後、増設筐体101Bについて、基本筐体101Aとの相違点を主に説明する。
基本筐体101Aには、例えば、メインコントローラ107や複数の冷却ファン111Aなどが搭載される。また、基本筐体101Aには、複数のディスク装置103Aが挿される。各ディスク装置103AにはLED(Light Emitting Diode)105Aが搭載されている。具体的には、例えば、ディスク装置103Aの背面が挿されるようになっており、LED105Aは、ディスク装置103Aの正面にある。ディスク装置103の省電力ステータス(詳細は後述)に応じて、LED105Aの点滅のパターンが制御される。これにより、基本筐体101Aを正面から見た人間は、どのディスク装置103がどんな省電力ステータスにあるのかを把握することができる。
増設筐体101Bには、メインコントローラ107に代えて、サブコントローラ111が搭載される。また、ディスク装置103Bを搭載できる数が、基本筐体101Aにおいてディスク装置103Aを搭載できる数より多くても良い(勿論、同数であっても良いし少なくても良い)。
図2Aは、本発明の第一の実施形態に係るシステム全体の構成例を示す。
ホストコンピュータ121が、通信ネットワーク(例えばSAN(Storage Area
Network))或いは専用線等を介して、ストレージシステム100の基本筐体101Aに接続される。基本筐体101Aは、通信ネットワーク(例えばLAN(Local
Area Network))或いは専用線等を介して、管理コンソール171に接続される。
ホストコンピュータ121は、ストレージシステム100にI/Oコマンドを送信する。I/Oコマンドは、例えば、ライトコマンド或いはリードコマンドである。I/Oコマンドでは、I/O先として、例えばLUN(Logical Unit Number)及びLBA(Logical Brock Address)が指定される。ここで指定されるLUNは、後述するホストLUNである。
管理コンソール171は、コンピュータの一種であり、例えば、表示装置175、入力装置(例えばキーボードやマウス)179、メモリ177、CPU173、及び通信インタフェース装置(ストレージシステム100と通信するためのインタフェース装置)181を備えている。管理コンソール171は、複数のコンピュータで構成されても良い。例えば、メモリ177やCPU173がサーバにあって、表示装置175や入力装置179はクライアントにあっても良い。管理コンソール171は、一以上のホストコンピュータ121及びストレージシステム100のうちの少なくとも一以上のホストコンピュータ121を管理することができる。
ストレージシステム100は、LU(Logical
Unit)間のデータコピーを実行する機能(その際、適時に、LUペアのペアステータスを変更していく機能)、LU間のデータマイグレーションを実行する機能、NASとして動作する機能、LUをフォーマットする機能のうちの少なくとも一つの機能を有することができる。
基本筐体101Aのメインコントローラ107は、例えば、ホストコンピュータ11と通信するインタフェース装置(例えば通信ポート、以下、ホストI/F)132と、管理コンソール171と通信するインタフェース装置(例えば通信ポート、以下、管理I/F)139と、ディスク装置103Aと通信するインタフェース装置(例えば通信ポート、以下、ディスクI/F)136Aと、CPU133と、メモリ134と、タイマ391Aと、転送制御回路141Aと、筐体間I/F143Aとを備える。転送制御回路141Aに、ホストI/F132、管理I/F139、筐体間I/F143A、メモリ134、ディスクI/F136A及びCPU133が接続されており、それらの各々と他の各々との通信は該転送制御回路141Aを介して行われる。ディスクI/F136Aに複数のディスク装置103Aが接続される。
増設筐体101Bのサブコントローラ111は、メインコントローラ107よりもシンプルな構成であっても良い。サブコントローラ111には、転送制御回路141Bに、ディスクI/F136B及び筐体間I/F143Aが接続される。
筐体間I/F143Aと筐体間I/F143Bとが、互いに接続され、それぞれ二重化されている。メインコントローラ107が、ホストコンピュータ121からのI/Oコマンドに応答して、或るディスク装置103BにI/Oを行う場合、一方の筐体間I/F143A又は143Bに障害が生じても、他方の筐体間I/F143A及び143Bを介して該或るディスク装置103にI/Oを行うことができる。
図2Bに例示するように、複数のディスク装置103A及び103Bのうちの二以上のディスク装置によりRAIDグループが構成される。RAIDグループは、RAID(Redundant Array of Independent (or
Inexpensive) Disks)を構成するグループである。RAIDグループは、同一筐体内のディスク装置だけで構成されても良いし、異なる筐体内のディスク装置が混在していても良い。RAIDグループにより提供される記憶空間を区切ることでLUを提供することができる。LUは、RAIDグループを構成する全てのディスク装置を跨っていても良いし、一つのディスク装置により提供されても良い。
以上が、システム全体の構成例である。上記構成は、一例にすぎず、上記の構成に限定する必要は無い。例えば、メインコントローラ107及びサブコントローラ111の上述した構成は一例であり、他の構成を採用することもできる。また、メインコントローラ107に対する各ディスク装置103A、103Bの接続は、例えば、図3Aに例示するように、FC−AL(Fibre Channel Arbitrated Loop)201を介した接続であっても良いし、図3Bに例示するように、SAS(Serial
Attached SCSI)エキスパンダ203を介した接続であっても良い。
図4Aは、メインコントローラ107のメモリ134に用意される領域、並びに、記憶される情報及びコンピュータプログラムの説明図である。
メモリ134に用意される領域として、例えば、キャッシュメモリ領域251がある。キャッシュメモリ領域251には、I/O制御プログラム261により、ホストコンピュータ121からのI/Oコマンドに従うI/O対象のデータ(ディスク装置103A及び/又は103Bに書かれるデータ、或いは、ディスク装置103A及び/又は103Bから読み出されたデータ)が一時的に格納される。
メモリ134に記憶される情報として、例えば、LU管理テーブル255及びディスク管理テーブル257がある。これらのテーブル255及び257については、後に詳細に説明する。
メモリ134に記憶される、CPU133により実行されるコンピュータプログラムとして、メインコントローラ107を制御するためのプログラム(以下、制御プログラム)353がある。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するCPUによって処理が行われるものとする。制御プログラム353には、例えば、ホストコンピュータ121からのI/Oコマンドの処理を制御するI/O制御プログラム261、管理コンソール171からスピン指示を受け付け該スピン指示に応答してスピン制御を行うスピン指示受付プログラム263、各ディスク装置103A及び103Bのチェックを行うディスクチェックプログラム265、及び、発生するイベント(イベントについては後に詳述する)の実行を許可するか否かを省電力ステータスを基に制御するイベント実行制御プログラム267が含まれる。各コンピュータプログラム261、263,265及び267が行う処理については後に詳述する。
図4Bは、管理コンソール171のメモリ177に記憶されるコンピュータプログラムの説明図である。
メモリ177に記憶される、CPU173により実行されるコンピュータプログラムとして、管理コンソール171によるシステム管理を制御するためのプログラム(以下、管理プログラム)271がある。管理プログラム271には、例えば、管理者から記憶装置の指定を受け付け記憶装置の指定を含んだスピン指示をストレージシステム100に送信するスピン指示プログラム273、管理者によるストレージシステム100に対する設定を許可するか否かを省電力ステータスを基に制御する設定制御プログラム275、及び、管理している情報を表示する管理表示プログラム277が含まれる。管理表示プログラム277は、例えば、LU管理テーブル255やディスク管理テーブル257をストレージシステム100から取得し、取得したテーブル255及び257をそのまま或いは編集して表示装置178に表示することができる(例えば、後述するスピンダウン回数などを、トレース情報として表示することができる)。他のコンピュータプログラム273及び275が行う処理については後に詳述する。
図5は、LU管理テーブル255の構成例を示す。
LU管理テーブル255は、ストレージシステム100にある各LUを管理するためのテーブルである。LU管理テーブル255には、一つのLUにつき(この図の説明では、その一つLUを「対象LU」と言う)、RG
ID、ストレージLUN、ホストLUN、LU属性、省電力ステータス、I/O応答ステータス、通常ダーティデータ情報及び障害ダーティデータ情報が対応付けられている。
RG IDは、対象LUが属するRAIDグループの識別子である。
ストレージLUNは、ストレージシステム100内で認識される、対象LUのLUN(Logical
Unit Number)であって、ホストLUNと異なる種類のLUNである。
ホストLUNとは、ホストコンピュータ121が指定する、対象LUのLUNである。言い換えれば、ホストLUNは、ホストコンピュータ121で認識されるLUNである。それに対し、前述したストレージLUNは、ホストコンピュータ121からの指定は受けないLUNである。
LU属性とは、対象LUに関する属性のことである。LU種類という言葉で言い代えても良い。本実施形態では、LU属性は、通常、I/O、障害の3つに大別することができる。それら各LU属性については後に詳述する。
省電力ステータスとは、対象LUに属するディスク装置の省電力に関するステータスである。省電力ステータスには、複数種類のステータス、例えば、スピンアップ、I/O監視、スピンダウン処理中、スピンダウン及びスピンアップ処理中の5種類がある。省電力ステータス“スピンアップ”とは、対象LUに属するディスク装置がスピンアップの状態、別の言い方をすれば、節電が解除されている状態を意味する。省電力ステータス“I/O監視”とは、対象LUを指定したI/Oコマンドの受信の有無が監視されている状態、別の言い方をすれば、対象LUに属するディスク装置をスピンダウンすること仮に決定した状態(監視中にI/Oコマンドがあったらその決定がキャンセルされる状態)を意味する。省電力ステータス“スピンダウン処理中”とは、対象LUに属するディスク装置をスピンダウンすることを正式に決定してからスピンダウンになるまでの状態を意味する。省電力ステータス“スピンダウン”とは、対象LUに属するディスク装置がスピンダウンの状態であることを意味する。省電力ステータス“スピンアップ処理中”とは、対象LUに属するディスク装置をスピンアップすることを決定してからスピンアップになるまでの状態を意味する。対象LUが二以上のディスク装置に跨っていて、該二以上のディスク装置がそれぞれ異なる省電力ステータスである場合、対象LUの省電力ステータスとしては、それら全ての省電力ステータスが書かれても良いし、制御プログラム253により任意に選択された省電力ステータスが書かれても良い。
I/O応答ステータスとは、ホストコンピュータ121からのI/Oコマンドで対象LUが指定されている場合にホストコンピュータ121にどう応答するかを意味する値である。I/O応答ステータスには、複数種類のステータス、例えば、通常、Not Readyの2種類がある。I/O応答ステータス“通常”とは、I/Oコマンドを受信したならばI/O制御プログラム261が該I/Oコマンドを通常通りに処理する(例えば、該処理に成功したならばOKをホストコンピュータ121に返答し、該処理に成功したならNGをホストコンピュータ121に返答する)ことを意味するステータスである。一方、I/O応答ステータス“Not
Ready”とは、I/Oコマンドを受信したならばI/O制御プログラム261が該I/Oコマンドを処理せず“Not Ready”という値をホストコンピュータ121に返答することを意味するステータスである。ホストコンピュータ121は、“Not
Ready”とう値をI/Oコマンドの戻り値として受信した場合には、該I/Oコマンドで指定したホストLUNに対応するLUが準備されていないことを認識することができる。
通常ダーティデータ情報とは、対象LUに書かれるべき通常ダーティデータに関する情報である。その情報としては、例えば、キャッシュメモリ領域251のどこにあるかを表すアドレス、及び、該通常ダーティデータのデータサイズである。なお、通常ダーティデータとは、キャッシュメモリ領域251に記憶されておりディスク装置に未だ書込まれていないデータ(ダーティデータ)であって、障害ダーティデータではないダーティデータのことである。ダーティデータに対し、例えば、対象LUに記憶済みのデータは、クリーンデータである。
障害ダーティデータ情報とは、対象LUに書かれるべき障害ダーティデータに関する情報である。その情報としては、例えば、キャッシュメモリ領域251のどこにあるかを表すアドレス、及び、該通常ダーティデータのデータサイズである。なお、障害ダーティデータとは、対象LUに属するディスク装置への書込みに何らかの理由で失敗し未だ該ディスク装置に書込まれていないダーティデータのことである。
以上が、LU管理テーブル255についての説明である。
このテーブル255において、異なるRAIDグループ“0”、“1”に属する複数のストレージLUN“1”、“2”が、一つのホストLUN“1”に対応している。これを、概念的に表すと、図24Aの通りになる。このような対応付けにより、ホストコンピュータ121には、ホストLUN“1”に対応した一つのLUとして見えるが、ストレージシステム100内部では、その一つのLUを構成する複数のLUを認識できる。本実施形態では、このように、複数のLUを仮想的に一つのLUとすることができ、その一つのLUのことを「統合LU」と呼ぶ。
図6は、ディスク管理テーブル257の構成例を示す。
ディスク管理テーブル257は、ストレージシステム100にある各ディスク装置103A、103Bを管理するためのテーブルである。ディスク管理テーブル257には、一つのディスク装置につき(この図の説明では、その一つディスク装置を「対象ディスク装置」と言う)、RG
ID、ディスクID、ストレージLU範囲、省電力ステータス、スピンダウン回数、次回チェック開始アドレス及び前回チェック完了時間が対応付けられている。
RG IDは、対象ディスク装置が属するRAIDグループの識別子である。なお、RG IDのカラムに“スペア”と書かれているのは、予備のディスク装置(以下、スペアディスク装置)であることを意味する。スペアディスク装置は、例えば、或るRAIDグループに属する或るディスク装置からデータが読み出せない場合のデータの書込み先とされる(詳細は後述する)。スペアディスク装置の管理方法は、図示の方法に限らず、他の方法、例えばスペアディスク装置を管理するための専用のテーブルを準備し、そのテーブルで管理されても良い。
ディスクIDは、対象ディスク装置の識別子である。なお、この識別子は、筐体番号とディスク装置番号との組み合わせで構成されている。従って、この識別子から、どの筐体にあるどのディスク装置であるかを判別することができる。なお、これに限らず、筐体番号とディスク装置番号のそれぞれのカラムがあっても良い。
ストレージLU範囲は、対象ディスク装置が属するLU範囲を表す情報である。この情報は、例えば、ストレージLUN(図6では括弧の前にある数字)と、ストレージLUNに対応したLUにおけるアドレス範囲(図6では括弧内の数字)との組み合わせにより表すことができる。
省電力ステータスとは、対象ディスク装置の省電力に関するステータスである。省電力ステータスには、前述した複数種類のステータスがある。
スピンダウン回数とは、対象ディスク装置についてスピンダウンを行った回数、言い換えれば、高速に回転しているディスクの回転を停止させた回数である。
次回チェック開始アドレスとは、対象ディスク装置におけるディスクのアドレスであって、後述するスピンアップ診断におけるエラーチェックでチェックする場所を意味する。
前回チェック完了時間とは、対象ディスク装置についての直前回のスピンアップ診断が完了した時間を表す。
以下、本実施形態で行われる処理の流れを説明する。なお、以下の説明では、ステップを「S」と略記する。
図7は、スピンダウンの指示及び実行に関わる全体的な処理の流れの一例を示す。
S101で、管理コンソール171において、スピン指示プログラム273が、管理者からの操作に従い、グラフィカル・ユーザ・インタフェース(GUI)を表示装置175に表示する。このGUIは、例えば、RAIDグループ、LU及びディスク装置のうちの少なくとも一つの単位でスピンダウン指示を受け付けることができるようになっている。具体的には、例えば、該GUIは、RG
ID、ストレージLUN及びディスクIDのうちの少なくとも一つの指定を受けることができるようになっている。管理者は、入力装置179を使用して、所望のRG ID、ストレージLUN及びディスクIDのうちの少なくとも一つを指定したり、スピンダウンを指示したりすることができる。
S102で、スピン指示プログラム273が、そのGUIを介して、管理者所望の記憶装置(RAIDグループ、LU及びディスク装置のうちの少なくとも一つ)の指定とスピンダウンの指示とを受ける。
S103で、管理者からのスピンダウン指示を契機に、スピン指示プログラム273が、管理者所望の記憶装置を指定したスピンダウン指示(コマンド)を作成し、該スピンダウン指示を、ストレージシステム100に送信する。その後、スピン指示プログラム273は、ストレージシステム100からの応答を待つ状態となる(S104)。
S105で、ストレージシステム100において、スピン指示受付プログラム263が、スピンダウン指示を管理コンソール171から受信する。
S106で、スピン指示受付プログラム263は、該スピンダウン指示で指定されている記憶装置に対応したLU(以下、「スピンダウン対象LU」と呼ぶ)のLU属性や、現在のストレージシステム100内部の状況がスピンダウン条件を満たしているかどうかを判断する。ここでのスピンダウン条件としては、スピンダウン対象LUのLU属性が所定のLU属性ではなく、且つ、スピンダウン禁止に属する所定の処理がストレージシステム100内部で実行されていないことである。スピンダウン条件を満たすとの判断結果になれば、S107に進み、満たさないとの判断結果になれば、S110に進む。
S107で、スピン指示受付プログラム263が、タイマ391Aを用いて、一定時間内にスピンダウン対象LUを指定したI/Oコマンドの受信があるかどうかを監視する。一定時間内に該I/Oコマンドの受信が検出されたならば、S110に進み、該I/Oコマンドの受信が検出されなければ、S108に進む。
S108で、スピン指示受付プログラム263が、デステージ処理を実行する。すなわち、キャッシュメモリ領域251上の、スピンダウン対象LUに対応したダーティデータを、該スピンダウン対象LUに属する一以上のディスク装置に書く。
S109で、スピン指示受付プログラム263が、スピンダウン対象LUに属する一以上のディスク装置のスピンダウンを実行する。
S110で、スピン指示受付プログラム263が、スピンダウン指示で指定されている記憶装置に属するディスク装置のスピンダウンを拒否することを決定する。なお、このS110で、例えば、S107での処理で、スピンダウン対象LU及びスピンダウン対象LUに属するディスク装置のそれぞれの省電力ステータスが“I/O監視”にされたならば、該省電力ステータスを“スピンアップ”に戻す。
S111で、スピン指示受付プログラム263が、管理コンソール171からのスピンダウン指示に関する結果を表すデータ(指示結果データ)を、管理コンソール171に送信する。
S112で、管理コンソール171におけるスピン指示プログラム273が、指示結果データを受信する。
S113で、スピン指示プログラム273が、該指示結果データが表す指示結果を表示装置175に表示する。
以上が、スピンダウンの指示及び実行に関わる全体的な処理の流れの一例である。
この処理によれば、管理者所望の記憶装置に属するディスク装置をスピンダウンさせることができる。また、その際、スピンダウン条件を満たさない場合には、管理コンソールからのスピンダウン指示が拒否されるので、ストレージシステム100に悪影響が生じるのを防ぐことができる。
また、この処理によれば、管理コンソールからの管理者による節電指示とすることで、ホストコンピュータが複数台ある場合には、それら複数のホストコンピュータ(或いは、各ホストコンピュータで実行されるアプリケーションプログラム)との連携が図れる。別の言い方をすれば、例えば、複数のホストコンピュータ(或いはアプリケーション)でRAIDグループが共有されている場合に、各ホストコンピュータ(或いはアプリケーション)が独立して節電指示を出せるとすると、或るホストコンピュータからのI/Oが発生するにも関わらず他のホストコンピュータから節電が実行されてしまうといった問題が生じ得るが、管理コンソールからの節電指示とすることで、そのような問題を回避することが期待できる。
さて、以下、上述した全体的な処理流れの各々のステップを詳細に説明する。
図8Aは、図7のS101で表示される第一のGUIの一例である。図8Bは、図7のS101で表示される第二のGUIの一例である。
第一のGUIは、RAIDグループ単位或いはLU単位での指定と、スピンダウン或いはスピンアップの指示とを受け付けるGUIである。第二のGUIは、RAIDグループ単位或いはディスク装置単位での指定と、スピンダウン或いはスピンアップの指示とを受け付けるGUIである。第一のGUIでは、RG
ID及びストレージLUNと共にチェックボックスが表示され、第二のGUIでは、RG ID及びディスクIDと共にチェックボックスが表示される。所望のRG ID、ストレージLUN或いはディスクIDのチェックボックスにチェックマークを入れた後にスピンダウン実行ボタンが押された場合に、スピン指示プログラム273が、該チェックマークの入ったRG
ID、ストレージLUN或いはディスクIDを指定したスピンダウン指示(スピンアップ指示ボタンが押された場合にはスピンアップ指示)を生成して送信することができる。
スピン指示プログラム273は、ストレージシステム100からLU管理テーブル255及びディスク管理テーブル257を取得し、該取得したテーブル255及び257を基に、前述した第一及び第二のGUIを作成して表示することができる。各GUIには、各テーブル255及び257に記録されている情報の全て又は一部を表示することができる。第一のGUIと第二のGUIを、それぞれのGUIにある画面切替ボタンを管理者により押下された場合に切替えても良いし、表示装置175に並べて或いは重ねて表示しても良い。
スピン指示プログラム273により表示されるGUIは図示の例に限らず他の構成を採用することもできる。また、GUIを利用する方法とは異なる方法で、管理者所望の記憶装置の指定や、スピンダウン或いはスピンアップの指定が行われても良い。
図9は、図7のS106で実行される処理の詳細な流れの一例を示す。
S106Aで、スピン指示受付プログラム263は、ストレージシステム100内部でスピンダウン禁止に属する処理(以下、スピンダウン禁止該当処理)の最中か否かを判断する。ここで、スピンダウン禁止該当処理としては、例えば、CPU133で実行されるコンピュータプログラムの交換、スピンダウン対象LUに属するディスク装置内のファームウェアの交換などがある。このS106Aで、スピンダウン禁止該当処理の最中と判断されたならば、S106AでYES、つまり、図7のS106でNOとなり、スピンダウン禁止該当処理の最中ではないと判断されたならば、S106AでNOとなり、S106Bに進む。
S106Bで、スピン指示受付プログラム263は、スピンダウン指示での指定単位、言い換えれば、指定された記憶装置がRAIDグループ、LU及びディスク装置のいずれであるかを判断する。RAIDグループと判断された場合には、S106Cに進み、LUと判断された場合には、S106Dに進み、ディスク装置と判断された場合には、S106Eに進む。
S106Cで、スピン指示受付プログラム263は、指定された一以上のRAIDグループに属する一以上のLU(スピンダウン対象LU)と、該一以上のLUの各々のLU属性とをLU管理テーブル255を参照することにより識別し、識別した一以上のLU属性のうちの少なくとも一つにLU属性“I/O”或いは“障害”があるかどうかを判断する。有るとの判断になった場合には、S106CでYES、つまり、図7のS106でNOとなり、無いとの判断になった場合には、S106CでNO、つまり、図7のS106でYESとなる。
S106Dで、スピン指示受付プログラム263は、指定された一以上のLU(スピンダウン対象LU)の各々のLU属性をLU管理テーブル255を参照することにより識別し、識別した一以上のLU属性のうちの少なくとも一つにLU属性“I/O”或いは“障害”があるかどうかを判断する。有るとの判断になった場合には、S106DでYES、つまり、図7のS106でNOとなり、無いとの判断になった場合には、S106DでNO、つまり、図7のS106でYESとなる。
S106Eで、スピン指示受付プログラム263は、指定された一以上のディスク装置に属する一以上のLU(スピンダウン対象LU)と、該一以上のLUの各々のLU属性とをLU管理テーブル255を参照することにより識別し、識別した一以上のLU属性のうちの少なくとも一つにLU属性“I/O”或いは“障害”があるかどうかを判断する。有るとの判断になった場合には、S106EでYES、つまり、図7のS106でNOとなり、無いとの判断になった場合には、S106EでNO、つまり、図7のS106でYESとなる。
ここで、LU属性“I/O”のLUとは、ストレージシステム100としてディスク装置にI/Oが発行されることが期待されるLUである。一方、LU属性“障害”のLUとは、障害が検出された記憶装置(RAIDグループ、LU或いはディスク装置)に属するLUである。LU属性“I/O”及び“障害”のそれぞれの具体例は、図25の表に記載の通りである。
図25の表に記載の複数の具体例のうちの幾つかを例に採り説明する。
このストレージシステム100では、例えば、LUペアが形成され、LUペアを構成する二つのLUのうちの一方がプライマリLUとされ他方がセカンダリLUとされ、プライマリLUからセカンダリLUへのデータコピーが行われる。これは、例えば、コピー制御プログラム(図示せず)というデータコピーに専用のコンピュータプログラムが制御プログラム253に含まれても良いし、I/O制御プログラム261が該データコピーの機能を備えても良い。セカンダリLUがプライマリLUと同じストレージシステム内にあれば、いわゆるローカルコピーとなるし、セカンダリLUがプライマリLUとは別のストレージシステム内にあれば、いわゆるリモートコピーとなる。LUペアには複数種類のペアステータスがあり、それら複数種類のペアステータスは、セカンダリLUに更新が生じない、セカンダリLUに更新が生じる、障害である、の3種類に大別することができる。ストレージシステム100(例えば前述したコピー制御プログラム)は、LUペアのステータスを適時に更新していくことができる。LU属性“I/O”のLUとしては、セカンダリLUに更新が生じるペアステータスのLUペアを構成する各LU(少なくとも例えばセカンダリLU)とすることができる。なお、セカンダリLUに更新が生じるペアステータスとは、例えば、“同期”(プライマリLUに更新があれば該更新と実質的に同じタイミングでセカンダリLUに更新が生じる状態)、“更新中”(プライマリLU内のデータをセカンダリLUにコピーしている状態)がある。それに対し、セカンダリLUに更新が生じないペアステータスとして、例えば、“スプリット”(プライマリLUに更新が生じてもセカンダリLUには何ら更新が生じない状態)がある。セカンダリLUは、一般に、プライマリLUと違ってホストコンピュータ121に認識されるLUではないため、LUをアンマウントすることにより該LUへのI/Oを無くすといった措置をとることができない。このため、上記のようにセカンダリLUに更新が生じるペアステータスのLUペアを構成する二つのLUのうちの少なくともセカンダリLUが、LU属性“I/O”のLUとしておくことは有用であると考えられる。
I/O属性“障害”のLUとして、例えば、閉塞ディスク装置を含むLUとすることができる。ここで、「閉塞ディスク装置」とは、何らかの障害が発生して正常に動作できない状態のディスク装置を意味する。例えば、RAIDレベル“RAID5”のRAIDグループでは、閉塞ディスク装置により提供される記憶空間の全部又は一部を有するLUが保持するデータは、冗長性の無い状態にあり、それ故、早急に閉塞ディスク装置の復旧が必要になると考えられる。この場合、閉塞ディスク装置を含むRAIDグループにおける一以上のディスク装置を一律にスピンダウンしないようにすることは、データ保護の信頼性を向上する観点から有効であると考えられる。
また、I/O属性“障害”のLUとして、例えば、ライト未完LUとすることができる。ここで、「ライト未完」とは、ストレージシステム100内部の障害により失われたデータブロックを意味する。具体的には、例えば、後述するコレクションコピーの際に、失われたデータブロックを回復しようとしたが、それが出来なかった場合に、ライト未完が発生する。より具体的には、例えば、ディスク装置が1台閉塞したために、コレクションコピーが行われたが、他のディスク装置上でメディアエラー等により、データが復元できなかった場合などに発生する。従って、ライト未完はデータが存在しない状態となっている。故に、ライト未完のLUは、不健全な状態のLUである。このようなLUに属する一以上のディスク装置を一律にスピンダウンしないようにすることは、データ保護の信頼性を向上する観点から有効であると考えられる。なお、ライト未完のLUに対して、障害ダーティデータに対応したLUがあり、それらは、データがディスク装置に記憶されていないという点で共通する。しかし、障害ダーティデータに対応したLUに属する各ディスク装置については、障害が発生していることが確実であるわけではない。本実施形態では、この点に着目し、ライト未完のLUは、スピンダウンを実行しないLUとされるが、障害ダーティデータに対応したLUは、スピンダウンを実行しないLUとはされない。
図10は、図7のS107で実行される処理の詳細な流れの一例を示す。
S107Aにおいて、上記S106Bの判断で、RAIDグループであれば、S107Bに進み、LUであれば、S107Eに進み、ディスク装置であれば、S107Fに進む。
S107Bでは、スピン指示受付プログラム263は、指定されたRAIDグループのうちの少なくとも一つのLUが統合LUに含まれているかどうかをLU管理テーブル255を参照することにより判断する。含まれていれば、S107Dに進み、含まれていなければ、S107Cに進む。
S107Cでは、スピン指示受付プログラム263は、指定されたRAIDグループに属する全てのLUについてI/Oコマンドの有無の監視をはじめる(その際、タイマ391Aによる計時も開始する)。また、該全てのLU、及び、それら全てのLUにそれぞれ属するディスク装置について、省電力ステータス“I/O”監視を、各テーブル255及び257に設定する(S107G)。
S107Dでは、スピン指示受付プログラム263は、指定されたRAIDグループ及び統合LUに属する全てのLUについてI/Oコマンドの有無の監視をはじめる(その際、タイマ391Aによる計時も開始する)。また、前述したS107Gも実行する。
S107Eでは、スピン指示受付プログラム263は、指定されたLUについてI/Oコマンドの有無の監視をはじめる(その際、タイマ391Aによる計時も開始する)。また、前述したS107Gも実行する。
S107Fでは、スピン指示受付プログラム263は、指定されたディスク装置が属するLUについてI/Oコマンドの有無の監視をはじめる(その際、タイマ391Aによる計時も開始する)。また、前述したS107Gも実行する。
I/O監視をはじめてから一定時間内に、監視対象LUに対応したホストLUNを指定したI/Oコマンドの受信がなければ、S107HでNO、つまり図7のS107でNOとなる。一方、そのようなI/Oコマンドの受信があれば、S107でYES、つまり図7のS107でYESとなる。
管理者によって所望の記憶装置が指定されるが、その際、誤った指定が行われる可能性がある。例えば、スピンダウンとするディスク装置に対応したLUをホストコンピュータでアンマウントされた後に、該ディスク装置をスピンダウンにする流れとなっている場合、アンマウントされていないLUに対応したディスク装置をスピンダウンの対象として誤って指定してしまう可能性がある。しかし、上記の流れによれば、スピンダウンの指示を受けて直ちにスピンダウンさせるのではなく、一定時間(例えば一分間)I/O監視が実行され、I/Oコマンドの受信が検出された場合には、管理コンソールからのスピンダウンの指示が拒否される。これにより、誤った記憶装置指定に基づく誤ったスピンダウンが行われないようにすることが可能である。
図11は、図7のS108で実行される処理の詳細な流れの一例を示す。
S108Aで、スピン指示受付プログラム263は、スピンダウン対象LU及びそれに属するディスク装置の省電力ステータスとして“スピンダウン処理中”を各テーブル255及び257に設定する。また、スピン指示受付プログラム263は、スピンダウン対象LUに対応したI/O応答ステータスとして“Not Ready”をLU管理テーブル255に設定する。その際、スピンダウン対象LUを含んだ統合LUがある場合には、該統合LUに含まれる他のLUについても、I/O応答ステータスとして“Not
Ready”をLU管理テーブル255に設定する。これにより、該他のLUに対応した省電力ステータスが“スピンアップ”であっても、該他のLUを指定したI/Oコマンドがホストコンピュータ121から受信した場合には、I/O制御プログラム261により、“Not
Ready”が戻り値としてホストコンピュータ121に送られる。
S108Bで、スピン指示受付プログラム263は、スピンダウン対象LUに対応した通常ダーティデータの有無をLU管理テーブル255を参照することにより判断する。あれば、S108BでYESとなり、S108Cに進み、なければ、S108BでNOとなる。すなわち、スピンダウン対象LUに対応したダーティデータが障害ダーティデータの場合には、デステージが行われない。障害ダーティデータは、デステージに失敗する可能性が高く、そのような種類のデータについてデステージのトライをたくさん繰り返すと、無駄に負荷が高くなることが考えられるが、ここでは、障害ダーティデータについてはデステージしない。これにより、無駄に負荷が高くなることを抑えることが期待できる。なお、例えば、一回以上デステージをトライすれば書込めることもあるかもしれないので、所定回数デステージをトライし、それでも失敗した場合に、S108BでNOとなっても良い。また、そのS108Bでは、通常ダーティデータの有無の判断に代えて、ダーティデータの有無の判断としても良い。その場合には、障害ダーティデータについても、デステージが行われることになる。
S108Cで、スピン指示受付プログラム263は、スピンダウン対象LUに対応した通常ダーティデータ情報から、通常ダーティデータがキャッシュメモリ領域251上のどこにあるかを識別し、識別した場所から通常ダーティデータを読み出し、読み出した通常ダーティデータを、スピンダウン対象LUに属する一以上のディスク装置に書き込む(つまりデステージを行う)。デステージに成功すれば(例えばディスク装置からOKが返答されれば)、S108DでYESとなり、デステージに失敗すれば、S108DでNOとなり、S108Eに進む。
S108Eで、スピン指示受付プログラム263は、トライ回数を1インクリメントする。インクリメント後のトライ回数が所定の閾値になっていれば、S108FでYESとなり、S108Gに進み、なっていなければ、S108でNOとなり、S108Cに戻り、デステージを再び実行する。
S108Gで、スピン指示受付プログラム263は、通常ダーティデータを障害ダーティデータとして管理する。具体的には、例えば、スピンダウン対象LUについての通常ダーティデータ情報を障害ダーティデータ情報に更新する。
図12は、図7のS109で実行される処理の詳細な流れの一例を示す。
S109Aで、スピン指示受付プログラム263は、スピンダウン対象LUに属するディスク装置(以下、対象ディスク装置)にスピンダウン指示コマンドを送信する。この指示コマンドは、図24Bを参照して説明したディスク装置103において、制御コマンド処理部104Bが受ける。制御コマンド処理部104Bは、スピンダウン指示コマンドに従って、ディスク回転制御部104Dにディスク106をスピンダウンさせ、LED105にスピンダウンに応じた点滅パターン表示を実行させ、スピンダウンが完了したならば、スピンダウン完了をスピン指示受付プログラム263に応答する。
S109Bで、スピン指示受付プログラム263は、スピンダウン完了を応答してきた対象ディスク装置について、省電力ステータス“スピンダウン”をディスク管理テーブル257に設定する。また、スピンダウン対象LUに属する一以上の対象ディスク装置のうちの少なくとも一つ或いは全てについてスピンダウン完了が帰ってきたならば、そのスピンダウン対象LUについて省電力ステータス“スピンダウン”をLU管理テーブル255に設定して良い。
S109Cで、スピン指示受付プログラム263は、指示結果データを作成する。このS109Cで作成される指示結果データは、管理者所望の記憶装置に属する全てのディスク装置についてスピンダウンに成功したことを指示結果として表したデータとなる。
S109Dで、スピン指示受付プログラム263は、各対象ディスク装置に対応したスピンダウン回数(ディスク管理テーブル257に記録されているスピンダウン回数)を1インクリメントする。
S109Eで、スピン指示受付プログラム263は、インクリメント後のスピンダウン回数が回数閾値を超えたか否かを判断する。超えたディスク装置があれば、スピン指示受付プログラム263は、上記作成した指示結果データに、ワーニング情報を含める。ワーニング情報は、スピンダウン回数が所定の回数閾値を超えた対象ディスク装置が存在することの警告に関する情報であり、具体的には、例えば、該対象ディスク装置のディスクID、該ディスクIDに対応したストレージLUN或いはRG
IDを含んだ情報である。このワーニング情報を含んだ指示結果データが管理コンソール171に送信され、スピン指示プログラム273により表示されることにより、管理者は、管理者所望の記憶装置についてスピンダウンが実行されたことや、スピンダウン回数が所定の回数閾値を超えた対象ディスク装置が存在することを知ることができる。
以上が、スピンダウンの指示及び実行に関する処理の詳細である。図7のS110については格別処理な流れは図に示さなかったが、該流れとしては例えば以下の通りである。すなわち、スピン指示受付プログラム263が、管理者所望の記憶装置に属するディスク装置のスピンダウンを実行できないことや実行できない理由(例えばスピンダウン対象LUがLU属性“I/O”のLUである等)を表す指示結果データを作成する。その際、スピンダウン対象LUについてのI/O監視中に該スピンダウン対象LUについてのI/Oコマンド受信があったことにより省電力ステータスが“I/O監視”から“スピンアップ”になってしまった場合には、そのことを意味する情報(例えば、I/O監視中にI/Oコマンドの受信があったためにスピンダウンしなかったことを意味する情報)を、指示結果データに含める。そのような指示結果データが管理コンソール171に送信され、スピン指示プログラム273に表示されることにより、管理者は、管理者所望の記憶装置についてスピンダウンが実行されなかったことや、スピンダウンが実行されなかった理由を知ることができる。
上述した指示結果データには、例えば、スピンダウン対象LUを含んだ統合LUについて、スピンダウン対象LU以外のLU(他のLU)についてI/O応答ステータス“Not Ready”を設定した場合には、そのことを表す情報を含んでも良い。或いは、ホストコンピュータ121が、I/Oコマンドの戻り値として“Not
Ready”を受信した場合に、該I/Oコマンドで指定したホストLUNについてI/Oコマンドを実行できないことを管理コンソール171に問い合わせても良い。スピン指示プログラム263は、受信した指示結果データから、統合LUにおける他のLUについてI/O応答ステータス“Not
Ready”が設定されたことを認識した場合、或いは、ホストコンピュータ121から上記問合せを受信した場合など、所定の場合に、図27に例示のメッセージを表示しても良い。これにより、管理者は、統合LUについて他のLUにはI/Oコマンドに従うI/Oを発生させるための設定をストレージシステム100に行うことができる。
図13は、スピンアップの指示及び実行に関わる全体的な処理の流れの一例を示す。
S501で、管理コンソール171において、スピン指示プログラム273が、管理者からの操作に従い、グラフィカル・ユーザ・インタフェース(GUI)を表示装置175に表示する。このGUIは、例えば、RAIDグループ、LU及びディスク装置のうちの少なくとも一つの単位でスピンアップ指示を受け付けることができるようになっている。具体的には、例えば、図8A及び図8Bに例示したGUIを表示することができる。
S502で、スピン指示プログラム273が、そのGUIを介して、管理者所望の記憶装置(RAIDグループ、LU及びディスク装置のうちの少なくとも一つ)の指定とスピンアップの指示とを受ける。
S503で、管理者からのスピンアップ指示を契機に、スピン指示プログラム273が、管理者所望の記憶装置を指定したスピンアップ指示(コマンド)を作成し、該スピンアップ指示を、ストレージシステム100に送信する。その後、スピン指示プログラム273は、ストレージシステム100からの応答を待つ状態となる(S504)。
S505で、ストレージシステム100において、スピン指示受付プログラム263が、スピンアップ指示を管理コンソール171から受信する。
S506で、スピン指示受付プログラム263は、該スピンアップ指示で指定されている記憶装置に属する一以上のディスク装置(以下、スピンアップ対象ディスク装置)のスピンアップを実行する。
S507で、スピン指示受付プログラム263が、管理コンソール171からのスピンアップ指示に関する結果を表すデータ(指示結果データ)を、管理コンソール171に送信する。
S508で、管理コンソール171におけるスピン指示プログラム273が、指示結果データを受信する。
S509で、スピン指示プログラム273が、該指示結果データが表す指示結果を表示装置175に表示する。
以上が、スピンアップの指示及び実行に関わる全体的な処理の流れの一例である。以下、この全体的な処理流れの各々のステップを詳細に説明する。
図14は、図13のS506で実行される処理の詳細な流れの一例を示す。
S506Aで、スピン指示受付プログラム263は、スピンアップ対象ディスク装置について、省電力ステータスとして“スピンアップ処理中”を各テーブル255及び257に設定する。
S506Bで、スピン指示受付プログラム263は、スピンアップ対象ディスク装置が属する範囲内に省電力ステータス“スピンアップ”のディスク装置が幾つ存在するか(スピンアップディスク数)をディスク管理テーブル257を参照することにより算出し、且つ、そのうちI/Oが発生するディスク装置が幾つあるか(I/O発生ディスク数)を算出する。なお、ここで言う「範囲」とは、ストレージシステム全体、RAIDグループ、或いは筐体である。以下、この範囲を便宜上「デバイス範囲」と呼ぶ。
S506Cで、スピン指示受付プログラム263は、算出されたスピンアップディスク数及びI/O発生ディスク数に基づいて、スピンアッププランを決定する。
S506Dで、スピン指示受付プログラム263は、決定したスピンアッププランに従って、スピンアップ対象ディスク装置にスピンアップを指示していく。
S506Eで、スピン指示受付プログラム263は、スピンアップ完了を報告してきたスピンアップ対象ディスク装置について、省電力ステータスとして“スピンアップ”を設定する。また、該スピンアップ対象ディスク装置が属するLUのI/O応答ステータスが“Not Ready”になっていることがLU管理テーブル255から識別された場合には、スピン指示受付プログラム263は、該I/O応答ステータスとして“通常”を設定する。但し、該スピンアップ対象ディスク装置が属するLUが、統合LUを構成するLUであって、該統合LUを構成する他のLUがI/O応答ステータス“Not Ready”であれば、該LUのI/O応答ステータスも“Not Ready”としておき、該他のI/O応答ステータスを“通常”にできる場合に、該該LUのI/O応答ステータスも“通常”にする。
S506Fで、スピン指示受付プログラム263は、スピンアップを指示した全てのスピンアップ対象ディスク装置からスピンアップ完了の報告を受けたかどうかを判断する。受けていれば、S506FでYESとなってS506を終了し、受けていなければ、S506FでNOとなってS506Eに戻る。
以上が、図13のS506で実行される処理の詳細な流れの一例である。以下、スピンアップディスク及びI/O発生ディスクとスピンアッププランとについて説明する。
本実施形態において、スピンアップディスクとは、前述したように、省電力ステータスが“スピンアップ”であるディスク装置であるが、それには、そのディスク装置内のディスクの回転速度がI/O時の速度である第一の速度になっているディスク装置もあれば、該第一の速度よりも低速でありアイドル状態での速度で或る第二の速度になっているディスク装置もある。スピンダウンからスピンアップになる場合には、ディスク装置では、第一の速度でディスクを回転させた後に、アイドル状態での速度であり第一の速度より低速の第二の速度でディスクを回転させ続けるといった処理が実行される。このため、一つのディスク装置について、スピンダウンからスピンアップになるまでの消費電力の変化は、第一の速度でディスクを回転させるために消費電力が上昇してピークに達し、その後、第二の速度でディスクを回転させ続けるために、該消費電力が下がり或る値まで下がって安定するといった変化になると考えられる。
一方、複数のスピンアップ対象ディスク装置をスピンアップする場合、同時に全てのスピンアップ対象ディスク装置をスピンアップすることが、それら複数のスピンアップ対象ディスク装置がスピンアップになるまでの時間長を最も短くすることができる方法であると考えられる。しかし、その方法では、全てのスピンアップ対象ディスク装置について消費電力がほぼ同時にピークになるため、デバイス範囲(例えば、ストレージシステム全体、RAIDグループ或いは筐体)について所定の電力閾値Psを設けている場合には、図15Aに例示するように、該時点での消費電力は非常に大きくなるために該電力閾値Psを超えてしまうという問題が生じる。
その問題を回避するための方法として、同時にスピンアップするディスク装置の数を制御する方法がある。例えば、図15Bに例示するように、第一の時点で、複数のスピンアップ対象ディスク装置のうちの一部を同時にスピンアップし、該一部のディスク装置について消費電力が安定した後の第二の時点で、残りのスピンアップ対象ディスク装置を同時にスピンアップする。これにより、全てのスピンアップ対象ディスク装置についてスピンアップが完了するまでに、電力閾値Psを超える電力の消費が生じてしまうということを防ぐことができる。なお、各時点について、同時にスピンアップするスピンアップ対象ディスク装置の数は、デバイス範囲に何台のスピンアップディスクが存在するか、つまり、デバイス範囲におけるスピンアップディスク数を基に制御される。スピンアップディスクも電力を消費しているためである。
しかし、単にスピンアップディスク数を基にするだけでは、デバイス範囲での消費電力を電力閾値Ps以下に抑えられるとは限らないと考えられる。ディスク装置の消費電力は、スピンアップの状態よりも、データのI/Oが発生する場合のほうが大だからである。すなわち、ディスク装置にI/Oが発生する場合(例えば、該ディスク装置にI/Oコマンドが送られてきた場合)、ディスクの回転速度は、アイドル状態での回転速度よりも高速になり、故に、消費電力も大きくなるからである。
より具体的に言えば、例えば、図15Cに例示するように、複数のスピンアップディスクが全てアイドル状態の場合に、複数のスピンアップ対象ディスク装置をスピンアップする前の消費電力がP1とすると、それら複数のスピンアップディスクにI/O発生ディスクが含まれている場合、該消費電力はP1よりも高いP2であると考えられる。この場合に、単にスピンアップディスク数を基に、同時にスピンアップするスピンアップ対象ディスクの数を制御すると、点線で示すように、消費電力が電力閾値Psを超えてしまうおそれがある。
そこで、本実施形態では、スピンアップディスクのうちの幾つがI/O発生ディスクであるかを基に、同時にスピンアップするスピンアップ対象ディスク装置の数を制御する。この場合、例えば、図15Cに例示するように、I/O発生ディスクを考慮しない場合に比して、スピンアップ指示時点が多くなり故に全てのスピンアップ対象ディスク装置のスピンアップが完了するまでの時間長が長くなってしまうことがあるが、消費電力が電力閾値Psを超えてしまうことを確実に防ぐことができる。
なお、本実施形態では、例えば、最初の時点で、電力閾値Psを超えない範囲でできるだけ多くのスピンアップ対象ディスクを同時にスピンアップし、次以降の時点で、電力閾値Psを越えない範囲でその時点でできるだけ多くのスピンアップ対象ディスクを同時にスピンアップするように制御プログラム253が構成されている。制御プログラム253が同時にスピンアップできるディスク装置の数に制限があってもよく、その場合には、電力閾値Psに加えてその制限を基に、各時点で同時にスピンアップするスピンアップ対象ディスク装置の数を制御することができる。
また、スピンアップディスクが全てI/O発生ディスクとみなして、同時にスピンアップするディスク装置の数を制御しても良いが、そうすると、同時にスピンアップするディスク装置の数を少なくする必要が生じ、故に、全てのスピンアップ対象ディスク装置のスピンアップが完了するまでの時間長が長くなってしまうおそれがある。この実施形態では、スピンアップディスクがI/O発生ディスクであるかそうでないディスク装置(アイドル状態のディスク装置)であるかを区別して、同時にスピンアップするディスク装置を制御するため、消費電力を電力閾値以下に抑えつつなるべく短い時間で全てのスピンアップ対象ディスク装置のスピンアップを完了させることができる。ちなみに、前述したスピンアッププランとは、どの時点で何台のスピンアップ対象ディスクをスピンアップするかを表したプランである。
以上が、スピンアップディスク及びI/O発生ディスクとスピンアッププランとについての説明である。
さて、次に、図16A〜図16Cを参照して、I/O制御プログラム261、イベント実行制御プログラム267、設定制御プログラム277が行う処理の流れを説明する。
図16Aは、I/O制御プログラム261が行う処理の流れの一例を示す。
I/O制御プログラム261は、ホストLUNを指定したI/Oコマンドをホストコンピュータ121から受信した場合(S601)、該ホストLUNに対応したI/O応答ステータスをLU管理テーブル255を参照することにより識別する(S602)。そして、I/O制御プログラム261は、該識別したI/O応答ステータスに基づく応答をホストコンピュータ121に送る(S603)。
図16Bは、イベント実行制御プログラム267が行う処理の流れの一例を示す。
イベント実行制御プログラム267は、イベントの発生の有無を監視する(S611)。イベントの発生があれば(S612でYES)、イベント実行制御プログラム267は、発生したイベントの種類と、該発生したイベントに関連するLU或いはディスク装置(以下、対象LU或いは対象ディスク装置)の省電力ステータスとを基に、イベントの実行の許否(つまり許可するか否か)、及び/又は、対象LU或いは対象ディスクの省電力ステータスを制御する(S613)。
イベントとその実行許否との関係の具体例を図26に示す。
すなわち、イベントの発生の一例として、コマンドの受信を挙げることができる。そのコマンドは、ホストコンピュータ或いは管理コンソールから受信するのであっても良いし、ストレージシステム内部で発生するのであっても良い。コマンドとして、例えば、LUペアの形成、LUペア間でのコピー実行、LUペアの分離など、LUペアを制御するコマンドがある。例えば、LUペアの形成、LUペア間でのコピー実行などのように、コマンドを実行することでスピンダウンのディスク装置をスピンアップにする必要が生じ得る場合(例えばLUにデータのI/Oが発生する場合)、該LUについて、省電力ステータスが“I/O監視”であれば、イベント実行制御プログラム267は、スピンダウンのキャンセルを決定する(すなわち、イベント実行制御プログラム267は、スピン指示受付プログラム263の処理を図7のS107からS110に進ませる)。しかし、該省電力ステータスが“スピンダウン処理中”や“スピンダウン”になっていれば、コマンドの実行を拒否する。これにより、節電を優先することができる。一方、LUペアの分離などのように、コマンドを実行してもスピンダウンのディスク装置をスピンアップにする必要が生じない場合(例えばセカンダリLUにデータのI/Oが発生しない場合)、該LUの省電力ステータスが何であれ、コマンドの実行を許可する。
イベントの発生の別の一例として、障害、具体例として、閉塞ディスク装置或いはライト未完の発生がある。この場合には、イベント実行制御プログラム267は、障害に関わるLUの省電力ステータスが“スピンアップ”になっていなければ、その省電力ステータスになるようにする。言い換えれば、スピンダウン指示に従ってスピンダウンするための処理が実行されている最中でも、その処理をキャンセルして、スピンアップにするための処理を実行する(例えば、障害に関わるLUに属する各ディスク装置にスピンアップを指示し、且つ、該各ディスク装置の省電力ステータスを“スピンアップ”にする)。
イベントの発生のまた別の一例として、障害の復旧がある。具体例として、後述するコレクションコピーがある。この場合、イベント実行制御プログラム267は、障害復旧に関わるディスク装置の省電力ステータスが“スピンアップ”になっていない場合には、該ディスク装置にスピンアップの指示を出し、その障害復旧が終わった場合には、その障害復旧の終わりを契機に、該ディスク装置をスピンダウンさせることができる。
以上の制御は、ストレージシステム100内において行われるが、実質的に同様の制御を、管理コンソールに実行させることもできる。
図16Cは、設定制御プログラム275が行う処理の流れの一例を示す。
すなわち、設定制御プログラム275が、管理者から設定指示(例えば、情報の設定、或いは、管理者所望の処理の実行の指示など)を受け付けた場合(S621)、該設定指示の種類と、該設定指示に関連するLU或いはディスク装置(以下、対象LU或いは対象ディスク装置)の省電力ステータスとを基に、設定指示の許否を制御する(S622)。
具体的には、例えば、管理コンソール171のメモリ177に、ストレージシステム100から取得されたLU管理テーブル255及びディスク管理テーブル257が記憶される。設定制御プログラム275が、例えば、管理者から、LUペア間でのコピー実行など、或るLUにI/Oが生じる処理を実行することの設定指示を受けた場合、該或るLUの省電力ステータスが“I/O監視中”であれば、該設定指示をストレージシステム100に送信するが、該省電力ステータスが“スピンダウン処理中”、“スピンダウン”或いは“スピンアップ処理中”であれば、該設定指示を送信することを管理者に対して拒否する。
以上が、I/O制御プログラム261、イベント実行制御プログラム267、設定制御プログラム277が行う処理の流れの説明である。
さて、次に、ディスクチェックプログラム265が行う処理について説明する。
図17Aは、ディスクチェックプログラム265が行う全体的な処理の流れを示す。
ディスクチェックプログラム265は、Z秒(Z>0)経つ毎に(S651でYES)、省電力ステータス“スピンダウン”のディスク装置についてスピンダウン診断を行う(S652)。
また、ディスクチェックプログラム265は、省電力ステータス“スピンダウン”のディスク装置であって、前回のスピンアップ診断完了時からX日間(X>0、X日>Z秒)スピンアップ診断を行っていないディスク装置を、ディスク管理テーブル257を参照することにより識別し、該識別されたディスク装置について(S653でYES)、スピンアップ診断を行う(S654)。
以上の流れにおいて、Z秒やX日の経過は、タイマ391Aを用いて特定することができる。また、以上の処理流れは、一つのディスク装置、一つのLUに属する一以上のディスク装置、一つのRAIDグループに属する二以上のディスク装置、一つの筐体内にある複数のディスク装置、ストレージシステムにある多数のディスク装置、といった単位で実行することができる。以下、RAIDグループ単位で上記の処理流れを行うことを例に採り、より詳細な説明を行う。
図17Bは、図17Aに示した全体的な処理の流れがRAIDグループ単位で行われることを例に採り該流れをタイムチャート形式で示した図である。
ディスクチェックプログラム265は、対象RAIDグループにおいて、Z秒毎に、省電力ステータス“スピンダウン”のディスク装置に、I/Oコマンドと異なる第一種の制御コマンドを送信する。Z秒は、例えば1秒である。ディスクチェックプログラム265は、対象RAIDグループにおけるスピンダウンの第一のディスク装置に制御コマンドを送信したならば、そのZ時間後に、対象RAIDグループにおけるスピンダウンの第二のディスク装置に制御コマンドを送信する。つまり、Z時間毎に送信される制御コマンドの送信先は、同一のディスク装置ではなく異なるディスク装置である。このため、同一のディスク装置に対して次回に制御コマンドが送信されるまでの時間長は、対象RAIDグループに何台のスピンダウンのディスク装置があるかによって異なる。また、ここで送信される第一種の制御コマンドは、例えば、SCSIのプロトコルでサポートされているInquiryコマンドである。ディスク装置内の制御コマンド処理部104D(図24B参照)は、Inquiryコマンドを受信した場合には、所定の応答を、ディスクチェックプログラム265に送信するようになっている。従って、もし、Inquiryコマンドを送信しても所定の応答が返って来ない場合には、該Inquiryコマンドの送信先としたディスク装置がストレージシステム100から取り外されているか、或いは、該ディスク装置とCPU133との通信経路に異常が生じていると考えられる。Inquiryコマンドに限らず、スピンダウン中でも応答できる制御コマンドであれば他種の制御コマンドで代用されても良い。
ディスクチェックプログラム265は、対象RAIDグループにおいて、省電力ステータス“スピンダウン”のディスク装置であって、前回のスピンアップ診断完了時間(ディスク管理テーブル257から識別される完了時間)からX日間スピンアップ診断を行っていないディスク装置について、スピンアップ診断を行う。具体的には、該ディスク装置にスピンアップを指示することにより、スピンアップさせ、Inquiryコマンドと異なる第二種の制御コマンド、例えば、SCSIプロトコルでサポートされているベリファイコマンドを送信する。該ベリファイコマンドの戻り値を解析することにより、該ディスク装置に後述するメディアエラー或いはヘッドエラーがあるかどうかを検出することができる。なお、スピンダウン診断を実行するためのベリファイコマンドの送信は、Y分間(Y>0、X日>Y分>Z秒)行われる。そのY分間において、ベリファイコマンドは複数回送信されるが、各回毎に、ベリファイコマンドの送信先は、異なっていても良いし同じであっても良い。なお、X日間は、例えば90日間であり、Y分間は、例えば10分間である。Xの値は、例えば、スピンダウンしたままでいることによりヘッドがディスクに吸着してしまうことを防止する観点から定めることができる。
図18は、スピンダウン診断の処理の流れの一例を示す。この図は、対象RAIDグループにおける一ディスク装置についての流れの一例である。
S651で、ディスクチェックプログラム265は、対象RAIDグループのスピンダウンの或るディスク装置に、Inquiryコマンドを送信する。所定の応答が戻ってこない場合には、S652でNOとなり、S653に進み、所定の応答が戻ってきた場合には、S652でYESとなり、該或るディスク装置についてのスピンダウン診断が終了する。S651でのInquiryコマンドの送信からZ時間経過したら、対象RAIDグループにおけるスピンダウンの別のディスク装置について、スピンダウン診断が行われる。
S653で、ディスクチェックプログラム265は、対象RAIDグループに属する全てのスピンダウンの他のディスク装置(所定の応答を返さなかったディスク装置以外のディスク装置)、及び、任意に選択したスペアディスク装置に、それぞれスピンアップを指示する。具体的には、例えば、図20Aに示すように、対象RAIDグループにおけるディスク装置“1”から所定の応答が無かった場合、ディスクチェックプログラム265は、該対象RAIDグループにおける他のディスク装置“2”、“3”及び“4”と、スペアディスク装置“5”にスピンアップを指示する。
S654で、ディスクチェックプログラム265は、例えば、スピンアップを指示した全ての他のディスク装置及びスペアディスク装置からスピンアップ完了の報告を受けた場合に、コレクションコピーを実行する。具体的には、例えば、図20Bに示すように、ディスクチェックプログラム265は、ディスク装置“2”、“3”及び“4”からそれぞれデータを読み出し、読み出したデータを用いて所定の演算を行うことで新たなデータを生成し、該新たなデータを、スペアディスク装置“5”に格納する。なお、コレクションコピーは、例えば、対象RAIDグループがRAID5などの所定のRAIDレベルでのRAIDが構成されているために行われるが、例えばRAID1というミラーリング構成になっている場合に、一つのディスク装置からInquiryコマンドに対する所定の応答が無いならば、他のディスク装置及びスペアディスク装置をスピンアップさせ、コレクションコピーに代えて、該他のディスク装置内の全てのデータをスペアディスク装置にコピーする処理とすることができる。
S655で、ディスクチェックプログラム265は、S653でスピンアップさせた他のディスク装置及びスペアディスク装置に、スピンダウンを指示する。
S656で、ディスクチェックプログラム265は、例えば、スピンダウンを指示した全ての他のディスク装置及びスペアディスク装置からスピンダウン完了の報告を受けた場合に、ディスク管理テーブル257の更新を行う。具体的には、例えば、図20Cに示すように、ディスク装置“2”、“3”、“4”とスペアディスク装置“5”とでRAIDグループを構成する(つまりRAIDグループを編成する)。この場合、更新後のディスク管理テーブル257では、例えば、対象RAIDグループのRG
IDに変更がなく、該RG IDに対応付けられるディスクIDとして、ディスク装置“1”のディスクIDが外され、スペアディスク装置“5”のディスクIDが追加される。また、スペアディスク装置“5”のストレージLU範囲として、ディスク装置“1”のストレージLU範囲が設定される。
以上が、スピンダウン診断の流れである。このスピンダウン診断によれば、スピンダウンのディスク装置に関わる異常(例えば、ディスク装置が取り外されている、或いは、ディスク装置との通信経路に障害があることにより該ディスク装置から応答を受けられなかった)が検出された場合には、該ディスク装置が属する対象RAIDグループ内の他のディスク装置内のデータを基に、スペアディスク装置に対するコピーが実行され、該ディスク装置に代えて該スペアディスク装置が対象RAIDグループの構成要素になるRAIDグループ編成が実行される。このため、ディスク装置がスピンダウンの状態にあっても、該ディスク装置に関わる異常を検出して異常があれば適切にデータの保管を継続することができる。
図19は、スピンアップ診断の処理の流れの一例を示す。
S661で、ディスクチェックプログラム265は、対象RAIDグループに属する全てのスピンダウンのディスク装置にスピンアップを指示する。
S662で、ディスクチェックプログラム265は、例えば、スピンアップを指示したディスク装置からスピンアップ完了の報告を受けた場合に、該ディスク装置に、ベリファイコマンドを送信する。そのベリファイコマンドでは、例えば、該ディスク装置に対応した次回チェック開始アドレス(ディスク管理テーブル257から識別されたアドレス)が指定される。ディスク装置は、このベリファイコマンドに応じて、該ベリファイコマンドで指定されているアドレスについて、メディアエラーの有無のチェックを行う。ここで、メディアエラーとは、何らかの理由で、その指定されたアドレスからのデータブロックの読出しに失敗することを言う。このメディアエラーの有無のチェックにおいて、ディスク装置内のヘッドが動くことになり、それ故、ヘッドに障害がある場合には、ヘッドエラーが検出される。ディスク装置は、データブロックの読み出しに失敗した場合には、メディアエラーをディスクチェックプログラム265に返し、ヘッドエラーを検出した場合には、ヘッドエラーをディスクチェックプログラム265に返し、いずれのエラーも検出されない場合には、エラー無しを、ディスクチェックプログラム265に返す。
S663で、ディスクチェックプログラム265は、メディアエラー或いはヘッドエラーを受けた場合には、S663でYESとなり、S665に進み、エラー無しを受けた場合には、S663でNOとなり、S664に進む。
S664で、ディスクチェックプログラム265は、該スピンアップ診断を開始してからY分間経過していない場合には(S664でNO)、エラー無しを報告してきたディスク装置につき、ディスク管理テーブル257において、次回チェック開始アドレスを更新し、該エラー無しを受信した時刻を前回チェック完了時間として記録する(S668)。そして、スピンアップ完了を報告してきた他のディスク装置について、S663を行う。一方、Y分間経過している場合には(S664でYES)、このスピンアップ診断を終了する。
S665で、ディスクチェックプログラム265は、任意に選択したスペアディスク装置にスピンアップの指示を送り、該スペアディスク装置からスピンアップ完了を受けた場合に、コレクションコピーを実行する。ここでは、図20A乃至図20Cを例に採れば、ディスク装置“1”が、ヘッドエラー或いはメディアエラーを返してきたディスク装置である。
S666で、ディスクチェックプログラム265は、ヘッドエラー或いはメディアエラーを返してきたディスク装置以外のディスク装置(図20Bを例に言えば、ディスク装置“2”、“3”、“4”、及びスペアディスク装置“5”)にスピンダウンを指示する。
S667で、ディスクチェックプログラム265は、例えば、スピンダウンを指示した全ての他のディスク装置及びスペアディスク装置からスピンダウン完了の報告を受けた場合に、ディスク管理テーブル257の更新を行う。
以上が、スピンアップ診断の流れである。以上の説明によれば、スピンダウンのままになっているディスク装置について定期的にスピンアップ診断が実行される。スピンダウンのままであっても経年経過などの理由によりディスク装置にメディアエラー或いはヘッドエラーが発生し得るが、本実施形態では、定期的にスピンアップ診断が行われ、メディアエラー或いはヘッドエラーが検出されたディスク装置は、RAIDグループから外される。つまり、経年劣化などの理由によりメディアエラー或いはヘッドエラーが発生しているディスク装置を、データを格納する前にRAIDグループから外すことができる。それ故、メディアエラー或いはヘッドエラーの生じているディスク装置にデータを書き込んでしまって該データを失ってしまうといった危険性を抑えることができる。
<第二の実施形態>。
本発明の第二の実施形態を説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との相違点については説明を省略或いは簡略する。
図21Aは、第二の実施形態における増設筐体101Bの構成を示す。
サブコントローラ111に、タイマ391B、CPU153及びメモリ154が更に備えられる。CPU153及びメモリ154は、転送制御回路141Bに接続される。CPU153は、メモリ154に記憶されているコンピュータプログラムを実行することにより、増設筐体101B内の資源の状態を監視するプロセッサ(筐体監視プロセッサ)として機能する。CPU153は、データ転送に使うI/F上にあるデバイス(例えば、FC I/FとSATA I/Fとを変換する回路、或いはSASエキスパンダなど)にあっても良い。また、CPU153に代えて、筐体監視を行うためのハードウェア回路が用意されても良い。
図21Bは、メモリ154に記憶されるコンピュータプログラム及び情報の説明図である。
メモリ154に記憶される、CPU153により実行されるコンピュータプログラムとして、所定の制御を行う制御プログラム653がある。制御プログラム653には、例えば、増設筐体101B内の資源の状態を監視する筐体監視プログラム661と、筐体監視の結果を基本筐体101A内のメインコントローラ107に報告する監視結果報告プログラム663とが含まれている。筐体監視プログラム661により、監視結果情報251がメモリ154に記憶される。監視結果情報251は、筐体監視の結果を表す情報であり、例えば、所定の応答が返って来なかったディスク装置のディスクIDを含んだ情報である。
この第二の実施形態では、図22Aに例示するように、筐体監視プログラム661を実行するCPU153が、データライン或いは監視専用ラインなどを通じて、CPU153と同じ増設筐体(以下、便宜上「自筐体(own enclosure)」と言う)103B内に存在する各ディスク装置103Bに所定の制御コマンドを送信し、該制御コマンドに対して所定の応答があるか否かで、ディスク装置103Bの取り外しの有無を検出することができる。
ここで、データラインとは、ホストコンピュータ121からのI/Oコマンドの対象となるデータが流れるラインである。監視専用ラインとは、データラインとは別に設けられた信号線である。
また、筐体監視に使用する制御コマンドとして、SES(SCSI Enclosure
Services)コマンドを採用することができる。SESコマンドを自筐体101B内の所定のデバイスに送信することで、例えば、電源のステータス、温度、或いはファンの回転速度などを取得することができる。ディスク装置103Bに送信すれば、該ディスク装置103Bが実装されているか否かがわかる。ディスク装置103Bは、スピンダウンの状態であっても、少なくとも、SESコマンドを受けて処理する制御コマンド処理部104Dの電源はオンになっているので、該ディスク装置103が実装されていれば、CPU153が、SESコマンドに対する応答を受けることになる。
図22Bは、筐体監視プログラム661が行う処理の流れの一例を示す。
筐体監視プログラム661は、自筐体101B内のディスク装置103BにSESコマンドを送信する(S701)。該SESコマンドに対して応答が無い場合には(S702でYES)、該ディスク装置103Bが実装されていないことを意味する監視結果情報251をメモリ154に蓄積する(S703)。既に監視結果情報251があれば、該ディスク装置103Bが実装されていないことを意味する情報を監視結果情報251に追加しても良い。
筐体監視プログラム661は、定期的に(例えば常時)、この処理を実行することにより、自筐体101B内のディスク装置103Bの有無をチェックすることができる。
図22Cは、ディスクチェックプログラム265が行う処理の流れの一例、監視結果回答プログラム663が行う処理の流れの一例、及びそれらの処理の関連を示す。
ディスクチェックプログラム265が、定期的に(例えばZ秒毎に)、サブコントローラ111にSESコマンドを送信する(S711)。
サブコントローラ111において、監視結果報告プログラム663が、SESコマンドを受信する(S712)。監視結果報告プログラム663は、メモリ154に、サブコントローラ111に未だ送信されていない監視結果情報251があれば、該未送信の監視結果情報をメインコントローラ107に送信し、未送信の監視結果情報が無ければ、無しをメインコントローラ107に送信する(S713)。
ディスクチェックプログラム265は、監視結果情報の受信なら、図18のS652でNOとなり、無しの受信なら、図18のS652でYESとなる。
以上が、第二の実施形態の説明である。
第一の実施形態では、メインコントローラ107のCPU133が、各ディスク装置103A、103BにInquiryコマンドを送信することで、スピンダウンのディスク装置103A、103Bについて実装の有無を判断するが、それに代えて、上述した第二の実施形態の方法でもその判断を行うことができる。すなわち、各増設筐体101Bに、自筐体101Bの監視を行うことと該監視の結果を報告する筐体監視プロセッサを搭載し、メインコントローラ107のCPU133は、定期的に(又は不定期的に)、筐体監視プロセッサに問合せをすることで、各増設筐体101Bにおけるディスク装置103Bの有無を識別することができる。なお、第二の実施形態では、基本筐体101A内のディスク装置103Aの有無については、第一の実施形態と同様の方法でCPU133が行うことができる。
<第三の実施形態>。
第三の実施形態では、スピン指示受付プログラム263は、I/Oとスピンダウンのどちらを優先するかに応じて、スピンダウン指示を受けた後にI/O監視を行うか、或いは、I/O監視を行わずにスピンダウンを実行するかを決定することができる。
図23Aは、スピンダウンの指示及び実行に関わる全体的な処理流れについて、第三の実施形態と第一の実施形態との相違点を示す。
スピン指示受付プログラム263は、図7のS106でYESの後、I/Oとスピンダウンのどちらを優先するかを判断し(S901)、I/O優先であれば、図7のS107(I/O監視)を実行し、スピンダウン優先であれば、I/O監視を行うことなく図7のS108を行う。その際、S902で、例えば、I/O保留、又は、管理者所望の記憶装置に対応したLU(以下、対象LU)をアンマウントすることをホストコンピュータ121に指示することができる。I/O保留とは、対象LUを指定したI/Oコマンドを処理しないことを意味し、例えば、I/Oコマンドに対してホストコンピュータ121にビジー或いはリトライ要求を返すなどの処理である。
図23Bは、スピンアップの指示及び実行に関わる全体的な処理流れについて、第三の実施形態と第一の実施形態との相違点を示す。
スピン指示受付プログラム263は、図13のS507の後、I/Oとスピンダウンのどちらを優先するかを判断し(S911)、I/O優先なら、終了し、スピンダウン優先なら、I/O保留の解除、又は、対象LUをマウントすることをホストコンピュータ121に指示する(S912)。
I/O優先とするかスピンダウン優先とするかは、所定のデバイス単位、例えば、ストレージシステム100、筐体、RAIDグループ、LU、ディスク装置の単位で予め設定されて良い。I/O優先とするかスピンダウン優先とするかの設定は、例えば、管理コンソール171からストレージシステム100に対して行うことができる。
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、スピン指示受付プログラム263は、図7のS105〜S108において処理の対象となっている記憶装置(RAIDグループ、LU或いはディスク装置)について、管理コンソール171からスピンアップ指示を受けた場合には、該処理をキャンセルすることができる。