JP7242928B2 - ストレージシステム及び入出力制御方法 - Google Patents

ストレージシステム及び入出力制御方法 Download PDF

Info

Publication number
JP7242928B2
JP7242928B2 JP2022022520A JP2022022520A JP7242928B2 JP 7242928 B2 JP7242928 B2 JP 7242928B2 JP 2022022520 A JP2022022520 A JP 2022022520A JP 2022022520 A JP2022022520 A JP 2022022520A JP 7242928 B2 JP7242928 B2 JP 7242928B2
Authority
JP
Japan
Prior art keywords
data
memory
arithmetic unit
storage
processing
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.)
Active
Application number
JP2022022520A
Other languages
English (en)
Other versions
JP2022059647A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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
Priority claimed from JP2020019794A external-priority patent/JP7028902B2/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2022022520A priority Critical patent/JP7242928B2/ja
Publication of JP2022059647A publication Critical patent/JP2022059647A/ja
Application granted granted Critical
Publication of JP7242928B2 publication Critical patent/JP7242928B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、ストレージシステムに関する。
ストレージシステムは、コントローラと複数の記憶ドライブを有する。コントローラは、バックエンドスイッチを介して複数の記憶ドライブと接続される。コントローラ及び記憶ドライブとの間の通信規格としては、一般的に、SAS(Serial Attached SCSI)が用いられる。SASの通信路には、各プロトコルの通信処理を行う専用のインタフェースが必要となる。SASの通信路を有するストレージシステムは、不正なデータの書き込み等を防止できるため、高い信頼性を実現できる。
近年、新たな通信規格の一つとして、Non-Volatile Memory Express(NVMe)が用いられている。NVMeを採用したストレージシステムでは、コントローラと記憶ドライブとがPCI Expressバス(PCIeバス)(PCI Express及びPCIeは登録商標、以下同じ)を介して接続される。記憶ドライブはコントローラに含まれるメモリに直接アクセスできる。NVMeを用いることによってSASプロトコルの処理が不要になるため、IO処理の性能を向上させることが期待できる。
NVMeを採用したストレージシステムでは、SASプロトコルのような信頼性を確保するための制御が行われないため、記憶ドライブからの不正データの転送を抑止することができない。これに対して、特許文献1に記載の技術が知られている。
特許文献1には、キャッシュ領域に対する不正なデータの書き込みによるデータの破壊を回避するために、必要に応じてIOページテーブルを書き換えて記憶ドライブからのアクセスを制御する方法が記載されている。
国際公開第2017/195324号
特許文献1に記載の制御を用いたデータの読出処理では、コントローラが、バッファデータエリアへデータを書き込むように記憶ドライブを制御し、その後、バッファデータエリアからキャッシュエリアにデータを書き込んだ後、ホストにデータを送信する。
前述のような処理では、読出処理においてメモリへのデータの書き込みが2回行われており、メモリ帯域の消費量が多いという課題がある。したがって、データ転送の高速化が阻害される。
本発明は、信頼性が高く、かつ、データ転送が高速なストレージシステムを実現することを目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、入出力要求を受け、データ入出力処理を行う第1演算装置、及び前記第1演算装置に接続される第1メモリを有するコントローラと、第2演算装置、及び前記第2演算装置に接続される第2メモリを有するアクセラレータと、データを記憶する複数の記憶ドライブと、を備えるストレージシステムであって、前記第1演算装置は、データの読み出しを前記記憶ドライブに指示し、前記記憶ドライブは、前記データを読み出して、前記第2メモリに格納し、前記第2演算装置は、前記第2メモリに格納されたデータに対して、オプション処理として前記データの誤りを確認するための処理及び前記データを加工するための処理の少なくともいずれかを実行し、前記第1メモリに格納し、前記第1演算装置は、前記第1メモリに格納されたデータを、前記データにかかる読出要求の要求元に送信する。
本発明によれば、信頼性が高く、かつ、データ転送が高速なストレージシステムを実現できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1の計算機システムの構成の一例を示す図である。 実施例1のメモリ空間管理テーブルの一例を示す図である。 実施例1のメモリアクセス許可テーブルの一例を示す図である。 実施例1のストレージコントローラが実行する初期化処理の一例を説明するフローチャートである。 実施例1のストレージシステムがドライブからユーザデータを読み出す場合に実行する処理の流れを説明するシーケンス図である。 実施例1のストレージコントローラがドライブに格納されるデータを読み出す場合に実行する処理の一例を説明するフローチャートである。 実施例1のストレージコントローラがドライブから読出結果を受信した場合に実行する処理の一例を説明するフローチャートである。 実施例1のアクセラレータが転送指示を受信した場合に実行する処理の一例を説明するフローチャートである。
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
図1は、実施例1の計算機システムの構成の一例を示す図である。
計算機システムは、ストレージシステム100及びホスト端末101から構成される。ストレージシステム100は、ネットワーク102を介してホスト端末101と接続する。なお、計算機システムは、複数のストレージシステム100を含んでもよい。この場合、各ストレージシステム100は図示しないネットワークを介して互いに接続される。
ネットワーク102は、例えば、SAN(Storage Area Network)、LAN(Local Area Network)、及びWAN(Wide Area Network)である。ネットワーク102の接続方式は無線及び有線のいずれでもよい。
ホスト端末101は、ストレージシステム100が提供する記憶領域にデータを書き込み、また、記憶領域からデータを読み出す計算機である。ホスト端末101は、図示しない、プロセッサ、メモリ、及びインタフェースを有する。
ストレージシステム100は、ホスト端末101に記憶領域を提供する。ストレージシステム100は、複数のストレージコントローラ110、複数のアクセラレータ120、及び複数のドライブ130を有する。ストレージコントローラ110間は、PCIeバスを介して接続される。ストレージコントローラ110及びアクセラレータ120の間は、PCIeバスを介して接続される。また、アクセラレータ120及びドライブ130の間は、PCIeバスを介して接続される。
ドライブ130は、ホスト端末101が使用する記憶領域を提供する装置である。実施例1のドライブ130は、NVMeのプロトコルに準拠した処理を行うNVMeドライブである。なお、ドライブ130にはSATAドライブ等が含まれてもよい。また、2つのCTLと接続しているPCIExpress Switchに接続したシングルポート NVMe SSDでもよいし、可用性が高いデュアルポート NVMe SSDでもよい。
ストレージコントローラ110は、ストレージシステム100の制御を行うハードウェアである。ストレージコントローラ110は、プロセッサ111、メモリ112、及びホストインタフェース113を有する。
プロセッサ111は、各種演算を行うハードウェアである。プロセッサ111は、メモリ112に格納されるプログラムを実行する。プロセッサ111がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部(モジュール)として動作する。
プロセッサ111は、図示しない、複数のコア及びIOMMU(Input/Output Memory Management Unit)を有する。コアは、演算処理を実行するハードウェアである。IOMMUは、IOページテーブルに基づいて、PCIeバスを介してプロセッサ111と接続するアクセラレータ120及びアクセラレータ120によるメモリ112へのアクセスを制御する。
メモリ112は、DRAM(Dynamic Random Access Memory)等の揮発性の記憶素子、並びに、NAND Flash、STT-RAM(Spin Transfer Torque Random Access Memory)及びPCM(Phase-change memory)等の不揮発性の記憶素子の少なくともいずれかから構成される記憶装置である。
メモリ112には、プロセッサ111が実行するプログラム及び各種情報を格納する記憶領域と、データを格納する記憶領域とが設定される。ここで、実施例1のメモリ112の記憶領域について説明する。
メモリ112は、コントロールデータエリア140、キャッシュエリア141、及びバッファエリア142を含む。
コントロールデータエリア140は、ストレージシステム100を制御するためのプログラム及び情報を格納する記憶領域である。コントロールデータエリア140には、制御プログラム(図示省略)、制御情報150、及びIOページテーブル(図示省略)等が格納される。
制御プログラムは、ストレージシステム100の制御機能(ストレージ制御部)を実現するプログラムである。
制御情報150は、ストレージシステム100を制御するための情報である。制御情報150は、例えば、キャッシュディレクトリ、キャッシュエリア141に格納されるデータ(キャッシュデータ)を管理するためのデータ、バッファエリア142に格納されるデータ(バッファデータ)を管理するためのデータ、各種デバイスを制御するためのコマンド、及びストレージコントローラ110間で共有されるデータ等を含む。制御情報150は、RAID構成を管理するためのデータ、ホスト端末101に提供する記憶領域とドライブ130との対応関係を管理するための情報を含む。また、制御情報150は、メモリ空間管理テーブル200(図2参照)及びメモリアクセス許可テーブル300(図3参照)を含む。
IOページテーブルは、IOMMUがアクセラレータ120によるメモリ112へのアクセスを制御するために使用するテーブルである。なお、プロセッサ111は、IOMMUの設定及び更新を行うことができる。また、プロセッサ111は、IOMMUのレジスタを操作することによってIOMMUが保持するIOページテーブルを無効化し、また、IOページテーブルをキャッシュすることができる。
キャッシュエリア141は、キャッシュデータを格納する記憶領域である。キャッシュデータは、今後、ホスト端末101が読出処理を要求することが予測されるデータである。ストレージコントローラ110は事前に低速な記憶ドライブから当該データを読み出し、キャッシュデータとしてキャッシュエリア141に格納することで、ホスト端末101がストレージシステム100に対して読出要求を発行した際、ストレージコントローラ110は高速に当該データをホスト端末101に転送できる。このため、ストレージコントローラ110は、ホスト端末101からの読出要求を受信するまで、キャッシュデータを保持する必要がある。さらに、ストレージコントローラ110は、キャッシュデータが他の構成要素によって破壊されないように保護する必要がある。データの破壊には、例えば、あるキャッシュデータの格納領域に対して、ドライブ130が異なるデータを書き込むという動作が挙げられる。バッファエリア142は、バッファデータを格納する記憶領域である。バッファデータは、ストレージコントローラ110による読出処理やドライブ130の管理処理において、一時的に保持するデータである。管理処理には、例えば、ストレージコントローラ110がドライブ130から温度情報を定期的に読み出し、温度が一定以下になるよう、冷却用ファンの回転数を変更するという動作が挙げられる。バッファデータは、ストレージコントローラ110による読出処理や管理処理が完了した後に破棄される。
以上がメモリ112の記憶領域の説明である。図1の説明に戻る。
ホストインタフェース113は、ホスト端末101と接続するためのインタフェースである。ホストインタフェース113は、Ethernetアダプタ(Ethernetは登録商標)、InfiniBand、Host Busアダプタ、及びPCI Expressブリッジ等である。
アクセラレータ120は、ドライブ130からのデータの読出を制御するハードウェアである。アクセラレータ120は、専用回路121及びメモリ122を有する。
専用回路121は、各種演算を行うハードウェアである。専用回路121は、例えば、プロセッサ、GPU(Graphics Processing Unit)、及びFPGA(Field Programmable Gate Array)等である。専用回路121は、メモリ122に格納されるプログラムを実行する。専用回路121がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部(モジュール)として動作する。メモリ122は、メモリ112と同一のハードウェアである。
図2は、実施例1のメモリ空間管理テーブル200の一例を示す図である。
メモリ空間管理テーブル200は、ストレージコントローラ110の物理アドレス空間にマッピングされるDRAM空間を管理するための情報である。メモリ空間管理テーブル200は、メモリ搭載位置201、物理アドレス202、及び仮想アドレス203から構成されるエントリを含む。
メモリ搭載位置201は、メモリが搭載される位置(ハードウェア)の情報を格納するフィールドである。物理アドレス202は、物理アドレス空間のアドレスを格納するフィールドである。仮想アドレス203は、物理アドレス202に対応する物理アドレスにマッピングされる仮想アドレスを格納するフィールドである。
なお、ストレージコントローラ110のキャッシュエリア141及びバッファエリア142は別々のエントリにて管理される。
図2に示すように、本実施例では、ストレージコントローラ110のメモリ112だけではなく、アクセラレータ120のメモリ122もストレージコントローラ110の物理アドレス空間にマッピングされる。これによって、ストレージコントローラ110は、アクセラレータ120のメモリ122を自身の一部のメモリとして扱うことができる。
図3は、実施例1のメモリアクセス許可テーブル300の一例を示す図である。
メモリアクセス許可テーブル300は、ストレージコントローラ110が管理するメモリ(メモリ112、122)へのデバイスのアクセスを制御するための情報である。メモリアクセス許可テーブル300は、アクセス元301及び仮想アドレス302から構成されるエントリを含む。
アクセス元301は、メモリ112、122にアクセスするデバイスの情報を格納するフィールドである。仮想アドレス302は、アクセス元301に対応するデバイスがアクセス可能な仮想アドレスを格納するフィールドである。
図4は、実施例1のストレージコントローラ110が実行する初期化処理の一例を説明するフローチャートである。
ストレージコントローラ110は、ストレージシステム100の起動後、以下で説明する処理か処理を開始する。
ストレージコントローラ110は、メモリ空間管理テーブル200を生成する(ステップS101)。メモリ空間管理テーブル200は、計算機の起動処理における物理アドレス空間の設定処理において生成される。物理アドレス空間の設定処理は公知の技術であるため、詳細な説明は省略する。
次に、ストレージコントローラ110は、メモリアクセス許可テーブル300に、ストレージコントローラ110のエントリを追加する(ステップS102)。具体的には、以下のような処理が実行される。
(S102-1)ストレージコントローラ110は、ストレージコントローラ110自身と、他のストレージコントローラ110を特定する。
(S102-2)ストレージコントローラ110は、特定されたストレージコントローラ110の中からターゲットストレージコントローラ110を選択する。
(S102-3)ストレージコントローラ110は、ターゲットストレージコントローラ110に直接接続されるアクセラレータ120を特定する。
(S102-4)ストレージコントローラ110は、メモリアクセス許可テーブル300にエントリを追加し、追加されたエントリのアクセス元301にターゲットストレージコントローラ110に含まれるプロセッサ111の識別情報を設定する。また、ストレージコントローラ110は、追加されたエントリの仮想アドレス302に、ターゲットストレージコントローラ110に含まれるメモリ112のキャッシュエリア141に対応する仮想アドレスの行と、特定されたアクセラレータ120に含まれるメモリ122の仮想アドレスの行とを設定する。
(S102-5)ストレージコントローラ110は、特定された全てのストレージコントローラ110について処理が完了したか否かを判定する。特定された全てのストレージコントローラ110について処理が完了していない場合、ストレージコントローラ110は、(S102-2)に戻り、同様の処理を実行する。特定された全てのストレージコントローラ110について処理が完了した場合、ストレージコントローラ110はステップS102の処理を終了する。
次に、ストレージコントローラ110は、メモリアクセス許可テーブル300に、アクセラレータ120のエントリを追加する(ステップS103)。具体的には、以下のような処理が実行される。
(S103-1)ストレージコントローラ110は、アクセス可能なアクセラレータ120を特定する。
(S103-2)ストレージコントローラ110は、特定されたアクセラレータ120の中からターゲットアクセラレータ120を選択する。
(S103-3)ストレージコントローラ110は、ターゲットアクセラレータ120に直接接続されるストレージコントローラ110を特定する。
(S103-4)ストレージコントローラ110は、メモリアクセス許可テーブル300にエントリを追加し、追加されたエントリのアクセス元301にターゲットアクセラレータ120に含まれる専用回路121の識別情報を設定する。また、ストレージコントローラ110は、追加されたエントリの仮想アドレス302に、ターゲットアクセラレータ120に含まれるメモリ122の仮想アドレスの行と、特定されたストレージコントローラ110に含まれるメモリ112のキャッシュエリア141に対応する仮想アドレスの行とを設定する。
(S103-5)ストレージコントローラ110は、特定された全てのアクセラレータ120について処理が完了したか否かを判定する。特定された全てのアクセラレータ120について処理が完了していない場合、ストレージコントローラ110は、(S103-2)に戻り、同様の処理を実行する。特定された全てのアクセラレータ120について処理が完了した場合、ストレージコントローラ110はステップS103の処理を終了する。
次に、ストレージコントローラ110は、メモリアクセス許可テーブル300に、ドライブ130のエントリを追加する(ステップS104)。その後、ストレージコントローラ110は初期化処理を終了する。具体的には、以下のような処理が実行される。
(S104-1)ストレージコントローラ110は、アクセス可能なドライブ130を特定する。
(S104-2)ストレージコントローラ110は、特定されたドライブ130の中からターゲットドライブ130を選択する。
(S104-3)ストレージコントローラ110は、ストレージコントローラ110に直接接続されるアクセラレータ120を特定する。
(S104-4)ストレージコントローラ110は、メモリアクセス許可テーブル300にエントリを追加し、追加されたエントリのアクセス元301にターゲットドライブ130の識別情報を設定する。また、ストレージコントローラ110は、追加されたエントリの仮想アドレス302に、ストレージコントローラ110に含まれるメモリ122のバッファエリア142に対応する仮想アドレスの行と、特定されたアクセラレータ120に含まれるメモリ122の仮想アドレスの行とを設定する。
(S104-5)ストレージコントローラ110は、特定された全てのドライブ130について処理が完了したか否かを判定する。特定された全てのドライブ130について処理が完了していない場合、ストレージコントローラ110は、(S104-2)に戻り、同様の処理を実行する。特定された全てのドライブ130について処理が完了した場合、ストレージコントローラ110はステップS104の処理を終了する。
なお、ストレージシステム100に新たなドライブ130が追加された場合、ストレージコントローラ110は、ステップS104の処理を実行する。
図5は、実施例1のストレージシステム100がドライブ130からユーザデータ151を読み出す場合に実行する処理の流れを説明するシーケンス図である。
ストレージコントローラ110のプロセッサ111は、ユーザデータ151を格納するドライブ130に、読出指示を送信する(ステップS201)。読出指示にはアクセラレータ120に含まれるメモリ122にアクセスするためのアドレス(物理アドレス)が含まれる。
ドライブ130は、読出指示を受信した場合、当該読出指示に含まれるアドレスへユーザデータ151を書き込む(ステップS202)。このとき、ドライブ130は、データの書込先がアクセラレータ120であることを認識している必要はない。
ドライブ130は、ユーザデータ151の書き込みが完了した場合、ストレージコントローラ110に読出結果を送信する(ステップS203)。
ストレージコントローラ110のプロセッサ111は、読出結果を受信した場合、アクセラレータ120に転送指示を送信する(ステップS204)。転送指示にはストレージコントローラ110に含まれるメモリ112にアクセスするためのアドレス(物理アドレス)が含まれる。
アクセラレータ120は、転送指示を受信した場合、当該転送指示に含まれるアドレスへユーザデータ151を書き込む(ステップS205)。また、アクセラレータ120は、ユーザデータ151の書き込みが完了した場合、ストレージコントローラ110に転送結果を送信する(ステップS206)。その後、ストレージコントローラ110は、要求元に、ユーザデータ151を送信する。
図5で示すように、実施例1のストレージシステム100は、ドライブ130によるストレージコントローラ110のメモリ112へのデータの書き込みを原則禁止している。これによって、ドライブ130からの不正データの転送を抑止できるため、信頼性を高めることができる。また、データ転送において、ストレージコントローラ110のメモリ112の書込回数は1回であるため、メモリ帯域の消費量を削減している。
図6は、実施例1のストレージコントローラ110がドライブ130に格納されるデータを読み出す場合に実行する処理の一例を説明するフローチャートである。
ストレージシステム100は、外部装置から読出要求を受信した場合、又はアクセス予測に基づくデータの先読みを行う場合に以下で説明する処理を開始する。なお、外部装置は、ホスト端末101、他のストレージシステム100、及び保守用の端末等である。アクセス対象のデータは、制御情報150、ユーザデータ151、及びストレージシステム100の負荷等の状態情報等である。
プロセッサ111は、読出対象のデータがユーザデータ151であるか否かを判定する(ステップS301)。
読出対象のデータがユーザデータ151であると判定された場合、プロセッサ111は、ストレージコントローラ110のメモリ112のキャッシュエリア141に所定のサイズの領域を確保する(ステップS302)。ここで、領域の確保とは、他のプロセスからの操作を受けつけないように排他制御することを意味する。ステップS302では、以下のような処理が実行される。
(S302-1)プロセッサ111は、メモリアクセス許可テーブル300からストレージコントローラ110のエントリを検索する。
(S302-2)プロセッサ111は、検索されたエントリの仮想アドレス302のストレージコントローラ110のメモリ112に対応する行を参照する。プロセッサ111は、参照した行に基づいて、所定の範囲の仮想アドレスを選択する。このとき、仮想アドレスに対応するメモリ112の記憶領域の使用状態を確認してもよい。
(S302-3)プロセッサ111は、選択された仮想アドレスに対する排他処理を実行する。
(S302-4)プロセッサ111は、メモリ空間管理テーブル200からストレージコントローラ110のメモリ112のキャッシュエリア141のエントリを検索する。
(S302-5)プロセッサ111は、検索されたエントリに基づいて、選択された仮想アドレスに対応する物理アドレスを特定する。以上がステップS302の処理の説明である。
次に、プロセッサ111は、アクセラレータ120のメモリ122に所定のサイズの領域を確保する(ステップS303)。具体的には、以下のような処理が実行される。
(S303-1)プロセッサ111は、メモリアクセス許可テーブル300からアクセラレータ120のエントリを検索する。ここでは、ストレージコントローラ110に直接接続されるアクセラレータ120のエントリを検索するものとする。
(S303-2)プロセッサ111は、検索されたエントリの仮想アドレス302のアクセラレータ120のメモリ122に対応する行を参照する。プロセッサ111は、参照した行に基づいて、所定の範囲の仮想アドレスを選択する。このとき、仮想アドレスに対応するメモリ112の記憶領域の使用状態を確認してもよい。
(S303-3)プロセッサ111は、選択された仮想アドレスに対する排他処理を実行する。
(S303-4)プロセッサ111は、メモリ空間管理テーブル200からアクセラレータ120のエントリを検索する。
(S303-5)プロセッサ111は、検索されたエントリに基づいて、選択された仮想アドレスに対応する物理アドレスを特定する。以上がステップS303の処理の説明である。
次に、プロセッサ111は、ステップS303において特定されたメモリ122の物理アドレスを含む読出指示をドライブ130に送信する(ステップS305)。その後、プロセッサ111は処理を終了する。
ステップS301において、読出対象のデータがユーザデータ151でないと判定された場合、プロセッサ111は、ストレージコントローラ110のメモリ112のバッファエリア142に所定のサイズの領域を確保する(ステップS304)。具体的には、以下のような処理が実行される。
(S304-1)プロセッサ111は、メモリアクセス許可テーブル300からストレージコントローラ110のエントリを検索する。
(S304-2)プロセッサ111は、検索されたエントリの仮想アドレス302のストレージコントローラ110のメモリ112に対応する行を参照する。プロセッサ111は、参照した行に基づいて、所定の範囲の仮想アドレスを選択する。このとき、仮想アドレスに対応するメモリ112の記憶領域の使用状態を確認してもよい。
(S304-3)プロセッサ111は、選択された仮想アドレスに対する排他処理を実行する。
(S304-4)プロセッサ111は、メモリ空間管理テーブル200からストレージコントローラ110のメモリ112のバッファエリア142のエントリを検索する。
S304-5)プロセッサ111は、検索されたエントリに基づいて、選択された仮想アドレスに対応する物理アドレスを特定する。以上がステップS304の処理の説明である。
次に、プロセッサ111は、ステップS303において特定されたメモリ112のバッファエリア142の物理アドレスを含む読出指示をドライブ130に送信する(ステップS305)。その後、プロセッサ111は処理を終了する。
図7は、実施例1のストレージコントローラ110がドライブ130から読出結果を受信した場合に実行する処理の一例を説明するフローチャートである。
プロセッサ111は、読出対象のデータがユーザデータ151であるか否かを判定する(ステップS401)。ステップS401では、ステップS301での判定結果をそのまま用いるようにしてもよい。
読出対象のデータがユーザデータ151ではないと判定された場合、プロセッサ111は処理を終了する。
読出対象のデータがユーザデータ151ではあると判定された場合、プロセッサ111は、チェック用の情報及び加工用の情報の少なくともいずれかを生成する(ステップS402)。
ここで、チェック用の情報は、データチェックを実行するための情報である。データチェックは、ビット不正チェック及びアクセス箇所の不正チェック等である。また、加工用の情報は、データ加工を実行するための情報である。データ加工は、圧縮、伸張、及び位置情報の変換等である。位置情報の変換は、圧縮前のデータの位置情報と圧縮後のデータの位置情報の変換を意味する。
以下の説明では、データチェック及びデータ加工を区別しない場合、オプション処理とも記載する。
次に、プロセッサ111は、アクセラレータ120に転送指示を送信する(ステップS403)。その後、プロセッサ111は処理を終了する。転送指示には、チェック用の情報及び加工用の情報の少なくともいずれかと、ステップS302において確保された領域の物理アドレスとが含まれる。
図8は、実施例1のアクセラレータ120が転送指示を受信した場合に実行する処理の一例を説明するフローチャートである。
専用回路121は、転送指示に含まれる情報に基づいて、メモリ122に格納されるデータに対してオプション処理を実行する(ステップS501)。
具体的には、専用回路121は、データチェック及びデータ加工の少なくともいずれかを実行する。
次に、専用回路121は、転送指示に含まれる物理アドレスによって指定されたメモリ112の領域に、オプション処理が実行されたデータを書き込む(ステップS502)。
次に、専用回路121は、ストレージコントローラ110に転送結果を送信する(ステップS503)。
従来のデータの読出処理では、ドライブ130がバッファエリア142にデータを書き込み、プロセッサ111が、バッファエリア142からキャッシュエリア141にデータを書き込んだ後、ホスト端末101にデータを送信する。
一方、実施例1では、ドライブが、アクセラレータ120のメモリ122にデータを書き込み、アクセラレータ120がストレージコントローラ110のメモリ112にデータを書き込み、さらに、プロセッサ111がメモリ112に書き込まれたデータをホスト端末101に送信する。これによって、データの読出処理における、ドライブ130からの不正データの転送を抑止し、かつ、メモリ帯域の消費量を削減できる。
また、アクセラレータ120にデータチェック及びデータ加工のいずれかを実行させることによって、ストレージコントローラ110の処理負荷を低減するとともに、データ転送の信頼性、高速化、及びデータ容量の削減等を実現できる。
特許請求の範囲に記載した以外の発明の観点の代表的なものとして、次のものがあげられる。
(1)入出力要求を受け、データ入出力処理を行う第1演算装置と、
前記第1演算装置に接続される第1メモリと、
データを記憶する複数の記憶ドライブと、
を備えるストレージシステムであって、
第2演算装置と、
前記第2演算装置に接続される第2メモリと、
を有し、
前記第1演算装置は、データの読み出しを前記記憶ドライブに指示し、
前記記憶ドライブは、前記データを読み出して、前記第2メモリに格納し、
前記第2演算装置は、前記第2メモリに格納されたデータを、前記第1メモリに格納し、
前記第1演算装置は、前記第1メモリに格納されたデータを、前記データにかかる読出要求の要求元に送信することを特徴とするストレージシステム。
(2)(1)に記載のストレージシステムであって、
前記第1演算装置は、
前記読出要求を受ける前に、前記データの読み出しを前記記憶ドライブに指示し、
前記読出要求を受けた場合に、前記データを要求元に送信することを特徴とするストレージシステム。
(3)(2)に記載のストレージシステムであって、
前記第1メモリを前記記憶ドライブがアクセスできないようにすることで、前記記憶ドライブによる前記第1メモリ内のデータの破壊を防ぐことを特徴とするストレージシステム。
(4)(3)に記載のストレージシステムであって、
前記データを前記第2メモリから前記第1メモリに移動させるために、前記第1演算装置が前記第2演算装置に指示を送信し、
当該指示は、前記データに対するオプション処理を実行するための情報を含み、
前記第2演算装置は、
前記情報に基づいて、前記第2メモリに格納される前記データに対して前記オプション処理を実行し、
前記オプション処理が実行された前記データを前記第1メモリに書き込むことを特徴とするストレージシステム。
(5)(4)に記載のストレージシステムであって、
前記オプション処理は、前記データの誤りを確認するための処理及び前記データを加工するための処理の少なくともいずれかであることを特徴とするストレージシステム。
(6)(4)に記載のストレージシステムであって、
前記第1演算装置及び前記第1メモリは、コントローラに含まれ、
前記第2演算装置及び前記第2メモリは、アクセラレータに含まれる
ことを特徴とするストレージシステム。
(7)入出力要求を受け、データ入出力処理を行う第1演算装置と、前記第1演算装置に接続される第1メモリと、データを記憶する複数の記憶ドライブと、を備えるストレージシステムが実行する入出力制御方法であって、
前記ストレージシステムは、第2演算装置と、前記第2演算装置に接続される第2メモリと、を有し、
前記入出力制御方法は、
前記第1演算装置が、データの読み出しを前記記憶ドライブに指示する第1のステップと、
前記記憶ドライブが、前記データを読み出して、前記第2メモリに格納する第2のステップと、
前記第2演算装置が、前記第2メモリに格納されたデータを、前記第1メモリに格納する第3のステップと、
前記第1演算装置が、前記第1メモリに格納されたデータを、前記データにかかる読出要求の要求元に送信する第4のステップと、を含むことを特徴とする入出力制御方法。
(8)(7)に記載の入出力制御方法であって、
前記第1のステップでは、前記第1演算装置が、前記読出要求を受ける前に、前記データの読み出しを前記記憶ドライブに指示し、
前記第4のステップでは、前記第1演算装置が、前記読出要求を受けた場合に、前記データを要求元に送信することを特徴とする入出力制御方法。
(9)(8)に記載の入出力制御方法であって、
前記第1演算装置が、前記記憶ドライブによる前記第1メモリ内のデータの破壊を防ぐために、前記第1メモリを前記記憶ドライブがアクセスできないように制御するステップを含むことを特徴とする入出力制御方法。
(10)(9)に記載の入出力制御方法であって、
前記第2のステップは、前記第1演算装置が、前記データを前記第2メモリから前記第1メモリに移動させるために前記第2演算装置に指示を送信するステップを含み、
当該指示は、前記データに対するオプション処理を実行するための情報を含み、
前記第3のステップは、前記第2演算装置が、前記情報に基づいて、前記第2メモリに格納される前記データに対して前記オプション処理を実行するステップと、
前記第2演算装置が、前記オプション処理が実行された前記データを前記第1メモリに書き込むステップと、を含むことを特徴とする入出力制御方法。
(11)(10)に記載の入出力制御方法であって、
前記オプション処理は、前記データの誤りを確認するための処理及び前記データを加工するための処理の少なくともいずれかであることを特徴とする入出力制御方法。
(12)(10)に記載の入出力制御方法であって、
前記第1演算装置及び前記第1メモリは、コントローラに含まれ、
前記第2演算装置及び前記第2メモリは、アクセラレータに含まれることを特徴とする入出力制御方法。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
100 ストレージシステム
101 ホスト端末
102 ネットワーク
110 ストレージコントローラ
111 プロセッサ
112 メモリ
113 ホストインタフェース
120 アクセラレータ
121 専用回路
122 メモリ
130 ドライブ
140 コントロールデータエリア
141 キャッシュエリア
142 バッファエリア
150 制御情報
151 ユーザデータ
200 メモリ空間管理テーブル
300 メモリアクセス許可テーブル

