(57)【要約】      （修正有）【課題】配信のためにストレージから読み出したデータの転送処理効率を向上させることができるデータ配信装置、及びデータ配信方法を提供する。【解決手段】データ配信装置１は、記憶部４と、監視制御部３２２と、読出制御部３２１と、バッファ部５と、配信部３３とを持つ。記憶部は、ファイルを記憶する。監視制御部は、配信対象のファイルの読み出し指示を受信したときに、記憶部に記憶され、読み出しが指示されたファイルのフラグメントの状態を判断し、フラグメントの状態が所定よりも大きいと判断した場合に記憶部に記憶されているファイルのデフラグメントを行う。読出制御部は、監視制御部によるデフラグメントの終了後に配信対象のファイルのデータをエクステント単位で読み出す。バッファ部は、読出制御部が読み出したデータをバッファリングする。配信部は、バッファ部からデータを読み出して配信する。【選択図】図１
2015130135.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを記憶する記憶部と、
配信対象のファイルの読み出し指示を受信したときに、前記記憶部に記憶され、読み出しが指示された前記ファイルのフラグメントの状態を判断し、フラグメントの状態が所定よりも大きいと判断した場合に前記記憶部に記憶されている前記ファイルのデフラグメントを行う監視制御部と、
前記監視制御部によるデフラグメントの終了後に配信対象の前記ファイルのデータをエクステント単位で読み出す読出制御部と、
前記読出制御部が読み出した前記データをバッファリングするバッファ部と、
前記バッファ部から前記データを読み出して配信する配信部と、
を備えるデータ配信装置。
【請求項２】
前記監視制御部は、デフラグメントの終了から所定時間経過後に、配信対象のファイルの読み出し指示を受信したときに、前記記憶部に記憶されている前記ファイルのフラグメントの状態を判断する、
ことを特徴とする請求項１に記載のデータ配信装置。
【請求項３】
前記記憶部は、ソリッドステートドライブまたはハードディスクであり、
前記バッファ部は、シンクロナスランダムアクセスメモリである、
ことを特徴とする請求項１または請求項２に記載のデータ配信装置。
【請求項４】
データ配信装置が実行するデータ配信方法であって、
配信対象のファイルの読み出し指示を受信したときに、記憶部に記憶され、読み出しが指示された前記ファイルのフラグメントの状態を判断し、フラグメントの状態が所定よりも大きいと判断した場合に前記記憶部に記憶されている前記ファイルのデフラグメントを行う監視制御過程と、
前記監視制御過程におけるデフラグメントの終了後に配信対象の前記ファイルのデータをエクステント単位で読み出す読出制御過程と、
前記読出制御過程において読み出された前記データをバッファ部にバッファリングするバッファリング過程と、
前記バッファリング過程により前記バッファ部にバッファリングされた前記データを読み出して配信する配信過程と、
を有することを特徴とするデータ配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ配信装置、及びデータ配信方法に関する。
【背景技術】
【０００２】
ユーザにデータを配信するデータ配信装置として、ビデオコンテンツなどのデータを配信するコンテンツ配信サーバーがある。コンテンツ配信サーバーは、コンテンツデータを一旦内部のストレージに保存し、保存したコンテンツデータをストレージから読み出して大多数のユーザに同時配信する。コンテンツデータの高速な配信を実現するため、ストレージには、高速読み出しが可能なＳＳＤ（Solid State Drive）が用いられる。コンテンツ配信サーバーは、このＳＳＤにＲＡＩＤ（Redundant Array of Independent Disks）を適用してストライピングを行うことによっても高速な読み出しを実現している。また、コンテンツ配信サーバーは、配信の為のネットワーク処理を、ＦＰＧＡ（field-programmable gate array）によるハードウェアベースのプロトコル処理によって高速化している。さらに、コンテンツ配信サーバーは、ダイレクトストレージアクセス（ＤＳＡ）制御により、ＳＳＤからＦＰＧＡへのコンテンツデータの転送処理を、ＣＰＵ（central processing unit）を介さずに行うことによってＣＰＵ負荷を抑えている。
しかし、従来のコンテンツ配信サーバーでは、コンテンツデータのフラグメント（断片化）が大きく、データが記憶されている領域の分断の状態が大きな場合、ＳＳＤからＦＰＧＡへのデータ転送処理の効率が悪くなるという問題があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２４９４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、配信のためにストレージから読み出したデータの転送処理効率を向上させることができるデータ配信装置、及びデータ配信方法を提供することである。
【課題を解決するための手段】
【０００５】
実施形態のデータ配信装置は、記憶部と、監視制御部と、読出制御部と、バッファ部と、配信部とを持つ。記憶部は、ファイルを記憶する。監視制御部は、配信対象のファイルの読み出し指示を受信したときに、記憶部に記憶され、読み出しが指示されたファイルのフラグメントの状態を判断し、フラグメントの状態が所定よりも大きいと判断した場合に記憶部に記憶されているファイルのデフラグメントを行う。読出制御部は、監視制御部によるデフラグメントの終了後に配信対象のファイルのデータをエクステント単位で読み出す。バッファ部は、読出制御部が読み出したデータをバッファリングする。配信部は、バッファ部からデータを読み出して配信する。
【図面の簡単な説明】
【０００６】
【図１】実施形態のデータ配信装置の構成を示すブロック図。
【図２】フラグメントとデフラグメントの概要を表す図。
【図３】実施形態のデータ配信装置の動作フローを示す図。
【図４】実施形態のデータ配信装置のデータ転送処理フローを示す図。
【図５】従来のデータ配信装置の構成を示すブロック図。
【図６】従来のデータ配信装置の動作フローを示す図。
【図７】従来のデータ配信装置のデータ転送処理フローを示す図。
【発明を実施するための形態】
【０００７】
以下、実施形態のデータ配信装置、及びデータ配信方法を、図面を参照して説明する。以下では、配信対象のファイルがコンテンツデータであり、データ配信装置がコンテンツデータを配信するコンテンツ配信サーバーである場合について説明する。
【０００８】
まず、本実施形態のデータ配信装置の技術的な特徴を明確にするために、従来のデータ配信装置について説明する。
図５は従来のデータ配信装置９の構成を示すブロック図である。データ配信装置９は、ホストＣＰＵ（Central Processing Unit）２と、ＦＰＧＡ（field-programmable gate array）８と、ＳＳＤ（Solid State Drive：ソリッドステートドライブ）４と、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory：シンクロナスランダムアクセスメモリ）５とを備えて構成される。
【０００９】
ホストＣＰＵ２は、ＦＰＧＡ８を制御する。ＳＳＤ４は、ＲＡＩＤ（Redundant Array of Independent Disks）０によりコンテンツデータを格納するストレージである。ＳＳＤ４は、セクタ単位でデータを記憶する。ＳＤＲＡＭ５は、配信するコンテンツデータを一時的にバッファリングするバッファである。
【００１０】
ＦＰＧＡ８は、ＤＳＡ（Direct Storage Access）３１、ＳＡＴＡ（Serial Advanced Technology Attachment）  ＩＰ（Intellectual Property）コア８２、ＴＯＥ（TCP/IP Offload Engine）３３、及びＭＡＣ(Medium Access Control)処理部３４を備えて構成される配信処理部である。ＤＳＡ３１は、ＳＳＤ４から読み出されたデータをＳＤＲＡＭ５へ転送する。ＳＡＴＡ  ＩＰコア８２は、ＳＳＤ４へのアクセス制御を行う。ＳＡＴＡ  ＩＰコア８２が備えるＲＡＩＤコントローラ３２１は、ＲＡＩＤ０によりＳＳＤ４にアクセスする。ＴＯＥ３３は、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）のプロトコル処理を行う。ＴＯＥ３３は、コンテンツデータを設定したＴＣＰ／ＩＰのフレームを生成し、ＭＡＣ処理部３４に転送する。ＭＡＣ処理部３４は、メディアアクセス制御を行い、例えばイーサネット（登録商標）などのネットワークによりユーザの端末装置へコンテンツデータを配信する。
【００１１】
図６は、従来のデータ配信装置９の動作フローを示す図であり、図７は、従来のデータ配信装置９のデータ転送処理フローを示す図である。ホストＣＰＵ２は、配信対象のコンテンツデータのＳＤＲＡＭ転送指示をＦＰＧＡ８に出力する。このＳＤＲＡＭ転送指示の出力は、例えば、ホストＣＰＵ２が実行しているアプリケーション（ＡＰＬ）がsendfile()システムコールをコールすることに相当する（図６のステップＳ８１）。ＳＤＲＡＭ転送指示には、読み出し対象のコンテンツデータのエクステントが記憶されている先頭の論理アドレスとその先頭の論理アドレスからのサイズが含まれている。
【００１２】
ＤＳＡ３１は、ＳＤＲＡＭ転送指示を受けると、ＳＡＴＡ  ＩＰコア８２に対して、ＳＤＲＡＭ転送指示により要求されたコンテンツデータをＳＳＤ４から読み出すようエクステント毎に指示する。ＲＡＩＤコントローラ３２１は、読み出しの指示を受けると、ＤＳＡ３１から読み出しが指示されたエクステントの先頭の論理アドレス及びその先頭の論理アドレスからのサイズに基づいて、データの読み出し対象となるＳＳＤ４のセクタの物理アドレスを得る。ＲＡＩＤコントローラ３２１は、得られた物理アドレスを用いてＳＳＤ４からセクタ単位でデータを読み出し、ＤＳＡ３１に出力する。ＤＳＡ３１は、ＲＡＩＤコントローラ３２１が読み出したデータから１エクステント分のコンテンツデータを抽出し、ＳＤＲＡＭ５へ転送する（図６のステップＳ８２、図７のステップＳ９１）。
【００１３】
ＳＤＲＡＭ５は、ＤＳＡ３１から転送されたコンテンツデータをバッファリングする。ＴＯＥ３３は、ＳＤＲＡＭ５からバッファリングされたコンテンツデータを読み出してＴＣＰ／ＩＰのフレームに設定し、ＭＡＣ処理部３４に出力する。ＭＡＣ処理部３４は、ＴＯＥ３３から受信したフレームにＭＡＣ処理を行った後、ユーザの端末を宛先としてネットワーク配信する（図６のステップＳ８３、図７のステップＳ９２）。
【００１４】
上述した従来のデータ配信装置９は、ホストＣＰＵ２が実行するアプリケーションがコンテンツデータの転送や読み出しを指示するシステムコールをコールする度に、エクステント単位でＳＳＤ４からＦＰＧＡ８へのデータ転送処理を行っている。そのため、コンテンツデータのフラグメントが大きく、エクステントの数が多い場合、ＳＳＤ４からＦＰＧＡ８へのデータ転送処理の効率が低下する。そこで、本実施形態のデータ配信装置は、ＳＳＤからコンテンツデータを読み出す際に、フラグメントが大きい場合はデフラグメント処理を行ってからＳＤＲＡＭへのデータ転送処理を行う。このデフラグメントの処理によりコンテンツデータのフラグメントが大きくならない様に抑制し、データ転送処理を効率化する。
【００１５】
図１は、実施形態のデータ配信装置１の構成を示すブロック図である。同図において、図５に示す従来のデータ配信装置９と同一の部分には同一の符号を付し、その説明を省略する。同図に示すように、データ配信装置１がデータ配信装置９と異なる点は、ＦＰＧＡ８に代えてＦＰＧＡ３を備える点である。
【００１６】
ＦＰＧＡ３は、ＤＳＡ３１、ＳＡＴＡ  ＩＰコア３２、ＴＯＥ３３、及びＭＡＣ処理部３４を備えて構成される配信処理部である。このように、ＦＰＧＡ３が、図５に示すＦＰＧＡ８と異なる点は、ＳＡＴＡ  ＩＰコア８２に代えてＳＡＴＡ  ＩＰコア３２を備える点である。ＳＡＴＡ  ＩＰコア３２は、ＲＡＩＤコントローラ３２１と監視制御部３２２を備えて構成される。つまり、ＳＡＴＡ  ＩＰコア３２は、図５に示すＳＡＴＡ  ＩＰコア８２の構成に追加して、監視制御部３２２を備える。監視制御部３２２は、ＳＳＤ４に格納されたコンテンツデータのフラグメント状態を監視する。例えば、監視制御部３２２は、アプリケーションから要求された転送サイズの半分よりも小さくフラグメントされていた場合や、フラグメント数が所定よりも多い場合などに、フラグメントが大きいと判断する。監視制御部３２２は、フラグメントが所定の基準よりも大きく、データ記憶領域の分断の状態が激しいと判断した場合、デフラグメントを実行してフラグメントを解消する。
【００１７】
図２は、フラグメントとデフラグメントの概要を表す図である。同図では、論理アドレスで示される記憶領域にファイルが記憶された状態を示している。
記憶領域にデータが記憶されておらず、空白のまっさらな状態でファイルＦ１−Ｆ５を順次記録した場合、図２（ａ）に示すように、各ファイルＦ１−Ｆ５を構成するデータは記憶領域の連続するブロックにファイル毎にきれいに並んだ形で記録される。
その後、ファイルの内容変更に伴うファイルのサイズ増減や、ファイルの追加削除が発生すると、適正なサイズで連続したブロックを確保できず、飛び飛びのブロックにファイルが記録される。このように、ファイルが断片化された状態がフラグメントであり、データが連続して記憶されている各ブロックがエクステントである。
【００１８】
図２（ｂ）は、図２（ａ）の状態からファイルＦ２、Ｆ４を削除した状態を示している。図２（ｂ）に示す状態のときに、新規のファイルＦ６を記憶領域に書込むと、図２（ｃ）に示すように、ファイルＦ６はデータＦ６−１、Ｆ６−２、Ｆ６−３に断片化され、３つのエクステントに分かれて記憶される。
フラグメントしてしまったファイルが連続した領域となるようにデフラグメントを行い、空いている記憶領域を利用してデータの並べ替えを行うと、図２（ｄ）に示すように、連続した記憶領域に各ファイルのデータが書き込まれた状態となる。図２（ｄ）では、各ファイルＦ１、Ｆ３、Ｆ５、Ｆ６ともエクステントは１である。論理ファイルが連続したデータは、ＳＳＤ４においても連続したセクタに記憶される。
【００１９】
図３は、データ配信装置１の動作フローを示す図であり、図４は、データ配信装置１のデータ転送処理フローを示す図である。ホストＣＰＵ２は、配信対象のコンテンツデータのＳＤＲＡＭ転送指示をＦＰＧＡ３に出力する。このＳＤＲＡＭ転送指示の出力は、例えば、ホストＣＰＵ２が実行しているアプリケーション（ＡＰＬ）がsendfile()システムコールをコールすることに相当する（図３のステップＳ１１）。ＳＤＲＡＭ転送指示には、読み出し対象のコンテンツデータを構成するエクステントが記憶されている先頭の論理アドレスとその先頭の論理アドレスからのサイズが含まれている。
【００２０】
ＤＳＡ３１は、ＳＤＲＡＭ転送指示を受けると、ＳＡＴＡ  ＩＰコア３２に対して、ＳＤＲＡＭ転送指示により要求されたコンテンツデータをＳＳＤ４から読み出すようエクステント毎に指示する。ＳＡＴＡ  ＩＰコア３２の監視制御部３２２は、１エクステント分の読み出しの指示を受けると、論理アドレスによるコンテンツデータのフラグメント状態を判断する（図３のステップＳ１２、図４のステップＳ２１）。例えば、監視制御部３２２は、コンテンツデータのファイルエクステントマッピングを得るためのfiemapシステムコールをコールする。監視制御部３２２は、fiemapシステムコールの応答に含まれる構造体メンバによりエクステント数を得る。また、応答には各エクステントのバイト単位の長さが含まれる。監視制御部３２２は、エクステント数や各エクステントの長さによりフラグメント状態を判断する。監視制御部３２２は、フラグメントが所定の基準よりも大きいと判断した場合（図４のステップＳ２１：ＹＥＳ）、１ファイル（１コンテンツデータ）のデータがなるべく連続した論理アドレスに割り付けられるようにデフラグメントを行う（図４のステップＳ２２）。
【００２１】
監視制御部３２２は、デフラグメント後の各ファイルのエクステントの先頭の論理アドレスと先頭の論理アドレスからのサイズをホストＣＰＵ２に出力する。ホストＣＰＵ２は、デフラグメント後のエクステント状態に基づいて、新たに配信対象のコンテンツデータのＳＤＲＡＭ転送指示をＦＰＧＡ３に出力する。ＤＳＡ３１は、ＳＤＲＡＭ転送指示を受けると、ＳＡＴＡ  ＩＰコア３２に対して、ＳＤＲＡＭ転送指示により要求されたコンテンツデータをＳＳＤ４から読み出すようエクステント毎に指示する。
【００２２】
フラグメント状態が所定の基準以下であると判断された場合（図４のステップＳ２１：ＮＯ）、あるいは、ステップＳ２２の処理の後、ＲＡＩＤコントローラ３２１は、読み出しの指示に従ってコンテンツデータをＳＳＤ４から読み出す。ステップＳ２２の処理の後の読み出しは、デフラグメント後のエクステントに基づく。ＲＡＩＤコントローラ３２１は、ＤＳＡ３１から読み出しが指示されたエクステントの先頭の論理アドレス及びその先頭の論理アドレスからのサイズに基づいて、データの読み出し対象となるＳＳＤ４のセクタの物理アドレスを得る。ＲＡＩＤコントローラ３２１は、得られた物理アドレスを用いてＳＳＤ４からセクタ単位でデータを読み出し、ＤＳＡ３１に出力する。ＤＳＡ３１は、ＲＡＩＤコントローラ３２１が読み出したデータから１エクステント分のコンテンツデータを抽出し、ＳＤＲＡＭ５へ転送する（図３のステップＳ１３、図４のステップＳ２３）。
【００２３】
ＳＤＲＡＭ５は、ＤＳＡ３１から転送されたコンテンツデータをバッファリングする。ＴＯＥ３３は、ＳＤＲＡＭ５からバッファリングされたコンテンツデータを読み出してＴＣＰ／ＩＰのフレームに設定し、ＭＡＣ処理部３４に出力する。ＭＡＣ処理部３４は、ＴＯＥ３３から受信したフレームにＭＡＣ処理を行った後、ユーザの端末を宛先としてネットワーク配信する（図３のステップＳ１４、図４のステップＳ２４）。
【００２４】
本実施形態のデータ配信装置は、ストレージであるＳＳＤからファイルのデータを読み出す際に、ファイルのフラグメントが大きい場合、デフラグメントの処理を行ってからデータ送信用のバッファであるＳＤＲＡＭへのデータ転送処理を行う。これによりフラグメントが大きくならない様に抑制し、データ転送処理の効率が低下しないようにすることができる。また、デフラグメントの処理は負荷が高い場合がある。そこで、監視制御部３２２は、一旦デフラグメントを行ってから所定時間が経過するまでは、図４のステップＳ２１及びステップＳ２２の処理を実行しないようにしてもよい。
上記のように、データ配信装置は、定期的にデフラグメントを行い、フラグメントの影響をなくすことでストレージから転送用バッファへのデータ転送処理を効率化することができる。
【００２５】
なお、上述したデータ配信装置１は、コンテンツデータのストレージとしてＳＳＤ４を用いているが、ＨＤＤ（Hard disk drive：ハードディスクドライブ）など他の記憶装置を用いてもよい。
【００２６】
なお、上記実施形態のＦＰＧＡ３と同様の機能を有する配信処理部の一部または全てを、ソフトウェア機能部により実現してもよい。
【００２７】
以上説明した少なくともひとつの実施形態によれば、監視制御部を持つことにより、ストレージに記憶されているファイルのフラグメントが大きくならない様に抑制し、ストレージからデータ配信のためのバッファへのデータ転送処理を効率化することができる。
さらに、監視制御部は、一旦デフラグメントを行ってから所定時間が経過するまでは、フラグメントの状態を判断しないようにすることで、デフラグメントの実行頻度を抑え、データ転送処理の効率が低下しないようにすることができる。
【００２８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００２９】
１…データ配信装置、２…ホストＣＰＵ、３…ＦＰＧＡ、４…ＳＳＤ（記憶部）、５…ＳＤＲＡＭ(バッファ部）、８…ＦＰＧＡ、９…データ配信装置、３１…ＤＳＡ、３２…ＳＡＴＡ  ＩＰコア、３３…ＴＯＥ（配信部）、３４…ＭＡＣ処理部、８２…ＳＡＴＡ  ＩＰコア、３２１…ＲＡＩＤコントローラ（読出制御部）、３２２…監視制御部
【図１】
2015130135.tif 000003
【図２】
2015130135.tif 000004
【図３】
2015130135.tif 000005
【図４】
2015130135.tif 000006
【図５】
2015130135.tif 000007
【図６】
2015130135.tif 000008
【図７】
2015130135.tif 000009