(57)【特許請求の範囲】
【請求項１】
複数のサーバと、前記複数のサーバに接続されるディスクサブシステムと、を備えるストレージシステムにおいて、
前記複数のサーバは、第１サーバ及び第２サーバを含み、
前記各サーバは、ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ディスクサブシステムは、一つ以上のファイルシステムを含む一つ以上の論理デバイスを備え、
前記ファイルシステムに含まれるディレクトリのうち最上位のディレクトリには、前記ストレージシステム内で一意の第１のファイルシステム識別子が付与され、
前記ファイルシステムに含まれるディレクトリのうち前記最上位のディレクトリ以外の一つには、前記ストレージシステム内で一意の第２のファイルシステム識別子が付与され、
前記ファイルシステムに含まれるファイルには、前記ファイルシステム内で一意のファイル識別子が付与され、
前記第１サーバが備える前記プロセッサは、
前記第２のファイルシステム識別子が付与された前記ディレクトリより下位のファイルの名前解決を実行して、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを前記ネットワークに接続されたクライアント計算機に送信し、
前記クライアント計算機から前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスし、
前記第２のファイルシステム識別子が付与された前記ディレクトリを前記第２サーバへマイグレーションする指示を、前記インターフェースを介して受信すると、前記マイグレーションの対象の前記ディレクトリより下位の前記ファイルと、前記マイグレーションの対象の前記ディレクトリに付与された前記第２のファイルシステム識別子と、を前記第２サーバへ送信し、
前記第２サーバが備える前記プロセッサは、前記クライアント計算機から、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスすることを特徴とするストレージシステム。
【請求項２】
前記メモリは、前記ディレクトリと、前記ディレクトリに付与された前記ファイルシステム識別子と、を対応付ける情報を格納することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
ストレージシステムと、クライアント計算機と、前記ストレージシステム及び前記クライアント計算機を接続するネットワークと、を備える計算機システムにおいて、
前記ストレージシステムは、複数のサーバと、前記複数のサーバに接続されるディスクサブシステムと、を備え、
前記複数のサーバは、第１サーバ及び第２サーバを含み、
前記各サーバは、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ディスクサブシステムは、一つ以上のファイルシステムを含む一つ以上の論理デバイスを備え、
前記ファイルシステムに含まれるディレクトリのうち最上位のディレクトリには、前記ストレージシステム内で一意の第１のファイルシステム識別子が付与され、
前記ファイルシステムに含まれるディレクトリのうち前記最上位のディレクトリ以外の一つには、前記ストレージシステム内で一意の第２のファイルシステム識別子が付与され、
前記ファイルシステムに含まれるファイルには、前記ファイルシステム内で一意のファイル識別子が付与され、
前記第１サーバが備える前記プロセッサは、
前記第２のファイルシステム識別子が付与された前記ディレクトリより下位のファイルの名前解決を実行して、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを前記クライアント計算機に送信し、
前記クライアント計算機から前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスし、
前記第２のファイルシステム識別子が付与された前記ディレクトリを前記第２サーバへマイグレーションする指示を、前記インターフェースを介して受信すると、前記マイグレーションの対象の前記ディレクトリより下位の前記ファイルと、前記マイグレーションの対象の前記ディレクトリに付与された前記第２のファイルシステム識別子と、を前記第２サーバへ送信し、
前記第２サーバが備える前記プロセッサは、前記クライアント計算機から、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスすることを特徴とする計算機システム。
【請求項４】
前記メモリは、前記ディレクトリと、前記ディレクトリに付与された前記ファイルシステム識別子と、を対応付ける情報を格納することを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記計算機システムは、さらに管理計算機を備え、
前記管理計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記計算機システムは、前記ディレクトリに既に付与された前記ファイルシステム識別子の値を管理する管理情報を保持し、
前記管理計算機が備える前記プロセッサは、前記管理情報を参照して、まだいずれの前記ディレクトリにも付与されていない値を、まだ前記ファイルシステム識別子を付与されていない前記ディレクトリに、前記ファイルシステム識別子として付与することを特徴とする請求項３に記載の計算機システム。
【請求項６】
前記計算機システムは、さらに管理計算機を備え、
前記管理計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記管理計算機が備える前記プロセッサは、ファイルアクセスに関する統計情報に基づいて、前記ディレクトリを対象とするマイグレーションを実行するか否かを判定することを特徴とする請求項３に記載の計算機システム。
【請求項７】
前記統計情報は、前記各サーバが備えるプロセッサの使用率であり、
前記管理計算機が備える前記プロセッサは、前記第１サーバが備えるプロセッサの使用率が所定の閾値を越えた場合、前記第１サーバが管理する前記ファイルシステムに含まれ、かつ、前記ファイルシステム識別子が付与された前記ディレクトリを選択し、前記選択されたディレクトリを対象とするマイグレーションを実行する指示を前記第１サーバに送信することを特徴とする請求項６に記載の計算機システム。
【請求項８】
ストレージシステムと、クライアント計算機と、前記ストレージシステム及び前記クライアント計算機を接続するネットワークと、を備える計算機システムの制御方法であって、
前記ストレージシステムは、第１サーバ及び第２サーバを含む複数のサーバと、前記複数のサーバに接続されるディスクサブシステムと、を備え、
前記各サーバは、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ディスクサブシステムは、一つ以上のファイルシステムを含む一つ以上の論理デバイスを備え、
前記ファイルシステムに含まれるディレクトリのうち最上位のディレクトリには、前記ストレージシステム内で一意の第１のファイルシステム識別子が付与され、
前記ファイルシステムに含まれるディレクトリのうち前記最上位のディレクトリ以外の一つには、前記ストレージシステム内で一意の第２のファイルシステム識別子が付与され、
前記ファイルシステムに含まれるファイルには、前記ファイルシステム内で一意のファイル識別子が付与され、
前記方法は、
前記第１サーバが備える前記プロセッサが、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位のファイルの名前解決を実行して、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを前記クライアント計算機に送信し、
前記第１サーバが備える前記プロセッサが、前記クライアント計算機から前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスし、
前記第１サーバが備える前記プロセッサが、前記第２のファイルシステム識別子が付与された前記ディレクトリを前記第２サーバへマイグレーションする指示を、前記インターフェースを介して受信すると、前記マイグレーションの対象の前記ディレクトリより下位の前記ファイルと、前記マイグレーションの対象の前記ディレクトリに付与された前記第２のファイルシステム識別子と、を前記第２サーバへ送信し、
前記第２サーバが備える前記プロセッサが、前記クライアント計算機から、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスすることを特徴とする方法。
【請求項９】
前記メモリは、前記ディレクトリと、前記ディレクトリに付与された前記ファイルシステム識別子と、を対応付ける情報を格納することを特徴とする請求項８に記載の方法。
【請求項１０】
前記計算機システムは、さらに管理計算機を備え、
前記管理計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記計算機システムは、前記ディレクトリに既に付与された前記ファイルシステム識別子の値を管理する管理情報を保持し、
前記方法は、前記管理計算機が備える前記プロセッサが、前記管理情報を参照して、まだいずれの前記ディレクトリにも付与されていない値を、まだ前記ファイルシステム識別子を付与されていない前記ディレクトリに、前記ファイルシステム識別子として付与することを特徴とする請求項８に記載の方法。
【請求項１１】
前記計算機システムは、さらに管理計算機を備え、
前記管理計算機は、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記方法は、前記管理計算機が備える前記プロセッサが、ファイルアクセスに関する統計情報に基づいて、前記ディレクトリを対象とするマイグレーションを実行するか否かを判定することを特徴とする請求項８に記載の方法。
【請求項１２】
前記統計情報は、前記各サーバが備えるプロセッサの使用率であり、
前記方法は、前記管理計算機が備える前記プロセッサが、前記第１サーバが備えるプロセッサの使用率が所定の閾値を越えた場合、前記第１サーバが管理する前記ファイルシステムに含まれ、かつ、前記ファイルシステム識別子が付与された前記ディレクトリを選択し、前記選択されたディレクトリを対象とするマイグレーションを実行する指示を前記第１サーバに送信することを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してクライアントと接続され、クライアントが用いるデータを記憶する、ファイルサーバ又はネットワークアタッチドストレージ（Network Attached Storage、ＮＡＳ）において、複数のサーバに負荷を分散するための技術に関する。
【背景技術】
【０００２】
ネットワークに接続されたストレージシステムが、そのネットワークに接続されたクライアント計算機の共有ディスクとして使用される、ネットワークアタッチドストレージ（Network Attached Storage、ＮＡＳ）が提案されている。ＮＡＳは、ネットワークインターフェース等を含むサーバと、データを格納するディスクドライブとによって構成される。
【０００３】
例えば、特許文献１には、複数のサーバを備え、各サーバがネットワークに接続されるクラスタ構成のＮＡＳが開示されている。特許文献１に記載されたシステムにおいて、ネットワークエレメント、スイッチングエレメント及びディスクエレメントが、ＮＡＳのサーバに相当する。特許文献１に記載されたシステムは、ファイルシステムを共有する複数のネットワークエレメントを備えることができる。また、特許文献１に記載されたシステムは、ディスクエレメントを複数備えることによって、ディスク単位でデータをマイグレーションすることができる。さらに、各ネットワークエレメントがディスクエレメントによって管理される全てのファイルシステムにアクセスすることができる。ディスクエレメント間で、ファイルシステムを格納しているディスクのマイグレーションが実行された場合も、各ネットワークエレメントは、マイグレーションによる影響を受けることなく、全てのファイルシステムにアクセスをすることができる。
【０００４】
ネットワーク上に分散して存在するファイルにアクセスするためのファイルシステムの一つとして、ネットワークファイルシステム（ＮＦＳ）が提案されている。ＮＦＳの現時点の最新版であるＮＦＳｖ４（RFC3530）（非特許文献１参照）によれば、ファイルシステムがサーバ間でマイグレーションされた場合、サーバは、クライアントからの当該ファイルシステムへのアクセスに対して、マイグレーション先の位置の情報を通知する。この通知を受けたクライアントは、通知された位置情報に従って、マイグレーション先のファイルシステムにアクセスすることができる。
【特許文献１】米国特許第６６７１７７３号明細書
【非特許文献１】RFC3530、NFS  version4、P．57−61、IETF  Home  Page、［online］、［平成１８年３月１５日検索］、インターネット＜URL:http://www.ietf.org/home.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複数のサーバが管理する複数のファイルシステムを、一つの名前空間によってクライアントに提供することができる。そのような名前空間は、グローバルネームスペース（ＧＮＳ）と呼ばれる。ＧＮＳを適用したシステムでは、負荷の高いサーバから負荷の低いサーバへファイルを転送するマイグレーションによって、複数のサーバ間の負荷の均衡を図ることができる。
【０００６】
ＧＮＳにおいて、負荷均衡のためのマイグレーションをクライアントから透過的に実行するために、ファイルに付与されたＩＤ（ファイルハンドル）を維持する必要がある。言い換えると、マイグレーションの前に付与されたファイルハンドルが、マイグレーションの後にも使用できることが必要である。なお、ファイルハンドルは、各サーバが管理するファイルシステムをそのサーバ内で一意に識別するファイルシステムＩＤと、各ファイルをファイルシステム内で一意に識別するファイルＩＤとを含む。
【０００７】
ファイルハンドルを維持するために、システム内で一意に定まるファイルシステムＩＤをファイルシステムに割り振り、ファイルシステム単位でマイグレーションを実行してもよい。この場合、ファイルシステムを管理しているサーバに依存しない、システム内で一意のファイルハンドルが付与される。その結果、クライアントは、自分がアクセスしようとするファイルが、どのサーバによって管理されているファイルシステムに属するかを意識する必要がない。すなわち、ファイルシステムが一つのサーバから別のサーバにマイグレーションされた後も、クライアントは、マイグレーションが実行される前に付与されたファイルハンドルを使用して、そのファイルシステムに属するファイルにアクセスすることができる。このようにして、クライアントから透過的なファイルシステムのマイグレーションが実現される。
【０００８】
しかし、サーバ間の負荷の均衡を目的としてマイグレーションを行う場合、ファイルシステム単位では粒度が粗いため、十分な負荷均衡が行えない場合がある。例えば、一つのファイルシステムのみに負荷が集中している場合、そのファイルシステム全体をマイグレーションしても、そのファイルシステムの負荷全体が移動するだけである。その結果、負荷を複数のサーバに分散して均衡させることができない。この場合、ファイルシステムより細かい単位で、例えば、ディレクトリ単位でのマイグレーションを実行する必要がある。
【０００９】
例えば、あるサーバが管理している任意のファイル又はディレクトリを、別のサーバが管理するファイルシステムにコピーすることによって、ファイルシステムより細かい単位のマイグレーションを実現することができる。その結果、そのファイル等に対するアクセスによる負荷を分散させることによって、複数のサーバの負荷を均衡させることができる。しかし、この場合、クライアントは、マイグレーションの実行前に取得したファイルハンドルを用いて、マイグレーションされたファイルにアクセスすることができない。すなわち、再度名前解決を実行する必要がある。
【００１０】
ファイルシステムよりも細かい単位で、クライアントから透過的なマイグレーションを実行する方法については、開示されていない。
【課題を解決するための手段】
【００１１】
本願で開示する代表的な発明は、複数のサーバと、前記複数のサーバに接続されるディスクサブシステムと、を備えるストレージシステムにおいて、前記複数のサーバは、第１サーバ及び第２サーバを含み、前記各サーバは、ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、前記ディスクサブシステムは、一つ以上のファイルシステムを含む一つ以上の論理デバイスを備え、前記ファイルシステムに含まれるディレクトリのうち最上位のディレクトリには、前記ストレージシステム内で一意の第１のファイルシステム識別子が付与され、前記ファイルシステムに含まれるディレクトリのうち前記最上位のディレクトリ以外の一つには、前記ストレージシステム内で一意の第２のファイルシステム識別子が付与され、前記ファイルシステムに含まれるファイルには、前記ファイルシステム内で一意のファイル識別子が付与され、前記第１サーバが備える前記プロセッサは、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位のファイルの名前解決を実行して、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを前記ネットワークに接続されたクライアント計算機に送信し、前記クライアント計算機から前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスし、前記第２のファイルシステム識別子が付与された前記ディレクトリを前記第２サーバへマイグレーションする指示を、前記インターフェースを介して受信すると、前記マイグレーションの対象の前記ディレクトリより下位の前記ファイルと、前記マイグレーションの対象の前記ディレクトリに付与された前記第２のファイルシステム識別子と、を前記第２サーバへ送信し、前記第２サーバが備える前記プロセッサは、前記クライアント計算機から、前記第２のファイルシステム識別子及び前記ファイル識別子を含むファイルハンドルを指定したアクセス要求を受信すると、前記第２のファイルシステム識別子が付与された前記ディレクトリより下位の、前記ファイルハンドルによって指定されたファイル識別子が付与されたファイルにアクセスすることを特徴とする。
【００１２】
なお、望ましくは、前記プロセッサは、前記第２識別子が付与された前記ディレクトリより下位のファイルを、当該ファイルより上位の前記第２識別子が付与されたディレクトリのうち当該ファイルに最も近いディレクトリに付与された前記第２識別子と、前記第３識別子と、によって識別する。
【発明の効果】
【００１３】
本発明の一形態によれば、ファイルシステムを分割し、分割されたファイルシステムの部分ごとにマイグレーションを実行することができる。このため、クライアントから透過的に、ディレクトリ単位のマイグレーションを実行することができる。このため、きめ細かい単位でマイグレーションを実行することができ、サーバ間のより良い負荷均衡を実現できる。その結果、システム全体の性能向上が実現される。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の実施の形態のストレージシステム１００の構成を示すブロック図である。
【００１５】
本実施の形態の計算機システムは、ストレージシステム１００、管理計算機１４０、クライアント１５０Ａ、クライアント１５０Ｂ及びこれらを相互に接続するＬＡＮ１６０を備える。
【００１６】
管理計算機１４０は、ストレージシステム１００を管理するための処理を実行する計算機である。例えば、管理計算機１４０は、ストレージシステム１００内のファイルシステムの作成、ファイルシステムのマウント又はマイグレーションをサーバ１１０に指示する。さらに、管理計算機１４０は、ディスクサブシステム１２０及びスイッチ１３０に設定変更を指示する。
【００１７】
管理計算機１４０は、少なくとも、相互に接続された入力装置１４１、管理画面１４２、ディスク１４３、ＣＰＵ１４４、ローカルメモリ１４５及びネットワークインターフェース（Ｉ／Ｆ）１４６を備える。管理計算機１４０は、ＣＰＵ１４４、ローカルメモリ１４５及びネットワークＩ／Ｆ１４６を備える筐体（図示省略）と、その筐体に接続された入力装置１４１、管理画面１４２及びディスク１４３によって構成されてもよい。入力装置１４１は、例えば、システム管理者によって使用されるキーボード又はポインティングデバイスである。管理画面１４２は、例えば、システム管理者に情報を表示する画像表示装置である。管理画面１４２に表示される内容及びポインティングデバイスによる操作については、後述する（図１６及び図１７参照）。
【００１８】
ディスク１４３には、サーバ１１０等と通信するためのプログラム、及び、ディスクサブシステムを管理するためのプログラム等が格納される。これらのプログラムは、ローカルメモリ１４５上に読み出され、ＣＰＵ１４４によって実行される。ネットワークＩ／Ｆ１４６は、サーバ１１０及びディスクサブシステム１２０との通信に使用される。
【００１９】
クライアント１５０Ａ及び１５０Ｂは、ストレージシステム１００のファイルにアクセスする計算機である。クライアント１５０Ａ及び１５０Ｂは、ストレージシステム１００にファイルを書き込み、又は、ストレージシステム１００からファイルを読み出す。このとき、ストレージシステム１００が管理するファイルシステムが使用される。クライアント１５０Ａ及び１５０Ｂは、少なくとも、ファイルアクセスを実行するプログラムを格納するメモリ（図示省略）、及び、メモリに格納されたプログラムを実行するプロセッサ（図示省略）を備える。
【００２０】
図１では、二つのクライアント（１５０Ａ及び１５０Ｂ）を示すが、任意の数のクライアントがＬＡＮ１６０に接続され、ストレージシステム１００にアクセスすることができる。以下の説明において、二つのクライアントを特に区別する必要がない場合、これらを総称してクライアント１５０と記載する。
【００２１】
ＬＡＮ１６０は、ＴＣＰ／ＩＰ等のプロトコルで通信するネットワークである。
【００２２】
ストレージシステム１００は、ネットワークアタッチドストレージ（Network Attached Storage、ＮＡＳ）である。ストレージシステム１００は、サーバ１１０Ａ、サーバ１１０Ｂ、ディスクサブシステム１２０及びこれらを相互に接続するスイッチ１３０を備える。
【００２３】
スイッチ１３０は、例えばファイバーチャネル（ＦＣ）のスイッチ１３０である。ストレージシステム１００は、複数のスイッチ１３０を備えてもよい。一つ以上のスイッチ１３０がストレージエリアネットワーク（ＳＡＮ）を構成していてもよい。あるいは、スイッチ１３０は、ＬＡＮのスイッチ又はストレージシステム専用のスイッチであってもよい。
【００２４】
サーバ１１０Ａ及び１１０Ｂは、クライアント１５０から受信したアクセス要求に従ってディスクサブシステム１２０にアクセスする計算機である。
【００２５】
以下の説明において、サーバ１１０Ａ及び１１０Ｂを特に区別する必要がない場合、これらを総称してサーバ１１０と記載する。また、以下の説明において、サーバ１１０Ａ及び１１０Ｂは、単にサーバＡ及びサーバＢとも記載される。図１では、二つのサーバ１１０Ａ及び１１０Ｂを示すが、ストレージシステム１００は、さらに多くのサーバ１１０を備えてもよい。サーバ１１０は、ＮＡＳヘッド又はＮＡＳノードとも呼ばれる。複数のサーバ１１０がクラスタ構成されていてもよい。
【００２６】
サーバ１１０Ａは、相互に接続されたネットワークインターフェース１１１Ａ、ＣＰＵ１１２Ａ、ローカルメモリ１１３Ａ及びアダプタ１１６Ａを備える。
【００２７】
ネットワークインターフェース１１１Ａは、ＬＡＮ１６０に接続され、管理計算機１４０及びクライアント１５０と通信するインターフェースである。
【００２８】
ＣＰＵ１１２Ａは、サーバ１１０Ａの動作を制御するプロセッサである。具体的には、ＣＰＵ１１２Ａは、ローカルメモリ１１３Ａに格納されたプログラムを実行する。
【００２９】
ローカルメモリ１１３Ａは、例えば、半導体メモリであり、ＣＰＵ１１２Ａが実行するプログラム及びＣＰＵ１１２Ａによって参照されるデータを格納する。具体的には、ローカルメモリ１１３Ａは、マウントテーブル（図示省略）、後述するサーバソフトウェア２００及びマイグレーションポイント管理表６００等を格納する。
【００３０】
アダプタ１１６Ａは、スイッチ１３０に接続され、ディスクサブシステム１２０と通信するインターフェースである。
【００３１】
サーバ１１０Ｂは、サーバ１１０Ａと同様、ネットワークインターフェース１１１Ｂ、ＣＰＵ１１２Ｂ、ローカルメモリ１１３Ｂ及びアダプタ１１６Ｂを備える。これらは、それぞれ、ネットワークインターフェース１１１Ａ、ＣＰＵ１１２Ａ、ローカルメモリ１１３Ａ及びアダプタ１１６Ａと同様であるため、説明を省略する。さらに多くのサーバ１１０が設けられる場合、各サーバ１１０の構成は、サーバ１１０Ａと同様であってよい。
【００３２】
ストレージシステム１００が複数のサーバ１１０を備える場合、これらのサーバ１１０は、サーバ間通信路１３５によって相互に接続される。サーバ１１０は、サーバ間通信路１３５を経由して相互に通信することができる。
【００３３】
具体的には、ＧＮＳ管理表５００が更新された場合に、その更新内容がサーバ間通信路１３５を経由して他のサーバ１１０に送信される。送信先のサーバ１１０は、受信した更新の内容をそのサーバ１１０内のＧＮＳ管理表５００に反映する。
【００３４】
本実施の形態のストレージシステム１００は、図１に示すように、スイッチ１３０及びＬＡＮ１６０のどちらからも独立したサーバ間通信路１３５を備える。しかし、サーバ１１０は、スイッチ１３０又はＬＡＮ１６０を経由して相互に通信してもよい。あるいは、サーバ１１０は、ディスクサブシステム１２０のディスクキャッシュ１２２を使用して相互に通信してもよい。サーバ１１０が上記のいずれの経路で通信しても、本発明を実施することができる。
【００３５】
ディスクサブシステム１２０は、相互に接続されたディスクコントローラ１２１Ａ、ディスクコントローラ１２１Ｂ、ディスクキャッシュ１２２及びディスクドライブ１２３を備える。ディスクコントローラ１２１Ａは、スイッチ１３０に接続されるポート１２５Ａ及び１２５Ｂを備える。ディスクコントローラ１２１Ｂは、スイッチ１３０に接続されるポート１２５Ｃ及び１２５Ｄを備える。以下の説明において、ディスクコントローラ１２１Ａ及び１２１Ｂを特に区別する必要がない場合、これらを総称してディスクコントローラ１２１と記載する。また、ポート１２５Ａから１２５Ｄを特に区別する必要がない場合、これらを総称してポート１２５と記載する。ディスクサブシステム１２０は、一つ又は三つ以上のディスクコントローラ１２１を備えてもよい。各ディスクコントローラ１２１は、一つ又は三つ以上のポート１２５を備えてもよい。
【００３６】
ディスクコントローラ１２１は、ポート１２５に接続されたスイッチ１３０を介してサーバ１１０と通信し、ディスクサブシステム１２０を制御する。具体的には、ディスクコントローラ１２１は、サーバ１１０からの要求に従ってディスクドライブ１２３にデータを書き込み、又は、ディスクドライブ１２３からデータを読み出す。
【００３７】
ディスクキャッシュ１２２は、例えば、半導体メモリであり、ディスクドライブ１２３に書き込まれるデータ又はディスクドライブ１２３から読み出されたデータを一時的に格納する。
【００３８】
ディスクドライブ１２３Ａから１２３Ｄは、データを格納するハードディスクドライブである。ディスクサブシステムは、任意の数のディスクドライブ１２３Ａ等を備える。以下の説明において、ディスクドライブ１２３Ａから１２３Ｄを特に区別する必要がない場合、これらを総称してディスクドライブ１２３と記載する。これらのディスクドライブ１２３は、Redundant Arrays of Inexpensive Disks（ＲＡＩＤ）を構成してもよい。
【００３９】
ディスクドライブ１２３の記憶領域は、任意の数の論理デバイス（ＬＤＥＶ）に分割して使用される。図１には、例として、４個のＬＤＥＶ１２４Ａから１２４Ｄを示す。以下の説明において、ＬＤＥＶ１２４Ａから１２４Ｄを特に区別する必要がない場合、これらを総称してＬＤＥＶ１２４と記載する。ＬＤＥＶ１２４は、ディスクコントローラ１２１によって論理的なディスクドライブとして扱われる領域である。ディスクドライブ１２３がＲＡＩＤを構成する場合、図１に示すように、一つのＬＤＥＶ１２４が複数のディスクドライブ１２３の記憶領域によって構成されてもよい。各ＬＤＥＶ１２４の大きさは任意である。
【００４０】
各ＬＤＥＶには、ＬＤＥＶ識別子（ＩＤ）が付与される。図１の例において、ＬＤＥＶ１２４Ａ〜ＬＤＥＶ１２４ＤのＩＤは、それぞれＬ０〜Ｌ３である。
【００４１】
サーバ１１０は、各ＬＤＥＶ１２４内にファイルシステムを作成し、そのファイルシステムを管理する。各ファイルシステムには、ストレージシステム内で一意となるファイルシステム識別子（ＩＤ）が付与される。
【００４２】
ストレージシステム１００は、複数のディスクサブシステム１２０を備えてもよい。その場合、あるサーバ１１０は、スイッチ１３０を経由して、特定のディスクサブシステム１２０又は特定のディスクサブシステム１２０の集合のみにアクセスできてもよい。あるいは、各サーバ１１０が全てのディスクサブシステム１２０にアクセスすることができてもよい。
【００４３】
スイッチ１３０及びディスクサブシステム１２０は、それぞれ、ＬＡＮ１６０に接続される管理用ポート１３１及び１２６を備える。管理計算機１４０は、ＬＡＮ１６０を経由してこれらの管理用ポート１３１及び１２６と通信することによって、スイッチ１３０及びディスクサブシステム１２０の設定を参照し、又は、更新することができる。
【００４４】
図２は、本発明の実施の形態のサーバソフトウェア２００の説明図である。
【００４５】
サーバソフトウェア２００は、ＣＰＵ１１２が実行するプログラムを含む。具体的には、サーバソフトウェア２００は、ネットワーク処理プログラム２０１、ファイルシステム処理プログラム２０２、ディスクアクセス処理プログラム２０３、ＧＮＳ管理処理プログラム２０４、サーバ管理処理プログラム２０５、サーバ間通信処理プログラム２０６及びマイグレーション処理プログラム２０７を含む。
【００４６】
ネットワーク処理プログラム２０１は、ＬＡＮ１６０を介した管理計算機１４０及びクライアント１５０との通信を制御するプログラムである。
【００４７】
ファイルシステム処理プログラム２０２は、クライアント１５０からファイルシステム内のファイルへのアクセス要求、及び、管理計算機１４０からのファイルシステムに対する指示等を処理するプログラムである。ファイルシステム処理プログラム２０２のより詳細な説明は後述する。
【００４８】
ディスクアクセスプログラム２０３は、ファイルシステム処理プログラム２０２が受けたファイルへのアクセス要求に基づき、実際にディスクサブシステム１２０へアクセスするプログラムである。
【００４９】
ＧＮＳ管理処理プログラム２０４は、マイグレーション処理プログラム２００がファイルシステムのマイグレーションを実行したときに、ＧＮＳ管理表５００を更新する。ＧＮＳ管理表５００の詳細は後述する（図５参照）。
【００５０】
サーバ管理処理プログラム２０５は、管理計算機１４０と通信し、サーバ１１０の設定をするプログラムである。例えば、サーバ管理処理プログラム２０５は、管理計算機１４０からファイルシステムの新規作成の指示を受けると、その指示をファイルシステム処理プログラム２０２に伝え、ファイルシステムの新規作成を実行させる。管理計算機１４０からマイグレーションの指示を受けると、サーバ管理処理プログラム２０５は、その指示をマイグレーション処理プログラム２０７に伝え、マイグレーションを実行させる。
【００５１】
サーバ間通信処理プログラム２０６は、サーバ間通信路１３５を経由したサーバ１１０間の通信を制御するプログラムである。例えば、サーバ間通信処理プログラム２０６は、ＧＮＳ管理表５００の内容を更新するため、他のサーバ１１０において実行されているＧＮＳ管理処理プログラム２０４に更新内容を送信する。
【００５２】
マイグレーション処理プログラム２０７は、マイグレーションを実行するプログラムである。マイグレーションとは、あるファイルシステムを、現在管理しているサーバ１１０から、別の指定されたサーバ１１０の管理下に移動させる処理のことである。
【００５３】
クライアント１５０がファイルシステム内のファイルにアクセスする場合、アクセス要求は、そのファイルシステムを管理するサーバ１１０によって処理される。従って、ファイルシステムをマイグレーションすることは、マイグレーション先のサーバへ負荷を分散することになる。マイグレーション処理によって、各サーバ１１０にかかる負荷が均衡し、ストレージシステム１００全体の性能向上が可能となる。
【００５４】
ファイルシステム処理プログラム２０２は、マイグレーションポイント設定処理モジュール２１１、ファイルアクセス処理モジュール２１２、ファイルシステム作成処理モジュール２１３及びファイルシステム分割処理モジュール２１４を含む。
【００５５】
マイグレーションポイント設定処理モジュール２１１は、管理用計算機１４０の指示に従って、サーバ１１０が持つマイグレーションポイント管理表６００の更新処理を実行する。
【００５６】
ファイルアクセス処理モジュール２１２は、クライアント１５０からの要求に基づき、ディレクトリ名又はファイル名の名前解決処理を実行し、ファイルの識別子であるファイルハンドルをクライアントに返す。また、例えば、クライアント１５０の要求するディレクトリ名やファイル名が、他のサーバ１１０によって管理されるディレクトリツリーに属する場合、そのディレクトリツリーを管理するサーバ１１０の位置情報（例えば、サーバ１１０のＩＤ）をクライアント１５０へ返す。ディレクトリツリーとは、ファイルシステム全体又はその一部に相当する一つ以上のディレクトリである。
【００５７】
ファイルシステム作成処理モジュール２１３は、管理計算機１４０の指示に従って、ファイルシステムを新規作成する。また、ファイルシステム作成処理モジュール２１３は、ファイルシステム分割処理モジュール２１４の指示に従って、ファイルシステムを新規作成する。
【００５８】
ファイルシステム分割処理モジュール２１４は、マイグレーション処理プログラム２０７の指示に従って、ファイルシステムの分割処理を実行する。ファイルシステムの分割処理の詳細は後述する（図９参照）。
【００５９】
図３は、本発明の実施の形態においてクライアント１５０に提供される共通名前空間の一例を示す説明図である。
【００６０】
共通名前空間は、一つ以上のサーバ１１０によって構成される。具体的には、共通名前空間は、各サーバ１１０が管理しているファイルシステムを統合することによって構成される一つの共通名前空間である。この共通名前空間をグローバルネームスペース（ＧＮＳ）と呼ぶ。図３には、実施例を説明するために必要最小限のディレクトリ及びファイルを含むＧＮＳ３００を示す。実際のＧＮＳは、さらに多くのディレクトリ及びファイルを含んでもよい。
【００６１】
ＧＮＳ３００は、二つのサーバ、すなわち、サーバＡ及びサーバＢによってＧＮＳが構成される。次に、各サーバの名前空間について説明する。
【００６２】
図４は、本発明の実施の形態の各サーバ１１０の名前空間の説明図である。
【００６３】
図４は、例として、サーバＡの名前空間４００Ａ及びサーバＢの名前空間４００Ｂを示す。最初に、名前空間４００Ａ及び４００Ｂを構成する方法を説明し、次に、ＧＮＳ３００を構成する方法を説明する。
【００６４】
サーバＡは、三つのファイルシステム４１１、４０１及び４０２を管理する。それぞれのファイルシステムに属するディレクトリツリーを統合することによって、名前空間４００Ａが構成される。
【００６５】
ファイルシステム４１１に相当するディレクトリツリーの最上位ディレクトリの下に、ディレクトリ「gns」４１４及び「mnt」がある。ディレクトリ「gns」４１４の下に、「a」４０３、「b」４０４及び「c」４０５の三つのディレクトリがある。一方、ディレクトリ「mnt」の下には、ディレクトリ「fs0」４１３及びディレクトリ「fs1」４０８がある。
【００６６】
ファイルシステム４０１に相当するディレクトリツリーの最上位ディレクトリの下に、ディレクトリ「aa」４０６及びディレクトリ「ab」がある。ディレクトリ「aa」の下には、ファイル「file1」がある。また、ディレクトリ「ab」の下には、ディレクトリ「ac」４０７がある。ディレクトリ「ac」４０７の下に、ディレクトリ「ad」及びディレクトリ「ae」がある。
【００６７】
ファイルシステム４０２に相当するディレクトリツリーの最上位ディレクトリの下に、ディレクトリ「ba」及びディレクトリ「bb」がある。ディレクトリ「ba」の下には、ディレクトリ「bc」がある。
【００６８】
名前空間４００Ａのルートディレクトリ「/」は、ファイルシステム４１１の最上位ディレクトリである。サーバＡは、ファイルシステム４１１に相当するディレクトリツリーにおけるパス「/mnt/fs0/」に、ファイルシステム４０１の最上位ディレクトリを繋ぎ、パス「/mnt/fs1/」に、ファイルシステム４０２の最上位ディレクトリを繋ぐことによって、一つの名前空間４００Ａを構成している。このように、一つのサーバ１１０によって管理されるファイルシステムの間で、あるファイルシステムのディレクトリツリーに、他のファイルシステムのディレクトリツリーを繋ぐことを、ローカルマウントと呼ぶ。また、ファイルシステム４１１のように、ルートディレクトリを持つファイルシステムを、ルートファイルシステムと呼ぶ。
【００６９】
サーバＢは、二つのファイルシステム４１２及び４０９を管理する。それぞれのファイルシステムに属するディレクトリツリーを統合することによって、名前空間４００Ｂが構成される。
【００７０】
ファイルシステム４１２に相当するディレクトリツリーの最上位ディレクトリの下に、ディレクトリ「mnt」がある。ディレクトリ「mnt」の下には、ディレクトリ「fs2」４１０がある。
【００７１】
ファイルシステム４０９に相当するディレクトリツリーの最上位ディレクトリの下に、ディレクトリ「ca」がある。ディレクトリ「ca」の下に、ファイル「file2」及びファイル「file3」がある。
【００７２】
名前空間４００Ｂのルートファイルシステムは、ファイルシステム４１２である。ルートファイルシステム内のパス「/mnt/fs2」に、ファイルシステム４０９に相当するディレクトリツリーをローカルマウントすることによって、名前空間４００Ｂが構成される。
【００７３】
次に、以上で説明したサーバＡの名前空間４００Ａと、サーバＢの名前空間４００Ｂの一部を統合し、共通名前空間であるＧＮＳ３００を構成する手法を示す。
【００７４】
名前空間４００Ａのパス「/gns/」をＧＮＳ３００のルートディレクトリ「/」とする。ＧＮＳ３００のルートディレクトリを持つサーバＡをＧＮＳルートサーバと呼び、名前空間４００Ａのパス「/gns/」をＧＮＳルートディレクトリと呼ぶ。ＧＮＳルートサーバとＧＮＳルートディレクトリは、サーバソフトウェア２００が記憶している。
【００７５】
ＧＮＳルートディレクトリ（名前空間４００Ａの「/gns/」）以下のディレクトリツリーが、ＧＮＳ３００に属するディレクトリツリーとなる。ＧＮＳルートディレクトリの下には、接続ポイントを作ることができる。接続ポイントに、ファイルシステムに相当するディレクトリを繋げることによって、一つのディレクトリツリーを構成することができる。ＧＮＳ３００の接続ポイントにファイルシステムを繋げることによって一つのディレクトリツリーを構成することを、「接続」と呼ぶ。
【００７６】
ＧＮＳ３００のＧＮＳルートディレクトリの下には、三つの接続ポイント「/a/」４０３、「/b/」４０４及び「/c/」４０５がある。接続ポイント「/a/」４０３には、サーバＡが管理するパス「/mnt/fs0/」にローカルマウントされているファイルシステム４０１が接続される。接続ポイント「/b/」４０４には、サーバＡが管理するパス「/mnt/fs1/」にローカルマウントされているファイルシステム４０２が接続される。接続ポイント「/c/」４０５には、サーバＢが管理するパス「/mnt/fs2/」にローカルマウントされているファイルシステム４０９が接続される。
【００７７】
図５は、本発明の実施の形態のＧＮＳ管理表５００の一例を示す説明図である。
【００７８】
ＧＮＳ管理表５００は、各サーバ１１０のローカルメモリ１１３に格納され、各サーバ１１０によって個別に管理される。各サーバが格納するＧＮＳ管理表５００には、同一の値が登録されている。ＧＮＳ管理表５００は、ＧＮＳ３００を構成する全てのファイルシステムを管理するためのテーブルであり、一つのエントリ（行）が、一つのディレクトリの接続ポイントを示す。
【００７９】
サーバ名５０１には、ファイルシステムを管理するサーバ名が登録される。ローカルパス５０２には、サーバ名５０１に登録されたサーバ１１０が管理する名前空間において、ファイルシステムがローカルマウントされているパスが登録される。接続ポイント５０３は、ローカルパス５０２にローカルマウントしているディレクトリが、ＧＮＳ３００上のどの接続ポイントに接続されているかを示す。
【００８０】
ＧＮＳ管理表５００は、さらに、ＧＮＳルートサーバ及びＧＮＳルートディレクトリを示す情報を含んでもよい。具体的には、図３及び図４の例に対応するＧＮＳ管理表５００は、サーバＡがＧＮＳルートサーバであり、「/gns/」がＧＮＳルートディレクトリであることを示す情報を含んでもよい。
【００８１】
各サーバ１１０は、ルートファイルシステム内の名前解決と、そのルートファイルシステムに直接又は間接的にローカルマウントしているディレクトリ内の名前解決をすることができる。例えば、図３に示すＧＮＳ３００の環境において、サーバ１１０ＡがＧＮＳ３００上のファイル「/c/ca/file2」へのアクセス要求をクライアント１５０から受けたとする。サーバ１１０Ａは、ＧＮＳルートサーバである。このため、サーバ１１０Ａは、ＧＮＳルートディレクトリ「/gns/」をパス「/c/ca/file2」に付加し、ＧＮＳ３００のパスをローカルパス（サーバ１１０Ａの名前空間におけるパス）に変換する。変換されたパスは、「/gns/c/ca/file2」となる。サーバＡは、「/gns/」までの名前解決をすることはできる。しかし、サーバ１１０Ａは、「/gns/c/」の名前解決をすることはできない。
【００８２】
このとき、サーバ１１０Ａは、ＧＮＳ管理表５００を参照し、「/gns/c/」がサーバ１１０Ｂの管理下にあることを判断する。そして、アクセス要求を発行したクライアント１５０に位置情報を通知する。ここで通知される位置情報は、そのディレクトリを管理しているサーバの識別子を含み、必要があれば、そのサーバ内のローカルパスを含んでもよい。通知を受けたクライアント１５０は、サーバ１１０Ｂにアクセス要求を発行することによって、ＧＮＳ３００上のファイル「/c/ca/file2」へアクセスすることができる。
【００８３】
上記の例では、名前解決要求を受け取ったサーバＡが、名前解決の対象となるファイルを管理しているサーバ１１０Ｂを識別する情報をクライアント１５０に通知する方法を示した。この方法とは異なり、名前解決要求を受け取ったサーバＡがサーバＢにクライアント１５０からの名前解決要求を転送し、サーバＢが名前解決を実行してもよい。また、上記の例では、一つのファイルシステムが一つのサーバ１１０のみによって管理されていたが、複数のサーバ１１０が一つのファイルシステムを共有して管理してもよい。この場合、共有されたファイルシステムを更新する前に、更新を実行するサーバ１１０がファイルシステムのロックを取得することによって、更新が正しく実行されることを保証しなければならない。
【００８４】
クライアント１５０にＧＮＳ３００を提供する前に、管理計算機１４０は、予め、各サーバ１１０内にファイルシステムを分割する基点となるディレクトリパスを設定する。マイグレーションを実行する時に、このディレクトリパスを基点としてファイルシステムが分割され、分割されたファイルシステムがマイグレーションされる。その結果、よりきめ細かい粒度のマイグレーションが実現できる。このファイルシステムを分割する基点となるディレクトリパスをマイグレーションポイントと呼ぶ。各サーバ１１０は、それぞれ、マイグレーションポイント管理表６００を使ってマイグレーションポイントを管理する。
【００８５】
図６Ａ及び図６Ｂは、本発明の実施の形態のマイグレーションポイント管理表６００の一例を示す説明図である。
【００８６】
図６Ａにおけるマイグレーションポイント管理表６００Ａは、サーバＡのローカルメモリ１１３Ａに格納されるマイグレーションポイント管理表６００である。図６Ｂにおけるマイグレーションポイント管理表６００Ｂは、サーバＢのローカルメモリ１１３Ｂに格納されるマイグレーションポイント管理表６００である。以下において、マイグレーションポイント管理表６００Ａ及び６００Ｂのいずれにも共通する説明をする場合、図６Ａ及び図６Ｂに表示された符号から「Ａ」、「Ｂ」を省略して、「マイグレーションポイント６０１」のように記載する。
【００８７】
マイグレーションポイント６０１は、サーバ１１０内のローカルパスである。クライアント１５０がＧＮＳ３００のファイルへアクセスするために使用されるＧＮＳルートディレクトリと、ＧＮＳ３００を構成するために接続されているディレクトリとがマイグレーションポイント６０１として登録される。そして、各マイグレーションポイントにファイルシステムＩＤが与えられる。さらに、ファイルシステムを分割する基点としたいディレクトリもマイグレーションポイントとして登録され、予めファイルシステムＩＤが与えられる。
【００８８】
例えば、図６Ａのマイグレーションポイント管理表６００Ａには、マイグレーションポイント６０１として、ＧＮＳ３００のルートディレクトリ「/gns/」、ＧＮＳ３００に接続している「/mnt/fs0/」及び「/mnt/fs1/」、並びに、ファイルシステム分割の基点となる「/mnt/fs0/aa/」及び「/mnt/fs0/ab/ac/」が登録されている。
【００８９】
システム管理者は、予め、任意のディレクトリをマイグレーションポイント６０１に登録することができる。
【００９０】
ファイルシステムＩＤ６０２は、各ファイルシステム及び任意のディレクトリツリーに付与されたストレージシステム１００内で一意の識別子である。管理計算機１４０は、マイグレーションポイント６０１をマイグレーションポイント管理表６００に登録するとき、ストレージシステム１００内で一意のファイルシステムＩＤを付与する。
【００９１】
クライアント１５０が、マイグレーションポイント６０１より下位のファイル（すなわち、マイグレーションポイント６０１以下のディレクトリツリーに属するファイル）の名前解決を実行した場合、ファイルシステム処理プログラム２０２は、ファイルハンドル（識別子）をクライアントに返す。そのファイルハンドルは、アクセス対象のファイルと最も近い上位のディレクトリ階層にあるマイグレーションポイント６０１に対応するファイルシステムＩＤ９０２と、アクセスするファイルに付与されたファイルＩＤとを含む。例えば、ＧＮＳのパス「/a/aa/file1」の名前解決を実行した場合、そのＧＮＳのパスは、サーバＡのローカルパス「/mnt/fs0/aa/file1」に対応する（図３から図５参照）。「/mnt/fs0/aa/file1」に最も近い上位のマイグレーションポイント６０１は、「/mnt/fs0/aa/」である。このため、クライアントに返されるファイルハンドルは、マイグレーションポイント「/mnt/fs0/aa/」のファイルシステムＩＤ「２」、及び、ファイルＩＤ「file1」を含む。
【００９２】
一度マイグレーションポイント６０１に与えたファイルシステムＩＤ６０２は、マイグレーションが実行された後も変える必要はない。そのため、ストレージシステム１００内の各ファイルを識別するファイルハンドルは、マイグレーションポイント６０１以下のディレクトリツリー単位でマイグレーションが実行されても常に一定となる。この仕組みを利用して、クライアント１５０から透過的に（言い換えると、各ファイル又はディレクトリがどのサーバに管理されているかをクライアント１５０に意識させることなく）、マイグレーションポイントを基点としてファイルシステムを分割することが可能となる。詳細は後述する（図８及び図９参照）。
【００９３】
使用容量６０３〜writeI/O情報６０５には、各マイグレーションポイントの統計情報が登録される。使用容量６０３は、マイグレーションポイント以下のディレクトリツリーが使用しているディスクの容量を示す。readI/O情報６０４には、ディレクトリツリーの中のファイルが何回readアクセスされたか、及び、ディレクトリツリーの中のファイルが何バイト読み込まれたかが登録される。writeI/O情報６０５には、ディレクトリツリーの中のファイルが何回writeアクセスされたか、及び、ディレクトリツリーの中のファイルが何バイト書き込まれたかが登録される。
【００９４】
例えば、readI/O情報６０４及びwriteI/O情報６０５は、毎秒の平均値でもよいし、所定の時間の累積値等であってもよい。さらに、使用容量６０３〜writeI/O情報６０５に登録される情報とは別に、例えば、毎分ごとにロギングした値が登録され、時間経過ごとの性能の変化が分かるようにしてもよい。
【００９５】
使用容量６０３〜writeI/O情報６０５に登録された情報は、どのサーバ１１０のマイグレーションポイントを、どこのサーバ１１０へマイグレーションするかを判断するための材料として使用することができる。詳細は後述する（図１６及び図１９参照）。
【００９６】
図７は、本発明の実施の形態のファイルシステムＩＤ管理表７００の説明図である。
【００９７】
ファイルシステムＩＤ管理表７００は、管理計算機１４０が参照することができるいずれかの場所に格納される。本実施の形態のファイルシステムＩＤ管理表７００は、管理計算機１４０内のローカルメモリ１４５又はディスク１４３に格納される。
【００９８】
管理計算機１４０は、各マイグレーションポイントにストレージシステム１００内で一意のファイルシステムＩＤを付与するために、ファイルシステムＩＤ管理表７００を参照する。ファイルシステムＩＤ管理表７００は、ファイルシステムＩＤ７０１及び状態７０２からなる。
【００９９】
ファイルシステムＩＤ７０１には、各マイグレーションポイントに既に付与された、又はこれから付与されるファイルシステムＩＤが登録される。
【０１００】
状態７０２には、各ファイルシステムＩＤ７０１が既にいずれかのマイグレーションポイントに付与されているか否かを示す値が登録される。状態７０２に「済」が登録されたファイルシステムＩＤ７０１は、既にストレージシステム１００内でいずれかのマイグレーションポイントに付与されている。一方、状態７０２に「未」が登録されたファイルシステムＩＤ７０１は、ストレージシステム１００内でまだいずれのマイグレーションポイントにも付与されていない。
【０１０１】
新たにマイグレーションポイントを設定するときに、管理計算機１４０は、そのマイグレーションポイントに、状態７０２の値が「未」であるファイルシステムＩＤ７０１を付与する。そして、そのファイルシステムＩＤ７０１に対応する状態７０２を「済」に更新する。その結果、新たに設定されるマイグレーションポイントには、常に、ストレージシステム内でまだどのマイグレーションポイントにも付与されていないファイルシステムＩＤ７０１が付与される。
【０１０２】
次に、本実施の形態において実行されるマイグレーション処理について説明する。
【０１０３】
サーバ１１０にマイグレーションの実行契機を与えるいくつかの方法が考えられる。例えば、システム管理者が管理計算機１４０を介してサーバソフトウェア２００にマイグレーションの指示を与えてもよい。あるいは、サーバソフトウェア２００が自動的に判断してマイグレーション処理を開始してもよい。あるいは、別の方法によって実行契機が与えられてもよい。いずれの方法であっても本発明を実施することができる。
【０１０４】
次に、本発明の実施例におけるマイグレーションの実行処理の手順を、図８及び図９を参照して説明する。なお、サーバソフトウェア２００に含まれるプログラム及びモジュールは、ローカルメモリ１１３に格納され、ＣＰＵ１１２によって実行される。このため、以下の説明において各プログラム又はモジュールが実行する処理は、実際には、ＣＰＵ１１２によって実行される。
【０１０５】
図８は、本発明の実施の形態のマイグレーション処理プログラム２０７が実行する処理のフローチャートである。
【０１０６】
サーバ１１０が、マイグレーションの対象となるマイグレーションポイントを指定したマイグレーションの指示を管理計算機１４０から受信したとき、マイグレーション処理プログラム２０７は、図８に示す処理を開始する。あるいは、マイグレーション処理プログラム２０７自身が、例えば、マイグレーションポイント管理表６００に登録された統計情報等を参照して、マイグレーションを実行するか否かを判定してもよい。マイグレーション処理プログラム２０７は、マイグレーションを実行すると判定した場合に、図８の処理を開始する。
【０１０７】
最初に、マイグレーション処理プログラム２０７は、ファイルシステムを分割する必要があるか否かを判断する（８０１）。
【０１０８】
マイグレーション処理プログラム２０７が受信したマイグレーションポイント以下のディレクトリツリーがファイルシステム全体である場合（言い換えると、受信したマイグレーションポイントがファイルシステムの最上位ディレクトリである場合）、ファイルシステム全体がマイグレーションされる。この場合、ファイルシステムを分割する必要がないため、判定の結果は「いいえ」となり、ステップ８０４の処理に進む。
【０１０９】
一方、マイグレーション処理プログラム２０７が受信したマイグレーションポイント以下のディレクトリツリーがファイルシステムの一部分である場合、ファイルシステムを分割する必要がある。このため、判定の結果は「はい」となり、ステップ８０２の処理に進む。
【０１１０】
マイグレーション処理プログラム２０７は、ステップ８０２において、ファイルシステム分割処理モジュール２１４を呼び出す。ファイルシステム分割処理モジュール２１４が実行する処理の詳細については後述する（図９参照）。
【０１１１】
次に、マイグレーション処理プログラム２０７は、ファイルシステム分割処理８０２による分割の結果新しく作成されたファイルシステムをマイグレーションする必要があるか否かを判定する（８０３）。
【０１１２】
後述するように、ステップ８０２において局所分割が実行された場合、分割されたファイルシステムをマイグレーションする必要がある。一方、遠隔分割が実行された場合、分割されたファイルシステムをマイグレーションする必要がない。
【０１１３】
ステップ８０３において、マイグレーションを実行する必要があると判定された場合、マイグレーション処理プログラム２０７は、分割されたファイルシステムのマイグレーションを実行して（８０４）、処理を終了する。
【０１１４】
具体的には、マイグレーション処理プログラム２０７は、ステップ８０４において、マイグレーションの対象となる分割されたファイルシステムに含まれる全てのファイルを、マイグレーション先のサーバ１１０に送信する。マイグレーション先のサーバのマイグレーション処理プログラム２０７は、受信したファイルを、いずれかのＬＤＥＶ１２４に格納する。
【０１１５】
一方、ステップ８０３において、マイグレーションを実行する必要がないと判定された場合、マイグレーション処理プログラム２０７は、マイグレーションを実行せずに、処理を終了する。
【０１１６】
図９は、本発明の実施の形態のファイルシステム処理プログラム２０２内のファイルシステム分割処理モジュール２１４が実行する処理のフローチャートである。
【０１１７】
図９の処理は、図８のステップ８０２においてマイグレーション処理プログラム２０７によって呼び出されたときに、ファイルシステム分割処理モジュール２１４によって実行される。
【０１１８】
最初に、ファイルシステム分割処理モジュール２１４は、新しいファイルシステムを作成する（９０１）。ここで、ファイルシステム分割処理モジュール２１４は、自サーバ（すなわち、分割の対象のファイルシステムを管理しているサーバ１１０）が管理する新たなファイルシステムを作成してもよいし、自サーバ以外のサーバ１１０が管理する新たなファイルシステムを作成してもよい。前者のようにして実行される分割を、以下の説明において「局所分割」と記載する。後者のようにして実行される分割を、以下の説明において「遠隔分割」と記載する。局所分割の具体例は、後で図１０から図１２を参照して説明する。遠隔分割の具体例は、後で図１３から図１５を参照して説明する。
【０１１９】
次に、ファイルシステム分割処理モジュール２１４は、ステップ９０１において作成されたファイルシステムに、分割の対象となるマイグレーションポイント以下のディレクトリに属するファイルを、ファイルＩＤを維持したままコピーする（９０２）。マイグレーションによってファイルハンドルが変更されることを防ぐために、ファイルＩＤを維持する必要があるためである。このため、サーバ１１０のオペレーティングシステム（ＯＳ）は、ファイルＩＤを指定したファイルのコピーをする機能を備える必要がある。
【０１２０】
次に、ファイルシステム分割処理モジュール２１４は、マイグレーションポイント管理表６００を更新する（９０３）。この更新については後述する。
【０１２１】
次に、ファイルシステム分割処理モジュール２１４は、ＧＮＳ管理表５００を更新する（９０４）。具体的には、ファイルシステム分割処理モジュール２１４は、ＧＮＳ管理処理プログラム２０４を呼び出し、ＧＮＳ管理表５００を更新させる。この更新については後述する（図１２及び図１５参照）。
【０１２２】
次に、ファイルシステム分割処理モジュール２１４は、作成された新しいファイルシステムをＧＮＳに接続する（９０５）。具体的には、マウントテーブル（図示省略）が更新される。マウントテーブルの更新は、従来と同様の方法によって実行されてもよい。このため、詳細な説明は省略する。
【０１２３】
以上で、ファイルシステム分割処理モジュール２１４は、処理を終了する。
【０１２４】
次に、ステップ９０１において自サーバが管理する新たなファイルシステムが作成される場合の図９の処理の具体例を、図１０から図１２を参照して説明する。
【０１２５】
具体的には、サーバＡのマイグレーションポイント「/mnt/fs0/ab/ac/」４０７以下のディレクトリツリーを分割し、サーバＡが管理する新しいファイルシステムを作成する場合を例として説明する。
【０１２６】
図１０は、本発明の実施の形態において局所分割が実行されているときの名前空間の一例の説明図である。
【０１２７】
図１０のうち、図４において既に説明した部分については、説明を省略する。
【０１２８】
ファイルシステム分割処理モジュール２１４は、サーバＡが利用可能な未使用のＬＤＥＶ１２４に新しいファイルシステム１００２を作成する（９０１）。さらに、ファイルシステム分割処理モジュール２１４は、作成された新しいファイルシステム１００２をサーバＡのローカルパス「/mnt/fs3/」にローカルマウントする。
【０１２９】
次に、ファイルシステム分割処理モジュール２１４は、マイグレーションポイント４０７以下のディレクトリツリー１００１に属するファイル「ad」及び「ae」を、ファイルＩＤを維持したまま、ファイルシステム１００２以下のディレクトリツリーにコピーする（９０２）。ディレクトリツリー１００１は、ファイルシステム４０１の一部に相当する。
【０１３０】
次に、ファイルシステム分割処理モジュール２１４は、マイグレーションポイント管理表６００Ａのマイグレーションポイント６０１Ａ「/mnt/fs0/ab/ac/」を「/mnt/fs3/」に書き換える（９０３）。
【０１３１】
次に、ＧＮＳ管理処理プログラム２０４がＧＮＳ管理表５００を更新する（９０４）。具体的には、ＧＮＳ管理処理プログラム２０４は、ＧＮＳ管理表５００に新たな行１２０１を追加する。更新されたＧＮＳ管理表１２００は、図１２に示す通りである。追加される行１２０１のサーバ名５０１には「サーバＡ」、ローカルパス５０２には「/mnt/fs3/」、接続ポイント５０３には「/gns/a/ab/ac/」が登録される。
【０１３２】
次に、ファイルシステム分割処理モジュール２１４は、書き換えられたＧＮＳ管理表１２００に従って、サーバＡのローカルパス「/mnt/fs3/」１００３を接続ポイント「/gns/a/ab/ac/」１１０１（図１１参照）に接続する（９０５）。
【０１３３】
以上で、ファイルシステムの局所分割が終了する。
【０１３４】
図１１は、本発明の実施の形態において局所分割が実行された後の名前空間の一例の説明図である。
【０１３５】
図１１は、図１０に示す局所分割の実行が終了した後の名前空間である。図１１のうち、図１０において既に説明した部分については、説明を省略する。
【０１３６】
サーバＡのローカルパス「/mnt/fs0/ab/ac/」の下のファイル「ad」及び「ae」が削除され、「/gns/a/ab/ac/」１１０１が新たな接続ポイントとして設定されている。
【０１３７】
図１２は、本発明の実施の形態において局所分割が実行された後のＧＮＳ管理表１２００の一例の説明図である。
【０１３８】
ＧＮＳ管理表１２００には、図１０において説明したように、新たな行１２０１が追加されている。
【０１３９】
局所分割が終了した後、新たに作成されたファイルシステムを他のサーバ１１０へマイグレーションする必要がある。図１１の例では、ファイルシステム１００２を、例えばサーバＢにマイグレーションする必要がある。このため、図８のステップ８０３において「はい」と判定され、ステップ８０４のマイグレーションが実行される。
【０１４０】
例えば、後述する図１３に示すように、ファイルシステム１００２がサーバＢにマイグレーションされる場合、マイグレーションが実行された後のサーバＡ及びサーバＢのローカル名前空間は、後述する図１４に示す通りとなる。このとき、マイグレーションポイント管理表６００Ａの「/mnt/fs3/」に対応する行は、マイグレーションポイント管理表６００Ｂに移動する。そして、マイグレーションが実行された後のＧＮＳ管理表５００は、後述する図１５に示す通りとなる。
【０１４１】
マイグレーションが実行される前、マイグレーションポイント管理表６００Ａの「/mnt/fs3/」に対応するファイルシステムＩＤ６０２Ａの値は「３」であった。このため、「/mnt/fs3/」に対応する行がマイグレーションポイント管理表６００Ｂに移動するときに、パス名「/mnt/fs3/」だけでなく、移動する行のファイルシステムＩＤ６０２Ａの値「３」が、移動先のサーバＢに送信される。この送信は、ＬＡＮ１６０、サーバ間通信路１３５又はその他のネットワークを介して実行されてもよい。移動先のサーバＢは、移動元のサーバＡから送信されたパス名「/mnt/fs3/」及びファイルシステムＩＤ「３」を、それぞれ、マイグレーションポイント６０１Ｂ及びファイルシステムＩＤ６０２Ｂに登録する。その結果、マイグレーションされたファイルは、マイグレーション実行前と同じファイルハンドルによって識別される。
【０１４２】
ここで、ファイルＩＤを維持したままコピーする方法（図９のステップ９０２参照）について補足説明する。ファイルＩＤとは、各ファイルごとに付与される識別子であり、ファイルシステム内で一意となる。ファイルＩＤを維持したままコピーするためには、コピー先のファイルシステムに同じファイルＩＤを持つファイルがないことを保証しなければならない。しかし、ステップ９０１で作成されたばかりのファイルシステムには、登録されているファイルが無いため、ファイルＩＤが重なることがないことが保証できる。そのため、ファイルＩＤを維持したままファイルをコピーすることが可能となる。言い換えると、一つのファイルがマイグレーションされたとき、マイグレーション実行後のマイグレーション先のサーバ１１０は、マイグレーション元のサーバ１１０がそのファイルを識別するために使用したファイルＩＤと同一のファイルＩＤを使用して、マイグレーションの対象のファイルを識別する。
【０１４３】
クライアント１５０は、ＧＮＳのファイルにアクセスする場合、システム内で一意なファイルシステムＩＤとファイルシステム内で一意なファイルＩＤとを組み合わせて作成されるファイルハンドルを使用し、システム内のファイルを一意に識別する。サーバ１１０は、ファイルハンドルを指定したアクセス要求を受信すると、指定されたファイルハンドルによって識別されるファイルに対するアクセスを実行する。
【０１４４】
本発明によれば、ファイルシステムの分割が実行される前後で、ファイルシステムＩＤもファイルＩＤも変わらない。また、ファイルシステム分割後にファイルシステムをマイグレーションしても、ファイルシステムＩＤとファイルＩＤのいずれも変わることはない。そのため、クライアント１５０は、ファイルシステム分割前に取得したファイルハンドルを使用して、ファイルシステム分割後も、ファイルシステムのマイグレーション後も、一意のファイルにアクセスすることができる。
【０１４５】
分割によって作成される新しいファイルシステムを、あらかじめマイグレーション先のサーバ１１０に作成してもよい。そのようにして実行される分割が、遠隔分割である。例えば、分割元のファイルシステム４０１のマイグレーションポイント４０７以下のディレクトリツリーを分割し、新しいファイルシステムをサーバＢが管理するファイルシステムとして作成する場合に実行される図９の処理を、図１３〜図１５を参照して説明する。
【０１４６】
図１３は、本発明の実施の形態において遠隔分割が実行されているときの名前空間の一例の説明図である。
【０１４７】
図１３のうち、図４又は図１０において既に説明した部分については、説明を省略する。
【０１４８】
ファイルシステム分割処理モジュール２１４は、サーバＢが利用可能な未使用のＬＤＥＶ１２４に新しいファイルシステム１３０２を作成する（９０１）。さらに、ファイルシステム分割処理モジュール２１４は、作成された新しいファイルシステム１３０２をサーバＢのローカルパス「/mnt/fs3/」にローカルマウントする。
【０１４９】
次に、ファイルシステム分割処理モジュール２１４は、マイグレーションポイント「/mnt/fs0/ab/ac/」４０７以下のディレクトリツリー１３０１以下のファイル「ad」及び「ae」を、ファイルＩＤを維持したまま、ファイルシステム１３０２にコピーする（９０２）。このコピーは、ＬＡＮ１６０を介して実行されてもよいし、他のネットワークを介して実行されてもよい。
【０１５０】
次に、サーバＡのファイルシステム分割処理モジュール２１４は、マイグレーションポイント管理表６００Ｂに「/mnt/fs3/」をマイグレーションポイントとして追加する指示をサーバＢに送信する（９０３）。
【０１５１】
この指示には、マイグレーションポイント管理表６００Ｂに新たに追加されるマイグレーションポイントＩＤ「/mnt/fs3/」と、マイグレーションポイント管理表６００ＡにおいてそのＩＤと対応して登録されていたファイルシステムＩＤ６０２Ａの値「３」が含まれる。その結果、マイグレーションポイント管理表６００Ｂに新たに追加される行のマイグレーションポイントＩＤ６０１Ｂ及びファイルシステムＩＤ６０２Ｂは、それぞれ、「/mnt/fs3/」及び「３」となる。その結果、マイグレーションされたファイルは、マイグレーション実行前と同じファイルハンドルによって識別される。
【０１５２】
次に、ファイルシステム分割処理モジュール２１４は、ＧＮＳ管理処理プログラム２０４に、ＧＮＳ管理表５００を更新する指示を送信する（９０４）。ＧＮＳ管理処理プログラム２０４は、ＧＮＳ管理表５００に新たな行１５０１を追加する。更新されたＧＮＳ管理表１５００は、図１５に示す通りである。追加される行１５０１のサーバ名５０１には「サーバＢ」、ローカルパス５０２には「/mnt/fs3/」、接続ポイント５０３には「/gns/a/ab/ac/」が登録される。
【０１５３】
次に、ファイルシステム分割処理モジュール２１４は、書き換えられたＧＮＳ管理表１５００に従って、サーバＢのローカルパス「/mnt/fs3/」１３０３を接続ポイント「/gns/a/ab/ac/」１４０１（図１４参照）に接続する（９０５）。
【０１５４】
以上で、ファイルシステムの遠隔分割が完了する。
【０１５５】
図１４は、本発明の実施の形態において遠隔分割が実行された後の名前空間の一例の説明図である。
【０１５６】
図１４は、図１３に示す遠隔分割の実行が終了した後の名前空間である。図１４のうち、図１３において既に説明した部分については、説明を省略する。
【０１５７】
サーバＡのローカルパス「/mnt/fs0/ab/ac/」の下のファイル「ad」及び「ae」が削除され、「/gns/a/ab/ac/」１４０１が新たな接続ポイントとして設定されている。
【０１５８】
図１５は、本発明の実施の形態において遠隔分割が実行された後のＧＮＳ管理表１５００の一例の説明図である。
【０１５９】
ＧＮＳ管理表１５００には、図１３において説明したように、新たな行１５０１が追加されている。
【０１６０】
以上の遠隔分割によれば、分割の終了と同時に他のサーバ１１０へのファイルシステムのマイグレーションも終了している。このため、図８のステップ８０３において「いいえ」と判定され、ステップ８０４のマイグレーションは実行されない。
【０１６１】
ファイルシステムの作成９０１、ファイルのコピー９０２、データの二重書き、及び、ＧＮＳ管理処理プログラム２０４との通信は、ＬＡＮ１６０を介して実行されてもよいし、サーバ間通信路１３５を介して実行されてもよい。
【０１６２】
図１０〜図１３の例のように、元のファイルシステムを管理するサーバ１１０に新しいファイルシステムを作成してからマイグレーションを実行する方法を局所分割マイグレーションと呼ぶ。図１３〜図１５の例のように、予めマイグレーション先のサーバ１１０に新しいファイルシステムを作成する方法を遠隔分割マイグレーションと呼ぶ。
【０１６３】
局所分割マイグレーション及び遠隔分割マイグレーションには、それぞれ相反する長所、短所がある。局所分割マイグレーションの長所は、スイッチ１３０の設定を変更して、サーバ１１０とディスクコントローラ１２５間のパスを切り換えるだけでファイルシステムのマイグレーションができる場合、サーバ１１０間のファイルコピー等によるネットワーク帯域の消費を節約できることである。例えば、サーバＡからサーバＢへのマイグレーションが実行されるとき、サーバＡとサーバＢが同じディスクサブシステム１２０を共有していれば、スイッチ１３０の設定を変えることで、マイグレーションの対象のファイルシステムが入っているＬＤＥＶ１２４をサーバＡからサーバＢの管理下に移すことができる。
【０１６４】
局所分割マイグレーションの短所は、マイグレーション元のディスクサブシステム１２０の空き容量が足りない場合、及び、ＬＤＥＶ１２４を使い切ったために新たなファイルシステムを作れない場合に実行できないことである。
【０１６５】
遠隔分割マイグレーションの長所は、マイグレーション元のディスクサブシステム１２０の空き容量が足りない場合、又は、ＬＤＥＶ１２４が足りない場合であっても、マイグレーション先のディスクサブシステム１２０の空き容量又はＬＤＥＶ数に余裕があれば、マイグレーションが可能なことである。
【０１６６】
遠隔分割マイグレーションの短所は、スイッチ１３０の設定を変更して、サーバ１１０とディスクコントローラ１２５間のパスを切り換えるだけでファイルシステムのマイグレーションが済む場合であっても、ネットワーク帯域を消費してしまうことである。
【０１６７】
本発明では、以上の局所分割マイグレーションと遠隔分割マイグレーションを組み合わせて使用することによって、より効率の良いファイルシステムのマイグレーションを実行することができる。
【０１６８】
次に、マイグレーションの実行契機を与える具体例として、管理者が管理計算機１４０からサーバ１１０へマイグレーションの実行を指示するためのグラフィカルユーザインターフェース（ＧＵＩ）を図１６及び図１７に例示する。
【０１６９】
図１６は、本発明の実施の形態の管理計算機１４０に表示されるマイグレーションポイント選択ウィンドウの説明図である。
【０１７０】
マイグレーションポイント選択ウィンドウ１６００は、管理計算機１４０の管理画面１４２に表示される。マイグレーションポイント選択ウィンドウ１６００には、マイグレーション元サーバリスト１６５０、マイグレーションポイントリスト１６６０及びマイグレーション先サーバリスト１６７０が表示される。
【０１７１】
マイグレーション元サーバリスト１６５０は、システム管理者がどのサーバ１１０のディレクトリツリーをマイグレーションするかを決定するために表示される。マイグレーション元サーバリスト１６５０は、サーバ名１６０１、空き容量１６０２、空きＬＤＥＶ数１６０３、ＣＰＵ負荷１６０４及びネットワーク帯域１６０５を含む。
【０１７２】
サーバ名１６０１には、マイグレーション元となるサーバ１１０の候補が表示される。空き容量１６０２には、サーバ名１６０１が示すサーバ１１０が利用できるディスクサブシステム１２０の空き容量が表示される。空きＬＤＥＶ数１６０３には、サーバ名１６０１が示すサーバ１１０が利用できるディスクサブシステム１２０に設定されたＬＤＥＶの数が表示される。ＣＰＵ負荷１６０４には、サーバ名１６０１が示すサーバ１１０が現在使用しているＣＰＵ１１２の負荷の値（例えば、％）が表示される。ネットワーク帯域１６０５には、サーバ名１６０１が示すサーバ１１０が現在使用しているネットワーク帯域の量（例えば、bytes毎秒）が表示される。システム管理者は、エントリの選択ボタン１６０６を操作することによって、サーバ名１６０１を選択することができる。選択されたサーバ名１６０１が示すサーバ１１０が、マイグレーション元のサーバ１１０となる。
【０１７３】
なお、システム管理者による選択ボタン１６０６の操作は、入力装置１４１によって実行される。例えば、入力装置１４１がマウスを含む場合、システム管理者は、選択ボタン１６０６上でマウスクリックをすることによって操作してもよい。実行ボタン１６３１等についても同様である。
【０１７４】
システム管理者は、マイグレーション元として、例えば、空き容量１６０２が少ないサーバ１１０を選択してもよいし、空きＬＤＥＶ数１６０３が少ないサーバ１１０を選択してもよいし、ＣＰＵ負荷１６０４が高いサーバ１１０を選択してもよいし、ネットワーク帯域１６０５の使用量の高いサーバ１１０を選択してもよい。あるいは、列１６０２〜１６０５までの各種情報を組み合わせてマイグレーション元のサーバ１１０を選択してもよい。
【０１７５】
マイグレーション元サーバのマイグレーションポイントリスト１６６０には、選択ボタン１６０６によって選択されたサーバ１１０のマイグレーションポイント管理表６００が表示される。マイグレーションポイントリスト１６６０に含まれるマイグレーションポイント１６１１、使用容量１６１２、readI/O情報１６１３及びwriteI/O情報１６１４には、それぞれ、マイグレーションポイント管理表６００に登録されているマイグレーションポイント６０１、使用容量６０３、readI/O情報６０４及びwriteI/O情報６０５の値が表示される。
【０１７６】
システム管理者は、選択ボタン１６１５を操作することによって、マイグレーションポイントリストに表示されたマイグレーションポイントの中から、マイグレーションしたいディレクトリツリーを選択する。具体的には、システム管理者は、マイグレーションしたいディレクトリツリーの最上位ディレクトリを、マイグレーションポイント１６１１から選択する。
【０１７７】
マイグレーション先サーバリスト１６７０には、サーバ名１６２１、空き容量１６２２、空きＬＤＥＶ数１６２３、ＣＰＵ負荷１６２４及びネットワーク帯域１６２５が表示される。システム管理者は、選択ボタン１６１５を操作して選択したマイグレーションポイント以下のディレクトリツリーをマイグレーションする先のサーバ１１０を、マイグレーション先サーバリスト１６７０から選択する。この選択は、システム管理者が選択ボタン１６２６を操作することによって実行される。
【０１７８】
サーバ名１６２１には、マイグレーション先の候補となるサーバ１１０の名前が表示される。空き容量１６２２は、サーバ名１６２１が示すサーバ１１０が利用できるディスクサブシステム１２０の空き容量が表示される。空きＬＤＥＶ数１６２３には、サーバ名１６２１が示すサーバ１１０が利用できるディスクサブシステムの空きＬＤＥＶの数が表示される。ＣＰＵ負荷１６２４には、サーバ名１６２１が示すサーバ１１０が現在使用しているＣＰＵ１１２の負荷の値（例えば、％）が表示される。ネットワーク帯域１６２５には、サーバ名１６２１が示すサーバ１１０が現在使用しているネットワーク帯域の量（例えば、bytes毎秒）が表示される。
【０１７９】
システム管理者がマイグレーション実行ボタン１６３１を操作すると、マイグレーション先の詳細入力ウィンドウ１７００が表示される（図１７参照）。キャンセルボタン１６３２は、マイグレーションポイント選択ウィンドウ１６００を閉じ、マイグレーション処理をキャンセルするために使用される。
【０１８０】
図１７は、本発明の実施の形態のマイグレーション先詳細設定ウィンドウ１７００の説明図である。
【０１８１】
マイグレーション先詳細設定ウィンドウ１７００は、マイグレーション元サーバ名表示欄１７０１、マイグレーションポイント表示欄１７０２、マイグレーション先サーバ名表示欄１７０３、ＬＤＥＶ名入力欄１７０４、ローカルパス入力欄１７０５、実行ボタン１７３１及びキャンセルボタン１７３２を含む。
【０１８２】
マイグレーション元サーバ名表示欄１７０１には、図１６の選択ボタン１６０６によって選択されたマイグレーション元のサーバ１１０のサーバ名１６０１が表示される。図１７の例では、「サーバＡ」が表示されている。マイグレーションポイント表示欄１７０２には、選択ボタン１６１５によって選択されたマイグレーションポイント１６１１が表示される。図１７の例では、「/mnt/fs3/」が表示されている。マイグレーション先サーバ名表示欄１７０３には、選択ボタン１６２６によって選択されたマイグレーション先のサーバ１１０のサーバ名１６２１が表示される。図１７の例では、「サーバＢ」が表示されている。
【０１８３】
システム管理者は、マイグレーション先のサーバ１１０が利用することができるＬＤＥＶ１２４の中から、マイグレーション先として使用するものを選択し、そのＬＤＥＶ１２４のＬＤＥＶ名をＬＤＥＶ名入力欄１７０４に入力する。
【０１８４】
さらに、システム管理者は、マイグレーション先のＬＤＥＶ１２４に作成されるファイルシステムをローカルマウントするマイグレーション先のサーバ１１０のローカルパスを指定し、そのローカルパスをローカルパス入力欄１７０５に入力する。その結果、マイグレーション先サーバ名表示欄１７０３に表示されたサーバ１１０の、ローカルパス入力欄１７０５に入力されたローカルパスに、マイグレーション先のファイルシステムが作成される。ローカルパス入力欄１７０５に入力される値は、ＧＮＳ管理表５００のローカルパス５０２に対応している。
【０１８５】
システム管理者が実行ボタン１７３１を操作すると、管理計算機１４０は、サーバソフトウェア２００へマイグレーションの開始を指示する。システム管理者がキャンセルボタン１７３２を選択すると、マイグレーション先詳細設定ウィンドウ１７００が閉じる。
【０１８６】
局所分割マイグレーションと遠隔分割マイグレーションは、自動的に使い分けられてもよい。例えば、サーバＡからサーバＢへのマイグレーションが実行されるとき、サーバＡとサーバＢが同じディスクサブシステム１２０を共有している場合、ＬＤＥＶ名入力欄１７０４に入力されたＬＤＥＶ１２４へのマイグレーションは、パスを切り替えるだけで実行することができる。このとき、局所分割に使用するＬＤＥＶ１２４のファイルシステムを一時的にサーバＡにローカルマウントするためのディレクトリは、管理計算機１４０によって自動生成されてもよい。
【０１８７】
サーバＡとサーバＢが同じディスクサブシステム１２０を共有していない場合、パス切り替えによってマイグレーションを実行することができない。このため、自動的に、遠隔分割マイグレーションが選択され、実行される。その場合は、ＬＤＥＶ名入力欄１７０４に入力されたＬＤＥＶ１２４がサーバＢに確保され、そのＬＤＥＶ１２４にファイルシステムが作成される。そして、作成されたファイルシステムに、マイグレーションポイント表示欄１７０２に表示されたディレクトリ以下のファイルを、ファイルＩＤを維持したままコピーすることによって、マイグレーションが実行される。
【０１８８】
図１６及び図１７では、システム管理者がＧＵＩウィンドウを使用してマイグレーション開始の契機を与える方法について説明した。しかし、ＧＵＩウィンドウは、マイグレーションの契機を与える方法のうちの一つであり、他の方法によってマイグレーションの契機が与えられてもよい。例えば、コマンドラインインターフェース（ＣＬＩ）によってマイグレーションの契機が与えられてもよい。あるいは、マイグレーション元サーバの統計情報、マイグレーションポイント管理表の統計情報及びマイグレーション先サーバの統計情報に基づいて、どのサーバ１１０のどのマイグレーションポイントをどのサーバ１１０へマイグレーションするか自動的に判断してもよい。
【０１８９】
図１８は、本発明の実施の形態の管理計算機１４０が統計情報に基づいてマイグレーションの実行を制御する処理を説明するフローチャートである。
【０１９０】
図１８の例では、統計情報として、各サーバの空き容量１６０２、ＣＰＵ負荷１６０４及びネットワーク帯域使用量１６０５が使用される。具体的には、これらの値と、予め設定された閾値とを比較し、その比較の結果に基づいて、マイグレーションの実行が制御される。
【０１９１】
なお、以下に説明するステップ１８０１から１８０７までの処理は、マイグレーション元サーバリスト１６５０に表示された各サーバ１１０を対象として実行される。
【０１９２】
管理計算機１４０のＣＰＵ１４４は、最初に、空き容量１６０２の値が所定の閾値を下回っているか否かを判定する（１８０１）。
【０１９３】
ステップ１８０１において、閾値を下回っていると判定された場合（すなわち、「はい」の場合）、特定のＬＤＥＶ１２４にデータが集中して格納されていると考えられる。この場合、ＬＤＥＶ１２４に格納されているデータ量を分散させるために、マイグレーションを実行することが望ましい。この場合、処理はステップ１８０４へ進む。
【０１９４】
この場合、ＣＰＵ１４４はステップ１８０４において、空き容量１６０２の閾値を上回るために十分な使用容量１６１２を持つ一つ以上のマイグレーションポイントを選択する。
【０１９５】
一方、ステップ１８０１において、閾値を下回っていないと判定された場合（すなわち、「いいえ」の場合）、処理はステップ１８０２へ進む。
【０１９６】
ステップ１８０２において、ＣＰＵ１４４は、ＣＰＵ負荷１６０４の値が所定の閾値を上回ったか否かを判定する。
【０１９７】
ステップ１８０２において、閾値を上回っていると判定された場合（すなわち、「はい」の場合）、特定のサーバに処理の負荷が集中していると考えられる。この場合、サーバ１１０のＣＰＵ負荷を分散させるために、マイグレーションを実行することが望ましい。この場合、処理はステップ１８０４へ進む。
【０１９８】
この場合、ＣＰＵ１４４はステップ１８０４において、クライアント１５０から各マイグレーションポイントへのアクセスによるＣＰＵ負荷を、readI/O情報１６１３及びwriteI/O情報１６１４に基づいて算出する。正確なＣＰＵ負荷を算出する代わりに、近似的な値を算出してもよい。そして、ＣＰＵ１４４は、マイグレーションによってＣＰＵ負荷１６０４が閾値を下回るように、一つ以上の適切なマイグレーションポイントを選択する。
【０１９９】
一方、ステップ１８０２において、閾値を上回っていないと判定された場合（すなわち、「いいえ」の場合）、処理はステップ１８０３へ進む。
【０２００】
ステップ１８０３において、ＣＰＵ１４４は、ネットワーク帯域１６０５の値（すなわち、ネットワーク帯域の使用量）が所定の閾値を上回ったか否かを判定する。
【０２０１】
ステップ１８０３において、閾値を上回ったと判定された場合（すなわち、「はいの場合」）、特定のサーバに通信の負荷が集中していると考えられる。この場合、通信の負荷を分散させるために、マイグレーションを実行することが望ましい。この場合、処理はステップ１８０４へ進む。
【０２０２】
この場合、ＣＰＵ１４４はステップ１８０４において、readバイト数１６１３及びwriteバイト数１６１４に基づいて、各マイグレーションポイントの単位時間当たりのネットワーク帯域の使用量を計算する。そして、ＣＰＵ１４４は、その計算の結果に基づいて、ネットワーク帯域１６０５が閾値を下回るように、一つ以上の適切なマイグレーションポイントを選択する。
【０２０３】
一方、ステップ１８０３において、閾値を上回っていないと判定された場合（すなわち、「いいえ」の場合）、データ量及び負荷のいずれも集中していない。この場合、マイグレーションを実行する必要がないため、処理を終了する。
【０２０４】
ＣＰＵ１４４は、ステップ１８０４を実行した後、マイグレーションの条件に適合するサーバ１１０があるか否かを判定する（１８０５）。
【０２０５】
具体的には、ＣＰＵ１４４は、ステップ１８０４で選択されたマイグレーションポイントの数以上の空きＬＤＥＶ数１６２３を持つサーバ１１０の中から、ステップ１８０４で選択されたマイグレーションポイントをマイグレーションしたとしても、次の三つの条件を満たすと予測されるサーバ１１０を選択する。
（１）空き容量１６０２が所定の閾値を下回らない。
（２）ＣＰＵ負荷１６０４が所定の閾値を上回らない。
（３）ネットワーク帯域１６０５が所定の閾値を上回らない。
【０２０６】
ステップ１８０５において、マイグレーションの条件に適合するサーバ１１０があると判定された場合、そのサーバ１１０へのマイグレーションを実行することによって、サーバ１１０の負荷等が分散される。このため、ＣＰＵ１４４は、条件に適合するサーバ１１０をマイグレーション先として選択する（１８０６）。複数のサーバ１１０が条件に適合する場合、それらのうちの任意の数のサーバ１１０がマイグレーション先として選択されてもよい。
【０２０７】
次に、ＣＰＵ１４４は、ステップ１８０４において選択されたマイグレーションポイントを、ステップ１８０６において選択されたサーバ１１０へマイグレーションする指示を、サーバ１１０に送信する（１８０７）。複数のマイグレーションポイントをマイグレーションする場合、全てのマイグレーションポイントを一つのサーバ１１０へマイグレーションしてもよいし、複数のサーバへ分散してマイグレーションしてもよい。ただし、複数のサーバ１１０全体で、選択されたマイグレーションポイントの数の空きＬＤＥＶ数１６２３を用意することができ、かつ、全てのサーバが上記の条件（１）から（３）を満たす必要がある。
【０２０８】
一方、ステップ１８０５において、マイグレーションの条件に適合するサーバ１１０がないと判定された場合、マイグレーションを実行してもサーバ１１０の負荷等が分散されない。この場合、ＣＰＵ１４４は、処理を終了する。
【０２０９】
以上の処理を実行することによって、全サーバ１１０の空き容量１６０２、ＣＰＵ負荷１６０４、ネットワーク帯域１６０５を適切な範囲に保つことができる。
【０２１０】
また、各統計情報の履歴を取っておくことによって、次のような処理も実現できる。
【０２１１】
例えば、各マイグレーションポイントの使用容量１６１２、readI/O情報１６１３及びwriteI/O情報１６１４の履歴を参照することによって、ほとんど読み込みにしか使っていないマイグレーションポイントであるか否かが分かる。ほとんど読み込みにしか使っていないマイグレーションポイントは、予めアーカイブ用途に適したＬＤＥＶ１２４を持つサーバ１１０へマイグレーションされてもよい。
【０２１２】
また、使用容量１６１２とwriteI/O情報１６１４の履歴を参照することによって、著しく使用容量が増加傾向にあるマイグレーションポイントを見つけることができる。このようなマイグレーションポイントは、特に空き容量１６０２が豊富で、書き込み性能の良いＬＤＥＶ１２４を持つサーバ１１０へ予めマイグレーションすることもできる。
【０２１３】
また、readI/Oバイト数１６１３及びwr iteI/Oバイト数１６１４の履歴を参照することによって、各マイグレーションポイントのネットワーク帯域の消費量が増加傾向にあるか否かが分かる。ネットワーク帯域の消費量が増加傾向にあるマイグレーションポイントは、特に大きいネットワーク帯域を持つサーバ１１０へ予めマイグレーションすることもできる。
【０２１４】
この他、短時間にマイグレーションを繰り返すことによってシステム全体の性能が低下することを避けるために、一度マイグレーションされたマイグレーションポイントは、しばらくマイグレーションを禁止することもできる。
【０２１５】
サーバ１１０の統計情報（すなわち、マイグレーション元サーバリスト１６５０及びマイグレーション先サーバリスト１６７０に表示される情報）は、例えば、管理計算機１４０がマイグレーションのウィンドウを表示するときに取得してもよいし、周期的に取得してもよい。サーバ１１０間の通信には、ＬＡＮ１６０が使用されてもよいし、サーバ間通信路１３５が使用されてもよい。
【０２１６】
次に、上記の本発明の実施の形態の効果について説明する。
【０２１７】
クライアントから透過的に、きめ細かいマイグレーションを実現する従来の方法として、予めストレージシステム１００に少ない容量のファイルシステムを多数用意するという方法があった。以下、図１９を参照して、本実施の形態と上記従来の方法とを比較する。
【０２１８】
図１９は、本発明の実施の形態と従来の手法とを比較する説明図である。
【０２１９】
説明の便宜上、１００ＧＢの記憶容量を持つストレージシステム１９００Ａ及び１９００Ｂがあると仮定する。ストレージシステム１９００Ａには本発明の実施の形態が適用され、ストレージシステム１９００Ｂには従来の方法が適用される。ストレージシステム１９００Ａは、一つのファイルシステム１９０１Ａのみを含む。すなわち、ファイルシステム１９０１Ａの記憶容量は１００ＧＢである。一方、ストレージシステム１９００Ｂには、予め小さいファイルシステムが用意される。具体的には、ストレージシステム１９００Ｂは、各々の記憶容量が２５ＧＢである四つのファイルシステム１９０１Ｂ、１９０２Ｂ、１９０３Ｂ及び１９０４Ｂを含む。
【０２２０】
ストレージシステム１９００Ａ及び１９００Ｂに格納されているファイルのデータ量は、それぞれ５０ＧＢである。図１９中の網掛けされている領域が、ストレージシステム１９００Ａ及び１９００Ｂの使用領域（すなわち、ファイルを格納している領域）である。ストレージシステム１９００Ｂでは、ファイルシステム１９０１Ｂ及び１９０２Ｂにそれぞれ２０ＧＢのデータが格納され、ファイルシステム１９０３Ｂには１０ＧＢのデータが格納され、ファイルシステム１９０４Ｂにはデータが格納されていない。
【０２２１】
図１９の例では、各ファイルシステムの使用率が８０％になった時点で、マイグレーションが実行されると仮定する。ファイルシステムの使用率とは、各ファイルシステムに設定されている記憶容量に対する、実際に使用されている容量の割合（％）である。
【０２２２】
以上の条件で、図１９を参照すると、ストレージシステム１９００Ａでは、ファイルシステム１９０１Ａの使用率が５０％である。このため、マイグレーションを実行する必要が無い。これに対し、ストレージシステム１９００Ｂでは、ファイルシステム１９０１Ｂ及び１９０２Ｂの使用率は、マイグレーションの閾値である８０％である。このため、ファイルシステム１９０１Ｂ及び１９０２Ｂは、マイグレーションの対象となってしまう。このように、ファイルシステム１９０１Ｂ及び１９０２Ｂに格納されるファイルが集中している一方で、ファイルシステム１９０３Ｂ及び１９０４Ｂには、空き容量の余裕がある。ストレージシステム１９００Ｂでは、マイグレーションの回数が増える上に、最初に割り当てられたファイルシステム１９０４Ｂが無駄になる可能性もあり、性能面においても、ストレージシステム１００の使用効率においても無駄が多い。
【０２２３】
小さなファイルシステムを予め作成し、細かい粒度のマイグレーションを実現する従来の方法で、効率よくストレージシステム１００を使用するためには、図１９の例のようなことが起こらないように、予めファイルシステムごとの細かい運用計画を立てなければならない。しかしながら、実際にストレージシステム１００の運用の前から細かい予測を立てることは難しい。
【０２２４】
これに対して、本発明の実施の形態によれば、必要に応じてファイルシステムを分割してマイグレーションを実行することによって、ファイルシステム数を必要最小限に抑えることができる。このため、本実施の形態は、図１９のストレージシステム１９００Ｂに示す方法と比べ、マイグレーション処理の増加による性能劣化、及び、容量効率の無駄を抑える効果がある。
【０２２５】
以上、本発明の実施の形態によれば、複数のサーバ１１０を備えるストレージシステム１００において、ファイルシステムを分割することによって、きめ細かい粒度のマイグレーションを、クライアントから透過的に実現することが可能となる。これは、複数のサーバ１１０間のより良い負荷の均衡を可能とし、ストレージシステム１００全体の性能向上に寄与する。
【図面の簡単な説明】
【０２２６】
【図１】本発明の実施の形態のストレージシステムの構成を示すブロック図である。
【図２】本発明の実施の形態のサーバソフトウェアの説明図である。
【図３】本発明の実施の形態においてクライアントに提供される共通名前空間の一例を示す説明図である。
【図４】本発明の実施の形態の各サーバの名前空間の説明図である。
【図５】本発明の実施の形態のＧＮＳ管理表の一例を示す説明図である。
【図６Ａ】本発明の実施の形態のマイグレーションポイント管理表の一例を示す説明図である。
【図６Ｂ】本発明の実施の形態のマイグレーションポイント管理表の一例を示す説明図である。
【図７】本発明の実施の形態のファイルシステムＩＤ管理表の説明図である。
【図８】本発明の実施の形態のマイグレーション処理プログラムが実行する処理のフローチャートである。
【図９】本発明の実施の形態のファイルシステム処理プログラム内のファイルシステム分割処理モジュールが実行する処理のフローチャートである。
【図１０】本発明の実施の形態において局所分割が実行されているときの名前空間の一例の説明図である。
【図１１】本発明の実施の形態において局所分割が実行された後の名前空間の一例の説明図である。
【図１２】本発明の実施の形態において局所分割が実行された後のＧＮＳ管理表の一例の説明図である。
【図１３】本発明の実施の形態において遠隔分割が実行されているときの名前空間の一例の説明図である。
【図１４】本発明の実施の形態において遠隔分割が実行された後の名前空間の一例の説明図である。
【図１５】本発明の実施の形態において遠隔分割が実行された後のＧＮＳ管理表の一例の説明図である。
【図１６】本発明の実施の形態の管理計算機に表示されるマイグレーションポイント選択ウィンドウの説明図である。
【図１７】本発明の実施の形態のマイグレーション先詳細設定ウィンドウの説明図である。
【図１８】本発明の実施の形態の管理計算機が統計情報に基づいてマイグレーションの実行を制御する処理を説明するフローチャートである。
【図１９】本発明の実施の形態と従来の手法とを比較する説明図である。
【符号の説明】
【０２２７】
１００  ストレージシステム
１１０  サーバ
１１１  ネットワークインターフェース
１１２  ＣＰＵ
１１３  ローカルメモリ
１１６  アダプタ
１２０  ディスクサブシステム
１２１  ディスクコントローラ
１２２  ディスクキャッシュ
１２３  ディスクドライブ
１２４  論理デバイス（ＬＤＥＶ）
１２５  ポート
１２６  管理用ポート
１３０  スイッチ
１３１  管理用ポート
１３５  サーバ間通信路
１４０  管理計算機
１５０  クライアント
１６０  ＬＡＮ
２００  サーバソフトウェア
２０１  ネットワーク処理プログラム
２０２  ファイルシステム処理プログラム
２０３  ディスクアクセス処理プログラム
２０４  ＧＮＳ管理処理プログラム
２０５  サーバ管理処理プログラム
２０６  サーバ間通信処理プログラム
２０７  マイグレーション処理プログラム
２１１  マイグレーションポイント設定処理モジュール
２１２  ファイルアクセス処理モジュール
２１３  ファイルシステム作成処理モジュール
２１４  ファイルシステム分割処理モジュール
【図１】
0004772569.tif 000002
【図２】
0004772569.tif 000003
【図３】
0004772569.tif 000004
【図４】
0004772569.tif 000005
【図５】
0004772569.tif 000006
【図６Ａ】
0004772569.tif 000007
【図６Ｂ】
0004772569.tif 000008
【図７】
0004772569.tif 000009
【図８】
0004772569.tif 000010
【図９】
0004772569.tif 000011
【図１０】
0004772569.tif 000012
【図１１】
0004772569.tif 000013
【図１２】
0004772569.tif 000014
【図１３】
0004772569.tif 000015
【図１４】
0004772569.tif 000016
【図１５】
0004772569.tif 000017
【図１６】
0004772569.tif 000018
【図１７】
0004772569.tif 000019
【図１８】
0004772569.tif 000020
【図１９】
0004772569.tif 000021