(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022188903
(43)【公開日】2022-12-22
(54)【発明の名称】情報処理装置および方法
(51)【国際特許分類】
G06F 16/172 20190101AFI20221215BHJP
【FI】
G06F16/172
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021097175
(22)【出願日】2021-06-10
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】後藤 真孝
(72)【発明者】
【氏名】奥田 浩平
(72)【発明者】
【氏名】栗田 貴宏
(57)【要約】
【課題】安価でストレージ容量が多い情報処理装置を得ること。
【解決手段】情報処理装置のプロセッサは、ストレージ装置を制御することによって、第1記憶領域内に複数の第2記憶領域を生成する。プロセッサは、端末から要求された第1コンテンツが第2記憶領域の何れにも格納されていない場合、オリジンサーバから第1コンテンツを取得して、取得された第1コンテンツを端末に応答する。さらに、プロセッサは、複数の第2記憶領域から第3記憶領域を選択して、ストレージ装置を制御することによって第1コンテンツを第3記憶領域内の空き領域にライトする。第1条件が成立した場合、プロセッサは、複数の第2記憶領域から第4記憶領域を選択して、ストレージ装置を制御することによって、第4記憶領域内の全てのコンテンツをまとめて削除する。
【選択図】
図14
【特許請求の範囲】
【請求項1】
オリジンサーバと端末とにネットワークを介して接続される情報処理装置であって、
第1記憶領域を備えるストレージ装置と、
前記ストレージ装置を制御することによって、前記第1記憶領域内に前記オリジンサーバから配信される1以上のコンテンツを格納するための複数の第2記憶領域を生成し、
前記端末からコンテンツの要求を受信し、
前記端末から要求されたコンテンツである第1コンテンツが前記複数の第2記憶領域の何れかに格納されている場合には、前記ストレージ装置を制御することによって前記第1コンテンツをリードして、リードされた前記第1コンテンツを前記端末に応答し、
前記第1コンテンツが前記複数の第2記憶領域の何れにも格納されていない場合、前記オリジンサーバから前記第1コンテンツを取得して、取得された前記第1コンテンツを前記端末に応答し、前記複数の第2記憶領域から1つの第2記憶領域である第3記憶領域を選択して、前記ストレージ装置を制御することによって、取得された前記第1コンテンツである第2コンテンツを前記第3記憶領域内の空き領域にライトし、
第1条件が成立した場合、前記複数の第2記憶領域から1つの第2記憶領域である第4記憶領域を選択して、前記ストレージ装置を制御することによって、前記第4記憶領域内の全てのコンテンツをまとめて削除する、
プロセッサと、
を備える情報処理装置。
【請求項2】
前記プロセッサは、前記第3記憶領域に既に1以上のコンテンツがライトされている場合、第3コンテンツが格納されている領域に後続する位置を前記第2コンテンツのライト先として指定して、前記第2コンテンツのライトを前記ストレージ装置に実行させ、
前記第3コンテンツは前記1以上のコンテンツのうちの最後に前記第3記憶領域にライトされたコンテンツである、
請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
各第2記憶領域へのアクセスに関する情報である第1情報を管理し、
前記第1条件が成立した場合、前記第4記憶領域を前記第1情報に基づいて選択する、
請求項1または請求項2に記載の情報処理装置。
【請求項4】
前記第1条件は、前記第1記憶領域内のコンテンツの総量がしきい値に到達することである、
請求項1から請求項3の何れか一項に記載の情報処理装置。
【請求項5】
前記プロセッサは、前記第1条件が成立した場合、前記ストレージ装置を制御することによって前記第4記憶領域内の第4コンテンツをリードして、前記ストレージ装置を制御することによって、リードされた第4コンテンツを前記複数の第2記憶領域のうちの前記第4記憶領域と異なる1つの第2記憶領域である第5記憶領域にライトし、その後、前記ストレージ装置を制御することによって、前記第4記憶領域内の全てのコンテンツをまとめて削除する、
請求項1から請求項4の何れか一項に記載の情報処理装置。
【請求項6】
前記プロセッサは、前記第2コンテンツの特性に基づいて前記複数の第2記憶領域から1つの第2記憶領域を前記第3記憶領域として選択する、
請求項1から請求項5の何れか一項に記載の情報処理装置。
【請求項7】
前記プロセッサは、
前記複数の第2記憶領域のそれぞれに異なる複数の時刻のうちの1つを対応付けて、
前記第2コンテンツの要求の頻度がしきい値を下回る第1の時刻を推定し、
前記第1の時刻を推定値と、前記複数の第2記憶領域のそれぞれに対応付けられた時刻と、に基づいて前記複数の第2記憶領域から1つの第2記憶領域を前記第3記憶領域として選択する、
請求項1または請求項2に記載の情報処理装置。
【請求項8】
前記第1条件は、前記複数の第2記憶領域に対応付けられた前記複数の時刻のうちの最も古い時刻である第1時刻が到来することであり、
前記第4記憶領域は、前記第1時刻が対応付けられた第2記憶領域であり、
前記プロセッサは、前記第4記憶領域内の全てのコンテンツがまとめて削除された後、前記第4記憶領域に、前記複数の第2記憶領域に対応付けられた前記複数の時刻のうちの最も新しい時刻から設定時間長さを加算して得られる時刻を対応付ける、
請求項7に記載の情報処理装置。
【請求項9】
前記プロセッサは、前記複数の第2記憶領域に空き領域が無くなった場合、前記設定時間長さを短縮する、
請求項8に記載の情報処理装置。
【請求項10】
前記ストレージ装置は、ZNS(Zoned Namespace) SSD(Solid State Drive)またはSMR(Shingled Magnetic Recording)方式の磁気ディスク装置である、
請求項1から請求項9の何れか一項に記載の情報処理装置。
【請求項11】
オリジンサーバから配信されるコンテンツをキャッシュする方法であって、
第1記憶領域を備えるストレージ装置を制御することによって、前記第1記憶領域内に1以上のコンテンツを格納するための複数の第2記憶領域を生成することと、
端末からコンテンツの要求を受信することと、
前記端末から要求されたコンテンツである第1コンテンツが前記複数の第2記憶領域の何れかに格納されている場合には、前記ストレージ装置を制御することによって前記第1コンテンツをリードして、リードされた前記第1コンテンツを前記端末に応答することと、
前記第1コンテンツが前記複数の第2記憶領域の何れにも格納されていない場合、前記オリジンサーバから前記第1コンテンツを取得して、取得された前記第1コンテンツを前記端末に応答し、前記複数の第2記憶領域から1つの第2記憶領域である第3記憶領域を選択して、前記ストレージ装置を制御することによって、取得された前記第1コンテンツである第2コンテンツを前記第3記憶領域内の空き領域にライトすることと、
第1条件が成立した場合、前記複数の第2記憶領域から1つの第2記憶領域である第4記憶領域を選択して、前記ストレージ装置を制御することによって、前記第4記憶領域内の全てのコンテンツをまとめて削除することと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、情報処理装置および方法に関する。
【背景技術】
【0002】
ネットワークシステムとして、エンドユーザの端末に近い位置に或る情報処理装置をキャッシュサーバとして配置し、端末からのコンテンツの要求に対し、配信サーバの代わりにキャッシュサーバが応答するよう、構成されたネットワークシステムが知られている。例えばCDN(Content Delivery Network)は、このようなネットワークシステムの一例である。このようなネットワークシステムでは、配信サーバの数または種類が増大した場合、キャッシュヒット率が低下する傾向がある。キャッシュヒット率の低下は、キャッシュサーバのストレージ容量を増やすことで抑制できる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第5764100号公報
【特許文献2】特許第5261785号公報
【特許文献3】米国特許第9519614号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、安価でストレージ容量が多い情報処理装置および当該情報処理装置を制御する方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、情報処理装置は、オリジンサーバと端末とにネットワークを介して接続される。情報処理装置は、ストレージ装置と、プロセッサと、を備える。ストレージ装置は、第1記憶領域を備える。プロセッサは、ストレージ装置を制御することによって、第1記憶領域内にオリジンサーバから配信される1以上のコンテンツを格納するための複数の第2記憶領域を生成する。プロセッサは、端末からコンテンツの要求を受信する。プロセッサは、端末から要求されたコンテンツである第1コンテンツが複数の第2記憶領域の何れかに格納されている場合には、ストレージ装置を制御することによって第1コンテンツをリードして、リードされた第1コンテンツを端末に応答する。プロセッサは、第1コンテンツが複数の第2記憶領域の何れにも格納されていない場合、オリジンサーバから第1コンテンツを取得して、取得された第1コンテンツを端末に応答する。さらに、プロセッサは、複数の第2記憶領域から1つの第2記憶領域である第3記憶領域を選択して、ストレージ装置を制御することによって、取得された第1コンテンツである第2コンテンツを第3記憶領域内の空き領域にライトする。第1条件が成立した場合、プロセッサは、複数の第2記憶領域から1つの第2記憶領域である第4記憶領域を選択して、ストレージ装置を制御することによって、第4記憶領域内の全てのコンテンツをまとめて削除する。
【図面の簡単な説明】
【0006】
【
図1】
図1は、第1の実施形態のキャッシュサーバを備えるCDNの構成の一例を示す模式的な図である。
【
図2】
図2は、第1の実施形態のキャッシュサーバのハードウェア構成の一例を示す模式的な図である。
【
図3】
図3は、第1の実施形態のSSDのハードウェア構成の一例を示す模式的な図である。
【
図4】
図4は、第1の実施形態のメモリチップのハードウェア構成の一例を示す模式的な図である。
【
図5】
図5は、第1の実施形態のゾーンを説明するための模式的な図である。
【
図6】
図6は、第1の実施形態のSSDとして適用されるZNS SSDに関する制約を説明するための模式的な図である。
【
図7】
図7は、第1の実施形態のキャッシュサーバのソフトウェア構成の一例を示す模式的な図である。
【
図8】
図8は、第1の実施形態のキャッシュデータ制御部のより詳細な機能構成の一例を示す模式的な図である。
【
図9】
図9は、第1の実施形態のキャッシュ管理情報のデータ構造の一例を示す模式的な図である。
【
図10】
図10は、第1の実施形態のライト可能ゾーンの設定方法を説明するための模式的な図である。
【
図11】
図11は、第1の実施形態のゾーン管理情報のデータ構造の一例を示す模式的な図である。
【
図12】
図12は、第1の実施形態のゾーン管理情報に追加される情報の一例を示す模式的な図である。
【
図13】
図13は、第1の実施形態のキャッシュサーバの端末からのコンテンツの要求に応じた動作の一例を示すフローチャートである。
【
図14】
図14は、第1の実施形態のゾーンを削除する動作の一例を示すフローチャートである。
【
図15】
図15は、第2の実施形態のキャッシュサーバのハードウェア構成の一例を示す模式的な図である。
【
図16】
図16は、第2の実施形態のキャッシュデータ制御部のより詳細な機能構成の一例を示す模式的な図である。
【
図17】
図17は、第2の実施形態のライト可能ゾーンの設定方法を説明するための模式的な図である。
【
図18】
図18は、複数のコンテンツ間の関係性に基づいて特性を定義する第2の実施形態の定義方法の一例を説明するための模式的な図である。
【
図19】
図19は、第2の実施形態のキャッシュサーバの端末からのコンテンツの要求に応じた動作の一例を示すフローチャートである。
【
図20】
図20は、第3の実施形態のキャッシュデータ制御部のより詳細な機能構成の一例を示す模式的な図である。
【
図21】
図21は、コンテンツの要求の頻度の推移の一例を示すグラフである。
【
図22】
図22は、コンテンツの要求の間隔と効果持続期間との関係の一例を示すグラフである。
【
図23】
図23は、第3の実施形態のキャッシュサーバの、ゾーンがまだ生成されていない状態のSSDにゾーンを生成する動作の一例を示すフローチャートである。
【
図24】
図24は、
図23に示された一連の動作によって生成された複数のゾーンと、各ゾーンに対応付けられた時刻と、の具体例を説明するための模式的な図である。
【
図25】
図25は、第3の実施形態の、時刻に応じたゾーンの管理の動作の一例を示すフローチャートである。
【
図26】
図26は、複数のゾーンのそれぞれに対応付けられた時刻の変化の具体例を説明するための模式的な図である。
【
図27】
図27は、第3の実施形態のキャッシュサーバの端末からのコンテンツの要求に応じた動作の一例を示すフローチャートである。
【
図28】
図28は、第3の実施形態のキャッシュ読み書き部による効果持続期間の推定の動作の一例を示すフローチャートである。
【
図29】
図29は、第3の実施形態の変形例のゾーン制御部の動作の具体例を説明するための模式的な図である。
【発明を実施するための形態】
【0007】
実施形態にかかる情報処理装置は、コンテンツをキャッシュするように構成された任意のコンピュータに適用可能である。以下では、実施形態にかかる情報処理装置をCDNに含まれるキャッシュサーバに適用した例について説明する。以下、添付図面を参照して、実施形態にかかる情報処理装置が適用されたキャッシュサーバを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0008】
(第1の実施形態)
図1は、第1の実施形態のキャッシュサーバを備えるCDNの構成の一例を示す模式的な図である。CDN1000は、1以上のキャッシュサーバ1と、1以上のオリジンサーバ2と、を含む。本図には、1以上のオリジンサーバ2の例として、2つのオリジンサーバ2-1,2-2が描かれている。また、1以上のキャッシュサーバ1の例として、3つのキャッシュサーバ1-1,1-2,1-3が描かれている。2つのオリジンサーバ2-1,2-2および3つのキャッシュサーバ1-1,1-2,1-3は、ネットワーク3を介して接続されている。
【0009】
各オリジンサーバ2は、コンテンツを配信する配信サーバである。コンテンツは、動画、画像、またはこれら以外の任意の種類のデータである。コンテンツは、複数のデータチャンクに分割されていてもよい。オリジンサーバ2が配信するコンテンツを、オリジンサーバ2のコンテンツ、と表現することがある。以降では、コンテンツ、またはデータチャンクを総称して、コンテンツ、またはデータ、と表記する場合がある。
【0010】
各キャッシュサーバ1は、第1の実施形態の情報処理装置の一例である。各キャッシュサーバ1は、1以上のオリジンサーバ2から配信されるコンテンツをキャッシュする。各キャッシュサーバ1は、1つのオリジンサーバ2のコンテンツのみをキャッシュしてもよいし、2以上のオリジンサーバ2のコンテンツをキャッシュしてもよい。なお、コンテンツをキャッシュすることは、コンテンツを格納する、またはコンテンツをライトする、と換言され得る。
【0011】
キャッシュサーバ1は、エンドユーザの端末5からコンテンツの要求(request for a content)を受信した場合、要求されたコンテンツを自身がキャッシュしているか否かを判定する。キャッシュサーバ1は、要求されたコンテンツを自身がキャッシュしている場合、そのコンテンツを端末5に応答する。各キャッシュサーバ1は、要求されたコンテンツを自身がキャッシュしていない場合、要求されたコンテンツの配信元のオリジンサーバ2から該当のコンテンツを取得し、取得したコンテンツを端末5に応答するとともに、取得したコンテンツを自身にキャッシュする。要求されたコンテンツをキャッシュサーバ1がキャッシュしていることが判明することは、キャッシュヒットとも称される。要求されたコンテンツをキャッシュサーバ1がキャッシュしていないことが判明することは、キャッシュミスとも称される。
【0012】
なお、
図1に示される例によれば、キャッシュサーバ1-1は、複数の端末5としての一例としての端末5-1,5-2が接続されたネットワーク4-1に配置されている。つまり、キャッシュサーバ1-1は、端末5-1,5-2に近い位置に配置されている。これによって、キャッシュサーバ1-1は、端末5-1,5-2から送信されるコンテンツの要求をネットワーク4-1を介して受信することができる。なお、「近い」とは、通信経路が短いこと、または短い時間で通信ができることをいう。
【0013】
キャッシュサーバ1-2は、複数の端末5としての一例としての端末5-3,5-4が接続されたネットワーク4-2に配置されている。つまり、キャッシュサーバ1-2は、端末5-3,5-4に近い位置に配置されている。これによって、キャッシュサーバ1-2は、端末5-3,5-4から送信されるコンテンツの要求をネットワーク4-2を介して受信することができる。
【0014】
キャッシュサーバ1-3は、複数の端末5としての一例としての端末5-5,5-6,5-7が接続されたネットワーク4-3に配置されている。つまり、キャッシュサーバ1-3は、端末5-5,5-6,5-7に近い位置に配置されている。これによって、キャッシュサーバ1-3は、端末5-5,5-6,5-7から送信されるコンテンツの要求をネットワーク4-3を介して受信することができる。
【0015】
CDN1000によれば、端末5からコンテンツの要求が送信されて、当該要求の送信元の端末5に近いキャッシュサーバ1においてキャッシュヒットした場合、当該キャッシュサーバ1は、当該コンテンツの配信元のオリジンサーバ2の替わりに当該要求に応答する。よって、オリジンサーバ2へのアクセスの集中を緩和できる。また、各端末5は短い時間で所望のコンテンツを取得することが可能である。キャッシュサーバ1においてキャッシュヒットした場合に得られるこれらの効果を、キャッシュ効果、と表記する場合がある。
【0016】
図2は、第1の実施形態のキャッシュサーバ1のハードウェア構成の一例を示す模式的な図である。キャッシュサーバ1は、CPU(Central Processing Unit)11、メインメモリ12、NIC(Network Interface Card)13、チップセット14、およびSSD(Solid State Drive)15を備える。メインメモリ12はCPU11に電気的に接続されている。CPU11、NIC13、およびSSD15は、チップセット14に電気的に接続されている。なお、各要素間の接続の関係はこれに限定されない。
【0017】
SSD15は、第1の実施形態のストレージ装置の一例である。SSD15には、コンテンツがキャッシュデータとして格納される。第1の実施形態では、SSD15は、ZNS(Zoned Namespace) SSDと称される種類のSSDである。ZNS SSDは、NVM Express(TM)によって規定されたZNSコマンドセットに含まれる各コマンドを実行できるSSDである。SSD15のZNS SSDとしての機能は後述される。
【0018】
CPU11は、コンピュータプログラム(以降、プログラム、またはソフトウェアと表記する)を実行することが可能なプロセッサである。CPU11は、所定のプログラムを実行することによって、キャッシュサーバ1全体の動作の制御を実現する。CPU11は、SSD15にライトコマンド、リードコマンド、またはZNSコマンドセットに含まれる各コマンド、等の種々のコマンドを送信することによって、SSD15の動作を制御することができる。
【0019】
メインメモリ12は、プログラムが展開される領域、またはデータが一時的に格納される領域、などとして機能する。
【0020】
チップセット14は、CPU11、NIC13、およびSSD15の間の情報の送受信を実行する。
【0021】
NIC13は、インタフェース装置である。キャッシュサーバ1は、NIC13によってネットワーク(例えばネットワーク3およびネットワーク4)を介したオリジンサーバ2や端末5に対する情報の送受信を実行する。
【0022】
図3は、第1の実施形態のSSD15のハードウェア構成の一例を示す模式的な図である。SSD15は、コントローラ21と、NANDメモリ22と、を備える。
【0023】
コントローラ21は、ホストからのライトコマンドに従って、ホストから受信したデータをNANDメモリ22にライトする。また、コントローラ21は、ホストからのリードコマンドに従って、NANDメモリ22からデータをリードしてホストへ送信する。なお、第1の実施形態では、CPU11がコントローラ21にとってのホストに該当する。
【0024】
また、コントローラ21は、ZNSコマンドセットに含まれる各コマンドを実行することができる。
【0025】
NANDメモリ22は、1以上のメモリチップ23によって構成される。本図に示される例では、NANDメモリ22は、4つのメモリチップ23-1,23-2,23-3,23-4によって構成される。各メモリチップ23は、例えば、NAND型のフラッシュメモリのメモリチップである。
【0026】
メモリチップ23-1およびメモリチップ23-2は、チャネルCH0を介してコントローラ21と接続される。メモリチップ23-3およびメモリチップ23-4は、チャネルCH1を介してコントローラ21と接続される。チャネルCH0,CH1のそれぞれは、コマンド、アドレス、データ、および制御信号を伝送可能な信号線の群によって構成される。
【0027】
なお、NANDメモリ22を構成するメモリチップ23の数は4つに限定されない。また、各メモリチップ23とコントローラ21との間の接続の関係は上記の関係に限定されない。
【0028】
図4は、第1の実施形態のメモリチップ23のハードウェア構成の一例を示す模式的な図である。メモリチップ23は、アクセス回路24と、メモリセルアレイ25と、を備える。
【0029】
アクセス回路24は、ロウデコーダ、カラムデコーダ、センスアンプ、電圧発生回路、シーケンサ、データバッファ、などを含む。アクセス回路24は、メモリセルアレイ25に対し、データのライト、データのリード、およびデータのイレースを実行する。
【0030】
メモリセルアレイ25は、複数のメモリセルが2次元的にまたは3次元的に配列された構成を有する。メモリセルアレイ25は、複数の物理ブロック26を含む。物理ブロック26は、メモリセルアレイ25に対するイレースの単位である。つまり、1つの物理ブロック26に格納された全データは、アクセス回路24によって一括にイレースされる。
【0031】
各物理ブロック26は、複数のページを備えている。各ページは、アクセス回路24によってデータのライトおよびデータのリードが実行される最小の単位である。
【0032】
なお、メモリセルアレイ25は、それぞれは複数の物理ブロックを備えた複数のプレーン(Plane)に分割されていてもよい。複数のプレーンのそれぞれは、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ等)を備えていることにより、複数のプレーンに対して同時にライト、リード、またはイレースを実行することが可能とされ得る。
【0033】
コントローラ21は、複数の論理ブロックを設定してもよい。各論理ブロックは、例えば、それぞれ異なるメモリチップ23または異なるプレーンに属する複数の物理ブロックによって構成される。コントローラ21は、1つの論理ブロックを構成する複数の物理ブロックに対して同時にライト、リード、またはイレースを指示してもよい。
【0034】
以降、ブロックは、物理ブロック26または論理ブロックを意味することとする。
【0035】
続いて、ZNS SSDとしてのSSD15の機能を説明する。ZNS SSDとしてのSSD15は、ZNSコマンドセットに含まれる各コマンドを解釈して実行することが可能に構成されている。ZNSコマンドセットは、ゾーン生成コマンド(Zone Create Command)を含む。ゾーン生成コマンドは、ゾーンの生成のためのコマンドである。
【0036】
図5は、第1の実施形態のゾーンを説明するための模式的な図である。
【0037】
SSD15が備える4つのメモリチップ23の分のブロックの群は、記憶領域200を構成する。そして、記憶領域200は、物理アドレス空間300にマッピングされている。物理アドレス空間300は、記憶領域200に与えられた連続する物理アドレス値によって構成された範囲を表す。より詳しくは、メモリセルアレイ25内の各位置には、メモリセルアレイ25の構造的な特徴に則した位置情報である物理アドレス値がアサインされる。例えば、1つのページに含まれる複数のクラスタには、連続した物理アドレス値がアサインされる。そして、1つのブロックに含まれる複数のページには、ページのサイズに対応した粒度で連続した物理アドレス値がアサインされる。なお、クラスタは、物理アドレス値が与えられる最小粒度の領域であり、ページよりも小さい。コントローラ21は、物理アドレス値を用いて各メモリチップ23に対してライト、リード、およびイレースを指示する。なお、記憶領域200および物理アドレス空間300は、第1記憶領域の一例である。
【0038】
物理アドレス値とメモリセルアレイ25内の位置との対応関係は、基本的には固定される。物理アドレス値とメモリセルアレイ25内の位置との対応関係が固定されることに例外があってもよい。例えば、或るブロックに対するアクセスが困難になった場合、コントローラ21は、アクセス(即ちライト、リード、またはイレース)が困難になったブロックに対してアサインされていた物理アドレス値の群を、他の予備のブロックにリアサインしてもよい。
【0039】
コントローラ21は、ホストからゾーン生成コマンドを受信すると、物理アドレス空間300(換言すると記憶領域200)内にゾーンを生成する。物理アドレス空間300内にゾーンを生成するとは、物理アドレス空間300内の連続する領域(contiguous area)を1つのゾーンにアサインすることである。連続する領域とは、複数に断片化されていない領域である。
図5に示される例によれば、物理アドレス空間300の先頭の領域がゾーン#0にアサインされ、ゾーン#0の末尾に隣接する領域がゾーン#1にアサインされている。ゾーン#1の末尾に隣接する領域は、まだ何れのゾーンにもアサインされていない。
【0040】
このように、物理アドレス空間300内には、ホスト(即ちCPU11)からの制御によって、複数のゾーンが生成される。当該複数のゾーンは、オリジンサーバ2から配信される1以上のコンテンツがキャッシュデータとして格納される。各ゾーンは、第2記憶領域の一例である。
【0041】
1つのゾーンは、複数のブロックを含み得る。そして、1つのゾーン内では連続する論理アドレス値の群と連続する物理アドレスの群とがリニアに対応するように、1つのゾーン内の各位置(即ち各クラスタ)に論理アドレスが対応付けられる。例えば、論理アドレス値「0x000000」から始まる連続した論理アドレス値が、物理アドレス空間300上のゾーン#0がアサインされた領域の先頭から末尾までクラスタ単位で対応付けられる。また、論理アドレス値「0x000000」から始まる連続した論理アドレス値が、物理アドレス空間300上のゾーン#1がアサインされた領域の先頭から末尾までクラスタ単位で対応付けられる。
【0042】
ZNS SSDでは、データのライトおよびデータのイレースに関して制約が設けられている。
図6は、第1の実施形態のSSD15として適用されるZNS SSDに関する制約を説明するための模式的な図である。なお、本図には、一例として、物理アドレス空間300のうちのゾーン#0にアサインされた領域が描画されている。本図に示される例では、ゾーン#0が10個のブロック27によって構成されている。各ブロック27は、物理ブロック26または論理ブロックである。
【0043】
ZNS SSDでは、ホストは、各ゾーンに対し、論理アドレスの点でシーケンシャルにライトすることが要求される。例えば、ホストは、ゾーン#0に対しては、論理アドレス値「0x000000」で示される位置を先頭として、論理アドレス値の順番でライト先を選択して、順次、データをライトする。なお、ホストがデータをライトするとは、ホストがライトコマンドとライト先を示す論理アドレス値とライト対象のデータとをSSD(この場合はZNS SSD)に送信することである。
【0044】
前述されたように、1つのゾーン内では連続する論理アドレス値の群と連続する物理アドレスの群とがリニアに対応するように、1つのゾーン内の各位置に論理アドレス値が対応付けられる。したがって、ホストが論理アドレスの点でシーケンシャルにライトする制約を守った場合、コントローラ21は、各ゾーンに対し、物理アドレスの点でシーケンシャルにデータをライトする。例えばゾーン#0の場合、コントローラ21は、ホストから順次受信するデータを、ゾーン#0内の最も小さい物理アドレス値がアサインされたブロック27からライト先の物理アドレス値が連続するように、順次ライトする。ゾーン#0内の1つのブロック27がライト済みになった場合、つまり当該ブロック27に空き(available)領域が無くなった場合、コントローラ21は、次に受信するデータを、ゾーン#0内の物理アドレスの点で後続するブロック27にライトする。なお、空き領域とは、データが格納されていない領域である。
【0045】
ホストは、論理アドレスの点でシーケンシャルにデータをライトするために、具体的には、次に述べる管理を行う。即ち、ホストは、1つのゾーン内において最後にライト済みとなった領域に論理アドレス値の点で後続する位置を、次のデータのライトが可能な位置として管理する。つまり、1つのゾーン内において、空き領域の先頭位置が、次のデータのライトが可能な位置として管理される。ホストによって管理される次のデータのライトが可能な位置を、以降、ライト可能位置(writable location)、と表記する。ホストは、各ゾーンにおいて、ライト可能位置として設定された位置に新たなデータをライトする。ホストは、各ゾーンにおいて、ライト可能位置として設定した位置以外の位置にはデータをライトしない。上記の管理によって、ホストは、各ゾーンに対し、論理アドレスの点でシーケンシャルにデータをライトすることができる。
【0046】
なお、ホストでの管理において、ライト可能位置の設定は、所定の単位領域の境界でアラインされてもよい。所定の単位領域は例えばセクタ、クラスタ、またはページなどである。セクタは、論理アドレス値が与えられる最小粒度の領域であり、クラスタよりも小さい。
【0047】
ZNS SSDでは、さらに、データのイレースはゾーン単位で実行するという制約がある。例えばゾーン#0の場合、ゾーン#0を構成する10個のブロック27内のデータをまとめてイレースするよう、ホストおよびコントローラ21は制御を行う。例えばゾーン#0の場合、ホストおよびコントローラ21の何れも、ゾーン#0を構成する10個のブロック27のうちの一部のブロック27のみに対してイレースして他のブロック27のデータを残すような制御を実行しない。ホストは、SSD15に対し、ゾーン#0内のデータを削除するように指示する。SSD15のコントローラ21は、ゾーン#0を構成する10個のブロック27をターゲットして、ターゲットのブロック27を有する全てのメモリチップ23にイレースを指示する。
【0048】
或るゾーンに対してデータのイレースが実行された後、そのゾーンは、論理アドレスの点(および物理アドレスの点)で先頭からのデータのライトが可能になる。
【0049】
このように、ZNS SSDでは、各ゾーンに対して論理アドレスの点でシーケンシャルにデータをライトしなくてはならないという制約と、データのイレースはゾーン単位で実行しなくてはならないという制約がある。
【0050】
ここで、第1の実施形態のSSD15と比較されるSSDを説明する。第1の実施形態のSSD15と比較されるSSDを、比較例にかかるSSDと表記する。
【0051】
比較例にかかるSSDは、磁気ディスク装置との互換性を維持することを目的として、ランダムライト、つまり論理アドレスの点でランダムなライトが可能に構成される。そのため、比較例にかかるSSDは、論理アドレス値と物理アドレス値との対応関係をクラスタ毎に論物変換情報(logical-to-physical address translation information)に記録し、管理する。比較例にかかるSSDは、リードの際には論物変換情報を検索し、ライトの際には論物変換情報を更新する。比較例にかかるSSDによれば、論理アドレス値と物理アドレス値との対応関係の記録の単位がクラスタ単位であるため、NANDメモリの容量が大きいほど、論物変換情報のサイズが大きくなる。その結果、論物変換情報の検索の高速化のために大容量のバッファメモリが必要となったり、NANDメモリの記憶領域に論物変換情報を保存するための大きな領域を確保することが必要となったりする。
【0052】
さらに、比較例にかかるSSDは、論理アドレス空間でのオーバーライトが可能に構成される。論理アドレス空間でのオーバーライトは、或る論理アドレス値が示す論理アドレス空間上の位置に古いデータがライトされている状態で、当該位置に新しいデータをライトする処理である。以降、論理アドレス空間でのオーバーライトを、単に、オーバーライトと表記する。比較例にかかるSSDは、オーバーライトの際には、新しいデータをNANDメモリの空き領域にライトして当該新しいデータを有効データとして管理し、NANDメモリ内の別の位置に既に格納されている古いデータを無効化(invalidate)する。この処理によって、オーバーライトされたデータの量が多くなるほど、NANDメモリ内の無効データの量が増える。比較例にかかるSSDは、無効データの量が増えてフリーブロックが枯渇すると、ガベージコレクションを実行することによってフリーブロックを生成する。フリーブロックとは、有効データが格納されていないブロックである。ガベージコレクションは、有効データが格納された何れかのブロックを選択し、選択されたブロックに格納されている有効データを別のブロックにコピーすることによって、選択されたブロックを有効なデータが格納されていない状態(即ちフリーブロックの状態)にする処理である。フリーブロックの状態になったブロックに格納されている全てのデータは一括にイレースされ、これによって、当該ブロック内の全ての記憶領域は空き領域になる。
【0053】
SSDがホストに提供する論理アドレス空間のサイズは、表記容量(user capacity)と称される。比較例にかかるSSDによれば、表記容量は、NANDメモリに格納可能な有効データの最大量と等しい。比較例にかかるSSDによれば、オーバーライトによって、NANDメモリ内の古いデータは無効になる。よって、継続的(continuous)なライトを可能にするためには、比較例にかかるSSDは、表記容量を超えた容量の記憶領域が必要になる。表記容量を超えた分の容量は、余裕容量(over-provisioning capacity)と称される。比較例にかかるSSDは、表記容量の分の有効データがライトされた状態においては、余裕容量から最低限のフリーブロックの数に相当する量を除いた分まで無効データを保持しておくことが可能である。フリーブロックの数が最低限の数を下回った場合には、比較例にかかるSSDは、前述されたガベージコレクションを実行する。
【0054】
表記容量に対する余裕容量の比率は、ガベージコレクションの実行頻度に影響する。表記容量に対する余裕容量の比率が小さいほど、ガベージコレクションをより高い頻度で実行する必要がある。ガベージコレクションが実行されると、SSD内部のハードウェア(例えばバスやプロセッサなど)がガベージコレクションのために占有されるため、ホストに対する応答性能が低下する。よって、比較例にかかるSSDによれば、要求される性能が高いほど、表記容量に対する余裕容量の比率を高くする必要がある。比較例にかかるSSDによれば、性能を高く維持しつつ表記容量をしようとすると、表記容量のほかに、大きな余裕容量が必要となる。
【0055】
このように、比較例にかかるSSDによれば、表記容量が大きいほど、論物変換情報の管理に要するリソースが増大したり、大きな余裕容量が必要になったりする。よって、比較例にかかるSSDによれば、性能を維持しつつ表記容量を増やすことが価格の面で困難である。
【0056】
比較例にかかるSSDをキャッシュサーバに採用した場合、表記容量が、コンテンツをキャッシュすることが可能な最大量(つまりストレージ容量)である。よって、比較例にかかるSSDをキャッシュサーバに採用する場合、ストレージ容量を増やすためにはSSDに搭載するメモリチップの個数を増やすこと等が必要となり、安価にストレージ容量を増やすことが困難である。
【0057】
これに対し、第1の実施形態のSSD15として、ZNS SSDが採用される。ZNS SSDのコントローラは、1つのゾーン内では連続する論理アドレス値の群と連続する物理アドレスの群とがリニアに対応するように、1つのゾーン内の各位置に論理アドレス値を対応付ける。よって、ZNS SSDのコントローラは、ゾーンの先頭位置についてのみ論理アドレスと物理アドレスとの対応関係を論物変換情報に記録しておけば、ゾーン内の各位置の論理アドレス値と物理アドレス値との対応関係を導出することが可能である。よって、ZNS SSDによれば、論物変換情報の管理に要するリソースの量を、比較例にかかるSSDに比べて著しく抑制することが可能である。
【0058】
また、ZNS SSDによれば、各ゾーンに対して論理アドレスの点でシーケンシャルにデータをライトしなくてはならないという制約と、データのイレースはゾーン単位で実行しなくてはならないという制約とがある。よって、ZNS SSDでは、無効データが発生せず、ガベージコレクションは実行されない。つまり、ガベージコレクションが実行されることによる性能低下はない。また、無効データが発生しないため、余裕容量は必要ない。したがって、ZNS SSDによれば、比較例にかかるSSDに比べ、性能を維持しつつ安価に表記容量を増加させることが容易である。
【0059】
第1の実施形態では、比較例にかかるSSDに替えてZNS SSDを活用することによって、安価でストレージ容量が多いキャッシュサーバを実現することが可能となる。
【0060】
キャッシュサーバ1は、SSD15にコンテンツをキャッシュする。より詳細には、キャッシュサーバ1は、SSD15の記憶領域200に複数のゾーンを生成し、生成された複数のゾーンに1以上のコンテンツをキャッシュする。SSD15にキャッシュされているコンテンツを、キャッシュデータを表記することがある。
【0061】
図7は、第1の実施形態のキャッシュサーバ1のソフトウェア構成の一例を示す模式的な図である。キャッシュサーバ1では、CPU11は、CDNキャッシュソフトウェア100と、オペレーティングシステムプログラム110と、を実行する。具体的には、CPU11は、所定位置からオペレーティングシステムプログラム110およびCDNキャッシュソフトウェア100を取得してメインメモリ12にこれらをロードする。所定位置は、SSD15であってもよいし、キャッシュサーバ1にネットワークを介して接続された他の装置であってもよい。
【0062】
CPU11は、メインメモリ12にロードされたオペレーティングシステムプログラム110を実行することによって、システムコールインタフェース(I/F)111、カーネル112、SSDデバイスドライバ113、およびネットワークインタフェース(I/F)ドライバ114として機能する。また、CPU11は、メインメモリ12にロードされたCDNキャッシュソフトウェア100を実行することによって、キャッシュデータ制御部101としての機能を実現する。
【0063】
システムコールインタフェース111は、アプリケーション(この場合ではCDNキャッシュソフトウェア100)からのカーネル112の機能の呼び出しを受け付けるインタフェースである。SSDデバイスドライバ113は、ZNS SSDであるSSD15を使用するためのドライバである。ネットワークインタフェースドライバ114は、NIC13を使用するためのドライバである。
【0064】
カーネル112は、キャッシュサーバ1のハードウェアリソースを管理し、アプリケーションがキャッシュサーバ1のハードウェアリソースを使用できるようにする。カーネル112は、アプリケーションからの呼び出しをシステムコールインタフェース111を介して受信すると、SSDデバイスドライバ113またはネットワークインタフェースドライバ114などの機能をアプリケーションに使用させる。これによって、アプリケーションは、キャッシュサーバ1のハードウェアリソースを使用することが可能とされる。
【0065】
キャッシュデータ制御部101は、キャッシュサーバ1としての動作を制御する。
【0066】
図8は、第1の実施形態のキャッシュデータ制御部101のより詳細な機能構成の一例を示す模式的な図である。キャッシュデータ制御部101は、ハッシュ生成部102、キャッシュ管理情報103、データ取得部104、キャッシュ読み書き部105、ゾーン制御部106、およびゾーン管理情報107を備える。ハッシュ生成部102、データ取得部104、キャッシュ読み書き部105、およびゾーン制御部106は、例えばCPU11によって実現される。キャッシュ管理情報103およびゾーン管理情報107は、例えばメインメモリ12に置かれる。キャッシュ管理情報103およびゾーン管理情報107がメインメモリ12に置かれる場合、キャッシュ管理情報103およびゾーン管理情報107は、キャッシュサーバ1の電源断などの際には、メインメモリ12からSSD15などの不揮発性の記憶装置に退避せしめられ得る。
【0067】
ハッシュ生成部102は、端末5からのコンテンツの要求に含まれるコンテンツの識別情報をハッシュ化する。より具体的には、コンテンツの要求には、当該コンテンツの識別情報として、例えばURL(Uniform Resource Locator)が含まれる。キャッシュデータ制御部101は、キャッシュサーバ1にキャッシュされているコンテンツを、URLのハッシュを用いて管理する。
【0068】
キャッシュ管理情報103は、キャッシュサーバ1にキャッシュされているデータを管理するためのテーブルである。
【0069】
図9は、第1の実施形態のキャッシュ管理情報103のデータ構造の一例を示す模式的な図である。本図に示される例では、キャッシュ管理情報103は、ハッシュ値ごとに、ゾーンの識別番号、ゾーンの先頭位置からのオフセット、およびサイズが記録されたテーブルの形式の情報である。ハッシュ値は、コンテンツを表す識別情報としてのURLからハッシュ生成部102によって生成された値であり、SSD15にキャッシュデータとして格納されているコンテンツを表す。ゾーンの識別番号は、コンテンツがキャッシュデータとして格納されているゾーンを表す。ゾーンの先頭位置からのオフセットは、コンテンツがキャッシュデータとして格納されている範囲の先頭位置を表す。サイズは、コンテンツがキャッシュデータとして格納されている範囲のサイズを表し、コンテンツのサイズに対応する。なお、本図に示されている例では、ゾーンの先頭位置からのオフセットおよびサイズは、バイトの単位で表現されている。ゾーンの先頭位置からのオフセットおよびサイズを表す単位はこれに限定されない。また、ゾーンの先頭位置からのオフセットとして、論理アドレス値が使用されてもよい。以降、キャッシュ管理情報103に記録された1つのコンテンツにかかる情報(つまりゾーンの識別番号、ゾーンの先頭位置からのオフセット、およびサイズのセット)を、エントリ、と表記する。
【0070】
図8に説明を戻す。
データ取得部104は、オリジンサーバ2からコンテンツを取得する。
【0071】
キャッシュ読み書き部105は、データ取得部104によってオリジンサーバ2から取得されたコンテンツをキャッシュデータとしてSSD15にライトしたり、キャッシュデータとしてSSD15に格納されているコンテンツをSSD15からリードしたりする。
【0072】
コンテンツのライトが可能なゾーンの数は、設計者が任意に設定できる。コンテンツのライトが可能なゾーンを、ライト可能ゾーン(writable zone)と表記する。第1の実施形態では、一例として、
図10に示されるように、ライト可能ゾーンが1つだけ設定され、キャッシュ読み書き部105は、ライト可能ゾーンにコンテンツをライトする。ライト可能ゾーンに空き領域が無くなった場合、別のゾーンが新たなライト可能ゾーンとして設定される。
【0073】
ゾーン制御部106は、ゾーンの生成を制御する。ゾーン制御部106は、生成されたゾーンを、ゾーン管理情報107を用いて管理する。また、ゾーン制御部106は、ゾーンの削除を制御する。
【0074】
図11は、第1の実施形態のゾーン管理情報107のデータ構造の一例を示す模式的な図である。ゾーン管理情報107は、各ゾーンへのアクセスに関する情報である。本図に示される例では、アクセスに関する情報は、ゾーン生成時刻、アクセス回数、最終アクセス時刻、およびライト可能位置である。ゾーン生成時刻は、ゾーンが生成された時刻を表す。アクセス回数は、ゾーンが生成されてから当該ゾーンにアクセスされた回数を表す。なお、
図11の説明において、アクセスは、リードのみをいうこととする。アクセスは、ライトおよびリードの両方であってもよい。最終アクセス時刻は、最後にアクセスされた時刻を表す。ライト可能位置は、ゾーンの先頭位置からのオフセットとして表現されている。ライト可能位置は、論理アドレス値によって表現されてもよい。
【0075】
記憶領域200のサイズは有限である。よって、記憶領域200に生成できるゾーンの数は有限である。ゾーン制御部106は、所定の条件が成立した場合、削除対象のゾーンを、ゾーン管理情報107に基づいて決定し、削除対象のゾーンとして決定されたゾーンの削除の制御を行う。
【0076】
ゾーン制御部106は、
図11に示されたゾーン管理情報107に基づき、所定のポリシーに従って、削除対象のゾーンを選択する。削除対象のゾーンを選択するためのポリシーとしては、種々のポリシーが採用され得る。以下に、削除対象のゾーンを選択するためのポリシーの例を述べる。
【0077】
(ポリシー1)
現存するゾーンのうちのゾーン生成時刻が最も古いゾーンを削除対象として選択する。
(ポリシー2)
現存するゾーンのうちのアクセス回数が最も少ないゾーンを削除対象として選択する。
(ポリシー3)
現存するゾーンのうちの最後にアクセスされてからの経過時間が最も長いゾーンを削除対象として選択する。
【0078】
なお、ゾーン管理情報107に種々の情報を追加することによって、ポリシー1~ポリシー3以外のポリシーが採用可能である。
【0079】
図12は、第1の実施形態のゾーン管理情報107に追加される情報の一例を示す模式的な図である。本図に示される情報108は、アクセス回数が6回に分けて記録されるリングバッファの構成を有する。ゾーン制御部106は、情報108をゾーン毎に設ける。ゾーン制御部106は、情報108のうちのアクセス回数の記録先を、「値1」フィールドから「値6」フィールドに向かって5分毎に順次切り替えて、「値6」フィールドの次は「値1」フィールドに記録先を切り替える。記録先の切り替え時には、ゾーン制御部106は、新しい記録先のフィールドの内容をゼロで初期化する。記録先のフィールドは、例えばポインタ109によって管理される。なお、本図に示される例では、ポインタ109は「値5」フィールドを指している。ゾーン制御部106は、「値1」フィールドから「値6」フィールドまでの内容を合計することによって、間近の30分の期間のアクセス回数を、5分の精度でカウントすることができる。なお、記録先の切り替えのための時間は5分に限定されない。また、情報108が有する記録先のフィールドの数は6個に限定されない。設計者は、記録先の切り替えのための時間および情報108が有する記録先のフィールドの数を任意に設定することができる。
【0080】
ゾーン制御部106は、ゾーン管理情報107に
図12に示された情報108が追加された場合、下記のポリシー4に従って削除対象のゾーンを決定することが可能である。
【0081】
(ポリシー4)
間近の所定期間のアクセス回数が最も少ないゾーンを削除対象として選択する。
【0082】
ゾーンを削除する契機とされる条件は、設計者によって任意に設定され得る。第1の実施形態では、記憶領域200内のキャッシュデータの総量が所定のしきい値を超えることを、ゾーンを削除する契機として設定されていることとする。なお、ゾーンを削除する契機とされる条件は、第1条件の一例である。
【0083】
なお、ゾーンの削除の処理は、ゾーン内の全てのキャッシュデータの削除の処理を伴う。ゾーンの削除の際には、削除対象のゾーンに格納されている一部のキャッシュデータが救済(save)されてもよい。即ち、キャッシュ読み書き部105は、削除対象のゾーンに格納されている一部のキャッシュデータを、削除対象のゾーンの削除の前に別のゾーンにコピーすることによって、当該一部のキャッシュデータがSSD15から失われることを防止してもよい。
【0084】
救済対象のキャッシュデータを選択するためのポリシーとしては、種々のポリシーが採用され得る。以下に、救済対象のキャッシュデータを選択するためのポリシーの例を述べる。
【0085】
(ポリシー5)
キャッシュ読み書き部105は、キャッシュデータ毎にリードの回数を記録する。リードの回数が所定の条件を満たした場合、キャッシュ読み書き部105は、リードの回数が当該所定の条件を満たしたキャッシュデータを救済対象として選択する。リードの回数に関する当該所定の条件は、例えば、リードの回数が固定されたしきい値を超えることである。別の例では、リードの回数の関する当該所定の条件は、リードの回数の削除対象のゾーン内での順位が上位所定割合以内にあることである。さらに別の例では、リードの回数に関する当該所定の条件は、リードの回数が全ゾーン内での順位が上位所定割合以内にあることである。
【0086】
(ポリシー6)
キャッシュ読み書き部105は、キャッシュデータ毎に間近の所定期間のリードの回数を管理する。間近の所定期間のリードの回数が所定の条件を満たした場合、キャッシュ読み書き部105は、間近の所定期間のリードの回数が所定の条件を満たしたキャッシュデータを救済対象として選択する。間近の所定期間のリードの回数に関する当該所定の条件は、例えば、間近の所定期間のリードの回数が固定されたしきい値を超えることである。別の例では、間近の所定期間のリードの回数の関する当該所定の条件は、間近の所定期間のリードの回数の削除対象のゾーン内での順位が上位所定割合以内にあることである。さらに別の例では、間近の所定期間のリードの回数の関する当該所定の条件は、間近の所定期間のリードの回数が全ゾーン内での順位が上位所定割合以内にあることである。
【0087】
なお、キャッシュ読み書き部105は、例えば
図12に示された情報108と同様の情報を用いてキャッシュデータ毎のリードの回数を管理することによって、間近の所定期間のリードの回数を得ることができる。
【0088】
続いて、第1の実施形態のキャッシュサーバ1の動作を説明する。
【0089】
図13は、第1の実施形態のキャッシュサーバ1の端末5からのコンテンツの要求に応じた動作の一例を示すフローチャートである。
【0090】
キャッシュサーバ1が端末5からコンテンツの要求を受信すると(S101)、その要求をキャッシュデータ制御部101が受信する。すると、ハッシュ生成部102は、受信されたコンテンツの要求に含まれるURLをハッシュ化する(S102)。
【0091】
キャッシュ読み書き部105は、ハッシュ生成部102によって生成されたハッシュ値を検索キーとして用いてキャッシュ管理情報103を検索することによって、要求されたコンテンツに対応するエントリがキャッシュ管理情報103に存在するか否かを判定する(S103)。
【0092】
要求されたコンテンツがSSD15内にキャッシュデータとして格納されている場合、要求されたコンテンツに対応するエントリがキャッシュ管理情報103に存在する。よって、S103において実行される処理は、要求されたコンテンツがSSD15内にキャッシュデータとして格納されているか否かの判定の処理に相当する。
【0093】
要求されたコンテンツに対応するエントリがキャッシュ管理情報103に存在する場合(S103:Yes)、即ち判定結果がキャッシュヒットである場合、キャッシュ読み書き部105は、SSD15を制御することによって、キャッシュデータとしてSSD15に格納されている要求されたコンテンツをリードする(S104)。
【0094】
S104では、キャッシュ読み書き部105は、要求されたコンテンツが格納されている範囲の先頭の位置を表す論理アドレス値を、S103における検索によって得られたエントリに含まれるオフセットに基づいて取得する。また、キャッシュ読み書き部105は、当該エントリから、サイズを取得する。キャッシュ読み書き部105は、SSDデバイスドライバ113の機能を呼び出して、SSDデバイスドライバ113を介してSSD15にリードコマンドを送信する。キャッシュ読み書き部105は、リードコマンドを送信する際に、リード対象の位置として、要求されたコンテンツが格納されているゾーンの識別情報と、要求されたコンテンツが格納されている範囲の先頭の位置を表す論理アドレス値と、を指定する。そして、キャッシュ読み書き部105は、SSD15から、上記エントリから取得したサイズに相当する範囲のデータを取得する。
【0095】
S104に続いて、キャッシュ読み書き部105は、キャッシュデータを正常にリードできたか否かを判定する(S105)。キャッシュデータを正常にリードできた場合(S105:Yes)、キャッシュデータ制御部101は、ネットワークインタフェースドライバ114の機能を呼び出して使用することによって、キャッシュデータを端末5に応答する(S106)。ゾーン制御部106は、ゾーン管理情報107を更新する(S107)。ゾーン制御部106は、S107では、ゾーン管理情報107に記録されたアクセス回数をインクリメントし、ゾーン管理情報107に記録された最終アクセス時刻を更新する。S107の後、端末5からのコンテンツの要求に応じた動作が終了する。
【0096】
何らかの原因によってキャッシュデータを正常にリードできなかった場合(S105:No)、キャッシュ読み書き部105は、S103における検索によって得られたエントリをキャッシュ管理情報103から削除する(S108)。
【0097】
要求されたコンテンツに対応するエントリがキャッシュ管理情報103に存在しない場合(S103:No)、即ち判定結果がキャッシュミスである場合、またはS108の後、データ取得部104は、端末5から要求されたコンテンツをオリジンサーバ2から取得する(S109)。S109では、データ取得部104は、ネットワークインタフェースドライバ114の機能を呼び出して使用する。
【0098】
続いて、キャッシュデータ制御部101は、ネットワークインタフェースドライバ114の機能を呼び出して使用することによって、データ取得部104によって取得されたコンテンツを端末5に応答する(S110)。
【0099】
続いて、キャッシュ読み書き部105は、ライト可能ゾーンが存在するか否かを判定する(S111)。ライト可能ゾーンがない場合(S111:No)、ゾーン制御部106は、SSD15を制御することによって新規のゾーンを生成し、生成されたゾーンをライト可能ゾーンとして設定する(S112)。S112では、ゾーン制御部106は、SSDデバイスドライバ113の機能を呼び出して用いることによって、SSD15にゾーン生成コマンドを送信する。SSD15のコントローラ21は、ゾーン生成コマンドを受信すると、物理アドレス空間300内に新規のゾーンをアサインする。
【0100】
S112に続いて、ゾーン制御部106は、ゾーン管理情報107を更新する(S113)。S113では、ゾーン制御部106は、ゾーン管理情報107に、新規のゾーンに関するゾーン生成時刻を記録し、新規のゾーンに関するライト可能位置として新規のゾーンの先頭位置を示す論理アドレス値を記録する。
【0101】
ライト可能ゾーンが存在する場合(S111:Yes)、またはS113の後、キャッシュ読み書き部105は、SSD15を制御することによって、S109によって取得されたコンテンツをライト可能ゾーンにキャッシュデータとしてライトする(S114)。
【0102】
S114では、キャッシュ読み書き部105は、ゾーン管理情報107からライト可能ゾーンにかかるライト可能位置を取得し、ライト可能位置に対応する論理アドレス値を取得する。そして、キャッシュ読み書き部105は、SSDデバイスドライバ113の機能を呼び出して、SSDデバイスドライバ113を介してSSD15にライトコマンドを送信する。キャッシュ読み書き部105は、ライトコマンドを送信する際、ライト可能位置に対応する論理アドレス値と、S109によって取得されたコンテンツと、をSSD15に送信する。
【0103】
S114に続いて、ゾーン制御部106は、ゾーン管理情報107を更新する(S115)。S115では、ゾーン制御部106は、ライト可能ゾーンに関するライト可能位置を、コンテンツがライトされた範囲に後続する位置を、新たなライト可能位置として設定する。
【0104】
S115に続いて、キャッシュ読み書き部105は、コンテンツを正常にライトできたか否かを判定する(S116)。何らかの理由、例えばコンテンツがライト可能ゾーンの空き領域に収まらなかったなど、によってコンテンツを正常にライトできなかった場合(S116:No)、制御がS112に移行する。
【0105】
コンテンツを正常にライトできた場合(S116:Yes)、キャッシュ読み書き部105は、ライトされたコンテンツに対応するエントリをキャッシュ管理情報103に追加する(S117)。そして、端末5からのコンテンツの要求に応じた動作が終了する。
【0106】
図14は、第1の実施形態のゾーンを削除する動作の一例を示すフローチャートである。
【0107】
ゾーン制御部106は、SSD15内のキャッシュデータの総量をモニタリングしている。そして、ゾーン制御部106は、SSD15内のキャッシュデータの総量を所定のしきい値と比較し、SSD15内のキャッシュデータの総量がしきい値に到達したか否かを判定する(S201)。
【0108】
なお、S201の判定において使用されるしきい値は、0より大きく、かつSSD15に格納できるコンテンツの最大量(即ち表記容量)よりも小さい。例えば、しきい値は、SSD15の表記容量の80%の容量が、しきい値として設計者によって設定され得る。なお、しきい値の設定方法はこれに限定されない。
【0109】
SSD15内のキャッシュデータの総量がしきい値に到達していない場合(S201:No)、ゾーン制御部106は、S201の処理を再び実行する。SSD15内のキャッシュデータの総量がしきい値に到達した場合(S201:Yes)、ゾーン制御部106は、ゾーン管理情報107に基づいて、削除対象のゾーンを選択する(S202)。削除対象のゾーンの決定のためのポリシーとしては、例えば、前述されたポリシー1~ポリシー4の何れかが採用され得る。削除対象のゾーンの決定のためのポリシーはポリシー1~ポリシー4以外のポリシーであってもよい。ゾーン制御部106は、ゾーン管理情報107に基づいて削除対象のゾーンを選択することができる。
【0110】
S202に続いて、ゾーン制御部106は、救済対象のキャッシュデータを選択する(S203)。救済対象のキャッシュデータの選択のポリシーとしては、例えば、前述されたポリシー5またはポリシー6が採用され得る。救済対象のキャッシュデータを選択するためのポリシーは、ポリシー5およびポリシー6の何れとも異なるポリシーであってもよい。
【0111】
続いて、キャッシュ読み書き部105は、救済対象のキャッシュデータを、削除対象のゾーンからライト可能ゾーンにコピーする(S204)。つまり、キャッシュ読み書き部105は、SSD15を制御することによって、救済対象のキャッシュデータをリードし、リードされた救済対象のキャッシュデータをライト可能ゾーンにライトする。
【0112】
続いて、キャッシュ読み書き部105は、キャッシュ管理情報103に記録された救済対象のキャッシュデータに対応するエントリを更新する(S205)。つまり、キャッシュ読み書き部105は、救済対象のキャッシュデータに対応するエントリに含まれるゾーンの識別情報を、削除対象のゾーンの識別情報からライト可能ゾーンの識別情報に変更する。
【0113】
S205に続いて、ゾーン制御部106は、ゾーン管理情報107を更新する(S206)。S206では、ゾーン制御部106は、ライト可能ゾーンに関するライト可能位置を、救済対象のキャッシュデータのライトの後の状態を反映した位置に変更する。
【0114】
そして、ゾーン制御部106は、SSD15を制御することによって、削除対象のゾーンを削除する(S207)。具体的には、ゾーン制御部106は、SSDデバイスドライバ113の機能を呼び出して、SSDデバイスドライバ113の機能を用いることによって、削除対象のゾーンに格納された全データをイレースするコマンドをSSD15に送信する。さらに、ゾーン制御部106は、SSDデバイスドライバ113の機能を用いることによって、ゾーン削除コマンドをSSD15に送信する。SSD15では、コントローラ21は、削除対象のゾーンに格納された全データをイレースするコマンドを実行し、その後にゾーン削除コマンドを受信する。コントローラ21は、ゾーン削除コマンドを受信すると、該当のゾーンのアサインを解除する。
【0115】
続いて、キャッシュ読み書き部105は、削除されたゾーン内のキャッシュデータに対応するキャッシュ管理情報103のエントリを削除する(S208)。ゾーン制御部106は、削除されたゾーンの情報をゾーン管理情報107から削除する(S209)。そして、ゾーンを削除する動作が終了する。
【0116】
なお、S203~S206の処理の実行はオプショナルである。キャッシュサーバ1は、S203~S206の処理を必ずしも実行しなくてもよい。
【0117】
以上述べたように、第1の実施形態によれば、ZNS SSDであるSSD15を、配信サーバであるオリジンサーバ2から配信されたコンテンツをキャッシュデータとして格納するためのストレージ装置として使用される。具体的には、プロセッサであるCPU11は、SSD15を制御することによって、記憶領域200内に、1以上のコンテンツを格納するための複数のゾーンを生成する。CPU11は、端末5からのコンテンツの要求を受信する。端末5から要求されたコンテンツが何れかのゾーンに格納されている場合、CPU11は、SSD15を制御することによって当該コンテンツをSSD15からリードして、リードされた当該コンテンツを端末5に応答する。端末5から要求されたコンテンツが何れのゾーンにも格納されていない場合、端末5から要求されたコンテンツをオリジンサーバ2から取得して、取得されたコンテンツを端末5に応答する。また、CPU11は、SSD15を制御することによって、取得されたコンテンツを複数のゾーンのうちのライト可能ゾーン内の空き領域にライトする。SSD15内のキャッシュデータの総量がしきい値に到達した場合、CPU11は、複数のゾーンから1つの削除対象のゾーンを選択して、削除対象のゾーン内の全てのコンテンツをまとめて削除する。
【0118】
ZNS SSDは、比較例にかかるSSDに比べ、ストレージ容量が大きい。第1の実施形態によれば、ZNS SSDがオリジンサーバ2から配信されたコンテンツをキャッシュするためのストレージ装置として活用される。よって、比較例にかかるSSDがコンテンツをキャッシュするためのストレージ装置として採用される場合に比べて、簡単に、安価でストレージ容量が多いキャッシュサーバを実現することができる。
【0119】
なお、各ゾーンには、論理アドレスの点でシーケンシャルにコンテンツがライトされる。即ち、CPU11は、ライト可能ゾーンに1以上のコンテンツが既に格納されている場合、ライト可能ゾーンに最後にコンテンツがライトされた領域に後続する位置を、新たに取得されたコンテンツのライト先として指定して、SSD15に、当該新たに取得されたコンテンツのライトを実行させる。
【0120】
これによって、各ゾーンに対し、論理アドレスの点でシーケンシャルなライトが実現する。
【0121】
なお、前述されたように、ライト可能位置は、セクタ、クラスタ、またはページなど所定の単位領域の境界でアラインされてもよい。ライト可能位置が所定の単位領域の境界でアラインされることにより、1つのゾーンにおいて、或るコンテンツがライトされた領域と、次のコンテンツがライトされた領域と、の間に若干の間隙が生じてもよい。
【0122】
また、第1の実施形態によれば、CPU11は、各ゾーンへのアクセスに関する情報であるゾーン管理情報107を管理する。そして、SSD15内のキャッシュデータの総量がしきい値に到達した場合、CPU11は、ゾーン管理情報107に基づいて削除対象のゾーンを選択する。
【0123】
また、第1の実施形態によれば、CPU11は、削除対象のゾーン内のコンテンツの一部を救済することが可能に構成され得る。具体的には、SSD15内のキャッシュデータの総量がしきい値に到達した場合、CPU11は、SSD15を制御することによって、削除対象のゾーン内の救済対象のコンテンツをリードして、リードされた救済対象のコンテンツをライト可能ゾーンにライトしてもよい。その後、CPU11は、削除対象のゾーン内の全てのコンテンツをまとめて削除する。
【0124】
(第2の実施形態)
第2の実施形態では、ストレージ装置としてのSSDは、複数のゾーンがライト可能ゾーンとして設定され得る。例えば、SSDは、最大でM(ただしMは3以上の整数)個のゾーンを有し得る場合、N(ただしNは2以上M以下の整数)個のゾーンをライト可能ゾーンとして設定され得る。なお、それぞれはライト可能ゾーンが1つだけ設定される複数のSSD15によってストレージ装置が構成される場合であっても第2の実施形態の適用が可能である。
【0125】
以下に、第2の実施形態のキャッシュサーバについて説明する。第2の実施形態のキャッシュサーバに符号1aを付す。第2の実施形態のキャッシュサーバ1aが備える要素で第1の実施形態と同じ要素には、第1の実施形態と同じ名称および符号を付す。第2の実施形態のキャッシュサーバ1aが備える要素で第1の実施形態と同じ要素については、簡略的に説明するか、説明を省略する。
【0126】
図15は、第2の実施形態のキャッシュサーバ1aのハードウェア構成の一例を示す模式的な図である。キャッシュサーバ1aは、CPU11、メインメモリ12、NIC13、チップセット14、およびSSD15a備える。SSD15aは、第2の実施形態のストレージ装置の一例である。SSD15aは、ZNS SSDである。SSD15aは、複数のゾーンを同時にライト可能ゾーンとして設定可能に構成されている点を除き、第1の実施形態のSSD15と同様の構成を備える。
【0127】
キャッシュサーバ1aでは、第1の実施形態と同様に、CPU11は、CDNキャッシュソフトウェア100と、オペレーティングシステムプログラム110と、を実行する。CPU11は、CDNキャッシュソフトウェア100を実行することによって、キャッシュデータ制御部101aとしての機能を実現する。
【0128】
図16は、第2の実施形態のキャッシュデータ制御部101aのより詳細な機能構成の一例を示す模式的な図である。キャッシュデータ制御部101aは、ハッシュ生成部102、キャッシュ管理情報103、データ取得部104、キャッシュ読み書き部105a、ゾーン制御部106a、およびゾーン管理情報107を備える。つまり、キャッシュデータ制御部101aの機能構成は、キャッシュ読み書き部105に替えてキャッシュ読み書き部105aを、ゾーン制御部106に替えてゾーン制御部106aを備える点で、第1の実施形態のキャッシュデータ制御部101と異なる。
【0129】
ゾーン制御部106aは、複数のゾーンをライト可能ゾーンとして設定する。ライト可能ゾーンの数は固定されていてもよいし、適宜変更されてもよい。また、ゾーン制御部106aは、第1の実施形態のゾーン制御部106と同様の方法で、ゾーンの生成、ゾーンの削除、およびゾーン管理情報107の管理を実行する。
【0130】
キャッシュ読み書き部105aは、データ取得部104によってオリジンサーバ2から取得されたコンテンツをキャッシュデータとしてSSD15にライトしたり、キャッシュデータとしてSSD15に格納されているコンテンツをSSD15からリードしたりする。
【0131】
キャッシュ読み書き部105aは、データ取得部104によってオリジンサーバ2から取得されたコンテンツの、ライト先のゾーンを、当該コンテンツの特性(feature)に基づいて選択する。例えば
図17に示されるように、N個のライト可能ゾーンのうちのN-1個のライト可能ゾーンのそれぞれには、それぞれ異なる特性が対応付けられている。オリジンサーバ2から取得されたコンテンツの特性がN-1個のライト可能ゾーンの1つに対応付けられた特性に該当する場合、キャッシュ読み書き部105は、当該ゾーンに当該コンテンツをライトする。オリジンサーバ2から取得されたコンテンツの特性がN-1個のライト可能ゾーンに対応付けられた何れの特性にも該当しない場合には、N個のライト可能ゾーンのうちの残りの1つのゾーンに当該コンテンツをライトする。
【0132】
特性の定義方法は、特定の方法に限定されない。以下に、特性の定義方法の例を説明する。
【0133】
例えば、複数のコンテンツ間の関係性に基づいて特性を定義する方法が採用可能である。1つのタイトル(例えば映画のタイトル)の動画が複数のチャンクデータ(即ち複数のコンテンツ)に分割されている場合、当該複数のコンテンツは同じ特性を有すると見なされる。構成する動画のタイトルが異なる2つのコンテンツは、それぞれ異なる特性を有すると見なされる。つまり、コンテンツが動画である場合、当該動画のタイトルが特性として扱われる。構成する動画のタイトルが同じであるが解像度が異なる2つのコンテンツは、同じ特性を有すると見なされてもよいし、それぞれ異なる特性を有すると見なされてもよい。構成する動画のタイトルが同じであるが動画アルゴリズムが異なる2つのコンテンツは、同じ特性を有すると見なされてもよいし、それぞれ異なる特性を有すると見なされてもよい。
【0134】
図18は、複数のコンテンツ間の関係性に基づいて特性を定義する第2の実施形態の定義方法の一例を説明するための模式的な図である。本図に示される例では、記憶領域200aには、ライト可能ゾーンとして28個のゾーン#0~ゾーン#27がアサインされている。各ゾーンには固有のパスが与えられている。例えば、ゾーン#0には「/dev/sdz00」というパスが与えられている。キャッシュへのアクセスを簡単にするために、ディレクトリ構成400が生成される。ディレクトリ構成400は、例えばゾーン制御部106aによって生成され、管理される。ディレクトリ構成400の最上位のディレクトリには、「cache」という名称が与えられている。ディレクトリ「cache」の下には「movie」という名称のディレクトリが用意されている。ディレクトリ「movie」の下には、それぞれは映画のタイトルが与えられた27個のディレクトリが用意されている。「title1」、「title2」などは、映画のタイトルである。映画のタイトルが与えられた27個のディレクトリのそれぞれには、27個のゾーン#0~ゾーン#27のいずれか1つがマウントされている。
【0135】
つまり、
図18に示される例によれば、27タイトルの映画のそれぞれが、固有の特性として見なされる。キャッシュ読み書き部105aは、27タイトルの映画のうちの1つの映画を構成するコンテンツをオリジンサーバ2から取得した場合、SSD15aを制御することによって当該コンテンツを当該映画のタイトルに対応するゾーンにライトする。
【0136】
特性の定義方法の別の例としては、動画、静止画、その他、などのコンテンツのタイプによって特性の分類を行う方法が採用可能である。即ち、ゾーン制御部106aは、コンテンツのタイプ毎にライト可能ゾーンを対応付け、キャッシュ読み書き部105aは、オリジンサーバ2から取得したコンテンツのタイプに基づいてライト先のゾーンを選択する。コンテンツのタイプの判定方法は特定の方法に限定されない。例えば、キャッシュ読み書き部105aは、HTTP(HyperText Transfer Protocol)ヘッダに含まれる「Content Type」として記録された情報を参照することによって、コンテンツのタイプを判定することが可能である。
【0137】
特性の定義方法のさらに別の例としては、コンテンツのサイズを特性と見なす方法が採用可能である。即ち、ゾーン制御部106aは、複数のライト可能ゾーンのそれぞれに異なるサイズを対応付ける。キャッシュ読み書き部105aは、オリジンサーバ2から取得されたコンテンツのサイズに基づいてライト先のゾーンを選択する。
【0138】
特性の定義方法のさらに別の例としては、コンテンツの配信元のオリジンサーバ2を特性と見なす方法が採用可能である。例えば、ゾーン制御部106aは、2つのライト可能ゾーンを設ける。そして、ゾーン制御部106aは、2つのライト可能ゾーンのうちの一にはオリジンサーバ2-1を対応付け、2つのライト可能ゾーンのうちの他にはオリジンサーバ2-2を対応付ける。キャッシュ読み書き部105aは、コンテンツの取得元のオリジンサーバ2がオリジンサーバ2-1であるかオリジンサーバ2-2であるかに基づいて当該コンテンツのライト先のゾーンを選択する。
【0139】
続いて、第2の実施形態のキャッシュサーバ1aの動作を説明する。
【0140】
図19は、第2の実施形態のキャッシュサーバ1aの端末5からのコンテンツの要求に応じた動作の一例を示すフローチャートである。
【0141】
キャッシュサーバ1aは、S101~S110において、第1の実施形態と同様の動作を実行する。S110においてキャッシュデータ制御部101aがコンテンツを端末5に応答した後、キャッシュ読み書き部105aは、当該コンテンツの特性を判定する(S301)。そして、キャッシュ読み書き部105aは、判定された特性に基づいて、複数のライト可能ゾーンのうちから1つのライト可能ゾーンをライト先のゾーンとして選択する(S302)。そして、S114に制御が移行して、キャッシュ読み書き部105aは、オリジンサーバ2から取得したコンテンツを、選択されたライト可能ゾーンにライトする。以降、キャッシュサーバ1aは、S115~S117において、第1の実施形態と同様の動作を実行する。
【0142】
なお、例えばコンテンツがライト可能ゾーンの空き領域に収まらなかったなど、によってコンテンツを正常にライトできなかった場合(S116:No)、ゾーン制御部106aは、ゾーン生成コマンドを用いて新規のゾーンの生成を行い、生成されたゾーンに選択されたゾーンと同じ特性(つまりS301で判定された特性)を対応付け、生成されたゾーンをライト先のゾーンとして選択する(S303)。そして、ゾーン制御部106aは、ゾーン管理情報107に対し、ゾーンの生成に応じた更新を実行する(S113)。そして、制御がS114に移行する。
【0143】
このように、第2の実施形態によれば、CPU11は、オリジンサーバ2から取得された特性に基づいて複数のゾーンからライト先のゾーンを選択する。
【0144】
第2の実施形態のゾーンの削除方法は、
図14を用いて説明された第1の実施形態の方法と同様の方法が採用され得る。削除対象のゾーンを選択するためのポリシーとしては、ポリシー1~ポリシー4、またはその他のポリシーが採用可能である。救済対象のキャッシュデータを選択するためのポリシーとしては、ポリシー5、ポリシー6、またはその他のポリシーが採用可能である。なお、第2の実施形態においても、削除対象のゾーン内のキャッシュデータを救済する処理はオプショナルである。
【0145】
キャッシュサーバは、要求される頻度が高いコンテンツを多くキャッシュするほど、高いキャッシュ効果を得ることができる。キャッシュサーバは、不要になったコンテンツ、換言すると端末から要求されなくなったコンテンツ、をキャッシュしていても、当該コンテンツをキャッシュすることによるキャッシュ効果を得ることができない。
【0146】
ZNS SSDでは、1つのゾーンに格納された全てのコンテンツは、まとめてイレースされる。不要になるタイミングが揃った複数のコンテンツを1つのゾーンにまとめて格納すると、キャッシュ効果が高めることができる可能性がある。例えば、削除対象のゾーンを選択するためのポリシーとしてポリシー2~ポリシー4の何れかが採用された場合、不要になった複数のコンテンツをまとめてイレースできる。これによって、キャッシュサーバは、要求される頻度が高いコンテンツを多くキャッシュすることができ、これによって高いキャッシュ効果を得ることができる。
【0147】
第2に実施形態では、コンテンツは、当該コンテンツの特性に応じたゾーンに格納された。特性が同じ複数のコンテンツは、ほぼ同じタイミングで不要になり得る。例えば、或るタイトルの映画を構成する複数のコンテンツは、当該タイトルの映画の人気が落ちれば、要求される頻度がほぼ同じタイミングで低くなる。よって、第2に実施形態によれば、特に、削除対象のゾーンを選択するためのポリシーとしてポリシー2~ポリシー4の何れかが採用された場合、高いキャッシュ効果が得られる。なお、削除対象のゾーンを選択するためのポリシーとしてポリシー2~ポリシー4以外のポリシーが採用された場合であっても、キャッシュ効果が高くなる可能性がある。
【0148】
(第3の実施形態)
第3の実施形態では、コンテンツが不要となる時刻が推定され、推定された時刻に応じて当該コンテンツのライト先のゾーンが選択される。以降、コンテンツが不要となる時刻を、当該コンテンツをキャッシュすることによって得られるキャッシュ効果が消失する時刻という意味で、効果消失時刻、と表記する。また、キャッシュした時刻から効果消失時刻までの時間長さを、効果持続期間、と表記する。
【0149】
第3の実施形態のキャッシュサーバに符号1bを付す。第3の実施形態のキャッシュサーバ1bが備える要素で第2の実施形態と同じ要素には、第2の実施形態と同じ名称および符号を付す。第3の実施形態のキャッシュサーバ1bが備える要素で第2の実施形態と同じ要素については、簡略的に説明するか、または説明を省略する。
【0150】
キャッシュサーバ1bは、第2の実施形態のキャッシュサーバ1aと同じハードウェア構成を有する。また、キャッシュサーバ1bでは、第2の実施形態と同様に、CPU11は、CDNキャッシュソフトウェア100と、オペレーティングシステムプログラム110と、を実行する。CPU11は、CDNキャッシュソフトウェア100を実行することによって、キャッシュデータ制御部101bとしての機能を実現する。
【0151】
図20は、第3の実施形態のキャッシュデータ制御部101bのより詳細な機能構成の一例を示す模式的な図である。キャッシュデータ制御部101bは、ハッシュ生成部102、キャッシュ管理情報103、データ取得部104、キャッシュ読み書き部105b、ゾーン制御部106b、およびゾーン管理情報107を備える。つまり、キャッシュデータ制御部101bの機能構成は、キャッシュ読み書き部105aに替えてキャッシュ読み書き部105bを、ゾーン制御部106aに替えてゾーン制御部106bを備える点で、第2の実施形態のキャッシュデータ制御部101aと異なる。
【0152】
ゾーン制御部106bは、複数のゾーンを生成し、生成された複数のゾーンのそれぞれに、それぞれ異なる時刻を対応付ける。ゾーン制御部106bは、当該複数のゾーンをライト可能ゾーンとして管理する。ゾーン制御部106bは、ゾーンに対応付けられた時刻が到来すると、そのゾーンを初期化、即ち当該ゾーン内の全てのコンテンツのイレース、を実行し、当該ゾーンに、既に他のゾーンに対応付けられたいずれの時刻よりも新しい時刻を対応付ける。
【0153】
キャッシュ読み書き部105bは、オリジンサーバ2からコンテンツを取得した場合、当該コンテンツにかかる効果持続期間を推定する。
【0154】
効果持続期間の推定方法は、特定の方法に限定されない。以下に、効果持続期間の推定方法の例をいくつか説明する。
【0155】
一例では、コンテンツの要求の間隔に基づいて当該コンテンツにかかる効果持続期間を推定する方法が採用可能である。1つのコンテンツの要求の頻度は、例えば
図21のグラフに示されるように、時間経過とともに減衰すると考えられる。よって、コンテンツの要求の頻度に対して当該コンテンツが不要であるか否かの判断のためのしきい値が設定され、当該コンテンツの要求の頻度が当該しきい値を下回るまでの時間長さを、
図21に示された関係に基づいて計算することによって、効果持続期間の推定値を得ることが可能である。
【0156】
コンテンツの要求の頻度は、コンテンツの要求の間隔の逆数に相当すると考えられる。よって、
図21に示された関係に従えば、コンテンツの要求の間隔と効果持続期間との関係として、
図22のグラフに示される関係を得ることができる。キャッシュ読み書き部105bは、対象のコンテンツ(即ち効果持続期間の推定の対象のコンテンツ)の要求の間隔を測定する。そして、キャッシュ読み書き部105bは、対象のコンテンツの要求の間隔の測定値と、
図22に示されるような、コンテンツの要求の間隔と効果持続期間との関係を表す予め設定された情報と、に基づいて対象のコンテンツにかかる効果持続期間の推定値を取得する。
【0157】
別の例では、コンテンツの配信元を表すWebページを表すHTTPファイルのHTTPヘッダに含まれる「cache-control」の「max-age」として記録された数値情報に基づいて効果持続期間を推定する方法が採用され得る。キャッシュ読み書き部105bは、HTTPヘッダに含まれる「cache-control」の「max-age」として記録された数値情報を効果持続期間として取得してもよい。または、キャッシュ読み書き部105bは、当該数値情報に対して所定の演算、例えば0.8を乗じるなど、を実行することによって得られた値を効果持続期間と見なしてもよい。
【0158】
さらに別の例では、キャッシュ読み書き部105bは、オリジンサーバ2の反応速度またはコンテンツの転送速度に基づいて効果持続期間を推定してもよい。
【0159】
ここでは一例として、キャッシュ読み書き部105bは、コンテンツの要求の間隔に基づいて効果持続期間を推定することとする。
【0160】
キャッシュ読み書き部105bは、効果保持期間の推定値に基づいて効果消失時刻を推定する。例えば、キャッシュ読み書き部105bは、現在時刻に効果保持期間の推定値を加算することによって、効果消失時刻の推定値を取得する。キャッシュ読み書き部105は、効果消失時刻の推定値と、各ゾーンに対応付けられた時刻と、に基づいてライト先のゾーンを選択する。
【0161】
次に、第3の実施形態のキャッシュサーバ1bの動作について説明する。
【0162】
図23は、第3の実施形態のキャッシュサーバ1bの、ゾーンがまだ生成されていない状態のSSD15aにゾーンを生成する動作の一例を示すフローチャートである。
【0163】
まず、キャッシュデータ制御部101bは、SSD15aを制御することによってSSD15aの初期化を実行する(S401)。初期化によって、SSD15の記憶領域200bはいずれのゾーンも設定されていない状態となる。なお、S401の実行はオプショナルである。例えばSSD15aが初期化済みであれば、S401の処理はスキップされ得る。
【0164】
続いて、ゾーン制御部106bは、SSD15aを制御することによって、全期間を単位期間で割って得られる商に等しい個数のゾーンを生成する(S402)。全期間は、1つのコンテンツをキャッシュデータとして保持し得る最大の時間長さを示す設定時間長さである。単位期間とは、それぞれはゾーンに設定される複数の時刻の間隔を示す設定時間長さである。例えば全期間が「7日」であり、単位期間が「6時間」である場合、ゾーン制御部106bは、28個のゾーンを生成する。
【0165】
続いて、キャッシュ読み書き部105bはキャッシュ管理情報103を生成し、ゾーン制御部106bはゾーン管理情報107を生成する(S403)。キャッシュ読み書き部105bは、エントリが記録されていないブランクのキャッシュ管理情報103を生成する。ゾーン制御部106bは、生成された全ゾーンについて、ゾーン生成時刻が記録されたゾーン管理情報107を生成する。
【0166】
続いて、ゾーン制御部106bは、単位期間の間隔の複数の異なる時刻を表す名称が与えられた複数のディレクトリを生成し、生成された複数のディレクトリのそれぞれにゾーンをマウントする(S404)。そして、ゾーンがまだ生成されていない状態のSSD15aにゾーンを生成する動作が終了する。
【0167】
なお、ディレクトリにゾーンをマウントするとは、ディレクトリにゾーンを対応付けることである。ディレクトリにゾーンがマウントされた後は、キャッシュ読み書き部105bは、当該ディレクトリにアクセスすることによって当該ゾーンにアクセスすることが可能となる。
【0168】
図24は、
図23に示された一連の動作によって生成された複数のゾーンと、各ゾーンに対応付けられた時刻と、の具体例を説明するための模式的な図である。本図に示される例では、全期間は「7日」、単位期間は「6時間」であるとしている。よって、ゾーン制御部106bは、記憶領域200bに、28個のゾーン#0~ゾーン#27を生成する。各ゾーンには固有のパスが与えられている。例えば、ゾーン#0には「/dev/sdz00」というパスが与えられている。ゾーン制御部106bは、ディレクトリ構成400bを生成する。ディレクトリ構成400bの最上位のディレクトリには、「cache」という名称が与えられている。そして、ゾーン制御部106bは、生成されたゾーンの数と同数、つまり28個のディレクトリをディレクトリ「cache」の下に生成する。ゾーン制御部106bは、所定の時刻(例えば
図23に示された一連の動作の実行時の時刻)を基準として6時間間隔の異なる28個の時刻を算出し、28個のディレクトリのそれぞれに、28個の時刻のうちのそれぞれ異なる1つの時刻を表す名称を与える。ゾーン制御部106bは、時刻を表す名称の一例として「YYYY-MM-DD-hh-mm-ss」の名称を各ディレクトリに与える。ただし、「YYYY」は年、「MM」は月、「DD」は日、「hh」は時、「mm」は分、「ss」は秒を表す。
図24に示される例によれば、2020年10月1日の18時から2020年10月8日の12時までの6時間間隔の合計28個の時刻を示す28個の名称のそれぞれが、28個のディレクトリの何れかにユニークに与えられている。そして、時刻を表す名称が与えられた28個のディレクトリのそれぞれには、28個のゾーン#0~ゾーン#27のいずれか1つがユニークにマウントされている。
【0169】
このように、
図24に示される例によれば、複数のゾーンのそれぞれには、それぞれ異なる時刻がディレクトリの名称を介して対応付けられる。なお、複数のゾーンに対して時刻を対応付ける方法はこれに限定されない。
【0170】
図25は、第3の実施形態の、時刻に応じたゾーンの管理の動作の一例を示すフローチャートである。
【0171】
ゾーン制御部106bは、まず、SSD15aが有するゾーンのうちの最も古い時刻が対応付けられているゾーンを選択する(S501)。例えば、
図24に示された例によれば、「2020-10-1-18-00-00」という名称が与えられたディレクトリにマウントされたゾーンであるゾーン#0が選択される。以降、S501の処理によって選択されたゾーンを、対象のゾーンと表記する。
【0172】
続いて、ゾーン制御部106bは、対象のゾーンがマウントされたディレクトリの名称が示す時刻が到来したか否かを判定する(S502)。当該時刻がまだ到来していない場合(S502:No)、ゾーン制御部106bは、S502の処理を再び実行する。
【0173】
当該時刻が到来した場合(S502:Yes)、ゾーン制御部106bは、当該ディレクトリから対象のゾーンをアンマウントし、当該ディレクトリを削除する(S503)。そして、ゾーン制御部106bは、SSD15aを制御することによって、対象のゾーンを初期化する(S504)。つまり、ゾーン制御部106bは、対象のゾーンにキャッシュされた全てのコンテンツをイレースするように、SSD15aにコマンドを送信する。
【0174】
より具体的には、ゾーン制御部106bは、SSDデバイスドライバ113の機能を呼び出して、SSDデバイスドライバ113を介してSSD15aにイレースコマンドを送信する。既に述べたように、ZNS SSDによれば、データのイレースは、ゾーン単位で実行される。ゾーン制御部106bは、対象のゾーンを構成する全てのブロックをイレースの対象として指定したイレースコマンドを送信する。
【0175】
続いて、ゾーン制御部106bは、最長期間に対応した名称のディレクトリを新たに生成し、初期化後のゾーンを当該ディレクトリにマウントする(S505)。最長期間とは、何れかのゾーンに設定された全ての時刻のうちの最も新しい時刻に単位期間を加算して得られる時刻である。
【0176】
キャッシュ読み書き部105bは、初期化前の対象のゾーンに格納されていたキャッシュデータに対応するエントリをキャッシュ管理情報103から削除する(S506)。
【0177】
ゾーン制御部106bは、ゾーン管理情報107を更新する(S507)。つまり、ゾーン制御部106bは、ゾーン管理情報107に含まれる対象のゾーンにかかる情報のうち、ゾーン生成時刻を対象のゾーンの初期化の時刻で更新し、アクセス回数や最終アクセス時刻をリセットする。そして、時刻に応じたゾーンの管理の動作が終了する。
【0178】
なお、キャッシュデータ制御部101bは、対象のゾーン内のコンテンツが一括にイレースされる前に、第1の実施形態のキャッシュデータ制御部101と同様、対象のゾーン内のコンテンツの救済を実行してもよい。救済対象のコンテンツのコピー先の選択方法は、特定の選択方法に限定されない。
【0179】
また、
図25に示された一連の動作は、繰り返し実行される。
【0180】
図26は、複数のゾーンのそれぞれに対応付けられた時刻の変化の具体例を説明するための模式的な図である。なお、本図は、
図24に示された複数の時刻からの変化を示している。
【0181】
図24に示された例に従えば、
図25に示された一連の動作においては、ゾーン#0が対象のゾーンとして選択される。ゾーン#0は、「2020-10-1-18-00-00」という名称のディレクトリにマウントされている。つまり、ゾーン#0には、時刻「2020年10月1日18時00分00秒」が対応付けられている。ゾーン#0に対応付けられた時刻「2020年10月1日18時00分00秒」が到来したとき、ゾーン制御部106bは、ゾーン#0をアンマウントし、「2020-10-1-18-00-00」という名称のディレクトリを削除する。そして、ゾーン制御部106bは、ゾーン#0を初期化、つまりゾーン#0内の全コンテンツを一括に削除する。時刻「2020年10月1日18時00分00秒」が到来した時点においては、28個のゾーンに対応付けられた時刻のうちの最も新しい時刻は「2020年10月8日12時00分00秒」である。よって、
図26に示されるように、ゾーン制御部106bは、「2020年10月8日12時00分00秒」に単位期間である6時間を加えた「2020年10月8日18時00分00秒」を表す名称が与えられたディレクトリを新規に生成する。なお、新規のディレクトリの名称が示す時刻「2020年10月8日18時00分00秒」は、時刻「2020年10月1日18時00分00秒」が到来した時点からちょうど全期間として設定された「7日」が経過したタイミングにおける時刻と等しい。ゾーン制御部106bは、「2020年10月8日18時00分00秒」を表す名称が与えられたディレクトリにゾーン#0をマウントする。
【0182】
上記の構成により、記憶領域200bに設けられた複数のゾーンに設定された複数の時刻のうちの最も古い時刻が到来したとき、当該最も古い時刻が対応付けられたゾーン内のコンテンツがイレースされ、その時点から全期間として設定された時間が経過した時刻が当該ゾーンに対応付けられる。この一連の動作が繰り返し実行される。その結果、何れの時点においても、全期間として設定された時間後までの期間をほぼカバーするように、複数の時刻および複数の時刻のそれぞれが対応付けられたゾーンを用意することが可能とされる。
【0183】
なお、ゾーンに対応付けられた複数の時刻のうちの最も古い時刻が到来することは、第3の実施形態における第1条件の一例である。
【0184】
図27は、第3の実施形態のキャッシュサーバ1bの端末5からのコンテンツの要求に応じた動作の一例を示すフローチャートである。
【0185】
キャッシュサーバ1bは、S101~S110において、第1の実施形態および第2の実施形態と同様の動作を実行する。S110においてキャッシュデータ制御部101bがデータ取得部104によって取得されたコンテンツを端末5に応答すると、キャッシュ読み書き部105bは、当該コンテンツにかかる効果持続期間を推定する(S601)。
【0186】
図28は、第3の実施形態のキャッシュ読み書き部105bによる効果持続期間の推定の動作の一例を示すフローチャートである。
【0187】
まず、キャッシュ読み書き部105bは、対象のコンテンツの要求の間隔を測定する(S701)。対象のコンテンツは、S109の処理によって取得されたコンテンツである。
【0188】
S701では、一例では、キャッシュ読み書き部105bは、いったんメインメモリ12などに対象のコンテンツを保持するとともに、当該対象のコンテンツの要求を受信した時刻、つまりS101の処理の時刻を記憶する。そして、キャッシュサーバ1bが任意の端末5から対象のコンテンツの要求を新たに受信した場合、キャッシュ読み書き部105は、記憶された時刻と、対象のコンテンツの要求を新たに受信した時刻と、の間隔を、対象のコンテンツの要求の間隔の測定値として取得する。
【0189】
対象のコンテンツの要求の間隔の測定方法は上記の方法に限定されない。キャッシュ読み書き部105bは、3回以上、対象のコンテンツの要求を受信した時刻を取得して、取得された3回以上の時刻の間隔の平均を、対象のコンテンツの要求の間隔の測定値として取得してもよい。
【0190】
S701に続いて、キャッシュ読み書き部105bは、対象のコンテンツの要求の間隔の測定値に基づき、対象のコンテンツにかかる効果持続期間を推定する(S702)。例えば、キャッシュ読み書き部105bは、
図22に示された関係を表す予め設定された情報と、対象のコンテンツの要求の間隔の測定値と、に基づいて効果持続期間を推定する。S702の後、効果持続期間の推定の動作が終了する。
【0191】
図27に説明を戻す。
S601に続いて、キャッシュ読み書き部105bは、対象のコンテンツにかかる効果消失時刻を推定する(S602)。例えば、キャッシュ読み書き部105bは、S602の処理の実行時の時刻に効果持続期間の推定値を加算することによって、効果消失時刻の推定値を取得する。
【0192】
続いて、キャッシュ読み書き部105bは、効果消失時刻の推定値に基づいて、対象のコンテンツのライト先のゾーンを、時刻が対応付けられたゾーンのうちから選択する(S603)。
【0193】
例えば、効果消失時刻の推定値が、或るゾーンに対応付けられた時刻tiと、時刻tiに単位期間を加算して得られる時刻であって別のゾーンに対応付けられた時刻ti+1と、の間に含まれている場合、キャッシュ読み書き部105bは、時刻ti+1が対応付けられたゾーンを対象のコンテンツのライト先のゾーンとして選択する。または、キャッシュ読み書き部105bは、時刻tiが対応付けられたゾーンを対象のコンテンツのライト先のゾーンとして選択してもよい。効果消失時刻の推定値が、ゾーンに対応付けられた時刻のうちの最も古い時刻tminに満たない場合、キャッシュ読み書き部105bは、時刻tminが対応付けられたゾーンを対象のコンテンツのライト先のゾーンとして選択してもよい。効果消失時刻の推定値が、ゾーンに対応付けられた時刻のうちの最も新しい時刻tmaxを越える場合、キャッシュ読み書き部105bは、時刻tmaxが対応付けられたゾーンを対象のコンテンツのライト先のゾーンとして選択してもよい。
【0194】
S603に続いて、キャッシュ読み書き部105bは、選択されたゾーンに対象のコンテンツをキャッシュデータとしてライトする(S604)。以降、キャッシュサーバ1bは、S115~S117において、第1の実施形態および第2の実施形態と同様の動作を実行する。
【0195】
なお、例えば選択されたゾーンの空き領域に対象のコンテンツが収まらなかったなど、によってコンテンツを正常にライトできなかった場合(S116:No)、キャッシュ読み書き部105bは、より古い時刻が対応付けられたゾーン、即ち選択されたゾーンに対応付けられた時刻よりも単位期間の分だけ古い時刻が対応づけられたゾーン、を新たにライト先のゾーンとして選択する(S604)。そして、制御がS603に移行する。
【0196】
なお、コンテンツを正常にライトできなかった場合に別のゾーンをライト先のゾーンとして選択する方法は上記の方法に限定されない。例えば、キャッシュ読み書き部105bは、より新しい時刻が対応付けられたゾーン、即ち選択されたゾーンに対応付けられた時刻よりも単位期間の分だけ新しい時刻が対応づけられたゾーン、を新たにライト先のゾーンとして選択してもよい。
【0197】
別の例では、キャッシュ読み書き部105bは、空き領域を有する他のゾーンのうちからライト先のゾーンを選択してもよい。キャッシュ読み書き部105bは、空き領域を有する他のゾーンのうちの、効果消失時刻の推定値に最も近い時刻が対応付けられたゾーンを、新たにライト先のゾーンとして選択してもよい。
【0198】
このように、第3の実施形態によれば、CPU11は、複数のゾーンのそれぞれに異なる複数の時刻のうちの1つを対応付ける。CPU11は、オリジンサーバ2から取得したコンテンツにかかる効果消失時刻、即ち当該コンテンツの要求の頻度がしきい値を下回る時刻、を推定する。CPU11は、効果消失時刻と、複数のゾーンのそれぞれに対応付けられた時刻と、に基づいて複数のゾーンのうちからライト先のゾーンを選択する。
【0199】
よって、不要になるタイミングが揃った複数のコンテンツを1つのゾーンにまとめて格納することができるので、高いキャッシュ効果を得ることができる可能性がある。
【0200】
また、CPU11は、それぞれは何れかのゾーンに対応付けられた複数の時刻のうちの最も古い時刻が到来した場合、当該最も古い時刻が対応付けられたゾーン(対象のゾーン)内の全てのコンテンツをまとめて削除する。そして、CPU11は、それぞれは何れかのゾーンに対応付けられた複数の時刻のうちの最も新しい時刻に単位期間を加算して得られる時刻を対象のゾーンに対応付ける。
【0201】
よって、複数のコンテンツを不要になるタイミングでまとめて削除することが可能となるので、高いキャッシュ効果を得ることが可能である。
【0202】
(変形例)
図27のS116においてNoと判定された際に、空き領域を有するゾーンのうちからライト先のゾーンが選択される場合、SSD15aへのコンテンツのライトのレートが所定のレベル(例えば1つのゾーンのサイズを単位期間で除算して得られる値)を越えた状態が長引くと、SSD15aの記憶領域200bには新たなコンテンツをキャッシュすることができる空き領域が無くなってしまう可能性がある。ゾーン制御部106bは、SSD15aの記憶領域200bに空き領域が無くなった場合、単位期間を短縮するようにしてもよい。
【0203】
図29は、第3の実施形態の変形例のゾーン制御部106bの動作の具体例を説明するための模式的な図である。本図は、単位期間が「6時間」から「4.5時間」に短縮された場合のディレクトリ構成400bの変化を表している。
【0204】
単位期間が「6時間」から「4.5時間」に短縮された以降は、ゾーン制御部106bは、新しいディレクトリを生成する際に、それぞれは何れかのゾーンに対応付けられた複数の時刻のうちの最も新しい時刻に「4.5時間」を加算して得られる時刻を表す名称を当該新しいディレクトリに与える。
【0205】
例えば、ディレクトリ構成400bが
図24に示される状態となっている際に単位期間が「6時間」から「4.5時間」に短縮された場合、ゾーン制御部106bは、
図29の左方にしめされるように、最も古い時刻を表す「2020-10-1-18-00-00」という名称のディレクトリを削除する。そして、ゾーン制御部106bは、最も新しい時刻は「2020年10月8日12時00分00秒」に新たな単位期間である4.5時間を加えた「2020年10月8日16時30分00秒」を表す「2020-10-8-16-30-00」という名称が与えられたディレクトリを新規に生成する。
【0206】
以降、ゾーン制御部106bは、新規にディレクトリを作成する際には、何れかのゾーンに対応付けられた複数の時刻のうちの最も新しい時刻に「4.5時間」を加算して得られる時刻を表す名称を当該新規のディレクトリに与えることで、例えば
図29の右方に示されるように、ディレクトリに与えられた時刻の間隔が全て「4.5時間」となる。
【0207】
このように、CPU11は、記憶領域200bに生成された全てのゾーンに空き領域が無くなった場合、単位期間を短縮してもよい。
【0208】
単位期間の短縮によって、ゾーンの初期化の時間間隔が短縮されるので、以降は、SSD15aへのコンテンツのライトのレートが高くても、空き領域が無くなることを抑制することが可能となる。
【0209】
第1~第3の実施形態および第3の実施形態の変形例では、ストレージ装置の一例としてZNS SSDが採用された。ストレージ装置はZNS SSDに限定されない。例えば、ZNS SSDに替えて、SMR(Shingled Magnetic Recording)方式の磁気ディスク装置を実施形態のストレージ装置として採用してもよい。SMR方式によれば、CMR(Conventional Magnetic Recording)方式に比べて記録密度が高く、ストレージ容量が多い。つまり、SMR方式の磁気ディスク装置をストレージ装置として採用することで、CMR方式の磁気ディスク装置をストレージ装置として採用する場合に比べて、安価にストレージ容量を増やすことが可能である。
【0210】
また、第1~第3の実施形態および第3の実施形態の変形例では、プロセッサの一例としてCPU11が採用された。プロセッサは、CPU11に限定されない。例えば、プロセッサは、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、CPU11、またはこれらの組み合わせによって構成されてもよい。
【0211】
以上述べたように、実施形態によれば、プロセッサは、ストレージ装置を制御することによって、記憶領域内に複数のゾーンを生成する。プロセッサは、端末から要求されたコンテンツが何れかのゾーンに格納されている場合、ストレージ装置を制御することによって当該コンテンツをストレージ装置からリードして、リードされた当該コンテンツを端末に応答する。端末から要求されたコンテンツが何れのゾーンにも格納されていない場合、端末から要求されたコンテンツをオリジンサーバから取得して、取得されたコンテンツを端末に応答する。また、プロセッサは、ストレージ装置を制御することによって、取得されたコンテンツを複数のゾーンのうちのライト可能ゾーン内の空き領域にライトする。所定の条件が成立した場合、プロセッサは、複数のゾーンから1つの削除対象のゾーンを選択して、削除対象のゾーン内の全てのコンテンツをまとめて削除する。
【0212】
よって、安価でストレージ容量が多いキャッシュサーバを得ることができる。
【0213】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0214】
1,1a,1b キャッシュサーバ、2 オリジンサーバ、3,4 ネットワーク、5 端末、11 CPU、12 メインメモリ、13 NIC、14 チップセット、15 SSD、21 コントローラ、22 NANDメモリ、23 メモリチップ、24 アクセス回路、25 メモリセルアレイ、26 物理ブロック、27 ブロック、100 CDNキャッシュソフトウェア、101,101a,101b キャッシュデータ制御部、102 ハッシュ生成部、103 キャッシュ管理情報、104 データ取得部、105,105a,105b キャッシュ読み書き部、106,106a,106b ゾーン制御部、107 ゾーン管理情報、108 情報、109 ポインタ、110 オペレーティングシステムプログラム、111 システムコールインタフェース、113 SSDデバイスドライバ、114 ネットワークインタフェースドライバ、200,200a,200b 記憶領域、300 物理アドレス空間、400,400b ディレクトリ構成。