(57)【要約】【課題】上位装置に専用のＡＰＩを必要としなくても、重複したファイルの記憶を防げるようにする。【解決手段】  一以上の第一の論理記憶デバイスに記憶される複数のファイルの内容にそれぞれ固有の値である複数の内容固有値が算出される。複数の内容固有値に二以上の同一の内容固有値が含まれているか否かが判定される。二以上の同一の内容固有値がある場合、それら二以上の内容固有値のうちの第一の内容固有値に対応した第一のファイルのアクセス先が、それら二以上の内容固有値のうちの第二の内容固有値に対応した第二のファイルが記憶されている位置に切り替えられる。【選択図】図１７
2008242788.tif 000002
【特許請求の範囲】
【請求項１】
計算機と、
複数のファイルが記憶される一以上の第一の論理記憶デバイスを備えた第一のストレージシステムと
を備え、
前記計算機が、
複数のファイルの内容にそれぞれ固有の値である複数の内容固有値を算出する固有値算出部と、
前記複数のファイルにそれぞれ対応した複数の内容固有値を前記第一のストレージシステムに送信する固有値送信部と
を備え、
前記第一のストレージシステムが、
前記複数の内容固有値に二以上の同一の内容固有値が含まれているか否かを判定する重複判定部と、
二以上の同一の内容固有値がある場合、それら二以上の内容固有値のうちの第一の内容固有値に対応した第一のファイルのアクセス先を、それら二以上の内容固有値のうちの第二の内容固有値に対応した第二のファイルが記憶されている位置に切り替える切替制御部と
を備える、
コンピュータシステム。
【請求項２】
前記固有値算出部は、前記複数のファイルをアーカイブ対象とする契機で、前記複数の内容固有値を算出する、
請求項１記載のコンピュータシステム。
【請求項３】
前記固有値算出部は、前記複数のファイルをアーカイブ対象とする契機で、前記複数のファイルが記憶されている前記一以上の第一の論理記憶デバイスの更新を前記第一のストレージシステムに禁止させる、
請求項２記載のコンピュータシステム。
【請求項４】
前記複数の内容固有値にそれぞれ対応付けられた複数の保持期限があり、
前記切替制御部は、前記二以上の同一の内容固有値にそれぞれ対応した二以上の保持期限のうち、第一の保持期限に比して遅い第二の保持期限に対応した前記第二のファイルが記憶されている位置に、前記第一の保持期限に対応した前記第一のファイルのアクセス先を切り替える、
請求項１記載のコンピュータシステム。
【請求項５】
前記第一のストレージシステムに、一以上の第二の論理記憶デバイスを備えた第二のストレージシステムが接続され、
前記第一のストレージシステムが、
前記一以上の第二の論理記憶デバイスにそれぞれ対応付けられた一以上の仮想的な論理記憶デバイスと、
前記一以上の第一の論理記憶デバイスに記憶されている各ファイルの実体をマイグレーション先の前記一以上の仮想的な論理記憶デバイスを介して前記一以上の第二の論理記憶デバイスに書込むマイグレーション実行部と
を更に備え、
前記マイグレーション実行部が、前記二以上の同一の内容固有値にそれぞれ対応した二以上のファイルのうち、前記第一のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれにも書込まず、前記第二のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれかに書込み、
前記切替制御部が、前記第一のファイルのアクセス先を、前記第二のファイルの実体が書込まれた位置にする、
請求項１記載のコンピュータシステム。
【請求項６】
前記マイグレーションの開始前は、前記複数のファイルを記憶する前記一以上の第一の論理記憶デバイスの各々が更新不可であり、前記マイグレーションの完了後は、前記一以上の仮想的な論理記憶デバイスの各々は更新可であるが、前記マイグレーションの対象となった前記複数のファイルの各々は更新不可である、
請求項５記載のコンピュータシステム。
【請求項７】
前記複数の内容固有値にそれぞれ対応付けられた複数の保持期限があり、
前記切替制御部は、前記二以上の同一の内容固有値にそれぞれ対応した二以上の保持期限のうち、第一の保持期限に比して遅い第二の保持期限に対応した前記第二のファイルが記憶されている位置に、前記第一の保持期限に対応した前記第一のファイルのアクセス先を切り替える、
請求項５記載のコンピュータシステム。
【請求項８】
前記切替制御部は、更に、前記一以上の第二の論理記憶デバイスのデバイス特性に基づいて、アクセス先の切替を制御する、
請求項７記載のコンピュータシステム。
【請求項９】
前記複数の内容固有値にそれぞれ対応付けられた複数の保持期限があり、
前記切替制御部は、前記二以上の同一の内容固有値にそれぞれ対応した二以上のファイルのうち、最も遅い保持期限に対応した第一のファイルと他のファイルである第二のファイルとのマイグレーション先が、第一種のデバイス特性を有する第一の第二論理記憶デバイスに対応した第一の仮想的な論理記憶デバイスであり、前記第二のファイルの保持期限に比して保持期限が遅い第三のファイルのマイグレーション先が、前記第一種のデバイス特性に比して優れた第二種のデバイス特性を有する第二の第二論理記憶デバイスに対応した第二の仮想的な論理記憶デバイスである場合、前記第二のファイルのアクセス先を前記第三のファイルの実体が記憶される位置に切り替え、
前記マイグレーション実行部は、前記第一のファイルの実体を前記第一の仮想的な論理記憶デバイスを介して前記第一の第二論理記憶デバイスに書き、前記第二のファイルの実体を前記第一の第二論理記憶デバイスに書き込まず、前記第三のファイルの実体を前記第二の仮想的な論理記憶デバイスを介して前記第二の第二論理記憶デバイスに書込む、
請求項７記載のコンピュータシステム。
【請求項１０】
前記切替制御部は、以下の（１）及び（２）の少なくとも一方を実行する、
（１）前記第一の第二論理記憶デバイスからの前記第一のファイルの実体の読出しが不可能な場合、前記第一のファイルのアクセス先を前記第三のファイルの実体が記憶されている位置に切替える、
（２）前記第二の第二論理記憶デバイスからの前記第三のファイルの実体の読出しが不可能な場合、前記第三のファイルのアクセス先を前記第一のファイルの実体が記憶されている位置に切替える、
請求項９記載のコンピュータシステム。
【請求項１１】
前記計算機が、記憶領域と、完全性チェック部を更に備え、
前記第一のストレージシステムが、前記計算機から受信した前記複数の内容固有値を記憶する記憶領域を更に備え、
前記固有値算出部が、前記複数の内容固有値を前記計算機の記憶領域に格納し、
前記完全性チェック部は、前記複数のファイルから選択されたファイルに対応する、前記計算機の記憶領域に記憶されている前記複数の内容固有値のうちの内容固有値と、前記第一のストレージシステムの前記記憶領域に記憶されている、前記選択されたファイルに対応する内容固有値とを比較する、
請求項１記載のコンピュータシステム。
【請求項１２】
前記第一のストレージシステムが、節約容量通知部を更に備え、
前記節約容量通知部が、前記第一のファイルのアクセス先が切替えられたことにより節約された記憶容量を算出し、その記憶容量を示す情報を前記計算機に通知する、
請求項１記載のコンピュータシステム。
【請求項１３】
前記切替制御部が、前記複数のファイルにそれぞれ対応した複数のレコードを有する切替管理テーブルを更新することで、アクセス先の切替を行い、
一つのファイルに対応する一つの前記レコードには、レコードＩＤと、そのファイルの位置情報と、参照先のレコードＩＤとが記録されるフィールドがあり、
前記切替制御部が、前記第一のファイルに対応した第一のレコードにおいて、前記参照先のレコードＩＤを、前記第二のファイルに対応した第二のレコード上のレコードＩＤに更新する、
請求項１記載のコンピュータシステム。
【請求項１４】
前記第一のストレージシステムに、一以上の第二の論理記憶デバイスを備えた第二のストレージシステムが接続され、
前記第一のストレージシステムが、
前記一以上の第二の論理記憶デバイスにそれぞれ対応付けられた一以上の仮想的な論理記憶デバイスと、
前記一以上の第一の論理記憶デバイスに記憶されている各ファイルの実体をマイグレーション先の前記一以上の仮想的な論理記憶デバイスを介して前記一以上の第二の論理記憶デバイスに書込むマイグレーション実行部と、
アクセス制御部と
を更に備え、
前記切替管理テーブルの一つのレコードには、ファイルの保持期限と、ファイルのアクセス属性とが記録され、
前記固有値算出部は、前記複数のファイルをアーカイブ対象とする契機で、前記複数のファイルが記憶されている前記一以上の第一の論理記憶デバイスの更新を前記第一のストレージシステムに禁止させ、
前記マイグレーション実行部が、前記二以上の同一の内容固有値にそれぞれ対応した二以上のファイルのうち、前記第一のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれにも書込まず、前記第二のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれかに書込み、
前記切替制御部は、前記二以上の同一の内容固有値にそれぞれ対応した二以上の保持期限のうち、第一の保持期限に比して遅い第二の保持期限に対応した前記第二のファイルの前記第二のレコード上の参照先レコードＩＤを、前記第一の保持期限に対応した前記第一のファイルの前記第一のレコード上のＩＤに更新し、且つ、前記第一及び第二のレコード上のアクセス属性をリードオンリーに設定し、
前記アクセス制御部は、前記第一及び第二のレコード上の位置情報が示す位置を指定したライトアクセスを受けても、その位置に対する書込みを実行しない、
請求項１３記載のコンピュータシステム。
【請求項１５】
複数のファイルが記憶される一以上の第一の論理記憶デバイスと、
前記複数のファイルの内容にそれぞれ固有の値である複数の内容固有値に二以上の同一の内容固有値が含まれているか否かを判定する重複判定部と、
二以上の同一の内容固有値がある場合、それら二以上の内容固有値のうちの第一の内容固有値に対応した第一のファイルのアクセス先を、それら二以上の内容固有値のうちの第二の内容固有値に対応した第二のファイルが記憶されている位置に切り替える切替制御部と
を備えるストレージシステム。
【請求項１６】
一以上の第二の論理記憶デバイスを備えた外部のストレージシステムが接続され、
前記一以上の第二の論理記憶デバイスにそれぞれ対応付けられた一以上の仮想的な論理記憶デバイスと、
前記一以上の第一の論理記憶デバイスに記憶されている各ファイルの実体をマイグレーション先の前記一以上の仮想的な論理記憶デバイスを介して前記一以上の第二の論理記憶デバイスに書込むマイグレーション実行部と
を更に備え、
前記マイグレーション実行部が、前記二以上の同一の内容固有値にそれぞれ対応した二以上のファイルのうち、前記第一のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれにも書込まず、前記第二のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれかに書込み、
前記切替制御部が、前記第一のファイルのアクセス先を、前記第二のファイルの実体が書込まれた位置にする、
請求項１５記載のストレージシステム。
【請求項１７】
前記複数の内容固有値にそれぞれ対応付けられた複数の保持期限があり、
前記切替制御部は、前記二以上の同一の内容固有値にそれぞれ対応した二以上の保持期限のうち、第一の保持期限に比して遅い第二の保持期限に対応した前記第二のファイルが記憶されている位置に、前記第一の保持期限に対応した前記第一のファイルのアクセス先を切り替える、
請求項１６記載のストレージシステム。
【請求項１８】
一以上の第一の論理記憶デバイスに記憶される複数のファイルの内容にそれぞれ固有の値である複数の内容固有値を算出し、
複数の内容固有値に二以上の同一の内容固有値が含まれているか否かを判定し、
二以上の同一の内容固有値がある場合、それら二以上の内容固有値のうちの第一の内容固有値に対応した第一のファイルのアクセス先を、それら二以上の内容固有値のうちの第二の内容固有値に対応した第二のファイルが記憶されている位置に切り替える、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子的なファイルの記憶制御技術に関する。
【背景技術】
【０００２】
例えば、ＮＡＳ（Network Attached Storage）ノード（例えばファイルサーバ）がファイルを管理し、そのファイルの実体は、ＮＡＳノード内或いはＮＡＳノード外の記憶装置に格納される。
【０００３】
一般に、ファイルの内容が同じであっても、ファイル名が異なっていれば、記憶装置に記憶される。この場合、全く同じ内容のファイル（つまり、内容が完全に重複したファイル）が記憶装置に記憶されるので、その分、無駄に記憶容量が消費されることになる。そこで、重複したファイルの記憶を防ぐための記憶制御技術として、例えば、特許文献１及び２に開示の技術がある。特許文献１及び２には、例えば以下の開示がある。
【０００４】
ホストと記憶装置がある。ホストには、アプリケーションと、専用のＡＰＩ（Application
Program Interface）とがある。記憶装置は、その専用のＡＰＩとやり取りする。ホストのＡＰＩは、アプリケーションからファイルの格納要求を受けた場合、そのファイルのファイル名と後述のコンテンツアドレスとの対応付けが管理されていなければ、そのファイルを記憶装置に送信し、一方、その対応付けが管理されていれば、そのコンテンツアドレスを記憶装置に送信する。記憶装置は、ホストのＡＰＩからファイルを受信した場合、ファイルの中身（コンテンツ）からハッシュ値を生成する。そのハッシュ値が、コンテンツアドレスである。記憶装置は、受信したファイルを記憶し、生成されたコンテンツアドレスと、そのファイルの物理的な記憶位置とを対応付けて管理し、そのコンテンツアドレスをホストのＡＰＩに返す。ホストのＡＰＩは、記憶装置から受信したコンテンツアドレスと、上記送信したファイルのファイル名とを対応付けて管理する。一方、記憶装置は、ホストのＡＰＩからコンテンツアドレスを受信した場合、そのコンテンツアドレスに対応付けられている物理的な記憶位置からファイルを取得し、取得したファイルをホストのＡＰＩに返送する。
【０００５】
【特許文献１】特開2005-235171号公報
【特許文献２】特開2005-174339号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１及び２に開示の技術によれば、記憶装置で生成されたハッシュ値がコンテンツアドレスとして使用される。このため、記憶装置に対してコンテンツアドレスでファイルを指定するために、ホスト等の上位装置に専用のＡＰＩが必須となる。
【０００７】
本発明の一つの目的は、上位装置に専用のＡＰＩを必要としなくても、重複したファイルの記憶を防げるようにすることにある。
【０００８】
本発明の更なる目的は、後の記載から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一以上の第一の論理記憶デバイスに記憶される複数のファイルの内容にそれぞれ固有の値である複数の内容固有値が算出される。複数の内容固有値に二以上の同一の内容固有値が含まれているか否かが判定される。二以上の同一の内容固有値がある場合、それら二以上の内容固有値のうちの第一の内容固有値に対応した第一のファイルのアクセス先が、それら二以上の内容固有値のうちの第二の内容固有値に対応した第二のファイルが記憶されている位置に切り替えられる。
【発明を実施するための最良の形態】
【００１０】
本発明の一つの実施形態では、計算機と、複数のファイルが記憶される一以上の第一の論理記憶デバイスを備えた第一のストレージシステムとが備えられる。計算機が、複数のファイルの内容にそれぞれ固有の値である複数の内容固有値を算出する固有値算出部と、複数のファイルにそれぞれ対応した複数の内容固有値を前記第一のストレージシステムに送信する固有値送信部とを備えることができる。第一のストレージシステムが、複数の内容固有値に二以上の同一の内容固有値が含まれているか否かを判定する重複判定部と、二以上の同一の内容固有値がある場合、それら二以上の内容固有値のうちの第一の内容固有値に対応した第一のファイルのアクセス先を、それら二以上の内容固有値のうちの第二の内容固有値に対応した第二のファイルが記憶されている位置に切り替える切替制御部とを備えることができる。
【００１１】
一つの実施形態では、固有値算出部は、前記複数のファイルをアーカイブ対象とする契機で、複数の内容固有値を算出することができる。具体的には、例えば、固有値算出部は、複数のファイルをアーカイブ対象とする契機で、第一のストレージシステムに対してアクセスリクエストを送信するＮＡＳノードが利用するファイルシステムが管理するファイルの格納位置を示す情報（例えばi-node情報)を基に、ファイルの内容についてハッシュ関数を用いて内容固有値を算出することができる。
【００１２】
一つの実施形態では、固有値算出部は、複数のファイルをアーカイブ対象とする契機で、一以上の第一の論理記憶デバイスの更新を第一のストレージシステムに禁止させることができる。アーカイブ対象とされる複数のファイルは、ファイル単位、ディレクトリ単位、ファイルシステム単位、第一の論理記憶デバイス単位など種々の単位で指定することができる。また、「アーカイブ対象」とは、ここでは、更新不可の対象、という意味とすることができる。更新不可の対象とする複数のファイルを記憶する一以上の第一の論理記憶デバイスの各々が、更新禁止とさせられる。
【００１３】
一つの実施形態では、複数の内容固有値にそれぞれ対応付けられた複数の保持期限がある。切替制御部は、二以上の同一の内容固有値にそれぞれ対応した二以上の保持期限のうち、第一の保持期限に比して遅い第二の保持期限に対応した第二のファイルが記憶されている位置に、第一の保持期限に対応した第一のファイルのアクセス先を切り替えることができる。
【００１４】
一つの実施形態では、第一のストレージシステムに、一以上の第二の論理記憶デバイスを備えた第二のストレージシステムが接続される。第一のストレージシステムが、一以上の第二の論理記憶デバイスにそれぞれ対応付けられた一以上の仮想的な論理記憶デバイスと、一以上の第一の論理記憶デバイスに記憶されている各ファイルの実体をマイグレーション先の一以上の仮想的な論理記憶デバイスを介して一以上の第二の論理記憶デバイスに書込むマイグレーション実行部とを更に備えることができる。マイグレーション実行部が、二以上の同一の内容固有値にそれぞれ対応した二以上のファイルのうち、第一のファイルの実体を一以上の第二の論理記憶デバイスのいずれにも書込まず、第二のファイルの実体を前記一以上の第二の論理記憶デバイスのいずれかに書込むことができる。切替制御部が、第一のファイルのアクセス先を、第二のファイルの実体が書込まれた位置にすることができる。
【００１５】
一つの実施形態では、マイグレーションの開始前は、前記複数のファイルを記憶する前記一以上の第一の論理記憶デバイスの各々が更新不可とすることができる。また、マイグレーションの完了後は、一以上の仮想的な論理記憶デバイスの各々は更新可であるが、マイグレーションの対象となった複数のファイルの各々は更新不可とすることができる。
【００１６】
一つの実施形態では、切替制御部は、更に、前記一以上の第二の論理記憶デバイスのデバイス特性に基づいて、アクセス先の切替を制御することができる。
【００１７】
一つの実施形態では、二以上の同一の内容固有値にそれぞれ対応した二以上のファイルのうち、最も遅い保持期限に対応した第一のファイルと他のファイルである第二のファイルとのマイグレーション先が、第一種のデバイス特性（例えば低速という特性）を有する第一の第二論理記憶デバイスに対応した第一の仮想的な論理記憶デバイスであるとする。第二のファイルの保持期限に比して保持期限が遅い第三のファイルのマイグレーション先が、第一種のデバイス特性に比して優れた第二種のデバイス特性（例えば高速という特性）を有する第二の第二論理記憶デバイスに対応した第二の仮想的な論理記憶デバイスであるとする。この場合、切替制御部は、第二のファイルのアクセス先を第三のファイルの実体が記憶される位置に切り替えることができる。また、マイグレーション実行部は、第一のファイルの実体を第一の仮想的な論理記憶デバイスを介して第一の第二論理記憶デバイスに書き、第二のファイルの実体を第一の第二論理記憶デバイスに書き込まず、第三のファイルの実体を第二の仮想的な論理記憶デバイスを介して第二の第二論理記憶デバイスに書込むことができる。
【００１８】
一つの実施形態では、切替制御部は、例えば第一の第二論理記憶デバイスに障害が発生した等の理由により、第一の第二論理記憶デバイスからの第一のファイルの実体の読出しが不可能な場合、第一のファイルのアクセス先を第三のファイルの実体が記憶されている位置に切替えることができる。また、切替制御部は、例えば第二の第二論理記憶デバイスに障害が発生した等の理由により、第二の第二論理記憶デバイスからの第三のファイルの実体の読出しが不可能な場合、第三のファイルのアクセス先を第一のファイルの実体が記憶されている位置に切替えることができる。
【００１９】
一つの実施形態では、計算機が、記憶領域と、完全性チェック部とを更に備えることができる。また、第一のストレージシステムが、計算機から受信した複数の内容固有値を記憶する記憶領域を更に備えることができる。固有値算出部が、複数の内容固有値を計算機の記憶領域に格納することができる。完全性チェック部は、複数のファイルから選択されたファイルに対応する、計算機の記憶領域に記憶されている複数の内容固有値のうちの内容固有値と、第一のストレージシステムの記憶領域に記憶されている、上記選択されたファイルに対応する内容固有値とを比較することができる。
【００２０】
一つの実施形態では、第一のストレージシステムが、節約容量通知部を更に備えることができる。節約容量通知部が、第一のファイルのアクセス先が切替えられたことにより節約された記憶容量を算出し、その記憶容量を示す情報を計算機に通知することができる。
請求項１記載のコンピュータシステム。
【００２１】
一つの実施形態では、切替制御部が、複数のファイルにそれぞれ対応した複数のレコードを有する切替管理テーブルを更新することで、アクセス先の切替を行うことができる。一つのファイルに対応する一つの前記レコードには、レコードＩＤと、そのファイルの位置情報と、参照先のレコードＩＤとが記録されるフィールドがある。切替制御部が、前記第一のファイルに対応した第一のレコードにおいて、参照先のレコードＩＤを、第二のファイルに対応した第二のレコード上のレコードＩＤに更新することができる。レコードには、更に、切替えるか否かを意味するフラグを用意することができる。切替制御部は、例えば、アクセス先が切替えられる第一のファイルに対応したフラグをＯｎにすることができる。
【００２２】
一つの実施形態では、切替管理テーブルの一つのレコードには、ファイルの保持期限と、ファイルのアクセス属性とが更に記録されてもよい。切替制御部は、二以上の同一の内容固有値にそれぞれ対応した二以上の保持期限のうち、第一の保持期限に比して遅い第二の保持期限に対応した前記第二のファイルの前記第二のレコード上の参照先レコードＩＤを、前記第一の保持期限に対応した前記第一のファイルの前記第一のレコード上のＩＤに更新し、且つ、前記第一及び第二のレコード上のアクセス属性をリードオンリーに設定することができる。この場合、第一のストレージシステムは、第一及び第二のレコード上の位置情報が示す位置を指定したライトアクセスを受けても、その位置に対する書込みを実行しないようにすることができる。
【００２３】
前述した複数の実施形態のうちの任意の二以上を組み合わせることもできる。前述した計算機は、第一のストレージシステムを管理するための管理計算機であっても良いし、第一のストレージシステムにアクセスリクエストを送信するＮＡＳノードであっても良い。また、前述した計算機が有する各部が、第一のストレージシステムに備えられても良い。
【００２４】
前述した各部（例えば、固有値算出部、重複判定部、切替制御部など）は、各手段と言い換えてもよい。各部は、ハードウェア（例えば回路）、コンピュータプログラム、或いはそれらの組み合わせ（例えば、コンピュータプログラムを読み込んで実行する一又は複数のＣＰＵ）によって実現することもできる。各コンピュータプログラムは、コンピュータマシンに備えられる記憶資源（例えばメモリ）から読み込むことができる。その記憶資源には、ＣＤ−ＲＯＭやＤＶＤ（Digital Versatile Disk）等の記録媒体を介してインストールすることもできるし、インターネットやＬＡＮ等の通信ネットワークを介してダウンロードすることもできる。
【００２５】
以下、図面を参照して、本発明の幾つかの実施形態を詳細に説明する。なお、以下の説明では、第一のストレージシステムを「プライマリストレージシステム」と呼び、第二のストレージシステムを「セカンダリストレージシステム」と呼ぶ。プライマリストレージシステム内の要素（例えばメモリ）を、「内部要素」と言い、プライマリストレージシステムの外に存在するセカンダリストレージシステム内の要素を、「外部要素」と言う場合がある。また、同種の要素については、同一の親番号を用いて説明し、同種の要素を区別して説明する場合には、親番号と子符合を用いて説明する。
【００２６】
＜第一の実施形態＞。
【００２７】
図１は、本発明の第一の実施形態に係るコンピュータシステムの構成例を示すブロック図である。
【００２８】
第一の通信ネットワーク（例えばＳＡＮ（Storage Area Network））１０５に、ＮＡＳノード１０とプライマリストレージシステム６００が接続される。第二の通信ネットワーク１０４（例えばＳＡＮ）に、プライマリストレージシステム６００とセカンダリストレージシステム４０が接続される。第三の通信ネットワーク（例えばＬＡＮ（Local
Area Network））１０７に、ＮＡＳノード（例えばファイルサーバ）１０と、クライアント３０１と、プライマリストレージシステム６００と、管理端末１０６とが接続される。複数の通信ネットワーク１０５、１０４及び１０７のうちの少なくとも二つが一つの通信ネットワークでも良い。各通信ネットワーク１０５、１０４及び１０７は、種々の通信ネットワークを採用することができる。複数の通信ネットワーク１０５、１０４及び１０７のうちの少なくとも一つを専用線としても良い。
【００２９】
クライアント３０１、ＮＡＳノード１０及び管理端末１０６のうちの少なくとも一つは、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。
【００３０】
クライアント３０１は、ＮＡＳノード１０に対して、一般的なプロトコル（例えば、ＮＦＳ（Network
File System）或いはＣＩＦＳ（Common Internet File System））で、ファイルアクセスリクエスト（ファイルのリードリクエスト、或いはファイルのライトリクエスト）を、ＮＡＳノード１０に送信することができる。
【００３１】
ＮＡＳノード１０は、クライアント３０１からファイルアクセスリクエストを受信し、受信したファイルアクセスリクエストに従うファイルの実体（例えば複数のデータブロック）をプライマリストレージシステム６００内の論理的な記憶装置（以下、Logical Deviceを略して「ＬＤＥＶ」と言うことがある）に書込む或いはＬＤＥＶからそのファイルの実体を読み出すためのブロックアクセスリクエストを作成し、作成したブロックアクセスリクエストを送信する。ＮＡＳノード１０に代えて他種のファイル管理装置が採用されても良い。
【００３２】
プライマリストレージシステム６００は、例えば、アレイ状に配列された多数のディスク４００を備えるＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）システムとすることができる。但し、これに限らず、プライマリストレージシステム６００を、他種のストレージ仮想化装置、例えば、通信ネットワークを構成するスイッチ（具体例としては、高機能化されたインテリジェント型のファイバチャネルスイッチ）として構成することもできる。プライマリストレージシステム６００は、後述のように、セカンダリストレージシステム４０の有する記憶資源を自己のＬＤＥＶとしてＮＡＳノード１０に提供するものであるから、自己が直接支配するローカルな記憶デバイスを有していなくても良い。
【００３３】
プライマリストレージシステム６００は、コントローラ部２０と、ディスク部３０とに大別することができる。コントローラ部２０は、例えば、チャネルアダプタ（以下、ＣＨＡ）２１と、ディスクアダプタ（以下、ＤＫＡ）２２と、ＳＶＰ（Service Processor）２３と、キャッシュメモリ２４と、共有メモリ２５と、接続部２６とを備えている。
【００３４】
ＣＨＡ２１は、通信ポート２０７を介して外部の装置（例えば、ＮＡＳノード１０やセカンダリストレージシステム４０）との間のデータ通信を行うものである。ＣＨＡ２１は、例えば、ＣＰＵやメモリ等を備えたマイクロコンピュータシステムとして構成されている。ＣＨＡ２１には、そのＣＨＡ２１を識別するためのネットワークアドレス（例えばＷＷＮ（World Wide Name））が割り当てられている。ＣＨＡ２１には、ＮＡＳノード１０に接続されたＣＨＡ２１Ａと、セカンダリストレージシステム４０に接続されたＣＨＡ２１Ｂとがある。ＣＨＡ２１Ａと２１Ｂは、一体になっていてもよい。
【００３５】
ＤＫＡ２２は、ディスク部３０に備えられたディスク（以下、内部ディスク）４００に接続するための通信ポート２２０を有し、その通信ポート２２０を介して、内部ディスク４００と通信することができる。ＤＫＡ２２は、ＣＰＵやメモリ等を備えたマイクロコンピュータシステムとして構成されている。ＤＫＡ２２は、ＣＨＡ２１Ａからキャッシュメモリ２４に書かれたデータを内部ディスク４００に書込んだり、内部ディスク４００から読み出したデータをキャッシュメモリ２４に書込んだりすることができる。また、ＤＫＡ２２は、内部ディスク４００との間でデータ入出力を行う場合、論理的なアドレスを物理的なアドレスに変換することができる。
【００３６】
キャッシュメモリ２４は、例えば揮発性又は不揮発性のメモリであり、ＮＡＳノード１０から受信し内部ＬＤＥＶ３１或いは外部ＬＤＥＶ４２に転送されるデータや、内部ＬＤＥＶ３１或いは外部ＬＤＥＶ４２から読出されたデータを一時的に記憶することができる。
【００３７】
共有メモリ２５は、例えば不揮発性のメモリであり、プライマリストレージシステム６００での制御に関する情報（以下、制御情報）が格納される。制御情報としては、例えば、後述するコンテンツ識別子管理テーブル、アドレスマップ管理テーブル、及びエクステント管理テーブルがある。
【００３８】
接続部２６は、ＣＨＡ２１、ＤＫＡ２２、キャッシュメモリ２４及び共有メモリ２５を相互に接続させる。接続部２６は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
【００３９】
ディスク部３０には、アレイ状に配列された複数の内部ディスク４００が含まれている。内部ディスク４００としては、例えば、ハードディスク、フレキシブルディスク、光ディスクなどのディスク型記憶装置とすることができる。内部ディスク４００に代えて、他種の記憶装置、例えば、磁気テープ、半導体メモリ（例えばフラッシュメモリ）を用いることもできる。内部ディスク４００の記憶領域上には、論理的な記憶装置（内部ＬＤＥＶ）３１が設けられる。内部ＬＤＥＶ３１は、物理的な内部ディスク４００が有する記憶資源を用いて設定された、実体としてのＬＤＥＶであるのに対し、ＬＤＥＶ１３２は、内部ディスク４００を用いて設定されたＬＤＥＶではなく、仮想的なＬＤＥＶである。以下、内部ＬＤＥＶ３１をリアル内部ＬＤＥＶ３１と呼び、ＬＤＥＶ１３２を、バーチャル内部ＬＤＥＶ１３２と呼ぶ。リアル内部ＬＤＥＶ３１にアクセスが発生した場合には、内部ディスク４００にアクセスが行われるが、バーチャル内部ＬＤＥＶ１３２にアクセスが発生した場合には、外部ＬＤＥＶ４２にアクセスが行われる。なお、この種の技術は、外部接続技術と呼ばれることがあり、例えば、バーチャル内部ＬＤＥＶ１３２と外部ＬＤＥＶ４２のそれぞれのＬＵＮ（Logical Unit Number）が１対１で対応付けられても良いし、例えば、特開２００５−１０７６４５号公報（ＵＳ出願番号１０／７６９８０５号、ＵＳ出願番号１１／４７１５５６号）に開示の技術が援用されても良い。
【００４０】
ＳＶＰ２３は、プライマリストレージシステム６００の保守又は管理を行うための情報処理端末（例えばノート型のパーソナルコンピュータ）である。ＳＶＰ２３は、例えば、内部ＬＡＮ４１０を介して、ＣＨＡ２１内のプロセッサ（例えばＣＰＵ）や、ＤＫＡ２２内のプロセッサに接続されている。ＳＶＰ２３は、プライマリストレージシステム６００内の障害発生を監視してディスプレイ画面に表示したり、内部ディスク４００の閉塞処理等を指示したりするようになっている。ＳＶＰ２３は、遠隔の管理端末１０６から操作することができる。
【００４１】
セカンダリストレージシステム４０は、プライマリストレージシステム６００のような構成であっても良いし、プライマリストレージシステム６００よりも簡易な構成であっても良い。セカンダリストレージシステム４０は、例えば、通信ポート４１を持ったＣＨＡ２１７と、１又は複数のディスク（以下、外部ディスク）５００とを備えている。外部ディスク５００の記憶領域上には、外部ＬＤＥＶ４２が備えられている。外部ＬＤＥＶ４２は、プライマリストレージシステム６００の内部ＬＤＥＶ１３２として扱われるようになっている。
【００４２】
以上が、本実施形態に係る計算機システムの構成例である。なお、上記の説明は一例であって、他の構成が採用されてもよい。例えば、共有メモリ２５とキャッシュメモリ２４は、別々のメモリでなく、一つのメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、コントローラ部２０は、ＣＰＵ、メモリ及び通信ポートを備えた回路基盤であっても良い。この場合、ＣＰＵが、複数のＣＨＡやＤＫＡによって行われる処理を実行することができる。また、ＣＨＡ２１Ａに代えて、ＮＡＳノード１０の機能を有するＣＨＡ、言い換えれば、ＮＡＳとして機能できるＣＨＡ（以下、便宜上、Embedded NASを略して「Ｅ−ＮＡＳ」と言う）が、プライマリストレージシステム６００に搭載されても良い。この場合、Ｅ−ＮＡＳが、クライアント３０１からファイルリクエストを受信し、そのファイルアクセスリクエストからブロックアクセスリクエストを作成し処理しても良い。
【００４３】
以下、本実施形態について更に詳細に説明する。
【００４４】
図２Ａは、プライマリストレージシステム６００のコントローラ部２０内のＣＰＵで実行されるコンピュータプログラムの一例を示す。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。
【００４５】
例えば、ＬＤＥＶ間でのマイグレーションを実行するマイグレーション実行プログラム７０１、ファイルが重複しているか否かを判定しエクステント管理テーブルの更新を行う判定制御プログラム７０５、ＮＡＳノード１０からのブロックアクセスリクエストの処理を制御するアクセス制御プログラム７０７、及び、ＬＤＥＶ管理テーブルを提供するテーブル提供プログラム７０９がある。これらのコンピュータプログラム７０１、７０５、７０７及び７０９が、ＳＶＰ２３内の記憶資源、ＣＨＡ２１Ａ内の記憶資源、ＣＨＡ２１Ｂ内の記憶資源、ＤＫＡ２２内の記憶資源、内部ディスク４００、共有メモリ２５及びキャッシュメモリ２４のうちの一つ又は複数に存在しても良い。また、これらのコンピュータプログラム７０１、７０５、７０７及び７０９は、ＳＶＰ２３内のＣＰＵ、ＣＨＡ２１Ａ内のＣＰＵ、ＣＨＡ２１Ｂ内のＣＰＵ、及び、ＤＫＡ２２内のＣＰＵのうちの一つ又は複数で実行されても良い。
【００４６】
図２Ｂは、アドレスマップ管理テーブルの構成例を示す。
【００４７】
アドレスマップ管理テーブル８０１は、バーチャル内部ＬＤＥＶ１３２と外部ＬＤＥＶ４２との対応付けを管理するためのテーブルであり、プライマリストレージシステム６００内の記憶資源（例えば共有メモリ２５）に記憶される。このテーブル８０１には、例えば、バーチャル内部ＬＤＥＶ１３２の識別子（ＬＤＥＶ番号（ＶＤＥＶ番号））８０１１と、それに対応付けられている外部ＬＤＥＶ４２に対応したＷＷＮ（World Wide Name）（ポート番号など他種の情報でも良い）８０１２と、その外部ＬＤＥＶ４２に対応したＬＵＮ（Logical
Unit Number）８０１３とが記録される。
【００４８】
図２Ｃは、ＬＤＥＶ管理テーブルの構成例を示す。
【００４９】
ＬＤＥＶ管理テーブル８０３は、例えば、プライマリストレージシステム６００内の記憶資源（例えば共有メモリ２５）に記憶される。ＬＤＥＶ管理テーブル８０３は、内部ＬＤＥＶ３１、１３２に関する情報が記録されるテーブルである。このテーブル８０３の一つのレコードには、例えば、一つの内部ＬＤＥＶ（以下、図２Ｃの説明おいて「対象内部ＬＤＥＶ」と言う）について、ポート番号８０３１、ＬＵＮ８０３２、ＬＤＥＶ番号８０３３、アクセス属性８０３４、ＬＤＥＶ種別８０３５及び使用状態８０３６が記録される。ポート番号８０３１は、対象内部ＬＤＥＶに対応したポートの識別子（例えばＷＷＮ）である。ＬＵＮ８０３２は、対象内部ＬＤＥＶに対応したＬＵＮである。ＬＤＥＶ番号８０３３は、対象内部ＬＤＥＶの番号である。ポート番号８０３１及びＬＵＮ８０３２がブロックアクセスコマンドで指定されていれば、それらに対応付けられている内部ＬＤＥＶへのアクセスが実行される。アクセス属性８０３４は、対象内部ＬＤＥＶに対するアクセスの種類を制限するための情報であり、例えば、その情報としては、リード／ライト（読み出し及び書込みの両方が許可）、リードオンリー（読み出しは許可だが書込みは禁止）などがある。アクセス制御プログラム７０７は、アクセス属性８０３４“リードオンリー”に対応した内部ＬＤＥＶに対してブロックライトコマンドを受信しても、その内部ＬＤＥＶに対する更新を実行しない。ＬＤＥＶ種別８０３５は、対象内部ＬＤＥＶの種別を示す情報であり、例えば、リアル内部ＬＤＥＶである（“Ｒ”）かバーチャル内部ＬＤＥＶである（“Ｖ”）である。使用状態８０３６は、対象内部ＬＤＥＶの使用状態を示す情報であり、例えば、“使用中”と“未使用”がある。
【００５０】
図３は、管理端末１０６の構成例を示す。
【００５１】
管理端末１０６の記憶資源（例えばメモリ及びディスク装置のうちの少なくとも一つ）７１３には、管理端末１０６のＣＰＵ７１１で実行されるユーティリティプログラム７１５が記憶される。この実施形態では、ユーティリティプログラム７１５は管理端末１０６で実行されるが、それに代えて、ＮＡＳノード１０など他のコンピュータで実行されても良い。
【００５２】
ユーティリティプログラム７１５は、例えば、情報収集プログラム７１７と、ハッシュ作成プログラム７１９と、ユーザインタフェース（ＵＩ）制御プログラム７２１とを含む。
【００５３】
情報収集プログラム７１７は、図４に示すように、ＮＡＳノード１０やプライマリストレージシステム６００から所定種類の情報を収集する。収集される情報の一例を、図５及び図６に示す。図５に例示する情報は、ＮＡＳノード１０のファイルシステムプログラム７２１が管理する、ディレクトリファイル情報のテーブル（以下、ディレクトリファイル管理テーブル）８１１及び８１３である。ファイルシステムプログラム７２１は、一又は複数の内部ＬＤＥＶのファイルシステムを利用するコンピュータプログラムである。テーブル８１１のiノード情報が示す、テーブル８１３のアドレスに記載の内容を参照することで、ファイルの取得が可能である。図６に例示する情報は、ＮＡＳノード１０のボリュームマネージャ７２３が管理する情報（ファイルやディレクトリを格納する論理ボリュームに関する情報）が記録されたテーブル８３１と、プライマリストレージシステム６００で管理されているＬＤＥＶ管理テーブル８３３（図２Ｃ参照）の一部であるＬＤＥＶ管理テーブル部分８３３である。テーブル８３１の各レコードには、ファイルシステムのディレクトリポイント名８３１３と、デバイスファイル名８３１２と、ディスクグループ名８３１１とが記録されている。また、テーブル部分８３３には、各内部ＬＤＥＶ３１、１３２について、ポート番号８３３１、ＬＵＮ８３３２及びＬＤＥＶ番号８３３３（例えば、それぞれ、図２Ｃの８０３１、８０３２及び８０３３と同じ値）が記録されている。ファイルシステムのディレクトリポイント名８３１３と、デバイスファイル名８３１２と、ディスグループ名８３１１との組み合わせが、一つの内部ＬＤＥＶに対応する。どの組み合わせがどの内部ＬＤＥＶに対応するかは、例えば、デバイスファイル名８３１２中の数値から特定することができる（例えば、c0が、プライマリストレージシステム６００を意味し、t1が、ポート番号“１”を意味し、d1が、ＬＵＮ“１”であることを意味する）。具体的には、例えば、図４、図５及び図６の例によれば、“/usr”をルートディレクトリとするファイルシステムに対応する内部ＬＤＥＶは、ポート番号“１”、ＬＵＮ“１”及びＬＤＥＶ番号“１”（00:01）に対応した内部ＬＤＥＶであることがわかる。前述した論理ボリュームとは、ボリュームマネージャ７２３が認識する論理的な記憶デバイスのことであり、プライマリストレージシステム６００内の内部ＬＤＥＶ３１、１３２に対応する。
【００５４】
ハッシュ作成プログラム７１９は、一つの内部ＬＤＥＶについて、図７に例示するコンテンツ識別子管理テーブル８３５を作成する。このテーブル８３５の一レコードは、一ファイルに対応する。一つのレコードには、そのレコードに対応したファイルそれ自体のハッシュ値（言い換えれば、ファイルの内容の識別子）８３５１と、そのファイルを構成するブロックデータが格納されている位置（内部ＬＤＥＶ内での位置）を示すアドレス（例えばブロック番号）８３５２と、そのファイルのファイル名８３５３と、そのファイルのファイルアドレス（例えば、iノードが管理するそのファイルのアドレス（例えばそのファイルを格納したディレクトリまでのパス名））８３５４と、そのファイルの保持期限８３５５とが記録される。ハッシュ作成プログラム７１９は、ＮＡＳノード１０から収集されたiノード情報（ディレクトリファイル管理テーブル８１１及び８１３に記録された情報）から、ファイルの内容を特定し、そのファイルの内容をハッシュ化することで（ハッシュ関数を利用することで）、そのファイルのハッシュ値を算出する。以下、そのハッシュ値を、「コンテンツ識別子」と言うことがある。保持期限８３５５は、例えば、後述の図１８Ａに例示のＧＵＩを介してユーザから入力された情報である。また、保持期限８３５５は、ユーザからの入力に代えて、ファイルに予め設定されていて、その予め設定されている値がコピーされたものであっても良い。また、保持期限８３５５に代えて、保持期間を示す情報が採用されても良い。保持期限であっても保持期間であっても、結局は、ファイルがいつまで保存されるべきかを示す情報である。
【００５５】
ＵＩ制御プログラム７２１は、図５及び図６に例示した情報を基に、図１８Ａに例示するＧＵＩ（Graphical User Interface）を、表示装置（例えば管理端末１６０が備えた表示装置）に表示することができる。ＵＩ制御プログラム７２１は、例えば、ＧＵＩに、複数のＬＤＥＶに関する情報を表示し、複数のＬＤＥＶのうちのユーザ所望の選択を受け付け、ユーザに選択されたＬＤＥＶに格納されている一以上のディレクトリ及び／又は一以上のファイルに関する情報を表示することができる。また、ＵＩ制御プログラム７２１は、一以上のファイルの各々について、保持期限を示す情報の入力を受付け、或るファイルについて保持期限を示す情報が入力された場合は、入力された情報を、そのファイルを格納するＬＤＥＶに対応したコンテンツ識別子管理テーブル８３５における保持期限８３５５として登録する。
【００５６】
以下、本実施形態に係るコンピュータシステムで行われる処理の流れを説明する。なお、以下の説明では、図６に例示したテーブル８３１とテーブル部分８８３との対応付けが済んでおり、その後の収集対象の情報は図５に例示した情報であるとする。また、図９や図１０等において、ＬＤＥＶ内の四角形及びＦＳＰ（ファイルシステムプログラム）内の四角形は、ファイルを示す。そして、塗りつぶしパターンの同じ四角形は、内容が同じファイルであり、故に、ファイルの内容のハッシュ値も同じであるとする。
【００５７】
＜図８のＳ１０１：アーカイブ指示＞。
【００５８】
ユーティリティプログラム７１５の情報収集プログラム７１７が、ＮＡＳノード１０やプライマリストレージシステム６００に、情報の問合せを発行する。ＮＡＳノード１０は、その問合せの受信に応答して、所定のコンピュータプログラム（例えばエージェントプログラム）が、図５に例示したテーブル８１１、８１３や、図６に例示したテーブル８３１を、ユーティリティプログラム７１５に送信する。プライマリストレージシステム６００では、情報の問合せの受信に応答して、テーブル提供プログラム７０９が、ＬＤＥＶ管理テーブル部分８３３を、ユーティリティプログラム７１５に送信する。情報収集プログラム７１７が、図６に例示したように、テーブル８３１にＬＤＥＶ管理テーブル部分８８３を対応付ける。ファイル、ディレクトリ及び内部ＬＤＥＶ３１、１３２の対応関係は、図５や図６に例示した情報から、どのファイルやどのディレクトリがどの内部ＬＤＥＶに格納されているかがわかる。
【００５９】
情報収集の完了に応答して、ＵＩ制御プログラム７２１が、図１８Ａに例示したＧＵＩを表示し、そのＧＵＩを介して、内部ＬＤＥＶ単位、ディレクトリ単位、及びファイル単位のうちの少なくとも一つの単位で、アーカイブ指示をユーザから受け付ける。ユーザ所望の内部ＬＤＥＶ、ディレクトリ及びファイルのうちの少なくとも一つを指定したアーカイブ指示を受けたならば、図９に例示するように、ＵＩ制御プログラム７２１は、その指定された内部ＬＤＥＶ、又は、その指定されたディレクトリ或いはファイルを格納している内部ＬＤＥＶ（以下、それらの内部ＬＤＥＶを「アーカイブ指示対象の内部ＬＤＥＶ」と総称することがある）についての、ＬＤＥＶ管理テーブル８０３におけるアクセス属性８０３４を、“リードオンリー”に設定する。図９の例では、内部ＬＤＥＶ＃１と内部ＬＤＥＶ＃２が、アーカイブ指示対象の内部ＬＤＥＶであり、各内部ＬＤＥＶについて、アクセス属性８０３４“リードオンリー”が設定されるとする。なお、「内部ＬＤＥＶ＃１」という記載は、ＬＤＥＶ番号８０３３が“１”（00:11）である内部ＬＤＥＶを意味する。
【００６０】
アクセス属性８０３４“リードオンリー”を設定することに代えて、他の方法で、アーカイブ指示対象の内部ＬＤＥＶに書込みがされないようにすることができる。例えば、プライマリストレージシステム６００が、アーカイブ指示対象の内部ＬＤＥＶの指定を受けた後に、その内部ＬＤＥＶを指定したブロックアクセスコマンドを受けた場合、書込み不可やビジー等の所定の応答を返すことで、書込みを抑止しても良い。
【００６１】
また、例えば、ＵＩ制御プログラム７２１は、ユーザ所望のファイルについて、保持期限を、図１８Ａに例示したＧＵＩを介して受け付けることもできる。受け付けた場合、ＵＩ制御プログラム７２１は、ファイル名８３５３と保持期限８３５５との対応関係を記憶資源７１３に記憶させておき、コンテンツ識別子管理テーブル８３５が作成されたときに、その保持期限８３５５をそのテーブル８３５に登録することができる。
【００６２】
また、例えば、ＵＩ制御プログラム７２１は、図１８Ａに例示したＧＵＩを介して、マイグレーション元とする内部ＬＤＥＶの指定を受け付けても良い。それに代えて、ＵＩ制御プログラム７２１は、アーカイブ指示の対象として指定された内部ＬＤＥＶ（又は、その対象として指定されたファイル又はディレクトリを記憶している内部ＬＤＥＶ）を、ユーザからの格別の指示無しに、マイグレーション元の内部ＬＤＥＶとしても良い。
【００６３】
また、例えば、内部ＬＤＥＶ単位でアーカイブ対象を指定し、且つ、図６に例示したテーブル８３１及びテーブル部分８３３との対応付けが完了していれば、このＳ１０１では、情報収集が行われず、次のＳ１０２において、図５に例示したテーブル８１１及び８１３がＮＡＳノード１０から取得されても良い。
【００６４】
＜図８のＳ１０２：ファイル重複判定／アドレス切替制御＞。
【００６５】
例えば、Ｓ１０１においてアクセス属性８０３４“リードオンリー”の設定が完了したことに応答して、ハッシュ作成プログラム７１９が、アーカイブ指示対象の各内部ＬＤＥＶ毎に、コンテンツ識別子管理テーブル８３５を作成する。一つの内部ＬＤＥＶについて説明すると、例えば、ハッシュ作成プログラム７１９は、図５に例示したテーブル３１１及び３１３を参照して、その内部ＬＤＥＶに格納されている全てのファイルの各々について、ファイルの内容のハッシュ値を算出し、且つ、ファイルの実体の記憶位置（例えば内部ＬＤＥＶ内のブロックを識別するためのブロック番号）等を特定し、算出したハッシュ値８３５１と、特定したアドレス（物理的な記憶位置）８３５２、ファイル名８３５３、及びファイルアドレス８３５４を、コンテンツ識別子管理テーブル８３５に記録する。また、ハッシュ作成プログラム７１９が、記憶資源７１３に記憶されている保持期限（Ｓ１０１でユーザからＧＵＩを介して入力された保持期限）８３５５を、コンテンツ識別子管理テーブル８３５に記録する。
【００６６】
図１０に例示するように、ハッシュ作成プログラム７１９は、アーカイブ指示対象の各内部ＬＤＥＶ毎のコンテンツ識別子管理テーブル８３５を、プライマリストレージシステム６００に送信し、プライマリストレージシステム６００が、それを受信する。判定制御プログラム７０５が、受信したコンテンツ識別子管理テーブル８３５を、プライマリストレージシステム６００内の記憶資源（例えば共有メモリ２５）に記憶させる。
【００６７】
判定制御プログラム７０５が、アーカイブ指示対象の各内部ＬＤＥＶ毎のコンテンツ識別子管理テーブル８３５を基に、アーカイブ指示対象の各内部ＬＤＥＶ毎のエクステント管理テーブルを作成する。エクステント管理テーブルの一例を図１１に示す。エクステント管理テーブル８６１の一つのレコード（以下、エクステントレコード）は、コンテンツ識別子管理テーブル８３５の一つのレコード（以下、ハッシュレコード）に対応しており、故に、一つのファイルに対応する。一つのエクステントレコードには、ＩＤ８６１１、アドレス８６１２、アクセス属性８６１３、保持期限８６１４、切替フラグ８６１５、エクステントＩＤ８６１６、及びＶＤＥＶ番号８６１７が記録される。ＩＤ８６１１は、例えば、対応するハッシュレコードの通番である。アドレス８６１２は、対応するハッシュレコードに記録されているアドレス８３５２の複製である。アクセス属性８６１３は、対応するファイルについてのアクセス属性を示す情報（例えば、ライト／リード、リードオンリー）である。エクステント管理テーブル８６１が作成された直後は、全てのエクステントレコードには、例えば、そのテーブル８６１に対応した内部ＬＤＥＶについてのアクセス属性８０３４の複製が記録される。保持期限８６１４は、例えば、対応するハッシュレコードに記録されている保持期限８３５５の複製である。切替フラグ８６１５は、アドレス切替するか（Ｏｎ）か否か（Ｏｆｆ）を示すフラグである。エクステントＩＤ８６１６は、切替フラグ“Ｏｎ”の場合に設定される値であり、参照すべきＩＤ８６１１を示す。ＶＤＥＶ番号８６１７は、切替フラグ８６１５“Ｏｎ”の場合に設定される値であり、参照すべきＬＤＥＶ番号（ＶＤＥＶ番号）８０１１（アドレスマップ管理テーブル８０１に記録されているＬＤＥＶ番号（ＶＤＥＶ番号）８０１１）を示す。エクステント管理テーブル８６１が作成された直後は、全てのエクステントレコードでは、切替フラグ８６１５は“Ｏｆｆ”になり、エクステントＩＤ８６１６及びＶＤＥＶ番号８６１７の記憶領域はブランクとなるか或いは無効値が設定される。
【００６８】
判定制御プログラム７０５が、図１２に示すように、重複したファイルの有無を判定したり、アドレス切替制御を行ったりする。具体的には、図１３に例示するアドレス制御処理が実行される。
【００６９】
すなわち、判定制御プログラム７０５が、記憶された全てのコンテンツ識別子管理テーブル８３５から選択したコンテンツ識別子管理テーブル８３５を参照し（Ｓ１）、そのテーブル８３５から選択したハッシュ値（以下、選択ハッシュ値）８３５１と一致するハッシュ値（以下、一致ハッシュ値）８３５１を、そのコンテンツ識別子管理テーブル８３５から検索する（Ｓ２）。そのテーブル８３５から一致ハッシュ値８３５１が見つからず（Ｓ３：ＮＯ、Ｓ４：ＹＥＳ）、且つ、まだ参照していない他のコンテンツ識別子管理テーブル８３５があれば（Ｓ５：ＮＯ）、判定制御プログラム７０５は、他のコンテンツ識別子管理テーブル８３５を参照し（Ｓ６）、そのテーブル８３５から一致ハッシュ値８３５１を検索する。
【００７０】
一致ハッシュ値８３５１が見つかった場合（Ｓ３：ＹＥＳ）、判定制御プログラム７０５は、一方の保持期限８３５５（選択ハッシュ値８３５１に対応した保持期限８３５５）と、他方の保持期限８３５５（一致ハッシュ値８３５１に対応した保持期限８３５５）とを参照し比較する（Ｓ７）。一方の保持期限８３５５が示す期間の方が長ければ、Ｓ１１に進む。一方の保持期限８３５５が示す期間の方が短ければ、判定制御プログラム７０５は、一方の切替フラグ８６１５（選択ハッシュ値８３５１に対応した切替フラグ８６１５）を“Ｏｎ”に設定する（Ｓ９）。また、判定制御プログラム７０５は、一致ハッシュ値８３５１が他のコンテンツ識別子管理テーブル８３５から見つかったのであれば、そのテーブル８３５に対応した内部ＬＤＥＶのＬＤＥＶ番号を、一方のＶＤＥＶ番号８６１７（選択ハッシュ値８３５１に対応した切替フラグ８６１５）として記録する（Ｓ１０）。
【００７１】
Ｓ１１では、判定制御プログラム７０５は、現在の参照対象のテーブル８３５の全てのハッシュレコードを参照したか否かを判断し、参照していなければ（Ｓ１１：ＮＯ）、Ｓ２に戻り、参照したのであれば（Ｓ１１：ＹＥＳ）、Ｓ１２に進む。Ｓ１２では、判定制御プログラム７０５は、未参照のコンテンツ識別子管理テーブル８３５の有無を判定し、あれば（Ｓ１２：ＹＥＳ）、未参照のテーブル８３５を参照し（Ｓ１３）、無ければ（Ｓ１２：ＮＯ）、終了となる。
【００７２】
図１３を参照した説明において、図１４Ａに例示するように、選択ハッシュ値８３５１のあるコンテンツ識別子管理テーブル８３５から一致ハッシュ値８３５１が見つかった場合、そのテーブル８３５に対応するエクステント管理テーブル８６１は、例えば図１４Ｂのように更新される。すなわち、選択ハッシュ値８３５１に対応したＩＤ８６１１が“１”で、一致ハッシュ値８３５１に対応したＩＤ８６１１が“０”とすると、ＩＤ８６１１“１”に対応した保持期限８６１４“2010.01.01”の方が、ＩＤ８６１１“０”に対応した保持期限８６１４“2020.01.01”より早いので、ＩＤ８６１１“１”に対応した切替フラグ８６１５が“Ｏｎ”とされ、それに対応したエクステントＩＤ８６１６は“０”とされる。これにより、ＩＤ“１”に対応したファイルを指定したファイルアクセスリクエストがクライアント３０１から送信された場合には、ＩＤ“０”に対応したファイルがクライアント３０１に提供されることになる。
【００７３】
一方、図１３を参照した説明において、図１５Ａに例示するように、選択ハッシュ値８３５１のある第一のコンテンツ識別子管理テーブル８３５と異なる第二のコンテンツ識別子管理テーブル８３５から一致ハッシュ値８３５１が見つかった場合、第一のコンテンツ識別子管理テーブル８３５に対応した第一のエクステント管理テーブル８６１と、第二のコンテンツ識別子管理テーブル８３５に対応した第二のエクステント管理テーブル８６１は、例えば、図１５Ｂのように更新される。すなわち、選択ハッシュ値８３５１に対応したＩＤ８６１１が“１０”（第二のエクステント管理テーブル８６１にある）で、一致ハッシュ値８３５１に対応したＩＤ８６１１が“０”（第一のエクステント管理テーブル８６１にある）とすると、ＩＤ８６１１“１０”に対応した保持期限８６１４“2010.01.01”の方が、ＩＤ８６１１“０”に対応した保持期限８６１４“2020.01.01”より早いので、ＩＤ８６１１“１”に対応した切替フラグ８６１５が“Ｏｎ”とされ、それに対応したエクステントＩＤ８６１６は“０”とされる。更に、ＩＤ“１０”に対応したＶＤＥＶ番号８６１７が、第一のエクステント管理テーブル８６１に対応した内部ＬＤＥＶのＬＤＥＶ番号“０１”とされる。
【００７４】
以上が、図８のＳ１０２についての説明である。なお、作成されたコンテンツ識別子管理テーブル８３５を基に、このＳ１０２において、後述の図８のＳ１０３で、セカンダリストレージシステム４０に対するマイグレーションを実行する前に、重複する複数のファイルのうちの一つのファイル以外の一以上のファイルの実体を、ユーティリティプログラム７１５又は判定制御プログラム７０５が削除しても良い。また、削除ではなく、ファイルの実体を指すリンク（例えば、シンボリックリンク或いはショートカット）に置き換えても良い。この場合、先にアクセス属性８６１３“リードオンリー”として設定されたものは、削除或いはリンク置き換えのため、ユーティリティプログラム７１５又は判定制御プログラム７０５が一旦、アクセス属性８６１３の設定を解除し、削除或いはリンク置き換え処理終了後、再度、アクセス属性８６１３“リードオンリー”として設定してもよい。このＳ１０２において、先に削除或いはリンク置き換えが行われた場合、図８のＳ１０３でのマイグレーションは、単純にＬＤＥＶ間（論理ボリューム間）のマイグレーションが行われれば良い。そうではない場合には、後述するように、マイグレーション元のエクステント管理テーブル８６１の切替フラグ８６１５を基に、マイグレーションが行われれば良い。
【００７５】
＜図８のＳ１０３：ＬＤＥＶ間のマイグレーション＞。
【００７６】
例えば図１３を参照して説明した処理の流れが完了したことに応答して、プライマリストレージシステム６００内のマイグレーション実行プログラム７０１が、図１６Ａに示す通り、アーカイブ指示対象のリアル内部ＬＤＥＶ＃１、＃２内のデータのマイグレーション先を、バーチャル内部ＬＤＥＶ＃３、＃４に決定することができる。
【００７７】
本実施形態では、アーカイブ指示前は、リアル内部ＬＤＥＶにファイルが記憶され、リアル内部ＬＤＥＶに対して、ファイルのリードやライトが実行される。そのため、アーカイブ指示対象の内部ＬＤＥＶは、リアル内部ＬＤＥＶであり、それ故、マイグレーション元の内部ＬＤＥＶも、リアル内部ＬＤＥＶである。それに対し、マイグレーション先は、図１６Ａに例示した通り、バーチャル内部ＬＤＥＶとされる。具体的には、例えば、マイグレーション前において、図１６Ｂに例示するように、ＬＤＥＶ管理テーブル８０３において、ＬＤＥＶ番号８０３３“３”及び“４”にそれぞれ対応したＬＤＥＶ種別８０３５はいずれも“Ｖ”であり且つ使用状態８０３６は“未使用”であり、それ故、図１６Ｃに例示するように、アドレスマップ管理テーブル８０１では、ＬＤＥＶ番号（ＶＤＥＶ番号）８０１１が、“０３”及び“０４”であるとする。この場合、マイグレーション実行プログラム７０１は、ＬＤＥＶ管理テーブル８０３を参照して、リアル内部ＬＤＥＶ＃１、＃２のそれぞれに記憶されているデータのマイグレーション先を、バーチャル内部ＬＤＥＶ＃３、＃４に決定する。また、そのとき、マイグレーション実行プログラム７０１は、ＬＤＥＶ番号８０３３“３”及び“４”にそれぞれ対応した使用状態８０３６を“使用中”に更新することができる。なお、マイグレーション先は、上記のように自動で決定されても良いし、ＵＩ制御プログラム７２１が表示するＧＵＩを介して手動で決定されても良い。
【００７８】
マイグレーション実行プログラム７０１は、リアル内部ＬＤＥＶ＃１、＃２内のデータを、バーチャル内部ＬＤＥＶ＃３、＃４にマイグレーションすることを開始する。マイグレーション中において、もし、ＮＡＳノード１０が、リアル内部ＬＤＥＶ＃１に格納されているファイルを指定したファイルリードリクエストをクライアント３０１から受信した場合、ＮＡＳノード１０は、プライマリストレージシステム６００に、内部ＬＤＥＶ＃１を指定したブロックリードリクエストを送信する。ＬＤＥＶ管理テーブル８０３は、例えば図１６Ｃに例示した通りなので、アクセス制御プログラム７０７は、そのブロックリードリクエストに従って、リアル内部ＬＤＥＶ＃１からデータを読み出してＮＡＳノード１０に送信する。つまり、マイグレーション中であっても、クライアント３０１は、ＮＡＳノード１０を通じて、アーカイブ対象のファイルを読み出すことが可能である。
【００７９】
マイグレーション実行プログラム７０１は、例えば、或るアドレス８６１２から特定される、リアル内部ＬＤＥＶ＃１内の位置にあるデータを、バーチャル内部ＬＤＥＶ＃３にマイグレーションする場合、そのアドレス８６１２に対応した切替フラグ８６１５を参照し、その切替フラグ８６１５が“Ｏｆｆ”の場合は、そのデータを、バーチャル内部ＬＤＥＶ＃３にマイグレーションし、その切替フラグ８６１５が“Ｏｎ”の場合は、そのデータを、バーチャル内部ＬＤＥＶ＃３にマイグレーションしない（例えばそのデータを削除して良い）。つまり、重複したファイルのうちの一つのファイル以外の一以上のファイルのデータは、マイグレーション先のバーチャル内部ＬＤＥＶにマイグレーションされない。言い換えれば、マイグレーション元のリアル内部ＬＤＥＶに記憶されているデータ量よりもマイグレーション先のバーチャル内部ＬＤＥＶに書き込むデータ量を少なくすることができる。なお、例えばバーチャル内部ＬＤＥＶ＃３にマイグレーションされたデータは、マイグレーション実行プログラム７０１により、アドレスマップ管理テーブル８０１から、そのバーチャル内部ＬＤＥＶ＃３に対応した外部ＬＤＥＶが特定され、特定された外部ＬＤＥＶのＷＷＮ８０１２やＬＵＮ８０１３を指定したブロックライトコマンドが、プライマリストレージシステム４０に送信される。
【００８０】
マイグレーションが完了した場合、マイグレーション実行プログラム７０１は、図１７に示すように、マイグレーション元とマイグレーション先のＬＤＥＶ番号を交換する。具体的には、例えば、マイグレーション実行プログラム７０１は、ＬＤＥＶ管理テーブル８０３において、図２２Ａに示すように、マイグレーション元のポート番号８０３１、ＬＵＮ８０３２及びＬＤＥＶ番号８０３３とマイグレーション先のポート番号８０３１、ＬＵＮ８０３２及びＬＤＥＶ番号８０３３を交換する（更に、図２２Ａに示すように、内部ＬＤＥＶ＃３、＃４の使用状態８０３６を“未使用”に変更しても良い）。また、マイグレーション実行プログラム７０１は、図２２Ｂに示すように、アドレスマップ管理テーブル８０１において、マイグレーション先の内部ＬＤＥＶのＬＤＥＶ番号（ＶＤＥＶ番号）８０１１に、マイグレーション元のＬＤＥＶ番号８０３３を、新たなＬＤＥＶ番号（ＶＤＥＶ番号）８０１１として上書きする。
【００８１】
この後、例えば、図１７に示すように、ＮＡＳノード１０が、バーチャル内部ＬＤＥＶ＃２に格納されているファイルを指定したファイルリードリクエストをクライアント３０１から受信した場合、ＮＡＳノード１０は、プライマリストレージシステム６００に、バーチャル内部ＬＤＥＶ＃２とそのアクセス先アドレスとを指定したブロックリードリクエストを送信する。ＬＤＥＶ管理テーブル８０３及びアドレスマップ管理テーブル８０１は、それぞれ図２２Ａ及び図２２Ｂに例示した通りである。また、バーチャル内部ＬＤＥＶ＃２に対応したエクステント管理テーブル８６１では、そのアクセス先アドレスに対応した切替フラグ８６１５が“Ｏｎ”になっていて、ＶＤＥＶ番号８６１７が、バーチャル内部ＬＤＥＶ＃１のＶＤＥＶ番号になっていて、そのアクセス先アドレスに対応したエクステントＩＤ８６１６がある。バーチャル内部ＬＤＥＶ＃１に対応したエクステント管理テーブル８６１の、上記対応したエクステントＩＤ８６１６がＩＤ８６１１として記録されているレコードから、アドレス８６１２が特定される。このため、アクセス制御プログラム７０７は、ＮＡＳノード１０から受信したブロックリードリクエストに従って、バーチャル内部ＬＤＥＶ＃１に対応した外部ＬＤＥＶの、上記特定されたアドレス８６１２に対応した位置からデータを読み出して、ＮＡＳノード１０に送信することができる。つまり、内部ＬＤＥＶ＃２内のファイルであって、内部ＬＤＥＶ＃１に対応した外部ＬＤＥＶにファイル実体が存在するファイルが、アクセス先として指定された場合には、内部ＬＤＥＶ＃２に対応した外部ＬＤＥＶにアクセスされるのではなく、内部ＬＤＥＶ＃２、＃１に対応したエクステント管理テーブル８６１やアドレスマップ管理テーブル８０１により、内部ＬＤＥＶ＃１に対応した外部ＬＤＥＶにアクセスされる（つまり、アクセス経路が切替えられる）。
【００８２】
また、バーチャル内部ＬＤＥＶ＃１、＃２に対応したエクステント管理テーブル８６１に記載のアドレス８６１２には、アクセス属性８６１３“リードオンリー”が対応付けられている。そのため、マイグレーションされたデータは、書き込み不可であるが、バーチャル内部ＬＤＥＶ＃１、＃２のアクセス属性８０３４“リード／ライト”となっているので、マイグレーションされたデータが記憶されている位置以外の位置には、データを書きこむことができる。つまり、マイグレーション前は、内部ＬＤＥＶ単位でアクセス属性“リードオンリー”が設定されるが、マイグレーション後は、ファイル単位でアクセス属性“リードオンリー”が設定されることになる。例えば、ユーティリティプログラム７１５によって表示される、図１８Ａに例示のＧＵＩにおいて、ファイル名“file1.txt”のファイルのみをアーカイブ対象として指定してアーカイブ指示を出した後、そのファイルについてマイグレーションが行われた場合には、図１８ＢのＧＵＩに表れるように、そのファイルのアクセス属性は、マイグレーション先で“リードオンリー”となる。
【００８３】
以上が、第一の実施形態についての説明である。
【００８４】
なお、コンテンツ識別子管理テーブル８３５に記録されるハッシュ値は、ファイル単位でアーカイブ対象が指定された場合には、指定されたファイルのハッシュ値が記録され、ディレクトリ単位でアーカイブ対象が指定された場合には、指定されたディレクトリ内の各ファイルのハッシュ値が記録される。マイグレーションされるデータも、アーカイブ対象として指定されたファイル（或いは、アーカイブ対象として指定されたディレクトリ内のファイル）とすることができる。
【００８５】
また、マイグレーション実行プログラム７０１が、図１７に示すように、内部ＬＤＥＶ＃１、＃２に対応したエクステント管理テーブル８６１において、切替フラグ８６１５“Ｏｎ”に対応したアドレス８６１２から特定されるブロック分の容量（例えば、ブロック長５１２バイトとブロックの数との積）を、移行対象データ量から減算した値を、実際の移行対象データ量として報告することができる。より具体的には、例えば、第一のファイルのアクセス先が第二のファイルに切替えられる場合、第一のファイルが削除されたならば、その第一のファイルの実体が記憶されていたブロックの数を基に、節約された記憶容量が算出されても良い。また、例えば、第一のファイルがリンク置き換えされて対処されたのであれば、第一のファイルの実体が記憶されていたブロックの数から、置き換えられたリンクの情報を記憶したブロックの数を差し引いた値を基に、節約された記憶容量が算出されても良い。
【００８６】
また、例えば、ユーティリティプログラム７１５が、ＮＡＳノード１０で実行されても良い。ユーティリティプログラム７１５は、アーカイブ指示対象の各内部ＬＤＥＶ毎のコンテンツ識別子管理テーブル８３５を、ＮＡＳノード１０の記憶資源に保存しても良い。或るファイルのリードアクセスが実行される場合、ユーティリティプログラム７１５或いは判定制御プログラム７０５が、そのリード対象のファイルに対応したハッシュレコード上の、ユーティリティプログラム７１５が保存したコンテンツ識別子管理テーブル８３５にあるハッシュ値８３５１と、プライマリストレージシステム６００の記憶資源に記憶されているコンテンツ識別子管理テーブル８３５における、そのリード対象のファイルに対応したハッシュレコード上のハッシュ値８３５１とを比較し、同じ値であれば、リード対象のファイルの内容が正しいと判断し、そのファイルの読み出しを行い、違う値であれば、リード対象のファイルの内容が正しくないと判断し、その判断結果をリードアクセス元に回答しても良い。また、リードする場合に代えて、例えば、ファイルの保持期限が所定期間より遅い場合には、所定のタイミングで、上記の比較判断が実行されても良い。
【００８７】
上述した第一の実施形態によれば、アーカイブ対象となる複数のファイルの中に重複したファイルの有無が判定され、重複したファイルが見つかった場合には、重複したファイルのうちの少なくとも一つが残り、重複したファイルのうちの少なくとも一つが排除される。しかし、ＮＡＳノード１０には、重複したファイルがそのまま存在するように見える。エクステント管理テーブル８６１とアドレスマップ管理テーブル８０１に記録する情報を更新することで、排除されたファイルのアクセス先は、残されたファイルの実体のアクセス先に対応付けられる。これにより、ハッシュ値そのものをファイルのアドレスと使用する必要がなくなり、故に、ＮＡＳノード１０に専用のＡＰＩを備える必要を無くすことができる。
【００８８】
また、第一の実施形態によれば、セカンダリストレージシステム４０に格納されたファイルに関するアクセス属性など、ファイルのリポジトリに関する情報が、プライマリストレージシステム６００に集約される。このため、アーカイブ対象のファイルが増えて記憶容量を増やしたい場合には、アーカイブ用のストレージシステムとしてセカンダリストレージシステム４０を増設すれば良い。すなわち、アーカイブのための記憶容量を増やす場合、特殊な機能を備えた機器の導入は不要となり、既存製品のストレージシステムを有効に活用することができる。
【００８９】
また、第一の実施形態によれば、アーカイブ指示が発行された場合には、リアル内部ＬＤＥＶ３１からバーチャル内部ＬＤＥＶ１３２へのマイグレーションが行われ、その後、マイグレーション元のポート番号８０３１、ＬＵＮ８０３２及びＬＤＥＶ番号８０３３とマイグレーション先のポート番号８０３１、ＬＵＮ８０３２及びＬＤＥＶ番号８０３３が交換される。このため、アーカイブ対象のファイルのマイグレーション後でも、ＮＡＳノード１０はマイグレーション先を意識することなく、マイグレーション前と同様の場所を指定すれば、マイグレーション前と同様のデータを取得することができる。
【００９０】
＜第二の実施形態＞。
【００９１】
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する。
【００９２】
例えば、一又は複数のセカンダリストレージシステム４０に、複数の外部ＬＤＥＶが存在し、それら複数の外部ＬＤＥＶの特性（以下、外部ＬＤＥＶ特性）が異なっているとする。外部ＬＤＥＶ特性は、どんな種類の外部記憶装置（例えば外部ディスク５００）を利用して外部ＬＤＥＶが用意されたかによって異なる。外部ＬＤＥＶ特性としては、例えば、性能（例えば転送速度）、信頼性、価格及び記憶装置種類（例えば、ハードディスク、フラッシュメモリ）のうちの少なくとも一つを採用することができる。具体的には、例えば、外部記憶装置が高速且つ高信頼であれば、その外部記憶装置を利用して用意された外部ＬＤＥＶの外部ＬＤＥＶ特性は、高速／高信頼となる。また、例えば、外部記憶装置が低速且つ低価格であれば、その外部記憶装置を利用して用意された外部ＬＤＥＶの外部ＬＤＥＶ特性は、低速／低価格となる。以下の説明では、第一〜第三のバーチャル内部ＬＤＥＶにそれぞれ対応した第一〜第三の外部ＬＤＥＶがあり、第一の外部ＬＤＥＶの外部ＬＤＥＶ特性が高速／高信頼であり、第二及び第三の外部ＬＤＥＶの外部ＬＤＥＶ特性が低速／低価格であるとする。また、第一〜第三のバーチャル内部ＬＤＥＶに３つの重複したファイル（第一〜第三のファイル）がそれぞれマイグレーションされるとする。しかし、実際にマイグレーションされる（つまり外部ＬＤＥＶにファイルのデータ（実体）が書かれる）かどうかは、後述の排除判定基準によって制御される。また、以下の説明において、保持期限８６１４が遅い／早いとは、保持期限８６１４が示す期限が遅い（つまりより将来である）／早い、ということである。
【００９３】
図１９Ａに示すように、第一の実施形態では、重複したファイルのうちのどのファイルの実体を残しどのファイルの実体を排除（例えば削除或いはリンクの置き換え）するかの基準（以下、排除判定基準）は、ファイルの保持期限８６１４のみである。このため、例えば、ケース１のように、第一のファイルの保持期限８６１４が３つの重複したファイルのうち最も遅ければ、第一のファイルが第一の外部ＬＤＥＶに書き込まれ、第二及び第三のファイルは、第二及び第三の外部ＬＤＥＶに書き込まれない。このため、３つの重複したファイルの実体は、少なくとも、第一のファイルの保持期限８６１４が到達するまで、第一の外部ＬＤＥＶ（高速／高信頼の外部ＬＤＥＶ）で保存されることになる。しかし、ケース２のように、第三のファイルの保持期限８６１４が３つの重複したファイルのうち最も遅いとすると、３つの重複したファイルの実体は、第三の外部ＬＤＥＶ（低速／低価格の外部ＬＤＥＶ）で保存されることになる。このため、最も遅い期限まで保存されなければならないファイルの実体が、低速／低価格の外部ＬＤＥＶで保存され続けることになる。
【００９４】
そこで、図１９Ｂに示すように、第二の実施形態では、上記排除判定基準として、保持期限８６１４に加えて、外部ＬＤＥＶ特性も採用される。具体的には、例えば、図２０に示すように、アドレスマップ管理テーブル８０１´の各レコードに、外部ＬＤＥＶ特性８０１４が記録され、このテーブル８０１´を参照することにより、どのバーチャル内部ＬＤＥＶがどんな外部ＬＤＥＶ特性の外部ＬＤＥＶに対応付けられているかを特定することが可能となる。図１９Ｂに示すように、ケース１であれば、第一のファイルの保持期限８６１４が最も遅く、且つ、第一のファイルは第一のバーチャル内部ＬＤＥＶにマイグレーションされるので、結果的に、３つの重複したファイルの実体は、図１９Ａと同様に、第一の外部ＬＤＥＶのみに書き込まれる。しかし、例えば、ケース２では、第三のファイルの保持期限８６１４が最も遅く、第三のファイルは、それの保持期限８６１４が最も遅いので、第三のファイルの実体が第三の外部ＬＤＥＶに書かれ、且つ、第一のファイルについては、そのマイグレーション先が高速／高信頼の外部ＬＤＥＶに対応していることが考慮されて、第一のファイルの実体が第一の外部ＬＤＥＶに書き込まれる。また、第二のファイルについては、それの保持期限８６１４が最短であるため、実体は排除され、第一のファイルの実体と第三のファイルの実体とのうちのいずれかにアクセスされるようアドレス切替制御が行われる。どちらにアクセスされるようにするかは、保持期限８６１４が最も遅い第三のファイルの実体でも良いが、アクセス競合を考慮して、図１９Ｂに示すように、第一のファイルの実体とされても良い。また、例えば、第一の外部ＬＤＥＶで障害が発生した等の理由で、第一のファイルの実体が取得できない場合には、第一及び第二のファイルのアクセス先を第三のファイルに切替えるためにエクステント管理テーブル８６１を更新しても良い。これにより、ファイルを参照できないことを回避することができる。
【００９５】
図２１は、第二の実施形態でのアドレス制御処理の流れの一例を示す。
【００９６】
判定制御プログラム７０５が、アーカイブ対象の全ての内部ＬＤＥＶに対応した全てのコンテンツ識別子管理テーブル８３５を参照し、二以上の同一のハッシュ値８３５１を検索する（Ｓ５１）。もし、そのようなハッシュ値８３５１が見つからなければ、終了となって良い。
【００９７】
判定制御プログラム７０５は、二以上の同一のハッシュ値８３５１に対応した複数のファイルのマイグレーション先である一以上のバーチャル内部ＬＤＥＶの少なくとも一つ或いは全てについて、外部ＬＤＥＶ属性８０１４が対応付けられていなければ（Ｓ５２：ＮＯ）、Ｓ６１に進み、それら一以上のバーチャル内部ＬＤＥＶについて、外部ＬＤＥＶ属性８０１４が対応付けられていれば（Ｓ５２：ＹＥＳ）、Ｓ５４或いはＳ５６に進む。
【００９８】
Ｓ６１で、判定制御プログラム７０５は、二以上の同一のハッシュ値８３５１に対応した複数のファイルの保持期限８６１４から、最も遅い保持期限８６１４を選択する。具体的には、例えば、二以上の同一のハッシュ値８３５１のうちの選択ハッシュ値８３５１と一致ハッシュ値とのうち、保持期限８６１４が早いハッシュ値８３５１に対応した切替フラグ８６１５を“Ｏｎ”にしエクステントＩＤ８６１６を更新し、必要に応じて、ＶＤＥＶ番号８６１７を更新する。これを、判定制御プログラム７０５は、二以上の同一のハッシュ値８３５１の各々を選択ハッシュ値８３５１として実行する。その結果、二以上の同一のハッシュ値８３５１に対応した複数のファイルに、最も遅い保持期限８６１４が一つしかなければ、その保持期限８６１４が選択されて、Ｓ６２に進む。もし、最も遅い保持期限８６１４（つまり同一の保持期限８６１４）が複数個あれば、図２１のＳ７０に示すように、判定制御プログラム７０５は、切替フラグ８６１５“Ｏｎ”が多い保持期限８６１４（すなわち、アドレス切替元がたくさん存在するファイルに対応した保持期限８６１４）を、最も遅い保持期限８６１４として選択する。もし、切替フラグ８６１５“Ｏｎ”の数が同数であれば、判定制御プログラム７０５は、任意に選択した一つの保持期限８６１４（例えば比較元の保持期限８６１４）を最も遅い保持期限８６１４として選択する。
【００９９】
Ｓ６２で、判定制御プログラム７０５は、Ｓ６１で選択されなかった保持期限８６１４に対応する一以上のファイルがＳ６１で選択された保持期限８６１４に対応するファイルにアクセスされるよう、各エクステント管理テーブル８６１を更新する。具体的には、例えば、判定制御プログラム７０５は、選択された保持期限８６１４に対応する切替フラグ８６１５を“Ｏｆｆ”のまま変更せず、選択されなかった他の保持期限８６１４に対応する切替フラグ８６１５を“Ｏｎ”とする。また、判定制御プログラム７０５は、切替フラグ８６１５“Ｏｎ”に対応したエクステントＩＤ８６１６を、選択された保持期限８６１４に対応したレコード上のＩＤ８６１１に変更する。また、判定制御プログラム７０５は、切替フラグ８６１５“Ｏｎ”に対応したＶＤＥＶ番号８１６７を必要に応じて更新する。
【０１００】
Ｓ５２でＹＥＳの後、Ｓ５４に進むケースとしては、一以上の内部ＬＤＥＶに対応付けられている一以上の外部ＬＤＥＶ特性８０１４が全て“高速／高信頼”のケースである。Ｓ５６に進むケースとしては、それら一以上の外部ＬＤＥＶ特性８０１４に“高速／高信頼”と“低速／低価格”とが混在するケースである。もし、一以上の外部ＬＤＥＶ特性８０１４が全て“低速／低価格”であれば、Ｓ５４と同様の処理を、“低速／低価格”にについて行えば良い。
【０１０１】
Ｓ５４では、判定制御プログラム７０５は、二以上の同一のハッシュ値８３５１に対応した複数のファイル（“高速／高信頼”に対応した複数のファイル）の保持期限８６１４から、最も遅い保持期限８６１４を選択する。もし、最も遅い保持期限８６１４（つまり同一の保持期限８６１４）が複数個あれば、図２１のＳ７０を実行する。
【０１０２】
Ｓ５５で、判定制御プログラム７０５は、Ｓ５４で選択されなかった保持期限８６１４に対応する一以上のファイルがＳ５４で選択された保持期限８６１４に対応するファイルにアクセスされるよう、各エクステント管理テーブル８６１を更新する。
【０１０３】
Ｓ５６では、判定制御プログラム７０５は、二以上の同一のハッシュ値８３５１に対応した複数のファイルの保持期限８６１４のうち、外部ＬＤＥＶ特性８０１４“低速／低価格”に対応した一以上の保持期限８６１４から、最も遅い保持期限８６１４を選択する。もし、最も遅い保持期限８６１４（つまり同一の保持期限８６１４）が複数個あれば、図２１のＳ７０を実行する。また、このＳ５６において、“高速／高信頼”に対応した一以上の保持期限８６１４から最も遅い保持期限８６１４も選択されて良い。
【０１０４】
Ｓ５７では、判定制御プログラム７０５は、“高速／高信頼”について選択された最も遅い保持期限８６１４（以下、高速側期間８６１４）と、“低速／低価格”について選択された最も遅い保持期限８６１４（以下、低速側期間８６１４）とを比較する。
【０１０５】
Ｓ５７の比較の結果、低速側期間８６１４の方が高速側期間８６１４より長ければ（Ｓ５８：ＹＥＳ）、判定制御プログラム７０５は、低速側期間８６１４に対応した切替フラグ８６１５は“Ｏｆｆ”のままとし、“低速／低価格”についての他の保持期限８６１４に対応した切替フラグ８６１５を“Ｏｎ”とし、且つ、該他の保持期限８６１４に対応したファイルのアクセス先を、高速側期間８６１４に対応したファイルとするよう、該他の保持期限８６１４に対応したエクステントＩＤ８６１６等を更新する（Ｓ５９）。
【０１０６】
Ｓ５７の比較の結果、低速側期間８６１４が高速側期間８６１４以下であれば（Ｓ５８：ＮＯ）、判定制御プログラム７０５は、低速側期間８６１４に対応した切替フラグ８６１５と、“低速／低価格”についての他の保持期限８６１４に対応した切替フラグ８６１５を全て“Ｏｎ”とし、且つ、“低速／低価格”についての全てのファイルのアクセス先を、高速側期間８６１４に対応したファイルとするよう、それら全てのファイルに対応したエクステントＩＤ８６１６等を更新する（Ｓ６０）。
【０１０７】
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、ユーティリティプログラム７１５は、ＮＡＳノード１０にあっても良いし、プライマリストレージシステム600にあっても良い。また、ＮＡＳノード１０が利用するファイルシステム管理情報（図５に例示した情報）は、プライマリストレージシステム６００内の記憶資源（例えば内部ＬＤＥＶ）に格納されていても良い。また、例えば、ＮＡＳノード１０及び／又は管理端末１０６がプライマリストレージシステム６００に含まれても良い。また、例えば、仮想ＬＤＥＶで複数のファイルが重複しているが故に、それら複数のファイルのうちの一以上の或るファイルが外部ＬＤＥＶに格納され、それら複数のファイルのうちの一以上の或るファイル以外のファイル（以下、他のファイル）が外部ＬＤＥＶに格納されなかった場合、仮想ＬＤＥＶにおいて他のファイルが存在する記憶領域に対応した、外部ＬＤＥＶにおける記憶領域は、占有されていない記憶領域となるが、その占有されていない記憶領域は、利用可能とされても良い（例えば、占有されていない記憶領域に、何らかの情報が記憶されても良い）。
【図面の簡単な説明】
【０１０８】
【図１】図１は、本発明の第一の実施形態に係るコンピュータシステムの構成例を示すブロック図である。
【図２】図２Ａは、プライマリストレージシステムのコントローラ部内のＣＰＵで実行されるコンピュータプログラムの一例を示す。図２Ｂは、アドレスマップ管理テーブルの構成例を示す。図２Ｃは、ＬＤＥＶ管理テーブルの構成例を示す。
【図３】図３は、管理端末の構成例を示す。
【図４】図４は、ＮＡＳノード及びプライマリストレージシステムからの情報収集を示す。
【図５】図５は、ＮＡＳノードのファイルシステムプログラムが管理する、ディレクトリファイル情報のテーブルの一例を示す。
【図６】図６は、ファイルやディレクトリを格納する論理ボリュームに関する情報が記録されたテーブルと、プライマリストレージシステムで管理されているＬＤＥＶ管理テーブルの一部分とを示す。
【図７】図７は、コンテンツ識別子管理テーブルの構成例を示す。
【図８】図８は、第一の実施形態に係るコンピュータシステムで行われる処理の流れの概要を示す。
【図９】図９は、図８のＳ１０１でアーカイブ対象の内部ＬＤＥＶにアクセス属性“リードオンリー”を設定することを示す図である。
【図１０】図１０は、図８のＳ１０２でコンテンツ識別子管理テーブルが作成されてプライマリストレージシステムに送信されることを示す図である。
【図１１】図１１は、エクステント管理テーブルの構成例を示す。
【図１２】図１２は、図８のＳ１０２で重複ファイルの有無の判定が行われることを示す図である。
【図１３】図１３は、図８のＳ１０２で実行されるアドレス制御処理の流れの一例を示す。
【図１４】図１４Ａは、一つのエクステント管理テーブルに選択ハッシュ値と一致ハッシュ値があることを示す。図１４Ｂは、図１４Ａのケースでのその一つのエクステント管理テーブルの更新結果の一例を示す。
【図１５】図１５Ａは、異なるエクステント管理テーブルに選択ハッシュ値と一致ハッシュ値があることを示す。図１５Ｂは、図１５Ａのケースにおける、選択ハッシュ値のあるエクステント管理テーブルの更新結果の一例を示す。
【図１６】図１６Ａは、図８のＳ１０３でのＬＤＥＶ間マイグレーションを示す。図１６Ｂは、マイグレーション前のＬＤＥＶ管理テーブルの一例を示す。図１６Ｃは、マイグレーション中のＬＤＥＶ管理テーブルの一例を示す。図１６Ｄは、マイグレーション前及びマイグレーション中のアドレスマップ管理テーブルの一例を示す。
【図１７】図１７は、マイグレーション後のアクセス経路を示す。
【図１８】図１８Ａは、ＵＩ制御プログラムによって表示される、マイグレーション前のＧＵＩの一例を示す。図１８Ｂは、マイグレーション後のＧＵＩの一例を示す。
【図１９】図１９Ａは、第一の実施形態での排除判定基準とそれに従うアドレス切替の結果を示す。図１９Ｂは、第二の実施形態での排除判定基準とそれに従うアドレス切替の結果を示す。
【図２０】図２０は、第二の実施形態でのアドレスマップ管理テーブルの構成例を示す。
【図２１】図２１は、第二の実施形態でのアドレス制御処理の流れの一例を示す。
【図２２】図２２Ａは、第一の実施形態でのマイグレーション後のＬＤＥＶ管理テーブルの一例を示す。図２２Ｂは、マイグレーション後のアドレスマップ管理テーブルの一例を示す。
【符号の説明】
【０１０９】
１０…ＮＡＳノード  ２０…コントローラ部  ２１…チャネルアダプタ（ＣＨＡ）  ２２…ディスクアダプタ（ＤＫＡ）  ２３…ＳＶＰ（Service Processor）  ２４…キャッシュメモリ  ２５…共有メモリ  ３０…ディスク部  ３１…リアル内部ＬＤＥＶ  １３２…バーチャル内部ＬＵ  ４０…セカンダリストレージシステム  ４２…外部ＬＤＥＶ  ３２…内部ＬＤＥＶ  ６００…プライマリストレージシステム
【図１】
2008242788.tif 000003
【図２】
2008242788.tif 000004
【図３】
2008242788.tif 000005
【図４】
2008242788.tif 000006
【図５】
2008242788.tif 000007
【図６】
2008242788.tif 000008
【図７】
2008242788.tif 000009
【図８】
2008242788.tif 000010
【図９】
2008242788.tif 000011
【図１０】
2008242788.tif 000012
【図１１】
2008242788.tif 000013
【図１２】
2008242788.tif 000014
【図１３】
2008242788.tif 000015
【図１４】
2008242788.tif 000016
【図１５】
2008242788.tif 000017
【図１６】
2008242788.tif 000018
【図１７】
2008242788.tif 000019
【図１８】
2008242788.tif 000020
【図１９】
2008242788.tif 000021
【図２０】
2008242788.tif 000022
【図２１】
2008242788.tif 000023
【図２２】
2008242788.tif 000024