(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023111360
(43)【公開日】2023-08-10
(54)【発明の名称】ストレージシステム、ドライブ移動方法、及びプログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20230803BHJP
G06F 13/10 20060101ALI20230803BHJP
【FI】
G06F3/06 304F
G06F3/06 301M
G06F3/06 301Z
G06F3/06 305C
G06F3/06 540
G06F13/10 340A
【審査請求】有
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022013175
(22)【出願日】2022-01-31
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】花房 諒
(72)【発明者】
【氏名】吉原 朋宏
(72)【発明者】
【氏名】達見 良介
(72)【発明者】
【氏名】藤井 裕大
(57)【要約】
【課題】既存のドライブを活用し、運用を止めることなく、ストレージシステム内の構成を変更する。
【解決手段】複数のノード及び複数のドライブを有するストレージシステムであって、複数のドライブを格納する少なくとも一つの格納領域を含み、ノードは、二つ以上のドライブから構成されるパリティグループを管理し、第1格納領域に格納され、かつ、第1パリティグループに属するターゲットドライブを第2格納領域に移動させる場合、第1格納領域から第2格納領域へのターゲットドライブの移動期間中に、ターゲットドライブに対するデータ書き込みが行われた記憶領域に関する差分情報を生成し、差分情報に基づいて、第1パリティグループに属するターゲットドライブ以外のドライブに格納されるデータから記憶領域に対して書き込まれたデータを復元し、第2格納領域に移動したターゲットドライブに書き込む。
【選択図】
図6C
【特許請求の範囲】
【請求項1】
複数のノード及び複数のドライブを有するストレージシステムであって、
複数のドライブを格納する少なくとも一つの格納領域を含み、
前記ノードは、
二つ以上の前記ドライブから構成されるパリティグループを管理し、
前記複数のドライブに対するデータの読み出し及びデータの書き込みを制御し、
第1格納領域に格納され、かつ、第1パリティグループに属するターゲットドライブを第2格納領域に移動させる場合、前記第1格納領域から前記第2格納領域への前記ターゲットドライブの移動期間中に、前記ターゲットドライブに対するデータ書き込みが行われた記憶領域に関する差分情報を生成する第1処理と、
前記差分情報に基づいて、前記第1パリティグループに属する前記ターゲットドライブ以外の前記ドライブに格納されるデータから前記記憶領域に対して書き込まれたデータを復元し、前記第2格納領域に移動した前記ターゲットドライブに書き込む第2処理と、を実行することを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記ノードは、
前記複数のドライブの各々の前記格納領域間の移動状態を示す状態値を管理し、
前記ノードは、
前記ターゲットドライブの移動指示を受け付けた場合、前記ターゲットドライブの前記状態値として、前記第1格納領域から前記第2格納領域への移動が開始されたことを示す第1値を設定し、
前記ターゲットドライブの前記状態値として前記第1値が設定された後、前記第1処理を実行し、
前記ターゲットドライブが前記第2格納領域に設置されたことを検知した場合、前記ターゲットドライブの前記状態値として、前記ターゲットドライブへのデータのリビルド開始を示す第2値を設定し、
前記ターゲットドライブの前記状態値として前記第2値が設定された後、前記第2処理を実行し、
前記第2処理が終了した後、前記ターゲットドライブの前記状態値として、前記第1格納領域から前記第2格納領域への移動が終了したことを示す第3値を設定することを特徴とするストレージシステム。
【請求項3】
請求項2に記載のストレージシステムであって、
前記ノードは、
前記ターゲットドライブからのデータを読み出す場合、前記ターゲットドライブの前記状態値が前記第3値であるか否かを判定し、
前記ターゲットドライブの前記状態値が前記第3値ではないと判定された場合、前記差分情報を参照して、読み出し対象のデータが格納される記憶領域が、前記データ書き込みが行われた記憶領域であるか否かを判定し、
前記読み出し対象のデータが格納される記憶領域が、前記データ書き込みが行われた記憶領域である場合、前記第1パリティグループに属する前記状態値が前記第3値の前記ドライブに格納されるデータを用いて前記読み出し対象のデータを復元し、要求元に送信することを特徴とするストレージシステム。
【請求項4】
請求項2に記載のストレージシステムであって、
前記ノードは、
前記ターゲットドライブにデータを書き込む場合、前記ターゲットドライブの前記状態値が前記第1値であるか否かを判定し、
前記ターゲットドライブの前記状態値が前記第1値であると判定された場合、書き込み対象のデータ及び前記第1パリティグループに属する前記状態値が前記第3値の前記ドライブに格納されるデータを用いてパリティを生成し、
前記第1パリティグループに属する前記状態値が前記第2値又は前記第3値の前記ドライブに、前記書き込み対象のデータ及び前記パリティを格納し、
前記差分情報に、前記書き込み対象のデータの書き込み先の記憶領域を記録することを特徴とするストレージシステム。
【請求項5】
請求項1に記載のストレージシステムであって、
前記ノードは、
キャッシュを有し、
前記キャッシュにダーティデータが存在する場合、書き込み先の前記ドライブが前記ターゲットドライブである前記ダーティデータの書き込みを抑止するようにキャッシュ制御を行うことを特徴とするストレージシステム。
【請求項6】
請求項1に記載のストレージシステムであって、
前記差分情報は、前記ターゲットドライブの所定のサイズの記憶領域を1ビットとするビットマップであって、
前記ターゲットドライブに対するデータ書き込みが行われた記憶領域に対応するビットにはフラグが設定されることを特徴とするストレージシステム。
【請求項7】
複数のノード及び複数のドライブを有するストレージシステムが実行するドライブ移動方法であって、
前記ストレージシステムは、複数のドライブを格納する少なくとも一つの格納領域を含み、
前記ノードは、
二つ以上の前記ドライブから構成されるパリティグループを管理し、
前記複数のドライブに対するデータの読み出し及びデータの書き込みを制御し、
前記ドライブ移動方法は、
前記ノードが、第1格納領域に格納され、かつ、第1パリティグループに属するターゲットドライブを第2格納領域に移動させる場合、前記第1格納領域から前記第2格納領域への前記ターゲットドライブの移動期間中に、前記ターゲットドライブに対するデータ書き込みが行われた記憶領域に関する差分情報を生成する第1のステップと、
前記ノードが、前記差分情報に基づいて、前記第1パリティグループに属する前記ターゲットドライブ以外の前記ドライブに格納されるデータから前記記憶領域に対して書き込まれたデータを復元し、前記第2格納領域に移動した前記ターゲットドライブに書き込む第2のステップと、を含むことを特徴とするドライブ移動方法。
【請求項8】
複数のノード及び複数のドライブを有するストレージシステムに実行させるためのプログラムであって、
前記ストレージシステムは、複数のドライブを格納する少なくとも一つの格納領域を含み、
前記ノードは、
二つ以上の前記ドライブから構成されるパリティグループを管理し、
前記複数のドライブに対するデータの読み出し及びデータの書き込みを制御し、
前記プログラムは、
第1格納領域に格納され、かつ、第1パリティグループに属するターゲットドライブを第2格納領域に移動させる場合、前記第1格納領域から前記第2格納領域への前記ターゲットドライブの移動期間中に、前記ターゲットドライブに対するデータ書き込みが行われた記憶領域に関する差分情報を生成する第1の手順と、
前記差分情報に基づいて、前記第1パリティグループに属する前記ターゲットドライブ以外の前記ドライブに格納されるデータから前記記憶領域に対して書き込まれたデータを復元し、前記第2格納領域に移動した前記ターゲットドライブに書き込む第2の手順と、を前記ノードに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムにおけるドライブの移動方法に関する。
【背景技術】
【0002】
ストレージシステムでは、保守及び性能改善を目的にドライブ、コントローラ、及びノード等の構成要素の交換が行われる。このとき、現在の稼働状態を維持したまま構成要素の交換を実現することが望まれる。ストレージシステムの構成変更に関する技術としては特許文献1及び特許文献2に記載の技術が知られている。
【0003】
特許文献1には「ストレージ制御部と、記憶媒体を有するストレージドライブと、を備えたストレージシステムにおいて、ストレージ制御部は、ストレージドライブに格納されたデータへアクセスするためのデータ管理情報を有し、第1のストレージ制御部は、ストレージドライブに格納されたデータについてのデータ管理情報を第2のストレージ制御部にコピーし、データ管理情報のコピー開始後にホストからライト要求を受けた場合、第1のストレージ制御部と、第2のストレージ制御部とが、それぞれ、ライト要求にかかるライトデータをストレージドライブの別々の記憶領域に格納する。」ことが記載されている。
【0004】
特許文献2には「ストレージ制御装置は、受付部、決定部、及び、移行部を含む。受付部は、複数のストレージに分散して配置された複数の分割データを含む複数のボリュームのうち、移行元のストレージから移行先のストレージへ移行する対象ボリュームの指定を受け付ける。決定部は、移行元のストレージ内に配置可能な分割データの数と、対象ボリュームの分割データの数とに基づいて、移行元のストレージ内に配置する対象ボリュームの分割データのレイアウトを決定する。移行部は、決定したレイアウトに基づいて、対象ボリュームの分割データを移行元のストレージに配置して、配置した複数の分割データを一括して移行先のストレージへ移行する制御を行う。」ことが記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2021-140402号公報
【特許文献2】特開2016-192170号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に記載の手法では、ドライブを搭載する構成要素の交換については言及されていない。特許文献2に記載の手法では、新たなノードは記憶装置を有している必要があり、交換するノードの全てのデータを新規ノードにコピーするため負荷が大きく、また、時間がかかるという問題もある。
【0007】
本発明は、既存のドライブを有効に活用し、運用を止めることなく、ストレージシステム内の構成を変更するための技術を実現する。
【課題を解決するための手段】
【0008】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のノード及び複数のドライブを有するストレージシステムであって、複数のドライブを格納する少なくとも一つの格納領域を含み、前記ノードは、二つ以上の前記ドライブから構成されるパリティグループを管理し、前記複数のドライブに対するデータの読み出し及びデータの書き込みを制御し、第1格納領域に格納され、かつ、第1パリティグループに属するターゲットドライブを第2格納領域に移動させる場合、前記第1格納領域から前記第2格納領域への前記ターゲットドライブの移動期間中に、前記ターゲットドライブに対するデータ書き込みが行われた記憶領域に関する差分情報を生成する第1処理と、前記差分情報に基づいて、前記第1パリティグループに属する前記ターゲットドライブ以外の前記ドライブに格納されるデータから前記記憶領域に対して書き込まれたデータを復元し、前記第2格納領域に移動した前記ターゲットドライブに書き込む第2処理と、を実行する。
【発明の効果】
【0009】
本発明によれば、既存のドライブを有効に活用し、運用を止めることなく、ストレージシステム内の構成を変更できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0010】
【
図1】実施例1のシステムの構成例を示す図である。
【
図2】実施例1のPG管理情報のデータ構造の一例を示す図である。
【
図3】実施例1のドライブ管理情報のデータ構造の一例を示す図である。
【
図4】実施例1の差分管理情報のデータ構造の一例を示す図である。
【
図5A】実施例1のストレージシステムのドライブの移動例を示す図である。
【
図5B】実施例1のストレージシステムのドライブの移動例を示す図である。
【
図6A】実施例1のストレージシステムのドライブ移動処理の一例を説明するフローチャートである。
【
図6B】実施例1のストレージシステムのドライブ移動処理の一例を説明するフローチャートである。
【
図6C】実施例1のストレージシステムのドライブ移動処理の一例を説明するフローチャートである。
【
図7】実施例1のストレージシステムが実行するリード処理の一例を説明するフローチャートである。
【
図8】実施例1のストレージシステムが実行するライト処理の一例を説明するフローチャートである。
【
図9】実施例1のストレージシステムのキャッシュ制御の一例を説明するフローチャートである。
【
図10A】実施例2のストレージシステムのドライブの移動例を示す図である。
【
図10B】実施例2のストレージシステムのドライブの移動例を示す図である。
【
図11A】実施例2のストレージシステムのドライブの移動例を示す図である。
【
図11B】実施例2のストレージシステムのドライブの移動例を示す図である。
【
図11C】実施例2のストレージシステムのドライブの移動例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0012】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0013】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【0014】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例0015】
図1は、実施例1のシステムの構成例を示す図である。
【0016】
図1のシステムは、ストレージシステム100、管理用端末101、及びホスト端末102から構成される。管理用端末101及びホスト端末102は、ネットワーク105を介してストレージシステム100と接続する。ネットワーク105は、WAN(Wide Area Network)、LAN(Local Area Network)、SAN(Storage Area Network)等である。ネットワーク105の接続方式は有線及び無線のいずれでもよい。なお、管理用端末101とストレージシステム100との間のネットワークと、ホスト端末102とストレージシステム100との間のネットワークは異なっていてもよい。
【0017】
管理用端末101は、ストレージシステム100を管理するための計算機である。ストレージシステム100の管理者は、管理用端末101を用いてストレージシステム100の設定及び制御を行う。
【0018】
ホスト端末102は、ストレージシステム100を利用する計算機である。ホスト端末102は、ストレージシステム100に対してユーザデータを書き込み、また、ストレージシステム100からユーザデータを読み出す。
【0019】
ストレージシステム100は、ホスト端末102に対してボリュームを提供する。ストレージシステム100は、複数のドライブ121からRAID(Redundant Arrays of Inexpensive Disks)を構成するPG(パリティグループ)140を生成し、PG140からボリュームを生成する。ドライブ121は、例えば、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等である。ボリュームは、例えば、LDEVである。
【0020】
ストレージシステム100は、複数のノード110を備える。複数のノード110は、図示しないスイッチ等から構成される内部ネットワークを介して接続される。
【0021】
ノード110は、ホスト端末102とドライブ121との間のユーザデータの送受信を制御し、また、ドライブ121に対するユーザデータの読み出し及び書き込みを制御する。ノード110は、一つ以上のCTL(ストレージコントローラ)120を有する。また、ノード110は、ドライブ121を搭載するためのインタフェース(図示省略)を有する。
【0022】
以下の説明では、ノード110及びCTL120を区別する場合、ノード(i)110及びCTL(i)120と記載する。iは1以上の整数である。
【0023】
CTL120は、ハードウェア構成として、図示しない、CPU、メモリ、CHB(CHannel Board)、及びDKB(DisK Board)等を有する。また、CTL120は、機能構成として、ユーザデータの送受信、読み出し、及び書き込み等を制御する処理部150を有する。また、ノード110内のCTL120は、差分管理情報153を管理する。差分管理情報153は、ドライブ121の搭載場所の移動に伴うデータコピーを制御するための情報である。差分管理情報153の詳細は
図4を用いて説明する。
【0024】
ストレージシステム100内の各ノード110は共有メモリ130を構成する。共有メモリ130には、PG管理情報151及びドライブ管理情報152が格納される。PG管理情報151は、PG140を管理するための情報である。PG管理情報151の詳細は
図2を用いて説明する。ドライブ管理情報152は、ストレージシステム100に搭載されるドライブ121を管理するための情報である。ドライブ管理情報152の詳細は
図3を用いて説明する。
【0025】
実施例1では、ノード110内にドライブ121が搭載され、一つ以上のノード110のドライブ121群からPG140が構成されているものとする。
【0026】
図2は、実施例1のPG管理情報151のデータ構造の一例を示す図である。
【0027】
PG管理情報151は、PG番号201及びドライブリスト202を含むエントリを格納する。一つのエントリは一つのPG140に対応する。なお、エントリに含まれるフィールドは前述したものに限定されない。
【0028】
PG番号201は、PG140の識別番号を格納するフィールドである。ドライブリスト202は、PG140を構成するドライブ121の情報を格納するフィールドである。ドライブリスト202には、ストレージシステム100内のドライブ121を識別するためのドライブ番号のリストが格納される。
【0029】
図3は、実施例1のドライブ管理情報152のデータ構造の一例を示す図である。
【0030】
ドライブ管理情報152は、ドライブ番号301、ドライブ識別情報302、移動状態303、ロケーション304、及び所属PG番号305を含むエントリを格納する。一つのエントリは一つのドライブ121に対応する。なお、エントリに含まれるフィールドは前述したものに限定されない。
【0031】
ドライブ番号301は、ドライブ番号を格納するフィールドである。ドライブ識別情報302は、ドライブ121そのものを一意に識別するための識別情報を格納するフィールドである。移動状態303は、ドライブ121の移動に関する状態を示す値を格納するフィールドである。移動状態303には、ドライブ121の搭載場所の移動が完了していることを示す「移動済」、ドライブ121の搭載場所が変更され、かつ、認識がされていない状態を示す「移動中」、ドライブ121の搭載場所が変更され、かつ、リビルドが完了していない状態を示す「リビルド待ち」のいずれかが格納される。ロケーション304は、ドライブ121の搭載場所を格納するフィールドである。所属PG番号305は、ドライブ121が属するPG140の識別番号を格納するフィールドである。
【0032】
図4は、実施例1の差分管理情報153のデータ構造の一例を示す図である。
【0033】
差分管理情報153は、ドライブ番号401及び更新ビットマップ402を含むエントリを格納する。一つのエントリは搭載場所が変更されたドライブ121に対応する。
【0034】
ドライブ番号401は、搭載場所が変更されたドライブ121のドライブ番号を格納するフィールドである。更新ビットマップ402は、搭載場所の移動中に、当該ドライブ121の更新されたデータの位置を特定するための更新ビットマップを格納するフィールドである。更新ビットマップは、例えば、512MBの記憶領域を1ビットとして扱うビットマップが考えられる。1ビットあたりの記憶領域の大きさは任意に設定できる。
【0035】
図5A及び
図5Bは、実施例1のストレージシステム100のドライブ121の移動例を示す図である。
図6A、
図6B、及び
図6Cは、実施例1のストレージシステム100のドライブ移動処理の一例を説明するフローチャートである。
【0036】
実施例1では、ストレージシステム100にノード(3)110が追加され、ノード(2)110に搭載され、かつ、PG140を構成するドライブ121群を、ノード(3)110に移動させる場合のストレージシステム100の制御について説明する。まず、管理者等は、ストレージシステム100にノード(3)を追加する。
【0037】
管理者等は、搭載位置を移動させたいドライブ121があるか否かを確認する。移動させたいドライブ121がある場合、管理者等は、管理用端末101を用いて、ドライブ移動指示を送信する。なお、ドライブ移動指示には移動対象のドライブ121を指定するドライブ番号が含まれるものとする。
【0038】
以下の説明では、搭載位置を移動させるドライブ121をターゲットドライブ121と記載する。
【0039】
ドライブ移動指示を受信すると、ノード(2)110の処理部150は、ドライブ管理情報152及び差分管理情報153を更新する(ステップS101)。
【0040】
具体的には、処理部150は、ドライブ管理情報152からターゲットドライブ121のエントリを検索し、当該エントリの移動状態303に「移動中」を設定する。また、処理部150は、差分管理情報153にエントリを追加し、追加されたエントリのドライブ番号401にターゲットドライブ121のドライブ番号を設定し、更新ビットマップ402に初期化されたビットマップを設定する。ここで初期化されたビットマップとは、全てのビットのフラグが削除された状態を示す。
【0041】
ステップS101の処理の後、管理者等は、ノード(2)110から冗長度の範囲内で所定の数のドライブ121を取り出し、ノード(3)110にドライブ121を搭載する。
【0042】
移動したいドライブをすべて移動した後、管理者等は、ホスト端末102との間のパス及びLDEVのオーナ権をノード(3)110に変更する。
【0043】
ノード(3)110の処理部150は、搭載されたドライブ121を認識し(ステップS201)、当該ドライブ121から識別情報等を取得する。
【0044】
ノード(3)110の処理部150は、ドライブ管理情報152を更新し(ステップS202)、その後、処理を終了する。
【0045】
具体的には、処理部150は、ドライブ管理情報152から認識されたドライブ121のエントリを検索し、当該エントリの移動状態303の値を取得する。移動状態303の値が「移動中」である場合、処理部150は、当該エントリのロケーション304に現在の搭載位置を設定し、また、移動状態303に「リビルド待ち」を設定する。
【0046】
リビルド実行ノード110が
図6Cの処理を実行する。リビルド実行ノード110は、ドライブ121の移動元又は移動先のいずれかのノード110でもよいし、ストレージシステム100内で負荷が低いノード110でもよい。
【0047】
リビルド実行ノード110の処理部150は、ドライブ管理情報152を参照して、移動状態303が「リビルド待ち」のドライブ121を特定する(ステップS301)。
【0048】
リビルド実行ノード110の処理部150は、特定されたドライブ121のドライブ識別情報を含む、差分管理情報153の問合せを各ノード110に送信することによって、更新ビットマップを取得する(ステップS302)。
【0049】
リビルド実行ノード110の処理部150は、更新ビットマップのフラグが設定されているビットの中から一つのビットを選択する(ステップS303)。
【0050】
リビルド実行ノード110の処理部150は、選択したビットに対応するターゲットドライブ121の記憶領域に対して、PG140を構成するドライブ121を用いてコレクションコピーを実行する(ステップS304)。なお、コレクションコピーに使用するドライブ121にはターゲットドライブ121は含まれない。
【0051】
本実施例では、ドライブ121全体のコレクションコピーは行われず、移動中に更新された領域についてのみコレクションコピーが行われる。
【0052】
リビルド実行ノード110の処理部150は、選択したビットのフラグを削除する(ステップS305)。
【0053】
リビルド実行ノード110の処理部150は、フラグが設定された全てのビットの処理が完了したか否かを判定する(ステップS306)。
【0054】
フラグが設定された全てのビットの処理が完了していない場合、リビルド実行ノード110の処理部150は、ステップS303に戻り、同様の処理を実行する。
【0055】
フラグが設定された全てのビットの処理が完了した場合、リビルド実行ノード110の処理部150は、ドライブ管理情報152を更新し(ステップS307)、その後、処理を終了する。
【0056】
具体的には、処理部150は、ドライブ管理情報152の特定されたドライブ121のエントリの移動状態303に「移動済」を設定する。
【0057】
なお、ステップS301において複数のドライブ121が特定された場合、各ドライブ121に対してステップS302からステップS307の処理が実行される。
【0058】
さらに、ドライブ121を移動させる場合、管理者は、管理用端末101を用いてドライブ121の移動を指示する。これによって、
図6A、
図6B、及び
図6Cの処理が実行される。
【0059】
図7は、実施例1のストレージシステム100が実行するリード処理の一例を説明するフローチャートである。
【0060】
処理部150は、リード要求を受信した場合、アクセス先のドライブ121を特定し、ドライブ管理情報152を参照して、当該ドライブ121に対応するエントリの移動状態303が「移動済」であるか否かを判定する(ステップS401)。
【0061】
ドライブ121に対応するエントリの移動状態303が「移動済」である場合、処理部150は、当該ドライブ121からデータを読み出し、要求元に送信する(ステップS402)。
【0062】
ドライブ121に対応するエントリの移動状態303が「移動済」でない場合、処理部150は、当該ドライブ121の更新ビットマップを取得し(ステップS403)、読み出し先のアドレスを含む記憶領域に対応するビットにフラグが設定されているか否かを判定する(ステップS404)。
【0063】
読み出し先のアドレスを含む記憶領域に対応するビットにフラグが設定されていない場合、処理部150は、当該ドライブ121からデータを読み出し、要求元に送信する(ステップS402)。
【0064】
読み出し先のアドレスを含む記憶領域に対応するビットにフラグが設定されている場合、処理部150は、当該ドライブ121が属するPG140の他のドライブ121からデータを取得してデータを復元し、要求元に送信する(ステップS405)。
【0065】
図8は、実施例1のストレージシステム100が実行するライト処理の一例を説明するフローチャートである。
【0066】
処理部150は、ライト要求を受信した場合、キャッシュにデータを書き込み、キャッシュの空き容量が閾値より小さくなった場合、処理部150は、ドライブ121へデータを書き込む。まず、処理部150は、書き込み先のドライブ121を特定し、ドライブ管理情報152を参照して、当該ドライブ121に対応するエントリの移動状態303が「移動中」であるか否かを判定する(ステップS501)。
【0067】
以下の説明では書き込み先のドライブ121をターゲットドライブ121と記載する。
【0068】
ターゲットドライブ121に対応するエントリの移動状態303が「移動中」でない場合、処理部150は、ターゲットドライブ121にデータを書き込む(ステップS502)。
【0069】
ターゲットドライブ121に対応するエントリの移動状態303が「移動中」である場合、処理部150は、ターゲットドライブ121が属するPG140を構成するドライブ121からデータを読み出す(ステップS503)。このとき、移動状態303が「移動中」又は「リビルド待ち」のドライブ121は除外される。すなわち、処理部150は、PG140を構成し、かつ、移動状態303が「移動済」のドライブ121からデータを読み出す。
【0070】
処理部150は、書き込むデータ及び読み出されたデータを用いてパリティを生成する(ステップS504)。
【0071】
処理部150は、書き込み対象のドライブ121が属するPG140を構成するドライブ121に書き込みデータ及びパリティを書き込む(ステップS505)。このとき、移動状態303が「移動中」のドライブ121は除外される。すなわち、処理部150は、PG140を構成し、かつ、移動状態303が「移動中」ではないドライブ121にデータを書き込む。
【0072】
処理部150は、ターゲットドライブ121の更新ビットマップを参照し、書き込み先のアドレスを含む記憶領域に対応するビットにフラグを設定する(ステップS506)。
【0073】
図9は、実施例1のストレージシステム100のキャッシュ制御の一例を説明するフローチャートである。
【0074】
各ノード110の処理部150は、周期的に、又は、実行指示を受け付けた場合、以下で説明するキャッシュ制御を実行する。本実施例では、LRU(Least Recently Used)方式でキャッシュの制御が行われているものとする。
【0075】
ノード110の処理部150は、キャッシュにダーティデータが存在するか否かを判定する(ステップS601)。
【0076】
キャッシュにダーティデータが存在しない場合、処理部150は処理を終了する。
【0077】
キャッシュにダーティデータが存在する場合、処理部150は、ダーティデータを管理するキューからダーティデータを選択する(ステップS602)。キューにはアクセス時間が古い順にダーティデータが登録されており、処理部150は、最もアクセス時間が古いダーティデータを選択する。
【0078】
処理部150は、選択したダーティデータのデータ量が閾値以下であるか否かを判定する(ステップS603)。
【0079】
選択したダーティデータのデータ量が閾値より大きい場合、処理部150は処理を終了する。
【0080】
選択したダーティデータのデータ量が閾値以下の場合、処理部150は、選択したダーティデータの書き込み先のドライブ121を特定し、ドライブ管理情報152を参照して、当該ドライブ121に対応するエントリの移動状態303が「移動中」であるか否かを判定する(ステップS604)。
【0081】
選択したダーティデータの書き込み先のドライブ121に対応するエントリの移動状態303が「移動中」ではない場合、処理部150は処理を終了する。
【0082】
選択したダーティデータの書き込み先のドライブ121に対応するエントリの移動状態303が「移動中」である場合、処理部150は、選択したダーティデータをキューの末尾に登録し(ステップS605)、その後、ステップS601に戻る。
【0083】
図9に示す制御によって、移動状態303が「移動中」であるドライブ121へのデータの書き込みを抑制できる。これによって、当該ドライブ121に対するコレクションコピーの回数を抑えることができる。
【0084】
実施例1では、PG140を構成する全てのドライブ121を移動させていたが、一部のドライブ121のみを移動させてもよい。
【0085】
実施例1によれば、ノード110間でデータを保持したままドライブ121を移動させることができる。すなわち、既存のドライブ121を流用できる。応用として、新しく追加した移動先のノード110へのドライブ121移動の完了後、移動元のノード110を撤去することにより、ノード110の交換に伴うストレージシステムのアップグレードが無停止で容易に実現できる。また、ドライブ121の移動中にデータの書き込みが行われた場合、データ書き込みが行われた記憶領域についてコレクションコピーを実行することによって、短時間で最新の状態を復元できる。
【0086】
実施例1のユースケースとしては、ストレージシステム100におけるノード110の入換及びスケールアウトが考えられる。いずれのユースケースでも、新規ノード110にドライブ121を用意する必要がなく、また、ホスト端末102のIOを止める必要がない。
管理者は、ストレージシステム100に新規ドライブボックス(2)111を追加し、ドライブボックス(1)111に搭載され、かつ、PG140を構成するドライブ121群を、ドライブボックス(2)111に移動させる。ドライブボックス(1)111の全てのドライブ121の移動が完了した後、管理者は、ドライブボックス(1)111を撤去する。
管理者は、少なくとも一つのノード110に、ドライブボックス(1)111に搭載され、かつ、PG140を構成するドライブ121群を移動させ、ドライブボックス(1)111をドライブボックス(2)111に入れ替えた後、ドライブ121をドライブボックス(2)111に移動させる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。