JP6112193B2 - アクセス制御プログラム、ディスク装置及びアクセス制御方法 - Google Patents

アクセス制御プログラム、ディスク装置及びアクセス制御方法 Download PDF

Info

Publication number
JP6112193B2
JP6112193B2 JP2015506525A JP2015506525A JP6112193B2 JP 6112193 B2 JP6112193 B2 JP 6112193B2 JP 2015506525 A JP2015506525 A JP 2015506525A JP 2015506525 A JP2015506525 A JP 2015506525A JP 6112193 B2 JP6112193 B2 JP 6112193B2
Authority
JP
Japan
Prior art keywords
data
storage area
access
physically
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015506525A
Other languages
English (en)
Other versions
JPWO2014147840A1 (ja
Inventor
高橋 秀和
秀和 高橋
美穂 村田
美穂 村田
裕一 槌本
裕一 槌本
荻原 一隆
一隆 荻原
河場 基行
基行 河場
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2014147840A1 publication Critical patent/JPWO2014147840A1/ja
Application granted granted Critical
Publication of JP6112193B2 publication Critical patent/JP6112193B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Description

本発明は記憶装置に記憶されたデータにアクセスする技術に関する。
近年、ビジネスの高速化に伴い、次々と流れてくる大量のデータをリアルタイムに処理することが求められている。これに伴い、ストリームデータ処理が注目されている。
ストリームデータ処理は、例えば、サーバ装置などで行なわれる。そして、ストリームデータ処理では、サーバが有するメモリに流れてくるデータが書き込まれたとき、リアルタイムにデータの分析処理が実行される。
ストリームデータ処理では、大量のデータが流れてきたとき、サーバが有するメモリ上に分析処理するデータを記憶する記憶領域が不足することがある。すると、サーバは、例えば、メモリ上に保持されているデータの中で、最も長い間使用されていないデータを、サーバが有するディスク上に書き込む処理をする。そして、サーバは、ディスクに書き込んだデータをメモリ上から削除することにより、メモリ上に分析処理に用いるデータを保持するためのキャッシュ領域を確保する。また、サーバは、一旦ディスクに書き込んだデータを分析処理で使用するとき、ディスク上のデータをメモリに読み出して分析処理をする。
上記のようなストリームデータ処理では、例えば、流れてくるデータが多くなると、ディスクへのデータの書き込みや読み出しなどをするアクセス命令を大量に処理することになる。すると、ストリームデータ処理では、ディスクへのデータの書き込みや読み出しというアクセス処理に多くの時間がかかるようになる。その結果、ストリームデータ処理では、分析処理のスループットが低下する。したがって、ストリームデータ処理では、分析処理のスループットを向上するために、ディスク上のデータへアクセスする回数を少なくすることが求められる。
このため、ストリームデータ処理において、サーバは、例えば、ディスクに記憶するデータを、それぞれデータを識別するキーに関連付け、B木などの論理構成を用いてデータが所定の順番に並ぶようにマッピングする。サーバは、マッピングの結果に応じて、ディスクの記憶領域にデータを所定の順番に並べて記憶する。そして、サーバは、ディスクから複数のデータを読み出すとき、キーの範囲を指定することにより、一度のアクセスで複数のデータをディスクから読み出す。これにより、ストリーム処理において、サーバは、ディスクへのアクセス回数を少なくすることができる。
特開2005−322215号公報
前述したアクセス制御技術では、キーの順番にしたがって、物理的に連続した記憶領域にデータを並べて記憶する。このため、サーバでは、データの並びを維持するために、追加するデータや、更新したことによりデータサイズが増加したデータをディスクに書き込むとき、書き込むデータの記憶領域を所定の位置に確保するため、他のデータの再配置処理が実行される。したがって、他のデータの再配置処理に時間がかかるため、アクセス処理のスループットが低下する。
また、前述したアクセス制御技術では、複数のデータの読み出し処理において、読み出す各データがディスク上で物理的に連続して並んでいないとき、各データを読み出すために、各データが記憶されている記憶領域にランダムアクセスが実行される。このため、ディスクからデータを読み込むためにヘッダを移動させるシーク処理の回数が増えるため、アクセス処理のスループットが低下する。
さらに、前述したアクセス制御技術では、データを書き込むとき、まず書き込み先の記憶領域に記憶されているデータを読み出す処理を実行し、データが存在するか否かを確認する。これにより、サーバでは、データが存在するとき、書き込むデータが更新するデータであると判定し、データが存在しないとき、書き込むデータが追加するデータであると判定する。このため、データを書き込むときにも読み出し処理を実行するので、アクセス処理のスループットが低下する。なお、サーバでは、データを書き込むときの読み出す処理をなくすために、各データの存在を管理する管理情報を参照する構成をとることもできるが、この場合、大量データの管理情報を記憶するのでメモリを消費する。
以上のように、前述したアクセス制御技術は、データの物理配置管理やデータへのアクセス方式が非効率であり、アクセス処理のスループットが低下するという問題がある。
本発明は、一側面として、記憶装置に記憶されたデータへのアクセス処理のスループットを向上させる技術を提供する。
アクセス制御プログラムは、記憶装置に記憶された第1のデータへの第1のアクセス命令を受信する処理をコンピュータに実行させる。また、アクセス制御プログラムは、第1のアクセス命令に応じて、第1のデータが記憶された第1の記憶領域から第1のデータを読み出す処理をコンピュータに実行させる。さらに、アクセス制御プログラムは、第1のデータを読み出すとともに、第1の記憶領域と物理的に隣接し、かつ、空領域ではない第2の記憶領域から第2のデータを読み出す処理をコンピュータに実行させる。また、アクセス制御プログラムは、第1の記憶領域と第2の記憶領域とから、第1のデータと第2のデータとを削除する処理をコンピュータに実行させる。
1実施態様によれば、記憶装置に記憶されたデータへのアクセス処理のスループットを向上させることができる。
ディスク装置の一実施例を示す機能ブロック図である。 ストリームデータ処理システムの一実施例を示すシステム構成図である。 メッセージのデータ例を示す図である。 サーバ装置の一実施例を示す機能ブロック図である。 ストリームデータ処理を示すシーケンス図である。 ストリームデータ処理を示すシーケンス図である。 ストリームデータ処理を示すシーケンス図である。 ストリームデータ処理を示すシーケンス図である。 セグメント管理テーブルのデータ例を示す図である。 アドレス管理テーブルのデータ例を示す図である。 セグメント数を判定する処理を示すフローチャートである。 セグメント数を判定する処理を示すフローチャートである。 セグメントの読み出し処理を示すフローチャートである。 低速記憶媒体のセグメントの記憶状態の一例を示す図である。 低速記憶媒体のセグメントの記憶状態の一例を示す図である。 低速記憶媒体のセグメントの記憶状態の一例を示す図である。 高速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。 低速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。 低速記憶媒体のセグメントの記憶状態の一例を示す図である。 低速記憶媒体のセグメントの記憶状態の一例を示す図である。 コンピュータ装置の一実施例を示すブロック図である。
[実施形態]
実施形態のディスク装置について説明する。
図1は、ディスク装置の一実施例を示す機能ブロック図である。
図1を参照して、ディスク装置について説明する。
ディスク装置1は、命令保持部2と、頻度判定部3と、命令実行部4と、ディスク5とを備える。ディスク装置1は、例えば、後述するサーバ装置30などのコンピュータ装置である。
命令保持部2は、ディスク装置1が受信したディスク5に記憶されているデータの読み出しや、ディスク5へのデータの書き込みを要求するアクセス命令を保持する。命令保持部2は、例えば、後述する命令保持部62である。
頻度判定部3は、ディスク5からデータ群を読み出す処理において、命令保持部2が保持しているアクセス命令の数が多くなると、一度に読み出すデータ群の数を多くする。また、頻度判定部3は、ディスク5からデータ群を読み出す処理において、命令保持部2が保持しているアクセス命令の数が少なくなると、一度に読み出すデータ群の数を少なくする。
また、頻度判定部3は、一度に読み出すデータ群の数を、命令保持部62が保持しているアクセス命令の数が所定の閾値以上となるとK(K>1)倍する。さらに、頻度判定部3は、一度に読み出すデータ群の数を、命令保持部62が保持しているアクセス命令の数が所定の閾値未満となるとL(L<1)倍する。頻度判定部3は、例えば、後述する判定部63である。なお、KとLとは、例えば、K=1/Lであっても良い。頻度判定部3は、一度に読み出すデータ群にKまたはLを乗算した値の端数を切り捨てた整数値を、一度に読み出すデータ群の数として設定しても良い。頻度判定部3は、n個のデータ群の数を増減させる処理を、データ群を読み出す処理を実行するごとに行なっても良い。
命令実行部4は、記憶装置に記憶された1以上のデータを有する第1のデータ群への第3のアクセス命令を受信する。また、命令実行部4は、第3のアクセス命令に応じて、第1のデータ群が記憶された第1の記憶領域を含む、物理的に連続するn(nは自然数)個の記憶領域から、それぞれが1以上のデータを有するn個のデータ群を読み出す。そして、命令実行部4は、読み出したn個のデータ群を削除する。命令実行部4は、例えば、後述する命令実行部61である。記憶装置とは、例えば、ディスク5、および後述する低速記憶媒体70である。
命令実行部4は、1以上のデータを有するm(mは自然数)個のデータ群を、記憶装置に書き込む第4のアクセス命令とm個のデータ群とを受信する。さらに、命令実行部4は、第4のアクセス命令に応じて、記憶装置が備える1以上のデータを有する複数のデータ群が書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するm個のデータ群が記憶されていない空領域に、m個のデータ群をそれぞれ書込みする。
命令実行部4は、データ群を読み出す処理において、n個の記憶領域の中に空領域があるとき、n個のデータ群に代えて、n個の記憶領域のうち、第1の記憶領域を含む、物理的に連続するデータ群が記憶された記憶領域から1以上のデータ群を読み出す。また、命令実行部4は、読み出した1以上のデータ群を削除する。
命令実行部4は、連続して流れてくる複数のアクセス命令を受信すると、受信したアクセス命令を命令保持部2に記憶する。
ディスク5は、例えば、後述する低速記憶媒体70である。
実施形態のストリームデータ処理システムについて説明する。
図2は、ストリームデータ処理システムの一実施例を示すシステム構成図である。図3は、メッセージのデータ例を示す図である。
ストリームデータ処理システム80は、クライアント10と、ネットワーク20と、サーバ装置30とを備える。
クライアント10は、例えば、後述するコンピュータ装置であり、ネットワーク20を介してサーバ装置30と接続されている。そして、クライアント10は、例えば、図3に示すキーと、処理内容と、パラメータとを含むメッセージ100をサーバ装置30に送信する。これにより、クライアント10は、サーバ装置30に分析処理を要求する。なお、メッセージ100では、3つの処理に関するキーと、処理内容と、パラメータとを有しているが、これに限らず、処理ごとに別々のメッセージを用いても良い。
図3を参照して、メッセージ100について説明する。
メッセージ100は、例えば、指定するデータを識別するキーと、指定したデータに対して行なう処理の内容と、処理に使用するパラメータとを含む。メッセージ100は、指定されたキーに対応するデータを読み出し、データに含まれるパラメータに対して所定の処理をサーバ装置30に実行させるとき、サーバ装置30に対してクライアント10から送信される要求メッセージである。
図3を参照して、メッセージ100について説明する。ただし、メッセージ100は、以下の一例に限らず、クライアント10が要求する処理内容を示し、その処理をサーバ装置30に実行させるための情報を含むものであれば良い。
メッセージ100の1行目の“キー=A、処理内容=inc、パラメータ=10”は、サーバ装置30に、キー=Aに対応するデータのパラメータに対し、パラメータ=10を加算(処理内容=inc)させる要求を示している。メッセージ100の2行目の“キー=B、処理内容=dec、パラメータ=5”は、サーバ装置30に、キー=Bに対応するデータのパラメータに対し、パラメータ=5を減算(処理内容=dec)する要求を示している。メッセージ100の3行目の“キー=C、処理内容=multi、パラメータ=2”は、サーバ装置30に、キー=Cに対応するデータのパラメータに対し、パラメータ=2を乗算(処理内容=multi)する要求を示している。
図2を参照して説明する。
ネットワーク20は、クライアント10とサーバ装置30とに情報の通信経路を提供する。ネットワーク20は、例えば、LAN(Local Area Network)、無線通信、またはインターネットなどである。
図2と図4とを参照して説明する。図4は、サーバ装置の一実施例を示す機能ブロック図である。
サーバ装置30は、スケジューラ40と、高速記憶媒体50と、ストレージミドルウェア60(アクセス制御プログラム)と、低速記憶媒体70とを備える。
スケジューラ40は、図4に示すように、イベント処理部41と、命令処理部42と、セグメント管理部43との機能を有する。また、スケジューラ40は、セグメント管理テーブル300を備える。なお、セグメント管理テーブル300は、例えば、サーバ装置30が有する低速記憶媒体70の一部の記憶領域に記憶され、スケジューラ40の起動時に高速記憶媒体50の一部の記憶領域に読み出されることにより、アクセス処理で使用されても良い。
ストレージミドルウェア60は、図4に示すように、命令実行部61と、命令保持部62と、判定部63との機能を有する。また、ストレージミドルウェア60は、アドレス管理テーブル400を備える。なお、アドレス管理テーブル400は、例えば、サーバ装置30が有する低速記憶媒体70の一部の記憶領域に記憶され、ストレージミドルウェア60の起動時に高速記憶媒体50の一部の記憶領域に読み出されることにより、アクセス処理で使用されても良い。
高速記憶媒体50は、小容量で高速な記憶媒体である。高速記憶媒体50は、例えば、RAM(Random Access Memory)などのメモリである。
低速記憶媒体70は、大容量で低速な記憶媒体である。低速記憶媒体70は、記憶領域を一定のサイズを持つ複数の領域に区分して、同一の区分に1以上のデータを記憶する。低速記憶媒体70の記憶領域における一定のサイズを持つ区分をブロックという。また、同一のブロックに記憶される1以上のデータを有するデータ群のことをセグメントと言う。なお、セグメントに含まれる1以上のデータは、命令処理部42で実行される分析処理が効率よく行われるように、それぞれが関連するデータであっても良い。低速記憶媒体70は、例えば、ハードディスクである。
図5〜図8を参照して、サーバ装置30が有する各機能で行なう処理の詳細を説明する。また、以下の説明において、一例として、サーバ装置30がメッセージ100を受信したものとして説明する。
イベント処理部41は、サーバ装置30がクライアント10から受信したメッセージ100を取得する(S100)。
そして、イベント処理部41は、取得したメッセージ100を用いてアクセス命令200を生成する(S101)。
図3を参照して、アクセス命令200について説明する。
アクセス命令200とは、命令処理部42にメッセージ100に含まれる分析処理の要求を通知するための情報である。イベント処理部41は、例えば、図3に示すメッセージ100を受信すると、メッセージ100からキーと、処理内容と、パラメータとを抽出する。そして、イベント処理部41は、抽出したキーごとに、対応する処理内容と、処理に用いるパラメータとを関連付けてアクセス命令200を生成する。
イベント処理部41は、例えば、図3に示すメッセージ100を取得したとき、キーA〜Cにそれぞれ対応したアクセス命令201〜203を生成する。アクセス命令201は、メッセージ100の1行目に記載の要求を命令処理部42に通知するための情報である。アクセス命令202は、メッセージ100の2行目に記載の要求を命令処理部42に通知するための情報である。アクセス命令203は、メッセージ100の3行目に記載の要求を命令処理部42に通知するための情報である。
以下の説明では、一例として、アクセス命令201に関する処理を説明する。アクセス命令202、203の処理は、アクセス命令201の処理手順において、使用するキーと、処理内容と、パラメータとを、それぞれアクセス命令202、203に含まれる値に変更した処理である。
図5を参照して説明する。
イベント処理部41は、S101で生成したアクセス命令201を命令処理部42に通知する(S102)。
命令処理部42は、アクセス命令201が通知されると、アクセス命令201に含まれるキーAを取得する(S103)。なお、命令処理部42は、キーAに対応するデータが高速記憶媒体50に記憶されているとき、高速記憶媒体50からキーAに対応するデータを読み出し、読み出したデータが有するパラメータに対し、パラメータ=10を加算する分析処理をしても良い。以下の説明では、高速記憶媒体50にキーAに対応するデータがないものとして説明する。
そして、命令処理部42は、取得したキーAをセグメント管理部43に通知する(S104)。
セグメント管理部43は、キーAが通知されると、セグメント管理テーブル300を参照して、キーAに対応するセグメントを識別するセグメントID(Identifier)を取得する(S105)。
セグメント管理部43は、取得したセグメントIDを命令処理部42に通知する(S106)。なお、命令処理部42は、通知されたセグメントIDに対応するセグメントが高速記憶媒体50に記憶されているとき、高速記憶媒体50にキーAに対応するデータがあると判定しても良い。キーAに対応するデータがないものとして説明しているので、高速記憶媒体50には、セグメントIDに対応するセグメントが記憶されていない。
ここで、図9を参照して、セグメント管理テーブル300について説明する。
図9は、セグメント管理テーブルのデータ例を示す図である。
セグメント管理テーブル300は、図9に示すように、キーと、セグメントIDとを関連付けて格納したテーブルである。すなわち、セグメント管理テーブル300は、キーに対応するデータが、どのセグメントに属しているかを示すテーブルである。よって、図9を参照するとS105では、キーAに対応するセグメントID=seg0を取得することになる。なお、図9のセグメント管理テーブル300は、例えば、キーAと、キーCとに対応する各データがseg0に対応する同一のセグメントに属していることを示している。また、セグメント管理テーブル300は、例えば、分析処理において続けてアクセスされる可能性が高いデータが同じセグメントに属するように設定されても良い。セグメント管理テーブル300は、予め与えられたものを用いても良いし、分析処理におけるアクセス状況を反映して更新されるテーブルを用いても良い。分析処理におけるアクセス状況を反映して更新するとは、例えば、分析処理において続けてアクセスされる可能性が高いデータを検索し、検索したデータ群を同じセグメントに属するように設定するなどの処理である。
図6を参照して説明する。
命令処理部42は、S105において、セグメント管理部43で取得されたセグメントID=seg0が通知されると、高速記憶媒体50の記憶領域に、所定のサイズ(容量)の記憶領域を確保する(S201)。以下の説明において、所定のサイズの記憶領域は、キャッシング領域という。なお、キャッシング領域のサイズは、予め決められたサイズでも良いし、ストリームデータ処理の処理状況に応じてサイズを変更しても良い。一例として、キャッシング領域のサイズには、例えば、サーバ装置30が備える高速記憶媒体50の容量が大きいほど、大きいサイズが設定されても良い。キャッシング領域のサイズには、例えば、サーバ装置30で実行される分析処理の処理能力が高く高速に処理が実行されるほど、大きいサイズが設定されても良い。
そして、命令処理部42は、アクセス命令201を命令実行部61に通知する(S202)。このとき、命令処理部42は、アクセス命令201とともに、ディスクに記憶されたデータ群を読み出す要求と、セグメント管理部43で取得されたセグメントIDとを一緒に通知しても良い。以下の説明では、命令処理部42が、アクセス命令201と、ディスクに記憶されたデータ群を読み出す要求と、セグメント管理部43で取得されたセグメントIDとを一緒に命令実行部61に通知したものとして説明する。また、説明の簡単化のため、命令処理部42から通知されるアクセス命令201には、データ群の読み出し要求とセグメントIDとを含むものとして説明する。なお、アクセス命令201は、これに限らず、命令実行部61に分析処理で用いるセグメントを読み出させ、読み出したセグメントを命令処理部42に通知させるための要求であれば良い。
命令実行部61は、アクセス命令201が通知されると、アクセス命令201を命令保持部62に通知する(S203)。
命令保持部62は、アクセス命令201が通知されると、通知されたアクセス命令201を保持する(S204)。命令保持部62は、例えば、キューであり、データストリーム処理において、次々と通知される1以上のアクセス命令200をバッファリングする。
図7を参照して説明する。
命令実行部61は、ストリームデータ処理が実行され、命令保持部62に最初のアクセス命令200を通知したあと、アクセス命令200を命令保持部62に要求する(S301)。命令実行部61は、アクセス命令200が要求する低速記憶媒体70へのデータの書き込み、または読み出しが終わるごとに、次のアクセス命令200を命令保持部62に要求しても良い。
命令保持部62は、アクセス命令200の要求が通知されると、例えば、保持している中で最初に保持したアクセス命令200を取り出す(S302)。以下の説明では、命令保持部62がアクセス命令201を取り出したときを一例として説明する。
そして、命令保持部62は、取り出したアクセス命令201を命令実行部61に通知する(S303)。
命令実行部61は、アクセス命令201が通知されると、アクセス命令201が読み出しを要求するセグメントのセグメントIDに対応する論理ブロックアドレスを、アドレス管理テーブル400から取得する(S304)。なお、論理ブロックアドレスは、LBAやCHSなどにより指定しても良い。LBAは、Logical Block Addressingの略であり、低速記憶媒体70の全てのブロックに通し番号を振り、通し番号によりブロックを指定する方式である。また、CHSは、Cylinder Head Sectorの略であり、3つの値によりデータの場所を指定する方式である。以下の説明において、論理ブロックアドレスのことを、論理アドレスともいう。
ここで、図10を参照して、アドレス管理テーブル400について説明する。
図10は、アドレス管理テーブルのデータ例を示す図である。なお、図10においては、論理アドレスが、LBAを用いているので、論理アドレスが連続した領域は、物理的にも連続している。
アドレス管理テーブル400は、図10に示すように、セグメントIDと論理アドレスとを関連付けて格納したテーブルである。すなわち、アドレス管理テーブル400は、セグメントIDに対応するセグメントが、低速記憶媒体70のどのブロックに記憶されているかを示すテーブルである。なお、図10に示すアドレス管理テーブル400は、例えば、seg0、seg3、seg26のセグメントIDに対応するセグメントが、順番に論理アドレス♯28〜♯30に対応するブロックに記憶されていることを示している。また、アドレス管理テーブル400に、指定されていない論理アドレスに対応するブロックは、セグメントが記憶されていない空領域である。そして、アドレス管理テーブル400は、低速記憶媒体70にセグメントが書き込みや読み出しされるごとに、命令実行部61により更新されても良い。これにより、アドレス管理テーブル400は、低速記憶媒体70へのセグメントの記憶状態をリアルタイムに反映することができる。
図7を参照して説明する。
次に、命令実行部61は、判定部63に、アクセス命令201で指定されたセグメントIDに対応するセグメントを読み出すとき、いくつのセグメントをまとめて読み出すかの判定を要求する(S305)。命令実行部61は、アクセス命令201で指定されたセグメントIDに対応するセグメントを読み出す処理(以下、読み出し処理ともいう。)を実行するごとに、いくつのセグメントをまとめて読み出すかの判定を要求しても良い。以下の説明では、まとめて読み出すセグメント数のことを、アクセスするセグメント数ともいう。
判定部63は、セグメント数の判定要求が通知されると、アクセスするセグメント数を判定する(S306)。
ここで、図11、図12を参照して、判定部63によるアクセスするセグメント数を判定する処理について説明する。
図11、図12は、セグメント数を判定する処理を示すフローチャートである。
判定部63は、命令実行部61からセグメント数の判定要求が通知されたか否かを判定する。判定部63は、セグメント数の判定要求が通知されるまで待機する(S501にてNo)。
判定部63は、セグメント数の判定要求が通知されると(S501にてYes)、設定値を取得する(S502)。設定値とは、例えば、前回のセグメント数の判定処理において、決定したセグメント数であって、判定部63に保持される値でも良い。また、設定値の初期値は、特に限定しないが1でも良い。なお、設定値は、例えば、サーバ装置30が有する低速記憶媒体70の一部の記憶領域に記憶され、ストレージミドルウェア60の起動時に高速記憶媒体50の一部の記憶領域に読み出されることにより、アクセス処理で使用されても良い。
さらに、判定部63は、命令保持部62に保持されているアクセス命令200の数(キュー長)を取得する(S503)。保持されているアクセス命令200の数は、例えば、命令保持部62に入出力されるアクセス命令200の数をカウントするカウンタ回路でカウントしても良い。この場合、判定部63は、カウンタ回路のカウント値を読み取ることにより、アクセス命令200の数を取得しても良い。判定部63によるアクセス命令200の数の取得方法は、特に限定されない。判定部63は、例えば、命令処理部42と命令実行部61とがクレジット方式でアクセス命令200のやり取りを行なっているとき、命令実行部61が保持する受信クレジットの残数から命令保持部62に保持されているアクセス命令200の数を取得しても良い。
図12を参照して説明する。
判定部63は、命令保持部62に保持されているアクセス命令200の数が、保持閾値以上であるか否かを判定する(S504)。保持閾値は、判定部63に設定されたアクセス命令200の数である。
S504において、判定部63は、命令保持部62に保持されているアクセス命令200の数が保持閾値以上のとき(S504にてYes)、設定値を2倍にし、命令実行部61に通知するセグメント数として決定する(S505)。命令保持部62に保持されるアクセス命令200の数が多くなるということは、アクセス命令200の処理頻度(個/秒)よりも、アクセス命令200が通知される頻度(個/秒)が高くなっていることを示す。すなわち、命令保持部62に保持されるアクセス命令200の数が多くなるということは、アクセス命令200が命令保持部62に蓄積されていくことを示している。よって、判定部63は、アクセス命令200の数が保持閾値以上となったとき、一度のアクセス命令200の処理で読み出すセグメントの数を多くする。これにより、命令実行部61は、アクセス命令200が通知される頻度に応じて、一度のアクセス命令200の処理で複数のセグメントを一緒に読み出し、読み出し処理の回数を抑制する。したがって、サーバ装置30では、読み出し処理による低速記憶媒体70へのアクセス回数が少なくなるので、アクセス処理のスループットが向上する。なお、命令実行部61に通知するセグメント数は、増加すればよく、増加率を2倍に限定するものではない。
そして、判定部63は、S505で決定したセグメント数を命令実行部61に通知する(S506)。
また、判定部63は、決定したセグメント数を新たな設定値として保持する(S507)。そして、判定部63は、セグメント数の判定処理を終了する。判定部63は、決定したセグメント数を、新たな設定値とすることにより、次のセグメント数の判定処理をするとき、前回のセグメント数を設定値としてセグメント数を増減させる。したがって、判定部63は、命令保持部62に保持されているアクセス命令200の数が増え続けないように、セグメント数を調整することができる。すなわち、判定部63は、アクセス命令200の処理頻度がアクセス命令200が通知される頻度を下回らないように、一度の読み出し処理で読み出すセグメント数を調整している。
S504において、判定部63は、命令保持部62に保持されているアクセス命令200の数が保持閾値未満のとき(S504にてNo)、設定値が1であるか否かを判定する(S508)。
判定部63は、設定値が1のとき、セグメント数を1とする(S509)。そして、判定部63は、S506、S507の処理を実行して、セグメント数の判定処理を終了する。
S508において、判定部63は、設定値が1でないとき(S508にてNo)、セグメント数を設定値の1/2倍にする(S510)。そして、判定部63は、S506、S507の処理を実行して、セグメント数の判定処理を終了する。なお、命令実行部61に通知するセグメント数は、減少すればよく、減少率を1/2倍に限定するものではない。
以上のように、判定部63は、命令保持部62が保持するアクセス命令200の数が保持閾値以上になると、一度に読み出すセグメントの数をK(K>1)倍する。さらに、判定部63は、命令保持部62が保持しているアクセス命令200の数が保持閾値未満になると、一度に読み出すセグメントの数をL(L<1)倍する。また、判定部63は、一度に読み出すセグメント数を求めるとき、前回一度に読み出したn(nは自然数)個のセグメント数を基(設定値)に算出する。これにより、判定部63は、アクセス命令200の処理頻度がアクセス命令200が通知される頻度を下回らないように、セグメント数を調整することができる。
図7を参照して説明する。
判定部63は、S306で決定されたセグメント数を、命令実行部61に通知する(S307)。
図8を参照して説明する。
命令実行部61は、S307において、判定部63から一度に読み出すセグメント数が通知されると、低速記憶媒体70を参照し、S304で取得した論理アドレスに対応するブロックを検索する。そして、命令実行部61は、論理アドレスに対応するブロックを含む、物理的に連続するブロックから、S307で通知されたセグメント数のセグメントを読み出す(S401)。なお、命令実行部61は、例えば、S306で決定されたセグメント数が1のとき、S304で取得した論理アドレスに対応するブロックからセグメントを読み出す。
ここで、図13を参照して、命令保持部62によるセグメントの読み出し処理を説明する。
図13は、セグメントの読み出し処理を示すフローチャートである。
命令実行部61は、論理アドレスと一度に読み出すセグメント数とを取得したか否かを判定する(S601)。命令実行部61は、論理アドレスと一度に読み出すセグメント数とが通知されるまで待機する(S601にてNo)。なお、論理アドレスとは、例えば、図7のS304で取得した論理アドレスである。また、一度に読み出すセグメント数とは、図7のS306で決定したセグメント数である。以下の説明において、一度に読み出すセグメント数は、n個であるものとして説明する。
命令実行部61は、論理アドレスと一度に読み出すセグメント数とが通知されると(S601にてYes)、低速記憶媒体70を参照し、論理アドレスに対応するブロックを検索する。そして、命令実行部61は、検索されたブロックを含む、物理的に連続するn個のブロックを抽出する(S602)。ここで、物理的に連続するn個のブロックとは、論理アドレスがLBAを用いて付与されている場合、論理アドレスが連続するブロックのこととなる。物理的に連続するn個のブロックとは、例えば、論理アドレス#40とセグメント数=4が命令実行部61に通知されとき、通知された論理アドレス#40を基準として、後続の論理アドレスを選択し、#40〜#43としても良い。また、物理的に連続するn個のブロックとは、例えば、論理アドレス#40とセグメント数=4が命令実行部61に通知されとき、通知された論理アドレス#40を含む、#38〜#41としても良い。すなわち、物理的に連続するn個のブロックは、命令実行部61に通知された論理アドレスに対応するブロックを含み、低速記憶媒体70上で物理的に連続したブロックであれば、適宜選択した方法で抽出しても良い。
そして、命令実行部61は、抽出したn個のブロックの中に空領域があるか否かを判定する(S603)。
命令実行部61は、抽出したn個のブロックの中に空領域があると判定したとき(S603にてYes)、論理アドレスに対応するブロックを含む、空領域までの連続する1以上のセグメントを読み出す(S604)。
命令実行部61は、読み出した1以上のセグメントを命令処理部42に通知する(S605)。そして、命令実行部61は、セグメントの読み出し処理を終了する。
S603において、命令実行部61は、抽出したn個のブロックの中に空領域がないと判定したとき(S603にてNo)、論理アドレスに対応するブロックを含む連続するn個のブロックからセグメントを読み出す(S606)。そして、命令実行部61は、S605の処理を実行し、セグメントの読み出し処理を終了する。
ここで、図14〜図16を参照して、セグメントの読み出し処理についてさらに説明する。
図14〜図16は、低速記憶媒体のセグメントの記憶状態の一例を示す図である。
以下の説明では、一例として、命令実行部61が通知された論理アドレスを基準として、通知されたセグメント数に対応する後続の論理アドレスを選択し、対応するブロックからそれぞれセグメントを読み出す処理について説明する。
図14〜図16の矩形は、それぞれ、低速記憶媒体70のブロックを示す。また、番号が振られているブロックは、セグメントが記憶されていることを示す。番号が振られていないブロックは、セグメントが記憶されていないことを示す。番号は、それぞれのブロックの論理アドレスを示す。
図14に示す低速記憶媒体70には、♯22〜♯34、♯36〜♯44、♯46、♯47、♯50〜♯65のブロックにセグメントが記憶されている。
命令実行部61は、論理アドレス=♯40と、セグメント数=4とが通知されると、図15の低速記憶媒体70に示すように、論理アドレス=#40を基準として、♯40〜♯43の物理的に連続するブロックからセグメントを読み出す。すなわち、命令実行部61に論理アドレス=♯40と、セグメント数=4とが通知されると、低速記憶媒体70の記憶状態が、図14に示す状態から図15に示す状態に変化する。このとき、命令実行部61は、アドレス管理テーブル400を参照することにより、物理的に連続するブロックからセグメントを読み出しても良い。
また、命令実行部61は、論理アドレス=♯42と、セグメント数=4とが通知されたとき、図16の低速記憶媒体70に示すように、論理アドレス=#42を基準として、♯42〜♯44の物理的に連続するブロックからセグメントを読み出す。すなわち、命令実行部61に論理アドレス=♯42と、セグメント数=4とが通知されると、低速記憶媒体70の記憶状態が、図14に示す状態から図16に示す状態に変化する。命令実行部61は、一度に読み出すセグメント数として4つが指定されたが、低速記憶媒体70の♯45に対応するブロックが空領域であるため、4つ目のセグメントが格納されている♯46からセグメントを読み出さない。これにより、命令実行部61は、例えば、低速記憶媒体70がディスクであるとき、読み出し処理において、シーク処理の回数を少なくする。このとき、命令実行部61は、アドレス管理テーブル400を参照することにより、空領域の有無を確認し、物理的に連続するブロックからセグメントを読み出しても良い。
なお、命令実行部61は、論理アドレス=♯42と、セグメント数=4とが通知されたとき、図15の低速記憶媒体70に示すように、論理アドレス=#42を含む、♯40〜♯43の物理的に連続するブロックからセグメントを読み出しても良い。すなわち、命令実行部61は、論理アドレス=♯42と、セグメント数=4とが通知されると、低速記憶媒体70の記憶状態を、図14に示す状態から図15に示す状態に変化させても良い。このように、命令実行部61は、通知された論理アドレスのブロックを基準として、通知されたセグメント数に対応する後続のブロックを選択する。そして、命令実行部61は、選択したブロックに空領域があるとき、選択するブロックを変更し、基準のブロックを含む物理的に連続するブロックからセグメントを読み出しても良い。このとき、命令実行部61は、アドレス管理テーブル400を参照することにより、空領域の有無を確認し、物理的に連続するブロックからセグメントを読み出しても良い。
以上のように、命令実行部61は、適宜選択した手法により、通知された論理アドレスに対応するブロックを含む、物理的に連続するセグメントが記憶されたブロックから、1以上のセグメントを読み出せば良い。
また、命令実行部61は、アクセス命令200で要求されたストレージ上のセグメントを読み出すとき、例えば、popitems_bulk(k、N)という入出力命令を、低速記憶媒体70の図示しない入出力コントローラ(以下、ディスクコントローラという。)に通知する。popitems_bulk(k、N)のkは、例えば、S304で命令実行部61が取得した読み出しするブロックの論理アドレスである。popitems_bulk(k、N)のNは、例えば、判定部63で決定された一度に読み出しするセグメント数である。また、popitems_bulk(k、N)は、セグメントを読み出したブロックから、読み出したセグメントを削除する処理の要求も含む。
一例として、命令実行部61は、論理アドレス=♯40と一度に読み出すセグメント数=4とを取得したとき、popitems_bulk(♯40、4)という入出力命令をディスクコントローラに通知する。そして、ディスクコントローラは、論理アドレス=#40に対応するブロックを含む、物理的に連続するセグメントが記憶されたブロックから、4つのブロックのセグメントを読み出し、読み出したセグメントを命令実行部61に送信する。その後、ディスクコントローラは、セグメントを読み出した4つのブロックから、記憶されたセグメントを削除する。
また、命令実行部61は、一度に読み出しをするセグメント数が、1のとき、popitem(k)という入出力命令を用いても良い。このとき、popitem(k)のkは、読み出しするブロックの論理アドレスである。
一例として、命令実行部61は、論理アドレス=♯40と一度に読み出すセグメント数=1を取得したとき、popitem(♯40)という入出力命令をディスクコントローラに通知する。そして、ディスクコントローラは、論理アドレス=#40に対応するブロックに記憶されたセグメントを読み出し、読み出したセグメントを命令実行部61に送信する。
図8を参照して説明する。
命令実行部61は、S401で読み出した1以上のセグメントを、命令処理部42に通知する(S402)。
そして、命令実行部61は、S401で読み出した1以上のセグメントを低速記憶媒体70から削除する(S403)。
命令処理部42は、1以上のセグメントが通知されると、通知された1以上のセグメントを高速記憶媒体50に書き込み、通知された1以上のセグメントを高速記憶媒体50に記憶させる(S404)。
ここで、図17を参照して、命令処理部42が高速記憶媒体50に1以上のセグメントの書き込みをする処理について説明する。
図17は、高速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。
命令処理部42は、図8のS401で命令実行部61が読み出した1以上のセグメントを受信したか否かを判定する(S701)。すなわち、命令処理部42は、命令実行部61から書き込むセグメントが通知されたか否かを判定する。
命令処理部42は、書き込む1以上のセグメントを受信するまで待機する(S701にてNo)。
命令処理部42は、書き込む1以上のセグメントを受信すると(S701にてYes)、受信した1以上のセグメントの合計サイズが図6のS201で確保したキャッシング領域のサイズよりも大きいか否かを判定する(S702)。
命令処理部42は、S701で受信した1以上のセグメントの合計サイズが図6のS201で確保したキャッシング領域のサイズよりも大きいとき(S702にてYes)、高速記憶媒体50に記憶されているセグメントを低速記憶媒体70に書き戻す処理をする。
命令処理部42は、低速記憶媒体70に書き込むセグメントを選択する(S703)。このとき、命令処理部42は、選択したセグメントの合計サイズと、キャッシング領域のサイズとの合計が、S701で受信した高速記憶媒体50に書き込むセグメントの合計サイズ以上になるように、1以上のセグメントを選択する。
S703において、命令処理部42は、低速記憶媒体70に記憶されているセグメントの中で、最も不要なセグメントを選択しても良い。最も不要なセグメントとは、例えば、LRU(Least Recently Used)を用いて、分析処理で最近最も使用されなかったセグメントを選択しても良い。なお、最も不要なセグメントとは、LRUに限定されるものではなく、LFU(Least Frequently Used)などの他のアルゴリズムを用いて選択しても良い。LFUとは、各セグメントの使用頻度を示す。LFUを用いる場合には、最も使用頻度の低いセグメントを最も不要なセグメントとしても良い。また、命令処理部42は、高速記憶媒体50に記憶されている複数のセグメントを、低速記憶媒体70に書き込むとき、命令処理部42は、最も不要なセグメントから順に、低速記憶媒体70に書き込む複数のセグメントを選択しても良い。
S703で低速記憶媒体70に書き込む1以上のセグメントを選択すると、命令処理部42は、例えば、低速記憶媒体70にセグメントを書き込むアクセス命令と、選択した1以上のセグメントとを、命令実行部に通知する(S704)。セグメントを書き込むアクセス命令は、書き込み命令ともいう。
そして、命令処理部42は、S704において、低速記憶媒体70に書き込んだ1以上のセグメントを高速記憶媒体50の記憶領域から削除する(S705)。すなわち、命令処理部42は、高速記憶媒体50に書き込む1以上のセグメントの合計サイズが、確保したキャッシング領域よりも大きいとき、低速記憶媒体70に1以上のセグメントを書き戻す。これにより、命令処理部42は、高速記憶媒体50に書き込む1以上のセグメントの合計サイズ以上のサイズのキャッシング領域を確保する。
そして、命令処理部42は、S705で大きくした高速記憶媒体50のキャッシング領域に、S701で受信した1以上のセグメントを書き込む処理をする(S706)。そして、命令処理部42は、高速記憶媒体50に1以上のセグメントの書き込みをする処理を終了する。
S702において、S701で受信した1以上のセグメントの合計サイズが図6のS201で確保したキャッシング領域のサイズ以下のとき(S702にてNo)、命令処理部42は、S706の処理をする。そして、命令処理部42は、高速記憶媒体50に1以上のセグメントの書き込みをする処理を終了する。
以上により、命令処理部42は、命令実行部61から通知された1以上のセグメントを高速記憶媒体50に書き込む処理をする。
ここで、図18を参照して、図17のS704で命令処理部42から命令実行部61に通知された書き込み命令を受信したとき、命令実行部61が実行する低速記憶媒体70へのセグメントの書き込み処理の内容を説明する。
図18は、低速記憶媒体へのセグメントの書き込み処理を示すフローチャートである。
命令実行部61は、図17のS704の処理が実行され、命令処理部42から1以上のセグメントと、書き込み命令とを受信したか否かを判定する(S801)。
命令実行部61は、1以上のセグメントと、書き込み命令とを受信するまで待機する(S801にてNo)。
命令実行部61は、1以上のセグメントと、書き込み命令とを受信すると、低速記憶媒体70のセグメントが記憶されているブロックの論理アドレスの中で、物理的に一番後ろの論理アドレスを抽出する(S802)。命令実行部61は、例えば、図10に示すアドレス管理テーブル400を参照し、セグメントIDに関連付けられている中で、一番後ろの論理アドレスを検索し、検索した論理アドレスを物理的に一番後ろの論理アドレスとして抽出しても良い。
そして、命令実行部61は、S802で抽出した論理アドレスに対応するブロックの後ろに、物理的に連続するブロックに書き込む1以上のセグメントを書き込む(S803)。
以上のように、命令実行部61は、低速記憶媒体70に1以上のセグメントを書き込むとき、アドレス管理テーブル400を参照して、物理的に一番後ろに位置するブロックから物理的に連続するブロックに1以上のセグメントを書き込む。
ここで、図19を参照して、低速記憶媒体70へのセグメントの書き込み処理についてさらに説明する。図19は、低速記憶媒体のセグメントの記憶状態の一例を示す図である。以下の説明では、書き込み処理をする前の低速記憶媒体70の書き込み領域には、図14に示すように、♯22〜♯34、♯36〜♯44、♯46、♯47、♯50〜♯65にセグメントが記憶されているものとして説明する。図19は、命令処理部42から通知された3つのセグメントを書き込んだ後の低速記憶媒体70のブロックに記憶されているセグメントを示す図である。
命令実行部61は、命令処理部42から3つのセグメントと、書き込み命令が通知されると、セグメントが記憶されているブロックの中で、一番後ろの論理アドレスに対応するブロックを抽出する。すなわち、命令実行部61は、1以上のセグメントが書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域を抽出する。このとき、命令実行部61は、アドレス管理テーブル400を参照し、物理的に一番後ろに位置するブロックを抽出しても良い。命令実行部61は、例えば、3つのセグメントと、書き込み命令が通知されたとき、図14の低速記憶媒体70の記憶状態であれば、物理的に一番後ろに位置する論理アドレス=#65のブロックを抽出する。
そして、命令実行部61は、一番後ろの論理アドレスに対応するブロックと物理的に連続するブロックに、命令処理部42から通知された1以上のセグメントを書き込む。命令実行部61は、例えば、3つのセグメントと、書き込み命令が通知されたとき、図19の低速記憶媒体70に示すように、♯66〜♯68にセグメントを書き込む。すなわち、命令実行部61は、3つのセグメントと書き込み命令とが通知されると、低速記憶媒体70の記憶状態を、図14に示す状態から図19に示す状態に変化させる。
なお、命令実行部61は、低速記憶媒体70にセグメントが書き込まれていないとき、例えば、予め設定された論理アドレスに対応するブロックと、物理的に連続するブロックにそれぞれ通知された1以上のセグメントを書き込んでも良い。
図20は、低速記憶媒体のセグメントの記憶状態の一例を示す図である。
命令実行部61は、図20に示すように、低速記憶媒体70の最後の論理アドレス=#95に対応するブロックにセグメントが記憶されているとき、最初の論理アドレス=♯0が最後の論理アドレス=♯95の後の論理アドレスであると判定しても良い。そして、命令実行部61は、低速記憶媒体70が図20に示す状態であるとき、セグメントが記憶されているブロックの中で一番後ろの論理アドレスに対応するブロックとして、#13を抽出する。そして、命令実行部61は、♯13と物理的に連続するブロックに、命令処理部42から通知された1以上のセグメントを書き込む。
命令処理部42は、1以上のセグメントを低速記憶媒体70に書き込むとき、例えば、pushitems_bulk([k1,v1], [k2,v2],・・・,[kN,vN])という入出力命令を用いる。pushitems_bulk([k1,v1], [k2,v2],・・・,[kN,vN])のk1〜kNは、セグメントIDである。pushitems_bulk([k1,v1], [k2,v2],・・・,[kN,vN])のv1〜vNは、セグメントである。
命令処理部42は、例えば、1以上のセグメントを低速記憶媒体70に書き込むとき、1以上の書き込むセグメントのIDであるk1〜kNに対応する論理アドレスを、アドレス管理テーブル400から取得する。また、命令処理部42は、例えば、セグメントIDk1〜kNに対応するv1〜vNのセグメントを高速記憶媒体50から読み出す。そして、命令処理部42は、例えば、pushitems_bulk([k1,v1], [k2,v2],・・・,[kN,vN])を命令実行部61に通知する。
また、命令実行部61は、例えば、pushitems_bulk([k1,v1], [k2,v2],・・・,[kN,vN])が通知されると、アドレス管理テーブル400を参照し、物理的に一番後ろに位置するブロックを抽出する。そして、命令実行部61は、例えば、pushitems_bulk([k1,v1], [k2,v2],・・・,[kN,vN])と、物理的に一番後ろに位置するブロックの論理アドレスとをディスクコントローラに通知する。これにより、命令実行部61は、ディスクコントローラに、低速記憶媒体70上の物理的に一番後ろに位置するブロックから物理的に連続するセグメントが記憶されていない空領域に、1以上のセグメントをそれぞれ書込みさせる。
図8を参照して説明する。
命令処理部42は、S402で通知された1以上のセグメントを、S404で高速記憶媒体50に記憶させると、高速記憶媒体50に記憶されたセグメントを用いてアクセス命令201の処理をする(S405)。
そして、命令処理部42は、アクセス命令201の処理により得られた分析結果を、イベント処理部41とネットワーク20とを介してクライアント10に通知する(S406)。なお、命令処理部42は、例えば、複数のアクセス命令200(アクセス命令201〜203など)の処理の終了によって分析結果が得られる場合、アクセス命令201の処理結果を高速記憶媒体50に一次記憶しても良い。そして、命令処理部42は、関連する複数のアクセス命令200の処理が全て終了したとき、分析結果をクライアント10に通知しても良い。
図21は、コンピュータ装置の一実施例を示すブロック図である。
クライアント10と、サーバ装置30とは、例えば、図21に示すコンピュータ装置である。
図21を参照して、クライアント10と、サーバ装置30との構成について説明する。
図21において、コンピュータ装置は、制御回路501と、記憶装置502と、読書装置503と、記録媒体504と、通信インターフェイス505(通信I/F)と、入出力インターフェイス506(入出力I/F)と、ネットワーク507とを備えている。また、各構成要素は、バス508により接続されている。
制御回路501は、コンピュータ装置全体の制御をする。そして、制御回路501は、例えば、CPU、マルチコアCPU、FPGA(Field Programmable Gate Array)およびPLD(Programmable Logic Device)などである。
コンピュータ装置500がサーバ装置30であるとき、制御回路501は、例えば、図4において、イベント処理部41と、命令処理部42と、セグメント管理部43として機能する。さらに、コンピュータ装置500がサーバ装置30であるとき、制御回路501は、例えば、図4において、命令実行部61と、命令保持部62と、判定部63として機能する。なお、セグメント管理テーブル300と、アドレス管理テーブル400とは、例えば、CPU、FPGA、およびPLDのキャッシュに記憶されても良い。
記憶装置502は、各種データを記憶する。そして、記憶装置502は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)などのメモリや、HD(Hard Disk)などで構成される。
コンピュータ装置500がサーバ装置30であるとき、記憶装置502は、例えば、図4において、高速記憶媒体50(メモリなど)や低速記憶媒体70(HDなど)として機能する。
また、ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、制御回路501のワークエリアとして使用される。HDは、OS、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
コンピュータ装置500がサーバ装置30であるとき、記憶装置502は、例えば、制御回路501を、イベント処理部41と、命令処理部42と、セグメント管理部43として機能させるスケジューラ40を記憶する。また、コンピュータ装置500がサーバ装置30であるとき、記憶装置502は、例えば、制御回路501を、命令実行部61と、命令保持部62と、判定部63として機能させるストレージミドルウェア60を記憶する。なお、セグメント管理テーブル300は、スケジューラ40に含まれていても良いし、記憶装置502にスケジューラ40と関連付けされて記憶されても良い。セグメント管理テーブル300は、記憶装置502にスケジューラ40と関連付けされて記憶される場合、スケジューラ40の起動時にRAMなどに読み出されることにより、アクセス処理で使用されても良い。また、アドレス管理テーブル400は、ストレージミドルウェア60に含まれていても良いし、記憶装置502にストレージミドルウェア60と関連付けされて記憶されても良い。アドレス管理テーブル400は、記憶装置502にストレージミドルウェア60と関連付けされて記憶される場合、ストレージミドルウェア60の起動時にRAMなどに読み出されることにより、アクセス処理で使用されても良い。
そして、アクセス制御をするとき、サーバ装置30は、記憶装置502に記憶されたスケジューラ40と、ストレージミドルウェア60とをRAMに読み出す。これにより、RAMに読み出されたスケジューラ40とストレージミドルウェア60とを制御回路501で実行することにより、サーバ装置30は、アクセス制御処理を実行する。
なお、スケジューラ40とストレージミドルウェア60は、制御回路501が通信インターフェイス505を介してアクセス可能であれば、ネットワーク507上のサーバが有する記憶装置に記憶されていても良い。
読書装置503は、制御回路501に制御され、着脱可能な記録媒体504のデータのリード/ライトを行なう。そして、読書装置503は、例えば、FDD(Floppy Disk Drive)、CDD(Compact Disc Drive)、DVDD(Digital Versatile Disk Drive)、BDD(Blu−ray Disk Drive:登録商標)およびUSB(Universal Serial Bus)などである。また、読書装置503は、記録媒体504に記録されたスケジューラ40やストレージミドルウェア60を読み出し、記憶装置502に記憶しても良い。
記録媒体504は、各種データを保存する。
コンピュータ装置500がサーバ装置30であるとき、記録媒体504は、例えば、スケジューラ40とストレージミドルウェア60とを記憶する。さらに、記録媒体504は、セグメント管理テーブル300とアドレス管理テーブル400とを記憶しても良い。
そして、記録媒体504は、読書装置503を介してバス508に接続され、制御回路501が読書装置503を制御することにより、データのリード/ライトが行なわれる。また、記録媒体504は、例えば、FD(Floppy Disk)、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu−ray Disk:登録商標)、およびフラッシュメモリなどである。
通信インターフェイス505は、ネットワーク507を介してコンピュータ装置と他の装置とを通信可能に接続する。
コンピュータ装置500がサーバ装置30であるとき、通信インターフェイス505は、クライアント10との情報の送受信に用いられる。
入出力インターフェイス506は、例えば、キーボード、マウス、およびタッチパネルなどと接続され、接続された装置から各種情報を示す信号が入力されると、バス508を介して入力された信号を制御回路501に出力する。また、入出力インターフェイス506は、制御回路501から出力された各種情報を示す信号がバス508を介して入力されると、接続された各種装置にその信号を出力する。
ネットワーク507は、例えば、LAN、無線通信、またはインターネットなどであり、コンピュータ装置と他の装置を通信接続する。ネットワーク507は、例えば、図2のネットワーク20である。
以上のように、実施形態のストレージミドルウェア60は、低速記憶媒体70からセグメントを読み出すとき、読み出し命令で指定されたセグメントを含む1以上のセグメントを一度に読み出す処理をサーバ装置30に実行させる。これにより、ストレージミドルウェア60は、低速記憶媒体70からのセグメントの読み出し回数を少なくし、アクセス処理のスループットを向上させることができる。
また、実施形態のストレージミドルウェア60は、1以上のセグメントを一度に読み出すとき、低速記憶媒体70上の物理的に連続しているブロックからセグメントを読み出す処理をサーバ装置30に実行させる。これにより、ストレージミドルウェア60は、低速記憶媒体70からのデータ読み出し時のシーク処理の回数を少なくし、アクセス処理のスループットを向上させることができる。
また、実施形態のストレージミドルウェア60は、低速記憶媒体70にセグメントを書き込むとき、アドレス管理テーブル400を参照する処理をサーバ装置30に実行させる。そして、実施形態のストレージミドルウェア60は、物理的に一番後ろに位置するブロックから物理的に連続するブロックに1以上のセグメントを書き込む処理をサーバ装置30に実行させる。これにより、ストレージミドルウェア60は、低速記憶媒体70へのセグメントの書き込み時に、書き込む1以上のセグメントが追加するセグメントであるか、更新するセグメントであるかの判定をなくす。よって、ストレージミドルウェア60は、アクセス処理のスループットを向上させることができる。
また、ストレージミドルウェア60は、上記のように、物理的に連続するブロックに1以上のセグメントを連続して書き込むので、低速記憶媒体70へのセグメント書き込み時のランダムアクセスをなくす。よって、ストレージミドルウェア60は、アクセス処理におけるシーク処理の回数を少なくし、アクセス処理のスループットを向上させることができる。
また、実施形態のストレージミドルウェア60は、低速記憶媒体70からセグメントを読み出すとき、読み出したセグメントを削除する処理をサーバ装置30に実行させる。これにより、ストレージミドルウェア60は、書き込む処理のとき、書き込むセグメントを全て追加するセグメントにする。よって、サーバ装置30は、書き込む処理のとき、書き込むセグメントが追加するセグメントであるか、更新するセグメントであるかの判定をしない。したがって、ストレージミドルウェア60は、セグメントの存在を管理する管理情報を不要にする。すなわち、ストレージミドルウェア60は、アクセス処理に大量データの管理情報を用いないので、メモリの消費を抑制することができる。
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 ディスク装置
2 命令保持部
3 頻度判定部
4 命令実行部
5 ディスク
10 クライアント
20 ネットワーク
30 サーバ装置
40 スケジューラ
41 イベント処理部
42 命令処理部
43 セグメント管理部
50 高速記憶媒体
60 ストレージミドルウェア
61 命令実行部
62 命令保持部
63 判定部
70 低速記憶媒体
80 ストリームデータ処理システム
200 アクセス命令
300 セグメント管理テーブル
400 アドレス管理テーブル
500 コンピュータ装置
501 制御回路
502 記憶装置
503 読書装置
504 記録媒体
505 通信インターフェイス
506 入出力インターフェイス
507 ネットワーク
508 バス

