(57)【要約】【課題】処理能力の低下を解決することができるストレージシステムを提供すること。【解決手段】ファイルサーバは、アドレスマップの複製を分散したデータであってファイルサーバ毎に割り当てられた識別データを有する各アドレスマップキャッシュをそれぞれ記憶している。また、記憶対象データの識別データと、当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けてアドレスマップキャッシュに記憶するアドレスマップ操作手段を備えている。そして、上記アドレスマップ操作手段は、新たな記憶対象データのアドレスデータに基づいてファイルサーバを特定すると共に、この特定されたファイルサーバが有するアドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた識別データを新たな記憶対象データの識別データとして当該識別データに新たな記憶対象データのアドレスデータを関連付けて記憶する。【選択図】図１４
2010231690.tif 000002
【特許請求の範囲】
【請求項１】
ストレージサーバと、当該ストレージサーバに対するデータの書き込み／読み出しを制御する複数のファイルサーバと、を備え、
前記ストレージサーバは、記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、前記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶しており、
前記各ファイルサーバは、前記アドレスマップの複製を分散したデータであって前記ファイルサーバ毎に予め割り当てられた前記識別データを有する各アドレスマップキャッシュをそれぞれ記憶しており、前記ストレージサーバに新たに前記記憶対象データを格納した際に、当該記憶対象データの前記識別データと、当該記憶対象データのデータ内容に基づいて生成された前記アドレスデータと、を関連付けて前記アドレスマップキャッシュに記憶するアドレスマップ操作手段を備え、
前記アドレスマップ操作手段は、前記新たな記憶対象データの前記アドレスデータに基づいて前記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する前記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた前記識別データを前記新たな記憶対象データの識別データとして当該識別データに前記新たな記憶対象データの前記アドレスデータを関連付けて記憶する、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記アドレスマップ操作手段は、前記新たな記憶対象データの前記アドレスデータの少なくとも一部に基づいて特定される数値と、前記ファイルサーバの数と、に基づいて判定値を算出し、この判定値に基づいて前記ファイルサーバを特定する、
ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
前記アドレスマップ操作手段は、前記アドレスデータの少なくとも一部に基づいて特定される数値を、前記ファイルサーバの数で割った余りを、前記判定値として算出する、
ストレージシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のストレージシステムであって、
前記記憶対象データは、所定のファイルサーバを分散した各ブロックデータを前記ストレージサーバに格納した場合に、当該各ブロックデータの格納位置をそれぞれ参照する各ブロックアドレスデータを含むアドレスリストデータである、
ストレージシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のストレージシステムであって、
前記各ファイルサーバは、前記アドレスマップキャッシュを複数記憶しており、所定の前記ファイルサーバの障害発生時に、当該障害が発生したファイルサーバに記憶されている前記複数のアドレスマップキャッシュを、複数の他の前記ファイルサーバにそれぞれ分散して記憶するアドレスマップ分散手段を備えた、
ストレージシステム。
【請求項６】
請求項５記載のストレージシステムであって、
前記各ファイルサーバは、ストレージシステムに装備されている前記ファイルサーバの数をｎとした場合に、ｎ−１の整数倍の前記アドレスマップキャッシュをそれぞれ記憶しており、
前記アドレスマップ分散手段は、所定の前記ファイルサーバの障害発生時に、当該障害が発生したファイルサーバに記憶されている前記アドレスマップキャッシュを、複数の他の前記ファイルサーバにそれぞれ均等に分散して記憶する、
ストレージシステム。
【請求項７】
請求項１乃至６のいずれか一項に記載のストレージシステムであって、
前記アドレスマップ操作手段は、前記ストレージサーバに記憶された前記記憶対象データの前記アドレスデータと、当該記憶対象データの前記識別データと、を関連付けて、当該記憶対象データを記憶している前記ストレージサーバに予め対応して設定されている前記ファイルサーバが有する前記アドレスマップキャッシュに記憶する、
ストレージシステム。
【請求項８】
請求項７記載のストレージシステムであって、
前記アドレスマップ操作手段は、前記新たな記憶対象データの前記アドレスデータの少なくとも一部に基づいて特定される数値と、前記ファイルサーバの数と、に基づいて算出される判定値毎に相互に対応して設定された前記ストレージサーバと前記ファイルサーバとに、前記記憶対象データと、当該記憶対象データの前記識別データ及び当該記憶対象データのデータ内容に基づいて生成された前記アドレスデータを関連付けたデータと、をそれぞれ記憶する、
ストレージシステム。
【請求項９】
記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、前記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶したストレージサーバに対して、データの書き込み／読み出しを制御する複数のファイルサーバが、前記アドレスマップの複製を分散したデータであり前記ファイルサーバ毎に予め割り当てられた前記識別データを有する各アドレスマップキャッシュをそれぞれ記憶している場合に、前記各ファイルサーバに、
前記ストレージサーバに新たに前記記憶対象データを格納した際に、当該記憶対象データの前記識別データと、当該記憶対象データのデータ内容に基づいて生成された前記アドレスデータと、を関連付けて前記アドレスマップキャッシュに記憶するアドレスマップ操作手段を実現させると共に、
前記アドレスマップ操作手段は、前記新たな記憶対象データの前記アドレスデータに基づいて前記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する前記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた前記識別データを前記新たな記憶対象データの識別データとして当該識別データに前記新たな記憶対象データの前記アドレスデータを関連付けて記憶する、
プログラム。
【請求項１０】
請求項９記載のプログラムであって、
前記アドレスマップ操作手段は、前記新たな記憶対象データの前記アドレスデータの少なくとも一部に基づいて特定される数値と、前記ファイルサーバの数と、に基づいて判定値を算出し、この判定値に基づいて前記ファイルサーバを特定する、
プログラム。
【請求項１１】
記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、前記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶したストレージサーバに対して、データの書き込み／読み出しを制御すると共に、前記アドレスマップの複製を分散したデータであり前記ファイルサーバ毎に予め割り当てられた前記識別データを有する各アドレスマップキャッシュをそれぞれ記憶している複数のファイルサーバにて、
前記ストレージサーバに新たに前記記憶対象データを格納した際に、当該記憶対象データの前記識別データと、当該記憶対象データのデータ内容に基づいて生成された前記アドレスデータと、を関連付けて前記アドレスマップキャッシュに記憶し、
前記アドレスマップキャッシュに記憶するときに、前記新たな記憶対象データの前記アドレスデータに基づいて前記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する前記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた前記識別データを前記新たな記憶対象データの識別データとして当該識別データに前記新たな記憶対象データの前記アドレスデータを関連付けて記憶する、
ファイル管理方法。
【請求項１２】
請求項１１記載のファイル管理方法であって、
前記ファイルサーバを特定するときに、前記新たな記憶対象データの前記アドレスデータの少なくとも一部に基づいて特定される数値と、前記ファイルサーバの数と、に基づいて判定値を算出し、この判定値に基づいて前記ファイルサーバを特定する、
ファイル管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、格納したデータの内容に応じて格納位置を管理するコンテンツアドレス型のストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントデータに分割すると共に、冗長データとなるフラグメントデータをさらに付加して、これら複数のフラグメントデータをそれぞれ複数の記憶装置にそれぞれ格納している。
【０００４】
そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントデータを読み出し、複数のフラグメントデータから分割前の所定のデータを復元することができる。
【０００５】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される。このため、重複データであれば同じコンテンツアドレスが生成され、当該コンテンツアドレスにて同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【０００６】
ここで、UNIX（登録商標）などのファイルシステムでは、ファイルデータを複数のブロックに分割してディスクに格納し、１つのファイルデータを構成する各ブロックを参照するアドレスのリストを、inodeという管理情報に格納するが、そのinodeのディスク上のアドレスは、inode番号から計算式で求める。ところが、コンテンツアドレスストレージシステムでは、格納しているデータの内容を変更すると、データの格納位置（コンテンツアドレス）が変化するため、計算で求めるのではなく、ＪＦＳ（Journaled File System）などのファイルシステムのように、inode番号とinodeのコンテンツアドレスの対応表（imap）を持つのが一般的である。ここで、図１に、imapの概略図を示す。この図に示すように、imap２２０ａはコンテンツアドレスストレージ２２０内に保存されている。
【０００７】
そして、コンテンツアドレスストレージシステムでは、ファイルシステムを複数のファイルサーバで分散処理する場合に、各々のファイルサーバがimapをキャッシュする。このとき、複数のファイルサーバが、同時にimap内の同じinodeを更新しないよう、一般的に以下のような方法がとられる。この方法について、図２を参照して説明する。
【０００８】
まず、imap２２０ａをファイルサーバ２１１，２１２，２１３の数で分割し、それぞれのファイルサーバ２１１，２１２，２１３が分割したimap２１０，２２０，２３０を１つずつキャッシュして管理するようにする。そして、ファイルの作成の際に、ファイルサーバ２１１，２１２，２１３がinode番号とinodeのコンテンツアドレスの対応データ（imapエントリ）を、imapキャッシュ２１０，２２０，２３０に追加するとき、そのファイルサーバ２１１，２１２，２１３の管理下のimapキャッシュ２１０，２２０，２３０の空きエントリに追加する。例えば、あるファイルサーバ（例えば、符号２１２）が、そのサーバの管理外のinodeを操作するときは、そのinodeのimapエントリが格納されているimapを担当するファイルサーバ（例えば、符号２１１）に処理を依頼する。このようにすることで、キャッシュしているimapの更新がファイルサーバ内で完結するため、同時更新の問題が発生しなくなる。
【０００９】
しかしながら、上述した方法では、１つのファイルサーバに大量のファイル作成要求があると、図２に示すように、そのファイルサーバが管理するimapキャッシュのみが増大する。すると、imapの量が多いサーバにアクセスが集中してしまい、システムの処理性能が低下する、という問題が生じる。
【００１０】
一方で、データを分散して記憶することに関連する技術が、上述した特許文献１に開示されている。この文献では、記憶対象となるデータのコンテンツアドレスの種別に応じて、予め種別毎に設定されたストレージノードに、記憶対象データを記憶している。これに伴い、コンテンツアドレスと記憶位置を関連付けるインデックスも、コンテンツアドレスに含まれるデータ内容に応じて、各ストレージノードやその上位に位置するアクセスノードに分散して記憶している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した特許文献１に開示の分散処理では、記憶対象データのコンテンツアドレス内の特定の文字で、分散先となるサーバを特定している。つまり、記憶対象データを管理するアクセスノードを、コンテンツアドレスを検索するための検索キーとして用いる文字を使用している。このような場合に、既に記憶されている記憶対象データが後に更新されると、当該記憶対象データから生成されるコンテンツアドレスも変更されることとなり、格納先のストレージノードやこれを管理するアクセスノードを変更する必要も生じる。従って、ストレージシステムにおけるデータの管理が煩雑となり、システムの処理性能が低下する、という問題が生じる。
【００１３】
このため、本発明の目的は、上述した課題である、ストレージシステム全体における処理性能の低下を解決することができるストレージシステムを提供することにある。
【課題を解決するための手段】
【００１４】
かかる目的を達成するため本発明の一形態であるストレージシステムは、
ストレージサーバと、当該ストレージサーバに対するデータの書き込み／読み出しを制御する複数のファイルサーバと、を備えている。
【００１５】
そして、上記ストレージサーバは、記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、上記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶している。
【００１６】
また、上記各ファイルサーバは、上記アドレスマップの複製を分散したデータであって上記ファイルサーバ毎に予め割り当てられた上記識別データを有する各アドレスマップキャッシュをそれぞれ記憶しており、上記ストレージサーバに新たに上記記憶対象データを格納した際に、当該記憶対象データの上記識別データと、当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータと、を関連付けて上記アドレスマップキャッシュに記憶するアドレスマップ操作手段を備えている。
【００１７】
さらに、上記アドレスマップ操作手段は、上記新たな記憶対象データの上記アドレスデータに基づいて上記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する上記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた上記識別データを上記新たな記憶対象データの識別データとして当該識別データに上記新たな記憶対象データの上記アドレスデータを関連付けて記憶する、という構成を採る。
【００１８】
また、本発明の他の形態であるプログラムは、
記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、上記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶したストレージサーバに対して、データの書き込み／読み出しを制御する複数のファイルサーバが、上記アドレスマップの複製を分散したデータであり上記ファイルサーバ毎に予め割り当てられた上記識別データを有する各アドレスマップキャッシュをそれぞれ記憶している場合に、上記各ファイルサーバに、
上記ストレージサーバに新たに上記記憶対象データを格納した際に、当該記憶対象データの上記識別データと、当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータと、を関連付けて上記アドレスマップキャッシュに記憶するアドレスマップ操作手段を実現させるプログラムである。
【００１９】
そして、上記アドレスマップ操作手段は、上記新たな記憶対象データの上記アドレスデータに基づいて上記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する上記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた上記識別データを上記新たな記憶対象データの識別データとして当該識別データに上記新たな記憶対象データの上記アドレスデータを関連付けて記憶する機能を有する。
【００２０】
また、本発明の他の形態であるファイル管理方法は、
記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、上記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶したストレージサーバに対して、データの書き込み／読み出しを制御すると共に、上記アドレスマップの複製を分散したデータであり上記ファイルサーバ毎に予め割り当てられた上記識別データを有する各アドレスマップキャッシュをそれぞれ記憶している複数のファイルサーバにて、
上記ストレージサーバに新たに上記記憶対象データを格納した際に、当該記憶対象データの上記識別データと、当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータと、を関連付けて上記アドレスマップキャッシュに記憶する。
【００２１】
そして、上記アドレスマップキャッシュに記憶するときに、上記新たな記憶対象データの上記アドレスデータに基づいて上記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する上記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた上記識別データを上記新たな記憶対象データの識別データとして当該識別データに上記新たな記憶対象データの上記アドレスデータを関連付けて記憶する、という構成を採る。
【発明の効果】
【００２２】
本発明は、以上のように構成されることにより、ストレージシステム全体における処理能力の向上を図ることができる。
【図面の簡単な説明】
【００２３】
【図１】本発明に関連するコンテンツアドレスストレージシステムの構成を示す図である。
【図２】本発明に関連するコンテンツアドレスストレージシステムの構成を示す図であり、imapの様子を示す図である。
【図３】実施形態１におけるコンテンツアドレスストレージシステムの構成を示す機能ブロック図である。
【図４】図３に開示したファイルサーバに記憶されているinodeとファイルサーバとの対応表を示す図である。
【図５】図３に開示したコンテンツアドレスストレージシステムにおけるimapの様子を示す図である。
【図６】実施形態２におけるコンテンツアドレスストレージシステムの構成を示す機能ブロック図である。
【図７】図６に開示したコンテンツアドレスストレージシステムにおけるimapの様子を示す図である。
【図８】図６に開示したファイルサーバに記憶されているinodeとimapブロックとファイルサーバとの対応表を示す図である。
【図９】図６に開示したコンテンツアドレスストレージシステムにおけるimapの様子を示す図である。
【図１０】図８に開示したinodeとimapブロックとファイルサーバとの対応表の更新後の様子を示す図である。
【図１１】実施形態３におけるコンテンツアドレスストレージシステム全体の構成を示すブロック図である。
【図１２】実施形態３におけるコンテンツアドレスストレージシステム全体の構成の他の例を示すブロック図である。
【図１３】図１２に開示したファイルサーバに記憶されているinodeとimapブロックとファイルサーバとストレージサーバとの対応表を示す図である。
【図１４】実施形態４におけるコンテンツアドレスストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００２４】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至図５を参照して説明する。図３は、本実施形態におけるコンテンツアドレスストレージシステムの構成を示す機能ブロック図である。図４は、ファイルサーバに記憶されているinodeとファイルサーバとの対応表を示す図である。図５は、imapの様子を示す図である。
【００２５】
［構成］
図１に示すように、本発明におけるコンテンツアドレスストレージシステムは、相互に接続されたストレージサーバ２０とファイルサーバ１１，１２，１３とを備えている。また、コンテンツアドレスストレージシステムには、クライアント３１，３２，３３が接続されている。以下、各構成について詳述する。
【００２６】
上記クライアント３１，３２，３３は、ユーザが操作する情報処理端末であり、コンテンツアドレスストレージシステムに対して、ファイルの作成、更新、削除、読み出し、などの処理を要求する。なお、図３の例では、クライアント３１，３２はファイルサーバ１１に接続されており、クライアント３３はファイルサーバ１２に接続されている。
【００２７】
また、ストレージサーバ２０は、ディスク装置といった記憶装置を備えており、例えば、複数台のサーバコンピュータにて構成されている。そして、ストレージサーバ２０は、ファイルサーバ１１，１２，１３からのデータ記憶要求に応じて、ファイルデータ２０ｃを記憶する。なお、このファイルデータ２０ｃは、複数のブロックデータに分割されて、複数のストレージサーバに分散されて記憶される。
【００２８】
また、ストレージサーバ２０は、上述したファイルデータ２０ｃを分割した各ブロックデータの格納位置を参照する当該各ブロックデータの各コンテンツアドレス（ブロックアドレスデータ）のリストを含むinode２０ｂ（アドレスリストデータ）を記憶している。つまり、inode２０ｂは、ファイルデータ２０ｃを再構築する上で必要な情報であり、当該ファイルデータ２０ｃを形成する各ブロックデータのそれぞれの格納位置を特定する情報を全て有している。従って、上記inodeを参照して、当該inodeに含まれる各コンテンツアドレスにて参照される格納位置から、ファイルデータ２０ｃを形成する全てのブロックデータを読み出すことができ、当該ファイルデータ２０ｃを再構築することができる。なお、inodeには、当該inodeつまりファイルデータ２０ｃを識別するための識別データであるinode番号（例えば、「inode#1」など）が対応づけられる。
【００２９】
また、ストレージサーバ２０は、上記inode２０ｂの識別データと、当該inode２０ｂの格納位置を参照するデータであり当該inodeのデータ内容に基づいて算出された「コンテンツアドレス」（アドレスデータ）と、を関連付けて記憶した対応表であるimap２０ａ（アドレスマップ）を記憶している。なお、コンテンツアドレスは、格納されたinode２０ｂのデータ内容の全部または一部から、ハッシュ関数またはそれに類似する計算方法で算出された値である。このようにして、上述したimap２０ａ、inode２０ｂ、ファイルデータ２０ｃにて、ファイルシステムが構成されている。
【００３０】
また、ファイルサーバ１１，１２，１３は、上述したストレージサーバ２０に対して、ファイルデータやそのinodeを格納したり、格納されているファイルデータを読み出したりと、ストレージサーバ２０に対するデータの記録再生制御を行うサーバコンピュータである。これにより、ストレージサーバ２０に格納されているファイルシステムを、クライアント３１，３２，３３に提供している。ここで、各ファイルサーバ１１，１２，１３は、ほぼ同一の構成を採っているため、以下では特に符号１１に示すファイルサーバの構成について詳述する。
【００３１】
上記ファイルサーバ１１は、装備されている演算装置にプログラムが組み込まれることによって構築された、imap操作部１１ｂを備えている。また、ファイルサーバ１１は、装備されている記憶装置に、imap分割情報記憶部１１ａと、imap一時記憶部１１ｃと、を備えている。
【００３２】
上記imap一時記憶部１１ｃは、ファイルサーバ１１が管理するimapの複製を保持している。ここで、imap一時記憶部１１ｃに記憶されているimapのキャッシュの一例を、図５に示す。この図に示すように、imapキャッシュ１１０（アドレスマップキャッシュ）は、上述したストレージサーバ２０に記憶されているimap２０ａの一部の複製である。つまり、各ファイルサーバ１１は、ストレージサーバ２０に記憶されているimap２０ａを分散して、当該imap２０ａの複製の一部をそれぞれ重複することなく記憶している。
【００３３】
そして、特に、本発明では、ファイルサーバ１１毎に複数のinode番号が予め割り当てられており、そのファイルサーバが、当該割り当てられたinode番号に対応づけられたinodeつまりファイルデータの書き込みや読み出し等を管理する。例えば、inodeを１００個ずつで１つのグループとし、inode番号＃１〜＃１００のimapキャッシュをあるファイルサーバが管理し、inode番号＃１０１〜＃２００，＃２０１〜＃３００のimapを、別の各ファイルサーバがそれぞれ管理する。
【００３４】
また、上記imap操作部１１ｂ（アドレスマップ操作手段）は、上述したimapキャッシュ１１０に対して、ストレージサーバ２０に記憶されたファイルデータを分割した各ブロックデータの格納位置をそれぞれ参照する各コンテンツアドレスリストを含むinodeのinode番号と、当該inodeの格納位置を参照するinode自体のコンテンツアドレスと、を関連付けたimapエントリの追加、更新、削除、読み込みを行う。このとき、imap操作部１１ｂは、当該imap操作部１１ｂが装備されているファイルサーバ１１にて予め管理すると設定されているinode番号（＃１〜＃１００）のimapエントリを管理する。一方で、ファイルサーバ１１の管理していないinodeの処理を行う場合には、別のファイルサーバのimap操作部１２ｂ，１３ｂと連携し、当該inodeを管理しているファイルサーバのimapキャッシュ１２０，１３０に対して処理を行う。
【００３５】
そして、上記imap操作部１１ｂは、ストレージサーバ２０に対して新たにファイルデータを記憶する際には、ファイルデータ及び当該ファイルデータのinodeが記憶された後に、当該inodeのデータ自体から算出されたコンテンツアドレスから、当該inodeを管理するファイルサーバを特定する。つまり、後述するように、inodeを識別するinode番号と、inodeの格納位置を参照する当該inodeのコンテンツアドレスと、を関連付けたimapエントリを追加するimapキャッシュを有するファイルサーバを特定する。そして、特定されたファイルサーバ（ここでは、符号１１のファイルサーバが特定されたとする）が装備するimap操作部１１ｂは、当該特定されたファイルサーバ１１が管理するよう予め割り当てられているinode番号のうち空いているinode番号を、ファイルデータのinodeを識別するinode番号として割り当てる。そして、このinode番号と、当該inode番号にて特定されるinodeの格納位置を参照する当該inode自体のコンテンツアドレスと、を関連付けたimapエントリを、ファイルサーバ１１内のimapキャッシュ１１０に対して追加する。
【００３６】
ここで、上述したimapエントリを追加するファイルサーバを特定する処理について詳述する。imap操作部１１ｂは、格納したinodeのデータ内容の一部または全部に基づいて算出したコンテンツアドレスの値から、予め設定されファイルサーバ内に記憶されている算出式を用いて、「判定値」を算出する。一例としては、コンテンツアドレスの一部又は全部のデータを数値化し、この数値をファイルサーバの数で割った「余り」の値を、「判定値」として算出する。つまり、本実施形態では、コンテンツアドレスから数値を求め、この数値をファイルサーバ数である「３」で割る。すると、その余りは、「０」、「１」、「２」の３通りとなる。そして、この算出された余りである判定値に応じて、imapエントリを追加するファイルサーバを決定する。
【００３７】
なお、上記imap分割情報記憶部１１ａは、図４に示すように、予め設定された上記判定値とファイルサーバとの対応表を記憶している。この対応表は、具体的には、判定値毎に、予めファイルサーバ毎に割り当てられたinode番号と、ファイルサーバ１１と、が対応付けられて設定されている。例えば、上述したように、inodeのコンテンツアドレスを３で割った余りが０である場合には、inode番号＃１〜＃１００が割り当てられたファイルサーバ１１にimapエントリを追加して、当該ファイルサーバ１１にて管理するよう設定されている。
【００３８】
そして、上述した対応表に応じて、上記imap操作部１１ｂは、imapエントリを追加するファイルサーバを決定し、そのファイルサーバに対して、inode番号とコンテンツアドレスを関連付けたimapエントリの追加を依頼する。すると、imapエントリの追加の依頼を受けたファイルサーバは、自己のimapキャッシュに、依頼されたinodeのimapエントリを追加する。
【００３９】
ここで、上記判定値の算出時には、格納したinodeのコンテンツアドレスの一部又は全部を用いているが、コンテンツアドレスは、inodeからハッシュ関数または類似する計算方法にて計算した値であるため、コンテンツアドレスの値は一様に分散することとなる。そして、さらに、この一様に分散したコンテンツアドレスの一部又は全部にて特定される数値から、ファイルサーバ台数で割った余りを求めることで、算出された余りの値も、一様に分散することとなる。従って、imapキャッシュに新たに追加するimapエントリも、ファイルサーバ間に一様に分散させることができ、一部のファイルサーバに集中して格納されることを抑制できる。
【００４０】
なお、上記では、ファイルサーバが３台の場合を例示したが、その数は限定されず、ストレージシステムは、いかなる台数のファイルサーバを備えていてもよい。また、上記では、ファイルサーバ１１に２台のクライアント、ファイルサーバ１２に１台のクライアントが接続されている場合を説明したが、１つのファイルサーバにいくつのクライアントが接続していてもよい。また、上記では、クライアント、ファイルサーバ、ストレージサーバが、それぞれ物理的に別のコンピュータにて構成されている場合を説明したが、そのうちいくつか、あるいは、全てが、同一のコンピュータにて構成されていてもよい。
【００４１】
［動作］
次に、上述したストレージシステムつまりファイルサーバ１１，１２，１３の動作を説明する。なお、ここでは、上記imap分割情報記憶部１１ａには、図４に示すような、inode番号、inodeのコンテンツアドレスの条件、および、inodeを管理するファイルサーバの対応表を記憶している。具体的には、ファイルサーバ１１にはinode番号１〜１００が割り当てられており、当該inode番号１〜１００を用いて、当該ファイルサーバ１１が有するimapキャッシュ１１０で、コンテンツアドレスを６で割った余りが０となるinodeを管理するよう設定されている。同様に、ファイルサーバ１２，１３には、それぞれinode番号１０１〜２００，２０１〜３００が割り当てられており、それぞれのファイルサーバ１２，１３のimapキャッシュ１２０，１３０にて、余りがそれぞれ１，２となるinodeをそれぞれ管理するよう設定されていることとする。
【００４２】
まず、クライアント３１がファイルサーバ１１にファイルデータを書き込むよう要求すると、当該ファイルサーバ１１はファイルデータをブロックデータに分割して、各ブロックデータをそれぞれストレージサーバ２０に分散して格納する。すると、ストレージサーバ２０から各ブロックサーバの各コンテンツアドレスの返却を受けるが、これら各ブロックデータの各コンテンツアドレスのリストを含むinodeを作成する。続いて、作成したinodeをストレージサーバ２０に格納し、当該ストレージサーバ２０から返却されたコンテンツアドレスをimap操作部１１ｂに渡し、当該imap操作部１１ｂに当該inodeのimapエントリをimapキャッシュに追加するよう依頼する。
【００４３】
続いて、imap操作部１１ｂは、受け取ったinodeのコンテンツアドレスを数値化した値を３で割った余り（ここでは「１」とする）と、imap分割情報記憶部１１ａに記憶している対応表（図４参照）から、当該inodeのimapエントリを追加すべきimapキャッシュを記憶しているファイルサーバを、ファイルサーバ１２と決定する。そして、imap操作部１１ｂは、ファイルサーバ１２のimap操作部１２ｂにコンテンツアドレスを転送し、imapキャッシュへの追加を依頼する。
【００４４】
すると、inodeのコンテンツアドレスを受け取ったファイルサーバ１２のimap操作部１２ｂは、当該ファイルサーバ１２に割り当てられた未使用のinode番号（ここでは１０１とする）を、inodeの識別データとして割り当てた上で、図５に示すように、imap一時記憶部１２ｃに保存しているimapキャッシュ１２０に、当該inodeのimapエントリを追加する。つまり、上述したようにinodeに割り当てたinode番号と、当該inodeのコンテンツアドレスと、を関連付けたimapエントリを、imapキャッシュ１２０に記憶する。そして、そのinode番号を、ファイルサーバ１１のimap操作部１１ｂに返却する。すると、ファイルサーバ１１のimap操作部１１ｂは、返却されたinode番号を、書き込んだファイルデータを識別するinode番号として、ディレクトリエントリに記録する。以上により、ファイルデータの書き込みが完了する。なお、ディレクトリエントリへの記録の方法に関しては、ファイルシステムの一般的な動作であるため、ここでは詳述しない。
【００４５】
次に、クライアント３１がファイルを更新する場合の動作を説明する。なお、inode番号と、inodeのコンテンツアドレスの条件、および、inodeを管理するファイルサーバの対応表は、図４に示すように、上述したファイル作成のときと同様である。
【００４６】
まず、クライアント３１がファイルサーバ１１に対してファイルデータの更新を依頼すると、まず、ファイルデータとinode番号とが関連付けられたディレクトリエントリから、更新するファイルデータのinode番号を特定する。また、ファイルサーバ１１は更新するファイルデータを複数のブロックデータに分割してストレージサーバ２０に格納し、当該各ブロックデータの各コンテンツアドレスを含むよう、当該ファイルデータのinodeを更新する。そして、更新したinodeをストレージサーバ２０へ格納し、当該ストレージサーバ２０から返却されたinodeのコンテンツアドレスと、上述したように特定したファイルデータのinode番号を、imap操作部１１ｂに伝え、imapの更新を依頼する。
【００４７】
続いて、更新依頼を受けたimap操作部１１ｂは、渡されたinode番号（ここでは１０１とする）と、imap分割情報記憶部１１ａから、更新したinodeを管理するファイルサーバを、ファイルサーバ１２と判断する。そして、更新されたinodeのコンテンツアドレスとそのinode番号を、ファイルサーバ１２のimap操作部１２ｂへ転送し、imapの更新を依頼する。
【００４８】
すると、ファイルサーバ１２のimap操作部１２ｂは、新しいコンテンツアドレスで、imapキャッシュ１２０内の該当するinodeのimapエントリを上書きする。つまり、更新されたファイルデータのinode番号に関連付けられたコンテンツアドレスを、新たなinodeのコンテンツアドレスに更新する。そして、更新前のコンテンツアドレスにて参照されていた古いinodeを、ストレージサーバ２０から削除する。以上により、ファイルの更新が完了する。
【００４９】
次に、クライアント３１がファイルを削除する場合の動作を説明する。なお、inode番号と、inodeのコンテンツアドレスの条件、および、inodeを管理するファイルサーバの対応表は、図４に示すように、上述したファイル作成のときと同様である。
【００５０】
まず、クライアント３１がファイルサーバ１１でファイルデータを削除すると、ファイルサーバ１１は、当該ファイルデータのinode番号をimap操作部１１ｂに伝え、当該inodeのimapエントリの削除を依頼する。すると、削除依頼を受けたimap操作部１１ｂは、渡されたinode番号（ここでは１０１とする）と、imap分割情報記憶部１１ａから、削除するinodeを管理するファイルサーバを、ファイルサーバ１２と判断する。そして、inode番号をファイルサーバ１２のimap操作部１２ｂへ転送し、imapからの削除を依頼する。
【００５１】
続いて、ファイルサーバ１２のimap操作部１２ｂは、imapキャッシュ１２０からinode番号のimapエントリを削除する。また、当該inode番号に関連付けられたコンテンツアドレスが参照する格納位置に格納されたinodeを、ストレージサーバ２０から削除する。以上により、ファイルの削除が完了する。
【００５２】
次に、クライアント３１がファイルを読み込む場合の動作を説明する。なお、inode番号と、inodeのコンテンツアドレスの条件、および、inodeを管理するファイルサーバの対応表は、図４に示すように、上述したファイル作成のときと同様である。
【００５３】
まず、クライアント３１がファイルサーバ１１からファイルデータを読み込もうとすると、ファイルサーバ１１は当該ファイルデータのinode番号をimap操作部１１ｂに伝え、当該inode番号に関連付けられたコンテンツアドレスを要求する。すると、要求を受けたimap操作部１１ｂは、渡されたinode番号（ここでは１０１とする）と、imap分割情報記憶部１１ａから、削除すべきinodeを管理するファイルサーバを、ファイルサーバ１２と判断する。そして、inode番号をファイルサーバ１２のimap操作部１２ｂへ転送し、inodeのコンテンツアドレスを要求する。
【００５４】
続いて、ファイルサーバ１２のimap操作部１２ｂは、imapキャッシュ１２０を参照し、inode番号に対応するコンテンツアドレスを返却する。そして、コンテンツアドレスを受け取ったファイルサーバ１１は、当該コンテンツアドレスを用いて、ストレージサーバ２０からinodeを読み込み、inodeに従ってファイルデータを形成する各ブロックデータをストレージサーバ２０から読み込んで、ファイルデータを再構築する。そして、ファイルデータをクライアント３１に送信する。以上により、ファイルの読み込みが完了する。
【００５５】
以上のように、本実施形態では、ファイル作成時に、ファイルを作成したファイルサーバで当該ファイルのinodeを管理するのではなく、一様性のあるinodeのコンテンツアドレスを用いて、どのファイルサーバで管理するかを決定している。これにより、inodeの管理つまりimapエントリを、ファイルサーバ間でバランスよく分散させることができる。従って、後にファイルに対するアクセスが多数発生した場合であっても、かかるアクセスを均等に分散させることができ、特定のファイルサーバの負荷が増大することを抑制することができる。その結果、ストレージシステム全体における処理能力の向上を図ることができる。
【００５６】
そして、特に、本実施形態では、ファイルサーバに予め割り当てられているinode番号のうち、空いているinode番号に、新たに格納したファイルデータのinodeのコンテンツアドレスを関連付けて管理している。従って、仮に格納したファイルデータが更新され、そのデータ内容から特定されるコンテンツアドレスが変更された場合であっても、inode番号に関連付けられるコンテンツアドレスのみを変更すればよいため、引き続き同一のファイルサーバにてファイルを管理することができる。
【００５７】
そして、特に、inodeを分散させる値として、格納するデータのコンテンツアドレスを数値化した値を、ファイルサーバ数で割った余りを算出し、当該余りを全ての各ファイルサーバに割り当てることで、より均等に、inodeを全てのファイルサーバに分散させることができる。
【００５８】
なお、上記では、imapを分割する際に、各ファイルサーバが、連番のinodeを１００個単位で１つのファイルサーバで管理するように分割したが、inode番号をファイルサーバ数で割った余りを用いて、余りが等しいinodeを同じファイルサーバで管理するように分割するなど、inode番号から当該inodeが格納されているファイルサーバを判別できる方法であれば、別の方法でもよい。
【００５９】
また、上記では、コンテンツアドレスからinodeを管理するファイルサーバを求める方法として、コンテンツアドレスをファイルサーバ数で割った余りを用いているが、コンテンツアドレスの一部のデータを用いて（コンテンツアドレスは一部のデータを取り出しても一様性がある）、他の算出式にてimapエントリを追加するファイルサーバ（imapキャッシュ）を求めてもよい。
【００６０】
＜実施形態２＞
次に、本発明の第２の実施形態を、図６乃至図１０を参照して説明する。図６は、ファイルサーバの構成を示す機能ブロック図である。図７及び図９は、imapキャッシュの様子を示す図である。図８及び図１０は、ファイルサーバに記憶されているinodeとファイルサーバとの対応表を示す図である。
【００６１】
上述した実施形態１で説明したストレージシステムでは、ファイルサーバで障害が発生した場合に、そのファイルサーバが管理していたimapにアクセスすることができなくなり、そのimapで管理されているinodeのファイルにアクセスできなくなる。このような場合、一般的に障害が起きたファイルサーバのimapを、他の正常なファイルサーバにフェイルオーバーし、正常なファイルサーバを使って処理を継続する。
【００６２】
ところが、障害が起きたファイルサーバが管理していたimapを全て１台の正常なファイルサーバにフェイルオーバーした場合、その正常なファイルサーバは他のファイルサーバに比べて２倍のimapを管理する必要があるため、inodeの管理がファイルサーバ間でバランスよく分散しなくなるという問題がある。従って、フェイルオーバーが発生しても、それぞれのファイルサーバが管理するimapの数を均等にすることが課題となる。
【００６３】
これを解決するために、本実施形態におけるストレージシステムでは、imapを複数のブロック（imapブロック）に分割し、当該複数のimapブロックを各ファイルサーバに均等に分散させるという方法を用いる。以下、さらに詳述する。なお、以下では、特にファイルサーバ１１の構成について説明するが、他のファイルサーバ１２，１３も同様の構成を有し、同様に動作する。
【００６４】
まず、本実施形態におけるストレージシステムは、imapを複数のimapブロック（アドレスマップキャッシュ）に分割し、１つのファイルサーバで複数のimapブロックを管理する。このとき、ファイルサーバ間でimapブロックの数が均等に分散するようにする。なお、ファイルサーバ１１のimap分割情報記憶部１１ａには、図８に示すような、inode番号と、inodeのコンテンツアドレスの追加条件と、複数のimapエントリを格納するimapブロックと、ファイルサーバと、の対応を示す対応表を記憶している。
【００６５】
そして、ファイルサーバ１１のimap操作部１１ｂは、上記対応表に基づいて、ファイルのinodeのimapエントリを作成するときに、当該inodeを管理すべきファイルサーバ及びimapブロックを決定する。具体的には、まず、inodeのコンテンツアドレスをimapブロック数で割った余りを求め、この余りの値に応じて、上記対応表から、inodeを識別するinode番号とその格納位置を示すコンテンツアドレスとが関連付けられたimapエントリを追加するimapブロックと、inodeを管理するファイルサーバを決定する。これにより、図７に示すように、各ファイルサーバ１１等内のimap一時記憶部１１ｃ等内のimapキャッシュ１１０等に、複数のimapエントリが均等に格納されたimapブロックを、均等に記憶することができる。
【００６６】
そして、本実施形態におけるストレージシステムでは、図６に示すように、各ファイルサーバ１１等がimap分散部１１ｄ等（アドレスマップ分散手段）を備えており、ファイルサーバで障害が発生した場合、以下のようにしてフェイルオーバー処理を実行する。つまり、imap分散部１１ｄ等は、障害の発生したファイルサーバで管理されていたimapブロックを、各ファイルサーバにて管理するimapブロックの数が均等になるように、他の正常なファイルサーバに分配する（図９参照）。
【００６７】
以上のように、本実施形態では、ファイルサーバの障害発生時に、残りの正常なファイルサーバに、imapブロックを分配して管理する。つまり、imapエントリの追加時にはimapブロック間でinode数を均等に分散し、更に、ファイルサーバ間でimapブロック数を均等に分散しているため、ファイルサーバ間でinodeをバランスよく分散して管理することができる。
【００６８】
なお、inodeのimapエントリを格納するimapブロックを決定するために、inodeのコンテンツアドレスをimapブロック数で割った余りをimapブロック番号としたが、コンテンツアドレスの一様性を保つ他の計算方法（例えば、imapブロック数を２の累乗にして、コンテンツアドレスの一部のデータをそのままimapブロック番号として用いるなど）も考えられる。
【００６９】
次に、上述したファイルサーバの障害時の動作の具体例を、さらに説明する。なお、inode番号と、inodeのコンテンツアドレスの条件、imapブロック番号、および、inodeを管理するファイルサーバの対応表は、図８に示すように設定されていることとする。また、この対応表は、例えば、ファイルサーバ１１のimap分割情報記憶部１１ａに保存されているが、全てのファイルサーバ間で同期されている。
【００７０】
具体的に、図８に示す対応表は、以下の内容を設定している。つまり、ファイルサーバ１１にはinode番号１〜５０が割り当てられており、imapブロック０でコンテンツアドレスを６で割った余りが０となるinodeを管理するよう設定されている。また、ファイルサーバ１１にはinode番号５１〜１００が割り当てられており、imapブロック１でコンテンツアドレスを６で割った余りが１となるinodeを管理するよう設定されている。また、ファイルサーバ１２にはinode番号１０１〜１５０が割り当てられており、imapブロック２でコンテンツアドレスを６で割った余りが２となるinodeを管理するよう設定されている。また、ファイルサーバ１２にはinode番号１５１〜２００が割り当てられており、imapブロック３でコンテンツアドレスを６で割った余りが３となるinodeを管理するよう設定されている。なお、対応表の他の設定についての説明は省略する。
【００７１】
そして、ファイルサーバ１１がinode番号５１のinodeにアクセスする場合に、imap操作部１１ｂは、imap分割情報記憶部１１ａに保存されている上記対応表（図８参照）を参照することで、当該inodeがimapブロック１で管理されており、imapブロック１はファイルサーバ１１で管理されていると判断する。なお、その後、inodeにアクセスするなどその他の動作については、上述した実施形態１と同様であるため、その説明は省略する。
【００７２】
次に、フェイルオーバーの処理に関して説明する。まず、図９の×印に示すように、ファイルサーバ１１で障害が発生したとする。すると、ファイルサーバ１２がそれを検出し、ファイルサーバ１１が管理していたimapブロック０とimapブロック１を、図９の矢印に示すように、ファイルサーバ１２および１３に分配する。これにより、他の正常なファイルサーバ１２，１３は、それぞれimapブロックを３つずつ管理することとなる。
【００７３】
その後、ファイルサーバ１２は、inode番号と、inodeのコンテンツアドレスの条件、imapブロック番号、および、inodeを管理するファイルサーバの対応表を、図１０に示すように更新する。具体的には、ファイルサーバ１１に割り当てていた、コンテンツアドレスを６で割った余りが０，１のinodeを、それぞれファイルサーバ１２，１３に移動したブロック０，１に割り当てるよう、対応表を更新する。そして、その後、ファイルサーバ１２，１３は、新しく割り当てられたimapブロックの管理を引き継ぐ。以上により、フェイルオーバーが完了する。
【００７４】
次に、フェイルオーバー後にinodeにアクセスする場合の処理について説明する。上述したようにファイルサーバ１１で障害が発生した後に、ファイルサーバ１２がinode番号５１のinodeにアクセスする場合に、ファイルサーバ１２のimap操作部１２ｂは、imap分割情報記憶部に保存されている図１０に示す対応表に基づいて、当該inodeがimapブロック１で管理され、当該imapブロック１はファイルサーバ１３で管理されていると判断する。なお、その後、inodeにアクセスするなどその他の動作については、上述した実施形態１と同様であるため、その説明は省略する。
【００７５】
以上のように、本実施形態では、ファイルサーバに障害が生じた場合であっても、そのファイルサーバに記憶されていたimapブロックを他の正常なファイルサーバに均等に分散して記憶することができる。その結果、特定のファイルサーバの負荷が増大することを抑制することができ、ストレージシステム全体における処理能力の向上を図ることができる。
【００７６】
特に、本実施形態では、ファイルサーバが３台装備されている状況で、各ファイルサーバが２つのimapブロックを記憶している。つまり、ファイルサーバの台数をｎ（＝３）とした場合に、｛（ｎ−１）×１｝＝２つのimapブロックを、それぞれのファイルサーバが記憶している。これにより、１台のファイルサーバに障害が生じた場合には、当該ファイルサーバに記憶している２つのimapブロックを、残りの２つのファイルサーバに均等に分散させることができる。なお、上記では、１つのファイルサーバが２つのimapブロックを記憶して管理する場合を例示したが、例えば、ファイルサーバの台数をｎとした場合に、１つのファイルサーバが｛（ｎ−１）×整数｝の数のimapブロックを記憶していると望ましい。これにより、１台のファイルサーバに障害が生じた場合に、当該ファイルサーバに記憶されているimapブロックを、他のファイルサーバに均等に分散して配置することができる。但し、１つのファイルサーバが記憶して管理するimapブロックの数は、上述した数に限定されない。
【００７７】
＜実施形態３＞
次に、本発明の第３の実施形態を、図１１乃至図１３を参照して説明する。図１１は、本実施形態におけるストレージシステム全体の構成を示すブロック図である。図１２は、本実施形態におけるストレージシステム全体の他の構成を示すブロック図である。図１３は、ファイルサーバに記憶されているinodeとファイルサーバとの対応表を示す図である。
【００７８】
本実施形態では、ディレクトリに含まれているファイルデータのリストを取るときなど、ファイルへのアクセスは行わないが、一度に大量のinodeにアクセスすることがあるため、inodeアクセスの高速化を考える。
【００７９】
まず、上述してきたストレージシステムは、冗長性や負荷分散のため、一般的に複数のストレージサーバを備えており、全てのファイルサーバとストレージサーバ間で通信路を持っている。かかる構成において、inodeへのアクセスを高速化するために、これら全てのサーバ間の通信路を高速化する方法あるが、高いコストが必要となる。従って、低コストでinodeをアクセスを高速化させることが課題となる。
【００８０】
そこで、本実施形態では、inodeのアクセスを特定の通信路に集中させることで、当該通信路のみを高速化することでコストを低減する。なお、ファイルデータのアクセスに関しては任意の通信路を用いる。以下、具体的な方法について、まず、ファイルサーバ数とストレージサーバ数が同数の場合について述べる。なお、同数ではない場合については、後述する。
【００８１】
まず、ストレージサーバにinodeを格納する際、格納するinodeのコンテンツアドレスに従って、inodeを保存するストレージサーバを決定する。次に、格納したinodeを管理するファイルサーバも上述したようにinodeのコンテンツアドレスから決定するが、その際、１つのストレージサーバに格納したinodeは、全て１つのファイルサーバで管理されるようにファイルサーバを決定する。つまり、特定のストレージサーバにinodeを保存した場合に、この特定のストレージサーバに予め対応して設定された特定のファイルサーバのimapキャッシュに、保存したinode番号とinodeのコンテンツアドレスとを関連付けたimapエントリを記憶する。
【００８２】
そして、ストレージサーバのinodeにアクセスするのは、当該inodeを管理するファイルサーバからのみとする。別のファイルサーバが管理しているinodeにアクセスしたい場合は、当該inodeを管理しているファイルサーバに中継を依頼する。
【００８３】
この方法により、inodeアクセスの際の通信を、特定の通信路、つまり、inodeが格納されているストレージサーバと当該inodeを管理するファイルサーバ間、および、当該inodeにアクセスしたいファイルサーバと当該inodeを管理しているファイルサーバ間、に集中させることができる。
【００８４】
次に、上述したinodeアクセスの高速化の具体例を、図１１を参照して説明する。この例では、ストレージサーバ２０が、ストレージサーバ２１，２２，２３の３台で構成されていることとする。また、ファイルサーバ１１は、ストレージサーバ２１と高速な通信路で接続されているものとする。同様に、ファイルサーバ１２とストレージサーバ２２間、ファイルサーバ１３とストレージサーバ２３間も、それぞれ同様に高速な通信路で接続されているものとする。つまり、ファイルサーバとストレージサーバとは、相互に予め設定された特定のサーバ同士が、符号Ｌ１，Ｌ２，Ｌ３に示すように、高速な通信路で接続されている。さらに、ファイルサーバ１１，１２，１３間の通信路も、符号Ｌ４，Ｌ５，Ｌ６に示すように、高速な通信路で接続されているものとする。なお、ファイルサーバの構成やimap等の分散方法は、上述した実施形態に場合と同様であることとする。
【００８５】
そして、ストレージシステムに保存されるデータを格納するストレージサーバは、ファイルサーバにおけるinode管理の分散の方法と同様に、inodeのコンテンツアドレスを３で割った余りの値で決定されるものとする。例えば、記憶対象であるinodeのコンテンツアドレスの余りが０ならストレージサーバ２１に、余りが１ならストレージサーバ２２に、余りが２ならストレージサー２３に、それぞれ記憶対象となるinodeを格納することとする。
【００８６】
一例として、所定のinodeのコンテンツアドレスを３で割った余りが１とすると、当該inodeをストレージサーバ２２に格納する。そして、このinodeのimapエントリは、ストレージサーバ２２と対応付けられたファイルサーバ１２に追加され、当該inodeはファイルサーバ１２で管理される。これにより、当該inodeの読み込み時には、ファイルサーバ１２とストレージサーバ２２との高速な通信路を利用できる。
【００８７】
なお、上述した実施形態におけるストレージシステムでは、ファイルサーバとストレージサーバとはそれぞれ３台ずつ装備されているが、これらの台数は、上述した数に限定されない。
【００８８】
ここで、ストレージサーバに格納しているファイルデータを更新すると、inodeの内容が変わるため、inodeのコンテンツアドレスも変化する。すると、あるファイルサーバで管理されているinodeが、今までそのinodeが格納されていたストレージサーバと異なるストレージサーバに格納されてしまうことがある。この場合、ストレージシステム自体の性能低下を防ぐためには、inodeが格納されたストレージサーバと高速に通信できるファイルサーバへ、inodeの管理も移行させる必要がある。しかし、ファイルサーバ間でinodeを移動してimapを更新すると、inode番号の変更とディレクトリエントリの更新も必要となり、大きな負荷がかかる。
【００８９】
このため、本実施形態では、システム全体の負荷の少ないときなど、予め設定された任意のタイミングで、imap全体を走査し、ファイルが記憶されているストレージサーバとファイルサーバ間の高速な通信路を利用できないinodeを、当該ファイルが記憶されているストレージサーバと高速な通信路が利用できるファイルサーバに移動する。これにより、高速な通信路が使えなかったinodeへのアクセスで、再び高速な通信路を利用できるようになるため、性能の低下を防ぐことができる。
【００９０】
次に、図１２乃至図１３を参照して、ファイルサーバ数とストレージサーバ数が異なる場合について説明する。
【００９１】
まず、imapブロック数としてファイルサーバ数とストレージサーバ数の公倍数を用いる。次に、ファイルサーバ間でimapブロックが均等に分散するように、ファイルサーバが管理するimapを決める。この際、ファイルサーバが管理するimapブロックは、imapブロック番号の若い方から順に割り振っていく。次に、ストレージサーバにも同様にしてinodeを均等に分散させる。この方法により、inodeのアクセスには、図１２の太線部分の通信路のみを使用するようにできる。
【００９２】
具体的に、図１２に示すように、ファイルサーバ数が３、ストレージサーバ数が５の場合を考える。まず、imapブロック数をファイルサーバ数３とストレージサーバ数５の最小公倍数１５とする。そして、それぞれファイルサーバには、図１３の対応表に示すように、５つのimapブロックを割り当て、均等に分散させるよう設定する。
【００９３】
また、それぞれストレージサーバには、３つのimapブロックのinodeを格納するよう設定する。つまり、図１３に示す対応表に示すように、ファイルサーバ１１にはinode番号１〜２０が割り当てられており、imapブロック０でコンテンツアドレスを１５で割った余りが０となるinodeを管理し、また、このファイルサーバ１１に対応するストレージサーバ２１に、上記inodeを格納するよう設定されている。なお、対応表の他の設定についての説明は省略する。
【００９４】
このように設定することで、予め相互に対応して設定されたファイルサーバとストレージサーバ、つまり、図１２の太線で示す通信路で接続されたファイルサーバ１１とストレージサーバ２１，２２、ファイルサーバ１２とストレージサーバ２２，２３，２４、ファイルサーバ１３とストレージサーバ２４，２５に、それぞれinodeと、そのimapエントリと、がそれぞれ記憶される。すると、その後のinodeへのアクセスで通信が、図１２の太線で示す通信路に集中するため、その通信路のみを高速化すれば、システム全体の性能を向上できる。なお、この実施形態においては、ファイルサーバとストレージサーバとは、それぞれ３台と５台である場合を例示したが、各サーバの台数は上述したものに限定されない。
【００９５】
＜実施形態４＞
本発明の第４の実施形態を、図１４を参照して説明する。図１４は、ストレージシステムの構成を示す機能ブロック図である。なお、本実施形態では、ストレージシステムの概略を説明する。
【００９６】
図１４に示すように、本実施形態におけるストレージシステムは、ストレージサーバ１２０と、当該ストレージサーバに対するデータの書き込み／読み出しを制御する複数のファイルサーバ１１１，１１２，１１３と、を備えている。
【００９７】
そして、上記ストレージサーバ１２０は、記憶対象データ１２０を記憶すると共に、当該記憶対象データを識別する識別データと、上記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップ１２０ａを記憶している。
【００９８】
また、上記各ファイルサーバ１１１，１１２，１１３は、上記アドレスマップの複製を分散したデータであって上記ファイルサーバ毎に予め割り当てられた上記識別データを有する各アドレスマップキャッシュ１１１ｂ，１１２ｂ，１１３ｂをそれぞれ記憶しており、上記ストレージサーバに新たに上記記憶対象データを格納した際に、当該記憶対象データの上記識別データと、当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータと、を関連付けて上記アドレスマップキャッシュに記憶するアドレスマップ操作手段１１１ａ，１１２ａ，１１３ａを備えている。
【００９９】
さらに、上記アドレスマップ操作手段１１１ａ，１１２ａ，１１３ａは、上記新たな記憶対象データの上記アドレスデータに基づいて上記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する上記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた上記識別データを上記新たな記憶対象データの識別データとして当該識別データに上記新たな記憶対象データの上記アドレスデータを関連付けて記憶する、という構成を採っている。
【０１００】
また、上記ストレージシステムでは、上記アドレスマップ操作手段は、上記新たな記憶対象データの上記アドレスデータの少なくとも一部に基づいて特定される数値と、上記ファイルサーバの数と、に基づいて判定値を算出し、この判定値に基づいて上記ファイルサーバを特定する、という構成を採る。
【０１０１】
また、上記ストレージシステムでは、上記アドレスマップ操作手段は、上記アドレスデータの少なくとも一部に基づいて特定される数値を、上記ファイルサーバの数で割った余りを、上記判定値として算出する、という構成を採る。
【０１０２】
また、上記ストレージシステムでは、上記記憶対象データは、所定のファイルサーバを分散した各ブロックデータを上記ストレージサーバに格納した場合に、当該各ブロックデータの格納位置をそれぞれ参照する各ブロックアドレスデータを含むアドレスリストデータである、という構成を採る。
【０１０３】
上記発明によると、まず、ファイルサーバは、新たな記憶対象データをストレージサーバに格納する。なお、記憶対象データは、例えば、所定のファイルサーバを分散した各ブロックデータをストレージサーバに格納した場合に、当該各ブロックデータの格納位置をそれぞれ参照する各ブロックアドレスデータを含むアドレスリストデータである。
【０１０４】
そして、上記記憶対象データを識別する識別データと、記憶対象データのデータ内容から生成したアドレスデータと、を関連付けたアドレスマップを、ストレージ装置に格納する。また、このアドレスマップの複製を分散して、複数のファイルサーバにアドレスマップキャッシュとしてそれぞれ記憶する。これにより、ストレージサーバに記憶されている記憶対象データにアクセスする際には、ファイルサーバが、読み出したい記憶対象データの識別データに関連付けられたアドレスデータを、当該ファイルサーバに記憶されたアドレスマップキャッシュから特定する。そして、このアドレスデータにて参照された格納位置を読み取ることで、目的の記憶対象データにアクセスすることができる。
【０１０５】
そして、本発明では、ファイルサーバのアドレスマップ操作手段が、ストレージサーバに格納した記憶対象データのデータ内容に基づくアドレスデータからファイルサーバを特定し、当該特定したファイルサーバのアドレスマップキャッシュに、ストレージサーバに格納した記憶対象データの識別データとアドレスデータとを関連付けて記憶する。このとき、特に、特定されたファイルサーバに割り当てられている識別データを、記憶対象データの識別データとして、当該記憶対象データのアドレスデータを関連付けて記憶する。
【０１０６】
以上のように、本発明では、記憶対象データのデータ内容のアドレスデータから、当該記憶対象データの識別データとその格納位置を参照するアドレスデータとを管理するファイルサーバを特定するため、ファイルサーバによる記憶対象データの管理を均等に分散することができる。従って、後に記憶対象データに対するアクセスが多数発生した場合であっても、かかるアクセスを均等に分散させることができ、特定のファイルサーバの負荷が増大することを抑制することができる。さらに、上述したように特定されたファイルサーバに予め割り当てられている識別データに、記憶対象データのアドレスデータを関連付けるため、当該記憶対象データを管理するファイルサーバを固定することができる。例えば、記憶対象データが更新され、そのデータ内容から特定されるアドレスデータが変更された場合であっても、識別データに関連付けるアドレスデータのみを変更すればよいため、引き続き同一のファイルサーバにて記憶対象データを管理することができる。従って、記憶対象データの管理が容易となり、その結果、システムにおける処理性能の向上を図ることができる。
【０１０７】
そして、特に、記憶対象データのアクセスデータに基づく数値を、ファイルサーバの数で割った余りの値に基づいてファイルサーバを特定することで、より均等にファイルサーバによる記憶対象データの管理を分散させることができる。
【０１０８】
また、上記ストレージシステムでは、上記各ファイルサーバは、上記アドレスマップキャッシュを複数記憶しており、所定の上記ファイルサーバの障害発生時に、当該障害が発生したファイルサーバに記憶されている上記複数のアドレスマップキャッシュを、複数の他の上記ファイルサーバにそれぞれ分散して記憶するアドレスマップ分散手段を備えた、という構成を採る。
【０１０９】
また、上記ストレージシステムでは、上記各ファイルサーバは、ストレージシステムに装備されている上記ファイルサーバの数をｎとした場合に、ｎ−１の整数倍の上記アドレスマップキャッシュをそれぞれ記憶している。そして、上記アドレスマップ分散手段は、所定の上記ファイルサーバの障害発生時に、当該障害が発生したファイルサーバに記憶されている上記アドレスマップキャッシュを、複数の他の上記ファイルサーバにそれぞれ均等に分散して記憶する、という構成を採る。
【０１１０】
これにより、ファイルサーバに障害が生じた場合であっても、そのファイルサーバに記憶されていたアドレスマップキャッシュを他のファイルサーバに均等に分散して記憶することができる。その結果、障害発生後であっても、特定のファイルサーバの負荷が増大することを抑制することができ、ストレージシステム全体における処理能力の向上を図ることができる。
【０１１１】
また、上記ストレージシステムでは、上記アドレスマップ操作手段は、上記ストレージサーバに記憶された上記記憶対象データの上記アドレスデータと、当該記憶対象データの上記識別データと、を関連付けて、当該記憶対象データを記憶している上記ストレージサーバに予め対応して設定されている上記ファイルサーバが有する上記アドレスマップキャッシュに記憶する、という構成を採る。
【０１１２】
また、上記ストレージシステムでは、上記アドレスマップ操作手段は、上記新たな記憶対象データの上記アドレスデータの少なくとも一部に基づいて特定される数値と、上記ファイルサーバの数と、に基づいて算出される判定値毎に相互に対応して設定された上記ストレージサーバと上記ファイルサーバとに、上記記憶対象データと、当該記憶対象データの上記識別データ及び当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータを関連付けたデータと、をそれぞれ記憶する、という構成を採る。
【０１１３】
これにより、ストレージサーバには記憶対象データが記憶されると共に、このストレージサーバに対応して設定されたファイルサーバが有するアドレスマップキャッシュに、上記記憶対象データの識別データ及びアドレスデータを関連付けたデータが記憶される。すると、予め対応して設定されたファイルサーバとストレージサーバとの通信量が多くなる。従って、かかる通信路のみを高速化しておくことで、全ての通信路を高速化することなく、ストレージシステム内における処理速度の向上を図ることができる。その結果、低コストにてストレージシステムの処理能力の向上を図ることができる。
【０１１４】
また、上述したストレージシステムのファイルサーバは、情報処理装置に、プログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、
記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、上記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶したストレージサーバに対して、データの書き込み／読み出しを制御する複数のファイルサーバが、上記アドレスマップの複製を分散したデータであり上記ファイルサーバ毎に予め割り当てられた上記識別データを有する各アドレスマップキャッシュをそれぞれ記憶している場合に、上記各ファイルサーバに、
上記ストレージサーバに新たに上記記憶対象データを格納した際に、当該記憶対象データの上記識別データと、当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータと、を関連付けて上記アドレスマップキャッシュに記憶するアドレスマップ操作手段を実現させる。
【０１１５】
そして、上記アドレスマップ操作手段は、上記新たな記憶対象データの上記アドレスデータに基づいて上記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する上記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた上記識別データを上記新たな記憶対象データの識別データとして当該識別データに上記新たな記憶対象データの上記アドレスデータを関連付けて記憶する、という構成を採る。
【０１１６】
また、上記プログラムでは、上記アドレスマップ操作手段は、上記新たな記憶対象データの上記アドレスデータの少なくとも一部に基づいて特定される数値と、上記ファイルサーバの数と、に基づいて判定値を算出し、この判定値に基づいて上記ファイルサーバを特定する、という構成を採る。
【０１１７】
また、上述したストレージシステムが作動することにより実行される、本発明の他の形態であるファイル管理方法は、
記憶対象データを記憶すると共に、当該記憶対象データを識別する識別データと、上記記憶対象データの格納位置を参照するデータであり当該記憶対象データのデータ内容に基づいて生成されたアドレスデータと、を関連付けたアドレスマップを記憶したストレージサーバに対して、データの書き込み／読み出しを制御すると共に、上記アドレスマップの複製を分散したデータであり上記ファイルサーバ毎に予め割り当てられた上記識別データを有する各アドレスマップキャッシュをそれぞれ記憶している複数のファイルサーバにて、
上記ストレージサーバに新たに上記記憶対象データを格納した際に、当該記憶対象データの上記識別データと、当該記憶対象データのデータ内容に基づいて生成された上記アドレスデータと、を関連付けて上記アドレスマップキャッシュに記憶する。
【０１１８】
そして、上記アドレスマップキャッシュに記憶するときに、上記新たな記憶対象データの上記アドレスデータに基づいて上記ファイルサーバを特定すると共に、この特定されたファイルサーバが有する上記アドレスマップキャッシュに、当該特定されたファイルサーバに予め割り当てられた上記識別データを上記新たな記憶対象データの識別データとして当該識別データに上記新たな記憶対象データの上記アドレスデータを関連付けて記憶する、という構成を採る。
【０１１９】
上述した構成を有する、プログラム、又は、ファイル管理方法、の発明であっても、上記ストレージシステムと同様の作用を有するために、上述した本発明の目的を達成することができる。
【産業上の利用可能性】
【０１２０】
本発明は、コンテンツアドレスストレージシステムといったストレージシステムに適用でき、産業上の利用可能性を有する。
【符号の説明】
【０１２１】
１１，１２，１３  ファイルサーバ
１１ａ，１２ａ，１３ａ  imap分割情報記憶部
１１ｂ，１２ｂ，１３ｂ  imap操作部
１１ｃ，１２ｃ，１３ｃ  imap一時記憶部
１１ｄ  imap分散部
２０，２１，２２，２３，２４，２５  ストレージサーバ
２０ａ，１２０ａ  imap
２０ｂ  inode
２０ｃ  ファイルデータ
３１，３２，３３  クライアント
１１０，１２０，１３０  imapキャッシュ
【図１】
2010231690.tif 000003
【図２】
2010231690.tif 000004
【図３】
2010231690.tif 000005
【図４】
2010231690.tif 000006
【図５】
2010231690.tif 000007
【図６】
2010231690.tif 000008
【図７】
2010231690.tif 000009
【図８】
2010231690.tif 000010
【図９】
2010231690.tif 000011
【図１０】
2010231690.tif 000012
【図１１】
2010231690.tif 000013
【図１２】
2010231690.tif 000014
【図１３】
2010231690.tif 000015
【図１４】
2010231690.tif 000016