(57)【要約】【課題】NAS制御部の負荷を増大させずに、データマイグレーションを実行する。【解決手段】FCディスク４Ｃに基づくボリューム４ＡとATAディスク４Ｄに基づくボリューム４Ｂを結合させて、一つの仮想ボリューム５が生成されている。更新管理部３Ｅは、高速領域５Ａの更新を監視し、更新ビットマップを生成する。更新管理部３Ｅは、各更新ビットマップのＯＲを演算して、所定期間更新されていないセグメントを検出するための非更新ビットマップを生成する。マイグレート制御部２Ｄは、非更新ビットマップに基づいて、マイグレート対象となるセグメントを抽出したマイグレート対象ビットマップ２Ｂを生成する。マイグレート実行部３Ｄは、マイグレート対象ビットマップ３Ｂに基づいて、マイグレート対象のセグメントを１つずつ、または複数個まとめて、データマイグレーションを実行する。【選択図】図１
2007226596.tif 000002
【特許請求の範囲】
【請求項１】
ファイルコントローラ及びブロックコントローラを備えた記憶制御装置であって、
各ファイルに関する情報をそれぞれ管理し、上位装置からのファイルアクセス要求をキャッシュメモリを利用して処理するファイル管理部と、
第１物理的記憶デバイス上に設けられる第１論理的記憶デバイスと前記第１物理的記憶デバイスとは異なる性能を有する第２物理的記憶デバイス上に設けられる第２論理的記憶デバイスとを一つの仮想ボリュームとして結合させ、この仮想ボリュームを前記ファイル管理部に提供するボリューム管理部と、
前記第１論理的記憶デバイス及び前記第２論理的記憶デバイスの更新状態を、所定の管理単位でそれぞれ管理する更新管理部と、
前記管理単位での更新状態及び前記ファイル管理部により管理される前記各ファイルの情報に基づいて、マイグレート対象となるデータを特定し、この特定されたデータを前記第１論理的記憶デバイスと前記第２論理的記憶デバイスとの間で移動させるための指示を発行するマイグレート制御部と、
前記マイグレート制御部からの指示に基づき、前記第１論理的記憶デバイスと前記第２論理的記憶デバイスとの間で、前記管理単位で、データを移動させるマイグレート実行部と、を備えた記憶制御装置。
【請求項２】
前記管理単位には、前記キャッシュメモリにおけるデータ管理単位であるセグメント単位が用いられ、
前記更新管理部は、前記セグメント単位で、前記各論理的記憶デバイスの更新状態を、更新ビットマップによってそれぞれ管理する請求項１に記載の記憶制御装置。
【請求項３】
前記更新管理部は、所定周期毎に、前記各論理的記憶デバイス毎に前記更新ビットマップをそれぞれ作成し、かつ、所定期間内に作成された前記複数の更新ビットマップの論理和に基づいて、前記所定期間内に更新されなかった非更新セグメントを検出するための非更新ビットマップを生成し、
前記マイグレート制御部は、前記非更新ビットマップ及び前記ファイル管理部により管理される前記各ファイルの情報に基づいて、前記非更新セグメントに記憶されているデータをマイグレート対象のデータとして特定するためのマイグレート対象ビットマップを作成し、このマイグレート対象ビットマップに基づいて、前記マイグレート対象のデータを前記第１論理的記憶デバイスと前記第２論理的記憶デバイスとの間で移動させるための指示を前記マイグレート実行部に発行する請求項２に記載の記憶制御装置。
【請求項４】
前記マイグレート制御部は、前記非更新ビットマップに含まれる非更新セグメントのうち、予め設定されたマイグレーションポリシーに合致する非更新セグメントのみを、前記マイグレート対象ビットマップに登録する請求項３に記載の記憶制御装置。
【請求項５】
前記マイグレート制御部は、前記マイグレート対象ビットマップに登録された非更新セグメント毎に、前記指示を発行する請求項３に記載の記憶制御装置。
【請求項６】
前記マイグレート制御部は、前記マイグレート対象ビットマップを複数のセグメント範囲に分割し、これらセグメント範囲毎に、当該セグメント範囲に含まれている前記非更新セグメントについて一括して、前記指示を発行する請求項３に記載の記憶制御装置。
【請求項７】
前記ファイルコントローラは、前記ファイル管理部と、前記ボリューム管理部及び前記マイグレート制御部を備えており、
前記ブロックコントローラは、前記更新管理部及び前記マイグレート実行部を備えており、
前記非更新ビットマップ及び前記マイグレート対象ビットマップは、前記ファイルコントローラと前記ブロックコントローラとにより共有されている請求項３に記載の記憶制御装置。
【請求項８】
前記ファイルコントローラの前記キャッシュメモリが接続される内部バスと前記ブロックコントローラの他のメモリが接続される内部バスとは、ブリッジ回路を介して結合されており、
前記非更新ビットマップ及び前記マイグレート対象ビットマップは、前記内部バスを介したメモリ間コピーを用いることにより、前記ファイルコントローラと前記ブロックコントローラとに共有されている請求項７に記載の記憶制御装置。
【請求項９】
前記更新管理部は、前記ファイルコントローラ内に設けられている請求項３に記載の記憶制御装置。
【請求項１０】
ファイルコントローラ及びブロックコントローラを備えた記憶制御装置を用いて、データをマイグレートさせるためのデータマイグレーション方法であって、
前記ファイルコントローラによって、第１物理的記憶デバイス上に設けられる第１論理的記憶デバイスと第２物理的記憶デバイス上に設けられる第２論理的記憶デバイスとを一つの仮想ボリュームとして結合させ、この仮想ボリュームを、上位装置からのファイルアクセス要求をキャッシュメモリを利用して処理するためのファイル管理部に提供するステップと、
前記ブロックコントローラによって、前記各論理的記憶デバイスの更新状態を、所定周期毎に更新ビットマップをそれぞれ作成することにより、前記キャッシュメモリにおけるデータ管理単位であるセグメント単位で管理するステップと、
前記ブロックコントローラによって、所定期間内に作成された前記複数の更新ビットマップの論理和に基づいて、前記所定期間内に更新されなかった非更新セグメントを検出するための非更新ビットマップを生成して記憶させるステップと、
前記非更新ビットマップを前記ファイルコントローラと前記ブロックコントローラとが共有するステップと、
前記ファイルコントローラによって、前記非更新ビットマップ及び前記ファイル管理部により管理されている各ファイルの情報に基づいて、前記非更新セグメントに記憶されているファイルをマイグレート対象のデータとして特定するためのマイグレート対象ビットマップを作成して記憶させるステップと、
前記マイグレート対象ビットマップを前記ファイルコントローラと前記ブロックコントローラとが共有するステップと、
前記ファイルコントローラによって、前記マイグレート対象ビットマップに登録された非更新セグメントに記憶されているファイルへの更新を禁止させるステップと、
前記ファイルコントローラによって、前記マイグレート対象ビットマップに登録された非更新セグメントに記憶されているデータを前記第１論理的記憶デバイスから前記第２論理的記憶デバイスに移動させるための指示を、前記ブロックコントローラに発行させるステップと、
前記ブロックコントローラによって、前記発行された指示及び前記マイグレート対象ビットマップに基づいて、前記第１論理的記憶デバイスに記憶されたデータを、一つまたは複数のセグメント単位で、前記第２論理的記憶デバイスに移動させるステップと、
前記ファイルコントローラによって、前記データの移動が完了した場合には、更新が禁止されたファイルの更新禁止を解除するステップと、
を実行するデータマイグレーション方法。
【請求項１１】
ファイルアクセスを担当するファイルコントローラと、ブロックアクセスを担当するブロックコントローラと、このブロックコントローラによりそれぞれ使用される高速物理的記憶デバイス及び低速物理的記憶デバイスとを備えた記憶制御装置であって、
前記ファイルコントローラの有するキャッシュメモリと前記ブロックコントローラの有する他のメモリとは、前記ファイルコントローラの内部バスと前記ブロックコントローラの内部バスとをブリッジ回路を介して結合することにより接続されており、
前記ファイルコントローラは、ファイルシステムと、ボリューム管理部及びマイグレート制御部を備え、
前記ブロックコントローラは、更新管理部及びマイグレート実行部を備え、
前記ファイルシステムは、前記上位装置からのファイルアクセス要求を前記キャッシュメモリを利用して処理し、
前記ボリューム管理部は、前記高速物理的記憶デバイス上に設けられる高速論理的記憶デバイスが前半部分に、前記低速物理的記憶デバイス上に設けられる低速論理的記憶デバイスが後半部分にそれぞれ位置するようにして、前記高速論理的記憶デバイスと前記低速論理的記憶デバイスとから一つの仮想ボリュームを生成し、この仮想ボリュームを前記ファイル管理部に提供し、
前記更新管理部は、前記高速論理的記憶デバイス及び前記低速論理的記憶デバイスの更新状態を前記キャッシュメモリのデータ管理単位であるセグメント毎にそれぞれ管理し、所定周期毎に、前記各論理的記憶デバイスのそれぞれについて更新ビットマップを生成し、かつ、所定期間内に生成された前記各更新ビットマップの論理和に基づいて、前記所定期間内に更新されなかった非更新セグメントを検出するための非更新ビットマップを生成して前記他のメモリに記憶させ、
前記他のメモリに記憶された前記非更新ビットマップは、メモリ間コピーによって、前記他のメモリから前記キャッシュメモリにコピーされ、
前記マイグレート制御部は、前記キャッシュメモリに記憶された前記非更新ビットマップに含まれる前記非更新セグメントに記憶されているファイルの属性を前記ファイルシステムに問い合わせることにより、マイグレートさせるべきマイグレート対象セグメントを特定するためのマイグレート対象ビットマップを生成して、このマイグレート対象ビットマップを前記キャッシュメモリに記憶させ、
前記キャッシュメモリに記憶された前記マイグレート対象ビットマップは、前記メモリ間コピーによって、前記キャッシュメモリから前記他のメモリにコピーされ、
前記マイグレート制御部は、前記マイグレート対象セグメントに登録された前記非更新セグメントに記憶されているデータを、前記高速論理的記憶デバイスから前記低速記憶デバイスに移動させるための指示を前記マイグレート実行部に発行し、
前記マイグレート実行部は、前記発行された指示及び前記マイグレート対象ビットマップに基づいて、前記高速論理的記憶デバイスに記憶されたデータを、一つまたは複数のセグメント単位で、前記低速論理的記憶デバイスに移動させ、
前記ファイルシステムは、前記マイグレート対象データの移動が完了するまでの間、前記上位装置から当該マイグレート対象データへの更新を禁止する、
記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置を用いてデータをマイグレートさせる方法に関する。
【背景技術】
【０００２】
企業等では、管理すべきデータが日々増大するが、一般的に、生成後一定時間の経過したデータは、その使用頻度が低下する。データの価値は、時間の経過につれて減少するため、利用価値の少なくなったデータは、高速な記憶装置から低速な記憶装置に移されるべきである。高速な記憶装置は、一般的に高価であり、使用可能な容量には限りがあるためである。
【０００３】
そこで、ディスク装置上のファイルを、所定のタイミングで、磁気テープ装置に移動させるようにしたデータマイグレーション処理方法も提案されている（特許文献１）。この文献に記載の技術では、マイグレート候補を検索してリストを作成する処理と、作成されたリストに基づいてディスク装置内のファイルを一定量だけ磁気テープ装置に移動させる処理とを分離し、それぞれの処理を非同期で実行させている。
【特許文献１】特開２００３−１５９１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前記文献に記載の技術では、ファイル情報を収集する処理とマイグレートを実行する処理とを分離し、マイグレートに要する時間の短縮を図っている。しかし、ボリュームサイズが大きくなればなるほど、ファイルツリーの全検索等を行うために時間がかかり、マイクロプロセッサの負荷も増大する。
【０００５】
特に、例えば、高速な記憶領域と低速な記憶領域とを結合させて一つの仮想ボリュームを構築する場合、この仮想ボリュームのサイズは、通常のボリュームよりも大きくなる。そして、例えば、NAS（Network Attached Storage）と呼ばれるファイルサーバでは、この大サイズの仮想ボリューム上にファイルシステムを構築可能なため、マイグレート処理に過大な負荷がかかるという問題がある。
【０００６】
本発明は、上記問題点に鑑みてなされたもので、その目的は、仮想ボリュームを構成する各論理的記憶デバイスの更新状態を管理することにより、マイグレート対象のデータを比較的簡単に特定し、効率的にデータをマイグレートできるようにした記憶制御装置及び記憶制御装置を用いたデータマイグレーション方法を提供することにある。本発明の他の目的は、仮想ボリュームを構成する各論理的記憶デバイスの更新状態を、キャッシュメモリ上の管理単位で管理することにより、ファイルコントローラに過大な負荷を与えることなく、マイグレート対象のファイルを間接的に特定し、この特定されたファイルのデータを移動させることができるようにした記憶制御装置及び記憶制御装置を用いたデータマイグレーション方法を提供することにある。本発明の更なる目的は、ブロックコントローラ内で非更新ビットマップを生成し、ファイルコントローラ内でマイグレート対象ビットマップを生成し、これら各ビットマップをファイルコントローラ及びブロックコントローラがメモリ間コピーを用いて共有することにより、特別なコマンドを使用せずに、比較的簡単にデータのマイグレートを行うことができる記憶制御装置及び記憶制御装置を用いたデータマイグレーション方法を提供することにある。本発明のさらなる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００７】
上記課題を解決すべく、本発明に従う記憶制御装置は、ファイルコントローラ及びブロックコントローラを備えた記憶制御装置であって、各ファイルに関する情報をそれぞれ管理し、上位装置からのファイルアクセス要求をキャッシュメモリを利用して処理するファイル管理部と、第１物理的記憶デバイス上に設けられる第１論理的記憶デバイスと第１物理的記憶デバイスとは異なる性能を有する第２物理的記憶デバイス上に設けられる第２論理的記憶デバイスとを一つの仮想ボリュームとして結合させ、この仮想ボリュームをファイル管理部に提供するボリューム管理部と、第１論理的記憶デバイス及び第２論理的記憶デバイスの更新状態を、所定の管理単位でそれぞれ管理する更新管理部と、管理単位での更新状態及びファイル管理部により管理される各ファイルの情報に基づいて、マイグレート対象となるデータを特定し、この特定されたデータを第１論理的記憶デバイスと第２論理的記憶デバイスとの間で移動させるための指示を発行するマイグレート制御部と、マイグレート制御部からの指示に基づき、第１論理的記憶デバイスと第２論理的記憶デバイスとの間で、管理単位で、データを移動させるマイグレート実行部と、を備える。
【０００８】
本発明の一態様では、管理単位には、キャッシュメモリにおけるデータ管理単位であるセグメント単位が用いられ、更新管理部は、セグメント単位で、各論理的記憶デバイスの更新状態を、更新ビットマップによってそれぞれ管理する。
【０００９】
本発明の一態様では、更新管理部は、所定周期毎に、各論理的記憶デバイス毎に更新ビットマップをそれぞれ作成し、かつ、所定期間内に作成された複数の更新ビットマップの論理和に基づいて、所定期間内に更新されなかった非更新セグメントを検出するための非更新ビットマップを生成し、マイグレート制御部は、非更新ビットマップ及びファイル管理部により管理される各ファイルの情報に基づいて、非更新セグメントに記憶されているデータをマイグレート対象のデータとして特定するためのマイグレート対象ビットマップを作成し、このマイグレート対象ビットマップに基づいて、マイグレート対象のデータを第１論理的記憶デバイスと第２論理的記憶デバイスとの間で移動させるための指示をマイグレート実行部に発行する。
【００１０】
本発明の一態様では、マイグレート制御部は、非更新ビットマップに含まれる非更新セグメントのうち、予め設定されたマイグレーションポリシーに合致する非更新セグメントのみを、マイグレート対象ビットマップに登録する。
【００１１】
本発明の一態様では、マイグレート制御部は、マイグレート対象ビットマップに登録された非更新セグメント毎に、前記指示を発行する。
【００１２】
本発明の一態様では、マイグレート制御部は、マイグレート対象ビットマップを複数のセグメント範囲に分割し、これらセグメント範囲毎に、当該セグメント範囲に含まれている非更新セグメントについて一括して、前記指示を発行する。
【００１３】
本発明の一態様では、ファイルコントローラは、ファイル管理部と、ボリューム管理部及びマイグレート制御部を備えており、ブロックコントローラは、更新管理部及びマイグレート実行部を備えており、非更新ビットマップ及びマイグレート対象ビットマップは、ファイルコントローラとブロックコントローラとにより共有されている。
【００１４】
本発明の一態様では、ファイルコントローラのキャッシュメモリが接続される内部バスとブロックコントローラの他のメモリが接続される内部バスとは、ブリッジ回路を介して結合されており、非更新ビットマップ及びマイグレート対象ビットマップは、内部バスを介したメモリ間コピーを用いることにより、ファイルコントローラとブロックコントローラとに共有されている。
【００１５】
本発明の一態様では、更新管理部は、ファイルコントローラ内に設けられている。
【００１６】
本発明の他の観点に従う記憶制御装置を用いたデータマイグレーション方法は、ファイルコントローラ及びブロックコントローラを備えた記憶制御装置を用いて、データをマイグレートさせるためのデータマイグレーション方法であって、ファイルコントローラによって、第１物理的記憶デバイス上に設けられる第１論理的記憶デバイスと第２物理的記憶デバイス上に設けられる第２論理的記憶デバイスとを一つの仮想ボリュームとして結合させ、この仮想ボリュームを、上位装置からのファイルアクセス要求をキャッシュメモリを利用して処理するためのファイル管理部に提供するステップと、ブロックコントローラによって、各論理的記憶デバイスの更新状態を、所定周期毎に更新ビットマップをそれぞれ作成することにより、キャッシュメモリにおけるデータ管理単位であるセグメント単位で管理するステップと、ブロックコントローラによって、所定期間内に作成された複数の更新ビットマップの論理和に基づいて、所定期間内に更新されなかった非更新セグメントを検出するための非更新ビットマップを生成して記憶させるステップと、非更新ビットマップをファイルコントローラとブロックコントローラとが共有するステップと、ファイルコントローラによって、非更新ビットマップ及びファイル管理部により管理されている各ファイルの情報に基づいて、非更新セグメントに記憶されているファイルをマイグレート対象のデータとして特定するためのマイグレート対象ビットマップを作成して記憶させるステップと、マイグレート対象ビットマップをファイルコントローラとブロックコントローラとが共有するステップと、ファイルコントローラによって、マイグレート対象ビットマップに登録された非更新セグメントに記憶されているファイルへの更新を禁止させるステップと、ファイルコントローラによって、マイグレート対象ビットマップに登録された非更新セグメントに記憶されているデータを第１論理的記憶デバイスから第２論理的記憶デバイスに移動させるための指示を、ブロックコントローラに発行させるステップと、ブロックコントローラによって、発行された指示及びマイグレート対象ビットマップに基づいて、第１論理的記憶デバイスに記憶されたデータを、一つまたは複数のセグメント単位で、第２論理的記憶デバイスに移動させるステップと、ファイルコントローラによって、データの移動が完了した場合には、更新が禁止されたファイルの更新禁止を解除するステップと、を実行する。
【００１７】
本発明のさらに別の観点に従う記憶制御装置は、ファイルアクセスを担当するファイルコントローラと、ブロックアクセスを担当するブロックコントローラと、このブロックコントローラによりそれぞれ使用される高速物理的記憶デバイス及び低速物理的記憶デバイスとを備える。この記憶制御装置では、ファイルコントローラの有するキャッシュメモリとブロックコントローラの有する他のメモリとは、ファイルコントローラの内部バスとブロックコントローラの内部バスとをブリッジ回路を介して結合することにより接続されている。ファイルコントローラは、ファイルシステムと、ボリューム管理部及びマイグレート制御部を備え、ブロックコントローラは、更新管理部及びマイグレート実行部を備えている。
【００１８】
そして、ファイルシステムは、上位装置からのファイルアクセス要求をキャッシュメモリを利用して処理し、ボリューム管理部は、高速物理的記憶デバイス上に設けられる高速論理的記憶デバイスが前半部分に、低速物理的記憶デバイス上に設けられる低速論理的記憶デバイスが後半部分にそれぞれ位置するようにして、高速論理的記憶デバイスと低速論理的記憶デバイスとから一つの仮想ボリュームを生成し、この仮想ボリュームをファイル管理部に提供する。
【００１９】
更新管理部は、高速論理的記憶デバイス及び低速論理的記憶デバイスの更新状態をキャッシュメモリのデータ管理単位であるセグメント毎にそれぞれ管理し、所定周期毎に、各論理的記憶デバイスのそれぞれについて更新ビットマップを生成し、かつ、所定期間内に生成された各更新ビットマップの論理和に基づいて、所定期間内に更新されなかった非更新セグメントを検出するための非更新ビットマップを生成して他のメモリに記憶させ、他のメモリに記憶された非更新ビットマップは、メモリ間コピーによって、他のメモリからキャッシュメモリにコピーされる。
【００２０】
マイグレート制御部は、キャッシュメモリに記憶された非更新ビットマップに含まれる非更新セグメントに記憶されているファイルの属性をファイルシステムに問い合わせることにより、マイグレートさせるべきマイグレート対象セグメントを特定するためのマイグレート対象ビットマップを生成して、このマイグレート対象ビットマップをキャッシュメモリに記憶させ、キャッシュメモリに記憶されたマイグレート対象ビットマップは、メモリ間コピーによって、キャッシュメモリから他のメモリにコピーされる。
【００２１】
マイグレート制御部は、マイグレート対象セグメントに登録された非更新セグメントに記憶されているデータを、高速論理的記憶デバイスから低速記憶デバイスに移動させるための指示をマイグレート実行部に発行し、マイグレート実行部は、発行された指示及びマイグレート対象ビットマップに基づいて、高速論理的記憶デバイスに記憶されたデータを、一つまたは複数のセグメント単位で、低速論理的記憶デバイスに移動させ、ファイルシステムは、マイグレート対象データの移動が完了するまでの間、上位装置から当該マイグレート対象データへの更新を禁止する。
【００２２】
本発明の機能、手段、ステップの全部または一部は、例えば、マイクロコンピュータにより実行されるコンピュータプログラムとして構成可能な場合がある。そして、このコンピュータプログラムは、例えば、ハードディスク、光ディスク、半導体メモリ等の記憶媒体に固定して配布することができる。または、コンピュータプログラムをインターネット等の通信ネットワークを介して、配信することもできる。
【発明を実施するための最良の形態】
【００２３】
以下、図面に基づき、本発明の実施の形態を説明する。図１は、本実施形態の全体概念を示す説明図である。この記憶制御装置１は、例えば、「ファイルコントローラ」としてのNAS制御部２と、「ブロックコントローラ」としてのストレージ制御部３と、記憶部４とを備えて構成される。
【００２４】
NAS制御部２は、例えば、第１メモリＭ１と、非更新ビットマップ２Ａと、マイグレート対象ビットマップ２Ｂと、ファイル管理部２Ｃと、マイグレート制御部２Ｄ及びボリューム管理部２Ｅを備えて構成することができる。
【００２５】
第１メモリＭ１は、ストレージ制御部３内の第２メモリＭ２と接続されており、コマンド等を用いずに、メモリ間コピーによって記憶内容を転送可能となっている。第１メモリＭ１には、非更新ビットマップ２Ａ及びマイグレート対象ビットマップ２Ｂがそれぞれ記憶される。ここで、非更新ビットマップ２Ａは、ストレージ制御部３によって生成され、第１メモリＭ１にも記憶される。マイグレート対象ビットマップ２Ｂは、NAS制御部２によって生成され、第２メモリＭ２にも記憶される。各ビットマップ２Ａ，２Ｂについては、後述する。
【００２６】
ファイル管理部２Ｃは、「ファイルシステム」に該当する。ファイル管理部２Ｃは、「上位装置」としてのクライアントマシン６から発行されたファイルアクセス要求を処理するものである。なお、クライアントマシン６は、ホストコンピュータ（「ホスト」と略記する場合がある）と呼ぶこともできる。
【００２７】
マイグレート制御部２Ｄは、それぞれ異なるタイミングで作成された複数の非更新ビットマップ２Ａに基づいて、一度も更新されていない非更新セグメントを特定し、マイグレート対象ビットマップ２Ｂを作成する。マイグレート制御部２Ｄは、非更新セグメントに記憶されているファイルの属性情報をファイル管理部２Ｃに問合せ、マイグレートさせるべきセグメントを決定する。そして、マイグレート制御部２Ｄは、決定されたセグメントについてのマイグレート実行を、ストレージ制御部３に要求する。
【００２８】
ボリューム管理部２Ｅは、高速領域５Ａ及び低速領域５Ｂを有する仮想ボリューム５を生成し、ファイル管理部２Ｃに提供するものである。仮想ボリューム５の構成は、さらに後述する。
【００２９】
ストレージ制御部３は、例えば、第２メモリＭ２と、非更新ビットマップ３Ａと、マイグレート対象ビットマップ３Ｂと、入出力処理部（図中「I/O処理部」）３Ｃと、マイグレート実行部３Ｄ及び更新管理部３Ｅを備えて構成することができる。
【００３０】
第２メモリＭ２は、例えば、他のキャッシュメモリとして構成される。NAS制御部２の内部バスとストレージ制御部３の内部バスとは接続されているため、第２メモリＭ２と第１メモリＭ１との間で情報を共有することができる。第２メモリＭ２には、非更新ビットマップ３Ａ及びマイグレート対象ビットマップ３Ｂが記憶されている。上述のように、第２メモリＭ２内の非更新ビットマップ３Ａと第１メモリＭ１内の非更新ビットマップ２Ａとは同一内容であり、同様に、第２メモリＭ２内のマイグレート対象ビットマップ３Ｂと第１メモリＭ１内のマイグレート対象ビットマップ２Ｂとは同一内容である。
【００３１】
入出力処理部３Ｃは、NAS制御部２からの要求に従って、記憶部４内のボリューム４Ａまたは４Ｂにアクセスすることにより、所定のデータを各ボリューム４Ａ，４Ｂから読み出したり、所定のデータを各ボリューム４Ａ，４Ｂに書き込んだりする。
【００３２】
マイグレート制御部２Ｄは、マイグレート対象ビットマップ３Ｂに基づいて、セグメント単位で、データのマイグレートを実行するものである。データマイグレーション方法については後述する。
【００３３】
更新管理部３Ｅは、入出力処理部３Ｃによる仮想ボリューム５へのアクセスに基づいて、即ち、クライアント６による仮想ボリューム５の使用状況に基づいて、各ボリューム４Ａ，４Ｂ毎に非更新ビットマップ３Ａを作成する。更新管理部３Ｅは、例えば、毎日所定の時刻に、非更新ビットマップ３Ａを作成することができる。また、更新管理部３Ｅは、所定期間内に作成された非更新ビットマップ３Ａのみを第２メモリＭ２に保存させることができ、所定期間の過ぎた非更新ビットマップ３Ａは第２メモリＭ２内から削除させることもできる。
【００３４】
更新管理部３Ｅは、例えば、ボリュームレプリケーション機能やスナップショット作成機能に使用されることもできる。また、例えば、NAS制御部２がスナップショット作成を行うような場合、更新管理部３ＥをNAS制御部２内に設けることもできる。
【００３５】
記憶部４は、例えば、複数のディスクドライブ４Ｃ，４Ｄを備えている。第１のディスクドライブ４Ｃは、例えば、FC（Fibre Channel）ディスクのような比較的高速のデバイスとして構成される。第２のディスクドライブ４Ｄは、例えば、ATA（AT Attachment）ディスクのような比較的低速のデバイスとして構成される。この場合、ディスクドライブ４Ｃの方が、ディスクドライブ４Ｄよりも高速かつ高性能である。なお、ディスクドライブ４Ｃ，４Ｄは、ハードディスクドライブに限定されない。例えば、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ等の種々のデバイスを利用することができる。
【００３６】
例えば、一つまたは複数の第１ディスクドライブ４Ｃの有する記憶領域によって、第１物理的記憶デバイス４Ｅが生成される。RAID（Redundant Array of Independent Disks）構成のレベルによっても相違するが、複数の記憶領域を集めて冗長化することにより、物理的な記憶デバイス４Ｅが生成される。この記憶デバイス４Ｅを、第１物理的記憶デバイス４Ｅと呼ぶ。そして、例えば、この第１物理的記憶デバイス４Ｅから一つまたは複数の第１論理的記憶デバイス４Ａを生成することができる。
【００３７】
上記同様に、一つまたは複数の第２ディスクドライブ４Ｄの有する記憶領域によって、第２物理的記憶デバイス４Ｆが生成される。そして、第２物理的記憶デバイス４Ｆに基づいて、一つまたは複数の第２論理的記憶デバイス４Ｂを生成することができる。これらの各論理的記憶デバイス４Ａ，４Ｂは、論理ボリューム（Logical Unit）とも呼ばれる。
【００３８】
仮想ボリューム５は、第１論理的記憶デバイス４Ａと第２論理的記憶デバイス４Ｂとを仮想的に結合させることにより、構成されている。この仮想化は、ボリューム管理部２Ｅによって行われる。ファイル管理部２Ｃは、ボリューム管理部２Ｅを介して、この仮想ボリューム５の構成を認識することができる。
【００３９】
仮想ボリューム５は、その前半部分に位置する高速領域５Ａと、その後半部分に位置する低速領域５Ｂとに大別される。高速領域５Ａは、高速な論理的記憶デバイスである第１論理的記憶デバイス４Ａに対応付けられている。低速領域５Ｂは、低速な論理的記憶デバイスである第２論理的記憶デバイス４Ｂに対応付けられている。高速領域５Ａは、クライアント６によって現在使用されている情報価値の高いデータ群が記憶されており、低速領域５Ｂには、情報価値の低下したデータ群が記憶されている。
【００４０】
このように、仮想ボリューム５は、それぞれ性能の異なる複数種類の論理的記憶デバイス４Ａ，４Ｂから構成されているが、クライアント６は、仮想ボリューム５の詳細な構造まで認識することなく、一つのボリュームとして利用可能である。
【００４１】
次に、この記憶制御装置１の動作を説明する。クライアント６から仮想ボリューム５に記憶されている所定のファイルの読出しを要求された場合、NAS制御部２は、論理的記憶デバイス４Ａまたは４Ｂにおける格納先アドレス等を明示して、ストレージ制御部３に所定のファイルの読出しを要求する。ストレージ制御部３の入出力処理部３Ｃは、所定のファイルに対応するデータを論理的記憶デバイス４Ａまたは４Ｂのいずれかから読出して、NAS制御部２内の第１メモリＭ１に記憶させる。
【００４２】
クライアント６から仮想ボリューム５へ所定のファイル（ファイルデータ）の書込みが要求された場合、NAS制御部２は、論理的記憶デバイス４Ａの書込み先アドレス等を明示して、ストレージ制御部３に所定のファイルの書込みを要求する。入出力処理部３Ｃは、ファイルデータを論理的記憶デバイス４Ａに記憶させる。
【００４３】
更新管理部３Ｅは、高速領域５Ａ（即ち、論理的記憶デバイス４Ａ）へのデータ書込みを監視しており、更新されたセグメントの更新フラグを”１”にセットする。セグメントとは、キャッシュメモリ（この例では、第２メモリＭ２）上でデータを管理するための単位である。更新管理部３Ｅは、第１論理的記憶デバイス４Ａの各セグメント毎に、更新されたか否かを識別するための更新フラグをセットすることにより、更新ビットマップを生成する。同様に、更新管理部３Ｅは、第２論理的記憶デバイス４Ｂにおける更新状況を管理することもできる。このように、更新管理部３Ｅは、例えば、毎日の更新状況を、各論理的記憶デバイス４Ａ，４Ｂの各セグメント毎にそれぞれ管理する。なお、キャッシュメモリ上のデータ管理単位としては、セグメントに限らず、他のサイズ（ブロック単位等）で管理してもよい。各セグメントは、それぞれ複数のブロックから構成可能である。
【００４４】
例えば、一週間等の所定期間分の更新ビットマップが蓄積されると、更新管理部３Ｅは、各更新ビットマップのＯＲを演算することにより、所定期間更新されていないセグメントを検出する。ここでは、この所定期間更新されていないセグメントを非更新セグメントと呼ぶ。更新管理部３Ｅは、各更新ビットマップのＯＲ演算することにより、非更新ビットマップ３Ａを生成し、第２メモリＭ２に記憶させる。この非更新ビットマップ３Ａは、メモリ間コピーにより、第１メモリＭ１にも記憶される。なお、NAS制御部２が、各更新ビットマップに基づいて、非更新ビットマップ２Ａを生成し、この非更新ビットマップ２Ａを第２メモリＭ２にコピーさせる構成でもよい。
【００４５】
マイグレート制御部２Ｄは、第１メモリＭ１に記憶された非更新ビットマップに基づいて、非更新セグメントに記憶されているデータの属性を、ファイル管理部２Ｃに問い合わせることができる。ファイル管理部２Ｃは、問い合わせされた非更新セグメント内に、データの全部または一部が記憶されているファイルを特定し、この特定されたファイルの属性を回答する。属性としては、例えば、ファイルサイズ、ファイルの所有者、参照日時等を挙げることができる。
【００４６】
マイグレート制御部２Ｄは、非更新セグメントに記憶されているデータ（ファイルデータ）の属性に基づいて、非更新ビットマップ２Ａに登録されている各非更新セグメントのうち、マイグレート対象となるセグメントを決定する。例えば、マイグレート制御部２Ｄは、所定期間更新されていないセグメントであっても、最近参照されているセグメントの場合は、マイグレート対象から除外することができる。
【００４７】
なお、マイグレート制御部２Ｄは、データの属性を問わずに、全ての非更新セグメントをマイグレート対象として選択することもできる。非更新ビットマップ２Ａに登録されている非更新セグメントのうち、いずれの非更新セグメントをマイグレート対象セグメントとして選択するかは、マイグレーションポリシーによって定めることができる。そして、マイグレーションポリシーは、ユーザが自由に定義することもできる。
【００４８】
このようにして、マイグレート制御部２Ｄにより、マイグレート対象のセグメントを特定したビットマップ２Ｂが生成される。このマイグレート対象ビットマップ２Ｂは、第２メモリＭ２にもコピーされる。
【００４９】
マイグレート実行部３Ｄは、第２メモリＭ２内のマイグレート対象ビットマップ３Ｂに基づいて、マイグレート対象のセグメントを１つずつ、または複数個まとめて、データマイグレーションを実行する。即ち、マイグレート実行部３Ｄは、マイグレート対象のセグメントに記憶されているデータを、第１論理的記憶デバイス４Ａから第２論理的記憶デバイス４Ｂにコピーする。これにより、仮想ボリューム５において、高速領域５Ａ内のデータが低速領域５Ｂに移され、高速領域５Ａの空き容量が増大する。そして、空き容量の増加した高速領域５Ａ（第１論理的記憶デバイス４Ａ）には、情報価値の高い新たなファイルデータが書き込まれる。
【００５０】
本実施形態は、このように構成されるため、以下の効果を奏する。本実施形態では、ファイルそのものをファイル単位で直接移動させるのではなく、論理的記憶デバイス４Ａ，４Ｂに記憶されているファイルデータをセグメント単位で移動させ、結果的に、擬似的にファイル単位の移動を実現する。従って、従来技術のように、ファイルツリーの全てを検索してマイグレート対象を特定し、ファイル毎に移動させる必要がない。これにより、NAS制御部２がマイグレート対象を特定するための負荷を軽減することができ、NAS制御部２のコンピュータ資源を本来のNASサービスに割り当てることができ、使い勝手も向上する。
【００５１】
本実施形態では、セグメント単位で移動の可否を判断し、セグメント単位でデータを移動させるため、移動前後の整合性を維持するための更新排他制御を行う期間を短くすることができる。従って、移動対象のデータを速やかに利用することができ、使い勝手が向上する。
【００５２】
本実施形態では、マイグレート対象のデータを特定するための処理を、ストレージ制御部３による非更新セグメントを検出する処理と、NAS制御部２による非更新セグメントの中からマイグレート対象セグメントを選択する処理との２つの処理に分割し、これら非更新セグメントの検出処理とマイグレート対象セグメントの選択処理とを、非同期で実行させる構成とした。従って、NAS制御部２とストレージ制御部３とが協働で、マイグレート対象の特定処理を行うことができ、NAS制御部２に負荷が集中するのを防止することができる。
【００５３】
本実施形態では、NAS制御部２は、マイグレート対象のデータを特定し、実際のデータマイグレーションはストレージ制御部３で実行する。従って、NAS制御部２がファイルのデータを読み出して、この読出したデータを移動先の論理的記憶デバイス４Ｂに書き込む必要がない。即ち、データマイグレーションは、NAS制御部２を経由することなく、ストレージ制御部３内で実行される。これにより、データマイグレーションに関するNAS制御部２の負荷をより一層低減することができる。
【００５４】
本実施形態では、スナップショット作成等に利用される既存の更新管理部３Ｅを用いて、マイグレート対象を特定するための前処理（非更新セグメントの検出処理）を行う構成とした。従って、ストレージ制御部３の構成を大幅に変更することなく、セグメント単位のデータマイグレーションを実現することができる。
【００５５】
本実施形態では、NAS制御部２内の第１メモリＭ１とストレージ制御部３内の第２メモリＭ２との間で、非更新ビットマップ２Ａ，３Ａ及びマイグレート対象ビットマップ２Ｂ，３Ｂを共有する構成とした。従って、例えば、コマンドを用いて情報交換を行う必要がなく、情報共有のための構成を簡素化することができる。そして、各制御部２，３に負担をかけずに、非更新ビットマップ２Ａ，３Ａ及びマイグレート対象ビットマップ２Ｂ，３Ｂを共有することができる。
【００５６】
本実施形態では、各更新ビットマップはストレージ制御部３内で保持し、これら各更新ビットマップから生成される非更新ビットマップ３Ａ（２Ａ）を、NAS制御部２と共有する構成とした。従って、第１メモリＭ１の記憶領域を効率的に使用できる。なお、NAS制御部２内で非更新ビットマップ２Ａを作成する構成でもよい。以下、本実施形態を詳細に説明する。
【実施例１】
【００５７】
図２は、記憶制御装置１０の全体構成を示す構成説明図である。先に、図１との対応関係を説明すると、図２中の記憶制御装置１０は図１中の記憶制御装置１に、図２中のNASノード１００は図１中のNAS制御部２に、図２中のストレージコントローラ２００は図１中のストレージ制御部３に、図２中の記憶部３００は図１中の記憶部４に、図２中のクライアント２０は図１中のクライアント６に、それぞれ対応する。
【００５８】
記憶制御装置１０は、例えば、NASノード１００と、ストレージコントローラ２００及び記憶部３００を備えて構成される。記憶制御装置１０は、例えば、LAN等の通信ネットワークCN１を介して、一つまたは複数のクライアントマシン２０と、管理端末３０とに接続されている。クライアントマシン２０は、記憶制御装置１０を利用してファイルの入出力を行うためのコンピュータ装置である。管理端末３０は、記憶制御装置１０を管理するためのコンピュータ装置である。管理端末３０は、例えば、記憶制御装置１０の構成変更等を指示したり、記憶制御装置１０の各種状態を確認することができる。
【００５９】
NASノード１００は、例えば、マイクロプロセッサ（以下、「プロセッサ」）１１０と、メモリ１２０と、ネットワークインターフェース（以下、インターフェースを「I/F」と略記する場合がある）部１３０と、内部バス１４０と、ブリッジ回路１５０とを備えて構成される。
【００６０】
プロセッサ１１０は、所定のコンピュータプログラムを読み込んで、所定の機能を実現するものである。プロセッサ１１０は、NASとしてのデータ処理サービスを実現するほかに、後述のように、データマイグレーション処理を行う。
【００６１】
メモリ１２０は、例えば、RAM（Random Access Memory）やフラッシュメモリ等から構成される。メモリ１２０内には、LVM定義テーブルＴ１と非更新ビットマップＴ２及びマイグレート対象ビットマップＴ３が記憶されている。メモリ１２０は、プロセッサ１１０等ともに内部バス１４０に接続されている。また、メモリ１２０は、内部バス１４０及びブリッジ回路１５０を介して、ストレージコントローラ２００の内部バス２４０にも接続されている。従って、メモリ１２０は、ストレージコントローラ２００内のキャッシュメモリ２２０にも接続されており、コマンドを用いることなく、各メモリ１２０，２２０間で、各種情報Ｔ１〜Ｔ３を共有可能となっている。
【００６２】
ネットワークI/F部１３０は、通信ネットワークCN１を介して、各クライアント２０や管理端末３０と通信を行うためのものである。ブリッジ回路１５０は、NASノード１００の内部バス１４０とストレージコントローラ２００の内部バス２４０とを接続するための回路である。
【００６３】
ストレージコントローラ２００は、例えば、プロセッサ２１０と、キャッシュメモリ２２０と、ドライブI/F部２３０及び内部バス２４０とを備えて構成される。プロセッサ２１０は、所定のコンピュータプログラムを読み込んで、所定の機能を実現する。所定の機能としては、ブロック単位のデータの入出力処理や、更新管理処理、マイグレート実行処理等が挙げられる。
【００６４】
キャッシュメモリ２２０は、クライアント２０によって使用されるユーザデータや、各種の制御情報、管理情報を記憶するものである。キャッシュメモリ２２０には、上述のメモリ１２０と同様に、LVM定義テーブルＴ１と非更新ビットマップＴ２及びマイグレート対象ビットマップＴ３がそれぞれ記憶されている。
【００６５】
記憶部３００は、例えば、ディスクアレイエンクロージャとして構成されるもので、複数のディスクドライブ３１０，３１１を備えている。第１の種類のディスクドライブ３１０は、例えば、FCディスク等のように、比較的高速かつ高性能のドライブである。第２の種類のディスクドライブ３１１は、例えば、ATAディスク等のように、比較的低速のドライブである。
【００６６】
本実施例では、FCディスク３１０から構成される論理的記憶デバイス３３０（図３参照）内に、新しいユーザデータを格納し、ATAディスク３１１から構成される論理的記憶デバイス３３１（図３参照）内に、情報価値の低下した旧データを保存する。情報価値の低下した旧データを直ちに削除することはできないため、FCディスク３１０の数よりも多い数のATAディスク３１１が記憶部３００に設けられている。
【００６７】
図３は、NASノード１００のソフトウェア構成及び階層記憶の構成を模式的に示す説明図である。NASノード１００は、例えば、ファイルシステム（NASのOS）１１１と、論理ボリュームマネージャ（「LVM」と略記）１１２及びマイグレートツール１１３とを備えている。
【００６８】
ファイルシステム１１１は、ファイル群を管理し、ファイルの共有サービスをクライアント２０に提供するものである。LVM１１２は、仮想ボリューム３４０を管理するためのものである。マイグレートツール１１３は、マイグレート制御を行うものである。
【００６９】
本記憶制御装置１０の提供する階層記憶について説明する。第１論理的記憶デバイス３３０と第２論理的記憶デバイス３３１とを論理的に結合させることにより、仮想的な一つのボリューム３４０が構成されている。
【００７０】
第１論理的記憶デバイス３３０は、第１ディスクドライブ３１０（以下、FCディスク３１０とも呼ぶ）に由来する。一つまたは複数のFCディスク３１０の提供する記憶領域をRAID構成に基づいて仮想化することにより、第１物理的記憶デバイス３２０（図中「FC領域３２０」）が形成される。この第１物理的記憶デバイス３２０の全部または一部の記憶領域から、第１論理的記憶デバイス３３０が生成される。
【００７１】
同様に、第２論理的記憶デバイス３３１は、第２ディスクドライブ３１１（以下、ATAディスクとも呼ぶ）に由来する。一つまたは複数のATAディスク３１１の提供する記憶領域をRAID構成に基づいて仮想化することにより、第２物理的記憶デバイス３２１（図中「ATA領域３２１」）が生成される。この第２物理的記憶デバイス３２１の全部または一部の記憶領域から、第２論理的記憶デバイス３３１が生成される。なお、以下の説明では、各論理的記憶デバイス３３０，３３１を論理ボリューム３３０，３３１と呼ぶ場合がある。
【００７２】
上述の通り、仮想ボリューム３４０は、その前半部分に論理ボリューム３３０を、その後半部分に論理ボリューム３３１を配置するようにして、構成されている。前半、後半とは、仮想ボリューム３４０の先頭アドレスに近い領域を前半部分と呼び、前半部分に続く他の領域を後半部分と呼ぶ。
【００７３】
図４は、仮想ボリューム３４０内の構成を模式的に示す説明図である。上述の通り、仮想ボリューム３４０の前半部分には、FCディスク３１０に由来する論理ボリューム３３０が対応付けられている。この論理ボリューム３３０には、ｉノード管理領域３３０Ａ及び第１ファイルデータ領域３３０Ｂが設けられている。ｉノード管理領域３３０Ａの詳細は、さらに後述する。第１ファイルデータ領域３３０Ｂは、ユーザデータを記憶するための記憶領域である。第１ファイルデータ領域３３０Ｂには、クライアント２０によって使用されている比較的情報価値の高いユーザデータが記憶されている。
【００７４】
仮想ボリューム３４０の後半部分には、ATAディスク３１１に由来する論理ボリューム３３１が対応付けられている。この論理ボリューム３３１には、第２ファイルデータ領域３３１Ａが設けられている。第２ファイルデータ領域３３１Ａには、情報価値の低下したユーザデータが保存されている。
【００７５】
第１ファイルデータ領域３３０Ｂの先頭アドレスをＳＡ１、第２ファイルデータ領域３３１Ａの先頭アドレスをＳＡ２とする。LVM１１２は、仮想ボリューム３４０の構成を認識しており、仮想ボリューム３４０のアドレス空間が、実際にはどの論理ボリューム３３０，３３１のどのアドレス空間に割り当てられているのかを把握している。LVM１１２は、仮想ボリューム３４０内の前半部分のアドレス空間と後半部分のアドレス空間が連続するように、論理ブロックアドレス（LBA）やセグメント番号を管理する。なお、LVM１１２は、スナップショット機能等を備えることもできる。スナップショットとは、指示された時点における記憶内容の静止化イメージである。
【００７６】
図５は、ｉノード管理領域３３０Ａ等の構成を示す説明図である。ｉノード管理領域３３０Ａには、仮想ボリューム３４０内に記憶されたファイル群を管理するための情報が記憶されている。例えば、ｉノード管理領域３３０Ａには、ｉノード番号と、他のｉノード情報と、ATAフラグと、セグメント番号（図中では、番号を「＃」で表記する場合がある）と、オフセットアドレスが対応付けられて記憶されている。
【００７７】
ｉノード番号とは、ファイルシステム上でファイルを識別するための番号である。仮想ボリューム３４０内の各ファイル（ユーザデータ）は、ｉノード番号によって、その格納位置が特定される。
【００７８】
他のｉノード情報とは、各ｉノード番号で特定される各ファイル（ディレクトリを含む場合もある）の属性を示す情報である。ファイルの属性情報としては、例えば、所有者名、ファイルサイズ、アクセスタイム等を挙げることができる。
【００７９】
ATAフラグとは、そのｉノード番号で特定されるファイルが、各論理ボリューム３３０，３３１のいずれに記憶されているかを識別するための情報である。本実施例では、データマイグレーションが実行されると、高速な論理ボリューム３３０内のデータは、低速な論理ボリューム３３１に移される。ファイルデータが論理ボリューム３３０に記憶されている場合、そのATAフラグには”０”がセットされる。ファイルデータが論理ボリューム３３１に記憶されている場合、そのATAフラグには”１”がセットされる。従って、ATAフラグは、データ格納先の論理ボリュームを特定する役割と、マイグレートの実行の有無を識別する役割を担う。
【００８０】
セグメント番号及びオフセットアドレスは、ｉノード番号で特定されたファイルの格納先を示すためのアドレス情報である。本実施例では、ATAフラグとセグメント番号及びオフセットアドレスによって、ファイルデータの格納先を特定する。上述のように、ATAフラグの値によって、ファイルデータが格納されている論理ボリュームを特定することができる。そして、セグメント番号とオフセットアドレスによって、その論理ボリュームのどこにファイルデータが格納されているかを特定することができる。
【００８１】
なお、ｉノード管理領域３３０Ａで管理されるセグメント番号と、各ビットマップＴ２，Ｔ３，Ｔ４のセグメント番号とは完全に一致している。即ち、NASノード１００で管理するセグメント番号と、ストレージコントローラ２００で管理するセグメント番号とは一致しており、NASノード１００からストレージコントローラ２００にセグメント番号等を通知するだけで、セグメント単位のデータ移動を行えるようになっている。
【００８２】
セグメント番号にセグメントサイズ（例えば、１MB）を乗算した値が、ATAフラグで示された論理ボリューム内での格納先を示す。図５に示す例では、ｉノード番号”２”のルートディレクトリは、ATAフラグが”０”、セグメント番号が”000001h”、セグメントサイズが１MB、オフセットアドレスが”aa”であるから、このルートディレクトリは、論理ボリューム３３０内のセグメント000001hの先頭からaa分だけオフセットした位置を先頭アドレスとして、記憶されていることになる。即ち、このルートディレクトリは、第１ファイルデータ領域３３０Ｂに記憶されている。
【００８３】
同様に、ｉノード番号”１００”を有する”/usr/dir1/file1.txt”は、ATAフラグが”０”、セグメント番号が”000025h”、オフセットアドレスが”dd”であるから、このファイルのデータは、第１ファイルデータ領域３３０Ｂの先頭アドレスＳＡ１から、1MB×25＋ddだけ離れた箇所に記憶されている。このファイル”/usr/dir1/file1.txt”を論理ボリューム３３０から論理ボリューム３３１に移動させる場合、このファイルのATAフラグには”１”がセットされる。また、このファイルのセグメント番号及びオフセットアドレスは、コピー先のセグメント番号及びオフセットアドレスに、それぞれ変更される。
【００８４】
論理ボリューム３３１の先頭アドレスは、ＳＡ２である。従って、第２ファイルデータ領域３３１Ａ内では、ＳＡ２＋セグメント番号×セグメントサイズ＋オフセットアドレスによって、格納先が特定される。
【００８５】
図６は、LVM定義テーブルＴ１の構成を示す説明図である。LVM定義テーブルＴ１は、仮想ボリューム３４０を管理するためのものである。上述のように、NASノード１００及びストレージコントローラ２００は、同一内容のLVM定義テーブルＴ１をそれぞれ保持している。LVM定義テーブルＴ１は、例えば、FC領域管理テーブルＴ１ＡとATA領域管理テーブルＴ１Ｂとを備えて構成される。図６中、ファイルシステム１１１を「FS」と略記する。
【００８６】
FC領域管理テーブルＴ１Ａは、仮想ボリューム３４０を構成するFC領域を管理するためのテーブルである。このテーブルＴ１Ａは、例えば、ファイルシステム１１１が認識するLUN（Logical Unit Number）と、NASノード１００が認識するFC領域を識別するための情報と、NASノード１００が認識するFC領域上のLUNと、ストレージコントローラ２００が認識するFC領域上のLUNとを対応付けることにより、構成されている。
【００８７】
ファイルシステム１１１が認識するLUNとは、仮想ボリューム３４０に設定されているLUNである。図３では一つの仮想ボリューム３４０のみを示しているが、本実施例では、複数の仮想ボリューム３４０を設けることができる。
【００８８】
NASノード１００が認識するFC領域を識別するための情報とは、仮想ボリューム３４０におけるFC領域部分、即ち、論理ボリューム３３０に対応付けられている前半部分を識別するための情報である。
【００８９】
NASノード１００が認識するFC領域上のLUNとは、仮想ボリューム３４０の前半部分を構成するFC領域に対応付けられている論理ボリューム３３０にアクセスするための情報である。論理ボリューム３３０，３３１は、それぞれ２種類のLUNを備える。一つのLUNは、NASノード１００から認識される値であり、他の一つは、ストレージコントローラ２００から認識される値である。NASノード１００が認識するFC領域上のLUNは、例えば、”ｃ＃ｔ＃ｄ＃”の形式で表現される。”ｃ＃”は、ドライブI/Fの番号を示し、”ｔ＃”は、SCSI（Small Computer System Interface）ターゲット番号を示す。”ｄ＃”は、LUNの値を示す。
【００９０】
ストレージコントローラ２００が認識するFC領域上のLUNは、上述のように、ストレージコントローラ２００内において使用されるLUNを示す。
【００９１】
ATA領域管理テーブルＴ１Ｂは、仮想ボリューム３４０を構成するATA領域を管理するためのテーブルである。このATA領域管理テーブルＴ１Ｂも、上述のFC領域管理テーブルＴ１Ａと同様に、構成されている。即ち、ATA領域管理テーブルＴ１Ｂは、例えば、ファイルシステム１１１が認識するLUNと、NASノード１００が認識するATA領域を識別するための情報と、NASノード１００が認識するATA領域上のLUNと、ストレージコントローラ２００が認識するATA領域上のLUNとを対応付けることにより、構成されている。
【００９２】
LVM定義テーブルＴ１の構成から明らかなように、本実施例の仮想ボリューム３４０は、そのFC領域及びATA領域の構成を変更可能となっている。即ち、仮想ボリューム３４０には、その前半部分のFC領域に、FCディスク３１０にそれぞれ由来する複数の論理ボリューム３３０を対応付けることができる。また、仮想ボリュームの後半部分のATA領域にも、ATAディスク３１１にそれぞれ由来する複数の論理ボリューム３３１を対応付けることができる。
【００９３】
つまり、後述の実施例に示すように、複数の論理ボリューム３３０を結合して、仮想ボリューム３４０内のFC領域を拡張することができる。また、複数の論理ボリューム３３１を結合して、仮想ボリューム３４０内のATA領域を拡張することもできる。
【００９４】
FC領域及びATA領域のサイズを拡張する場合、それぞれの領域内で、セグメント番号が連続するように、セグメント番号が管理される。即ち、ある論理ボリューム３３０（１）と別の論理ボリューム３３０（２）とを結合させて仮想ボリューム３４０内のFC領域を構成する場合、論理ボリューム３３０（１）の終端セグメント番号の次の値を、論理ボリューム３３０（２）の先頭セグメント番号とする。
【００９５】
FC領域内及びATA領域内で、セグメント番号がそれぞれ連続していればよく、FC領域とATA領域との間で、セグメント番号が連続している必要はない。ビットマップＴ２〜Ｔ３も、各領域単位でそれぞれ管理される。
【００９６】
次に、記憶制御装置１０の動作について説明する。まず、図７は、非更新ビットマップＴ２を生成するための処理を示すフローチャートである。この処理は、ストレージコントローラ２００によって実行される。なお、図中ではステップを「Ｓ」と略記する。また、各フローチャートは、本発明の理解及び実施に必要な程度で処理の概要を示しており、実際のプログラムとは相違する。
【００９７】
図８は、図７に示す処理の流れを模式的に示す説明図である。以下、図７及び図８を適宜参照しながら、非更新ビットマップ生成処理を説明する。ストレージコントローラ２００は、所定の周期で（例えば、毎日）、仮想ボリューム３４０の更新状態を管理する更新ビットマップＴ４を作成する（Ｓ１）。
【００９８】
この更新ビットマップＴ４は、FC領域及びATA領域内のセグメント毎に、”１”または”０”の値をセットすることにより、生成される。更新フラグに”１”がセットされた場合は、そのセグメントが更新されたことを示す。更新フラグに”０”がセットされている場合は、そのセグメントが更新されていないことを示す。ストレージコントローラ２００は、クライアント２０によって更新されたセグメントについて、更新フラグを”１”にセットする。
【００９９】
このようにして作成された更新ビットマップＴ４は、キャッシュメモリ２２０内に記憶される（Ｓ２）。図８において、符号Ｔ４に添えられた（）内の数字は、作成の順番（作成日）を示す。ストレージコントローラ２００は、所定期間であるｎ日間が経過すると、このｎ日間に作成された各更新ビットマップＴ４（１）〜Ｔ４（ｎ）の各セグメント毎にそれぞれＯＲ演算を行い、非更新ビットマップＴ２を作成する（Ｓ３）。
【０１００】
非更新ビットマップＴ２では、あるセグメントがｎ日間内に１回でも更新されている場合、そのセグメントの非更新フラグには”０”がセットされる。別のセグメントがｎ日間内に１回も更新されなかった場合、そのセグメントの非更新フラグには”１”がセットされる。
【０１０１】
このようにして生成された非更新ビットマップＴ２は、キャッシュメモリ２２０に記憶され、そして、キャッシュメモリ２２０からNASノード１００内のメモリ１２０にもコピーされる（Ｓ４）。ストレージコントローラ２００は、ｎ＋１日間以上経過した古い更新ビットマップＴ４をキャッシュメモリ２２０から削除する（Ｓ５）。
【０１０２】
図８を参照する。詳細は別のフローチャートと共に説明するが、マイグレートツール１１３は、メモリ１２０に記憶された非更新ビットマップＴ２に基づいて、非更新セグメントに記憶されているデータの属性をファイルシステム１１１に問い合わせる。マイグレートツール１１３は、データの属性が予め設定されたポリシー１１３Ａに合致するか否かを判断する。
【０１０３】
マイグレートツール１１３は、ポリシー１１３Ａに合致する非更新セグメントをマイグレート対象のセグメントとして選択し、このマイグレート対象のセグメントに””１”をセットする。このようにして、マイグレート対象ビットマップＴ３が生成され、メモリ１２０に記憶される。そして、このマイグレート対象ビットマップＴ３は、メモリ１２０からキャッシュメモリ２２０にコピーされる。
【０１０４】
図９は、マイグレーションポリシー１１３Ａを設定するために使用されるマイグレーションポリシー設定テーブルＴ５の一例を示す説明図である。マイグレーションポリシー設定テーブルＴ５は、例えば、予め登録されている一つまたは複数のポリシー内容と、各ポリシーを選択するか否かを示す選択フラグとを対応付けることにより構成される。
【０１０５】
ポリシーの内容としては、例えば、「ｎ２（ｎ２≦ｎ）日間以上参照されていないファイルを移動させる。」、「アーカイブ対象として予め指定されているファイルを移動させる。」、「ファイルサイズがＤＳ１以下のファイルを移動させる。」、「ファイルサイズがＤＳ２以上のファイルを移動させる。」、「予め指定された特定の所有者のファイルを移動させる。」等を挙げることができる。ポリシーの内容は、予め設定しておくこともできるし、ユーザによる自由な設定を許可することもできる。また、クライアント２０または管理端末３０からポリシーの内容を設定可能な構成とすることもできる。
【０１０６】
ユーザは、マイグレーションポリシー設定テーブルＴ５に登録されているポリシーの中から、所望のポリシーをいずれか一つまたは複数選択することができる。ユーザにより選択されたポリシーには、その選択フラグに”１”がセットされる。選択されたポリシーを結合することにより、マイグレーションポリシー１１３Ａが生成される。なお、ユーザは、必ずしも一つ以上のポリシーを選択する必要はない。一つもポリシーが選択されなかった場合、非更新ビットマップＴ２内の全ての非更新セグメントが、データマイグレーションの対象となる。
【０１０７】
図１０は、仮想ボリューム３４０内に設けられるファイルツリーに、新たなファイルを追加する場合の処理を示すフローチャートである。クライアント２０がファイルの追加を指示すると（Ｓ１１）、NASノード１００のファイルシステム１１１は、新たに追加されるファイルのためのｉノードをｉノード管理領域３３０Ａに確保する（Ｓ１２）。
【０１０８】
ファイルシステム１１１は、新たに追加されるファイルのデータを格納する範囲（記憶領域）を、仮想ボリューム３４０内のFC領域内に確保する（Ｓ１３）。即ち、ファイルシステム１１１は、格納すべきデータのサイズに応じて、仮想ボリューム３４０の有するFC領域内の空きセグメントまたは使用されているセグメント内の未使用領域を、必要なだけ確保する。
【０１０９】
続いて、ファイルシステム１１１は、ファイルデータを格納する範囲に関する情報（図中、格納先情報と示す）を特定する（Ｓ１４）。即ち、ファイルシステム１１１は、ファイルデータが記憶される先頭セグメントの番号とオフセットアドレス及びファイルサイズをそれぞれ特定する。
【０１１０】
次に、ファイルシステム１１１は、Ｓ１４で特定された格納先情報を仮想ボリューム３４０上の格納先情報に変換し（Ｓ１５）、LVM１１２にファイルデータの格納を指示する（Ｓ１６）。この格納指示には、仮想ボリューム３４０におけるデータ格納先の先頭アドレスと、ファイルサイズ及びファイルデータが含まれている。
【０１１１】
LVM１１２は、仮想ボリューム３４０における格納先情報を、LVM定義テーブルＴ１を参照して、論理ボリューム３３０に記憶させるための情報に変換し、ストレージコントローラ２００にファイルデータの格納を指示する（Ｓ１７）。この指示には、格納先の論理ボリューム３３０を特定する情報と、格納先の論理ボリューム３３０における格納先先頭アドレスと、ファイルサイズ及びファイルデータが含まれる。
【０１１２】
ストレージコントローラ２００は、LVM１１２からの指示を受領すると、LVM１１２から受け取ったファイルデータを、LVM１１２から指示された所定の領域に記憶させる（Ｓ１８）。ストレージコントローラ２００は、ファイルデータの記憶されたセグメントについて、更新ビットマップＴ４の更新フラグを”１”にセットし（Ｓ１９）、LVM１１２に処理完了を通知する（Ｓ２０）。
【０１１３】
LVM１１２は、ストレージコントローラ２００からの処理完了を受領すると、ファイルシステム１１１に処理完了を報告する（Ｓ２１）。ファイルシステム１１１は、LVM１１２からファイルデータの記憶が正常に完了した旨の報告を受け取ると、この新たに書き込まれたファイルデータに関するｉノード情報を更新する（Ｓ２２）。これにより、クライアント２０は、ファイルの追加が完了した旨を認識する（Ｓ２３）。
【０１１４】
図１１は、仮想ボリューム３４０内のファイルを更新する場合の処理を示すフローチャートである。ファイル更新の前に、クライアント２０は、仮想ボリューム３４０から対象のファイルデータを読み出し、そのファイルを部分的に書き換える等して、ファイルの更新を指示する。ファイルデータの読出し処理は、ファイルの更新処理から容易に理解されるため、説明を省略する。
【０１１５】
クライアント２０がファイルの更新を要求すると（Ｓ３１）、ファイルシステム１１１は、更新を要求されたファイルのｉノード情報に基づいて、ファイルデータの更新範囲を特定する（Ｓ３２）。以下、ファイルデータ中の更新される範囲のデータを更新データと呼ぶ。ファイルシステム１１１は、更新データのセグメント番号及びオフセットアドレスを、仮想ボリューム３４０におけるアドレス情報に変換し（Ｓ３３）、LVM１１２に更新データの格納を指示する（Ｓ３４）。この指示には、仮想ボリュームにおけるアドレス情報とデータサイズ及び更新データが含まれている。
【０１１６】
LVM１１２は、ファイルシステム１１１からの指示に基づいて、仮想ボリューム３４０上のアドレス情報を論理ボリューム３３０におけるアドレス情報に変換し、ストレージコントローラ２００に更新データの格納を指示する（Ｓ３５）。この指示には、論理ボリューム３３０におけるアドレス情報とデータサイズ及び更新データが含まれる。
【０１１７】
ストレージコントローラ２００は、LVM１１２からの指示に従って、論理ボリューム３３０の指定されたアドレスに更新データを格納させる（Ｓ３６）。そして、ストレージコントローラ２００は、更新データが格納されたセグメントについて、更新ビットマップＴ４の更新フラグを”１”にセットし（Ｓ３７）、LVM１１２に処理完了を通知する（Ｓ３８）。
【０１１８】
LVM１１２は、ストレージコントローラ２００から処理完了を通知されると、ファイルシステム１１１に処理完了を報告する（Ｓ３９）。ファイルシステム１１１は、LVM１１２からの処理完了報告を受領すると、更新データに関するファイルのｉノード情報を更新する（Ｓ４０）。そして、クライアント２０は、ファイルの更新が正常に完了したことを確認する（Ｓ４１）。
【０１１９】
図１２は、データマイグレーション処理を示すフローチャートである。この処理は、例えば、一日に一回実行させることができる。まず、データマイグレーションの実施に先立って、マイグレート対象ビットマップＴ３が生成される（Ｓ５０）。
【０１２０】
即ち、マイグレートツール１１３は、非更新ビットマップＴ２及びマイグレーションポリシー１１３Ａに基づいて、非更新セグメントのうちマイグレーションポリシー１１３Ａに合致するセグメントを抽出し、マイグレート対象ビットマップＴ３を生成する。マイグレート対象ビットマップＴ３を生成する際に、マイグレートツール１１３は、非更新セグメントにデータが記憶されているファイルの属性について、ファイルシステム１１１に問い合わせることができる。このようにして生成されたマイグレート対象ビットマップＴ３は、NASノード１００内のメモリ１２０に記憶され、メモリ１２０からストレージコントローラ２００内のキャッシュメモリ２２０にコピーされる。
【０１２１】
マイグレートツール１１３は、メモリ１２０内に記憶されているマイグレート対象ビットマップＴ３を参照し（Ｓ５１）、最初のセグメントを一つ指定する（Ｓ５２）。ファイルシステム１１１は、マイグレートツール１１３によりマイグレート対象として指定されたセグメントに関して、ｉノード管理領域３３０Ａを参照し（Ｓ５３）、指定されたセグメントにデータを格納しているファイルを特定する（Ｓ５４）。ファイルシステム１１１は、指定されたセグメントにデータを格納しているファイルについて、「更新排他ロック」を設定する（Ｓ５５）。更新排他ロックとは、クライアント２０によるファイルへの更新を禁止する処理である。データマイグレート中に、移動元のデータが更新されるのを防止し、移動の前後でデータの整合性を維持するために、更新を禁止する。
【０１２２】
マイグレートツール１１３は、マイグレート対象のファイルへの更新が禁止されたことを確認すると、ストレージコントローラ２００に向けて、データのマイグレート実行を指示する（Ｓ５６）。この指示には、ストレージコントローラ２００によって認識されているFC領域上のLUN及びセグメント番号が含まれる。
【０１２３】
ストレージコントローラ２００は、マイグレートツール１１３からの指示を受領すると、LVM定義テーブルＴ１を参照し（Ｓ５７）、指定されたFC領域に対応するATA領域を特定する（Ｓ５８）。そして、ストレージコントローラ２００は、そのATA領域において、次の空きセグメントの番号を確保する（Ｓ５９）。ATA領域では、空いているセグメントから順番に使用され、隙間が空かないようにデータが記憶されていく。
【０１２４】
ストレージコントローラ２００は、移動元のセグメントからデータを読出し、このデータをＳ５９で確保した空きセグメントに記憶させる（Ｓ６０）。そして、ストレージコントローラ２００は、データのコピーされたセグメントの番号、即ち、データの移動先のセグメント番号をマイグレートツール１１３に通知する（Ｓ６１）。
【０１２５】
マイグレートツール１１３は、ストレージコントローラ２００からデータ移動先のセグメント番号を受領すると、移動されたファイルに関する情報の切替を、ファイルシステム１１１に指示する（Ｓ６２）。この指示には、Ｓ６１で通知されたデータ移動先のセグメント番号が含まれる。
【０１２６】
ファイルシステム１１１は、移動されたファイル、即ち、Ｓ５５で更新排他ロックの設定されたファイルについて、ｉノード領域３３０Ａに登録されている情報を一部書き換える（Ｓ６３）。具体的には、ファイルシステム１１１は、移動されたファイルのATAフラグを”０”から”１”に変更し、格納先のセグメント番号を移動先のセグメント番号に変更する。また、ファイルシステム１１１は、移動元のセグメント番号、即ち、FC領域上でマイグレート対象として指定されたセグメント番号のステータスを、空きセグメントに変更する。そのセグメントは、別のデータの格納に直ちに使用可能となる。
【０１２７】
ファイルシステム１１１が、Ｓ５５で設定した更新排他ロックを解除すると（Ｓ６４）、マイグレートツール１１３は、Ｓ５２で選択された一つのセグメントのデータ移動が完了したことを確認する（Ｓ６５）。マイグレート対象ビットマップＴ３に登録されたマイグレート対象のセグメントを全て移動させるまで、Ｓ５２〜Ｓ６５のステップが繰り返される。
【０１２８】
本実施例は上述のように構成されるので、以下の効果を奏する。本実施例では、ファイルデータをセグメント単位で移動させるため、移動元のボリュームに格納されたファイルツリーを全検索等する必要がない。これにより、NASノード１００の負荷を低減することができ、データマイグレーション時のNASノード１００の性能低下を抑制して、使い勝手を高めることができる。
【０１２９】
本実施例の記憶制御装置１０では、複数の論理ボリューム３３０，３３１を結合させて大きな仮想ボリューム３４０を構築可能であるから、仮想ボリューム３４０内に、多量のファイルを有するファイルツリーが構築されやすい。しかし、比較的大きなファイルツリーが形成された場合でも、本実施例によれば、NASノード１００の負荷増大を抑制して、効率的にデータマイグレートを行うことができる。
【０１３０】
本実施例では、セグメント単位で移動の可否を判断し、セグメント単位でデータを移動させるため、更新排他ロックの設定時間を短縮できる。従って、クライアント２０は、移動後のデータを速やかに利用することができ、使い勝手が向上する。
【０１３１】
本実施例では、セグメント単位でデータを移動させるため、データの移動が完了した場合に、移動元のセグメントを空きセグメントとして直ちに再利用することができ、使い勝手が向上する。
【０１３２】
本実施例では、ストレージコントローラ２００による非更新セグメントの検出処理（非更新ビットマップＴ２の生成処理）と、NASノード１００によるマイグレート対象セグメントの選択処理（マイグレート対象ビットマップＴ３の生成処理）とを非同期に実行させることにより、データマイグレート対象を決定する。従って、NASノード１００とストレージコントローラ２００とが協働で、マイグレート対象を特定することができ、NASノード１００に負荷が集中するのを防止することができる。
【０１３３】
本実施例では、NASノード１００は、マイグレート対象のデータを特定し、実際のデータマイグレーションはストレージコントローラ２００で実行する。従って、NASノード１００の負荷をより一層軽減することができる。
【０１３４】
本実施例では、スナップショット作成等にも利用される既存の更新ビットマップＴ４をを利用して、マイグレート対象を特定するための前処理（非更新セグメントの検出処理）を行う。従って、ストレージコントローラ２００の構成を大幅に変更することなく、セグメント単位のデータマイグレーションを実現することができる。
【０１３５】
本実施例では、NASノード１００内のメモリ１２０とストレージコントローラ２００内のキャッシュメモリ２２０との間で、非更新ビットマップＴ２及びマイグレート対象ビットマップＴ３を共有する構成とした。従って、例えば、コマンドを用いて各ビットマップＴ２，Ｔ３を転送する必要がない。これにより、比較的簡易な構成で、かつ、NASノード１００及びストレージコントローラ２００の負荷を増大させずに、各ビットマップＴ２，Ｔ３を共有することができる。
【０１３６】
本実施例では、各更新ビットマップＴ４はストレージコントローラ２００内で保持し、これら各更新ビットマップから生成される非更新ビットマップＴ２を、NASノード１００と共有する。従って、NASノード１００のメモリ資源を効率的に使用できる。
【実施例２】
【０１３７】
図１３，図１４に基づいて、第２実施例を説明する。本実施例では、マイグレート対象ビットマップＴ３を複数のエリアに分割し、各エリア毎にセグメント単位でのデータ移動を行う。本実施例及び後述の各実施例は、第１実施例の変形例に相当する。
【０１３８】
図１３は、マイグレート対象ビットマップＴ３について、複数のセグメント範囲を設定する様子を示す説明図である。図１３の上側に示すように、マイグレート対象ビットマップＴ３に、セグメント範囲AS１〜AS３を設定し、各セグメント範囲AS１〜AS３毎に、セグメント単位でのデータマイグレートを実行する。
【０１３９】
図１３の下側には、セグメント範囲のサイズを決定するための処理を示すフローチャートが示されている。この処理は、図１４中のＳ７１の詳細を示す。まず、マイグレートツール１１３は、クライアント２０からファイルシステム１１１への現在のアクセス要求の負荷を検出する（Ｓ７１１）。
【０１４０】
マイグレートツール１１３は、検出された負荷に基づいて、閾値セグメント数を決定する（Ｓ７１２）。閾値セグメント数とは、セグメント範囲AS１〜AS３に含まれるマイグレート対象セグメントの上限値である。マイグレート対象のセグメントが多いほど、そのセグメント範囲のデータマイグレーションが完了するまでの時間が長くなるため、各セグメント範囲AS１〜AS３に含まれるマイグレート対象セグメントの数を制限する。
【０１４１】
そして、マイグレートツール１１３は、各セグメント範囲AS１〜AS３内のマイグレート対象セグメントの数が、閾値セグメント数以下となるように、各セグメント範囲AS１〜AS３を決定する（Ｓ７１３）。なお、上記の例では、NASノード１００の現在の負荷状態に基づいて、閾値セグメント数を算出するものと述べたが、これに限らず、閾値セグメント数を固定値としてもよいし、ユーザによって指定可能としてもよい。また、セグメント範囲の数は、３個に限られず、２個以上であればよい。
【０１４２】
図１４は、本実施例によるデータマイグレーション処理を示す。この処理は、例えば、一日に一回実行させることができる。前記同様に、データマイグレーションの実施に先立って、マイグレート対象ビットマップＴ３が生成される（Ｓ７０）。マイグレートツール１１３は、図１３と共に述べたように、マイグレート対象ビットマップＴ３に複数のセグメント範囲AS１〜AS３を設定する（Ｓ７１）。
【０１４３】
マイグレートツール１１３が最初のセグメント範囲AS１を一つ指定すると（Ｓ７２）、ファイルシステム１１１は、ｉノード管理領域３３０Ａを参照し（Ｓ７３）、指定されたセグメント範囲AS１に含まれるマイグレート対象セグメントにファイルデータが記憶されているファイル群を特定する（Ｓ７４）。ファイルシステム１１１は、その特定されたファイル群について、更新排他ロックを設定する（Ｓ７５）。
【０１４４】
マイグレートツール１１３は、ストレージコントローラ２００に向けて、データのマイグレート実行を指示する（Ｓ７６）。この指示には、ストレージコントローラ２００によって認識されているFC領域上のLUN及びセグメント範囲AS１が含まれる。マイグレートツール１１３は、セグメント範囲AS１の先頭セグメント番号及び最終セグメント番号を示すことにより、または、先頭セグメント番号及びセグメント数を示すことにより、セグメント範囲AS１をストレージコントローラ２００に通知することができる。
【０１４５】
前記実施例と同様に、ストレージコントローラ２００は、マイグレートツール１１３からの指示を受領すると、LVM定義テーブルＴ１を参照し（Ｓ７７）、指定されたFC領域に対応するATA領域を特定する（Ｓ７８）。ストレージコントローラ２００は、指示されたセグメント範囲AS１に含まれるマイグレート対象セグメントの中から、データを移動させるセグメントを降順で決定する（Ｓ７９）。
【０１４６】
ストレージコントローラ２００は、ATA領域において、次の空きセグメントの番号を確保し（Ｓ８０）、移動元のセグメントのデータを確保した空きセグメントに記憶させる（Ｓ８１）。ストレージコントローラ２００は、このデータがコピーされたセグメントの番号を、新セグメント番号リストに登録する（Ｓ８２）。新セグメント番号リストは、データ移動先のセグメントの番号を特定するための情報である。
【０１４７】
ストレージコントローラ２００は、指定されたセグメント範囲AS１について、各マイグレート対象セグメントのデータ移動が完了したか否かを判定する（Ｓ８３）。指定されたセグメント範囲AS１内の全てのマイグレート対象セグメントについて、ATA領域への移動が完了するまで、Ｓ７９〜Ｓ８２のステップが繰り返され、新セグメント番号リストが更新されていく。指定されたセグメント範囲AS１についてデータの移動が完了すると、ストレージコントローラ２００は、新セグメント番号リストをマイグレートツール１１３に通知する（Ｓ８４）。
【０１４８】
マイグレートツール１１３は、ストレージコントローラ２００から受領した新セグメント番号リストをファイルシステム１１１に通知し、移動されたファイルに関する情報の切替を指示する（Ｓ８５）。
【０１４９】
ファイルシステム１１１は、指定されたセグメント範囲AS１に含まれるマイグレート対象セグメントを降順で選択し（Ｓ８６）、選択されたセグメントに関するATAフラグ及びセグメント番号をそれぞれ更新する（Ｓ８７）。移動前のセグメント番号は、新セグメント番号リストに登録された移動先セグメント番号に書き換えられる。また、ファイルシステム１１１は、ATAフラグを”１”に更新したセグメントを、空きセグメントとして登録する。
【０１５０】
ファイルシステム１１１は、ATAフラグ及びセグメント番号を更新したセグメントについて、更新排他ロックを解除する（Ｓ８８）。ファイルシステム１１１は、指定されたセグメント範囲AS１内の全ての更新排他ロックが解除されるまで、Ｓ８６〜Ｓ８８のステップを繰り返す。
【０１５１】
ファイルシステム１１１が、セグメント範囲AS１についての処理を完了すると、マイグレートツール１１３は、Ｓ７２で選択されたセグメント範囲AS１内のデータ移動が完了したことを確認する（Ｓ９０）。全てのセグメント範囲についてデータ移動が完了するまで、Ｓ７２〜Ｓ９０のステップが繰り返される。
【０１５２】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、マイグレート対象ビットマップＴ３に複数のセグメント範囲AS１〜AS３を設定し、セグメント範囲毎にデータを移動させる構成とした。従って、複数のマイグレート対象セグメントを一括して処理することができる。これにより、FC領域内における空きセグメントの数を速やかに増加させることができる。
【０１５３】
また、複数のマイグレート対象セグメントを一括して扱うため、NASノード１００とストレージコントローラ２００との間の情報交換頻度を低減し、NASノード１００の負荷をより一層低減することができる。
【０１５４】
さらに、複数のセグメントのデータを一括して移動させるため、データマイグレーションに要する時間を低減することができる。
【０１５５】
また、本実施例では、各セグメント範囲AS１〜AS３に含まれるマイグレート対象セグメントの数を調整するため、各セグメント範囲のデータ移動が完了するまでの時間を、比較的短くすることができる。
【実施例３】
【０１５６】
図１５〜図１７に基づいて、第３実施例を説明する。本実施例では、仮想ボリューム３４０の構成を変更する場合について説明する。LVM定義テーブルＴ１の説明で述べたように、仮想ボリューム３４０の構成は変更可能である。
【０１５７】
図１５は、NASノード１００のソフトウェア構成及び階層記憶の構成を模式的に示す説明図である。仮想ボリューム３４０のFC領域には、それぞれFCディスク３１０に由来する複数の論理ボリューム３３０（LU0，LU2）が対応付けられている。仮想ボリューム３４０のATA領域には、それぞれATAディスク３１１に由来する複数の論理ボリューム３３１（LU1，LU3）が対応付けられている。
【０１５８】
図１６は、FC領域及びATA領域を複数の論理ボリュームから構成する場合のセグメントの管理状態を模式的に示す説明図である。図１６（ａ）は、FC領域を一つの論理ボリューム（LU0）から構成し、ATA領域を一つの論理ボリューム３３１（LU1）から構成する場合を示す。この場合、FC領域の先頭セグメント番号は、論理ボリューム３３０（LU0）の先頭セグメント番号に一致し、FC領域の終端セグメント番号は、論理ボリューム３３０（LU0）の終端セグメント番号に一致する。同様に、ATA領域の先頭セグメント番号は、論理ボリューム３３１（LU1）の先頭セグメント番号に一致し、ATA領域の終端セグメント番号は、論理ボリューム３３１の終端セグメント番号に一致する。
【０１５９】
図１６（ｂ）は、ATA領域に、別の論理ボリューム３３１（LU3）を追加した場合を示す。ATA領域の先頭セグメント番号に変化はない。ATA領域の終端セグメント番号は、追加された論理ボリューム３３１（LU3）の終端セグメント番号となる。ここで、留意すべきは、ATA領域の前側に位置する論理ボリューム３３１（LU1）の終端セグメント番号に続けて、追加された論理ボリューム３３１（LU3）の先頭セグメント番号が位置する点である。即ち、ATA領域内のセグメントは、セグメント番号が連続するように管理されている。
【０１６０】
同様に、FC領域に別の論理ボリューム３３０（LU2）を追加する場合も、FC領域内でセグメント番号が連続するようにして管理される。なお、各ビットマップＴ２，Ｔ３，Ｔ４は、FC領域とATA領域のそれぞれに対応するように管理される。
【０１６１】
本実施例では、FC領域のサイズには限界値が存在する。即ち、FC領域は、ATA領域の先頭アドレスとして設定されたＳＡ２まで、サイズを拡張することができる。仮に、ＳＡ２の値が２TBであるとすると、現在のFC領域に１TBのボリュームを割り当てている場合は、さらに１TBのボリュームを追加可能である。ＳＡ２の値をより大きく設定すれば、その分だけFC領域のサイズを拡張することができる。なお、ATA領域は、記憶制御装置１０が管理可能な最大サイズまで拡張可能である。
【０１６２】
図１７は、仮想ボリューム３４０の容量を増加するための処理を示すフローチャートである。この処理は、例えば、管理端末３０から指示して実行させることができる。まず、記憶制御装置１０は、FC領域またはATA領域のいずれに対して容量の増加が指示されたのかを判定する（Ｓ１１１）。
【０１６３】
FC領域の容量増加が指示された場合、記憶制御装置１０は、FC領域に容量を追加可能であるか否かを判定する（Ｓ１１２）。FC領域のサイズが限界値（ＳＡ２）に達している場合（S112:NO）、記憶制御装置１０は、容量の増加ができない旨を管理端末３０に通知する（Ｓ１１３）。
【０１６４】
FC領域に容量を追加可能な場合（S112:YES）、記憶制御装置１０は、新たな容量をFC領域に追加し、FC領域内のセグメント番号を連続させ（Ｓ１１４）、LVM定義テーブルＴ１を更新させる（Ｓ１１５）。
【０１６５】
ATA領域の容量追加が指示された場合、記憶制御装置１０は、新たな容量をATA領域に追加し、ATA領域内のセグメント番号を連続させ（Ｓ１１６）、LVM定義テーブルＴ１を更新させる（Ｓ１１７）。
【０１６６】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。これに加えて、本実施例では、クライアント２０による仮想ボリューム３４０の利用状況等に応じて、仮想ボリューム３４０の構成を変更することができ、使い勝手が向上する。
【０１６７】
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、各実施例を適宜組み合わせることができる。
【図面の簡単な説明】
【０１６８】
【図１】本発明の実施形態の概念を示す説明図である。
【図２】記憶制御装置のハードウェア構成を示す説明図である。
【図３】NASノードのソフトウェア構成及び階層記憶の構成を示す説明図である。
【図４】仮想ボリュームの構成を示す説明図である。
【図５】ｉノード管理領域の構成を示す説明図である。
【図６】LVM定義テーブルの構成を示す説明図である。
【図７】非更新ビットマップを生成する処理を示すフローチャートである。
【図８】更新ビットマップから非更新ビットマップを経てマイグレート対象ビットマップを生成する様子を示す説明図である。
【図９】マイグレーションポリシー設定テーブルを示す説明図である。
【図１０】ファイル追加処理を示すフローチャートである。
【図１１】ファイル更新処理を示すフローチャートである。
【図１２】データマイグレーション処理を示すフローチャートである。
【図１３】第２実施例に係り、（ａ）は、マイグレート対象ビットマップを複数のセグメント範囲毎に処理する様子を、（ｂ）はセグメント範囲を設定するためのフローチャートを、それぞれ示す。
【図１４】データマイグレーション処理を示すフローチャートである。
【図１５】本発明の第３実施例に係り、仮想ボリュームの各領域を複数の論理ボリュームから構成可能であることを示す階層記憶の説明図である。
【図１６】領域の容量を追加する場合のセグメント番号の様子を示す説明図である。
【図１７】領域に容量を追加する場合の処理を示すフローチャートである。
【符号の説明】
【０１６９】
１…記憶制御装置、２…制御部、２Ａ，３Ａ…非更新ビットマップ、２Ｂ，３Ｂ…マイグレート対象ビットマップ、２Ｃ…ファイル管理部、２Ｄ…マイグレート制御部、２Ｅ…ボリューム管理部、３…ストレージ制御部、３Ｃ…入出力処理部、３Ｄ…マイグレート実行部、３Ｅ…更新管理部、４…記憶部、４Ａ，４Ｂ…論理ボリューム（論理的記憶デバイス）、４Ｃ，４Ｄ…ディスクドライブ、４Ｅ，４Ｆ…物理的記憶デバイス、５…仮想ボリューム、５Ａ…高速領域、５Ｂ…低速領域、６…クライアントマシン、１０…記憶制御装置、２０…クライアントマシン、３０…管理端末、１００…NASノード、１１０…プロセッサ、１１１…ファイルシステム、１１２…論理ボリュームマネージャ（LVM）、１１３…マイグレートツール、１１３Ａ…マイグレーションポリシー、１２０…メモリ、１３０…ネットワークインターフェース部、１４０…内部バス、１５０…ブリッジ回路、２００…ストレージコントローラ、２１０…プロセッサ、２２０…キャッシュメモリ、２３０…ドライブインターフェース部、２４０…内部バス、３００…記憶部、３１０，３１１…ディスクドライブ、３２０，３２１…物理的記憶デバイス、３３０，３３１…論理ボリューム（論理的記憶デバイス）、３３０Ａ…ｉノード管理領域、３３０Ｂ，３３１Ａ…ファイルデータ領域、３４０…仮想ボリューム、AS１〜AS３…セグメント範囲、Ｍ１，Ｍ２…メモリ、Ｔ１…LVM定義テーブル、Ｔ２…非更新ビットマップ、Ｔ３…マイグレート対象ビットマップ、Ｔ４…更新ビットマップ、Ｔ５…マイグレーションポリシー設定テーブル
【図１】
2007226596.tif 000003
【図２】
2007226596.tif 000004
【図３】
2007226596.tif 000005
【図４】
2007226596.tif 000006
【図５】
2007226596.tif 000007
【図６】
2007226596.tif 000008
【図７】
2007226596.tif 000009
【図８】
2007226596.tif 000010
【図９】
2007226596.tif 000011
【図１０】
2007226596.tif 000012
【図１１】
2007226596.tif 000013
【図１２】
2007226596.tif 000014
【図１３】
2007226596.tif 000015
【図１４】
2007226596.tif 000016
【図１５】
2007226596.tif 000017
【図１６】
2007226596.tif 000018
【図１７】
2007226596.tif 000019