Claims (4)

  1. 第1のデータへのアクセスを指示する第1のアクセス命令に応じて、記憶装置の第1の記憶領域から前記第1のデータを読み出し、前記第1の記憶領域と物理的に隣接し、かつ空領域ではない第2の記憶領域から第2のデータを読み出し、前記記憶装置から前記第1のデータおよび前記第2のデータを削除し、
    前記記憶装置に第3のデータを書き込むことを指示する第2のアクセス命令に応じて、前記記憶装置内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第3の記憶領域に、前記第3のデータを書き込み、
    前記第1のアクセス命令がn個の記憶領域ブロックからデータを読み出すことを指定するときには、前記第1のデータおよび前記第2のデータを読み出す処理において、
    前記第1の記憶領域の後続側に物理的に隣接するn−1個の物理的に連続する記憶領域ブロックが空領域を含まないときには、前記第1の記憶領域から前記第1のデータを読み出すとともに、前記n−1個の物理的に連続する記憶領域ブロックから前記第2のデータを読み出し、
    前記第1の記憶領域の後続側に物理的に隣接するn−1個の物理的に連続する記憶領域ブロックが空領域を含むときには、前記第1の記憶領域および前記第1の記憶領域の前方側に物理的に隣接する少なくとも1個の記憶領域ブロックを含む、物理的に連続する空領域でないn個の記憶領域ブロックから前記第1のデータおよび前記第2のデータを読み出す
    処理をコンピュータに実行させることを特徴とするアクセス制御プログラム。
  2. 受信した複数のアクセス命令を保持し、
    前記保持しているアクセス命令の数が多くなると、前記データ群を読み出す処理において、読み出すデータ群の数を多くし、
    前記保持しているアクセス命令の数が少なくなると、前記データ群を読み出す処理において、読み出すデータ群の数を少なくする、
    処理をコンピュータに実行させることを特徴とする請求項に記載のアクセス制御プログラム。
  3. 情報を記憶するディスクと、
    与えられた命令を実行する命令実行部と、を備え、
    前記命令実行部は、
    第1のデータへのアクセスを指示する第1のアクセス命令に応じて、前記ディスクの第1の記憶領域から前記第1のデータを読み出し、前記第1の記憶領域と物理的に隣接し、かつ空領域ではない第2の記憶領域から第2のデータを読み出し、前記ディスクから前記第1のデータおよび前記第2のデータを削除し、
    前記ディスクに第3のデータを書き込むことを指示する第2のアクセス命令に応じて、前記ディスク内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第3の記憶領域に、前記第3のデータを書き込み、
    前記第1のアクセス命令がn個の記憶領域ブロックからデータを読み出すことを指定するときには、前記命令実行部は、前記第1のデータおよび前記第2のデータを読み出す処理において、
    前記第1の記憶領域の後続側に物理的に隣接するn−1個の物理的に連続する記憶領域ブロックが空領域を含まないときには、前記第1の記憶領域から前記第1のデータを読み出すとともに、前記n−1個の物理的に連続する記憶領域ブロックから前記第2のデータを読み出し、
    前記第1の記憶領域の後続側に物理的に隣接するn−1個の物理的に連続する記憶領域ブロックが空領域を含むときには、前記第1の記憶領域および前記第1の記憶領域の前方側に物理的に隣接する少なくとも1個の記憶領域ブロックを含む、物理的に連続する空領域でないn個の記憶領域ブロックから前記第1のデータおよび前記第2のデータを読み出す
    ことを特徴とするディスク装置。
  4. コンピュータにより実行される情報処理方法であって、
    前記コンピュータは、
    第1のデータへのアクセスを指示する第1のアクセス命令に応じて、記憶装置の第1の記憶領域から前記第1のデータを読み出し、前記第1の記憶領域と物理的に隣接し、かつ空領域ではない第2の記憶領域から第2のデータを読み出し、前記記憶装置から前記第1のデータおよび前記第2のデータを削除し、
    前記記憶装置に第3のデータを書き込むことを指示する第2のアクセス命令に応じて、前記記憶装置内でデータが書込まれている記憶領域のうちで物理的に一番後ろに位置する記憶領域と隣接する第3の記憶領域に、前記第3のデータを書き込み、
    前記第1のアクセス命令がn個の記憶領域ブロックからデータを読み出すことを指定するときには、前記コンピュータは、前記第1のデータおよび前記第2のデータを読み出す処理において、
    前記第1の記憶領域の後続側に物理的に隣接するn−1個の物理的に連続する記憶領域ブロックが空領域を含まないときには、前記第1の記憶領域から前記第1のデータを読み出すとともに、前記n−1個の物理的に連続する記憶領域ブロックから前記第2のデータを読み出し、
    前記第1の記憶領域の後続側に物理的に隣接するn−1個の物理的に連続する記憶領域ブロックが空領域を含むときには、前記第1の記憶領域および前記第1の記憶領域の前方側に物理的に隣接する少なくとも1個の記憶領域ブロックを含む、物理的に連続する空領域でないn個の記憶領域ブロックから前記第1のデータおよび前記第2のデータを読み出す
    ことを実行するアクセス制御方法。