Claims (8)

  1. 入出力要求を受け、データ入出力処理を行う第1演算装置、及び前記第1演算装置に接続される第1メモリを有するコントローラと、
    第2演算装置、及び前記第2演算装置に接続される第2メモリを有するアクセラレータと、
    データを記憶する複数の記憶ドライブと、
    を備えるストレージシステムであって、
    前記第1演算装置は、データの読み出しを前記記憶ドライブに指示し、
    前記記憶ドライブは、前記データを読み出して、前記第2メモリに格納し、
    前記第2演算装置は、前記第2メモリに格納されたデータに対して、オプション処理として前記データの誤りを確認するための処理及び前記データを加工するための処理の少なくともいずれかを実行し、前記第1メモリに格納し、
    前記第1演算装置は、前記第1メモリに格納されたデータを、前記データにかかる読出要求の要求元に送信することを特徴とするストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記第1演算装置は、
    前記読出要求を受ける前に、前記データの読み出しを前記記憶ドライブに指示し、
    前記読出要求を受けた場合に、前記データを要求元に送信することを特徴とするストレージシステム。
  3. 請求項2に記載のストレージシステムであって、
    前記第1メモリを前記記憶ドライブがアクセスできないようにすることで、前記記憶ドライブによる前記第1メモリ内のデータの破壊を防ぐことを特徴とするストレージシステム。
  4. 請求項3に記載のストレージシステムであって、
    前記データを前記第2メモリから前記第1メモリに移動させるために、前記第1演算装置が前記第2演算装置に指示を送信し、
    当該指示は、前記データに対する前記オプション処理を実行するための情報を含み、
    前記第2演算装置は、
    前記情報に基づいて、前記第2メモリに格納される前記データに対して前記オプション処理を実行し、
    前記オプション処理が実行された前記データを前記第1メモリに書き込むことを特徴とするストレージシステム。
  5. 入出力要求を受け、データ入出力処理を行う第1演算装置、及び前記第1演算装置に接続される第1メモリを有するコントローラと、第2演算装置、及び前記第2演算装置に接続される第2メモリを有するアクセラレータと、データを記憶する複数の記憶ドライブと、を備えるストレージシステムが実行する入出力制御方法であって、
    前記入出力制御方法は、
    前記第1演算装置が、データの読み出しを前記記憶ドライブに指示する第1のステップと、
    前記記憶ドライブが、前記データを読み出して、前記第2メモリに格納する第2のステップと、
    前記第2演算装置が、前記第2メモリに格納されたデータに対して、オプション処理として前記データの誤りを確認するための処理及び前記データを加工するための処理の少なくともいずれかを実行し、前記第1メモリに格納する第3のステップと、
    前記第1演算装置が、前記第1メモリに格納されたデータを、前記データにかかる読出要求の要求元に送信する第4のステップと、を含むことを特徴とする入出力制御方法。
  6. 請求項5に記載の入出力制御方法であって、
    前記第1のステップでは、前記第1演算装置が、前記読出要求を受ける前に、前記データの読み出しを前記記憶ドライブに指示し、
    前記第4のステップでは、前記第1演算装置が、前記読出要求を受けた場合に、前記データを要求元に送信することを特徴とする入出力制御方法。
  7. 請求項6に記載の入出力制御方法であって、
    前記第1演算装置が、前記記憶ドライブによる前記第1メモリ内のデータの破壊を防ぐために、前記第1メモリを前記記憶ドライブがアクセスできないように制御するステップを含むことを特徴とする入出力制御方法。
  8. 請求項7に記載の入出力制御方法であって、
    前記第2のステップは、前記第1演算装置が、前記データを前記第2メモリから前記第1メモリに移動させるために前記第2演算装置に指示を送信するステップを含み、
    当該指示は、前記データに対する前記オプション処理を実行するための情報を含み、
    前記第3のステップは、
    前記第2演算装置が、前記情報に基づいて、前記第2メモリに格納される前記データに対して前記オプション処理を実行するステップと、
    前記第2演算装置が、前記オプション処理が実行された前記データを前記第1メモリに書き込むステップと、を含むことを特徴とする入出力制御方法。
JP2022022520A 2020-02-07 2022-02-17 ストレージシステム及び入出力制御方法 Active JP7242928B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022022520A JP7242928B2 (ja) 2020-02-07 2022-02-17 ストレージシステム及び入出力制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020019794A JP7028902B2 (ja) 2020-02-07 2020-02-07 ストレージシステム及び入出力制御方法
JP2022022520A JP7242928B2 (ja) 2020-02-07 2022-02-17 ストレージシステム及び入出力制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2020019794A Division JP7028902B2 (ja) 2020-02-07 2020-02-07 ストレージシステム及び入出力制御方法

Publications (2)

Publication Number Publication Date
JP2022059647A JP2022059647A (ja) 2022-04-13
JP7242928B2 true JP7242928B2 (ja) 2023-03-20

Family

ID=87852777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022022520A Active JP7242928B2 (ja) 2020-02-07 2022-02-17 ストレージシステム及び入出力制御方法

Country Status (1)

Country Link
JP (1) JP7242928B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001307420A (ja) 2000-04-25 2001-11-02 Sharp Corp ディスク記録再生装置
JP2005157815A (ja) 2003-11-26 2005-06-16 Hitachi Ltd ストレージシステム及同システムにおけるデータキャッシング方法
JP2008225915A (ja) 2007-03-13 2008-09-25 Fujitsu Ltd プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法
JP2009075759A (ja) 2007-09-19 2009-04-09 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
WO2017195324A1 (ja) 2016-05-12 2017-11-16 株式会社日立製作所 ストレージ装置
JP2019174994A (ja) 2018-03-27 2019-10-10 株式会社日立製作所 ストレージシステム及びその制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001307420A (ja) 2000-04-25 2001-11-02 Sharp Corp ディスク記録再生装置
JP2005157815A (ja) 2003-11-26 2005-06-16 Hitachi Ltd ストレージシステム及同システムにおけるデータキャッシング方法
JP2008225915A (ja) 2007-03-13 2008-09-25 Fujitsu Ltd プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法
JP2009075759A (ja) 2007-09-19 2009-04-09 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
WO2017195324A1 (ja) 2016-05-12 2017-11-16 株式会社日立製作所 ストレージ装置
JP2019174994A (ja) 2018-03-27 2019-10-10 株式会社日立製作所 ストレージシステム及びその制御方法

Also Published As

Publication number Publication date
JP2022059647A (ja) 2022-04-13

Similar Documents

Publication Publication Date Title
CN111177029B (zh) 用于管理软件定义的永久性存储器的系统及方法
US10365832B2 (en) Two-level system main memory
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US10248328B2 (en) Direct data move between DRAM and storage on a memory module
JP6190045B2 (ja) 高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
US9075729B2 (en) Storage system and method of controlling data transfer in storage system
US20160232103A1 (en) Block storage apertures to persistent memory
US10552340B2 (en) Input/output direct memory access during live memory relocation
CA2738733A1 (en) System and method of providing multiple virtual machines with shared access to non-volatile solid-state memory using rdma
US10956326B2 (en) Storage system with data management and protection mechanism and method of operation thereof
KR20130112210A (ko) 메모리 시스템 및 그것의 페이지 교체 방법
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US9990311B2 (en) Peripheral interface circuit
US9734117B2 (en) Data storage device and method for integrated bridge firmware to be retrieved from a storage system on chip (SOC)
US11740799B2 (en) Storage system and input and output control method
JP7242928B2 (ja) ストレージシステム及び入出力制御方法
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US10719461B2 (en) Solid state device with distributed bit buckets
JP7067256B2 (ja) データ転送装置およびデータ転送方法
US11200172B2 (en) Storage system and method of controlling storage system
US12014080B2 (en) Memory system using host memory buffer and operation method thereof
US20230342049A1 (en) Reading a master boot record for a namespace using a regular read operation
KR20120044717A (ko) 패리티 캐시를 이용한 raid 레벨 5의 고속화를 위한 raid 제어 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220401

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221208

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: 20230221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230308

R150 Certificate of patent or registration of utility model

Ref document number: 7242928

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150