JP2019159735A - コントローラおよびデータ転送方法 - Google Patents

コントローラおよびデータ転送方法 Download PDF

Info

Publication number
JP2019159735A
JP2019159735A JP2018044854A JP2018044854A JP2019159735A JP 2019159735 A JP2019159735 A JP 2019159735A JP 2018044854 A JP2018044854 A JP 2018044854A JP 2018044854 A JP2018044854 A JP 2018044854A JP 2019159735 A JP2019159735 A JP 2019159735A
Authority
JP
Japan
Prior art keywords
area
address information
storage medium
host
transfer
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
Application number
JP2018044854A
Other languages
English (en)
Inventor
周吾 小川
Shugo Ogawa
周吾 小川
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2018044854A priority Critical patent/JP2019159735A/ja
Publication of JP2019159735A publication Critical patent/JP2019159735A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上するコントローラを提供する。【解決手段】コントローラを、アクセス要求受信手段1と、格納先特定手段2と、転送処理内容通知手段3を備える構成とする。アクセス要求受信手段1は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第1のアドレス情報と、第2のアドレス情報を受信する。第1のアドレス情報は、仮想的な記憶領域上のアクセス先の領域を指定する。第2のアドレス情報は、記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。格納先特定手段2は、第1のアドレス情報に対応する記憶媒体上の第3のアドレス情報を特定する。転送処理内容通知手段3は、アクセス要求の種類と第2のアドレス情報および第3のアドレス情報を出力する。【選択図】 図1

Description