JP2015506525A 2013-03-22 2013-03-22 アクセス制御プログラム、ディスク装置及びアクセス制御方法 Expired - Fee Related JP6112193B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/058428 WO2014147840A1 (ja) 2013-03-22 2013-03-22 アクセス制御プログラム、ディスク装置及びアクセス制御方法

Publications (2)

Publication Number Publication Date
JPWO2014147840A1 JPWO2014147840A1 (ja) 2017-02-16
JP6112193B2 true JP6112193B2 (ja) 2017-04-12

Family

ID=51579565

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015506525A Expired - Fee Related JP6112193B2 (ja) 2013-03-22 2013-03-22 アクセス制御プログラム、ディスク装置及びアクセス制御方法

Country Status (3)

Country Link
US (1) US20160004441A1 (ja)
JP (1) JP6112193B2 (ja)
WO (1) WO2014147840A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6212073B2 (ja) * 2015-06-29 2017-10-11 ファナック株式会社 プログラムの内容に応じて格納先を自動選択する機能を備えた数値制御装置
CN113467716B (zh) * 2021-06-11 2023-05-23 苏州浪潮智能科技有限公司 一种数据存储的方法、装置、设备及可读介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3396639B2 (ja) * 1998-09-30 2003-04-14 株式会社東芝 階層記憶装置及び階層記憶制御方法
JP3568110B2 (ja) * 1999-10-15 2004-09-22 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュメモリの制御方法、コンピュータシステム、ハードディスクドライブ装置およびハードディスク制御装置
US6684294B1 (en) * 2000-03-31 2004-01-27 Intel Corporation Using an access log for disk drive transactions
JP3910415B2 (ja) * 2001-11-20 2007-04-25 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記録方法、データ記録システムおよびプログラム
US20030163639A1 (en) * 2002-02-25 2003-08-28 Seagate Technology Llc Sequential command processing mode in a disc drive using command queuing
US6877070B2 (en) * 2002-07-23 2005-04-05 Hitachi Global Storage Technologies Netherlands, B.V. Method and apparatus for implementing command queue ordering with benefit determination of prefetch operations
US7631148B2 (en) * 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
JP4425087B2 (ja) * 2004-07-30 2010-03-03 三洋電機株式会社 ディスクデータ転送システム、ディスクデータ転送装置、およびディスクデータ転送方法
JP2007011523A (ja) * 2005-06-29 2007-01-18 Hitachi Ltd データの先読み方法及び計算機システム
JP5089901B2 (ja) * 2006-03-28 2012-12-05 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
JP2009157414A (ja) * 2007-12-25 2009-07-16 Hitachi Ltd 記憶装置、情報端末装置及びデータ先読み方法

