JP2015162002A - 記憶制御装置、記憶制御方法および記憶制御プログラム - Google Patents
記憶制御装置、記憶制御方法および記憶制御プログラム Download PDFInfo
- Publication number
- JP2015162002A JP2015162002A JP2014035574A JP2014035574A JP2015162002A JP 2015162002 A JP2015162002 A JP 2015162002A JP 2014035574 A JP2014035574 A JP 2014035574A JP 2014035574 A JP2014035574 A JP 2014035574A JP 2015162002 A JP2015162002 A JP 2015162002A
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage device
- address
- storage
- management information
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】記憶装置をエミュレートする際の物理記憶領域の容量を削減すること。
【解決手段】制御部1bは、記憶装置2aに対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された記憶装置2aのアドレスが管理情報3に登録されておらず、かつ、当該データと同一のデータが記憶装置2bに記憶されている場合には、記憶装置2bに対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された記憶装置2aのアドレスと、当該データと同一のデータの記憶装置2bにおける格納場所を示すアドレスとを対応付けて管理情報3に登録する。
【選択図】図1
【解決手段】制御部1bは、記憶装置2aに対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された記憶装置2aのアドレスが管理情報3に登録されておらず、かつ、当該データと同一のデータが記憶装置2bに記憶されている場合には、記憶装置2bに対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された記憶装置2aのアドレスと、当該データと同一のデータの記憶装置2bにおける格納場所を示すアドレスとを対応付けて管理情報3に登録する。
【選択図】図1
Description
本発明は記憶制御装置、記憶制御方法および記憶制御プログラムに関する。
HDD(Hard Disk Drive)などの記憶装置に対するアクセス処理をエミュレートする技術が知られている。例えば、複数のSCSI(Small Computer System Interface)記憶装置をエミュレートする技術が提案されている。この提案は、エミュレートされた記憶装置に対応するプロパティおよび物理記憶装置内のファイル記憶空間を用いて、エミュレートされた記憶装置上でのSCSIコマンドの履行をエミュレートするやり方で、SCSIコマンドを履行する。
また、重複データを無くすための技術が提案されている。この提案では、データセットを受信し、データセットの中からデータが重複している可能性があるポイント(アンカーポイント)を識別する。アンカーポイントを取り巻く領域と、データベース内のアンカーポイントを取り巻く領域とを比較し、前方デルタ値および後方デルタ値を識別する。アンカーポイント、前方デルタ値および後方デルタ値を用いて、受信したデータセット中の重複データをストレージインジケータで置き換える。
ところで、記憶装置のエミュレーションにおいては、エミュレーション対象の記憶装置に対して書き込みが要求されたデータの総量と同じ容量の物理記憶領域が必要であり、必要な物理記憶領域が大きいという問題がある。
1つの側面では、本発明は、記憶装置をエミュレートする際の物理記憶領域の容量を削減できる記憶制御装置、記憶制御方法および記憶制御プログラムを提供することを目的とする。
1つの態様では、第1の記憶装置に対するデータの書き込み処理を、第2の記憶装置に対してデータを書き込むことでエミュレートする記憶制御装置が提供される。この記憶制御装置は、記憶部と制御部とを有する。記憶部は、第1の記憶装置に対する書き込みが要求された際にデータの書き込み先として指定された第1の記憶装置のアドレスと、書き込みが要求されたデータの第2の記憶装置における格納場所を示すアドレスとが対応付けて登録された管理情報を記憶する。制御部は、第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された第1の記憶装置のアドレスが管理情報に登録されておらず、かつ、当該データと同一のデータが第2の記憶装置に記憶されている場合には、第2の記憶装置に対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された第1の記憶装置のアドレスと、当該データと同一のデータの第2の記憶装置における格納場所を示すアドレスとを対応付けて管理情報に登録する。
また、1つの態様では、第1の記憶装置に対するデータの書き込み処理を、第2の記憶装置に対してデータを書き込むことでエミュレートする記憶制御方法が提供される。この記憶制御方法は、コンピュータが、第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された第1の記憶装置のアドレスが、第1の記憶装置に対する書き込みが要求された際にデータの書き込み先として指定された第1の記憶装置のアドレスと、書き込みが要求されたデータの第2の記憶装置における格納場所を示すアドレスとが対応付けて登録された管理情報に登録されておらず、かつ、当該データと同一のデータが第2の記憶装置に記憶されている場合には、第2の記憶装置に対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された第1の記憶装置のアドレスと、当該データと同一のデータの第2の記憶装置における格納場所を示すアドレスとを対応付けて管理情報に登録する。
また、1つの態様では、第1の記憶装置に対するデータの書き込み処理を、第2の記憶装置に対してデータを書き込むことでエミュレートする記憶制御プログラムが提供される。この記憶制御プログラムは、コンピュータに、第1の記憶装置に対するデータの書き込みが要求されたとき、第1の記憶装置に対する書き込みが要求された際にデータの書き込み先として指定された第1の記憶装置のアドレスと、書き込みが要求されたデータの第2の記憶装置における格納場所を示すアドレスとが対応付けて登録された管理情報を参照し、書き込みが要求されたデータの書き込み先として指定された第1の記憶装置のアドレスが管理情報に登録されておらず、かつ、当該データと同一のデータが第2の記憶装置に記憶されている場合には、第2の記憶装置に対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された第1の記憶装置のアドレスと、当該データと同一のデータの第2の記憶装置における格納場所を示すアドレスとを対応付けて管理情報に登録する処理を実行させる。
1つの側面では、記憶装置をエミュレートする際の物理記憶領域の容量を削減できる。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の記憶制御装置を示す図である。記憶制御装置1は、記憶装置2aに対するアクセス処理を、記憶装置2bを用いてエミュレートする装置である。例えば、記憶制御装置1は、記憶装置2aに対するデータの書き込み処理を、記憶装置2bにデータを書き込むことでエミュレートする。
[第1の実施の形態]
図1は、第1の実施の形態の記憶制御装置を示す図である。記憶制御装置1は、記憶装置2aに対するアクセス処理を、記憶装置2bを用いてエミュレートする装置である。例えば、記憶制御装置1は、記憶装置2aに対するデータの書き込み処理を、記憶装置2bにデータを書き込むことでエミュレートする。
ここで、記憶装置2bは、記憶制御装置1に接続された、実記憶領域を伴う記憶装置である。なお、記憶装置2bは、例えば、記憶制御装置1に内蔵されていてもよい。一方、記憶装置2aは、仮想的な記憶装置である。また、記憶装置2aに対するデータの書き込み要求は、例えば、記憶制御装置1の外部に接続された図示しない外部装置から送信される。あるいは、記憶装置2aに対するデータの書き込み要求は、記憶制御装置1が所定のソフトウェアを実行することで出力されてもよい。
記憶制御装置1は、記憶部1aおよび制御部1bを有する。記憶部1aは、RAM(Random Access Memory)、SSD(Solid State Drive)やHDDなどの記憶装置によって実現される。制御部1bの処理は、CPU(Central Processing Unit)やFPGA(Field Programmable Gate Array)などのプロセッサが所定のプログラムを実行することで実現される。
記憶部1aは、管理情報3を格納する。管理情報3には、記憶装置2aに対する書き込みが要求された際にデータの書き込み先として指定された記憶装置2aのアドレスと、書き込みが要求されたデータの記憶装置2bにおける格納場所を示すアドレスとが対応付けて登録される。
制御部1bは、記憶装置2aに対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された記憶装置2aのアドレスが管理情報3に登録されておらず、かつ、当該データと同一のデータが記憶装置2bに記憶されている場合には、記憶装置2bに対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された記憶装置2aのアドレスと、当該データと同一のデータの記憶装置2bにおける格納場所を示すアドレスとを対応付けて管理情報3に登録する。これにより、記憶装置2bに対して同一のデータが重複して格納されることが防止され、その結果、データの格納に必要な記憶装置2bの容量を削減することができる。
ここで、書き込み処理の具体例について説明する。まず、初期状態として、管理情報3には、記憶装置2aのアドレスADa1と記憶装置2bのアドレスADb1、および、記憶装置2aのアドレスADa2と記憶装置2bのアドレスADb2が、それぞれ対応付けて登録されているものとする。また、記憶装置2bにおいては、アドレスADb1にデータX1が格納され、アドレスADb2にデータX2が格納されているものとする。このような初期状態は、例えば、次のような処理によって実現される。
制御部1bは、記憶装置2aのアドレスADa1に対するデータX1の書き込み要求を受け付ける。制御部1bは、管理情報3にアドレスADa1が登録されておらず、かつ、データX1が記憶装置2bに記憶されていないと判定すると、データX1を記憶装置2bのアドレスADb1に書き込む。これとともに、制御部1bは、管理情報3に対して、記憶装置2aのアドレスADa1と記憶装置2bのアドレスADb1とを対応付けて登録する。
また、制御部1bは、記憶装置2aのアドレスADa2に対するデータX2の書き込み要求を受け付ける。制御部1bは、管理情報3にアドレスADa2が登録されておらず、かつ、データX2が記憶装置2bに記憶されていないと判定すると、データX2を記憶装置2bのアドレスADb2に書き込む。これとともに、制御部1bは、管理情報3に対して、記憶装置2aのアドレスADa2と記憶装置2bのアドレスADb2とを対応付けて登録する。
このような初期状態から、制御部1bは、記憶装置2aのアドレスADa3に対するデータX2の書き込み要求を受け付けたとする。制御部1bは、管理情報3にアドレスADa3が登録されていないが、記憶装置2bにはデータX2が記憶されていると判定する。この場合、制御部1bは、管理情報3に対して、記憶装置2aのアドレスADa3と記憶装置2bのアドレスADb2とを対応付けて登録するが、記憶装置2bへのデータX2の書き込みを回避する。
これにより、記憶装置2aのアドレスADa3に対してデータX2が書き込まれたことが管理情報3によって管理される一方、記憶装置2bにおける複数の記憶領域に同一のデータX2が記憶されることが防止される。したがって、データの格納に必要な記憶装置2bの容量を削減することができる。また、記憶装置2bに対する書き込みアクセスの回数を少なくすることができ、書き込みアクセスに要する時間も短縮できる。
また、例えば、記憶装置2aのアドレスADa3からのデータ読み出しが要求された場合、制御部1bは、管理情報3に基づいて、アドレスADa3のデータが格納された記憶装置2bのアドレスADb2を特定し、アドレスADb2からデータを読み出す。このように、管理情報3を用いることで、重複データを排除しながらも、データの読み出しを正しく実行することができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、エミュレーション装置100およびアクセス装置200を含む。
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、エミュレーション装置100およびアクセス装置200を含む。
エミュレーション装置100は、記憶装置のエミュレーションを実行する装置である。すなわち、エミュレーション装置100は、エミュレーション対象の記憶装置に対するアクセス処理を、内部の物理記憶領域を用いて擬似的に実現する。後述するように、本実施の形態では、エミュレーション対象の記憶装置として、ディスクアレイに内蔵されたHDDを想定する。
アクセス装置200は、エミュレーション対象の記憶装置にアクセスする装置である。アクセス装置200は、エミュレーション対象の記憶装置のアドレスを指定した書き込み要求や読み出し要求をエミュレーション装置100に送信することで、エミュレーション対象の記憶装置にアクセスする。
なお、エミュレーション装置100は、例えば、ソフトウェアの検証のために使用される。この場合、アクセス装置200は、検証対象のソフトウェアを実行し、その実行の結果として発行された書き込み要求や読み出し要求をエミュレーション装置100に送信する。また、他の態様の例として、検証対象のソフトウェアがエミュレーション装置100で実行されてもよい。この場合、エミュレーション装置100は、検証対象のソフトウェアを実行することで発行された書き込み要求や読み出し要求に応じて、記憶装置のエミュレーションを行う。
図3は、エミュレーション装置のハードウェア例を示す図である。エミュレーション装置100は、図3に示すようなコンピュータとして実現できる。
エミュレーション装置100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットはエミュレーション装置100のバスに接続されている。
エミュレーション装置100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットはエミュレーション装置100のバスに接続されている。
プロセッサ101は、エミュレーション装置100の情報処理を制御する。プロセッサ101は、例えばCPU、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGAまたはPLD(Programmable Logic Device)などである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、CPU、MPU、DSP、ASIC、FPGA、PLDのうちの2以上の要素の組合せであってもよい。
RAM102は、エミュレーション装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、エミュレーション装置100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。エミュレーション装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
通信部104は、アクセス装置200と通信を行えるインタフェースである。
画像信号処理部105は、プロセッサ101からの命令に従って、エミュレーション装置100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
画像信号処理部105は、プロセッサ101からの命令に従って、エミュレーション装置100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、エミュレーション装置100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク13に記録されたプログラムやデータを読み取る駆動装置である。光ディスク13として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、エミュレーション装置100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置14やリーダライタ装置15を接続できる。メモリ装置14は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置15は、メモリカード16へのデータの書き込み、またはメモリカード16からのデータの読み出しを行う装置である。メモリカード16は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置14またはメモリカード16から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
なお、アクセス装置200も、エミュレーション装置100と同様のハードウェアを有するコンピュータとして実現できる。
図4は、HDDのエミュレーションの例を示す図である。
図4は、HDDのエミュレーションの例を示す図である。
本実施の形態では、アクセス装置200によるアクセス先の記憶装置として、それぞれ複数のHDDを備えるディスクアレイ21,21a,21bを想定する。また、アクセス装置200によるアクセス先は、ディスクアレイを識別する“DE(Disk Enclosure)番号”と、ディスクアレイ内のHDDを識別する“HDD番号”と、HDD内のブロック位置を示す“ブロックアドレス”との組み合わせによって表されるものとする。
エミュレーション装置100は、内蔵されたHDD103を物理記憶領域として用いて、ディスクアレイ21,21a,21bのエミュレーションを行う。エミュレーション装置100は、ディスクアレイ21,21a,21bによるボリューム構成をアクセス装置200に認識させる。そして、エミュレーション装置100は、アクセス装置200から、データの書き込み先または読み出し元としてDE番号、HDD番号およびブロックアドレスが指定された書き込み要求または読み出し要求を受信する。エミュレーション装置100は、ディスクアレイ21,21a,21bに対して書き込みが要求された場所やデータを管理テーブルにより管理しながら、書き込みが要求されたデータを内部のHDD103へ書き込み、また、読み出しが要求されたデータを内部のHDD103から読み出す。これにより、エミュレーション装置100は、ディスクアレイ21,21a,21bに対するアクセス処理をエミュレートする。
図5は、エミュレーション装置の機能の構成例を示す図である。エミュレーション装置100は、テーブル記憶部110、データ記憶部120および制御部130を有する。
テーブル記憶部110は、制御部130の処理に用いられる情報を記憶する。テーブル記憶部110は、RAM102またはHDD103により実現されてもよい。テーブル記憶部110が記憶する情報には、アドレスハッシュテーブル、データハッシュテーブルおよびデータ管理テーブルが含まれる。
テーブル記憶部110は、制御部130の処理に用いられる情報を記憶する。テーブル記憶部110は、RAM102またはHDD103により実現されてもよい。テーブル記憶部110が記憶する情報には、アドレスハッシュテーブル、データハッシュテーブルおよびデータ管理テーブルが含まれる。
アドレスハッシュテーブルには、エミュレーション対象の記憶装置(ディスクアレイ21,21a,21b)におけるアドレスと、データハッシュテーブルのレコードとの対応関係を示す情報が登録される。データハッシュテーブルには、書き込みが要求されたデータと、物理記憶領域(データ記憶部120)における格納場所との対応関係を示す情報が登録される。データ管理テーブルには、物理記憶領域に格納されたデータが、エミュレーション対象の記憶装置におけるいくつのアドレスと対応関係を有しているかを示すエントリ数が登録される。
データ記憶部120は、ディスクアレイ21,21a,21bをエミュレートする際の物理記憶領域として使用され、アクセス装置200から書き込みが要求されたデータを記憶する。データ記憶部120は、HDD103により実現される。なお、データ記憶部120は、例えば、エミュレーション装置100に接続された外部の記憶装置により実現されてもよい。
制御部130は、アクセス装置200からのアクセス要求に応じて、データ記憶部120を物理記憶領域として使用しながら、ディスクアレイ21,21a,21bに対するアクセス処理をエミュレートする。制御部130は、アクセス処理のエミュレートの際に、テーブル記憶部110に記憶された各テーブルを参照する。
制御部130は、ディスクアレイ21,21a,21bに対する書き込み処理をエミュレートする際、書き込みデータを一定サイズに分割し、分割されたデータごとにデータ記憶部120への書き込みを制御する。また、制御部130は、テーブル記憶部110に記憶された各テーブルを用いることで、同一の分割データがデータ記憶部120に格納されないように書き込みを制御する。これにより、データ記憶部120におけるデータの重複を排除し、データ記憶部120において使用される容量を削減する。
図6は、アドレスハッシュテーブルの例を示す図である。アドレスハッシュテーブル111は、テーブル記憶部110に格納される。アドレスハッシュテーブル111の各レコードは、ネクストポインタ、アドレスハッシュ値、DE番号、HDD番号、ブロックアドレス、データハッシュ値およびデータハッシュポインタの項目を含む。
ネクストポインタの項目には、アドレスハッシュテーブル111における次のレコードを示すポインタ情報が登録される。アドレスハッシュテーブル111における各レコードは、ネクストポインタの項目に登録されるポインタ情報によって連結される。また、アドレスハッシュテーブル111に新規のレコードが追加されると、その追加前における最後尾のレコードのネクストポインタのポインタ情報が、新規のレコードを示すように更新され、新規のレコードのネクストポインタには先頭レコードを示すポインタ情報が登録される。
アドレスハッシュ値の項目には、同じレコード内のDE番号、HDD番号、ブロックアドレスの各項目に登録された値を所定のハッシュ関数でハッシュ化した値が登録される。所定のハッシュ関数とは、例えば、CRC(Cyclic Redundancy Check)32、MD(Message Digest Algorithm)5、SHA(Secure Hash Algorithm)−1、SHA−256などである。
DE番号、HDD番号、ブロックアドレスの各項目には、アクセス装置200から受信した書き込み要求に含まれるDE番号、HDD番号、ブロックアドレスがそれぞれ登録される。データハッシュ値の項目には、書き込みが要求されたデータを所定のハッシュ関数でハッシュ化した値が登録される。所定のハッシュ関数とは、上記で説明した通りである。データハッシュポインタの項目には、データハッシュテーブルのレコードを示すポインタ情報が登録される。
図7は、データハッシュテーブルの例を示す図である。データハッシュテーブル112は、テーブル記憶部110に格納される。データハッシュテーブル112の各レコードは、ネクストポインタ、データハッシュ値、および物理アドレスの項目を含む。
ネクストポインタの項目には、データハッシュテーブル112における次のレコードを示すポインタ情報が登録される。アドレスハッシュテーブル111と同様に、データハッシュテーブル112における各レコードも、ネクストポインタの項目に登録されるポインタ情報によって連結される。データハッシュ値の項目には、書き込みが要求されたデータを所定のハッシュ関数でハッシュ化した値が登録される。所定のハッシュ関数とは、上記で説明した通りである。物理アドレスの項目には、データ記憶部120における対応するデータの格納位置が登録される。
図8は、データ管理テーブルの例を示す図である。データ管理テーブル113は、テーブル記憶部110に予め格納される。データ管理テーブル113は、物理アドレスおよびエントリ数の項目を含む。
データ管理テーブル113には、データ記憶部120に記録可能な分割データ数だけのレコードが予め設けられる。物理アドレスの項目には、データ記憶部120における対応するアドレスが登録される。エントリ数の項目には、当該項目に対応するデータ記憶部120のアドレスと対応関係を成す、エミュレーション対象の記憶装置におけるアドレスの数が登録される。エントリ数の項目の初期値は“0”であり、エントリ数が“0”の場合、当該項目に対応するデータ記憶部120の領域は未使用状態(上書き可能な状態)であることを示す。また、例えば、エントリ数が“1”の場合、当該項目に対応するデータ記憶部120のアドレスと対応関係を成す、エミュレーション対象の記憶装置におけるアドレスの数は1つであることを示している。
次に、データの書き込み要求を受けた場合の具体例を図9〜12で説明する。制御部130は、アクセス装置200からデータの書き込み要求を受信すると、書き込みが要求されたデータを一定サイズ(例えば512Byte)ごとに分割し、分割したデータごとに書き込み処理を行う。以下、書き込みを要求されたデータを分割して得られた分割データのそれぞれを“書き込みデータ”と呼ぶ場合がある。
図9は、データの書き込み要求を受けた場合の具体例(その1)を示す図である。図9では、エミュレーション対象の記憶装置における新規のアドレスに新規のデータの書き込みが要求された場合の処理について説明する。以下、図9に示す処理をステップ番号に沿って説明する。
(S11)制御部130は、DE番号“DE#1”、HDD番号“HDD#1”、ブロックアドレス“Add#1”を書き込み先とする、書き込みデータ“Data#1”の書き込み要求を受け付ける。制御部130は、DE番号“DE#1”、HDD番号“HDD#1”、ブロックアドレス“Add#1”に基づいて、所定のハッシュ関数でハッシュ化した値“Add#1_hash”を算出する。
制御部130は、算出したハッシュ値“Add#1_hash”と同一のハッシュ値が、アドレスハッシュテーブル111の何れかのレコードにおけるアドレスハッシュ値の項目に存在するか検索する。ここでは、制御部130は、同一のハッシュ値がアドレスハッシュテーブル111のどのレコードにも存在しないと判定したとする。この場合、制御部130は、アドレスハッシュテーブル111に新規のレコード111aを登録する。制御部130は、レコード111aにおけるDE番号、HDD番号、ブロックアドレス、アドレスハッシュ値の項目に、“DE#1”、“HDD#1”、“Add#1”、ハッシュ値“Add#1_hash”をそれぞれ登録する。なお、図9ではDE番号、HDD番号、ブロックアドレスの各項目の図示を省略する。
(S12)制御部は、書き込みデータ“Data#1”を所定のハッシュ関数でハッシュ化した値“Data#1_hash”を算出する。制御部130は、算出したハッシュ値“Data#1_hash”と同一のハッシュ値が、データハッシュテーブル112の何れかのレコードにおけるデータハッシュ値の項目に存在するか検索する。ここでは、制御部130は、同一のハッシュ値がデータハッシュテーブル112のどのレコードにも存在しないと判定したとする。
(S13)制御部130は、データ管理テーブル113からエントリ数の項目が0であるレコードを検索する。制御部130は、エントリ数の項目が0のレコードに対応するアドレス“AD12”を取得する。
(S14)制御部130は、データハッシュテーブル112に新規のレコード112aを登録する。制御部130は、レコード112aのデータハッシュ値、物理アドレスの項目に、“Data#1_hash”、アドレス“AD12”をそれぞれ登録する。
(S15)制御部130は、データ記憶部120のアドレス“AD12”の領域に、書き込みデータ“Data#1”を書き込む。
(S16)制御部130は、アドレスハッシュテーブル111のレコード111aにおけるデータハッシュ値、データハッシュポインタの項目に、“Data#1_hash”、データハッシュテーブル112のレコード112aを示す“Dhash#1_p”をそれぞれ登録する。
(S16)制御部130は、アドレスハッシュテーブル111のレコード111aにおけるデータハッシュ値、データハッシュポインタの項目に、“Data#1_hash”、データハッシュテーブル112のレコード112aを示す“Dhash#1_p”をそれぞれ登録する。
(S17)制御部130は、データ管理テーブル113のアドレス“AD12”に対応するエントリ数の項目に1を加算する。これは、データ記憶部120のアドレス“AD12”と、エミュレーション対象の記憶装置における、“DE#1”、“HDD#1”、“Add#1”で表される1つのアドレスとが対応関係を成すようになるからである。
このように、エミュレーション対象の記憶装置における書き込みが要求されたアドレス、および書き込みデータと、書き込みデータが実際に記憶されたエミュレーション装置100の物理記憶領域のアドレスとを、アドレスハッシュテーブル111とデータハッシュテーブル112とで対応付けることができる。
図10は、データの書き込み要求を受けた場合の具体例(その2)を示す図である。図10では、エミュレーション対象の記憶装置における新規のアドレスに対して、データ記憶部120に格納済みのデータの書き込みが要求された場合の処理を説明する。以下、図10に示す処理をステップ番号に沿って説明する。
(S21)制御部130は、DE番号“DE#2”、HDD番号“HDD#2”、ブロックアドレス“Add#2”を書き込み先とする、書き込みデータ“Data#1”の書き込み要求を受け付ける。制御部130は、DE番号“DE#2”、HDD番号“HDD#2”、アドレス“Add#2”に基づいて、所定のハッシュ関数でハッシュ化した値“Add#2_hash”を算出する。
制御部130は、算出したハッシュ値“Add#2_hash”と同一のハッシュ値が、アドレスハッシュテーブル111の何れかのレコードにおけるアドレスハッシュ値の項目に存在するか検索する。ここでは、制御部130は、同一のハッシュ値がアドレスハッシュテーブル111のどのレコードにも存在しないと判定したとする。この場合、制御部130は、アドレスハッシュテーブル111に新規のレコード111bを登録する。制御部130は、レコード111bにおけるDE番号、HDD番号、ブロックアドレス、アドレスハッシュ値の項目に、“DE#2”、“HDD#2”、“Add#2”、ハッシュ値“Add#2_hash”をそれぞれ登録する。なお、図10ではDE番号、HDD番号、ブロックアドレスの各項目の図示を省略する。
(S22)制御部130は、書き込みデータ“Data#1”を所定のハッシュ関数でハッシュ化した値“Data#1_hash”を算出する。制御部130は、算出したハッシュ値“Data#1_hash”と同一のハッシュ値がデータハッシュテーブル112の何れかのレコードにおけるデータハッシュ値の項目に存在するか検索する。
ここでは、制御部130は、同一のハッシュ値がデータハッシュテーブル112のレコード112bに存在すると判定したとする。これにより、書き込みデータ“Data#1”がすでにデータ記憶部120に格納済みであることが判定される。この場合、制御部130は、データ記憶部120に対する書き込みデータ“Data#1”の書き込みも、データハッシュテーブル112の更新も行わない。
(S23)制御部130は、アドレスハッシュテーブル111のレコード111bにおけるデータハッシュ値、データハッシュポインタの項目に、“Data#1_hash”、レコード112bを示す“Dhash#1_p”をそれぞれ登録する。
(S24)制御部130は、データハッシュテーブル112のレコード112bの物理アドレスの項目から、アドレス“AD12”を取得する。制御部130は、データ管理テーブル113のアドレス“AD12”に対応するエントリ数の項目に1を加算する。加算後の値は2となる。これは、データ記憶部120のアドレス“AD12”が、アドレスハッシュテーブル111の2つのレコード111b,111cに登録された、エミュレーション対象の記憶装置のアドレスと、対応関係を成すようになるからである。
このように、書き込みが要求されたデータに基づくハッシュ値が、データハッシュテーブル112の何れかのレコードにすでに登録されている場合には、データ記憶部120へのデータの格納が回避される。これにより、重複するデータの格納を防止することができ、データの格納に必要な物理記憶領域の容量が削減される。
また、エミュレーション対象の記憶装置における、同一のデータが格納されたアドレスは、アドレスハッシュテーブル111のデータハッシュポインタによって、データハッシュテーブル112の同一のレコードに関連付けられる。制御部130は、当該データの読み出しが要求された場合に、このようなデータハッシュポインタが指し示すデータハッシュテーブル112のレコードを参照することで、データの実際の格納場所を認識し、その格納場所からデータを読み出すことが可能になる。
図11は、データの書き込み要求を受けた場合の具体例(その3)を示す図である。図11では、エミュレーション対象の記憶装置におけるデータ書き込み済みのアドレスに対して、データ記憶部120に格納済みである他のデータの上書きが要求された場合の処理を説明する。以下、図11に示す処理をステップ番号に沿って説明する。
(S31)制御部130は、DE番号“DE#1”、HDD番号“HDD#1”、ブロックアドレス“Add#1”を書き込み先とする、書き込みデータ“Data#2”の書き込み要求を受け付ける。制御部130は、DE番号“DE#1”、HDD番号“HDD#1”、ブロックアドレス“Add#1”に基づいて、所定のハッシュ関数でハッシュ化した値“Add#1_hash”を算出する。
制御部130は、算出したハッシュ値“Add#1_hash”と同一のハッシュ値が、アドレスハッシュテーブル111の何れかのレコードにおけるアドレスハッシュ値の項目に存在するか検索する。ここでは、制御部130は、同一のハッシュ値がアドレスハッシュテーブル111のレコード111dに存在すると判断する。
(S32)制御部130は、書き込みデータ“Data#2”を所定のハッシュ関数でハッシュ化した値“Data#2_hash”を算出する。制御部130は、算出したハッシュ値“Data#2_hash”と同一のハッシュ値が、アドレスハッシュテーブル111のレコード111dにおけるデータハッシュ値の項目に登録されているかを判定する。ここでは、制御部130は、同一のハッシュ値が登録されていないと判定したとする。
(S33)制御部130は、アドレスハッシュテーブル111のレコード111dにおけるデータハッシュポインタの項目から、ポインタ“Dhash#1_p”を取得する。制御部130は、データハッシュテーブル112のポインタ“Dhash#1_p”に対応するレコード112dの物理アドレスの項目から、アドレス“AD12”を取得する。
(S34)制御部130は、アドレス“AD12”に対応するデータ管理テーブル113のレコードのエントリ数の項目に登録された値から、1を減算する。これは、データ記憶部120のアドレス“AD12”と、エミュレーション対象の記憶装置における、DE番号“DE#1”、HDD番号“HDD#1”、ブロックアドレス“Add#1”で表されるアドレスとが対応関係を成さないようになったからである。
(S35)制御部130は、書き込みデータ“Data#2”に基づくハッシュ値“Data#2_hash”と同一のハッシュ値が、データハッシュテーブル112の何れかのレコードにおけるデータハッシュ値の項目に存在するか検索する。ここでは、制御部130は、同一のハッシュ値がデータハッシュテーブル112のレコード112eに存在すると判断したとする。
(S36)制御部130は、アドレスハッシュテーブル111のレコード111dにおけるデータハッシュ値の項目に登録されたハッシュ値“Data#1_hash”を、“Data#2_hash”に更新する。また、制御部130は、アドレスハッシュテーブル111のレコード111dにおけるデータハッシュポインタの項目に登録されたポインタ“Dhash#1_p”を、データハッシュテーブル112のレコード112eを指し示すポインタ“Dhash#2_p”に更新する。これは、エミュレーション対象の記憶装置における、DE番号“DE#1”、HDD番号“HDD#1”、ブロックアドレス“Add#1”で表される領域のデータが、レコード112eに対応するデータ記憶部120の記憶領域に格納されていたデータに変更されたからである。
(S37)制御部130は、データハッシュテーブル112のレコード112eにおける物理アドレスの項目から、アドレス“AD13”を取得する。制御部130は、アドレス“AD13”に対応するデータ管理テーブル113のエントリ数の項目の値に1を加算する。これは、データ記憶部120のアドレス“AD13”と、エミュレーション対象の記憶装置における、“DE#1”、“HDD#1”、“Add#1”で表されるアドレスとが、新たに対応関係を成すようになるからである。
以上の図11の例のように、エミュレーション対象の記憶装置におけるデータ書き込み済みのアドレスに対して、データ記憶部120に格納済みである他のデータの上書きが要求された場合には、データ記憶部120に対するデータの書き込みは行われず、アドレスハッシュテーブル111における1つのレコードにおけるデータハッシュ値およびデータハッシュポインタの更新のみが行われる。
ここで、図11の例では、ステップS34の処理により、アドレス“AD12”に対応するデータ管理テーブル113のレコードのエントリ数の項目の値は、減算により0になったものとする。この場合、データ記憶部120のアドレス“AD12”の記憶領域は解放され、他のデータによって上書き可能になる。
すなわち、本実施の形態では、データ記憶部120の単位記憶領域に、エミュレーション対象の記憶装置のアドレスが対応付けられるたびに、この単位記憶領域に対応するエントリ数が1だけ増加する。また、この単位記憶領域と、エミュレーション対象の記憶装置のアドレスとの対応関係がなくなるたびに、この単位記憶領域に対応するエントリ数が1だけ減少する。これにより、エントリ数は、対応するデータ記憶部120の単位記憶領域が、エミュレーション対象の記憶装置における何個の記憶領域に対応する物理記憶領域として使用されているかを示すようになる。
このようなエントリ数の管理方法によれば、制御部130は、エントリ数が0であるときに、データ記憶部120の対応する単位記憶領域に新たなデータを上書き可能であると判定できる。よって、制御部130は、データ管理テーブル113を用いた簡単な管理方法によって、データ記憶部120におけるデータを上書き可能な単位記憶領域を正確に判定できる。また、一度データが書き込まれた単位記憶領域を、他のデータの格納に再利用できるようになるので、データ記憶部120の必要な記憶容量を削減できる。
次に、エミュレーション装置100の書き込み要求に対する処理手順を、図12,13のフローチャートを用いて説明する。
図12は、書き込み要求に対する処理例を示すフローチャート(その1)である。以下、図12に示す処理をステップ番号に沿って説明する。なお、図12,13の処理は、エミュレーション装置100がアクセス装置200から書き込み要求を受信したとき、書き込みが要求されたデータを分割した分割データごとに実行される。
図12は、書き込み要求に対する処理例を示すフローチャート(その1)である。以下、図12に示す処理をステップ番号に沿って説明する。なお、図12,13の処理は、エミュレーション装置100がアクセス装置200から書き込み要求を受信したとき、書き込みが要求されたデータを分割した分割データごとに実行される。
(S51)制御部130は、データの書き込み先を示すDE番号、HDD番号およびブロックアドレスを取得する。
(S52)制御部130は、DE番号とHDD番号とアドレスとに基づいて、所定のハッシュ関数でアドレスハッシュ値を算出する。
(S52)制御部130は、DE番号とHDD番号とアドレスとに基づいて、所定のハッシュ関数でアドレスハッシュ値を算出する。
(S53)制御部130は、アドレスハッシュテーブル111の何れかのレコードに、算出したアドレスハッシュ値と同じアドレスハッシュ値が存在するか判定する。存在する場合、すなわち、同じアドレスハッシュ値が登録されたレコードが特定された場合には、処理をステップS54に進める。存在しない場合、処理をステップS57に進める。
(S54)制御部130は、書き込みデータに基づいて、所定のハッシュ関数でデータハッシュ値を算出する。
(S55)制御部130は、ステップS53で特定されたアドレスハッシュテーブル111のレコードに登録されたデータハッシュ値と、ステップS54で算出したデータハッシュ値とが一致するかを判定する。一致する場合、処理を終了する。一致しない場合、処理をステップS56に進める。
(S55)制御部130は、ステップS53で特定されたアドレスハッシュテーブル111のレコードに登録されたデータハッシュ値と、ステップS54で算出したデータハッシュ値とが一致するかを判定する。一致する場合、処理を終了する。一致しない場合、処理をステップS56に進める。
(S56)制御部130は、データハッシュテーブル112のレコードのうち、ステップS53で特定されたアドレスハッシュテーブル111のレコードに登録されたデータハッシュポインタが示すレコードを特定する。制御部130は、特定したデータハッシュテーブル112のレコードから、物理アドレスを取得する。制御部130は、データ管理テーブル113のレコードのうち、取得した物理アドレスに対応するレコードを特定し、特定したレコードにおけるエントリ数を1だけ減算する。これにより、書き込み要求先に格納されていた古いデータに対応するエントリ数が、1だけ減算される。
(S57)制御部130は、アドレスハッシュテーブル111に新規のレコードを登録する。制御部130は、登録したレコードに、ステップS51で取得したDE番号、HDD番号およびブロックアドレスと、ステップS52で算出したアドレスハッシュ値とを登録する。
(S58)制御部130は、書き込みデータに基づいて、所定のハッシュ関数でデータハッシュ値を算出する。
(S59)制御部130は、データハッシュテーブル112の何れかのレコードに、ステップS54またはステップS58で算出したデータハッシュ値と同じデータハッシュ値が存在するか判定する。存在する場合、すなわち、同じデータハッシュ値が登録されたレコードが特定された場合には、処理を図13のステップS64に進める。存在しない場合、処理を図13のステップS61に進める。
(S59)制御部130は、データハッシュテーブル112の何れかのレコードに、ステップS54またはステップS58で算出したデータハッシュ値と同じデータハッシュ値が存在するか判定する。存在する場合、すなわち、同じデータハッシュ値が登録されたレコードが特定された場合には、処理を図13のステップS64に進める。存在しない場合、処理を図13のステップS61に進める。
図13は、書き込み要求に対する処理例を示すフローチャート(その2)である。以下、図13に示す処理をステップ番号に沿って説明する。
(S61)制御部130は、データ管理テーブル113にエントリ数の項目が0のレコードが存在するか判定する。存在する場合、処理をステップS62に進める。存在しない場合、処理をステップS66に進める。
(S61)制御部130は、データ管理テーブル113にエントリ数の項目が0のレコードが存在するか判定する。存在する場合、処理をステップS62に進める。存在しない場合、処理をステップS66に進める。
(S62)制御部130は、データ管理テーブル113からエントリ数の項目が0のレコードを特定し、特定したレコードから物理アドレスを取得する。制御部130は、データハッシュテーブル112に新規のレコードを登録する。制御部130は、登録したレコードに、ステップS54またはステップS58で算出したデータハッシュ値と、特定したデータ管理テーブル113のレコードから取得した物理アドレスとを登録する。
(S63)制御部130は、データ記憶部120におけるステップS62で取得した物理アドレスの領域に、書き込みが要求されたデータを書き込む。
(S64)制御部130は、アドレスハッシュテーブル111のレコードに、ステップS54またはステップS58で算出したデータハッシュ値と、データハッシュテーブル112のレコードを示すデータハッシュポインタを登録する。
(S64)制御部130は、アドレスハッシュテーブル111のレコードに、ステップS54またはステップS58で算出したデータハッシュ値と、データハッシュテーブル112のレコードを示すデータハッシュポインタを登録する。
ここで、ステップS54〜S56が実行された場合、アドレスハッシュテーブル111における登録先のレコードは、ステップS53で特定されたレコードとなる。一方、ステップS57,S58が実行された場合、アドレスハッシュテーブル111における登録先のレコードは、ステップS57で新規に登録されたレコードとなる。
また、ステップS59で“Yes”と判定された場合、登録されるデータハッシュポインタは、ステップS59で特定されたレコードを示すポインタとなる。一方、ステップS59で“No”と判定された場合、登録されるデータハッシュポインタは、ステップS62で新規に登録されたレコードを示すポインタとなる。
(S65)制御部130は、データ管理テーブル113のレコードにおけるエントリ数の項目の値に1を加算する。そして、処理を終了する。加算の対象となるデータ管理テーブル113のレコードは、ステップS64で登録されたデータハッシュポインタが示すデータハッシュテーブル112のレコードに登録された物理アドレスを含むレコードとなる。
(S66)制御部130は、アクセス装置200に空き容量が枯渇している旨を通知する。そして、処理を終了する。
次に、エミュレーション装置100がデータの呼出し要求を受けた場合について説明する。
次に、エミュレーション装置100がデータの呼出し要求を受けた場合について説明する。
図14は、データの読み出し要求を受けた場合の具体例を示す図である。以下、図14に示す処理をステップ番号に沿って説明する。
なお、制御部130は、アクセス装置200からデータの読み出し要求を受信すると、読み出しが指定された領域を一定サイズごとに分割し、分割した領域ごとに図14に示すような読み出し処理を行う。分割される領域のサイズは、書き込みが要求された際にデータを分割して得られる分割データのサイズと同じである。
なお、制御部130は、アクセス装置200からデータの読み出し要求を受信すると、読み出しが指定された領域を一定サイズごとに分割し、分割した領域ごとに図14に示すような読み出し処理を行う。分割される領域のサイズは、書き込みが要求された際にデータを分割して得られる分割データのサイズと同じである。
(S71)制御部130は、DE番号“DE#0”、HDD番号“HDD#0”、ブロックアドレス“Add#0”からのデータ読み出し要求を受け付ける。制御部130は、DE番号“DE#0”、HDD番号“HDD#0”、ブロックアドレス“Add#0”に基づいて、所定のハッシュ関数でハッシュ化した値“Add#0_hash”を算出する。
制御部130は、算出したハッシュ値“Add#0_hash”と同一のハッシュ値が、アドレスハッシュテーブル111の何れかのレコードにおけるアドレスハッシュ値の項目に存在するか検索する。ここでは、制御部130は、同一のハッシュ値がアドレスハッシュテーブル111のレコード111fに登録されていると判定したとする。
(S72)制御部130は、アドレスハッシュテーブル111のレコード111fからデータハッシュポインタ“Dhash#0_p”を取得する。制御部130は、データハッシュテーブル112から、データハッシュポインタ“Dhash#0_p”が示すレコードを検索する。ここでは、データハッシュテーブル112からレコード112fが検索されたとする。
(S73)制御部130は、データハッシュテーブル112のレコード112fから物理アドレス“AD11”を取得する。制御部130は、データ記憶部120から、物理アドレス“AD11”に格納されているデータ“Data#0”を読み出し、アクセス装置200に送信する。
ここで、制御部130は、図12のステップS59では、データの重複を判定するために、データそのもの同士を比較するのではなく、データを基に算出されたデータハッシュ値同士を比較する。これにより、比較対象のデータ量が小さくなり、重複判定の処理速度が向上する。ステップS54でも、データハッシュ値同士が比較されることで、比較の処理速度が向上する。
さらに、制御部130は、ステップS53でも、アドレスハッシュテーブル111のレコードを検索するために、DE番号、HDD番号およびブロックアドレスという大きなサイズのデータ同士を比較するのではなく、これらの情報を基に算出されたアドレスハッシュ値同士を比較する。これにより、比較対象のデータ量が小さくなり、レコード検索の処理速度が向上する。
次に、エミュレーション装置100の読み出し要求に対する処理手順を、図15のフローチャートを用いて説明する。
図15は、読み出し要求に対する処理例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
図15は、読み出し要求に対する処理例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(S81)制御部130は、データの読み出し領域を示すDE番号、HDD番号およびブロックアドレスを取得する。
(S82)制御部130は、DE番号、HDD番号およびブロックアドレスに基づいて、所定のハッシュ関数でアドレスハッシュ値を算出する。
(S82)制御部130は、DE番号、HDD番号およびブロックアドレスに基づいて、所定のハッシュ関数でアドレスハッシュ値を算出する。
(S83)制御部130は、算出したアドレスハッシュ値と同じハッシュ値が、アドレスハッシュテーブル111の何れかのレコードにおけるアドレスハッシュ値の項目に存在するか判定する。存在する場合、すなわち、同じアドレスハッシュ値が登録されたレコードが特定された場合には、制御部130は、特定されたレコードからデータハッシュ値とデータハッシュポインタとを取得し、処理をステップS84に進める。存在しない場合、処理をステップS86に進める。
(S84)制御部130は、データハッシュテーブル112から、ステップS83で取得したデータハッシュポインタが示すレコードを特定する。制御部130は、特定したレコードに登録されたデータハッシュ値が、ステップS83で取得したデータハッシュ値と一致するかを判定する。一致しない場合、処理をステップS86に進める。一致した場合、処理をステップS85に進める。
(S85)制御部130は、ステップS84で特定したデータハッシュテーブル112のレコードから、物理アドレスを取得する。制御部130は、データ記憶部120の記憶領域のうち、取得した物理アドレスに対応する記憶領域からデータを読み出し、読み出したデータをアクセス装置200に送信する。そして、処理を終了する。
(S86)制御部130は、アクセス装置200に読み出し要求のデータが存在しない旨を通知する。そして、処理を終了する。
以上説明した第2の実施の形態によれば、制御部130は、データの書き込み要求を受けた場合に、アドレスハッシュテーブル111およびデータハッシュテーブル112を参照することで、同一のデータがデータ記憶部120にすでに格納されているかを判定できる。そして、制御部130は、同一のデータがデータ記憶部120にすでに格納されていると判定すると、そのデータをデータ記憶部120に書き込むことを回避して、テーブル記憶部110内のテーブル情報の更新のみを行う。
以上説明した第2の実施の形態によれば、制御部130は、データの書き込み要求を受けた場合に、アドレスハッシュテーブル111およびデータハッシュテーブル112を参照することで、同一のデータがデータ記憶部120にすでに格納されているかを判定できる。そして、制御部130は、同一のデータがデータ記憶部120にすでに格納されていると判定すると、そのデータをデータ記憶部120に書き込むことを回避して、テーブル記憶部110内のテーブル情報の更新のみを行う。
これにより、データの書き込みが要求されたデータのうち、同一のデータがデータ記憶部120の複数の記憶領域に重複して格納されることを防止できる。したがって、データ記憶部120の記憶容量、すなわち、記憶装置をエミュレーションする際に使用される物理記憶領域の容量を小さくすることができる。また、データ記憶部120に対する書き込みアクセスの回数を少なくすることができ、書き込みアクセスに要する時間も短縮できる。
また、制御部130は、アクセス装置200から書き込みが要求されたデータを一定サイズごとに分割した分割データを単位として、記憶装置に対するアクセス処理のエミュレーションを行う。これにより、エミュレーション対象の記憶装置の記憶領域と、物理記憶領域とを対応付けて管理する処理や、管理の際に使用されるテーブルの構造が単純化される。したがって、エミュレーションの処理効率を向上できる。
なお、前述のように、第1の実施の形態の情報処理は、制御部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、エミュレーション装置100が備えるプロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク13、メモリ装置14およびメモリカード16など)に記録できる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。
また、上記の情報処理の少なくとも一部を、DSP、ASIC、PLDなどの電子回路で実現することもできる。
以上、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。
以上、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。
1 記憶制御装置
1a 記憶部
1b 制御部
2a,2b 記憶装置
3 管理情報
1a 記憶部
1b 制御部
2a,2b 記憶装置
3 管理情報
Claims (10)
- 第1の記憶装置に対するデータの書き込み処理を、第2の記憶装置に対してデータを書き込むことでエミュレートする記憶制御装置において、
前記第1の記憶装置に対する書き込みが要求された際にデータの書き込み先として指定された前記第1の記憶装置のアドレスと、書き込みが要求されたデータの前記第2の記憶装置における格納場所を示すアドレスとが対応付けて登録された管理情報を記憶する記憶部と、
前記第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された前記第1の記憶装置のアドレスが前記管理情報に登録されておらず、かつ、当該データと同一のデータが前記第2の記憶装置に記憶されている場合には、前記第2の記憶装置に対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された前記第1の記憶装置のアドレスと、当該データと同一のデータの前記第2の記憶装置における格納場所を示すアドレスとを対応付けて前記管理情報に登録する制御部と、
を有することを特徴とする記憶制御装置。 - 前記管理情報には、データの書き込み先として指定された前記第1の記憶装置のアドレスと、書き込みが要求されたデータの前記第2の記憶装置における格納場所を示すアドレスと、書き込みが要求されたデータに基づくハッシュ値とが対応付けて登録され、
前記制御部は、前記第1の記憶装置に対するデータの書き込みが要求されたとき、当該データに基づくハッシュ値を前記管理情報から検索することで、当該データと同一のデータが前記第2の記憶装置に記憶されているかを判定する、
ことを特徴とする請求項1記載の記憶制御装置。 - 前記管理情報は、前記第2の記憶装置のアドレスごとに、当該管理情報において対応付けられた前記第1の記憶装置のアドレスの数を示すカウント数を含み、
前記制御部は、前記第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された前記第1の記憶装置のアドレスが前記管理情報に登録されておらず、かつ、当該データと同一のデータが前記第2の記憶装置に記憶されていない場合には、前記第2の記憶装置のアドレスのうち、対応する前記カウント数が0のアドレスに対して当該データを書き込むとともに、当該データを書き込んだ前記第2の記憶装置のアドレスに対応する前記カウント数を1増加させる、
ことを特徴とする請求項1または2記載の記憶制御装置。 - 前記制御部は、前記第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された前記第1の記憶装置の第1のアドレスが前記管理情報に登録されており、かつ、前記管理情報において前記第1の記憶装置の前記第1のアドレスに対応付けられた前記第2の記憶装置の第2のアドレスに格納されているデータが、書き込みが要求されたデータと異なる場合には、前記第2の記憶装置の前記第2のアドレスに対応する前記カウント数を1減少させることを特徴とする請求項3記載の記憶制御装置。
- 前記管理情報は、
複数のレコードを含み、各レコードに、前記第2の記憶装置に書き込まれたデータに基づくハッシュ値と、前記第2の記憶装置におけるデータの格納場所とが対応付けて登録されたデータ管理情報と、
データの書き込み先として指定された前記第1の記憶装置のアドレスと、書き込みが要求されたデータに対応する前記データ管理情報の前記レコードを指し示す指示情報とが対応付けて登録されたアドレス管理情報と、
を含むことを特徴とする請求項1乃至4の何れか1項に記載の記憶制御装置。 - 前記制御部は、前記第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された前記第1の記憶装置のアドレスが前記アドレス管理情報に登録されておらず、かつ、当該データに基づくハッシュ値を含む前記レコードが前記データ管理情報に登録されている場合には、当該データの書き込み先として指定された前記第1の記憶装置のアドレスと、当該データに基づくハッシュ値を含む前記レコードを指し示す前記指示情報とを対応付けて前記アドレス管理情報に登録することを特徴とする請求項5記載の記憶制御装置。
- 前記制御部は、前記第1の記憶装置に対するデータの読み出しが要求されたとき、前記管理情報から、データの読み出し先として指定された前記第1の記憶装置のアドレスと対応付けられた前記第2の記憶装置のアドレスを取得し、取得した前記第2の記憶装置のアドレスからデータを読み出すことを特徴とする請求項1乃至4の何れか1項に記載の記憶制御装置。
- 前記管理情報において対応付けられる前記第1の記憶装置のアドレスおよび前記第2の記憶装置のアドレスは、前記第1の記憶装置および前記第2の記憶装置をそれぞれ同一サイズごとに分割した記憶領域ごとのアドレスを示し、
前記制御部は、前記第1の記憶装置に対して書き込みが要求されたデータを一定サイズの分割データに分割し、分割された分割データごとに、当該分割データの前記第1の記憶装置における書き込み先のアドレスが前記管理情報に登録されているか、および、当該分割データと同一のデータが前記第2の記憶装置に記憶されているかを判定する、
ことを特徴とする請求項1乃至7の何れか1項に記載の記憶制御装置。 - 第1の記憶装置に対するデータの書き込み処理を、第2の記憶装置に対してデータを書き込むことでエミュレートする記憶制御方法であって、
コンピュータが、
前記第1の記憶装置に対するデータの書き込みが要求されたとき、当該データの書き込み先として指定された前記第1の記憶装置のアドレスが、前記第1の記憶装置に対する書き込みが要求された際にデータの書き込み先として指定された前記第1の記憶装置のアドレスと、書き込みが要求されたデータの前記第2の記憶装置における格納場所を示すアドレスとが対応付けて登録された管理情報に登録されておらず、かつ、当該データと同一のデータが前記第2の記憶装置に記憶されている場合には、前記第2の記憶装置に対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された前記第1の記憶装置のアドレスと、当該データと同一のデータの前記第2の記憶装置における格納場所を示すアドレスとを対応付けて前記管理情報に登録する、
ことを特徴とする記憶制御方法。 - 第1の記憶装置に対するデータの書き込み処理を、第2の記憶装置に対してデータを書き込むことでエミュレートする記憶制御プログラムであって、
コンピュータに、
前記第1の記憶装置に対するデータの書き込みが要求されたとき、前記第1の記憶装置に対する書き込みが要求された際にデータの書き込み先として指定された前記第1の記憶装置のアドレスと、書き込みが要求されたデータの前記第2の記憶装置における格納場所を示すアドレスとが対応付けて登録された管理情報を参照し、
書き込みが要求されたデータの書き込み先として指定された前記第1の記憶装置のアドレスが前記管理情報に登録されておらず、かつ、当該データと同一のデータが前記第2の記憶装置に記憶されている場合には、前記第2の記憶装置に対する当該データの書き込み処理を回避して、当該データの書き込み先として指定された前記第1の記憶装置のアドレスと、当該データと同一のデータの前記第2の記憶装置における格納場所を示すアドレスとを対応付けて前記管理情報に登録する、
処理を実行させることを特徴とする記憶制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014035574A JP2015162002A (ja) | 2014-02-26 | 2014-02-26 | 記憶制御装置、記憶制御方法および記憶制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014035574A JP2015162002A (ja) | 2014-02-26 | 2014-02-26 | 記憶制御装置、記憶制御方法および記憶制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015162002A true JP2015162002A (ja) | 2015-09-07 |
Family
ID=54185072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014035574A Pending JP2015162002A (ja) | 2014-02-26 | 2014-02-26 | 記憶制御装置、記憶制御方法および記憶制御プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015162002A (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009080696A (ja) * | 2007-09-26 | 2009-04-16 | Hitachi Ltd | ストレージサブシステム及びその制御方法 |
JP2011521315A (ja) * | 2008-04-06 | 2011-07-21 | フュージョン−アイオー・インコーポレーテッド | マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法 |
JP2012168853A (ja) * | 2011-02-16 | 2012-09-06 | Nec Corp | ストレージ制御装置、ストレージシステム、ストレージ制御方法及びそのためのプログラム |
-
2014
- 2014-02-26 JP JP2014035574A patent/JP2015162002A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009080696A (ja) * | 2007-09-26 | 2009-04-16 | Hitachi Ltd | ストレージサブシステム及びその制御方法 |
JP2011521315A (ja) * | 2008-04-06 | 2011-07-21 | フュージョン−アイオー・インコーポレーテッド | マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法 |
JP2012168853A (ja) * | 2011-02-16 | 2012-09-06 | Nec Corp | ストレージ制御装置、ストレージシステム、ストレージ制御方法及びそのためのプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12099741B2 (en) | Lightweight copying of data using metadata references | |
US11461027B2 (en) | Deduplication-aware load balancing in distributed storage systems | |
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
US8086896B2 (en) | Dynamically tracking virtual logical storage units | |
US8725969B2 (en) | Distributed content storage system supporting different redundancy degrees | |
US20130055371A1 (en) | Storage control method and information processing apparatus | |
JP6341918B2 (ja) | ストレージを含むデータをコピーするためのコンピュータ・プログラム、システム、および方法 | |
JP6558059B2 (ja) | ストレージ制御装置、ストレージ制御プログラム、およびストレージシステム | |
JP5466645B2 (ja) | 記憶装置、情報処理装置およびプログラム | |
US20160246587A1 (en) | Storage control device | |
JP2018106545A (ja) | 情報処理装置、情報処理システム、情報処理方法及びプログラム | |
US10620867B2 (en) | System and method for performing wear leveling at a non-volatile firmware memory | |
US10628048B2 (en) | Storage control device for controlling write access from host device to memory device | |
JP2019144921A (ja) | 情報処理装置及び情報処理方法 | |
US11210024B2 (en) | Optimizing read-modify-write operations to a storage device by writing a copy of the write data to a shadow block | |
US10430287B2 (en) | Computer | |
JP2018106636A (ja) | 情報処理装置、情報処理方法およびデータ管理プログラム | |
JP2015162002A (ja) | 記憶制御装置、記憶制御方法および記憶制御プログラム | |
TWI522805B (zh) | 用來於一儲存系統中進行快取管理之方法與裝置 | |
US8977814B1 (en) | Information lifecycle management for binding content | |
US9298390B2 (en) | Systems and methods for copying data maintained in a dynamic storage volume and verifying the copied data | |
JP6695973B2 (ja) | 計算機システム及びデータベース管理方法 | |
WO2014010016A1 (ja) | プログラム、データ管理方法、および情報処理装置 | |
JP7067270B2 (ja) | 情報処理装置,ロードプログラムおよびロード方法 | |
US20240184454A1 (en) | Storage device and operating method of the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161102 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170905 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20180306 |