本発明は、データ転送技術に関するものであり、特に、ホストと記憶媒体間で直接、データ転送を行う技術に関するものである。
計算機システムにおいて、HDD(Hard Disk Drive)やSSD(Solid State Drive)のような記憶媒体を用いたストレージの性能や信頼性を向上させる手段として、RAID(Redundant Array of Inexpensive Disks)によるストライピングやミラーリングが用いられる。RAIDでは、複数の記憶媒体の記憶領域を単一の仮想的な記憶媒体または記憶領域のような仮想記憶媒体にマッピングすることでRAID0(ストライピング)やRAID1(ミラーリング)が実現される。アクセス元であるホストは、RAIDによって提供される仮想記憶媒体にアクセスを行うことで、マッピングを意識せずにストレージの性能や信頼性を向上することができる。
RAIDを実現するコントローラは、ホストに対して仮想記憶媒体として動作するため、ホストから仮想記憶媒体に対するアクセス要求に応じて、ホストとコントローラとの間でアクセス要求に対応するデータ転送を行う。また、コントローラは、ホストから仮想記憶媒体に対するアクセス要求に応じて、マッピング先の記憶領域に対応する記憶媒体にアクセスを行い、ホストと記憶媒体との間でデータ転送を行う。そのような、ホストと記憶媒体との間のデータ転送において遅延等が生じると、システム全体の処理能力が低下し得る。そのため、ホストが仮想記憶媒体にアクセスして行われるホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送における性能の向上を図るための技術の開発が行われている。そのような、ホストが仮想記憶媒体にアクセスして行われるホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送における性能向上技術としては、例えば、特許文献1のような技術が開示されている。
特許文献1は、特定のハードウェアに負荷が集中しないように制御を行うRAIDシステムに関するものである。特許文献1のRAIDシステムでは、ハードウェア資源の使用情報に基づいて特定のハードウェア資源に負荷が集中しないように、仮想記憶領域に割り当てられている記憶装置の構成の見直しが行われている。特許文献1は、そのような構成とすることで仮想化されたストレージシステムの性能の劣化を抑えることができるとしている。
また非特許文献1には、記憶媒体のアクセス規格であるNVM Express(登録商標)(Non-Volatile Memory Express)が示されている。非特許文献1の技術に基づいた記憶媒体は、データ転送を行うメモリのアドレスと記憶媒体上のLBA(Logical Block Address)の範囲をReadとWriteの各コマンドで指定することで、メモリと記憶媒体との間でDMA(Direct Memory Access)に相当する動作を行う。
特開2008−165620号公報
"NVM Express 1.3 Specification"、[Online]、2017年5月1日、NVM Express、[2018年2月14日検索]、インターネット<URL:http://www.nvmexpress.org/wp-content/uploads/NVM_Express_Revision_1.3.pdf>
しかしながら、特許文献1の技術は次のような点で十分ではない。特許文献1では、仮想記憶領域に割り当てられる記憶装置の構成を、負荷が集中しないように組み替えることで性能の劣化を抑制している。しかし、記憶装置等に負荷が集中しないようにしても、ホストと記憶媒体の間でデータ転送を行う際にコントローラと記憶媒体との間の接続帯域やコントローラの処理能力がボトルネックになり得る。また、非特許文献1の技術では、SSDを用いている記憶媒体へのアクセス時にホストのメモリとの間で直接データ転送を行う場合には、物理記憶媒体に対するLBAの指定が必要である。しかし、仮想記憶媒体に対するアクセスでは、仮想記憶媒体が記憶媒体の構成や記憶媒体に対するデータの配置を管理し、これらの情報をアクセス元であるホストやホストで実行されるコンピュータプログラムから隠蔽する。そのため、非特許文献1の技術では、仮想記憶媒体にアクセスする際にホスト側からデータ転送を行う相手となる記憶媒体およびアクセス先となるLBAの特定が困難である。よって、特許文献1および非特許文献1の技術では、仮想記憶媒体を介したホストと記憶媒体間のデータ転送おいて、データ転送の性能向上技術としては十分ではない。
本発明は、上記の課題を解決するため、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における帯域の増加を図り、性能向上を実現するコントローラの提供を目的としている。
上記の課題を解決するため、本発明のコントローラは、アクセス要求受信手段と、格納先特定手段と、転送処理内容通知手段を備えている。アクセス要求受信手段は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第1のアドレス情報と、第2のアドレス情報を受信する。第1のアドレス情報は、仮想的な記憶領域上のアクセス先の領域を指定する。第2のアドレス情報は、第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。格納先特定手段は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第のアドレス情報を特定する。転送処理内容通知手段は、アクセス要求の種類と、記憶媒体上の第3のアドレス情報に対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、第2のアドレス情報および第3のアドレス情報とともに転送処理内容通知として出力する。
本発明のデータ転送方法は、仮想的な記憶領域へのアクセス要求と、第1のアドレス情報と、第2のアドレス情報を受信する。第1のアドレス情報は、仮想的な記憶領域上のアクセス先の領域を指定する。第2のアドレス情報は、第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。本発明のデータ転送方法は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定する。本発明のデータ転送方法は、記憶媒体上の第3のアドレス情報に対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および第3のアドレス情報とともに転送処理内容通知として出力する。本発明のデータ転送方法は、データ転送要求に基づいて、記憶媒体上の第3のアドレス情報に対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間で直接、データ転送を行う。
本発明によると、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送の性能を向上することができる。
本発明の第1の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の構成の概要を示す図である。 本発明の第2の実施形態のコントローラの構成を示す図である。 本発明の第2の実施形態のマッピングテーブルの構成の例を示す図である。 本発明の第2の実施形態における記憶領域上のアドレスの計算方法を模式的に示した図である。 本発明の第2の実施形態におけるマッピングテーブルの一部を示す図である。 本発明の第2の実施形態のコントローラの動作フローを示す図である。 本発明の第2の実施形態のデータ転送実行部の動作フローを示す図である。 本発明の第2の実施形態における情報の流れの例を模式的に示す図である。 本発明の第2の実施形態における情報の流れの例を模式的に示す図である。 本発明の第3の実施形態の構成の概要を示す図である。 本発明の第3の実施形態のコントローラの構成を示す図である。 本発明の第3の実施形態における記憶領域上のアドレスの計算方法を模式的に示した図である。 本発明の第3の実施形態のコントローラの動作フローを示す図である。 本発明の第3の実施形態のデータ転送実行部の動作フローを示す図である。 本発明の第3の実施形態における情報の流れの例を模式的に示す図である。 本発明の第3の実施形態における情報の流れの例を模式的に示す図である。 本発明の各実施形態におけるコントローラおよびデータ転送実行部の処理を行うコンピュータの構成の例を示す図である。
(第1の実施形態)
本発明の第1の実施形態について図を参照して詳細に説明する。図1は、本実施形態のコントローラの構成の概要を示したものである。本実施形態のコントローラは、アクセス要求受信手段1と、格納先特定手段2と、転送処理内容通知手段3を備えている。アクセス要求受信手段1は、接続先のホストから、仮想的な記憶領域へのアクセス要求と、第1のアドレス情報と、第2のアドレス情報を受信する。第1のアドレス情報は、仮想的な記憶領域上のアクセス先の領域を指定する。第2のアドレス情報は、第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。格納先特定手段2は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定する。転送処理内容通知手段3は、アクセス要求の種類と、記憶媒体上の第3のアドレスに対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、第2のアドレス情報および第3のアドレス情報とともに転送処理内容通知として出力する。
本実施形態のアクセス要求受信手段1は、接続先のホストから、仮想的な記憶領域である仮想記憶媒体へのアクセス要求と、第1のアドレス情報と、第2のアドレス情報を受信する。本実施形態のコントローラの格納先特定手段2は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定している。また、本実施形態のコントローラは、アクセス要求の種類と、第2のアドレス情報および第3のアドレス情報を転送処理内容通知として出力している。そのため、転送処理内容通知を基にホストと記憶媒体間でコントローラを介さずにデータ転送を行うことが可能になるので、コントローラの負荷が低減し、コントローラに起因するデータ転送の性能を向上することができる。その結果、本実施形態のコントローラを用いることでホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上することができる。
(第2の実施形態)
本発明の第2の実施形態について図を参照して詳細に説明する。図2は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト10と、コントローラ20と、データ転送実行部30と、記憶媒体40を備えている。
本実施形態の計算機システムは、複数の記憶媒体の記憶領域を単一の仮想的な記憶媒体である仮想記憶媒体にマッピングし、ホストから仮想記憶媒体を介して記憶媒体にアクセスするRAID(Redundant Array of Inexpensive Disks)システムによって構成されている。本実施形態の計算機システムは、ホスト10が仮想記憶媒体にアクセスする際に、ホスト10のメモリアドレス空間上の記憶領域と、仮想的な記憶領域である仮想記憶媒体にマッピングされた記憶媒体との間でデータ転送を制御するコントローラを介さずに直接、データ転送を行うことを特徴とする。
ホスト10の構成について説明する。ホスト10は、メモリ11と、アプリケーション実行部12を備えている。
メモリ11は、ホスト10の主記憶装置としての機能を有する。メモリ11は、アプリケーション実行部12からアクセスを受け、データの記憶および出力等の動作を行う。メモリ11は、データ転送実行部30の制御に基づいて記憶媒体40との間でデータ転送を行う。本実施形態のメモリ11は、DRAM(Dynamic Random Access Memory)を用いて構成されている。メモリ11は、DRAM以外の半導体記憶装置であってもよい。また、メモリ11は、ホスト10に直接またはネットワークを介して接続され、ホスト10のメモリアドレス空間を経由して入出力を行うGPU(Graphics Processing Units)やFPGA(Field Programmable Gate Array)等の半導体装置であってもよい。
アプリケーション実行部12は、アプリケーションプログラムを実行し各処理を行う。アプリケーション実行部12は、コントローラ20にアクセス要求を送ることで仮想記憶媒体100にアクセスし、各処理を行う際に必要なデータの読み出しや処理結果の書き込みを行う。アプリケーション実行部12は、1個または複数のCPU(Central Processing Unit)によって構成されている。アプリケーション実行部12は、アプリケーションプログラムをCPU等の汎用にプロセッサによって実行する構成に代えて、FPGA等のあらかじめ設定された回路を用いて各処理を実行する構成であってもよい。
コントローラ20の構成について説明する。図3は、本実施形態のコントローラ20の構成を示した図である。コントローラ20は、ホスト10に対してバスまたはネットワークを介して接続されているデバイスとして動作する。コントローラ20は、アプリケーション実行部12から仮想記憶媒体100に対するアクセス要求を受け取る。コントローラ20は、仮想記憶媒体100上のアクセス要求対象の領域に対応する転送ストレージ領域およびメモリ11上の転送メモリ領域を計算して、データ転送実行部30にアクセス要求の種類とともに通知する。転送ストレージ領域とは、メモリ11との間でデータ転送を行う際に、データ転送の対象となる記憶媒体40上の記憶領域のことをいう。また、転送メモリ領域とは、記憶媒体40との間でデータ転送を行う際に、データ転送の対象となるメモリ11上の記憶領域のことをいう。
コントローラ20の構成について説明する。コントローラ20は、アクセス要求受信部21と、マッピングテーブル記憶部22と、転送ストレージ領域算出部23と、転送処理内容通知部24を備えている。
アクセス要求受信部21は、ホスト10のアプリケーション実行部12から仮想記憶媒体100へのアクセス要求を受け取る。アクセス要求は、アクセス要求の種類、仮想記憶媒体100上のアクセス対象の領域を指定するアドレスおよびメモリ11上のアクセス対象の領域に対応するホスト10のメモリアドレス空間上の領域を指定するアドレスによって構成されている。アクセス要求の種類は、「Read」と「Write」いずれの動作を行うかを指定する情報である。また、本実施形態のアクセス要求受信部21の機能は、第1の実施形態のアクセス要求受信手段1に相当する。
マッピングテーブル記憶部22は、仮想記憶媒体100上の各領域に対してマッピングされる記憶媒体40の識別子および記憶媒体40におけるアドレスの対応関係を示すデータテーブルをマッピングテーブルとして保存している。
図4は、マッピングテーブルの例を示す図である。マッピングテーブルは、仮想記憶媒体100上の領域ごとにマッピング先の記憶媒体40の識別子および記憶媒体40上でのアドレスとの対応関係の情報をマッピングエントリ200として有している。
各マッピングエントリ200は、仮想記憶媒体100の論理アドレス201と、記憶媒体40の識別子である記憶媒体識別子202と、記憶媒体40上の物理アドレス203と、マッピングサイズ204が互いに関連づけられて構成されている。
仮想記憶媒体100の論理アドレス201は、仮想記憶媒体100の各領域の先頭アドレスを論理アドレスで指し示した情報である。記憶媒体40を識別する記憶媒体識別子202は、論理アドレスが指し示している領域のマッピング先となる記憶媒体40を識別するための識別子の情報である。記憶媒体40上の物理アドレス203は、マッピング先の記憶媒体40の記憶領域のアドレスを物理アドレスで指し示した情報である。マッピングサイズ204は、記憶媒体40上にマッピングされる記憶領域のサイズを示す情報である。
マッピングテーブルの形式は、図4に示した形式以外であってもよい。例えば、各マッピングエントリが、仮想記憶媒体100の領域を先頭から一定サイズ毎に区切った領域に対応する場合は、論理アドレスおよびマッピングサイズは、不要となる。また、仮想記憶媒体100と記憶媒体40のマッピングにRAIDを用いる場合は、RAID0であればストライプを構成する記憶媒体40の数量およびチャンクのサイズから仮想記憶媒体100に対応するマッピング先を計算することができる。そのため、RAIDの構成情報を除いたマッピングテーブルの各エントリの情報は、不要となる。また、チャンクは、ストライプを構成する各記憶媒体40に対して連続的にマッピングされた領域のことをいう。
転送ストレージ領域算出部23は、アクセス要求に含まれてホスト10から送られてくる仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスの情報を受け取る。転送ストレージ領域算出部23は、アクセス要求に対応する転送ストレージ領域を含む記憶媒体40と、記憶媒体40における転送ストレージ領域のアドレスを、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスから、マッピングテーブルを参照して計算する。
図5は、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、転送ストレージ領域算出部23において算出される転送ストレージ領域の対応関係の例を示す図である。また、図6は、図5の例に対応するマッピングテーブルの構成を示している。
図5の例では、仮想記憶媒体100上のアクセス対象の領域は、記憶媒体40の記憶領域42に対してマッピングされている。転送ストレージ領域算出部23は、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、マッピングテーブルの情報を基に、転送ストレージ領域43が含まれる記憶媒体40の識別子を特定し、先頭アドレスを算出する。ここで、図5の例において、仮想記憶媒体100上のアクセス対象の領域を指し示す論理アドレスをLa、記憶領域41の論理アドレスと物理アドレスをそれぞれLb、Pbとする。そのように設定すると、転送ストレージ領域43の先頭アドレスPaは、Pa=Pb+(La−Lb)のように計算することができる。
また、本実施形態の転送ストレージ領域算出部23の機能は、第1の実施形態の格納先特定手段2に相当する。
転送処理内容通知部24は、アクセス要求に対応するデータ転送処理の実行内容を示す情報を転送処理内容通知としてデータ転送実行部30に通知する。転送処理内容通知は、アクセス要求の種類、転送ストレージ領域を含む記憶媒体40の識別子、転送ストレージ領域の先頭アドレスおよび転送ストレージ領域に対応する転送メモリ領域の先頭アドレスの情報によって構成されている。また、本実施形態の転送処理内容通知部24の機能は、第1の実施形態の転送処理内容通知手段3に相当する。
コントローラ20は、ホスト10に対してバスやネットワークを経由して接続されるデバイスの形態でなくてもよい。例えば、コントローラ20は、ホスト10のOS(Operating System)からホスト10に接続されたデバイスとして認識、制御が可能な、デバイスの一部またはそのようなデバイスの全ての動作を模擬するソフトウェアであってもよい。
データ転送実行部30は、データ転送を実行する機能を有する。データ転送実行部30は、コントローラ20から通知された情報に基づいて、転送ストレージ領域と、転送メモリ領域との間で、通知されたアクセス要求の種類に応じたデータ転送を実行する。データ転送実行部30は、通知されたアクセス要求が「Read」である場合は転送ストレージ領域から転送メモリ領域に対してデータ転送を実行する。データ転送実行部30は、通知されたアクセス要求が「Write」である場合は転送メモリ領域から転送ストレージ領域にデータ転送を実行する。
データ転送実行部30は、コントローラ20を経由せずにデータ転送を実行する。また、データ転送実行部30は、転送ストレージ領域に対応する記憶媒体40、メモリ11における転送メモリ領域に対するアクセスを個別に行わずに、直接、データ転送を行ってもよい。例えば、データ転送実行部30は、ホスト10のDMAコントローラに対して転送ストレージ領域と転送メモリ領域のアドレスを設定して、直接データ転送を行ってもよい。
また、データ転送実行部30は、記憶媒体40が指定したホストのメモリアドレスとSSDのLBAが示す領域との間でDMA転送を行うデバイスである場合は、記憶媒体40に対して転送ストレージ領域と転送メモリ領域のアドレスを設定して、直接データ転送を行ってもよい。そのようなデータ転送を行う記憶媒体40には、例えば、NVM Express(登録商標)(Non-Volatile Memory Express)に対応したSSDが用いられる。
データ転送実行部30は、独立したモジュールとしてホスト10に対してコントローラ20、バスおよびネットワークを経由して接続される構成でなくてもよい。例えば、データ転送実行部30は、ホスト10で実行されるソフトウェアまたはコントローラ20と同一のデバイスに実装される構成であってもよい。また、データ転送実行部30は、ホスト10とネットワークを介して接続された他のノードにバス、ネットワークを経由して接続されるデバイスまたは他のノード上で実行されるソフトウェアであってもよい。
記憶媒体40は、コントローラ20を介さずにホスト10と接続された記憶装置である。記憶媒体40は、ホストとネットワークを介して接続されたノードにバスやネットワークを介して直接アクセスが可能な状態で接続されていてもよい。記憶媒体40は、例えば、NAND Flashのような不揮発性メモリによって構成されるSSDや、DRAMまたはその他のメモリによって構成されるDIMM(Dual Inline Memory Module)のような記憶装置である。記憶媒体40にはHDD等の記憶装置またはそれらの記憶装置との組み合わせによって構成されていてもよい。また、記憶媒体40は、複数の記憶装置によって構成されていてもよい。
仮想記憶媒体100は、コントローラ20によって記憶媒体40の記憶領域をマッピングすることで構築されている。また、アプリケーション実行部12から仮想記憶媒体100対するアクセス要求はコントローラ20が受け取り、データ転送実行部30によって仮想記憶媒体100のアクセス領域に対応する記憶媒体40の記憶領域へのアクセス処理が実行される。
本実施形態の計算機システムの動作について説明する。図7は、本実施形態の計算機システムにおいて、ホスト10のメモリ11と、記憶媒体40間でデータ転送を行う際のコントローラ20の動作フローを示した図である。また、図8は、本実施形態の計算機システムにおいて、ホスト10のメモリ11と、記憶媒体40間でデータ転送を行う際のデータ転送実行部30の動作フローを示した図である。また、図9および図10は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
ホスト10のアプリケーション実行部12は、各処理を実行する際に仮想記憶媒体100へのアクセスが必要になると、仮想記憶媒体100へのアクセス要求をコントローラ20に送る。
ホスト10からコントローラ20に送られた仮想記憶媒体100へのアクセス要求は、アクセス要求受信部21が受信する(ステップS11)。アクセス要求には、アクセス要求の種類、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、メモリ11上のアクセス対象の領域に対応するホスト10のメモリアドレス空間上の領域を指し示すアドレスの情報が含まれている。
アクセス要求を受け取ると、アクセス要求受信部21は、仮想記憶媒体100のアクセス対象の領域を指し示すアドレスを転送ストレージ領域算出部23に送る。アクセス対象の領域のアドレスを受け取ると、転送ストレージ領域算出部23は、マッピングテーブルを参照して、転送ストレージ領域を含む記憶媒体40を特定する。また、転送ストレージ領域算出部23は、記憶媒体40における転送ストレージ領域のアドレスを計算する(ステップS12)。転送ストレージ領域算出部23は、転送ストレージ領域を含む記憶媒体40の識別子および記憶媒体40の転送ストレージ領域のアドレスの情報を転送処理内容通知部24に送る。
また、アクセス要求を受け取った際に、アクセス要求受信部21は、アプリケーション実行部12から受け取ったメモリアドレス空間上の領域のアドレスを、アクセス要求に対応する転送メモリ領域の先頭アドレスとして設定する(ステップS13)。アクセス要求受信部21は、設定した転送メモリ領域の先頭アドレスの情報と、アクセス要求の種類の情報を転送処理内容通知部24に送る。
転送処理内容通知部24は、アクセス要求受信部21がアプリケーション実行部12から受け取ったアクセス要求の情報に含まれるアクセス要求の種類と、メモリ11における転送メモリ領域の先頭アドレスを受け取る。また、転送処理内容通知部24は、転送ストレージ領域算出部23から、記憶媒体40の識別子および転送ストレージ領域のアドレスの情報を受け取る。各情報を受け取ると、転送処理内容通知部24は、アクセス要求の種類、メモリ11における転送メモリ領域の先頭アドレスデータ、記憶媒体40の識別子および転送ストレージ領域のアドレスの情報を転送処理内容通知として出力する(ステップS14)。転送処理内容通知部24から出力された転送処理内容通知は、データ転送実行部30に送られる。
データ転送実行部30は、転送処理内容通知部24から転送処理内容通知を受けとると、アクセス要求の種類を確認する(ステップS21)。アクセス要求の種類が「Read」である場合(ステップS22でYes)、データ転送実行部30は、転送処理内容通知の情報に基づいて、記憶媒体40の転送ストレージ領域からメモリ11の転送メモリ領域へのデータ転送を実行する(ステップS23)。
アクセス要求の種類が「Write」である場合(ステップS22でNo)、データ転送実行部30は、転送処理内容通知の情報に基づいてメモリ11の転送メモリ領域から記憶媒体4の転送ストレージ領域へのデータ転送を実行する(ステップS24)。
ステップS23またはステップS24の処理を完了すると、アプリケーション実行部12から仮想記憶媒体100に対するアクセス要求の処理の動作が完了する。再度、アクセス要求が行われた場合には、ステップS11からの動作が繰り返される。また、各ステップの順番は、図7および図8のフローとは異なっていてもよい。例えば、ステップS12とステップS13の処理は同時期に実行されてもよく、順序を入れ替えて実行されてもよい。また、データ転送実行部30がステップS23またはステップS24の処理の完了を、コントローラ20のアクセス要求受信部21または転送処理内容通知部24に通知して、アプリケーション実行部12に仮想記憶媒体100に対するアクセス要求の完了が通知されるようにしてもよい。
本実施形態の計算機システムでは、ホスト10から仮想記憶媒体100へのアクセス要求に基づいて、アクセス要求で指し示された仮想記憶媒体100上の記憶領域に対応する記憶媒体40上の転送ストレージ領域をコントローラ20が算出している。また、コントローラ20は、算出した記憶媒体40上の転送ストレージ領域とデータ転送の相手先となるホスト10のメモリアドレス空間上の転送メモリ領域のアドレスの情報をデータ転送実行部30に転送処理内容通知として出力している。データ転送実行部30は、転送処理内容通知を基にホスト10のメモリ11と、記憶媒体40の間でコントローラ20を介さずにデータ転送を行う。このような構成でデータ転送を行うことで、コントローラとホストや記憶媒体間でのデータ転送を行う必要がないのでコントローラの処理能力や接続バス等の帯域が律速となってデータ転送性能が低下することはない。その結果、本実施形態の計算機システムは、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上することができる。
(第3の実施形態)
本発明の第3の実施形態について図を参照して詳細に説明する。図11は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト50と、コントローラ60と、データ転送実行部70と、記憶媒体40を備えている。本実施形態の記憶媒体40の構成と機能は、第2の実施形態の同名称の装置または部位と同様である。
第2の実施形態の計算機システムは、アクセス対象となる領域の先頭のアドレスを指定することでデータ転送の対象となる記憶領域の情報が通知されている。本実施形態の計算機システムは、領域のサイズの情報によってアクセス領域の範囲の情報を通知することを特徴とする。
ホスト50の構成について説明する。ホスト50は、メモリ11と、アプリケーション実行部51を備えている。
アプリケーション実行部51は、アプリケーションプログラムを実行し各処理を行う。アプリケーション実行部51は、コントローラ60を介して仮想記憶媒体100にアクセスし、各処理を行う際に必要なデータの読み出しや処理結果の書き込みを行う。アプリケーション実行部51は、1個または複数のCPUによって構成されている。アプリケーション実行部51は、アプリケーションプログラムをCPUによって実行する構成に代えて、FPGA等のあらかじめ設定された回路を用いて各処理を実行する構成としてもよい。
アプリケーション実行部51は、仮想記憶媒体100に対するアクセス要求をコントローラ60に送る。アクセス要求は、アクセス要求の種類、仮想記憶媒体100上のアクセス対象の領域を指定するアドレス、メモリ11上のアクセス対象の領域に対応するホスト10のメモリアドレス空間上の領域を指定するアドレスおよびアクセス要求範囲によって構成されている。アクセス要求範囲には、アクセス要求の範囲を大きさで示すアクセスサイズまたはアサクセス要求の末尾を指し示すアドレスの情報が用いられる。
コントローラ60の構成について説明する。図12は、本実施形態のコントローラ60の構成を示した図である。本実施形態のコントローラ60は、アクセス要求受信部61と、マッピングテーブル記憶部62と、転送ストレージ領域算出部63と、転送処理内容通知部64と、転送領域算出制御部65を備えている。本実施形態のマッピングテーブル記憶部62の構成と機能は、第2の実施形態のマッピングテーブル記憶部22と同様である。
アクセス要求受信部61は、ホスト50のアプリケーション実行部51から仮想記憶媒体100へのアクセス要求を受け取る。アクセス要求は、第2の実施形態のアクセス要求に含まれる情報に加え、アクセス要求範囲としてアクセスサイズまたはアクセス要求の範囲の末尾を指し示すアドレスの情報が含まれている。
転送ストレージ領域算出部63は、仮想記憶媒体100上の着目点のアドレスに対応する転送ストレージ領域が含まれる記憶媒体40の識別子および転送ストレージ領域における着目点のアドレスを決定する。
転送処理内容通知部64は、アクセス要求に対応するデータ転送処理の実行内容を示す情報をデータ転送実行部70に転送処理内容通知として通知する。転送処理内容通知は、アクセス情報の種類、記憶媒体40の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよびデータ転送のサイズの組み合わせの情報によって構成されている。
転送領域算出制御部65は、アプリケーション実行部51からの仮想記憶媒体100へのアクセス要求に基づいてデータ転送実行部70に通知するデータ転送処理に必要な各情報の生成を制御する機能を有する。
転送領域算出制御部65は、アクセス要求に対応した情報として、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスの情報を受け取る。転送領域算出制御部65は、転送ストレージ領域算出部63を制御して、記憶媒体40内で各転送ストレージ領域を指し示すアドレスの範囲または先頭アドレスと領域のサイズを算出する。記憶媒体40内で各転送ストレージ領域を指し示すアドレスの範囲または先頭アドレスと領域のサイズの算出は、記憶媒体40の複数の記憶領域に分散したアクセス要求に対応する全ての転送ストレージ領域について行われる。また、転送領域算出制御部65は、各転送ストレージ領域に対応するメモリ11における転送メモリ領域のアドレスを算出する。
図13は、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスとアクセスサイズから算出される転送ストレージ領域と、転送メモリ領域の先頭アドレスの対応関係の例を示す図である。図13の例では、仮想記憶媒体100上のアクセス対象の領域であるアクセス対象領域81が、先頭から順番に記憶媒体40a、記憶媒体40b、記憶媒体40cの記憶領域81a、記憶領域82b、記憶領域82cにマッピングされている。ここで、記憶領域82a、記憶領域82bのサイズは、それぞれSa、Sbであり、アクセス要求受信部61が受け取ったメモリ11上の領域の先頭アドレスはMであるとする。このとき、記憶領域82a、記憶領域82b、記憶領域82cに対応するメモリ11の転送メモリ領域83のアドレスMa、Mb、Mcは、それぞれMa=M、Mb=M+Sa、Mc=M+Sa+Sbと計算することができる。
データ転送実行部70は、第2の実施形態のデータ転送実行部30と同様にデータ転送を実行する機能を有する。データ転送実行部70は、コントローラ60から通知された情報に基づいて、転送ストレージ領域と、転送メモリ領域との間で、通知されたアクセス要求の種類に応じたデータ転送を実行する。
本実施形態の計算機システムの動作について説明する。図14は、本実施形態の計算機システムにおいて、ホスト50のメモリ11と、記憶媒体40間でデータ転送を行う際のコントローラ60の動作フローを示した図である。また、図15は、本実施形態の計算機システムにおいて、ホスト10のメモリ11と、記憶媒体40間でデータ転送を行う際のデータ転送実行部70の動作フローを示した図である。また、図16および図17は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
ホスト50のアプリケーション実行部51は、各処理を実行する際に仮想記憶媒体100へのアクセスが必要になると、仮想記憶媒体100へのアクセス要求をコントローラ60に送る。
ホスト50からコントローラ60に送られた仮想記憶媒体100へのアクセス要求は、アクセス要求受信部61が受信する(ステップS31)。
アクセス要求は、アクセス要求の種類と、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、アクセス対象の領域のサイズと、メモリ11上のアクセス対象の領域に対応するホスト50のメモリアドレス空間上の領域を指し示すアドレスの情報を含んでいる。
アクセス要求を受け取ると、アクセス要求受信部61は、仮想記憶媒体100上のアクセス対象の領域を指し示す先頭アドレスおよびサイズ、並びに、メモリ11上のアクセス対象の領域に対応するホスト50のメモリアドレス空間上の領域のアドレスの情報を転送領域算出制御部65に送る。
各情報を受け取ると、転送領域算出制御部65は、転送ストレージ領域、転送メモリ領域における着目点を表すオフセットを0に設定して初期化する。また、データ転送実行部70に対して通知を行うデータ転送対象のリストを空に初期化する(ステップS32)。
また、転送領域算出制御部65は、仮想記憶媒体100におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、仮想記憶媒体100上の着目点のアドレスを算出する(ステップS33)。
仮想記憶媒体100上の着目点のアドレスを算出すると、転送領域算出制御部65は、仮想記憶媒体100上の着目点のアドレスを転送ストレージ領域算出部63に通知する。仮想記憶媒体100上の着目点のアドレスの情報を受け取ると、転送ストレージ領域算出部63は、対応する転送ストレージ領域が含まれる記憶媒体40の識別子および転送ストレージ領域における着目点のアドレスを決定する(ステップS34)。転送ストレージ領域算出部63は、記憶媒体40の識別子および転送ストレージ領域における着目点のアドレスの情報を転送領域算出制御部65に送る。
転送ストレージ領域における着目点のアドレスの情報等を受け取ると、転送領域算出制御部65は、ホスト50のメモリアドレス空間におけるアクセス対象の領域の先頭アドレスにオフセットの値を加える。アクセス対象の領域の先頭アドレスにオフセットの値を加えると、転送領域算出制御部65は、ホスト50のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する(ステップS35)。
メモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出すると、転送領域算出制御部65は、マッピングテーブルを参照して、仮想記憶媒体100上の着目点のアドレスから連続領域にマッピングされるサイズを算出する。
連続領域にマッピングされるサイズを算出する際に、転送領域算出制御部65は、始めに、着目点のアドレスと、対応するマッピングエントリの論理アドレスの差分を計算する。次に、転送領域算出制御部65は、計算した差分を対応するマッピングエントリのマッピングサイズから差し引くことで、連続領域にマッピングされるサイズを算出する(ステップS36)。
連続領域にマッピングされるサイズを算出すると、転送領域算出制御部65は、アクセス対象の領域のサイズからオフセットを差し引いた値を算出し、計算した連続領域にマッピングされるサイズと比較する。転送領域算出制御部65は、アクセス対象の領域のサイズからオフセットを差し引いた値と、計算した連続領域にマッピングされるサイズのうち最小の値をデータ転送のサイズとする(ステップS37)。転送領域算出制御部65は、記憶媒体40の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよびデータ転送のサイズの組み合わせの情報をデータ転送対象のリストに追加する(ステップS38)。
また、転送領域算出制御部65は、連続した領域にマッピングされるサイズの値をオフセットの値に加える(ステップS39)。オフセットの値がアクセス要求受信部61から受け取ったアクセス対象の領域のサイズ未満の場合(ステップS40でNo)、転送領域算出制御部65は、ステップS33からの処理を再度、実行する。
オフセットの値がアクセス要求受信部61から受け取ったアクセス対象の領域のサイズ以上の場合(ステップS40でYes)、転送領域算出制御部65は、転送処理内容通知部64に転送処理内容通知の出力を要求する。
転送処理内容通知部64は、アクセス要求受信部61から受け取るアクセス要求の種類、転送領域算出制御部65から受け取るデータ転送対象のリストおよびサイズの情報を転送処理内容通知としてデータ転送実行部70通知する(ステップS41)。
データ転送実行部70は、転送処理内容通知を受け取ると(ステップS51)、アクセス要求の種類を確認する。アクセス要求の種類が「Read」である場合(ステップS52でYes)、データ転送実行部70は、データ転送処理の情報に基づいて、記憶媒体4の転送ストレージ領域からメモリ11の転送メモリ領域へのデータ転送を実行する(ステップS53)。
アクセス要求の種類が「Write」である場合(ステップS52でNo)、データ転送実行部70は、データ転送処理の情報に基づいて、メモリ11の転送メモリ領域から記憶媒体40の転送ストレージ領域へのデータ転送を実行する(ステップS54)。
ステップS53またはステップS54の処理を完了すると、アプリケーション実行部52から仮想記憶媒体100に対するアクセス要求の処理の動作が完了する。ステップS31からS53またはS54の処理順序は、図14および図15に示した順序とは異なっていてもよい。例えば、ステップS33からS34、ステップS35およびステップS36の各処理は同時期に実行されてもよく、また、順序を入れ替えて実行してもよい。また、データ転送実行部70がS53またはS54の処理の完了を、コントローラ60のアクセス要求受信部61または転送処理内容通知部64に通知して、アプリケーション実行部51に仮想記憶媒体100に対するアクセス要求の完了が通知されるようにしてもよい。
本実施形態の計算機システムは、第2の実施形態と同様の効果を有する。また、本実施形態の計算機システムは、ホスト50から仮想記憶媒体100へのアクセス要求を行う際に、アクセス対象領域のサイズを示すアクセスサイズの情報を付加して行っている。そのため、コントローラ60におけるデータ転送に関する各処理をより効率的に行うことができる。
RAIDを実現するコントローラは、ハードウェアとソフトウェアのいずれによる実装も可能である。しかし、ソフトウェアによる実装では、通常、RAIDコントローラを実行するOSの起動後に初期化を行うまでの間は、仮想記憶媒体に対するアクセスをホストに提供することができない。そのため、例えば、OSの起動ドライブのように、システムの動作開始前から仮想記憶媒体に対するアクセスが必要となる場合は、ハードウェアで実装されたRAIDコントローラが用いられる。
また、ハードウェアのコントローラは、ソフトウェアによるコントローラに比べて、OSのタスクスイッチに伴うオーバーヘッドを低減することができる。例えば、OS上で複数のVM(Virtual Machine)が動作して仮想記憶媒体を共有する環境においては、ソフトウェアのコントローラを用いた場合は、アクセス処理においてVMからコントローラが動作するOSに対するタスクスイッチが発生する。一方、ハードウェアのコントローラを用いると、各VMから直接、コントローラにアクセス要求を送ることで、タスクスイッチの発生を回避できる。
RAIDを実現するコントローラは、ホストに対して仮想記憶媒体として動作するため、ホストから仮想記憶媒体に対するアクセス要求に応じて、ホストとコントローラとの間でアクセス要求に対応するデータの転送が行われる。また、コントローラはホストから仮想記憶媒体に対するアクセス要求に応じて、マッピング先の記憶領域を持つ記憶媒体にアクセスを行い、ホストと記憶媒体との間でデータの転送を行う。
そのため、ハードウェアのコントローラによって仮想記憶媒体として実現されるストレージのデータ転送性能は、コントローラの接続帯域による制約を受ける。データ転送性能は、RIAD0の場合はストライピングに使用する記憶媒体の数量に比例する。また、RAID1の場合においても、Read処理を複数の記憶媒体に分散すると、Readのデータ転送性能が記憶媒体の数量に比例して増加する。特に、近年の計算機システムでは、HDDに代わりより高性能なSSDが記憶媒体として用いられるが、HDDに比べSSDでは少量の記憶媒体でコントローラの接続帯域を上回る可能性が高い。よって、コントローラの接続帯域がデータ転送におけるボトルネックとなり得る。
また、ストレージのデータ転送性能は、ハードウェアのコントローラの処理性能による制約を受ける。コントローラの接続帯域によるボトルネックは、ホストとコントローラを接続するバスやネットワークの帯域の拡張で緩和できる。一方で、接続帯域の拡張や使用する記憶媒体の性能向上や数量増加に伴い、コントローラのデータ転送処理の負荷は、増加している。その結果、コントローラの処理能力をデータ転送処理の負荷が上回ることで、コントローラの処理能力についてもデータ転送におけるボトルネックとなる。また、コントローラを接続するバスやネットワークの拡張やコントローラの処理能力の向上は、コストの増加や構成の複雑化を生じさせる。
各実施形態の計算機システムは、これらのボトルネックを解消するため、ホストとストレージである仮想記憶媒体を構成する各記憶媒体との間で、コントローラを介さずにデータ転送を行っている。そのような構成とすることで、本実施形態の計算機システムは、コントローラの接続帯域や性能に制限されずに、アクセス要求を行うホスト上のプログラムやデバイスから透過にストレージのデータ転送性能が向上している。
本実施形態の計算機システムでは、コントローラと記憶媒体のそれぞれが独立にホスト上のコントローラ以外のハードウェアまたはソフトウェアからアクセス可能な状態で接続されている。すなわち、コントローラは、仮想記憶媒体を構成する物理的な各記憶媒体を隠蔽せず、コントローラ以外から各記憶媒体に対するアクセスを許容している。
ホストのアプリケーション実行部は、仮想記憶媒体に対するアクセス要求をコントローラに対して行う。アクセス要求は、ReadまたはWriteのいずれであるかを示すアクセス要求の種類と、仮想記憶媒体上のアクセス対象の領域を指し示すアドレスと、メモリアドレス空間上の領域を指し示すアドレスの情報によって構成されている。仮想記憶媒体上のアクセス対象の領域を指し示すアドレスは、例えば、LBA(Logical Block Address)の形式で表される。
コントローラは、ホストから受け取るアクセス要求に基づいて、仮想記憶媒体上のアクセス対象の領域を指し示すアドレスから、格納先となる記憶媒体と記憶媒体内の領域を指し示すアドレスを、転送ストレージ領域として特定する。格納先である記憶媒体およびアドレスは、コントローラがRAID等によって管理する仮想記憶媒体のアドレス空間に対する各記憶媒体のマッピングの情報から算出することができる。また、転送ストレージ領域が複数の記憶媒体、記憶領域に跨る場合には、コントローラは、各転送ストレージ領域の特定を行うと共に、アクセス対象の領域全体において対応する位置を表すオフセットを計算する。
また、コントローラは、ホストからのアクセス要求において受信した、ホストのメモリアドレス空間上の領域を指し示すアドレスから、各転送ストレージ領域に対応するホストのメモリアドレス空間上のアドレスを、転送メモリ領域としてオフセットを用いて計算する。各転送ストレージ領域に対応する転送メモリ領域が断片化している場合は、コントローラは、各断片に対応するホストのメモリアドレス空間上のアドレスを、オフセットを用いて計算する。
コントローラは、アクセス対象の領域に対応する転送ストレージ領域と転送メモリ領域の対を、アクセス要求の種類と共に実際のアクセス処理であるホストのメモリと記憶媒体との間のデータ転送を行うモジュールに通知する。データ転送を行うモジュールは、コントローラからの通知に基づいて、転送ストレージ領域として指定された記憶媒体とホストのメモリアドレス空間上の領域との間で、コントローラを経由せずにデータ転送を実行する。コントローラを経由せずにデータ転送を実行する手段としては、例えば、記憶媒体とメモリアドレス空間上の領域との間で行うDMA転送が用いられる。
データ転送を行う際に、仮想記憶媒体に対するアクセス要求の処理段階では、コントローラにおいてホストから隠蔽された状態で実行される。一方でデータ転送処理では、データ転送を行うモジュールによる制御によって、ホストから透過かつボトルネックとなるコントローラを経由せずにデータ転送が行われる。また、データ転送を行うモジュールから、コントローラに対して各データ転送処理の完了を通知して、アクセス要求に対応する全てのデータ転送が完了した段階で、コントローラからホストに対して仮想記憶媒体のアクセスの完了を通知することもできる。
上記のような構成とすることで、仮想的な記憶領域に対するアクセスを提供するコントローラが原因となるボトルネックをホストから透過に解消して、アクセス性能の向上を実現することができる。
第2の実施形態および第3の実施形態におけるコントローラおよびデータ転送実行部で実行される各処理は、コンピュータプログラムをコンピュータで実行することによって行われてもよい。図18は、コントローラおよびデータ転送実行部で実行される各処理を行うコンピュータプログラムを実行するコンピュータ90の構成の例を示したものである。コンピュータ90は、CPU91と、メモリ92と、記憶装置93と、I/F(Interface)部94を備えている。
CPU91は、記憶装置93から各処理を行うコンピュータプログラムを読み出して実行する。メモリ92は、DRAM等によって構成され、CPU91が実行するコンピュータプログラムや処理中のデータが一時保存される。記憶装置93は、CPU91が実行するコンピュータプログラム、処理結果および外部から取得した情報等が保存される。記憶装置93は、例えば、不揮発性の半導体記憶装置によって構成されている。記憶装置93には、HDD等の他の記憶装置が用いられてもよい。I/F部94は、ホストや記憶媒体等の他の装置との間でデータの入出力を行うインタフェースである。I/F部94は、アクセス要求やデータ転送処理通知の入出力、および、ホストや記憶媒体間におけるデータ転送処理における制御信号の入出力を行うインタフェースとして機能する。
また、各処理に行うコンピュータプログラムは、記録媒体に格納して頒布することもできる。記録媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記録媒体としては、CD-ROM(Compact Disc Read Only Memory)やDVD(Digital Versatile Disc)などの光ディスクを用いることもできる。不揮発性の半導体メモリを記録媒体として用いてもよい。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
[付記1]
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信するアクセス要求受信手段と、
前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を特定する格納先特定手段と、
前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知手段と
を備えることを特徴とするコントローラ。
[付記2]
前記アクセス要求受信手段は、前記第2のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする付記1に記載のコントローラ。
[付記3]
前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知手段をさらに備えることを特徴とする付記1または2に記載のコントローラ。
[付記4]
前記格納先特定手段は、前記第1のアドレス情報に対応する前記記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第3のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第4のアドレス情報を前記第2のアドレス情報を基に特定することを特徴とする付記1から3いずれかに記載のコントローラ。
[付記5]
付記1から4いずれかに記載のコントローラと、
前記コントローラの要求に基づいて、仮想的な記憶領域のデータを保存している記憶媒体と、前記ホストとの間で前記コントローラを介さずにデータ転送を行うデータ転送手段を有するデータ転送手段と
を備え、
前記データ転送手段は、前記コントローラから出力される前記転送処理内容通知に基づいて、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間で、前記コントローラを介さずにデータ転送を行うことを特徴とする計算機システム。
[付記6]
前記データ転送手段は、前記コントローラの前記格納先特定手段から通知された記憶媒体に対して、前記第2のアドレス情報および前記第3のアドレス情報を通知し、前記第2のアドレス情報が示す前記ホストのメモリアドレス空間上の領域と、前記記憶媒体上の前記第3のアドレス情報が指し示す記憶領域との間における、DMA転送に基づくデータ転送を制御することを特徴とする付記5に記載の計算機システム。
[付記7]
アプリケーションプログラムを実行する実行手段と、前記アプリケーションプログラムを実行する際に必要なデータを一時的に記憶する記憶手段とを備えるホストと、
前記ホストと直接またはネットワークを介して接続され、データを非一時的に記憶する手段を備える記憶媒体と
をさらに備え、
前記コントローラは前記ホストに接続され、
前記コントローラは、前記ホストと前記記憶媒体に間でデータ転送を行うことを特徴とする付記5または6に記載の計算機システム。
[付記8]
前記仮想的な記憶領域へのアクセスの要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する前記記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを前記ホストから受信し、
前記第1のアドレス情報に基づいて、記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を特定し、
前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力し、
前記データ転送要求に基づいて、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間で直接、データ転送を行うことを特徴とするデータ転送方法。
[付記9]
前記第1のアドレス情報に対応する記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに第3のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第4のアドレス情報を前記第2のアドレス情報を基に特定することを特徴とする付記8に記載のデータ転送方法。
[付記10]
前記第2のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする付記9に記載のデータ転送方法。
[付記11]
前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知することを特徴とする付記8または10いずれかに記載のデータ転送方法。
[付記12]
接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する前記記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信するアクセス要求受信処理と、
前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定する格納先特定処理と、
前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知処理と
をコンピュータに実行させることを特徴とする転送制御プログラム。
[付記13]
前記アクセス要求受信処理において、前記第2のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信する処理コンピュータに実行させることを特徴とする付記12に記載の転送制御プログラム。
[付記14]
前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知処理をさらにコンピュータに実行させることを特徴とする付記12または13に記載の転送制御プログラム。
[付記15]
前記格納先特定処理において、前記第1のアドレス情報に対応する前記記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第3のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第4のアドレス情報を前記第2のアドレス情報を基に特定する処理をコンピュータに実行させることを特徴とする付記12から14いずれかに記載の転送制御プログラム。
1 アクセス要求受信手段
2 格納先特定手段
3 転送処理内容通知手段
10 ホスト
11 メモリ
12 アプリケーション実行部
20 コントローラ
21 アクセス要求受信部
22 マッピングテーブル記憶部
23 転送ストレージ領域算出部
24 転送処理内容通知部
30 データ転送実行部
40 記憶媒体
40a 記憶媒体
40b 記憶媒体
40c 記憶媒体
41 記憶領域
42 記憶領域
43 転送ストレージ領域
50 ホスト
51 アプリケーション実行部
60 コントローラ
61 アクセス要求受信部
62 マッピングテーブル記憶部
63 転送ストレージ領域算出部
64 転送処理内容通知部
70 データ転送実行部
81 アクセス対象領域
82a 記憶領域
82b 記憶領域
82c 記憶領域
83 転送メモリ領域
90 コンピュータ
91 CPU
92 メモリ
93 記憶装置
94 I/F部
100 仮想記憶媒体
200 マッピングエントリ
201 論理アドレス
202 記憶媒体識別子
203 物理アドレス
204 マッピングサイズ