Also Published As

Publication number Publication date
JPWO2014147840A1 (ja) 2017-02-16
US20160004441A1 (en) 2016-01-07
WO2014147840A1 (ja) 2014-09-25

Similar Documents

Publication Publication Date Title
EP3229142B1 (en) Read cache management method and device based on solid state drive
US10635323B2 (en) Managing storage system
US10235101B2 (en) Log structured block device for hard disk drive
TWI684099B (zh) 剖析快取替代
CN106547476B (zh) 用于数据存储系统的方法和装置
EP2869203B1 (en) Computer system, and arrangement of data control method
US20150058568A1 (en) HIERARCHICAL STORAGE FOR LSM-BASED NoSQL STORES
KR102437775B1 (ko) 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법
KR20200067962A (ko) Ssd에 데이터를 기록하는 방법 및 장치
CN110268391A (zh) 用于缓存数据的系统和方法
KR20140082639A (ko) 보조 캐시의 이주량을 위한 동적으로 조정된 스레시홀드
US11093410B2 (en) Cache management method, storage system and computer program product
CN104503703B (zh) 缓存的处理方法和装置
CN112286459A (zh) 一种数据处理方法、装置、设备及介质
JP2012243117A (ja) 記憶媒体制御装置、記憶装置、記憶媒体制御方法、プログラム
US9699254B2 (en) Computer system, cache management method, and computer
US10083117B2 (en) Filtering write request sequences
US20170024147A1 (en) Storage control device and hierarchized storage control method
JP6112193B2 (ja) アクセス制御プログラム、ディスク装置及びアクセス制御方法
CN109144431A (zh) 数据块的缓存方法、装置、设备及存储介质
US9858204B2 (en) Cache device, cache system, and cache method
KR100847021B1 (ko) 데이터 저장 장치, 데이터 저장 방법 및 그 방법이 기록된컴퓨터로 읽을 수 있는 기록매체
US11055622B2 (en) Data storage apparatus with selective adaptive predictive behavior
CN114327272A (zh) 一种数据处理方法、固态硬盘控制器及固态硬盘
KR20120010698A (ko) 다채널 캐쉬를 이용한 솔리드 스테이트 디스크 및 캐쉬 데이터 저장방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170227

R150 Certificate of patent or registration of utility model

Ref document number: 6112193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees