(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-16
(45)【発行日】2022-09-28
(54)【発明の名称】ストレージシステムおよびデータ移行方法
(51)【国際特許分類】
G06F 16/182 20190101AFI20220920BHJP
G06F 3/06 20060101ALI20220920BHJP
G06F 13/10 20060101ALI20220920BHJP
G06F 16/13 20190101ALI20220920BHJP
【FI】
G06F16/182
G06F3/06 301X
G06F3/06 301Z
G06F13/10 340A
G06F16/13 100
(21)【出願番号】P 2019184724
(22)【出願日】2019-10-07
【審査請求日】2021-06-01
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】鴨生 悠冬
(72)【発明者】
【氏名】深谷 崇元
(72)【発明者】
【氏名】早坂 光雄
【審査官】鹿野 博嗣
(56)【参考文献】
【文献】米国特許出願公開第2012/0150799(US,A1)
【文献】特開2006-350599(JP,A)
【文献】特開2007-280319(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/182
G06F 3/06
G06F 13/10
G06F 16/13
(57)【特許請求の範囲】
【請求項1】
1以上のノードを備えるストレージシステムであって、
前記ノードは、システムの管理するデータを格納し、
前記ノードを用いて構成される移行元のシステムから前記ノードを用いて構成される移行先のシステムに、前記移行元のシステムにおいて管理される前記データの移行を制御するデータ移行部と、
前記データの前記移行元のシステムにおける格納先を示す情報を含むスタブ情報を前記移行先のシステムに作成するデータ処理部と、
前記移行元のシステムと前記移行先のシステムとで共有される論理デバイスのページを論理ボリュームに割り当てる論理ボリューム管理部と、
を備え、
前記データ移行部は、前記移行元のシステムのデータの前記移行先のシステムへの移行を前記データ処理部に指示し、
前記データ処理部は、前記データの移行の指示を受けた場合に、前記データのスタブ情報があるときは、前記スタブ情報をもとに前記移行元のシステムから前記データを読み出し、前記データを書き込むように前記移行先のファイルシステムに指示し、前記スタブ情報を削除し、
前記データ移行部は、前記データの移行が完了した場合に、前記データを削除するように前記移行元のシステムに指示
し、
前記データ移行部は、論理ボリューム単位で前記データ移行の指示を行い、前記移行元のシステムで用いられる論理ボリュームに割り当てられているページの全てのデータが前記移行先のシステムに移行されたと判定した場合、前記論理ボリュームのページを解放するように指示する、
ストレージシステム。
【請求項2】
前記システムは、複数のデータを管理し、
前記データ移行部は、前記移行元のシステムおよび前記移行先のシステムで用いられている前記ノードの空容量を管理し、
前記データ移行部は、
(A)前記ノードの空容量に基づいて前記移行するデータを選択して、前記データの移動を前記データ処理部に指示する、
(B)前記移行が完了したデータを削除するように前記移行元のシステムに指示する、
(C)前記データが削除された前記ノードの空容量を更新する
の(A)~(C)を繰り返してデータ移行を制御する
請求項1に記載のストレージシステム。
【請求項3】
前記ノードは複数あり、ノードごとに前記データを格納する記憶デバイスを有している
請求項2に記載のストレージシステム。
【請求項4】
前記移行元のシステムおよび前記移行先のシステムは、複数の前記ノードを用いて構成される分散システムである、
請求項1に記載のストレージシステム。
【請求項5】
前記移行元のシステムおよび前記移行先のシステムは、前記複数のノードを用いて構成される分散システムであり、前記複数のノードに分散させてデータを格納し、少なくとも1のノードを共有している
請求項3に記載のストレージシステム。
【請求項6】
前記データ移行部は、前記移行元のシステムにおける格納先であるノードの空容量が少ないデータを、移行するデータとして選択する、
請求項2に記載のストレージシステム。
【請求項7】
前記移行元のシステムおよび前記移行先のシステムで用いられている前記ノードは、ストレージデバイスを有し、
前記移行元のシステムと前記移行先のシステムとで共有される前記ストレージデバイスの論理デバイスのページを論理ボリュームに割り当てる論理ボリューム管理部を備え、
前記データ移行部は、論理ボリューム単位で前記データ移行の指示を行い、前記移行元のシステムで用いられる論理ボリュームに割り当てられているページの全てのデータが前記移行先のシステムに移行されたと判定した場合、前記論理ボリュームのページを解放するように指示する、
請求項4に記載のストレージシステム。
【請求項8】
前記移行元のシステムおよび前記移行先のシステムのデータ管理単位は、ファイル、オブジェクトまたはブロックの何れかである、
請求項1に記載のストレージシステム。
【請求項9】
前記ノードは、前記移行元のシステムと前記移行先のシステムとで共有される論理デバイスのページを前記移行先のシステムと前記移行元のシステムとで共有される論理ボリュームに割り当てる論理ボリューム管理部と、前記移行元のシステムと前記移行先のシステムとのデータを前記論理ボリュームを介して管理するローカルシステム部と、を備える、
請求項1に記載のストレージシステム。
【請求項10】
1以上のノードを備えるストレージシステムにおけるデータ移行方法であって、
前記ノードは、システムの管理するデータを格納し、
前記ストレージシステムは、
前記ノードを用いて構成される移行元のシステムから前記ノードを用いて構成される移行先のシステムに、前記移行元のシステムにおいて管理される前記データの移行を制御するデータ移行部と、
前記データの前記移行元のシステムにおける格納先を示す情報を含むスタブ情報を前記移行先のシステムに作成するデータ処理部と、
前記移行元のシステムと前記移行先のシステムとで共有される論理デバイスのページを論理ボリュームに割り当てる論理ボリューム管理部と、
を備え、
前記データ移行部が、前記移行元のシステムのデータの前記移行先のシステムへの移行を前記データ処理部に指示することと、
前記データ処理部が、前記データの移行の指示を受けた場合に、前記データのスタブ情報があるときは、前記スタブ情報をもとに前記移行元のシステムから前記データを読み出し、前記データを書き込むように前記移行先のファイルシステムに指示し、前記スタブ情報を削除することと、
前記データ移行部が、前記データの移行が完了した場合に、前記データを削除するように前記移行元のシステムに指示することと、
前記データ移行部が、論理ボリューム単位で前記データ移行の指示を行い、前記移行元のシステムで用いられる論理ボリュームに割り当てられているページの全てのデータが前記移行先のシステムに移行されたと判定した場合、前記論理ボリュームのページを解放するように指示することと、
を含むデータ移行方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムおよびデータ移行方法に関し、例えば、移行元のシステムから移行先のシステムにデータを移行可能なストレージシステムおよびデータ移行方法に適用して好適なものである。
【背景技術】
【0002】
ストレージシステムのユーザが古いシステムを新しいシステムに交換する場合、ワークロードを引き継ぐためにシステム間のデータの同期が必要である。最近のストレージメディアは、以前よりもはるかに大きい容量を持つ。このため、新旧のシステム間でデータを同期するには、非常に長い時間がかかり、場合によっては1週間以上かかる。ユーザは、このように長い間、業務を停止したくなく、同期の間も業務を続けたいと考えている。
【0003】
ここで、移行元ファイルシステムから移行先ファイルシステムへのデータ同期中に、受領した要求を移行元ファイルシステムと移行先ファイルシステムとに転送し、同期の完了後は、受領した要求を移行先ファイルシステムに転送することで、ファイルシステムの移行時の業務の停止時間を抑制する技術が開示されている(特許文献1参照)。
【0004】
また、同期確認中の業務の停止時間の削減を目的として、スタブファイルを作成し、アクセス先を移行前に移行先ファイルシステムに切り替える技術が開示されている(特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第9311314号明細書
【文献】米国特許第8856073号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
スケールアウト型のファイルSDS(Software Defined Storage)は、企業のプライベートクラウドで広く用いられている。こうしたファイルSDSにおいても、ソフトウェアのバージョンアップ、製品のEOL(End of Life)等を契機に下位互換性のない異種システムに移行が必要となる場合がある。
【0007】
ここで、ファイルSDSは、数十台から数千台の汎用サーバから構成されるが、データの移行の際に同等性能および同等容量を実現する装置を別途用意するのは、コスト面および物理的制約から現実的でない。
【0008】
しかしながら、特許文献1と特許文献2とに記載の各技術においては、移行元と移行先とが別装置であることを前提としており、移行先の装置として移行元と同等以上の装置を用意する必要がある。仮に、移行先として同一装置を使用した場合、特許文献1と特許文献2とに記載の各技術では、移行中に移行元と移行先とでデータを重複して持つこととなる。移行元の容量と移行先の容量との合計が物理容量より大きい場合、容量が枯渇し、移行が失敗してしまう。
【0009】
本発明は、以上の点を考慮してなされたもので、装置を追加することなくデータを適切に移行し得るストレージシステム等を提案しようとするものである。
【課題を解決するための手段】
【0010】
かかる課題を解決するため本発明においては、1以上のノードを備えるストレージシステムであって、前記ノードは、システムの管理するデータを格納し、前記ノードを用いて構成される移行元のシステムから前記ノードを用いて構成される移行先のシステムに、前記移行元のシステムにおいて管理される前記データの移行を制御するデータ移行部と、前記データの前記移行元のシステムにおける格納先を示す情報を含むスタブ情報を前記移行先のシステムに作成するデータ処理部と、を備え、前記データ移行部は、前記移行元のシステムのデータの前記移行先のシステムへの移行を前記データ処理部に指示し、前記データ処理部は、前記データの移行の指示を受けた場合に、前記データのスタブ情報があるときは、前記スタブ情報をもとに前記移行元のシステムから前記データを読み出し、前記データを書き込むように前記移行先のファイルシステムに指示し、前記スタブ情報を削除し、前記データ移行部は、前記データの移行が完了した場合に、前記データを削除するように前記移行元のシステムに指示する。
【0011】
上記構成では、移行が行われていないデータについてはスタブ情報を用いて移行元のシステムから当該データが読み出され、移行先のシステムに当該データの書き込みが行われたときに当該データが移行元のシステムから削除される。かかる構成によれば、ストレージシステムは、データを重複して持つことを避けることができるので、移行元のシステムから移行先のシステムへのデータの移行のためにユーザが装置を追加することなく、既存の装置を用いてデータを移行することができる。
【発明の効果】
【0012】
本発明によれば、装置を追加することなくデータを適切に移行することができる。なお、上記した以外の課題、構成および効果は、以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】第1の実施の形態によるストレージシステムの概要を説明するための図である。
【
図2】第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。
【
図3】第1の実施の形態によるホスト計算機に係る構成の一例を示す図である。
【
図4】第1の実施の形態による管理システムに係る構成の一例を示す図である。
【
図5】第1の実施の形態によるノードに係る構成の一例を示す図である。
【
図6】第1の実施の形態によるスタブファイルを使う分散FSの実装例を示す図である。
【
図7】第1の実施の形態によるスタブファイルの構成の一例を示す図である。
【
図8】第1の実施の形態による移行元ファイル管理テーブルのデータ構造の一例を示す図である。
【
図9】第1の実施の形態による物理プール管理テーブルのデータ構造の一例を示す図である。
【
図10】第1の実施の形態によるページ割当管理テーブルのデータ構造の一例を示す図である。
【
図11】第1の実施の形態による移行管理テーブルのデータ構造の一例を示す図である。
【
図12】第1の実施の形態による移行ファイル管理テーブルのデータ構造の一例を示す図である。
【
図13】第1の実施の形態による移行元ボリューム解放領域管理テーブルのデータ構造の一例を示す図である。
【
図14】第1の実施の形態によるノード容量管理テーブルのデータ構造の一例を示す図である。
【
図15】第1の実施の形態による分散FS移行処理に係るフローチャートの一例を示す図である。
【
図16】第1の実施の形態によるファイル移行処理に係るフローチャートの一例を示す図である。
【
図17】第1の実施の形態によるページ解放処理に係るフローチャートの一例を示す図である。
【
図18】第1の実施の形態によるスタブ管理処理に係るフローチャートの一例を示す図である。
【
図19】第2の実施の形態によるストレージシステムの概要を説明するための図である。
【発明を実施するための形態】
【0014】
以下図面について、本発明の一実施の形態を詳述する。本実施の形態では、データの移行のために装置(ストレージメディア、ストレージアレイ、および/または、ノード)を追加することなく、移行元のシステム(移行元システム)から移行先のシステム(移行先システム)にデータを移行する技術に関して説明する。
【0015】
移行元システムおよび移行先システムは、分散システムであってもよいし、分散システムでなくてもよい。また、移行元システムおよび移行先システムのデータ管理単位としては、ブロックであってもよいし、ファイルであってもよいし、オブジェクトであってもよい。なお、本実施の形態では、移行元システムおよび移行先システムとしては、分散ファイルシステム(分散FS)を例に挙げて説明する。
【0016】
本実施の形態のストレージシステムでは、ファイルを移行する前に既存のノード(同一装置)内にファイルに代えて当該ファイルにアクセス可能なスタブファイルを作成し、アクセス先を移行先分散FSに切り替える。そして、本ストレージシステムでは、移行処理中に、移行が完了したファイルを移行元分散FSから削除する。
【0017】
また、例えば、本ストレージシステムでは、移行処理中に各ノードまたはストレージメディアの空容量を監視し、移行元分散FSのアルゴリズムを考慮して、空容量の少ないノードまたはストレージメディアのファイルから選択して移行するようにしてもよい。これにより、ノードまたはストレージメディアにおける使用量の偏りによる特定ノードの容量超過を防ぐことができる。
【0018】
また、例えば、本ストレージシステムでは、移行元分散FSの削除したファイルのファイル容量を移行先分散FSで使用できるようにシンプロビジョニングした論理デバイスを共有し、ファイルの削除時にページの回収を指示するようにしてもよい。これにより、ページを利用できるようになる。
【0019】
なお、以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶこともできる。
【0020】
また、以下の説明では、「インタフェース(I/F)」は、1以上の通信インタフェースデバイスを含んでよい。1以上の通信インタフェースデバイスは、1以上の同種の通信インタフェースデバイス(例えば、1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
【0021】
また、以下の説明では、「ストレージメディア」は、物理的な不揮発性の記憶デバイス(例えば、補助記憶デバイス)、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)、フラッシュメモリ、光ディスク、磁気テープ等である。
【0022】
また、以下の説明では、「メモリ」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし、不揮発性メモリであってもよい。メモリは、主に、プロセッサによる処理の際に使用される。
【0023】
また、以下の説明では、「プロセッサ」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、CPU(Central Processing Unit)でよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【0024】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えば、CPU)によって実行されることで、定められた処理を、適宜に記憶部(例えば、メモリ)および/またはインタフェース(例えば、ポート)を用いながら行うため、処理の主語がプログラムとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを備える計算機(例えば、ノード)が行う処理としてもよい。また、コントローラ(ストレージコントローラ)は、プロセッサそれ自体であってもよいし、コントローラが行う処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたはコンピュータ読取可能な(例えば、非一時的な)記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0025】
また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えてまたは加えて他種の識別情報が使用されてもよい。
【0026】
また、以下の説明では、分散ストレージシステムは、1以上の物理的な計算機(ノード)を含む。1以上の物理的な計算機は、物理的なサーバと物理的なストレージとのうちの少なくとも1つを含んでよい。少なくとも1つの物理的な計算機が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)またはSDDC(Software-defined Datacenter)を採用することができる。
【0027】
また、以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ファイルを特に区別しないで説明する場合には、「ファイル613」と記載し、個々のファイルを区別して説明する場合には、「ファイル613-1」、「ファイル613-2」のように記載することがある。
【0028】
(1)第1の実施の形態
図1において、100は全体として第1の実施の形態によるストレージシステムを示す。
【0029】
図1は、ストレージシステム100の概要を説明するための図である。ストレージシステム100では、既存のノード110が用いられて、同種または異種の分散FS間のファイルの移行が行われる。
【0030】
ストレージシステム100では、複数のノード110上において、移行元分散FS101から移行先分散FS102にファイルを移行する処理が行われる。また、ストレージシステム100は、ファイルの移行時に各ノード110の空容量を監視し、移行が完了したファイルを削除することで、空容量の不足による移行の失敗を回避している。例えば、移行元分散FS101と移行先分散FS102とで同一のノード110を用いることで、別途、移行のためにノード110を導入することなく、分散FS間のファイルの移行を実現している。
【0031】
より具体的には、ストレージシステム100は、1以上のノード110と、ホスト計算機120と、管理システム130とを含んで構成される。ノード110とホスト計算機120と管理システム130とは、フロントエンドネットワーク140(FEネットワーク)を介して通信可能に接続されている。また、ノード110間は、バックエンドネットワーク150(BEネットワーク)を介して通信可能に接続されている。
【0032】
ノード110は、例えば、分散FSサーバであり、分散FS移行部111と、ネットワークファイル処理部112(ネットワークファイル処理部112はスタブ管理部113を備える。)と、移行元分散FS部114と、移行先分散FS部115と、論理ボリューム管理部116とを備える。なお、分散FS移行部111については、全てのノード110が備える構成であってもよいし、一部のノード110が備える構成であってもよい。
図1では、1つのノード110が分散FS移行部111を備える例を示している。
【0033】
本ストレージシステム100では、管理システム130は、分散FSの移行を分散FS移行部111に依頼する。分散FS移行部111は、依頼を受け付けると、移行元分散FS101のリバランスを停止する。次に、分散FS移行部111は、移行元分散FS101のファイルの情報と各ノード110の物理プール117の空容量とからデータを移行可能であるか否かを判定する。また、分散FS移行部111は、移行元分散FS101の全ファイルの格納されているノード110とサイズの情報とを取得する。さらに、分散FS移行部111は、スタブ管理部113にスタブファイルの作成を要求する。要求を受けたスタブ管理部113は、移行先分散FS102上に移行元分散FS101と同じファイルツリーを作成する。なお、作成されるファイルツリーでは、ファイルは、移行元分散FS101のファイルにアクセス可能なスタブファイルとして作成される。
【0034】
次に、分散FS移行部111は、ファイルの移行処理を行う。ファイルの移行処理では、以下に示す、(A)監視処理161、(B)読込書込処理162(コピー処理)、(C)削除処理163および(D)解放処理164が行われる。
【0035】
(A)監視処理161
分散FS移行部111は、各ノード110の論理ボリューム管理部116に物理プール117の空容量を定期的に問い合わせ、物理プール117の空容量を監視する。
【0036】
(B)読込書込処理162
分散FS移行部111は、物理プール117の空容量の少ないノード110(対象ノード110)に格納されているファイルを優先して移行する。例えば、分散FS移行部111は、移行先分散FS102のファイルの読み込みを対象ノード110のネットワークファイル処理部112に依頼する。依頼を受けたネットワークファイル処理部112は、スタブファイルに対応するファイルを、対象ノード110の移行元分散FS部114を介して移行元分散FS101から読み込み、対象ノード110の移行先分散FS部115に移行先分散FS102への書き込みを依頼する。対象ノード110の移行先分散FS部115は、他のノード110の移行先分散FS部115と連携して移行先分散FS102に読み込まれたファイルを書き込む。
【0037】
(C)削除処理163
分散FS移行部111は、分散FS移行部111の読込書込処理162またはホスト計算機120のファイルI/Oの要求によって移行先分散FS102への読み込みおよび書き込み(コピー)が完了したファイルを対象ノード110のネットワークファイル処理部112および移行元分散FS部114を介して移行元分散FS101から削除する。
【0038】
(D)解放処理164
分散FS移行部111は、ファイルの削除によって使用されなくなった移行元分散FS101の論理ボリューム118(移行元FS論理VOL)に割り当てられている物理ページの解放を対象ノード110の論理ボリューム管理部116に依頼する。論理ボリューム管理部116は、物理ページを解放することで、当該物理ページを、移行先分散FS102の論理ボリューム119(移行先FS論理VOL)に割り当てることができるようになる。
【0039】
分散FS移行部111は、ファイルの移行処理が終わると、移行元分散FS101を削除し、管理システム130に結果を返却する。
【0040】
なお、移行元分散FS101は、各ノード110の移行元分散FS部114が連携することにより実現される。また、移行先分散FS102は、各ノード110の移行先分散FS部115が連携することにより実現される。付言するならば、分散FS移行部111は、対象ノード110の移行先分散FS部115にファイルの書き込みの依頼を行う例を示したが、この構成に限らない。移行元分散FS101は、対象ノード110とは異なるノード110の移行先分散FS部115にファイルの書き込みの依頼を行う構成であってもよい。
【0041】
図2は、ストレージシステム100に係る構成の一例を示す図である。
【0042】
ストレージシステム100は、1つまたは複数のノード110と、1つまたは複数のホスト計算機120と、1つまたは複数の管理システム130とを備える。
【0043】
ノード110は、ホスト計算機120(ストレージシステム100のユーザ)に分散FSを提供する。ノード110は、例えば、フロントエンドネットワーク140を介してフロントエンドインタフェース211(FE I/F)を用いてホスト計算機120からのファイルI/Oの要求を受信する。また、ノード110は、バックエンドネットワーク150を介してバックエンドインタフェース212(BE I/F)を用いて他のノード110とのデータの送受信(通信)を行う。付言するならば、フロントエンドインタフェース211は、フロントエンドネットワーク140を介してノード110とホスト計算機120とが通信するために使用される。バックエンドインタフェース212は、バックエンドネットワーク150を介して各ノード110が通信するために使用される。
【0044】
ホスト計算機120は、ノード110のクライアント装置である。ホスト計算機120は、例えば、フロントエンドネットワーク140を介してネットワークインタフェース221(ネットワークI/F)を用いてファイルI/Oの要求を発行する。
【0045】
管理システム130は、ストレージシステム100を管理するための管理装置である。管理システム130は、例えば、フロントエンドネットワーク140を介して管理ネットワークインタフェース231(管理ネットワークI/F)を用いて分散FSの移行指示をノード110(分散FS移行部111)に送信する。
【0046】
なお、フロントエンドネットワーク140において、ホスト計算機120は、ネットワークインタフェース221を使用することによって、フロントエンドネットワーク140を介してノード110にファイルI/Oの要求を発行する。NFS(Network File System)、CIFS(Common Internet File System)、AFP(Apple Filing Protocol)等のネットワークを介したファイルI/Oの要求のインタフェースのためのいくつかの一般的なプロトコルがある。さらに、各ホスト計算機120は、様々な目的のために他のホスト計算機120と通信することができる。
【0047】
また、バックエンドネットワーク150において、ノード110は、バックエンドインタフェース212を使用し、バックエンドネットワーク150を介して他のノード110と通信する。バックエンドネットワーク150は、ファイルを移行する、メタデータを交換する、または他の様々な目的に役立つ。バックエンドネットワーク150は、フロントエンドネットワーク140から分離している必要はない。フロントエンドネットワーク140とバックエンドネットワーク150との両方を併合することが可能である。
【0048】
図3は、ホスト計算機120に係る構成の一例を示す図である。
【0049】
ホスト計算機120は、プロセッサ301、メモリ302、ストレージインタフェース303(ストレージI/F)およびネットワークインタフェース221を備える。また、ホスト計算機120は、ストレージメディア304を備えていてもよい。また、ホスト計算機120は、ストレージアレイ305(共有ストレージ)と接続されていてもよい。
【0050】
ホスト計算機120は、ホスト計算機120の機能として、処理部311とネットワークファイルアクセス部312とを備える。
【0051】
処理部311は、ストレージシステム100のユーザがデータの処理を指示することにより外部のファイルサーバ上のデータを処理するプログラムである。処理部311は、例えば、RDMS(Relational Database Management System)、Virtual Machine Hypervisor等のプログラムである。
【0052】
ネットワークファイルアクセス部312は、ノード110に対してファイルI/Oの要求を発行してノード110に対するデータの読み書きを行うプログラムである。ネットワークファイルアクセス部312は、ネットワーク通信プロトコルにおいて、クライアント装置側の制御を提供するが、これに限定されるものではない。
【0053】
また、ネットワークファイルアクセス部312は、アクセス先サーバ情報313を備える。アクセス先サーバ情報313は、ファイルI/Oの要求を発行するノード110と分散FSとを特定するための情報である。例えば、アクセス先サーバ情報313は、ノード110のコンピュータ名、IP(インターネットプロトコル)アドレス、ポート番号、または分散FS名のうちの1つまたは複数を含む。
【0054】
図4は、管理システム130に係る構成の一例を示す図である。
【0055】
管理システム130は、基本的には、ホスト計算機120と同等のハードウェア構成を備える。ただし、管理システム130は、管理システム130の機能として、管理部411を備え、処理部311およびネットワークファイルアクセス部312を備えない。管理部411は、ユーザがファイルの移行を管理するプログラムである。
【0056】
図5は、ノード110に係る構成の一例を示す図である。
【0057】
ノード110は、プロセッサ301、メモリ302、ストレージインタフェース303、フロントエンドインタフェース211、バックエンドインタフェース212およびストレージメディア304を備える。ノード110は、ストレージメディア304に加えてまたは代えて、ストレージアレイ305と接続されていてもよい。なお、本実施の形態では、基本的には、ストレージメディア304にデータが記憶される例を挙げて説明する。
【0058】
ノード110の機能(分散FS移行部111、ネットワークファイル処理部112、スタブ管理部113、移行元分散FS部114、移行先分散FS部115、論理ボリューム管理部116、移行元分散FSアクセス部511、移行先分散FSアクセス部512およびローカルファイルシステム部521等)は、例えば、プロセッサ301がプログラムをメモリ302に読み出して実行すること(ソフトウェア)により実現されてもよいし、専用の回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。また、ノード110の機能の一部は、ノード110と通信可能な他のコンピュータにより実現されてもよい。
【0059】
プロセッサ301は、ノード110内のデバイスを制御する。
【0060】
プロセッサ301は、ネットワークファイル処理部112によって、フロントエンドインタフェース211を介して、ホスト計算機120からファイルI/Oの要求を受信し、結果を返却する。ネットワークファイル処理部112は、移行元分散FS101または移行先分散FS102に格納されたデータへのアクセスが必要な場合に、移行元分散FSアクセス部511または移行先分散FSアクセス部512を介して、データへのアクセスの要求(ファイルI/Oの要求)を移行元分散FS部114または移行先分散FS部115に発行する。
【0061】
プロセッサ301は、移行元分散FS部114または移行先分散FS部115によって、ファイルI/Oの要求を処理し、移行元ファイル管理テーブル531または移行先ファイル管理テーブル541を参照して、ストレージインタフェース303を介して接続されているストレージメディア304にデータを読み書きする、またはバックエンドインタフェース212を介して他のノード110にデータの読み書きを依頼する。
【0062】
移行元分散FS部114または移行先分散FS部115の例として、GlusterFS、CephFS等があるが、これらに限定するものではない。
【0063】
プロセッサ301は、スタブ管理部113によって、スタブファイルの管理とスタブファイルに対応するファイルの取得を行う。スタブファイルとは、ファイルのデータを持たず、移行元分散FS101に格納されているファイルの場所を示す仮想ファイルのことである。スタブファイルは、データの一部または全体をキャッシュとして持つことができる。なお、米国特許第7,330,950号明細書および米国特許第8,856,073号明細書では、スタブファイルに基づくファイル単位の階層型ストレージ管理方法を開示し、スタブファイルの構造の一例を示している。
【0064】
プロセッサ301は、論理ボリューム管理部116によって、ページ割当管理テーブル552を参照して、移行元分散FS部114または移行先分散FS部115の使用する論理ボリューム118,119に物理ページを割り当てたり、割り当てた物理ページを解放したりする。
【0065】
論理ボリューム管理部116は、移行元分散FS部114と移行先分散FS部115とに対し、論理ボリューム118,119を提供する。論理ボリューム管理部116は、1台以上のストレージメディア304の物理記憶領域を固定長(例えば、42MB)の物理ページに分割し、ノード110内の全ての物理ページを物理プール117として管理する。論理ボリューム管理部116は、論理ボリューム118,119の領域を物理ページと同サイズの論理ページの集合として管理し、論理ページに最初の書き込みがあった際に、物理ページを割り当てる。このように、実際に使用される論理ページに限定して物理ページを割当てることで容量効率を高めることができる(いわゆるシンプロビジョニング機能)。
【0066】
プロセッサ301は、分散FS移行部111を用いて、移行元分散FS101から移行先分散FS102にファイルをコピーし、コピーが完了したファイルを移行元分散FS101から削除する。
【0067】
プロセッサ301とストレージインタフェース303との間の通信には、FC(ファイバチャネル)、SATA(Serial Attached Technology Attachment)、SAS(Serial Attached SCSI)、IDE(Integrated Device Electronics)等のインタフェースが用いられる。ノード110は、HDD、SSD、フラッシュメモリ、光ディスク、磁気テープ等のような多くの種類のストレージメディア304を備えることができる。
【0068】
ローカルファイルシステム部521は、移行元分散FS101または移行先分散FS102がノード110に分散したファイルを管理するために利用するファイルシステムの制御プログラムである。ローカルファイルシステム部521は、論理ボリューム管理部116が提供する論理ボリューム118,119上に、ファイルシステムを構築し、使用プログラムに対してファイル単位のアクセスを可能とする。
【0069】
例えば、GlusterFSでは、XFS、EXT4が用いられる。なお、本実施の形態では、移行元分散FS101と移行先分散FS102とが、同じファイルシステムによってノード110内のデータを管理してもよいし、異なるファイルシステムによってノード110内のデータを管理してもよい。また、CephFSのようにローカルファイルシステムを有さず、ファイルをオブジェクトとして格納してもよい。
【0070】
メモリ302は、各種の情報(移行元ファイル管理テーブル531、移行先ファイル管理テーブル541、物理プール管理テーブル551、ページ割当管理テーブル552、移行管理テーブル561、移行ファイル管理テーブル562、移行元ボリューム解放領域管理テーブル563、およびノード容量管理テーブル564等)を記憶する。なお、各種の情報は、ストレージメディア304に記憶され、メモリ302に読み出されてもよい。
【0071】
移行元ファイル管理テーブル531は、移行元分散FS101におけるファイルのデータの格納先(実際の位置、場所)を管理するテーブルである。移行先ファイル管理テーブル541は、移行先分散FS102におけるファイルのデータの格納先を管理するテーブルである。物理プール管理テーブル551は、ノード110における物理プール117の空容量を管理するテーブルである。ページ割当管理テーブル552は、ストレージメディア304から提供される物理容量の論理ボリューム118,119への物理ページの割り当てを管理するテーブルである。
【0072】
移行管理テーブル561は、分散FSの移行状態を管理するテーブルである。移行ファイル管理テーブル562は、移行元分散FS101から移行先分散FS102に移行するファイルを管理するテーブルである。移行元ボリューム解放領域管理テーブル563は、移行元分散FS101が使用する論理ボリューム118内のファイルの削除済みの領域および解放済みの領域を管理するテーブルである。ノード容量管理テーブル564は、各ノード110の物理プール117の空容量を管理するテーブルである。
【0073】
なお、本実施の形態では、ネットワークファイル処理部112がスタブ管理部113、移行元分散FSアクセス部511および移行先分散FSアクセス部512を備える構成としているが、他のプログラムがこれらを備えてもよい。例えば、RDBMS(リレーショナルデータベース管理システム)、Webサーバ、動画配信サーバ等のアプリケーションがネットワークファイル処理部112、スタブ管理部113、移行元分散FSアクセス部511および移行先分散FSアクセス部512を備える構成であってもよい。
【0074】
図6は、スタブファイルを使う分散FSの実装例を示す図である。
【0075】
移行元分散FS101のファイルツリー610は、ノード110がホスト計算機120に示す移行元分散FS101のファイル階層を示す。ファイルツリー610は、root611およびディレクトリ612を備え、各ディレクトリ612は、ファイル613を備える。各ファイル613の場所は、各ディレクトリ612のディレクトリ名とファイル613のファイル名とをスラッシュで接続したパス名で示される。例えば、ファイル613-1のパス名は、「/root/dirA/file1」である。
【0076】
移行先分散FS102のファイルツリー620は、ノード110がホスト計算機120に示す移行先分散FS102のファイル階層を示す。ファイルツリー620は、root621およびディレクトリ622を備え、各ディレクトリ622は、ファイル623を備える。各ファイル623の場所は、各ディレクトリ622のディレクトリ名とファイル623のファイル名とをスラッシュで接続したパス名で示される。例えば、ファイル623-1のパス名は、「/root/dirA/file1」である。
【0077】
上述の例では、移行元分散FS101のファイルツリー610と、移行先分散FS102のファイルツリー620とは、同じツリー構造となる。ただし、ファイルツリー610とファイルツリー620とは、異なるツリー構造であってもよい。
【0078】
スタブファイルを使う分散FS自体は、通常の分散FSとして使用できる。例えば、ファイル623-1,623-2,623-3は、通常のファイルであるため、ホスト計算機120は、「/root/dirA/file1」、「/root/dirA/file2」、「/root/dirA/」等のパス名を指定して読み書きできる。
【0079】
また、例えば、ファイル623-4,623-5,623-6は、スタブ管理部113によって管理されるスタブファイルの例である。移行先分散FS102は、ファイル623-4,623-5,623-6のデータの一部を分散アルゴリズムによって決められるノード110のストレージメディア304に格納している。
【0080】
ファイル623-4,623-5,623-6は、ファイル名およびファイルサイズのようなメタデータのみを格納し、それ以外のデータは格納しない。ファイル623-4,623-5,623-6は、データ全体を保持する代わりに、データの場所に関する情報を格納する。
【0081】
スタブファイルの管理は、スタブ管理部113により行われる。スタブファイルの構成を
図7に示す。
図7に示すように、スタブ管理部113は、メタ情報710にスタブ情報720を付加することでスタブファイルを実現する。スタブ管理部113は、スタブファイルの構成に基づいて、スタブファイルに係る制御を実現する。
【0082】
なお、ディレクトリ622-3「/root/dirC」は、スタブファイルとして扱うことができる。この状況では、スタブ管理部113は、その下のファイル623-7,623-8,623-9についての情報を全く有さない可能性がある。ホスト計算機120がディレクトリ622-3の下のファイルにアクセスすると、スタブ管理部113は、ファイル623-7,623-8,623-9のスタブファイルを作成する。
【0083】
図7は、スタブファイルの構成の一例(スタブファイル700)を示す図である。
【0084】
メタ情報710は、各ファイル623のメタデータを格納する。メタ情報710は、ファイル623がスタブファイルであるか否か(スタブファイルであるか通常ファイルであるか)を示す情報(エントリ711)を備える。
【0085】
ファイル623がスタブファイルである場合、メタ情報710は、対応するスタブ情報720と関連付けられている。例えば、メタ情報710は、ファイル623がスタブファイルである場合、スタブ情報720を含んで構成され、ファイル623がスタブファイルでない場合、スタブ情報720を備えない。なお、メタ情報710は、ファイルシステムのユーザにとって十分な情報でなければならない。
【0086】
ファイル623がスタブファイルである場合、パス名とファイル623がスタブファイルであるかどうかの状態とを指定するために必要なのは、エントリ711とファイル名を示す情報(エントリ712)である。スタブファイルのファイルサイズ等、スタブファイルの他の情報を示す情報(エントリ713)は、移行先分散FS部115が対応するスタブ情報720および移行元分散FS101を参照することにより取得される。
【0087】
スタブ情報720は、ファイル623のデータの格納先(実際の位置)を示す情報である。
図7に示す例では、スタブ情報720は、移行元分散FS101の移行元分散FS名を示す情報(エントリ721)、および移行元分散FS101上のパス名を示す情報(エントリ722)を備える。移行元分散FS101上のパス名を指定することによってファイルのデータの場所が特定される。なお、実際のファイル613は、移行先分散FS102のパス名と同じパス名を持つ必要はない。
【0088】
スタブ管理部113は、「リコール」により、スタブファイルをファイルに変換できる。「リコール」は、バックエンドネットワーク150を介してスタブ情報720により特定される移行元分散FS101から実際のファイルのデータを読み出す処理である。ファイルの全データのコピーが行われた後、スタブ管理部113は、スタブファイル700からスタブ情報720を削除し、メタ情報710の状態を「通常」にすることで、ファイル623をスタブファイルから通常のファイルにすることができる。
【0089】
スタブ情報720の格納先の例としては、CephFSのextended attributesが挙げられるが、これに限定するものではない。
【0090】
図8は、移行元ファイル管理テーブル531のデータ構造の一例を示す図である。なお、移行先ファイル管理テーブル541については、任意のデータ構造とすることができるので、説明を省略する。
【0091】
移行元ファイル管理テーブル531は、パス名801、分散方式802、冗長化803、ノード名804、ファイル内オフセット805、ノード内パス806、論理LBA(Logical Block Addressing)オフセット807および長さ808から構成される情報(エントリ)を含む。
【0092】
パス名801は、移行元分散FS101におけるファイルの場所を示す名前(パス名)を格納するフィールドである。分散方式802は、移行元分散FS801の分散方式(ファイルがどの単位で分散されるか)を示すフィールドである。例として、GlusterFSのDHT(Distributed Hash Tables)、Erasure code、CephFSによるデータの分散があるが、これに限定するものではない。冗長化803は、移行元分散FS101において、ファイルがどのように冗長化されているかを示すフィールドである。冗長化803としては、二重化、三重化等がある。
【0093】
ノード名804は、ファイルのデータが格納されているノード110のノード名を格納するフィールドである。ノード名804は、ファイルに対して1つまたは複数設けられる。
【0094】
ファイル内オフセット805は、ファイル内で分割して格納するデータの塊ごとにファイル内のオフセットを格納するフィールドである。ノード内パス806は、ファイル内オフセット805に対応するノード110内でのパスを格納するフィールドである。ファイル内オフセット805に対応するデータの識別子であってもよい。論理LBAオフセット807は、ノード内パス806に対応するデータが格納されている論理ボリューム118のLBA(論理LBA)のオフセットを格納するフィールドである。長さ808は、ノード内パス806が移行元分散FS101上で使用する論理LBAの数を格納するフィールドである。
【0095】
図9は、物理プール管理テーブル551のデータ構造の一例を示す図である。
【0096】
物理プール管理テーブル551は、物理プール容量901、物理プール空容量902およびチャンクサイズ903から構成される情報(エントリ)を含む。
【0097】
物理プール容量901は、ノード110内のストレージメディア304から提供される物理容量を示すフィールドである。物理プール空容量902は、物理プール容量901のうち、論理ボリューム118,119に割り当てられていない物理ページの総容量を示すフィールドである。チャンクサイズ903は、論理ボリューム118,119に割り当てる物理ページのサイズを示すフィールドである。
【0098】
図10は、ページ割当管理テーブル552のデータ構造の一例を示す図である。
【0099】
ページ割当管理テーブル552は、物理ページ番号1001、物理ページ状態1002、論理ボリュームID1003、論理LBA1004、デバイスID1005および物理LBA1006から構成される情報(エントリ)を含む。
【0100】
物理ページ番号1001は、物理プール117における物理ページのページ番号を格納するフィールドである。物理ページ状態1002は、物理ページが割り当てられているか否かを示すフィールドである。
【0101】
論理ボリュームID1003は、物理ページが割り当てられている場合、物理ページ番号1001に対応する割当先の論理ボリューム118,119の論理ボリュームIDを格納するフィールドである。物理ページが割り当てられていない場合、空となる。論理LBA1004は、物理ページが割り当てられている場合、物理ページ番号1001に対応する割当先の論理LBAを格納するフィールドである。物理ページが割り当てられていない場合、空となる。
【0102】
デバイスID1005は、物理ページ番号1001の物理ページを有するストレージメディア304を識別するデバイスIDを格納するフィールドである。物理LBA1006は、物理ページ番号1001の物理ページに対応するLBA(物理LBA)を格納するフィールドである。
【0103】
図11は、移行管理テーブル561のデータ構造の一例を示す図である。
【0104】
移行管理テーブル561は、移行元分散FS名1101、移行先分散FS名1102および移行状態1103から構成される情報(エントリ)を含む。
【0105】
移行元分散FS名1101は、移行元分散FS101の移行元分散FS名を格納するフィールドである。移行先分散FS名1102は、移行先分散FS102の移行先分散FS名を格納するフィールドである。移行状態1103は、分散FSの移行状態を示すフィールドである。移行状態1103としては、「移行前」と「移行中」と「移行完了」との3つがある。
【0106】
図12は、移行ファイル管理テーブル562のデータ構造の一例を示す図である。
【0107】
移行ファイル管理テーブル562は、移行元パス名1201、移行先パス名1202、状態1203、分散方式1204、冗長化1205、ノード名1206およびデータサイズ1207から構成される情報(エントリ)を含む。
【0108】
移行元パス名1201は、移行元分散FS101におけるファイルのパス名を格納するフィールドである。移行先パス名1202は、移行先分散FS102におけるファイルのパス名を格納するフィールドである。状態1203は、移行元パス名1201および移行先パス名1202に対応するファイルの状態を格納するフィールドである。状態1203としては、「移行前」と「削除」と「コピー完了」との3つがある。
【0109】
分散方式1204は、移行元分散FS801の分散方式(ファイルがどの単位で分散されるか)を示すフィールドである。例として、GlusterFSのDHT(Distributed Hash Tables)、Erasure code、CephFSによるデータの分散があるが、これに限定するものではない。冗長化1205は、移行元分散FS801において、ファイルがどのように冗長化されているかを示すフィールドである。
【0110】
ノード名1206は、移行元ファイルのデータが格納されているノード110のノード名を格納するフィールドである。ノード名1206は、ファイルに対して1つまたは複数設けられる。データサイズ1207は、ノード110に格納されている移行元ファイルのデータサイズを格納するフィールドである。
【0111】
図13は、移行元ボリューム解放領域管理テーブル563のデータ構造の一例を示す図である。
【0112】
移行元ボリューム解放領域管理テーブル563は、ノード名1301、ボリューム内ページ番号1302、ページ状態1303、論理LBA1304、オフセット1305、長さ1306およびファイル使用状況1307から構成される情報(エントリ)を含む。
【0113】
ノード名1301は、移行元分散FS101を構成するノード110のノード名を格納するフィールドである。ボリューム内ページ番号は、ノード名1301に対応するノード110において、移行元分散FS101が利用する論理ボリューム118に割り当てられている物理ページの物理ページ番号を格納するフィールドである。ページ状態1303は、ボリューム内ページ番号1302に対応する物理ページが解放されているか否かを示すフィールドである。論理LBA1304は、ボリューム内ページ番号1302の物理ページに対応する移行元分散FS101が利用する論理ボリューム118のLBAを格納するフィールドである。
【0114】
オフセット1305は、ボリューム内ページ番号1302に対応する物理ページ内のオフセットを格納するフィールドである。長さ1306は、オフセット1305からの長さを格納するフィールドである。ファイル使用状況1307は、オフセット1305から長さ1306分の領域に関する使用状況を示すフィールドである。ファイル使用状況1307としては、「削除済み」と「不明」との2つがある。
【0115】
図14は、ノード容量管理テーブル564のデータ構造の一例を示す図である。
【0116】
ノード容量管理テーブル564は、ノード名1401、物理プール容量1402、移行元分散FS物理プール使用量1403、移行先分散FS物理プール使用量1404および物理プール空容量1405から構成される情報(エントリ)を含む。
【0117】
ノード名1401は、ノード110のノード名を格納するフィールドである。物理プール容量1402は、ノード名1401に対応するノード110の物理プール117の容量を格納するフィールドである。移行元分散FS物理プール使用量1403は、移行元分散FS101がノード名1401に対応するノード110において使用している物理プール117の容量を格納するフィールドである。移行先分散FS物理プール使用量1404は、移行先分散FS102がノード名1401に対応するノード110において使用している物理プール117の容量を格納するフィールドである。物理プール空容量1405は、ノード名1401に対応するノード110の物理プール117の空容量を格納するフィールドである。
【0118】
図15は、分散FS移行処理に係るフローチャートの一例を示す図である。分散FS移行部111は、ユーザから管理システム130経由で分散FSの移行指示を受信したことを契機として、分散FS移行処理を開始する。
【0119】
分散FS移行部111は、移行元分散FS部114にリバランスの停止を要求する(ステップS1501)。リバランスの停止の要求は、ファイルの移行に伴い、移行元分散FS101からファイルを削除した際に、移行元分散FS101がリバランスを実施すると、性能低下が生じるのを防ぐためである。
【0120】
分散FS移行部111は、移行元分散FS部114の備える移行元ファイル管理テーブル531から、全ファイルの移行元パス名1201、分散方式1204、冗長化1205、ノード名1206およびデータサイズ1207の情報を取得し、移行ファイル管理テーブル562を作成する(ステップS1502)。
【0121】
分散FS移行部111は、各ノード110の論理ボリューム管理部116に問い合わせ、物理プール117の容量と物理プール117の空容量との情報を取得し、ノード名1401、物理プール容量1402および物理プール空容量1405の情報としてノード容量管理テーブル564に格納する(ステップS1503)。
【0122】
分散FS移行部111は、物理プール空容量1405から、移行可能であるか否かを判定する(ステップS1504)。例えば、分散FS移行部111は、ノード110の物理プール117の空容量が5%以下である場合、移行可能でない(移行不可)と判定する。この閾値は、管理システム130が与えるものとする。分散FS移行部111は、移行可能であると判定した場合、ステップS1505に処理を移し、移行可能でないと判定した場合、ステップS1511に処理を移す。
【0123】
ステップS1505では、分散FS移行部111は、スタブ管理部113によりスタブファイルを作成する。なお、スタブ管理部113は、移行先分散FS102上に移行元分散FS101と同じファイルツリーを作成する。この時、全てのファイルは、スタブファイルであり、データを持たない。
【0124】
続いて、ホスト計算機120がユーザから管理システム130経由でアクセス先サーバ情報313を変更することにより、既存の移行元分散FS101から新しい移行先分散FS102にファイルI/Oの要求の送信が切り替えられる(ステップS1506)。その後、ホスト計算機120からの全てのファイルI/Oの要求については、新しい移行先分散FS102に送信される。
【0125】
分散FS移行部111は、全てのファイルの移行(ファイル移行処理)を実施する(ステップS1507)。なお、ファイル移行処理の詳細については、
図16を用いて後述する。
【0126】
分散FS移行部111は、ファイル移行処理が成功したか否かを判定する(ステップS1508)。分散FS移行部111は、ファイル移行処理が成功したと判定した場合、ステップS1509に処理を移し、ファイル移行処理が成功しなかったと判定した場合、ステップS1511に処理を移す。
【0127】
ステップS1509では、分散FS移行部111は、移行元分散FS101を削除する。
【0128】
続いて、分散FS移行部111は、移行成功を管理システム130に通知(ステップS1510)し、分散FS移行処理を終了する。
【0129】
ステップS1511では、分散FS移行部111は、移行失敗を管理システム130に通知(ステップS1511)し、分散FS移行処理を終了する。
【0130】
図16は、ファイル移行処理に係るフローチャートの一例を示す図である。
【0131】
分散FS移行部111は、各ノード110の物理プール117の空容量をもとに、移行するファイルを選択する(ステップS1601)。より具体的には、分散FS移行部111は、ノード容量管理テーブル564から各ノード110の物理プール空容量1405を確認し、物理プール117の空容量の少ないノード110を特定し、移行ファイル管理テーブル562から、特定したノード110にデータを持つファイルの移行先パス名1202を取得する。
【0132】
このとき、分散FS移行部111は、特定したノード110にデータを持つファイル群のうち、一定のアルゴリズムでファイルを選択してもよい。例えば、分散FS移行部111は、データサイズ1207の最も小さいファイルを選択する。また、最も少ない物理プール117の空容量が管理システム130にて設定した閾値より大きい場合、分散FS移行部111は、複数のファイル(固定長サイズ、ディレクトリ以下のファイル全て)を選択し、ステップS1602にて複数のファイルの移行を移行先分散FS102に依頼してもよい。
【0133】
分散FS移行部111は、ステップS1601で選択した移行先分散FS102上のファイルの読み込みを、ネットワークファイル処理部112に依頼(ファイルI/Oの要求を送信)する(ステップS1602)。ネットワークファイル処理部112のスタブ管理部113により、ファイルの読み込みに伴うデータコピーと同様にして、選択されたファイルがコピーされ、ファイルのコピーが完了する。ファイルの読み込みに伴うデータコピーの詳細については、
図18を用いて後述する。
【0134】
分散FS移行部111は、移行先分散FS102から結果を受領し、移行ファイル管理テーブル562を参照し、状態1203が「コピー完了」であるエントリが存在するか否か(コピーが完了したファイルがあるか否か)を判定する(ステップS1603)。分散FS移行部111は、コピーが完了したファイルがあると判定した場合、ステップS1604に処理を移し、コピーが完了したファイルがないと判定した場合、ステップS1608に処理を移す。
【0135】
ステップS1604では、分散FS移行部111は、上述のエントリの移行元パス名1201を持つファイルの削除を、ネットワークファイル処理部112を介して移行元分散FS101に要求する。ここで、分散FS移行部111は、ステップS1603にて複数のファイルを取得し、複数のファイルの削除を移行元分散FS101に要求してもよい。
【0136】
続いて、分散FS移行部111は、上述のエントリの状態1203を「削除」に変更する(ステップS1605)。
【0137】
続いて、分散FS移行部111は、削除したファイルに対応する移行元ボリューム解放領域管理テーブル563のファイル使用状況1307を「削除済」に設定する(ステップS1606)。より具体的には、分散FS移行部111は、削除したファイルの使用ブロック(論理LBAのオフセットと長さ)を移行元分散FS101から取得し、移行元ボリューム解放領域管理テーブル563のファイル使用状況1307を「削除済」に設定する。例えば、GlusterFSでは、内部的に用いているXFSに対し、XFS_BMAPコマンドを発行することで、これらの情報を取得することができる。ただし、この方式に限られるものではなく、その他の方式であってもよい。
【0138】
続いて、分散FS移行部111は、ページ解放処理を行う(ステップS1607)。ページ解放処理では、分散FS移行部111は、移行元ボリューム解放領域管理テーブル563を参照し、解放可能な物理ページを解放する。なお、ページ解放処理の詳細については、
図17を用いて後述する。
【0139】
ステップS1608では、分散FS移行部111は、各ノード110の論理ボリューム管理部116に物理プール空容量902を要求し、ノード容量管理テーブル564の物理プール空容量1405を更新する。
【0140】
続いて、分散FS移行部111は、移行元ボリューム解放領域管理テーブル563を参照し、全エントリの状態1203が「削除」であるか否か(全ファイルの移行が完了したか否か)を判定する。分散FS移行部111は、全ファイルの移行が完了したと判定した場合、ファイル移行処理を終了し、全ファイルの移行が完了していないと判定した場合、ステップS1601に処理を移す。
【0141】
図17は、ページ解放処理に係るフローチャートの一例を示す図である。
【0142】
分散FS移行部111は、移行元ボリューム解放領域管理テーブル563を参照し、ファイル使用状況1307が全て「削除済」であるエントリが存在するか否か(解放できる物理ページがあるか否か)を判定する(ステップS1701)。分散FS移行部111は、解放できる物理ページがあると判定した場合、ステップS1702に処理を移し、解放できる物理ページがないと判定した場合、ページ解放処理を終了する。
【0143】
ステップS1702では、分散FS移行部111は、ファイル使用状況1307が全て「削除済」であるエントリのノード名1301のノード110の論理ボリューム管理部116にボリューム内ページ番号1302の物理ページの解放を指示し、ページ状態1303を「解放」に設定し、ページ解放処理を終了する。
【0144】
図18は、ネットワークファイル処理部112がファイルI/Oの要求を受信したときに実行されるスタブ管理処理に係るフローチャートの一例を示す図である。
【0145】
スタブ管理部113は、メタ情報710の状態を参照し、処理対象のファイルがスタブファイルであるか否かを判定する(ステップS1801)。スタブ管理部113は、スタブファイルであると判定した場合、ステップS1802に処理を移し、スタブファイルでないと判定した場合、ステップS1805に処理を移す。
【0146】
ステップS1802では、移行元分散FSアクセス部511は、移行元分散FS部114を介して、移行元分散FS101から処理対象のファイルのデータを読み出す。なお、ホスト計算機120がファイルの上書きを要求する場合、当該ファイルのデータの読み出しは不要である。
【0147】
続いて、移行先分散FSアクセス部512は、移行先分散FS部115を介して、読み出されたファイルのデータを移行先分散FS102に書き込む(ステップS1803)。
【0148】
続いて、スタブ管理部113は、書き込み(ファイルのコピー)が成功したか否かを判定する(ステップS1804)。スタブ管理部113は、ファイル内の全データがコピーされた書き込まれた、すなわち、移行元分散FS101からファイルのデータを取得する必要のないファイルと判定した場合、スタブファイルをファイルに変換し、ステップS1805に処理を移し、書き込みが成功しなかったと判定した場合、ステップS1808に処理を移す。
【0149】
ステップS1805では、移行先分散FSアクセス部512は、移行先分散FS部115を介して、通常通りにファイルI/Oの要求を処理する。
【0150】
続いて、スタブ管理部113は、分散FS移行部111に移行完了を通知する(ステップS1806)。より具体的には、スタブ管理部113は、ファイル内の全データが読み込まれたまたは書き込まれた、すなわち、移行元分散FS101からファイルのデータを取得する必要のないファイルに対応する移行ファイル管理テーブル562のエントリの状態1203を「コピー完了」に変更し、分散FS移行部111に移行完了を通知する。なお、スタブ管理部113は、ホスト計算機120よりディレクトリまたはファイルの移動を要求された場合、移行ファイル管理テーブル562の移行先パス名1202に反映する。
【0151】
続いて、スタブ管理部113は、ホスト計算機120または分散FS移行部111に成功を返却し(ステップS1807)、スタブ管理処理を終了する。
【0152】
ステップS1808では、スタブ管理部113は、ホスト計算機120または分散FS移行部111に失敗を返却し、スタブ管理処理を終了する。
【0153】
なお、本実施の形態では、シンプロビジョニングの物理プール117を用いて、移行元分散FS101と移行先分散FS102との容量共有を実現しているが、その他の容量共有方式(例えば、ストレージアレイ305)についても適用可能である。
【0154】
また、本実施の形態では、分散FSにおけるデータ移行を実現しているが、オブジェクトをファイルとして管理することで、オブジェクトストレージにも適用可能である。また、ボリュームを固定長サイズに分割し、ファイルとして管理することでブロックストレージにも適用可能である。また、同一ノード110内のローカルファイルシステム間にも適用可能である。
【0155】
本実施の形態によれば、移行先のノードを別途用意することなく、異種のシステムの移行が可能となり、最新のソフトウェアへの追随が可能となる。
【0156】
(2)第2の実施の形態
本実施の形態は、移行元分散FS101と移行先分散FS102とが各ノード110に格納するデータを共通のローカルファイルシステム部521で管理している。本実施の形態に示す構成を用いることで、移行対象となるシステムの論理ボリューム管理部116がシンプロビジョニング機能を提供しない構成においても、本発明が適用可能となる。
【0157】
図19は、本実施の形態のストレージシステム100の概要を説明するための図である。本実施の形態では、移行元分散FS101と移行先分散FS102とが各ノード110に格納するデータを共通のローカルファイルシステム部521で管理している場合における異種分散FS間の同一ノード110内のデータ移行処理について説明する。
【0158】
移行元分散FS101と移行先分散FS102とは、共通の論理ボリューム1901を用いる。
【0159】
第1の実施の形態との差分は、移行元分散FS101の論理ボリューム1901のページ解放処理がないことである。これは、移行元分散FS101で削除されたファイルの割り当て領域の解放および再利用は、移行先分散FS102と共通のローカルファイルシステム部521が行うため、論理ボリュームレベルのページ解放処理が不要となるためである。
【0160】
ストレージシステム100については、基本的には、第1の実施の形態(
図2、
図3、
図4、
図5に示す構成)と同じである。
【0161】
スタブファイルについては、第1の実施の形態(
図6、
図7)と同じである。
【0162】
移行元ファイル管理テーブル531は、第1の実施の形態(
図8)と同じである。ただし、本実施の形態では、分散FS移行部111は、ページ解放を行わないため、移行元ファイル管理テーブル531のノード内パス806と論理LBAオフセット807とを参照しない。
【0163】
物理プール管理テーブル551については、第1の実施の形態(
図9)と同じである。ページ割当管理テーブル552については、第1の実施の形態(
図10)と同じである。ただし、本実施の形態では、分散FS移行部111は、ページ解放を行わないため、ページ割当管理テーブル552を参照しない。
【0164】
移行管理テーブル561については、第1の実施の形態(
図11)と同じである。移行ファイル管理テーブル562については、第1の実施の形態(
図12)と同じである。移行元ボリューム解放領域管理テーブル563(
図13)については、本実施の形態では不要である。ノード容量管理テーブル564については、第1の実施の形態(
図14)と同じである。
【0165】
分散FS移行処理については、第1の実施の形態(
図15)と同じである。ファイル移行処理については、本実施の形態では、
図16のステップS1606とステップS1607とが不要である。ページ解放処理(
図17)については、本実施の形態では、不要である。分散FSサーバがファイルI/Oの要求を受信したときにスタブ管理部113および移行先分散FS部115が実行する処理については、第1の実施の形態(
図18)と同じである。
【0166】
(3)他の実施の形態
なお、上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
【0167】
また、上述の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等のストレージメディア、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0168】
上述した実施の形態は、例えば、以下の特徴的な構成を備える。
【0169】
1以上のノード(例えば、ノード110)を備えるストレージシステム(例えば、ストレージシステム100)であって、上記ノードは、システム(例えば、移行元分散FS101、移行先分散FS102)の管理するデータを格納し、上記ノード(ストレージシステム100の全てのノード110であってもよいし、一部のノード110であってもよい。)を用いて構成される移行元のシステム(例えば、移行元分散FS101)から上記ノード(移行元分散FS101を構成するノード110と同じであってもよいし、異なっていてもよい。)を用いて構成される移行先のシステム(例えば、移行先分散FS102)に、上記移行元のシステムにおいて管理される上記データ(ブロックであってもよいし、ファイルであってもよいし、オブジェクトであってもよい。)の移行を制御するデータ移行部(例えば、分散FS移行部111)と、上記データの上記移行元のシステムにおける格納先を示す情報(例えば、パス名)を含むスタブ情報(例えば、スタブ情報720)を上記移行先のシステムに作成するデータ処理部(例えば、ネットワークファイル処理部112、スタブ管理部113)と、を備え、上記データ移行部は、上記移行元のシステムのデータの上記移行先のシステムへの移行を上記データ処理部に指示し(例えば、ステップS1601およびステップS1602)、上記データ処理部は、上記データの移行の指示を受けた場合に、上記データのスタブ情報があるときは、上記スタブ情報をもとに上記移行元のシステムから上記データを読み出し、上記データを書き込むように上記移行先のファイルシステムに指示し(例えば、ステップS1801~ステップS1803)、上記スタブ情報を削除し、上記データ移行部は、上記データの移行が完了した場合に、上記データを削除するように上記移行元のシステムに指示する(例えば、ステップS1604)。
【0170】
上記構成では、移行が行われていないデータについてはスタブ情報を用いて移行元のシステムから当該データが読み出され、移行先のシステムに当該データの書き込みが行われたときに当該データが移行元のシステムから削除される。かかる構成によれば、ストレージシステムは、データを重複して持つことを避けることができるので、移行元のシステムから移行先のシステムへのデータの移行のためにユーザが装置を追加することなく、既存の装置を用いてデータを移行することができる。
【0171】
上記システムは、複数のデータを管理し、上記データ移行部は、上記移行元のシステムおよび上記移行先のシステムで用いられている上記ノードの空容量を管理し(ステップS1503)、上記データ移行部は、(A)上記ノードの空容量に基づいて上記移行するデータを選択して(ステップS1601)、上記データの移動を上記データ処理部に指示する(ステップS1602)、(B)上記移行が完了したデータを削除するように上記移行元のシステムに指示する(ステップS1604)、(C)上記データが削除された上記ノードの空容量を更新する(ステップS1608)、の(A)~(C)を繰り返してデータ移行を制御する。
【0172】
上記ノードは複数あり、ノードごとに上記データを格納する記憶デバイス(例えば、ストレージメディア304)を有している。
【0173】
上記移行元のシステムおよび上記移行先のシステムは、複数の上記ノードを用いて構成される分散システム(例えば、分散ブロックシステム、分散ファイルシステム、分散オブジェクトシステム)である。
【0174】
上記構成によれば、例えば、移行元の分散システムから移行先の分散システムへのデータの移行のために装置を追加することなく、既存の装置を用いて分散システムのデータを移行することができる。
【0175】
上記移行元のシステムおよび上記移行先のシステムは、上記複数のノードを用いて構成される分散システムであり、上記複数のノードに分散させてデータを格納し、少なくとも1のノードを共有している(
図1、
図19参照)。
【0176】
上記データ移行部は、上記移行元のシステムにおける格納先であるノードの空容量が少ないデータを、移行するデータとして選択する(例えば、ステップS1601およびステップS1602)。
【0177】
上記構成によれば、例えば、移行先のシステムがデータをノードに均等に格納する構成において、空容量が少ないノードからデータが移行されることで、データの移行において空容量が少なくなってIOが失敗する回数を低減することができる。
【0178】
上記移行元のシステムと上記移行先のシステムとで共有される論理デバイス(例えば、物理プール117)のページ(例えば、物理ページ)を論理ボリューム(例えば、論理ボリューム118,119)に割り当てる論理ボリューム管理部(例えば、論理ボリューム管理部116)を備え、上記データ移行部は、論理ボリューム単位で上記データ移行の指示を行い、上記移行元のシステムで用いられる論理ボリューム(例えば、論理ボリューム118)に割り当てられているページの全てのデータが上記移行先のシステムに移行されたと判定した場合、上記論理ボリュームのページを解放するように指示する(例えば、ステップS1701およびステップS1702)。
【0179】
上記構成によれば、例えば、移行元のシステムと移行先のシステムとで論理デバイスを共有する場合であっても、ページを解放することで容量の枯渇を回避できるので、適切にデータを移行することができる。
【0180】
上記データ移行部は、複数のデータを移行(例えば、複数のファイルまたはディレクトリ単位でファイルを移行)するように上記データ処理部に指示する。
【0181】
上記構成によれば、例えば、データを複数まとめて移行することにより、データの移行におけるオーバーヘッドを削減することができる。
【0182】
上記移行元のシステムおよび上記移行先のシステムで用いられている上記ノードは、ストレージデバイス(例えば、ストレージアレイ305)を有し、上記移行元のシステムと上記移行先のシステムとで共有される上記ストレージデバイスの論理デバイス(例えば、物理プール)のページ(例えば、物理ページ)を論理ボリューム(例えば、論理ボリューム118,119)に割り当てる論理ボリューム管理部(例えば、ボリューム管理部116)を備え、上記データ移行部は、論理ボリューム単位で上記データ移行の指示を行い、上記移行元のシステムで用いられる論理ボリュームに割り当てられているページの全てのデータが上記移行先のシステムに移行されたと判定した場合、上記論理ボリュームのページを解放するように指示する。
【0183】
上記構成によれば、例えば、移行元のシステムと移行先のシステムとで共有ストレージの論理デバイスを共有する場合であっても、ページを解放することで容量の枯渇を回避できるので、適切にデータを移行することができる。
【0184】
上記移行元のシステムおよび上記移行先のシステムのデータ管理単位は、ファイル、オブジェクトまたはブロックの何れかである。
【0185】
上記構成によれば、例えば、移行元のシステムおよび移行先のシステムが、ファイルシステム、オブジェクトシステムまたはブロックシステムの何れであっても、適切にデータを移行することができる。
【0186】
上記ノードは、上記移行元のシステムと上記移行先のシステムとで共有される論理デバイス(例えば、物理プール117)のページ(物理ページ)を上記移行先のシステムと上記移行元のシステムとで共有される論理ボリューム(例えば、論理ボリューム1901)に割り当てる論理ボリューム管理部(例えば、論理ボリューム管理部116)と、上記移行元のシステムと上記移行先のシステムとのデータを上記論理ボリュームを介して管理するローカルシステム部(例えば、ローカルファイルシステム部521)と、を備える。
【0187】
上記構成によれば、例えば、移行先のシステムと移行元のシステムとのデータをローカルシステム部により管理することで、ページの解放が不要となり、容量が枯渇してしまう事態を回避できるので、適切にデータを移行することができる。
【0188】
「A、B、およびCのうちの少なくとも1つ」という形式におけるリストに含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができると理解されたい。同様に、「A、B、またはCのうちの少なくとも1つ」の形式においてリストされた項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができる。
【0189】
以上、本発明の実施の形態を説明したが、以上の実施の形態は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備えるものに限定されるものではない。ある例の構成の一部を他の例の構成に置き換えることが可能であり、ある例の構成に他の例の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。図の構成は説明上必要と考えられるものを示しており、製品上必ずしも全ての構成を示しているとは限らない。
【符号の説明】
【0190】
100……ストレージシステム、110……ノード。