Claims (10)

  1. 接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信するアクセス要求受信手段と、
    前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を特定する格納先特定手段と、
    前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知手段と
    を備えることを特徴とするコントローラ。
  2. 前記アクセス要求受信手段は、前記第2のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする請求項1に記載のコントローラ。
  3. 前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知手段をさらに備えることを特徴とする請求項1または2に記載のコントローラ。
  4. 前記格納先特定手段は、前記第1のアドレス情報に対応する前記記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第3のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第4のアドレス情報を前記第2のアドレス情報を基に特定することを特徴とする請求項1から3いずれかに記載のコントローラ。
  5. 請求項1から4いずれかに記載のコントローラと、
    前記コントローラの要求に基づいて、仮想的な記憶領域のデータを保存している記憶媒体と、前記ホストとの間で前記コントローラを介さずにデータ転送を行うデータ転送手段を有するデータ転送手段と
    を備え、
    前記データ転送手段は、前記コントローラから出力される前記転送処理内容通知に基づいて、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間で、前記コントローラを介さずにデータ転送を行うことを特徴とする計算機システム。
  6. 前記データ転送手段は、前記コントローラの前記格納先特定手段から通知された記憶媒体に対して、前記第2のアドレス情報および前記第3のアドレス情報を通知し、前記第2のアドレス情報が示す前記ホストのメモリアドレス空間上の領域と、前記記憶媒体上の前記第3のアドレス情報が指し示す記憶領域との間における、DMA転送に基づくデータ転送を制御することを特徴とする請求項5に記載の計算機システム。
  7. アプリケーションプログラムを実行する実行手段と、前記アプリケーションプログラムを実行する際に必要なデータを一時的に記憶する記憶手段とを備えるホストと、
    前記ホストと直接またはネットワークを介して接続され、データを非一時的に記憶する手段を備える記憶媒体と
    をさらに備え、
    前記コントローラは前記ホストに接続され、
    前記コントローラは、前記ホストと前記記憶媒体に間でデータ転送を行うことを特徴とする請求項5または6に記載の計算機システム。
  8. 前記仮想的な記憶領域へのアクセスの要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する前記記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを前記ホストから受信し、
    前記第1のアドレス情報に基づいて、記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を特定し、
    前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力し、
    前記データ転送要求に基づいて、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間で直接、データ転送を行うことを特徴とするデータ転送方法。
  9. 前記第1のアドレス情報に対応する記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに第3のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第4のアドレス情報を前記第2のアドレス情報を基に特定することを特徴とする請求項8に記載のデータ転送方法。
  10. 接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する前記記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信するアクセス要求受信処理と、
    前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定する格納先特定処理と、
    前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知処理と
    をコンピュータに実行させることを特徴とする転送制御プログラム。
