JP2020091554A - マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 - Google Patents

マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 Download PDF

Info

Publication number
JP2020091554A
JP2020091554A JP2018226940A JP2018226940A JP2020091554A JP 2020091554 A JP2020091554 A JP 2020091554A JP 2018226940 A JP2018226940 A JP 2018226940A JP 2018226940 A JP2018226940 A JP 2018226940A JP 2020091554 A JP2020091554 A JP 2020091554A
Authority
JP
Japan
Prior art keywords
read request
processor
nvme
controller
storage system
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.)
Granted
Application number
JP2018226940A
Other languages
English (en)
Other versions
JP6920001B2 (ja
Inventor
啓 池田
Hiroshi Ikeda
池田  啓
佐藤 篤
Atsushi Sato
篤 佐藤
丸山 貴史
Takashi Maruyama
貴史 丸山
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
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018226940A priority Critical patent/JP6920001B2/ja
Priority to US16/522,768 priority patent/US10895989B2/en
Priority to CN201910734663.9A priority patent/CN111273854B/zh
Publication of JP2020091554A publication Critical patent/JP2020091554A/ja
Application granted granted Critical
Publication of JP6920001B2 publication Critical patent/JP6920001B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】I/O処理するプロセッサの数が増えても、キューが枯渇することなく、I/O性能を向上させたマルチノードストレージシステムを提供する。【解決手段】マルチノードストレージシステムは、計算機に論理的な記憶領域としてボリュームを提供し、計算機からI/O要求を処理するコントローラを有するノードを複数備え、ノードのコントローラの何れかにPCI接続される複数のNVMeドライブと、複数のノードのコントローラを相互に接続するスイッチとを備え、コントローラは、計算機からのI/O要求を処理する複数のプロセッサと、メモリを有し、メモリには、複数のNVMeドライブ毎に、マルチノードストレージシステムを構成する複数のコントローラのプロセッサ数の仮想キューと、複数のNVMeドライブの何れかに対しコマンドを格納する、仮想キューの数よりも少ない、実キューと、を有する。【選択図】図3

Description

本発明は、マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法に関する。
通常、多数のプロセッサまたはプロセッサコアを有するストレージ装置においては、ドライブを処理するキュー制御を多数のプロセッサ間で排他制御しながら処理を行う必要がある。
近年、ストレージ装置の記憶媒体にフラッシュメモリをドライブに搭載した高性能なNVMeドライブを用いたストレージ装置が開発されている。このNVMeドライブでは、規格上、チャネル制御機能によりコマンドを処理するキューを、約64K個まで提供することができる。キューの排他制御を考慮し、NVMeの特徴である多くのキューを利用した高性能化を図る技術として特許文献1が挙げられる。
特許文献1には、一つの記憶デバイスに対してプロセッサ数分のキュー群を生成することで、処理の高速化を図る技術が開示されている。
国際公開2017/158799号
NVMeドライブを管理するキューは規格上64K個作成可能であるが、実際にドライブベンダーから提供されているキューの数は、128本程度である。特許文献1に記載された技術のように、一つの記憶デバイスに対してプロセッサ数分のキュー群を生成すると、キューが枯渇することが考えられる。
また、特許文献1では、どのプロセッサもNVMeドライブにPCI接続され、NVMeドライブのキューにアクセスすることが前提の技術であるが、複数のストレージ装置をネットワークで接続したマルチノードストレージシステムについては十分に考慮されていない。つまり、Software Defined Storage(SDS)、hyper converged infrastructure(HCI環境)のようなマルチノードストレージシステムでは、ドライブに対するアクセス要求を処理するプロセッサの数は、従来のストレージ装置と比較して飛躍的に増加する。このため、キューの数よりプロセッサの数が多くなる可能性があり、特許文献1を適用することができなくなる。
また、NVMeのキューはPCI接続されているプロセッサのみが操作できるため、マルチノードストレージシステムのようなネットワークに接続された他のストレージ装置のプロセッサからキューを操作することができない。そのため、I/O要求を受領したストレージ装置が、I/O要求のアクセス先となるデータを格納するドライブがPCI接続されている他のストレージ装置に、I/O要求を転送する必要がある。
つまり、転送元のストレージ装置と転送先のストレージ装置の間では、LUN等の論理アドレスを用いたI/O要求を転送する必要がある。そのため、転送元のストレージ装置でアクセス先のドライブを特定するために、LUN等の論理アドレスから実際のデータ格納先のドライブを特定するためのアドレス変換と、転送元のストレージ装置からI/O要求を受信した転送先のストレージ装置で、LUN等の論理アドレスから実際のドライブへのアドレス変換の、二つのアドレス変換が必要となる。
そこで、本発明の目的は、I/O処理するプロセッサの数が増えても、キューが枯渇することなく、I/O性能を向上させたマルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法を提供することにある。
また、本発明の他の目的は、複数のストレージ装置がネットワークを介して接続されるマルチノードストレージシステムにおいて、I/O性能を向上させたマルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法を提供することにある。
上記目的を達成するため、本発明のマルチノードストレージシステムの一態様は、計算機に論理的な記憶領域としてボリュームを提供し、計算機からI/O要求を処理するコントローラを有するノードを複数備えたマルチノードストレージシステムであって、マルチノードストレージシステムは、ノードのコントローラの何れかにPCI接続される複数のNVMeドライブと、複数のノードのコントローラを相互に接続するスイッチとを備え、コントローラは、計算機からのI/O要求を処理する複数のプロセッサと、メモリを有し、メモリには、複数のNVMeドライブ毎に、マルチノードストレージシステムを構成する複数のコントローラのプロセッサ数の仮想キューと、複数のNVMeドライブの何れかに対しコマンドを格納する、前記仮想キューの数よりも少ない、実キューと、を有する。
本発明によれば、I/O処理を行うプロセッサの数が増えても、NVMeのキューの排他制御によるI/O処理性能の低下を防止することができる。
また、マルチノードストレージシステム環境において、I/O処理性能を向上させることができる。
システム構成図である。 システムブロック図である。 代表MPによる仮想キューVSQを介したSQ(要求)と制御を説明する図である。 代表MPによる仮想キューVCQを介したCQ(応答)制御を説明する図である。 リード時の動作(ストレート)を説明する図である。 リード時の動作(クロス)を説明する図である。 キャッシュミス時(ストレート)のリードシーケンスを示す図である。 キャッシュミス時(クロス)のリードシーケンスを示す図である。 IO要求受領時のVSQ格納処理フローを示す図である。 代表MPによるVSQ刈取りとSQ(要求)格納処理フローを示す図である。 代表MPによるCQ(応答)刈取りとVCQ格納(クロス間)処理フローを示す図である。 VCQ刈取りと応答処理フローを示す図である。 キュー管理テーブルを示す図である。 ストレージ構成テーブルを示す図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、[AAAテーブル]の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、[AAAテーブル]を[AAA情報]とすることができる。
また、以下の説明では、[MP]は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、[プログラム]を動作の主体として処理を説明する場合があるが、プログラムは、MP(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)等を用いながら行うため、実際の処理の主体はMPである。従って、プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであってもよい。
<概要>
本技術は、Software Defined Storage(SDS)、hyper converged infrastructure (HCI環境)のようなマルチノードストレージシステム環境では、プロセッサ(MP)数が増加するため、NVMeドライブを制御するキューの数(本数)より、MPの数の方が多くなることが想定される。
その場合、1本のキューを複数のMPで共有することとなり、MP間でキューの操作の排他制御が必要となる。この排他制御により、I/O処理性能が低下する可能性がある。
また、NVMeドライブのキュー(SQ、CQ)は、NVMeドライブとPCIにより物理的に接続されているMPからのみ操作が可能である。そのため、複数のストレージ装置がネットワークを介して接続されるSDSやHCIのようなマルチノードストレージシステムでは、ネットワークで接続された他のストレージ装置からNVMeドライブへアクセスするためには、I/Oに含まれるアドレス情報の変換処理が必要となる。つまり、どのストレージ装置にI/Oを転送すべきか、I/Oに含まれるアドレス情報(例えば、LUN)からアクセスすべきNVMeドライブを特定するために、アドレス情報の変換処理が必要となる。
しかし、近年のストレージ装置は、多くの仮想的なアドレスレイヤによって管理されているため、I/Oに含まれるアクセス先を特定するLUN等から実際にデータが格納されているドライブへの変換処理を全てのI/O要求に対して行うと、多くの処理を要する。
全てのI/O要求に対し、アドレス変換を行うとなると処理性能が低下する恐れがある。
本技術は、これら、マルチノードストレージ環境において、NVMeドライブに設けられるキュー(SQ、CQ)とは別に、各MPに対応する仮想的なキュー(VSQ、VCQ)を設けることにより、キューの排他制御を不要とし、I/O処理性能を向上させることができる。
また、複数のストレージ装置がネットワークを介して接続されるマルチノードストレージシステムにおいて、キャッシュミスをした場合のみ、アクセス先となるNVMeドライブが接続されたストレージ装置にコマンドを転送(クロス転送)するため、I/O処理性能の向上させることができる。
<用語の説明>
NVMe(Non-Volatile Memory Express):PCI Expressを通じて不揮発性ストレージメディア(SSD)を接続するための論理デバイスインタフェース規格。
SQ(Submission Queue):NVMeドライブに対しコマンドを格納するためのキュー。
CQ(Completion Queue): NVMeドライブからの応答を格納するためのキュー。SQとCQはそれぞれ一本ずつでペアを構成する。
本明細書では、SQとCQを実キューと呼ぶ。
VSQ(Virtual Submission Queue):MP毎に割り当てられた仮想的なSQ。
VCQ(Virtual Completion Queue): MP毎に割り当てられた仮想的なCQ。
本明細書では、VSQとVCQを仮想キューと呼ぶ。
ISW(Intelligent System Switch):ストレージモジュールのコントローラ(CTL)を接続するためのスイッチ。
DKB:CTLとNVMeドライブを接続するためのボード。
MP番号:ストレージシステム内でMPを特定するための識別子。
使用VSQ/VCQ番号:MPに対して一意に割り振られるVSQ/VCQの番号。
使用SQ/CQ番号:実際にNVMeドライブとのコマンドの受け渡しを行う際に使用するSQ/CQの番号。
VSQ用producer:VSQにどこまでコマンドを格納したかを管理するためのインデックス。
VSQ用Consumer:VSQに格納されたコマンドをどこまで刈り取ったか管理するためのインデックス。
VCQ用producer:VCQにどこまでコマンドを格納したかを管理するためのインデックス。
VCQ用Consumer:VCQに格納されたコマンドをどこまで刈り取ったか管理するためのインデックス。
代表フラグ:ポーリング処理でVSQからSQ(またはCQからVCQ)に対して、代表して要求を格納するMPであることを管理するための情報。
<システム構成>
まず、本発明の一実施形態に係るマルチノードストレージシステムについて説明する。
図1は、一実施形態に係るシステム構成図である。
複数のモジュール102a、102b、103cは、インテリジェントシステムスイッチ(ISW)101を介して、相互に接続されている。一つのモジュール102には、二つのノード103が収容され、各ノード103には、二つのコントローラ104が収容されている。各コントローラ104は、ISW101を介して、同一のノード103の他のコントローラ、同一のモジュールの他のノードのコントローラ、或いは、他のモジュールのコントローラと接続される構成となる。
各コントローラは、複数のNVMeドライブ107と接続するためのボードDKB105に接続されている。複数のNVMeドライブ107は、NVMeドライブボックス106に収容され、一つ、または複数のNVMeドライブボックス106が各ノード103に接続され、一つのモジュール102を構成している。各コントローラ104は、サーバ等(図示せず)の計算機とネットワークを介して接続され、計算機からI/O要求を処理する。以下、本明細書においては、NVMeドライブを、単にドライブと略す場合がある。
モジュール102には、1つ以上のNVMeドライブボックス106が内蔵もしくは外部接続されていても良い。各ノード103は、ストレージ装置に相当し、1つ以上の論理的な記憶領域としてボリュームを計算機に対して提供している。
ボリュームは、複数の論理ブロックから構成される。本実施形態での論理ブロックサイズは、例えば、書き込み時に論理ブロックに対して物理ブロックを割り当てるThin Provisioning(容量仮想化)の管理単位と同じサイズとしている。なお、論理ブロックは、Thin Provisioningの管理単位と同じサイズでなくてもよい。ストレージデバイスであるNVMeドライブ107の記憶領域に基づいて複数の物理ブロックが形成されている。ボリュームの論理ブロックには、物理ブロックが割り当てられる。
図1に示すマルチノードストレージシステムでは、計算機とモジュール102とが別に構成されている例を示しているが、計算機とモジュール102或いはノード103とを一つのベアメタル(物理計算機)を用いて構成してもよい。例えば、計算機とノード103とのそれぞれを同一の計算機上で動作するVM(Virtual Machine)と呼ばれる仮想計算機としてもよく、コンテナ仮想化により構成されたコンテナとしてもよい。
図1には、一つのモジュールが二つのノードで構成される例を示したが、一つのモジュールに含まれるノードの数は、3以上であっても良い。また、図1には各ノードに二つのコントローラが含まれる例を示しているが、ノードに含まれるコントローラの数は、3以上であっても良い。
次に、ノード(ストレージ装置)102のハードウェア構成について説明する。
図2は、一実施形態に係るノード102(ストレージ装置)のシステムブロック図である。
ストレージ装置102は、サーバ等の計算機からのI/O要求を処理し、NVMeドライブ107にデータを格納、或いは、NVMeドライブ107からデータを読み出し、計算機に送る処理を行うコントローラ104と、1以上のNVMeドライブ107とを有する。図2では、NVMeドライブボックスと、コントローラの一つを省略している。
コントローラ104は、サーバ等の計算機201と接続する上位I/F202と、他のノードのコントローラとISW101を介してNVMeで接続するコントローラ間I/F203と、複数のプロセッサ(MP)205と、NVMeドライブ107に接続するための下位I/F206、メモリ204を有する。コントローラ間I/F203は、コントローラを同一のノード103の他のコントローラ、同一のモジュールの他のノードのコントローラ、或いは、他のモジュールのコントローラと接続する。
メモリ204には、ノードが計算機に提供するボリュームとNVMeドライブとの関係を示すストレージ構成テーブル2041、キュー管理テーブル2042、コントローラ実行する各種処理を実現するMP処理プログラム2045を格納し、VSQやVCQを設定するVSQ/VCQ領域2043、SQやCQを設定するSQ/CQ領域2044、I/Oに関するデータを一時的に記憶するキャッシュメモリとなるキャッシュメモリ領域2046を有する。
図14に、メモリ204に格納されるストレージ構成テーブル2041を示す。ストレージ構成テーブル2041には、例えば、ノードが計算機に提供するボリュームを識別するための情報であるLUN1401に対し、実際にデータが格納される、或いは格納されているNVMeドライブの番号1402を対応させて管理している。
図14では、LUNとドライブ番号が直接対応付けられているように記載されているが、実際には、LUNとドライブ番号との間に、仮想ボリュームや各ドライブの容量を管理するプール等、複数のアドレスを管理するレイヤがある場合がある。本実施の形態では、これら中間に存在する各種アドレス管理レイヤの説明を省略して、サーバ等の計算機がI/O要求で指定するLUN番号と、LUN番号を含むI/O要求を実行する場合に利用される物理的なNVMeドライブとの対応関係を必要最低限の情報としてストレージ構成テーブルを説明する。
そのため、LUNに対応してストレージ構成テーブルに示されるNVMeドライブ番号は、例えば、RAIDグループを構成するドライブと理解することもできる。また、ストレージ構成テーブルとして、複数種のRAID、EC(Eraser Coding)のデータ保護技術、二つのLUNでペアを組む、ミラーリング、RC(Remote Copy)等の、LUとドライブとの関係を管理する情報を用いることができる。
MP(Main Processor)205、メモリ204、上記I/F202、コントローラ間I/F203、下記I/F206は、例えば内部バスや外部バスで接続されている。
コントローラは、メモリに格納されたプログラムを、MP205によって実行されることで、定められた処理を、メモリに格納された各種情報を参照しながら行うため、実際の処理の主体はMPであるが、説明上、プログラムを動作の主体として説明する場合がある。その場合、各処理をMPが行う。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。
次に、図3を用いて、ノード102で実行される代表MPによる仮想キューVSQを介したSQ(要求)と制御を説明する。
ノード102は、複数のMP205、メモリ204、PCI-SW302を有し、NVMeドライブ107にアクセスする。PCI−SW302は、図2の下記I/F206とNVMeドライブ107の間に存在する。
メモリ204には仮想的なキューであるVSQとNVMeドライブに対しコマンドを格納するためのキューであるSQの領域が設けられ、各MP205に対して、仮想的なキューであるVCQ3011が割り当てられ、NVMeに従って動作する。例えば、MP番号[0]のMP205aにはVSQ番号[0]のVSQ3011a、MP番号[x]のMP205xにはVSQ番号[x]のVSQ3011cが割り当てられている。
各VSQに、NVMeドライブに対しコマンドを格納するためのキューSQ3012が対応付けられている。例えば、VSQ3011aとVSQ3011cは、SQ番号[0]のSQ3012aが対応している。
このSQ3012に格納されたコマンドは、NVMeドライブ107が刈り取って処理を行う。VSQとSQとの対応は、図13に示すドライブ毎に管理されるキュー管理テーブルによって管理されている。
図13は、キュー管理テーブルを示す図である。図13に示すキュー管理テーブル2042はNVMeドライブ毎の情報であり、複数のNVMeドライブを有するマルチノードストレージシステムにおいては、NVMeドライブ毎に複数のキュー管理テーブルを管理する。図13では、NVMeドライブの内、NVMeドライブ番号[ZZ]用のキュー管理テーブルを示している。
各MPに対してストレージシステムを通して割り振ったMP番号1301、各MPが使用するVSQ/VCQ番号1302、MPが使用する使用SQ/CQ番号1303、NVMeドライブ番号[ZZ]がPCI接続されているコントローラの情報であるNVMe接続先CTL番号1304、VSQにどこまで格納したか管理するためのインデックスであるVSQ用producer1305、VSQをどこまで刈り取ったか管理するためのインデックスであるVSQ用Consumer1306、VCQにどこまで格納したか管理するためのインデックスであるVCQ用producer1307、VCQをどこまで刈り取ったか管理するためのインデックスであるVCQ用Consumer1308、ポーリング処理でVSQからSQへ、CQからVCQに対して、要求を格納する代表MPであるかどうか示す情報である代表フラグ1309が対応して管理されている。
例えば、MP番号[0]に対し、VSQ/VCQ番号は[0]、SQ/CQ番号1303は[0]、NVMeドライブ接続先コントローラの番号1304は[0]、VSQ用producer1305は[10]、VSQ用Consumer1306は[8]、VCQ用producer1307は[6]、VCQ用Consumer1308は[4]、代表フラグ1309が[ON]が対応して管理されている。ここで、NVMe接続先コントローラ番号1304は、キュー管理テーブル2402で管理されるNVMeドライブが、コントローラに対して直接PCI接続されている場合には[0]、直接PCI接続されていない他のコントローラに接続されている場合には[1]が格納される。
コントローラ104がI/O要求を受領すると、I/O要求に含まれるLUN等の仮想的なアドレス情報から図14のストレージ構成テーブル1402を参照し、アクセス先のデータを格納するNVMeドライブを特定し、特定されたNVMeドライブの情報から、NVMeドライブ毎に管理されているキュー管理テーブル2402を参照することができる。この動作は、MP処理プログラム2045の内容を、MP205が処理することで実現する。
このように、MP毎に割り当てられた仮想的なSQであるVSQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
図4は、代表MPによる仮想キューVCQを介したCQ(応答)制御を説明する図である。
メモリ204には、仮想的なキューであるVCQとNVMeドライブからの応答を格納するためのキューであるCQの領域が設けられ、各MP205に対して一つの仮想的なキューであるVCQ4011が割り当てられている。例えば、MP番号[0]のMP205aには、VCQ番号[0]のVCP4011aが割り当てられている。
各VCQに対して、NVMeドライブからの応答を、NVMeに従って格納するためのキューCQ4012が対応付けられている。このCQ4012に格納されたコマンドは、代表MP205が刈り取って処理を行う。VCQとCQとの対応は、図13に示すドライブ毎に管理されるキュー管理テーブルによって管理されている。
このように、MP毎に割り当てられた仮想的なCQであるVCQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
<ストレート転送動作>
図5は、リード時の動作(ストレート転送)を説明する図である。ここで、ストレート転送とは、I/Oを処理するMPとI/Oのアクセス対象となるNVMeドライブ107がPCI接続されている場合をいう。
尚、VSQとVCQのペアは、マルチノードストレージシステムのコントローラに収容されるMPの数だけメモリ204に用意する。SQとCQのペアはNVMeドライブ107がPCI接続されているコントローラ104のメモリ204に用意する。ちなみに、現在入手可能なNVMeドライブ107では、SQとCQのペアは一つのNVMeドライブ107当たり、NVMeドライブ107がサポートしているキューの本数の数だけ作成可能である。
図5の点線は、NVMeに従ったデータやコマンドの動きを示す。
まず、コントローラ1(104)のMP[00]205aは、自身に割り当てられているVSQ3011aに対し、I/O要求(リード要求)コマンドをNVMeに従って格納する(501)。MP[00]205aは、上位I/FからI/O要求を引き渡されI/Oを処理するMPである。
VSQに格納されたリードコマンドは、代表MPによって刈り取られ、SQに格納(エンキュー)される(502)。代表MPは、図13に示す代表フラグが設定されているMPである。代表MPを決める処理は、後述する。
SQにエンキューされたリードコマンドは、NVMeドライブ107によって刈り取られ(503)、実行される。ドライブ107によってリードコマンドが実行され、読み出されたデータは、メモリのキャッシュメモリ領域2046に格納される(504)。NVMeドライブ107は、リード要求コマンドを実行したことを示す完了応答をCQ4012aに格納する(505)。
代表MPは、CQ4012aに格納された完了応答を、MP205a用のVCQ4011aにエンキューする(506)。MP205aは、VCQ4011aにエンキューされた完了応答を刈り取り(507)、キャッシュメモリ2046に格納されたデータを読み出す。
尚、図5はリードコマンドについて説明したが、管理用のコマンドであるAdminコマンドの場合も同様の動作となる。
<クロス転送動作>
図6は、リード時の動作(クロス)を説明する図である。クロス転送とは、リードコマンドの処理が異なるコントローラを跨ぐ動作であり、所謂他系への処理依頼動作をいう。そのため、マルチノードストレージシステムにおいては、クロス転送となる他系処理には、同一ノードの異なるコントローラの他、異なるモジュールのコントローラがI/O処理を行う場合も含まれる。
コントローラ2(104b)のMP205Cが計算機からI/O要求を受領すると、自身に割り当てられているVSQ3011(MP番号XX用)に、リードコマンドを格納する(601)。コントローラ104bの代表MPはVSPに格納されたリードコマンドを刈り取り、データを格納するNVMeドライブ107が接続されている他系コントローラ104aのVSQにクロス転送してエンキューする(602)。コントローラ104aの代表MPは、VSQに格納されたコマンドをSQにエンキューする(603)。
SQ3012に格納されたコマンドは、NVMeドライブ107によって刈り取られ(604)、実行される。NVMeドライブ107によってリードコマンドが実行され、読み出されたデータは、メモリのキャッシュメモリ領域2046に格納される(605)。NVMeドライブ107は、リード要求コマンドを実行したことを示す完了応答をCQに格納する(606)。
コントローラ1の代表MPは、CQに格納された完了応答を、MP用のVCQにエンキューする(607)。コントローラ2のVCQにクロス転送してエンキューする(608)。MP205cは、VCQにエンキューされた完了応答を刈り取り(609)、キャッシュメモリに格納されたデータを読み出す。
このように、マルチノードストレージシステムの全MPに対し、MP毎に割り当てられた仮想的なSQであるVSQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
尚、図6はリードコマンドについて説明したが、管理用のコマンドであるAdminコマンドの場合も同様の動作となる。
このように、クロス転送の際には、転送先のストレージ装置の仮想キューに対して、ネットワークで接続されるストレージ装置間のLUN等の仮想アドレスを用いたI/O要求と比較し、転送先のストレージ装置でアドレス変換を行う必要がないため、I/O処理性能を向上させることができる。
<ストレート転送シーケンス>
図7は、ストレート転送の場合であって、キャッシュミス時のリードシーケンス図である。キャッシュミス判定により、キャッシュミスの場合、図5に示す動作と同様である。本図では、図13の情報を用いながら、処理のシーケンスを説明する。
上位I/F202が計算機からリードコマンドを受領する(S701)。上位I/Fは、MP00にリードコマンドの受領を通知する(S702)。MP00はキャッシュメモリにリードコマンドで要求されているデータが自コントローラのキャッシュメモリ内にあるかヒット/ミス判定を行う(S703)。キャッシュヒットした場合、自コントローラのキャッシュメモリからデータを読み出し、計算機に応答する。
キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
キャッシュミスの場合(S704)、MP00は、リードコマンドに含まれるLUN等の仮想アドレス情報から、図14のストレージ構成テーブルを参照して、データが格納されているNVMeドライブを算出(特定)する(S705)。
MP00は自身に割り当てられているVSQに対して、リードコマンドを格納する(S706)。この際、リードコマンドを受領したMP00は、図13に示したキュー管理テーブルを参照することで、MP00に割り当てられているVSQ1302を取得することができる。尚、NVMeドライブ毎に管理されている図13のキュー管理テーブルは、図14のストレージ構成テーブルを参照して特定したNVMeドライブに基づいて、選択することができる。
アクセス先のNVMeドライブが図14のストレージ構成テーブルによって特定されると、NVMeドライブ毎に管理されているキュー管理テーブルによって、MP毎にVSQ/VCQ、SQ/CQの対応、代表MPか否か、ドライブがPCI接続されているコントローラでI/Oが処理されるかが把握できるので、当該I/Oの処理がストレート転送かクロス転送か判断できる。
各MPは、キュー管理テーブル2042をポーリングし、自身が代表MPかを判断する。図13を参照して説明すると、例えば、ポーリングしているMPのMP番号[0]であって、リードコマンドが、NVMeドライブZZをアクセス先とする場合、代表フラグ1309が設定[ON]であるため、代表MPとなる。同様に、ポーリングしているMPのMP番号[XX]の場合、代表フラグ1309は[OFF]であるため、MP番号[XX]のMPは代表MPとはならない。図7は、MP番号[01]が代表MPとなり、MP番号[00]が代表MPではなく、I/O処理をするMPである場合が示されている。
代表MPは、MP00用のVSQからコマンドを刈り取り(S707)、SQにエンキューする(S708)。
SQに格納されたコマンドは、アクセス先となるNVMeドライブ107によって、刈り取られ(S709)、コマンドが実行されて、データを読み出す(S710、S711)。読み出されたデータはキャッシュメモリに格納される(S712)と共に、CQに対して完了応答を格納する(S713)。
代表MPは、CQから完了応答を刈り取り(S714)、MP00用のVCQにエンキューする(S715)。MP00は、MP00用のVCQから完了応答を刈り取り(S716)、キャッシュメモリからリードデータを読み出し、上位I/Fに送信する(S718)。上位I/Fは計算機に対してリードデータを送信する(S719)。
このように、MP毎に割り当てられた仮想的なCQであるVCQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
マルチノードストレージ環境において、I/O処理性能を向上させることができる。
また、キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
つまり、リード要求のデータを格納するNVMeドライブがPCI接続されていないコントローラのMP(I/O処理MP)が処理を受けても、I/O処理MPが収容されているコントローラのキャッシュメモリにデータがあり、キャッシュヒットした場合には、I/O要求に高速に応答することができる。この場合、I/O要求に含まれているLUN等の仮想アドレス情報を、ドライブ等を特定する物理アドレス情報に変換する必要がないため、I/O処理の高速化が図れる。さらに、不要なアドレス変換からMPを解放するので、MPのリソースを他の処理に有効に活用することができる。
<クロス転送>
図8は、キャッシュミス時(クロス)のリードシーケンスを示す図である。図8は、図6のクロスの動作にキャッシュヒット判定の説明も加えたシーケンス図である。本図では、図13の情報を用いながら、処理のシーケンスを説明する。
上位I/F202が計算機からリードコマンドを受領する(S801)。上位I/Fは、MPXXにリードコマンドの受領を通知する(S802)。通知を受けたMPXXがI/O処理を行うMPとなる。MPXXはキャッシュメモリにリードコマンドで要求されているデータが自コントローラのキャッシュメモリ内にあるかヒット/ミス判定を行う(S803)。キャッシュヒットした場合、自コントローラのキャッシュメモリからデータを読み出し、計算機に応答する。
キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
キャッシュミスの場合(S804)、MPXXは、リードコマンドに含まれるLUN等の仮想アドレス情報から、図14のストレージ構成テーブルを参照して、データが格納されているNVMeドライブを算出(特定)する(S805)。
MPXXは自身に割り当てられているVSQに対して、リードコマンドを格納する(S806)。この際、リードコマンドを受領したMPXXは、図13に示したキュー管理テーブルを参照することで、MPXXに割り当てられているVSQを取得することができる。尚、NVMeドライブ毎に管理されている図13のキュー管理テーブルは、図14のストレージ構成テーブルを参照して特定したNVMeドライブに基づいて、選択することができる。
アクセス先のNVMeドライブが図14のストレージ構成テーブルによって特定されると、NVMeドライブ毎に管理されているキュー管理テーブルによって、MP毎にVSQ/VCQ、SQ/CQの対応、代表MPか否か、ドライブがPCI接続されているコントローラでI/Oが処理されるかが特定されるので、当該I/Oの処理がストレート転送かクロス転送か判断できる。
クロス転送であった場合、MPXXは、図13のキュー管理テーブルに従い、他のコントローラ(CTL1)の使用VSQに対してコマンドを格納する(S807)。他のコントローラ1の代表MPは、使用VSQからコマンドを刈り取り(S808)、SQにエンキューする(S809)。
SQに格納されたコマンドは、アクセス先となるNVMeドライブ107によって、刈り取られ、コマンドが実行されて、データを読み出す(S811、S812)。
読み出されたデータはコントローラ1のキャッシュメモリに格納される(S813)と共に、コントローラ2のキャッシュメモリに対してDMA転送される(S814)。また、CQに対して完了応答を格納する(S815)。
コントローラ1の代表MPは、CQから完了応答を刈り取り(S816)、コントローラ1のVCQとコントローラ2のMPXX用のVCQにエンキューする(S817、S818)。MPXXは、MPXX用のVCQから完了応答を刈り取り(S819)、キャッシュメモリからリードデータを読み出し、上位I/Fに送信する(S821)。上位I/Fは計算機に対してリードデータを送信する(S822)。
このように、マルチノードストレージ環境において、NVMeドライブに設けられるキュー(SQ、CQ)とは別に、各MPに対応する仮想的なキュー(VSQ、VCQ)を設けることにより、キューの排他制御を不要とし、I/O処理性能を向上させることができる。
また、複数のストレージ装置がネットワークを介して接続されるマルチノードストレージシステムにおいて、キャッシュミスをした場合のみ、アクセス先となるNVMeドライブが接続されたストレージ装置にコマンドを転送(クロス転送)するため、I/O処理性能の向上させることができる。
<処理フロー>
図9は、IO要求受領時のVSQ格納処理フローを示す図である。この処理フローは、MPがMP処理プログラム2045を実行することで実現される。I/O要求を受けると、図14のストレージ構成テーブルを参照して、I/O要求に含まれるLUN等からアクセス先ドライブを特定する(S901)。
アクセス先ドライブが特定されると、図14のキュー管理テーブルを読み出し、I/O要求を受けたMP(自MP)の番号から対応するVSPの番号を取得する(S902)。
MPは、取得した番号のVSPにコマンドを格納し(S903)、図14のキュー管理テーブルを参照(1304)して、アクセス先ドライブ(NVMeドライブ)が、MPが搭載されているコントローラ(自CTL)に接続されているかを判定する(S904)。判定結果、自CTLにドライブが接続されていない場合、ドライブが接続されているコントローラにコマンドを転送する(S905)。なお、転送先は、ドライブが接続されているドライブのVSPを図13のキュー管理テーブルの使用VSQ1302に基づいて取得する。最後に、VSQのProducerの値を更新する(S906)。
図10は、代表MPによるVSQ刈取りとSQ(要求)格納処理フローを示す図である。
各MPは、VSQからポーリング処理を開始する(S1002)。VSQからSQ(またはCQからVCQ)に対して、代表して要求を格納するMPであることを管理するための情報である図13のキュー管理テーブルの代表フラグ1309をポーリングし、自身が代表MPかどうかを判断する(S1003)。
MPは自身が代表MPでないと判断した場合は処理を終了し、自身が代表MPと判断した場合はステップS1004に進む。キュー管理テーブルの使用SQ番号からVSQ番号を算出する(S1004)。既にVSQに要求があるか(コマンドが格納されているか)を判断し(S1005)、あればステップS1006に、なければステップS1007に進む。
VSPにコマンドが格納されている場合、コマンドをSQに退避し、Consumerの値を更新する(S1006)。ステップS1007では、次のVSQを確認し(S1007)、全VSPが確認されていたら処理を終了し、未確認のVSPがあればステップS1004に戻り処理を継続する(S1008)。
図11は、代表MPによるCQ(応答)刈取りとVCQ格納(クロス間)処理フローを示す図である。図10のステップS1002同様、MPはポーリング処理を開始する(S1102)。ポーリング処理の結果自身が代表MPの場合、ステップS1104に進み、代表MPでなかった場合には、処理を終了する。
ステップS1104では、使用CQに応答があるかを判断し(S1104)、ない場合には処理を終了し、ある場合には、CQの応答をキュー管理テーブルに従ってVCQに退避する(S1105)。
操作VCQは、代表MPが収容されているコントローラか判断する(S1106)。異なるコントローラの場合、使用VCQが収容されている他のコントローラに対し、要求(応答)を転送する(S1107)。最後に、Producerの値を更新して(S1108)、処理を終了する。
図12は、VCQ刈取りと応答処理フローを示す図である。I/O処理を行うMPは、自身のMP番号から図13のキュー管理テーブルを参照して、VCQ番号を算出する(S1202)。I/O処理を行うMPは、算出されたVCQから要求(応答)を刈り取り(S1203)、Consumerの値を更新して(S1204)、処理を終了する。
本実施の形態によれば、マルチノードストレージシステムの全MPに対し、NMP毎に割り当てられた仮想的なSQであるVSQを設けることで、MP間の排他制御を不要とし、MP数が多いマルチノードストレージ環境において、I/O処理性能を向上させることができる。
また、キャッシュヒットした場合、I/O要求に含まれるLUN等のアクセス先論理アドレス情報を、ドライブの特定やデータ格納位置を示す物理アドレス情報への変換を行うことなく、キャッシュメモリからデータを計算機に転送できるので、I/O要求毎にアドレス変換を行う必要がなく、I/O処理性能を向上させることができる。
つまり、リード要求のデータを格納するNVMeドライブがPCI接続されていないコントローラのMP(I/O処理MP)が処理を受けても、I/O処理MPが収容されているコントローラのキャッシュメモリにデータがあり、キャッシュヒットした場合には、I/O要求に高速に応答することができる。この場合、I/O要求に含まれているLUN等の仮想アドレス情報を、ドライブ等を特定する物理アドレス情報に変換する必要がないため、I/O処理の高速化が図れる。さらに、不要なアドレス変換からMPを解放するので、MPのリソースを他の処理に有効に活用することができる。
また、キャッシュヒット判定により、マルチノードストレージシステムのクロス転送を減らすことができ、ISW等で構成されるネットワークの帯域を有効活用することができる。
マンドを転送(クロス転送)するため、I/O処理性能の向上させることができる。
さらに、クロス転送の際には、転送先のストレージ装置の仮想キューに対して、NVMeでコマンドを転送するため、ネットワークで接続されるストレージ装置間のLUN等の仮想アドレスを用いたI/O要求と比較し、転送先のストレージ装置でアドレス変換を行う必要がないため、I/O処理性能を向上させることができる。
101:ISW、102:モジュール、103:ノード(ストレージ装置)、104:コントローラ、106:NVMeドライブボックス、107:NVMeドライブ、201:サーバ(計算機)、202:上位I/F、コントローラ間I/F、204:メモリ、205:MP、206:下位I/F。

Claims (10)

  1. 計算機に論理的な記憶領域としてボリュームを提供し、計算機からI/O要求を処理するコントローラを有するノードを複数備えたマルチノードストレージシステムであって、
    前記マルチノードストレージシステムは、
    前記ノードの前記コントローラの何れかにPCI接続される複数のNVMeドライブと、
    前記複数のノードの前記コントローラを相互に接続するスイッチとを備え、
    前記コントローラは、計算機からのI/O要求を処理する複数のプロセッサと、メモリを有し、
    前記メモリには、前記複数のNVMeドライブ毎に、
    前記マルチノードストレージシステムを構成する複数のコントローラのプロセッサ数の仮想キューと、
    前記複数のNVMeドライブの何れかに対しコマンドを格納する、前記仮想キューの数よりも少ない、実キューを、有することを特徴とするマルチノードストレージシステム。
  2. 前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを有し、
    前記実キューは、コマンドを格納するSQと、応答を格納するCQとを有し、
    前記複数のプロセッサの第1のプロセッサは、前記計算機からリード要求を受領すると、前記第1のプロセッサに割り当てられた第1のVSQにリード要求を格納し、
    前記第1のプロセッサを収容する、前記複数のコントローラの第1のコントローラに、収容される代表プロセッサは、前記第1のVSQからリード要求を刈り取り、前記リード要求の対象データを格納する、前記複数のNVMeドライブの第1のNVMeドライブ、に対して設定されている第1のSQにリード要求を格納し、
    前記第1のNVMeドライブは、前記第1のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とする請求項1に記載のマルチノードストレージシステム。
  3. 前記第1のNVMeドライブは、リード要求を実行すると、応答を第1のコントローラのCQに格納すると共に、リードデータをキャッシュメモリに格納し、
    前記代表プロセッサは、前記第1のCQに格納された応答を刈り取り、前記第1のプロセッサに割り当てられた第1のVCQに応答を格納し、
    前記第1のプロセッサは、前記第1のVCQに格納された応答を刈り取り、前記キャッシュメモリからリードデータを読み出すことを特徴とする請求項2に記載されたマルチノードストレージシステム。
  4. 前記第1のプロセッサは、前記計算機からリード要求を受領すると、前記第1のプロセッサに割り当てられた第1のVSQにリード要求を格納する前に、キャッシュメモリにリード要求に対応するデータが格納されているか判定することを特徴とする請求項2に記載のマルチノードストレージシステム。
  5. 前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを有し、
    前記実キューは、コマンドを格納するSQと、応答を格納するCQとを有し、
    前記複数のプロセッサの第1のプロセッサは、
    前記計算機からリード要求を受領すると、前記リード要求からアクセス先NVMeドライブを算出し、
    算出されたNVMeドライブが前記第1のプロセッサを収容する第1のコントローラ以外の第2のコントローラにPCI接続されている場合、
    前記第1のプロセッサに割り当てられた前記第2のコントローラの第2のVSQにリード要求を格納し、
    前記第2のコントローラに、収容される代表プロセッサは、前記第2のVSQからリード要求を刈り取り、前記リード要求の対象データを格納する、前記複数のNVMeドライブの第2のNVMeドライブ、に対して設定されている第2のSQにリード要求を格納し、
    前記第2のNVMeドライブは、前記第2のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とする請求項1に記載のマルチノードストレージシステム。
  6. 前記第2のNVMeドライブは、リード要求を実行すると、応答を第2のCQに格納すると共に、リードデータを前記第2のコントローラのキャッシュメモリと前記第1のコントローラのキャッシュメモリに格納し、
    前記第2のコントローラの代表プロセッサは、前記第2のCQに格納された応答を刈り取り、前記第1のプロセッサに割り当てられた第1のVCQに応答を格納し、
    前記第1のプロセッサは、第1のVCQに格納された応答を刈り取り、前記キャッシュメモリからリードデータを読み出すことを特徴とする請求項5に記載されたマルチノードストレージシステム。
  7. 前記第1のプロセッサは、前記計算機からリード要求を受領すると、前記第1のプロセッサに割り当てられた第1のVSQにリード要求を格納する前に、キャッシュメモリにリード要求に対応するデータが格納されているか判定することを特徴とする請求項5に記載のマルチノードストレージシステム。
  8. 前記メモリは、
    I/O要求に含まれる論理的アドレスとデータが格納されるNVMeドライブとの対応を管理するストレージ構成テーブルと、
    前記複数のNVMeドライブ毎に、プロセッサ、仮想キュー、実キューとの対応関係、プロセッサが代表プロセッサであることを管理するキュー管理テーブルと、
    仮想キューを設定する仮想キュー領域と、
    実キューを設定する実キュー領域を有することを特徴とする請求項1に記載のマルチノードストレージシステム。
  9. 計算機に論理的な記憶領域としてボリュームを提供し、計算機からI/O要求を処理するコントローラを有するノードを複数備えたマルチノードストレージシステムのキュー制御方法であって、
    前記マルチノードストレージシステムは、
    前記ノードの前記コントローラの何れかにPCI接続される複数のNVMeドライブと、
    前記複数のノードの前記コントローラを相互に接続するスイッチとを備え、
    前記コントローラは、計算機からのI/O要求を処理する複数のプロセッサと、メモリを有し、
    前記メモリには、前記複数のNVMeドライブ毎に、
    前記マルチノードストレージシステムを構成する複数のコントローラのプロセッサ数の仮想キューと、
    NVMeドライブに対しコマンドを格納し、前記仮想キューの数よりも少ない実キューとをと有し、
    前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを有し、
    前記実キューは、コマンドを格納するSQと、応答を格納するCQとを有し、
    前記複数のプロセッサの第1のプロセッサは、
    前記計算機からリード要求を受領すると、前記第1のプロセッサに割り当てられた第1のVSQにリード要求を格納し、
    前記第1のプロセッサを収容する、前記複数のコントローラの第1のコントローラに、収容される代表プロセッサは、
    前記第1のVSQからリード要求を刈り取り、前記リード要求の対象データを格納する、前記複数のNVMeドライブの第1のNVMeドライブ、に対して設定されている第1のSQにリード要求を格納し、
    前記第1のNVMeドライブは、
    前記第1のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とするマルチノードストレージシステムのキュー管理方法。
  10. 計算機に論理的な記憶領域としてボリュームを提供し、計算機からI/O要求を処理するコントローラを有するノードを複数備えたマルチノードストレージシステムのキュー制御方法であって、
    前記マルチノードストレージシステムは、
    前記ノードの前記コントローラの何れかにPCI接続される複数のNVMeドライブと、
    前記複数のノードの前記コントローラを相互に接続するスイッチとを備え、
    前記コントローラは、計算機からのI/O要求を処理する複数のプロセッサと、メモリを有し、
    前記メモリには、前記複数のNVMeドライブ毎に、
    前記マルチノードストレージシステムを構成する複数のコントローラのプロセッサ数の仮想キューと、
    NVMeドライブに対しコマンドを格納し、前記仮想キューの数よりも少ない実キューとを有し、
    前記仮想キューは、コマンドを格納するVSQと、応答を格納するVCQとを有し、
    前記実キューは、コマンドを格納するSQと、応答を格納するCQとを有し、
    前記複数のプロセッサの第1のプロセッサは、
    前記計算機からリード要求を受領すると、前記リード要求からアクセス先NVMeドライブを算出し、
    算出されたNVMeドライブが前記第1のプロセッサを収容する第1のコントローラ以外の第2のコントローラにPCI接続されている場合、
    前記第1のプロセッサに割り当てられた前記第2のコントローラの第2のVSQにリード要求を格納し、
    前記第2のコントローラに、収容される代表プロセッサは、
    前記第2のVSQからリード要求を刈り取り、前記リード要求の対象データを格納する、前記複数のNVMeドライブの第2のNVMeドライブ、に対して設定されている第2のSQにリード要求を格納し、
    前記第2のNVMeドライブは、前記第2のSQに格納されたリード要求を刈り取り、リード要求を実行することを特徴とするマルチノードストレージシステムのキュー管理方法。
JP2018226940A 2018-12-04 2018-12-04 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 Active JP6920001B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018226940A JP6920001B2 (ja) 2018-12-04 2018-12-04 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
US16/522,768 US10895989B2 (en) 2018-12-04 2019-07-26 Multi-node storage system and queue control method of multi-node storage system
CN201910734663.9A CN111273854B (zh) 2018-12-04 2019-08-09 多节点存储系统以及多节点存储系统的队列控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018226940A JP6920001B2 (ja) 2018-12-04 2018-12-04 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法

Publications (2)

Publication Number Publication Date
JP2020091554A true JP2020091554A (ja) 2020-06-11
JP6920001B2 JP6920001B2 (ja) 2021-08-18

Family

ID=70850079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018226940A Active JP6920001B2 (ja) 2018-12-04 2018-12-04 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法

Country Status (3)

Country Link
US (1) US10895989B2 (ja)
JP (1) JP6920001B2 (ja)
CN (1) CN111273854B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220059906A (ko) * 2020-11-03 2022-05-10 서울대학교산학협력단 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
US11704065B2 (en) 2020-11-10 2023-07-18 Kioxia Corporation Memory system limiting fetching from host submission queue based on free space of corresponding completion queue and control method thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112202843B (zh) * 2020-09-10 2022-07-29 江苏安超云软件有限公司 一种控制节点的高可用系统及超融合系统
CN113986128B (zh) * 2021-10-26 2024-05-28 杭州宏杉科技股份有限公司 Lun数据复制方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595385B1 (en) * 2013-05-28 2013-11-26 DSSD, Inc. Method and system for submission queue acceleration
JP2017191603A (ja) * 2016-04-13 2017-10-19 三星電子株式会社Samsung Electronics Co.,Ltd. 高性能なロックレススケーラブルターゲットを提供するシステム及び方法
WO2018037510A1 (ja) * 2016-08-24 2018-03-01 株式会社日立製作所 計算機システム、通信デバイス、及び、記憶制御方法
US20180307521A1 (en) * 2015-04-17 2018-10-25 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6813274B1 (en) * 2000-03-21 2004-11-02 Cisco Technology, Inc. Network switch and method for data switching using a crossbar switch fabric with output port groups operating concurrently and independently
KR101627321B1 (ko) * 2009-01-13 2016-06-03 삼성전자주식회사 I/o 리퀘스트 핸들링 방법 및 이를 이용한 솔리드 스테이트 드라이브
US20120163178A1 (en) * 2010-12-23 2012-06-28 Telefonaktiebolaget L M Ericsson (Publ) Multiple-Algorithm Congestion Management
US9294304B2 (en) * 2014-03-31 2016-03-22 Juniper Networks, Inc. Host network accelerator for data center overlay network
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
JP6516860B2 (ja) * 2015-10-26 2019-05-22 株式会社日立製作所 計算機システム、及び、アクセス制御方法
US10275160B2 (en) * 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US20190339905A1 (en) 2016-03-17 2019-11-07 Hitachi, Ltd. Storage apparatus and information processing method
US10509592B1 (en) * 2016-07-26 2019-12-17 Pavilion Data Systems, Inc. Parallel data transfer for solid state drives using queue pair subsets
US11403129B2 (en) * 2017-09-26 2022-08-02 Intel Corporation Methods and apparatus to process commands from virtual machines
US10509753B2 (en) * 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595385B1 (en) * 2013-05-28 2013-11-26 DSSD, Inc. Method and system for submission queue acceleration
US20180307521A1 (en) * 2015-04-17 2018-10-25 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
JP2017191603A (ja) * 2016-04-13 2017-10-19 三星電子株式会社Samsung Electronics Co.,Ltd. 高性能なロックレススケーラブルターゲットを提供するシステム及び方法
WO2018037510A1 (ja) * 2016-08-24 2018-03-01 株式会社日立製作所 計算機システム、通信デバイス、及び、記憶制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220059906A (ko) * 2020-11-03 2022-05-10 서울대학교산학협력단 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
KR102532099B1 (ko) * 2020-11-03 2023-05-12 서울대학교산학협력단 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
US11704065B2 (en) 2020-11-10 2023-07-18 Kioxia Corporation Memory system limiting fetching from host submission queue based on free space of corresponding completion queue and control method thereof

Also Published As

Publication number Publication date
CN111273854A (zh) 2020-06-12
US10895989B2 (en) 2021-01-19
US20200174673A1 (en) 2020-06-04
CN111273854B (zh) 2023-05-09
JP6920001B2 (ja) 2021-08-18

Similar Documents

Publication Publication Date Title
JP6920001B2 (ja) マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
US11070479B2 (en) Dynamic resource allocation based upon network flow control
US10715460B2 (en) Opportunistic resource migration to optimize resource placement
EP3982274A1 (en) Storage device, distributed storage system, and data processing method
KR20180111492A (ko) 집적된 NVMe 오버 패브릭 장치용 스토리지 집적 방법
US9329792B2 (en) Storage thin provisioning and space reclamation
EP3663928B1 (en) Data migration method and system and intelligent network card
JP2003030012A5 (ja)
JP6477266B2 (ja) ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法
US9864706B2 (en) Management of allocation for alias devices
JP6331944B2 (ja) 情報処理装置、メモリ制御装置及び情報処理装置の制御方法
US11989455B2 (en) Storage system, path management method, and recording medium
KR102394695B1 (ko) 메모리 시스템 및 그것의 동작방법
JP7067256B2 (ja) データ転送装置およびデータ転送方法
KR101754713B1 (ko) 비대칭 분산 파일 시스템, 연산 분배 장치 및 방법
US9501290B1 (en) Techniques for generating unique identifiers
US11481147B1 (en) Buffer allocation techniques
JP6427913B2 (ja) ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム
WO2016122607A1 (en) Dedicated memory server
JP4857092B2 (ja) エイリアス・アドレスをベース・アドレスに割り当てるプログラム、システム及び方法
CN115686361A (zh) 一种数据读写方法、系统及装置
JP2020027433A (ja) 情報システム
JP2019008418A (ja) データ転送装置およびデータ転送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210514

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210514

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210525

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210601

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210722

R150 Certificate of patent or registration of utility model

Ref document number: 6920001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150