(57)【要約】【課題】高速記憶装置をキャッシュとして使用するストレージシステムを提供する。【解決手段】ストレージシステムは、大容量の第１記憶装置と、高速の第２記憶装置と、ＲＡＭとを含む。ここで、大容量の第１記憶装置はハードディスクドライブで、高速の第２記憶装置は半導体ドライブであってもよい。また、高速の第２記憶装置は、キャッシュとして使用される。そして、第１記憶装置は、スーパブロック単位でコンテンツファイルを管理し、第２記憶装置はブロック単位でキャッシュファイルを管理する。
2012517644.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを含む複数のコンテンツファイルを記憶し、前記複数のブロックを予め設定された大きさを有する複数のスーパブロックで管理する第１記憶装置と、
前記複数のスーパブロックのうち少なくとも１つのスーパブロックをキャッシュし、ブロック単位で前記少なくとも１つのスーパブロックを管理する第２記憶装置と、
前記複数のブロックのうち少なくとも１つのブロックを記憶するＲＡＭ（Random Access Memory）と、
を具備し、
前記第１記憶装置の容量が前記第２記憶装置の容量より大きいか、または、前記第２記憶装置のアクセス速度が前記第１記憶装置のアクセス速度より速い
ストレージシステム。
【請求項２】
対象ブロックに対するアプリケーションの読み出し要求に応答して前記対象ブロックが前記第２記憶装置または前記ＲＡＭに記憶されたか否かをチェックし、前記チェック結果に応じて前記第１記憶装置、前記第２記憶装置、または前記ＲＡＭのうち少なくとも１つから抽出された前記対象ブロックを返還する入／出力スケジューラをさらに具備する請求項１に記載のストレージシステム。
【請求項３】
前記入／出力スケジューラは、
前記アプリケーションが前記第１記憶装置および前記第２記憶装置を１つの論理的記憶装置として認識するように前記第１記憶装置および前記第２記憶装置を管理する、請求項２に記載のストレージシステム。
【請求項４】
前記第２記憶装置にキャッシュされた少なくとも１つのスーパブロックに含まれる複数のブロックに対する位置情報が記録されたキャッシュファイルブロックマッピングテーブルを用いて前記第２記憶装置から前記対象ブロックを読み出すキャッシュファイルコントローラをさらに具備する、請求項２に記載のストレージシステム。
【請求項５】
前記入／出力スケジューラは、
前記複数のスーパブロックが前記第２記憶装置によってキャッシュされたか否かに関する情報、前記第２記憶装置によってキャッシュされた少なくとも１つのスーパブロックの位置情報、前記複数のスーパブロックが前記ＲＡＭに記憶されたか否かに関する情報、前記複数のスーパブロックのアクセス時間、またはアクセス回数に関する情報、または前記複数のスーパブロックが現在使用されているか否かに関する情報のうち少なくとも１つを含むコンテンツスーパブロックマッピングテーブルを用いる、請求項２に記載のストレージシステム。
【請求項６】
前記第２記憶装置は、
前記複数のスーパブロックのアクセス回数、または前記複数のコンテンツファイルのアクセス回数に基づいて前記少なくとも１つのスーパブロックをキャッシュする、請求項１に記載のストレージシステム。
【請求項７】
複数のユーザセッションが存在する場合、
前記第２記憶装置は、
少なくとも１つの残りのユーザセッションで使用されるスーパブロックを考慮して特定ユーザセッションで使用されたスーパブロックをキャッシュする、請求項１に記載のストレージシステム。
【請求項８】
前記第２記憶装置は、
前記特定ユーザセッションで使用されたスーパブロックと隣接する少なくとも１つのスーパブロックが前記少なくとも１つの残りのユーザセッションで使用されるか否かによって前記特定ユーザセッションで使用されたスーパブロックをキャッシュする、請求項７に記載のストレージシステム。
【請求項９】
前記第１記憶装置は、
対象ブロックに対するアプリケーションの読み出し要求がある場合、前記少なくとも１つのスーパブロックのうち前記対象ブロックを含むスーパブロックを返還する、請求項１に記載のストレージシステム。
【請求項１０】
前記第１記憶装置はハードディスクドライブであり、前記第２記憶装置は半導体ドライブである、請求項１に記載のストレージシステム。
【請求項１１】
前記ストレージシステムは、
マルチメディアコンテンツを複数のユーザでストリーミングするサーバのために使用される、請求項１に記載のストレージシステム。
【請求項１２】
前記入／出力スケジューラは、
前記第２記憶装置にキャッシュされた少なくとも１つのスーパブロックのうち削除対象スーパブロック、または削除対象ブロックが存在する場合、前記第２記憶装置から前記削除対象スーパブロック、または前記削除対象ブロックを削除する代りに前記キャッシュファイルブロックマッピングテーブルをアップデートする、請求項４に記載のストレージシステム。
【請求項１３】
複数のブロックを含む複数のコンテンツファイルが第１記憶装置に記憶され、前記第１記憶装置は前記複数のブロックを予め設定された大きさを有する複数のスーパブロックで管理して、第２記憶装置は前記複数のスーパブロックのうち少なくとも１つのスーパブロックをキャッシュし、ＲＡＭ（Random Access Memory）が前記複数のブロックのうち少なくとも１つのブロックを記憶する場合、
対象ブロックに対するアプリケーションの読み出し要求を受信するステップと、
前記対象ブロックが前記第２記憶装置または前記ＲＡＭに記憶されたか否かをチェックするステップと、
前記チェック結果に応じて前記第１記憶装置、前記第２記憶装置、または前記ＲＡＭのうち少なくとも１つから抽出された前記対象ブロックを返還するステップと、
を含むストレージシステムの読み出し方法。
【請求項１４】
前記対象ブロックを返還するステップは、
前記第２記憶装置にキャッシュされた少なくとも１つのスーパブロックに含まれる複数のブロックに対する位置情報が記録されたキャッシュファイルブロックマッピングテーブルを用いて前記第２記憶装置から前記対象ブロックを読み出すステップをさらに含む、請求項１３に記載のストレージシステムの読み出し方法。
【請求項１５】
前記対象ブロックが前記第２記憶装置または前記ＲＡＭに記憶されたか否かをチェックするステップは、
前記複数のスーパブロックが前記第２記憶装置によってキャッシュされたか否かに関する情報および前記複数のスーパブロックが前記ＲＡＭに記憶されたか否かに関する情報を含むコンテンツスーパブロックマッピングテーブルを用いて前記対象ブロックが前記第２記憶装置または前記ＲＡＭに記憶されたか否かをチェックするステップである、請求項１３に記載のストレージシステムの読み出し方法。
【請求項１６】
前記対象ブロックが前記ＲＡＭに記憶された場合、前記第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックがキャッシングされるように処理するステップをさらに含む、請求項１３に記載のストレージシステムの読み出し方法。
【請求項１７】
複数のブロックを含む複数のコンテンツファイルが第１記憶装置に記憶され、前記第１記憶装置は前記複数のブロックを予め設定された大きさを有する複数のスーパブロックで管理して、第２記憶装置は前記複数のスーパブロックのうち少なくとも１つのスーパブロックをキャッシュし、ＲＡＭ（Random Access Memory）が前記複数のブロックのうち少なくとも１つのブロックを記憶する場合、
前記ＲＡＭに記憶された前記少なくとも１つのブロックのうち対象ブロックを含むスーパブロックのアクセス回数、または前記スーパブロックを含むコンテンツファイルのアクセス回数によって、前記第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックを記憶するステップと、
複数のユーザセッションが存在する場合、特定ユーザセッションで使用された前記対象ブロックを含むスーパブロックと隣接する少なくとも１つのスーパブロックが少なくとも１つの残りのユーザセッションで使用されるか否かによって、前記第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックを記憶するステップと、
を含むストレージシステムのキャッシング方法。
【請求項１８】
前記第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックを記憶しない場合、前記対象ブロックまたは前記対象ブロックを含むスーパブロックを前記ＲＡＭから回収するステップをさらに含む、請求項１７に記載のストレージシステムのキャッシング方法。
【請求項１９】
前記ＲＡＭに記憶された前記少なくとも１つのブロックのうち対象ブロックを含むスーパブロックのアクセス回数、または前記スーパブロックを含むコンテンツファイルのアクセス回数によって、前記第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックを記憶するステップは、
予め設定された閾値と前記対象ブロックを含むスーパブロックのアクセス回数、または前記スーパブロックを含むコンテンツファイルのアクセス回数を比較するステップを含む、請求項１８に記載のストレージシステムのキャッシング方法。
【請求項２０】
コンピュータに、請求項１３〜請求項１６に記載のストレージシステムの読み出し方法、または、請求項１７〜請求項１９に記載のストレージシステムのキャッシング方法のうちいずれか１項の方法における各ステップを実行させるためのプログラムが記録されたコンピュータで読み出し可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージシステムに適用することのできる技術に関し、特にマルチメディアコンテンツを複数のユーザでストリーミングするサーバのためのストレージシステムに関する。
【背景技術】
【０００２】
マルチメディアコンテンツをリアルタイムで送信するストリーミング技術に対する関心が高まっている。ストリーミングサーバは、ストレージシステムに記憶されたコンテンツファイルを複数のユーザにリアルタイムで送信することによって、ユーザが要求する記憶空間の大きさを最小化することができる。
【０００３】
ストリーミングサーバのストレージシステムは、書き込み動作よりも読み出し動作を頻繁に行うため、読み出し動作の速度を高める必要がある。それだけでなく、ストレージシステムは、大容量のマルチメディアコンテンツを記憶するため、大容量の記憶空間を要求する。したがって、読み出し動作の速度を高めながらも大容量の記憶空間を確保できるストレージシステムを開発することが重要である。
【０００４】
一方、高いアクセス速度（または、入／出力速度）をサポートできる半導体ドライブ（Solid State Drive、ＳＳＤ）に対する関心も大変高まっている。ストレージシステムに速いアクセス速度をサポートする半導体ドライブを使用する場合、ストリーミングサーバは、優れた品質のストリーミングサービスを提供することができる。ただ、半導体ドライブは比較的小さな記憶容量を有するため、半導体ドライブをストリーミングサーバにそのまま設置することは問題になり得る。
【０００５】
したがって、高いアクセス速度をサポートする記憶装置を使用しながらも大容量の記憶空間を有することのできるストレージシステムに対する技術が必要となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００８／０７０１７３号
【特許文献２】国際公開第０２／０１３６５号
【非特許文献】
【０００７】
【非特許文献１】イ・サンウォン(LEE, SANG-WON)他著、「企業のデータベースアプリケーションにおけるフラッシュメモリSSDの実例(A case for flash memory ssd in enterprise data base applications)」、エーシーエム(ACM)、ACM SIGMODによるデータ管理に関する国際会議(ACM SIGMOD international conference on Management of data）、2008年6月、P.1087-1098
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の一実施形態に係るストレージシステムは、高いアクセス速度を有する記憶装置をキャッシュとして使用し、同時に大容量の記憶空間を有する記憶装置を使用することによって十分な記憶空間を提供しながらもアクセス速度を向上させることができる技術を提供する。
【０００９】
また、本発明の一実施形態に係るストレージシステムにおいて、大容量の記憶空間を有する記憶装置はスーパブロック単位でコンテンツファイルを管理し、高いアクセス速度を有する記憶装置はブロック単位でキャッシュファイルを管理することによって、読み出し動作の速度を向上させることができる技術を提供する。
【００１０】
また、本発明の一実施形態に係るストレージシステムは、キャッシングされるブロックまたはスーパブロックを適切に選択したり、キャッシングされたブロックまたはスーパブロックを適切に削除するなどの最適化されたメカニズムを提供する。
【課題を解決するための手段】
【００１１】
本発明の一実施形態に係る、高速記憶装置をキャッシュとして使用するストレージシステムは、複数のブロックを含む複数のコンテンツファイルを記憶し、前記複数のブロックを予め設定された大きさを有する複数のスーパブロックで管理する第１記憶装置と、前記複数のスーパブロックのうち少なくとも１つのスーパブロックをキャッシュ（cache）し、ブロック単位で前記少なくとも１つのスーパブロックを管理する第２記憶装置と、前記複数のブロックのうち少なくとも１つのブロックを記憶するＲＡＭ（Random Access Memory）とを含む。
【００１２】
この時、ストレージシステムは、対象ブロックに対するアプリケーションの読み出し要求に応答して前記対象ブロックが前記第２記憶装置または前記ＲＡＭに記憶されたか否かをチェックし、前記チェック結果に応じて前記第１記憶装置、前記第２記憶装置、または前記ＲＡＭのうち少なくとも１つから抽出された前記対象ブロックを返還する入／出力スケジューラをさらに含んでもよい。特に、ストレージシステムは、前記第２記憶装置にキャッシュされた少なくとも１つのスーパブロックに含まれる複数のブロックに対する位置情報が記録されたキャッシュファイルブロックマッピングテーブルを用いて前記第２記憶装置から前記対象ブロックを読み出すキャッシュファイルコントローラをさらに含んでもよい。
【００１３】
また、本発明の一実施形態に係る、高速記憶装置をキャッシュとして使用するストレージシステムの読み出し方法は、対象ブロックに対するアプリケーションの読み出し要求を受信するステップと、前記対象ブロックが第２記憶装置または前記ＲＡＭに記憶されたか否かをチェックするステップと、前記チェック結果に応じて第１記憶装置、前記第２記憶装置、または前記ＲＡＭのうち少なくとも１つから抽出された前記対象ブロックを返還するステップとを含む。
【００１４】
また、本発明の一実施形態に係る、高速記憶装置をキャッシュとして使用するストレージシステムのキャッシング方法は、ＲＡＭに記憶された少なくとも１つのブロックのうち対象ブロックを含むスーパブロックのアクセス回数、または前記スーパブロックを含むコンテンツファイルのアクセス回数によって、第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックを記憶するステップと、複数のユーザセッションが存在する場合、特定ユーザセッションで使用された前記対象ブロックを含むスーパブロックと隣接する少なくとも１つのスーパブロックが少なくとも１つの残りのユーザセッションで使用されるか否かによって、前記第２記憶装置に前記対象ブロックまたは前記対象ブロックを含むスーパブロックを記憶するステップとを含む。
【発明の効果】
【００１５】
本発明の一実施形態に係るストレージシステムは、高いアクセス速度を有する記憶装置をキャッシュとして使用し、同時に大容量の記憶空間を有する記憶装置を使用することによって十分な記憶空間を提供しながらもアクセス速度を向上させることができる技術を提供することができる。
【００１６】
また、本発明の一実施形態に係るストレージシステムにおいて、大容量の記憶空間を有する記憶装置はスーパブロック単位でコンテンツファイルを管理し、速いアクセス速度を有する記憶装置はブロック単位でキャッシュファイルを管理することによって、読み出し動作の速度を向上させることができる技術を提供することができる。
【００１７】
また、本発明の一実施形態に係るストレージシステムはキャッシングされるブロックまたはスーパブロックを適切に選択したり、キャッシングされたブロックまたはスーパブロックを適切に削除したりするなどの最適化されたメカニズムを提供してもよい。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るストレージシステムを示す図である。
【図２】本発明の一実施形態に係るハードディスクドライブ、半導体ドライブおよびＲＡＭを示す図である。
【図３】本発明の一実施形態に係るマッピングテーブルなどを示す図である。
【図４】本発明の一実施形態に係る読み出し方法を示す動作フローチャートである。
【図５】本発明の一実施形態に係るキャッシング方法を示す動作フローチャートである。
【図６】本発明の一実施形態により、使用が完了した対象コンテンツファイルに属するブロックを削除しようとする場合、キャッシュファイルブロックマッピングテーブルをアップデートする過程を示す動作フローチャートである。
【図７】本発明の一実施形態により、現在使用されている対象コンテンツファイルに属するブロックを削除しようとする場合、キャッシュファイルブロックマッピングテーブルをアップデートする過程を示す動作フローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明に係る実施形態を添付する図面を参照しながら詳細に説明する。
【００２０】
図１は、本発明の一実施形態に係るストレージシステムを示す図である。
【００２１】
図１に示すように、ストレージシステムは、アプリケーション１１０から入出力要求（I/O Request）を受信可能であり、入／出力スケジューラ１２０、キャッシュファイルコントローラ１３０、第１記憶装置１５０および第２記憶装置１４０を含む。この時、ストレージシステムは、マルチメディアコンテンツを複数のユーザでストリーミングするサーバのために使用するなどのさまざまな用途に使用することができる。
【００２２】
ここで、第１記憶装置１５０の容量は第２記憶装置１４０の容量より大きく、第２記憶装置１４０のアクセス速度は第１記憶装置１５０のアクセス速度より速い。例えば、第１記憶装置１５０はハードディスクドライブとしてもよく、第２記憶装置１４０は半導体ドライブとしてもよい。
【００２３】
また、第１記憶装置１５０は、複数のブロックを含む複数のコンテンツファイルを記憶し、複数のコンテンツファイルをスーパブロック単位で管理する。一方、第２記憶装置１４０は、第１記憶装置１５０に記憶された複数のスーパブロックのうち少なくとも１つのスーパブロックまたはブロックをキャッシュして、キャッシュファイルを生成する。そして、第２記憶装置１４０は、キャッシュファイルをブロック単位で管理する。
【００２４】
第２記憶装置１４０がスーパブロックまたはブロックをキャッシュするアルゴリズム、キャッシュされたスーパブロックまたはブロックを管理するアルゴリズムについては後に詳細に説明する。
【００２５】
一般に、ハードディスクドライブのような大容量記憶装置は、一度に読み出し要求をするデータの大きさが大きいほど全体的に高い性能を示す特性を有する一方、半導体ドライブのような高速の記憶装置は、一度に読み出し要求をするデータの大きさが特定水準（例えば、２５６Ｋｂｙｔｅｓ）以上であれば、性能が略向上しない特性を有する。
【００２６】
このような点を考慮して、本発明に係る第２記憶装置１４０は複数のブロックを含むキャッシュファイルをブロック単位で管理し、第１記憶装置１５０はｎ（ｎは自然数）個のブロックの集合のスーパブロック単位でコンテンツファイルを管理する。
【００２７】
入／出力スケジューラ１２０は、アプリケーション１１０の読み出し要求と関連する処理を行う。この時、入／出力スケジューラ１２０は、アプリケーション１１０が第１記憶装置１５０および第２記憶装置１４０を１つの論理的記憶装置として認識するように第１記憶装置１５０および第２記憶装置１４０を管理する。
【００２８】
アプリケーション１１０から特定ブロックに対する読み出し要求を受信した場合、入／出力スケジューラ１２０は、ＲＡＭ（図１に示さず）に特定ブロックが記憶されているか否か、および第２記憶装置１４０に特定ブロックが記憶されているか否かを検査する。特に、入／出力スケジューラ１２０は、コンテンツスーパブロックマッピングテーブル１７０を用いて特定ブロック（または、特定ブロックを含むスーパブロック）がＲＡＭまたは第２記憶装置１４０に存在するかを判断してもよい。
【００２９】
もし、特定ブロックがＲＡＭに存在すれば、入／出力スケジューラ１２０はＲＡＭから特定ブロックを読み出す。また、第２記憶装置１４０に特定ブロックがキャッシュされていれば、入／出力スケジューラ１２０はキャッシュファイルコントローラ１３０を用いて特定ブロックを読み出す。この時、キャッシュファイルコントローラ１３０は、特定ブロックの位置情報が記録されたキャッシュファイルブロックマッピングテーブル１６０を参照する。また、特定ブロックが第１記憶装置１５０にだけ存在する場合、入／出力スケジューラ１２０は、特定ブロックを含むスーパブロックを第１記憶装置１５０から読み出した後に、スーパブロックを返還する。
【００３０】
図２は、本発明の一実施形態に係るハードディスクドライブ、半導体ドライブおよびＲＡＭを示す図である。
【００３１】
図２に示すように、大容量の第１記憶装置２１０（例えば、ハードディスクドライブ）は、複数のコンテンツファイルを記憶する。この時、第１記憶装置２１０は、スーパブロック単位で複数のコンテンツファイルを管理し、特定ブロックに対する読み出し要求がある場合、特定ブロックを含むスーパブロックを返還する。
【００３２】
第２記憶装置２２０（例えば、半導体ドライブ）は、複数のキャッシュファイルを記憶する。キャッシュファイルは少なくとも１つのブロックで構成され、第２記憶装置２２０はブロック単位でキャッシュファイルを管理する。第２記憶装置２２０は、第１記憶装置２１０に記憶された複数のコンテンツファイルに属する少なくとも１つのスーパブロックまたは少なくとも１つのブロックをキャッシュすることにより、ストレージシステムの入／出力速度を向上させる。
【００３３】
また、ＲＡＭ２３０は、現在のアプリケーションによって使用されているブロックがロードされる。結局、本発明は、キャッシングのために第２記憶装置２２０およびＲＡＭ２３０を使用する構造を有することによって、ストリーミングサーバを用いるアプリケーション環境で頻繁に使用されるデータを効率的にキャッシングできる技術を提供する。特に、本発明は、キャッシングのために高速の第２記憶装置２２０を使用することによって、ＲＡＭ２３０空間を効率的に使用することができる。
【００３４】
図３は、本発明の一実施形態に係るマッピングテーブルなどを示す図である。
【００３５】
図３を参照すれば、コンテンツスーパブロックマッピングテーブル（Contents Super Block Mapping Table、ＣＳＢＭＴ、３１０）は大容量の第１記憶装置に記憶されたコンテンツファイルのうち現在使用されているコンテンツファイルを管理するためのテーブルである。
【００３６】
図面符号３２０に示すように、コンテンツスーパブロックマッピングテーブル３１０の各項目は、該当スーパブロックに関する情報であるスーパブロック情報を含む。この時、スーパブロック情報は、該当スーパブロックが第２記憶装置によってキャッシュされたか否かに関する情報であるcache flag、該当スーパブロックを含むキャッシュファイルに関する情報であるcache file number、該当スーパブロックがキャッシュファイルの何回目のブロックに記憶されたかに関する情報であるblock numberを含む。また、スーパブロック情報は、該当スーパブロックが使用される間にＲＡＭから割り当てられるメモリバッファのスーパブロックバッファに関する情報であるsuper block buffer、スーパブロックバッファの状態に関する情報であるbuffer status、該当スーパブロックのアクセス時間に関する情報であるAccess time、該当スーパブロックのアクセス回数に関する情報であるAccess count、該当スーパブロックがすべてのユーザセッションで使われているか否かに関する情報であるReference countをさらに含む。
【００３７】
ここで、該当スーパブロックが使用される間にＲＡＭから割り当てられるメモリバッファはスーパブロックのサイズを有し、「super block buffer」は前記メモリバッファに対するポインタである。「super block buffer」は、最初にＮＵＬＬに初期化され、該当スーパブロックに対する読み出し要求がある場合に割り当てられる。「super block buffer」は、該当スーパブロックが使用中の間、割り当てられたまま存在し、該当スーパブロックの使用が完了すれば、該当スーパブロックの内容は第２記憶装置によってキャッシュされ、メモリバッファのスーパブロックバッファは回収される。また、スーパブロックがキャッシングされた場合、第２記憶装置でスーパブロックの位置情報はcache file numberおよびblock numberに基づいて計算される。
【００３８】
図面符号３３０に示すように、キャッシュファイルブロックマッピングテーブル３３０（Cache File Block Mapping Table、ＣＦＢＭＴ）は、高速の第２記憶装置に存在するキャッシュファイルを管理するためのテーブルとして、キャッシュファイルコントローラによって管理される。キャッシュファイルブロックマッピングテーブル３３０の行の各インデックスは、各キャッシュファイルを示すポインタであり、キャッシュファイルブロックマッピングテーブル３３０内の各項目は、該当ブロックが現在のキャッシングされているか否かを示すフラグとして活用される。特に、本発明は、キャッシュファイルブロックマッピングテーブル３３０内の各項目をビット（ｂｉｔ）単位で処理して要求されるメモリの容量を最小化してもよい。
【００３９】
この時、キャッシュファイルブロックマッピングテーブル３３０内の各項目は、第２記憶装置にキャッシュされた複数のブロックがどこに存在するかに対する位置情報として使用してもよい。もし、対象ブロックが第２記憶装置によってキャッシュされ、アプリケーションが対象ブロックを読み出し要求した場合、キャッシュファイルブロックマッピングテーブル３３０内の項目のうち対象ブロックに対応する項目はセッティングされた状態を示す。この時、キャッシュファイルコントローラは、キャッシュファイルブロックマッピングテーブル３３０を用いて対象ブロックの位置情報を把握し、対象ブロックを第２記憶装置から読み出してもよい。
【００４０】
また、図面符号３４０は、コンテンツスーパブロック参照テーブル（Content Super Block Reference Table、ＣＳＢＲＴ）を示す。複数のユーザセッションがストレージシステムからストリーミングサービスを提供される場合、コンテンツスーパブロック参照テーブルは、すべてのユーザセッションで現在使用されているコンテンツファイルに属するスーパブロックが使用されているか否かに関する情報を示し、コンテンツスーパブロック参照テーブル内の各項目は、各スーパブロックのスーパブロック情報に含まれるReference countに基づいて生成され、ビット単位の構造を有する。
【００４１】
図４は、本発明の一実施形態に係る読み出し方法を示す動作フローチャートである。
【００４２】
図４を参照すれば、本発明の一実施形態に係るストレージシステムは、アプリケーションから対象ブロックに対する読み出し要求を受信する（Ｓ４１０）。
【００４３】
また、本発明の一実施形態に係るストレージシステムは、対象ブロックがＲＡＭに存在するか否かを判断する（Ｓ４２０）。もし、対象ブロックがＲＡＭに存在しなければ、本発明の一実施形態に係るストレージシステムは、対象ブロックが第２記憶装置にキャッシュされているか否かを判断する（Ｓ４３０）。
【００４４】
ストレージシステムは、コンテンツスーパブロックマッピングテーブルから対象ブロックを含むスーパブロックのスーパブロック情報を用いて対象ブロックがＲＡＭに存在するか否かおよび第２記憶装置に存在するか否かを判断してもよい。より具体的に、ストレージシステムは、対象ブロックを含むスーパブロックのスーパブロック情報にあるsuper block bufferが割り当てられたか否か、またはReference countの値に基づいて対象ブロックがメモリに存在するか否かを判断してもよく、cache flagの値に基づいて対象ブロックが第２記憶装置にキャッシングされているか否かを判断してもよい。
【００４５】
対象ブロックが第１記憶装置のハードディスクドライブにのみ存在する場合、本発明の一実施形態に係るストレージシステムは、対象ブロックを含むスーパブロックに対する読み出し要求をハードディスクドライブに伝達する（Ｓ４４０）。この時、ＲＡＭからスーパブロックのサイズほどのメモリバッファが割り当てられ、メモリバッファに対するreference countが増加した後、アプリケーションが再度対象ブロックを要求できるように「call again」をリターンする。再度アプリケーションから読み出し要求を受信した場合、対象ブロックを含むスーパブロックがＲＡＭに存在するため、ＲＡＭから対象ブロックを含むスーパブロックがリターンされる。
【００４６】
対象ブロックが第２記憶装置に存在する場合、本発明の一実施形態に係るストレージシステムは、キャッシュファイルブロックマッピングテーブルまたは対象ブロックを含むスーパブロックのスーパブロック情報を用いて、第２記憶装置に対象ブロックに対する読み出し要求を送信する（Ｓ４５０）。すなわち、キャッシュファイルブロックマッピングテーブル、またはスーパブロック情報のcache file number及びblock numberから対象ブロックの位置情報が把握され、これによって、ストレージシステムは対象ブロックを第２記憶装置から読み出すことができる。
【００４７】
より具体的に、対象ブロックが第２記憶装置に存在する場合、ＲＡＭから対象ブロックを含むスーパブロックのサイズほどのメモリバッファが割り当てられ、第２記憶装置の該当キャッシュファイルにある対象ブロックに対する読み出し要求が第２記憶装置に伝えられる。この時、reference count及びaccess countが増加して、access timeが記録される。そして、「call again」がリターンされる。
【００４８】
対象ブロックがＲＡＭに存在する場合、本発明の一実施形態に係るストレージシステムは、ＲＡＭから対象ブロックを読み出す（Ｓ４６０）。
【００４９】
そして、本発明の一実施形態に係るストレージシステムは、対象ブロックが第２記憶装置によってキャッシングされたものであるか否かを判断する（Ｓ４７０）。対象ブロックが第２記憶装置によってキャッシングされた場合、読み出し動作のプロセスは終了する。ただし、対象ブロックが第２記憶装置によってキャッシングされない場合、本発明の一実施形態に係るストレージシステムは、対象ブロックを第２記憶装置にキャッシングした後、プロセスを終了する。
【００５０】
この時、対象ブロックを第２記憶装置にキャッシングするか否かに対するアルゴリズムについては後述する。
【００５１】
図５は、本発明の一実施形態に係るキャッシング方法を示す動作フローチャートである。
【００５２】
図５に示すように、本発明の一実施形態に係るストレージシステムは、対象ブロックまたは対象ブロックを含むスーパブロックをキャッシングするか否かを判断するために、対象ブロックおよびスーパブロックを含むコンテンツファイルのアクセス回数（ａｃｃｅｓｓ  ｃｏｕｎｔ）が閾値以上であるか否かを判断する（Ｓ５１０）。コンテンツファイルのアクセス回数が高いというのは、再度読み出し要求される確率が高いことを意味するため、本発明は、コンテンツファイルのアクセス回数に基づいて対象ブロックをキャッシングするか否かを決定することができる。
【００５３】
コンテンツのファイルのアクセス回数が閾値以上である場合、本発明の一実施形態に係るストレージシステムは、対象ブロックまたはスーパブロックを第２記憶装置にキャッシングする（Ｓ５２０）。
【００５４】
また、本発明の一実施形態に係るストレージシステムは、他のユーザセッションで対象ブロックの前のスーパブロックが使用されているか否かを判断することにより、対象ブロックまたはスーパブロックをキャッシングするか否かを決定する（Ｓ５３０）。
【００５５】
例えば、ユーザＡ、Ｂがあり、キャッシュファイル１、２が存在し、キャッシュファイル１は、ａ、ｂ、ｃ、キャッシュファイル２は、ｄ、ｅ、ｆのスーパブロックを含むと仮定する。ユーザＡが使用しているｂをキャッシングするか否かを決定するために、ユーザＢがいかなるスーパブロックを使用しているか否かを考慮してもよい。すなわち、ユーザＢがスーパブロックａを使用しているのであれば、ユーザＢは今後スーパブロックｂを使用する確率が高いということを予測することができる。このような場合、本発明は、ユーザＢが今後スーパブロックｂを使用する確率が高いという点に着眼してユーザＡによって使用されたスーパブロックｂをキャッシングしてもよい。ただし、ユーザＢがキャッシュファイル２のスーパブロックｅを使用しているのであれば、スーパブロックｂを使用する確率が高くないため、本発明は、ユーザＡによって使用されたスーパブロックｂをキャッシングしなくてもよい。
【００５６】
この時、本発明は、他のユーザセッションで対象ブロックを含むスーパブロックの前のスーパブロックが使用されているか否かをＣＳＢＲＴを介して把握してもよい。ＣＳＢＲＴの項目のうち前のスーパブロックに対応する項目がセッティングされた状態の場合、前のスーパブロックが異なるユーザセッションによって使用されるものとして意味するため、本発明は、対象ブロックを含むスーパブロックをキャッシングすることによって決定してもよい。
【００５７】
また、ＣＳＢＲＴに基づいて判断した結果、対象ブロックを含むスーパブロックの前のスーパブロックが異なるユーザセッションによって使用されているものと明らかになれば、本発明の一実施形態に係るストレージシステムは、第２記憶装置に対象ブロックまたは対象ブロックを含むスーパブロックをキャッシングする（Ｓ５４０）。
【００５８】
また、本発明の一実施形態に係るストレージシステムは、対象ブロックまたは対象ブロックを含むスーパブロックをキャッシングしない場合、メモリから対象ブロックまたは対象ブロックを含むスーパブロックを回収する（Ｓ５５０）。
【００５９】
図６は、本発明の一実施形態により、使用が完了した対象コンテンツファイルに属するブロックを削除しようとする場合、キャッシュファイルブロックマッピングテーブルをアップデートする過程を示す動作フローチャートである。
【００６０】
図６に示すように、本発明の一実施形態に係るストレージシステムは使用が完了した対象コンテンツファイルに属するブロックが第２記憶装置に存在するか否かを判断する（Ｓ６１０）。すなわち、ストレージシステムはＣＳＢＭＴを用いて使用が完了した対象コンテンツファイルに属するブロックまたはスーパブロックのうちキャッシュされたブロックまたはスーパブロックが存在するか否かを判断する。
【００６１】
また、本発明の一実施形態に係るストレージシステムは、キャッシュされたブロック（以下、削除対象ブロック）、またはキャッシュされたスーパブロック（削除対象スーパブロック）を第２記憶装置から削除する代りに、ＣＦＢＭＴをアップデートする（Ｓ６２０）。すなわち、本発明は、ＣＦＢＭＴで削除対象ブロックまたは削除対象スーパブロックに対応する項目をリセットすることによって、ＣＦＢＭＴをアップデートする。
【００６２】
また、本発明の一実施形態に係るストレージシステムは、削除対象ブロックまたは削除対象スーパブロックのスーパブロックバッファがＲＡＭに存在するか否かを判断する（Ｓ６３０）。もし、削除対象ブロックまたは削除対象スーパブロックのスーパブロックバッファがＲＡＭに存在すれば、スーパブロックバッファを回収する（Ｓ６４０）。
【００６３】
図７は、本発明の一実施形態により、現在使用されている対象コンテンツファイルに属するブロックを削除しようとする場合、キャッシュファイルブロックマッピングテーブルをアップデートする過程を示す動作フローチャートである。
【００６４】
図７に示すように、本発明の一実施形態に係るストレージシステムは、ＣＳＢＭＴに基づいて削除対象スーパブロック（または、該当スーパブロック）に対応するスーパブロックバッファが現在使用されているか否かを判断する（Ｓ７１０）。もし、該当スーパブロックに対応するスーパブロックバッファが使用されていれば、プロセスは終了する。
【００６５】
また、本発明の一実施形態に係るストレージシステムは、該当スーパブロックのブロックのうちキャッシュされたブロックが存在するか否かを判断する（Ｓ７２０）。この時、ストレージシステムは、ＣＳＢＭＴを用いて判断してもよい。
【００６６】
また、また、本発明の一実施形態に係るストレージシステムは、該当スーパブロックのブロックのうちキャッシュされたブロックを削除できるか否かを判断する（Ｓ７３０）。削除可能な場合、キャッシュされたブロックを削除する代りにＣＦＢＭＴをアップデートする（Ｓ７４０）。
【００６７】
本発明に係る方法は、多様なコンピュータ手段によって実現することのできるプログラム命令形態によって具現され、コンピュータ読み出し可能媒体に記録することができる。前記コンピュータ読み出し可能媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含むことができる。前記媒体に記録されるプログラム命令は、本発明のために特別に設計して構成されたものであってもよいし、コンピュータソフトウェアの当業者に公知なものとして使用可能なものであってもよい。コンピュータ読み出し可能な記録媒体の例としては、ハードディスク、フロッピーディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロプティカルディスクのような磁気媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例しては、コンパイラによって生成されるような機械語コードだけでなくインタープリタなどを用いてコンピュータによって実行され得る高級言語コードを含む。上記のハードウェア装置は、本発明の一実施形態の動作を行うために１つ以上のソフトウェアモジュールとして作動するように構成することができ、その逆も同様である。
【００６８】
上述したように、本発明は、限定的な実施形態および図面によって説明されたが、本発明は、前記の実施形態に限定されるものではなく、本発明が属する分野で通常の知識を有する者であれば、このような記載から多様な修正および変形が可能である。
【００６９】
したがって、本発明の範囲は説明した実施形態に限定して特定されてはならず、後述する特許請求の範囲だけでなくこの特許請求の範囲と均等なものなどによって特定されなければならない。
【図１】
2012517644.tif 000003
【図２】
2012517644.tif 000004
【図３】
2012517644.tif 000005
【図４】
2012517644.tif 000006
【図５】
2012517644.tif 000007
【図６】
2012517644.tif 000008
【図７】
2012517644.tif 000009
【国際調査報告】
2012517644.tif 000010
2012517644.tif 000011
2012517644.tif 000012
2012517644.tif 000013
2012517644.tif 000014
2012517644.tif 000015
2012517644.tif 000016
2012517644.tif 000017