JP2018044854A 2018-03-13 2018-03-13 コントローラおよびデータ転送方法 Pending JP2019159735A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018044854A JP2019159735A (ja) 2018-03-13 2018-03-13 コントローラおよびデータ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018044854A JP2019159735A (ja) 2018-03-13 2018-03-13 コントローラおよびデータ転送方法

Publications (1)

Publication Number Publication Date
JP2019159735A true JP2019159735A (ja) 2019-09-19

Family

ID=67993978

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018044854A Pending JP2019159735A (ja) 2018-03-13 2018-03-13 コントローラおよびデータ転送方法

Country Status (1)

Country Link
JP (1) JP2019159735A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007537616A (ja) * 2003-12-11 2007-12-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送エラー検査
WO2017072827A1 (ja) * 2015-10-26 2017-05-04 株式会社日立製作所 計算機システム、及び、アクセス制御方法
US20170132172A1 (en) * 2015-06-08 2017-05-11 Excelero Storage Ltd. System and method for providing a client device seamless access to a plurality of remote storage devices presented as a virtual device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007537616A (ja) * 2003-12-11 2007-12-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送エラー検査
US20170132172A1 (en) * 2015-06-08 2017-05-11 Excelero Storage Ltd. System and method for providing a client device seamless access to a plurality of remote storage devices presented as a virtual device
WO2017072827A1 (ja) * 2015-10-26 2017-05-04 株式会社日立製作所 計算機システム、及び、アクセス制御方法

Similar Documents

Publication Publication Date Title
JP6544386B2 (ja) ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム
US9760497B2 (en) Hierarchy memory management
US20230409473A1 (en) Namespace change propagation in non-volatile memory devices
US20200050385A1 (en) Virtualizing Isolation Areas of Solid-State Storage Media
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
JP6540363B2 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
JP2016513846A (ja) ネットワークを介したメモリー共有
JP2020004186A (ja) 情報処理システム、管理装置および制御方法
WO2018051505A1 (ja) ストレージシステム
JP7227907B2 (ja) バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置
JP2012212192A (ja) 仮想マシンのための仮想ストレージを有するホストサーバ
US10437478B1 (en) Replication based on a differential multiple write command
JP2021149374A (ja) データ処理装置
WO2019244656A1 (ja) ストレージ装置
JP7067256B2 (ja) データ転送装置およびデータ転送方法
US20160283134A1 (en) Data replication across host systems via storage controller
JP2007323557A (ja) ディスクアレイ装置及びその負荷分散方法
JP2019159735A (ja) コントローラおよびデータ転送方法
US11003378B2 (en) Memory-fabric-based data-mover-enabled memory tiering system
JP7251056B2 (ja) コントローラ、計算機システム、データ転送方法および転送制御プログラム
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
JP2018113075A (ja) 情報処理装置
JP7000712B2 (ja) データ転送装置およびデータ転送方法
US20230342049A1 (en) Reading a master boot record for a namespace using a regular read operation
US20230315316A1 (en) Reading a master boot record for a namespace after reformatting the namespace

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211022

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220707

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20221115