JP7080863B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP7080863B2
JP7080863B2 JP2019142713A JP2019142713A JP7080863B2 JP 7080863 B2 JP7080863 B2 JP 7080863B2 JP 2019142713 A JP2019142713 A JP 2019142713A JP 2019142713 A JP2019142713 A JP 2019142713A JP 7080863 B2 JP7080863 B2 JP 7080863B2
Authority
JP
Japan
Prior art keywords
drive
switch
controller
storage
controllers
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
JP2019142713A
Other languages
English (en)
Other versions
JP2021026421A (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
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019142713A priority Critical patent/JP7080863B2/ja
Priority to CN202010103771.9A priority patent/CN112306388B/zh
Priority to US16/818,047 priority patent/US10901626B1/en
Priority to US17/126,653 priority patent/US11372552B2/en
Publication of JP2021026421A publication Critical patent/JP2021026421A/ja
Priority to JP2022084994A priority patent/JP7315753B2/ja
Application granted granted Critical
Publication of JP7080863B2 publication Critical patent/JP7080863B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0661Format or protocol conversion 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/0671In-line storage system
    • G06F3/0683Plurality of 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/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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Systems (AREA)

Description

本開示は、ストレージ装置に関する。
ストレージ装置は、ストレージ装置に接続したホストコンピュータおよびストレージ装置内の記憶媒体との間のデータ転送を制御するストレージコントローラを備える。ストレージコントローラは、ホストコンピュータを接続するフロントエンドインタフェース、記憶媒体としての多数のドライブを接続するバックエンドインタフェース、ストレージ装置を制御するためのプロセッサおよびプロセッサに接続されたメモリ等を含む。
また、プロセッサ、フロントエンドインタフェースおよびバックエンドインタフェース等を接続するための通信ネットワークの標準規格の1つとして、PCI Express(以降PCIe)が知られている。さらに、ストレージ装置を利用するユーザの利用規模に合わせるため、ストレージ装置は、複数台のストレージ装置を相互接続するためのインタコネクトも含むことが多い。
ミッションクリティカル業務で使われるストレージ装置において、最も重要視される要素の1つが可用性である。ストレージ装置は、この可用性を提供するために、例えば、上述したストレージコントローラを冗長構成にする、デュアルコントローラアーキテクチャを用いる。
デュアルコントローラアーキテクチャにおいて、コントローラ間を接続するためのインタフェースとして、例えばPCIe、Infinibandがある。デュアルコントローラのうち、片側のコントローラが何らかの要因で使用不能に陥った時、もう片側の正常なコントローラが異常を検知し、使用不能なコントローラが復旧するまでの間、ホストコンピュータからのI/Oを継続することで、可用性を保証する。
近年、単一ドライブ容量増加、及び仮想化技術の進展により、複数のホストコンピュータ、あるいはアプリケーションで使うデータが単一ドライブで混在することが多い。したがって、例えば単一ドライブで異常を検知された場合、双方のコントローラに対して、異常を通知する必要がある。それは、ストレージ装置は、双方のコントローラが協調して動作しており、双方のコントローラに異常発生を通知することで、速やかに矛盾なく適切な処理を行う必要があるためである。
一方、フラッシュメモリの低価格化、使いこなしが進み、フラッシュメモリをドライブに搭載したSSD(Solid State Drive)のストレージ装置への搭載が進んでいる。このようなSSDの普及に伴い、近年、上述した処理時間の増大の解消を目的の1つとする新たな通信プロトコルとしてNVM Express(Non-Volatile Memory Express)が策定された。NVM Expressはプロトコル階層としてはアプリケーション層に位置し、物理層はPCIeを用いる。
ところで、PCI Expressドメインは、ルートコンプレックスと呼ばれるデバイスを頂点に、スイッチ、ブリッジ、及びエンドポイントデバイスがツリー上に接続される構造をとる。ルートコンプレックスは、PCI Expressシステムにおける一番根元に位置するデバイスである。
ブリッジは、多くの場合、レガシーデバイス、例えばPCIあるいはPCI-XエンドポイントとPCI Expressで接続するためのプロトコル変換をするために用いられる。スイッチは、PCI Expressのポート数を増やすために用いる。エンドポイントは、例えば、ハードディスク、SSDなどI/Oを行うデバイスのことである。PCI Expressの仕様上、エンドポイントは、1つのPCI Expressドメインにしか属することができない。
ミッションクリティカル業務で使われるストレージ装置において、最も重要視される要素の1つが高性能である。ストレージ装置は、先に述べた可用性と高性能を提供するために、ストレージコントローラから任意のドライブにアクセスできるような構成を採る。ストレージコントローラは、ルートコンプレックス、ルートポートを持つ複数のプロセッサを含む。さらに、装置規模に応じて、ストレージ装置は複数のストレージコントローラを含む。ところが、PCI Expressの仕様上、エンドポイントである、NVMeをサポートするSSDは、1つのPCI Expressシステム、すなわち、1つのプロセッサの配下にしか属することができない。すなわち、ストレージコントローラから任意のドライブにアクセスできるような構成を採ることができない。
これを解決する手段として、Non-Transparent Bridge(以降NTB)がある。NTBを用いたストレージ装置は、例えば、特許文献1に開示されている特許文献1は、ストレージ制御部と記憶デバイスとの間を接続するバックエンドスイッチを介して、ストレージ制御部間の効率的な通信を可能とする技術を開示している。スイッチを論理分割した仮想スイッチ(VS)をルートポート毎に設け、その間をバックエンドスイッチのNTBでつなぐ。ドライブは、PCI Expressの仕様に従い、いずれかのVSに属する。
ここで、可用性の観点に着目すると、ドライブ側のPCIポートでエラーを検出した場合、ドライブは、通常は当該ドライブが属するルートポートに通知する。ドライブは、プロセッサ主記憶の所定の領域にその旨を通知するメモリライト命令を発行する。その際、PCI Express仕様に従い、ドライブからの通知先は1箇所である。
特開2018-190368号公報
NTB技術と特許文献1で開示された技術を用いることで、ストレージコントローラから任意のドライブにアクセスできるような構成が可能となる。しかしながら、特許文献1は、3以上のストレージコントローラの場合を開示していない。
一方、特許文献1で開示されたバックエンドスイッチ内の仮想スイッチは、PCI Express仕様から、ルートコンプレックス(例えばプロセッサ)毎に必要である。特許文献1では、1以上のバックエンドスイッチ間でNTBを適用することで、ストレージコントローラから任意のドライブにアクセスすることが可能となる。特許文献1では、ドライブは、バックエンドスイッチに含まれる1つの仮想スイッチに関連付けられている。
これらは、以下の課題を含んでいる。すなわち、プロセッサ数が増えると、仮想スイッチの数も増えるため、プロセッサが任意のドライブにアクセスする場合、通過する仮想スイッチの数がドライブ間で異なる。言い換えると、プロセッサが任意のドライブにアクセスする場合、仮想スイッチ渡りに伴う性能不均一化による性能のばらつきが発生する。結果的に性能が低いドライブアクセスに引きずられ、システム全体の性能低下する恐れがある。また、いくつもの仮想スイッチを通過するため、ストレージ装置を設計するに当たりアドレス変換の設計が煩雑となる。
他方、PCIポートが異常を起こしている場合、プロセッサはドライブと通信できないため、アクセスしたプロセッサに対して、タイムアウトが発生する。この場合、異常検出に時間を要するので、プロセッサに速やかにエラーを通知して、ドライブアクセスを停止し、障害処理を行ったほうが良い。先に述べたように、複数プロセッサが存在する場合には、当該ドライブにアクセス可能なプロセッサ全てに異常検出の旨を通知することが重要であるが、PCI Express仕様のままでは単一プロセッサにしか通知できない。
したがって、安定した処理性能と適切な障害処理を実施可能なストレージ装置および情報処理方法が望まれる。
本開示の一態様のストレージ装置は、複数のコントローラと、複数の記憶ドライブと、前記複数のコントローラそれぞれ接続される複数のコントローラ側ポートと、前記複数の記憶ドライブそれぞれに接続される複数のドライブ側ポート、を含むスイッチ装置と、を含み、前記スイッチ装置は、前記複数のコントローラ側ポートと前記複数のドライブ側ポートとの間において、アドレスの変換を行う。
本開示の一態様によれば、ストレージ装置において、安定した処理性能と適切な障害処理が可能となる。
ストレージ装置に含まれるノードの構成を示す図である。 ストレージ装置に含まれるドライブボックスの構成例を示す図である。 ストレージ装置の一例を示す図である。 ストレージ装置において、ドライブ側で発生した異常をプロセッサへの通知する手順を示したフローチャートである。 ドライブボックスから受領した異常通知に対するプロセッサの処理手順を示したフローチャートである。 ストレージ装置における、メッセージ送信先管理テーブルを示す図である。
以下、図面を参照しながら本発明の実施の形態を説明する。なお、以下の説明では、「管理テーブル」等の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。また、データ構造に依存しないことを示すために「管理テーブル」を「管理情報」と呼ぶことができる。
また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、CPU(Central Processing Unit)によって実行されるもので、定められた処理をするものである。なお、適宜に記憶資源(例えばメモリ)および通信インタフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していても良い。コンピュータプログラムは、プログラムソースから各コンピュータにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバまたは記憶メディアなどで提供されるものであっても良い。
また、各要素は番号などで識別可能であるが、識別可能な情報であれば、名前など他種の識別情報が用いられても良い。本発明の図および説明において同一部分には同一符号を付与しているが、本発明が本実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。
以下に、ストレージ装置および情報処理方法、例えば、記憶ドライブ(以下、単にドライブとも呼ぶ)としてSSD(Solid State Drive)が搭載されたストレージ装置に適用して好適である、ストレージ装置および情報処理方法を開示する。より具体的には、以下に開示するストレージ装置の構成例は、記憶ドライブを含むドライブボックス内のPCIe(PCI Express)スイッチ(物理スイッチ)が、複数のストレージコントローラと複数の記憶ドライブとの間の通信においてプロトコル変換を行う。これにより、安定した処理性能と適切な障害処理を速やかに実施可能とする。ドライブは、例えば、NVM Express(NVMe)をサポートする。なお、仮想スイッチに代えて物理スイッチが使用されてもよい。
以下、図面を用いて本実施の形態の詳細について説明する。なお、PCIe規格及びNVMe規格の詳細は、公知であり、その詳細な説明は省略し、本実施の形態の説明上必要な事項についてのみ適宜説明するものとする。
図1は、本実施形態における、ストレージ装置に含まれるノードの構成を示す図である。ストレージ装置は、1または複数のドライブ(SSD等)(図1において不図示)と、1または複数のノードと、を含む。ノードは、ドライブに対するデータの入出力を制御する1または複数のストレージコントローラ(単にコントローラとも呼ぶ)を含む。
本実施形態のノード100は、可用性を重視し、サービスを継続して提供するために2つのコントローラ105A、105Bを含む。2つのコントローラ105A、105Bは、本例において同一の構成および機能を有する。ストレージコントローラ105Aはプロセッサ(CPU)110A、フロントエンドインタフェース115A、バックエンドインタフェース120A、インタコネクトインタフェース125A、及びメモリ130Aを含む。ストレージコントローラ105Bはプロセッサ110B、フロントエンドインタフェース115B、バックエンドインタフェース120B、インタコネクトインタフェース125B、及びメモリ130Bを含む。
以下において、ストレージコントローラ105、プロセッサ110、及びフロントエンドインタフェース115は、それぞれ、任意のストレージコントローラ、任意のプロセッサ、任意のフロントエンドインタフェースを表す。バックエンドインタフェース120、インタコネクトインタフェース125、及びメモリ130は、それぞれ、任意のバックエンドインタフェース、任意のインタコネクトインタフェース、及び任意のメモリを表す。
プロセッサ110は、フロントエンドインタフェース115等のストレージコントローラ105内の各構成要素を制御する。例えば、プロセッサ110は、フロントエンドインタフェース115のデータ転送パラメータを設定する。プロセッサ110は、ノード100内の障害を監視し、障害を検出した場合には障害に対応する処理を実行する。
フロントエンドインタフェース115は、ホストコンピュータ(図示せず)に接続されるインタフェースを含み、受信したホストコンピュータからのパケットや、ホストコンピュータに送信するパケットに対して所定のプロトコル処理を施す。ホストコンピュータは、プロセッサおよびメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、オープン系のサーバや、メインフレームコンピュータなどから構成される。ホストコンピュータは、ネットワークを介してストレージ装置にライトコマンドやリードコマンドを送信する。
例えば、フロントエンドインタフェース115は、受信したホストコンピュータからのパケットから、後述するドライブにおけるリードデータまたはライトデータの格納場所及びそのパケットの容量などの情報を取得する。また、フロントエンドインタフェース115は、パケットに含まれるコマンドを特定し、また、受信したパケットをストレージコントローラ105内部で用いられる形に変換する。
フロントエンドインタフェース115は、ホストコンピュータに送信するパケットに関して、ストレージコントローラ105とホストコンピュータとの間の通信プロトコルに基づいて、送信先となるホストコンピュータの識別データや、当該ホストコンピュータへのコマンドに関連する制御データ等をリードデータに付加することにより、ホストコンピュータに送信可能なパケットを生成する。
バックエンドインタフェース120は、プロセッサ110が、後述するドライブボックス及びドライブボックス内のドライブとデータ通信を行えるようにするためのインタフェースである。バックエンドインタフェース120の外側のプロトコルとプロセッサ114側のプロトコルとが異なる場合、バックエンドインタフェース120は、プロトコル変換を行う。例えば、プロセッサ114側のプロトコルはPCIeであり、バックエンドインタフェース120の外側のプロトコルは、PCIe、Fibre Channel、又はEthernet(登録商標)である。
バックエンドインタフェース120は、ノード100とドライブボックスと接続するためのバックエンドポート(ダウンストリームポート)を含む。図1の構成例において、ストレージコントローラ105A内の1つのバックエンドインタフェース120Aは、バックエンドポート122A-1及び122A-2を含み、もう1つのバックエンドインタフェース120Aは、バックエンドポート122A-3及び122A-4を含む。ストレージコントローラ105B内の1つのバックエンドインタフェース120Bは、バックエンドポート122B-1及び122B-2を含み、もう1つのバックエンドインタフェース120Bは、バックエンドポート122B-3及び122B-4を含む。
バックエンドポートは、バックエンドインタフェース内のスイッチの一部であってもよい。バックエンドインタフェース120は、プロセッサの一部であってもよい。この場合、ドライブボックスと接続するためのバックエンドポートは、プロセッサに内蔵されていてもよい。
インタコネクトインタフェース125は、複数(図1の構成例においてでは2つ)のストレージコントローラ105間の通信インタフェースである。ストレージコントローラ105間の通信は、例えば、インタフェースカードを用いたInfiniband、もしくは、Ethernetを使用してもよく、または、NTB(Non Transparent Bridge)を適用したPCI Expressを使用してもよい。プロセッサ110間、またはメモリ130間でデータ通信できる任意のインタフェースが使用可能である。
図2は、ストレージ装置に含まれるドライブボックス200の構成例を示す図である。
ドライブボックス200は、PCIeスイッチ205A及び205B(以降任意のPCIeスイッチをPCIeスイッチ205と表記)、並びに、記憶ドライブ230、240、250及び260を含む。
PCIeスイッチ205Aは、ルートコンプレックス接続仮想スイッチ210A、210B、アドレス変換部225A、225B、ドライブ接続仮想スイッチ220A、及びスイッチ制御モジュール215Aを含む。PCIeスイッチ205Bは、ルートコンプレックス接続仮想スイッチ210C、210D、アドレス変換部225C、225D、ドライブ接続仮想スイッチ220B、及びスイッチ制御モジュール215Bを含む。PCIeスイッチ205A、205Bは、それぞれ、ストレージコントローラが接続される複数のコントローラ側ポート(それぞれ仮想ポートまたは物理ポート)と、記憶ドライブが接続される複数のドライブ側ポート(それぞれ仮想ポートまたは物理ポート)とを含む。
以下において、PCIeスイッチ205、ルートコンプレックス接続仮想スイッチ(コントローラ側スイッチ)210、アドレス変換部225、ドライブ接続仮想スイッチ(ドライブ側スイッチ)220及びスイッチ制御モジュール215は、それぞれ、任意のPCIeスイッチ、任意のルートコンプレックス接続仮想スイッチ、任意のアドレス変換部、任意のドライブ接続仮想スイッチ及び任意のスイッチ制御モジュール任意を表す。
PCIeスイッチ205は、例えば、プロセッサ及びメモリを含む。プロセッサは、メモリに格納されているプログラムに従って動作することで、ルートコンプレックス接続仮想スイッチ、アドレス変換部、ドライブ接続仮想スイッチ及びスイッチ制御モジュールとして機能する。PCIeスイッチ205は、プロセッサに加えて、所定の演算を行う論理回路を含むことができる。仮想スイッチにより、ストレージ装置のスケーラビリティを向上する。
ドライブボックス200は、さらに、ドライブ接続仮想スイッチとドライブとの間の接続パス235A、235B、245A、245B、255A、255B、265A、265B、を含む。
PCIeスイッチ205は、ストレージコントローラ105のバックエンドインタフェース120と、ドライブとを接続するためのデバイスである。ストレージ装置の可用性向上及び高性能化のため、ドライブは、2つのポート、いわゆるデュアルポートドライブであることが多い。そのため、ストレージ装置は、デュアルポートドライブの各ポートに接続するよう2つのPCIeスイッチ205を含む 。
ルートコンプレックス接続仮想スイッチ210は、PCIeスイッチ205内に構成される論理的(仮想的)なPCIeスイッチである。ルートコンプレックス接続仮想スイッチ210は、プロセッサに含まれるPCIeドメインのルートコンプレックスと後述するドライブ接続仮想スイッチ220との間を接続する。より具体的には、ルートコンプレックス接続仮想スイッチ210は、ストレージコントローラのバックエンドインタフェース120とドライブ接続仮想スイッチ220との間を接続する。各ドライブに対して複数のプロセッサからアクセス可能とするように、基本的に、各ドライブにアクセスするプロセッサの数と同数のルートコンプレックス接続仮想スイッチ210が実装される。
ドライブ接続仮想スイッチ220は、ルートコンプレックス接続仮想スイッチ210と同様に、PCIeスイッチ205内に構成される論理的(仮想的)なPCIeスイッチである。ドライブ接続仮想スイッチ220は、ルートコンプレックス接続仮想スイッチ210とドライブとを接続する。ドライブ接続仮想スイッチ220は、図2に示すように、PCIeスイッチ205内で単一であってもよいし、複数のドライブ接続仮想スイッチがPCIeスイッチ205に構成されてもよい。
アドレス変換部225は、アドレス変換情報を参照して、ルートコンプレックス接続仮想スイッチ210の通信プロとコルと、ドライブ接続仮想スイッチ220の通信プロトコルとの間の、変換を行う。アドレス変換部225は、例えば、Non-Transparent Bridge(NTB)である。
アドレス変換部225は、ルートコンプレックス接続仮想スイッチ210に到着したPCIeパケットの制御情報を、送信先ドライブが含まれるPCIeドメインで適合される制御情報に変換する。制御情報は、PCIeパケットのヘッダ情報、アクセス先のアドレスを含む。アドレス変換部225は、ドライブ接続仮想スイッチ220に到着したPCIeパケットの制御情報を、送信先プロセッサが含まれるPCIeドメインで適合される制御情報に変制換する。制御情報は、PCIeパケットのヘッダ情報及び送信先アドレスを含む。
上述のように、PCIeスイッチ205は、ルートコンプレックス接続仮想スイッチ210、ドライブ接続仮想スイッチ220、及び、ルートコンプレックス接続仮想スイッチ210とドライブ接続仮想スイッチ220との間のアドレス変換部225を含む。これらによる効果は以下のとおりである。
ストレージコントローラのプロセッサ110から見ると、プロセッサ110からドライブへのアクセスは、ルートコンプレックス接続仮想スイッチ210、アドレス変換部225、ドライブ接続仮想スイッチ220を経由する。これは、ドライブ全てに対して同様である。すなわち、プロセッサ110は任意のドライブに対して、同一距離でアクセスすることができる。従って、図2のような構成を採ることで、ストレージ装置として安定した処理性能を提供することが可能となる。
ドライブ230、240、250、260は、NVMeをサポートし、ホストコンピュータのデータを格納する装置である。ドライブ230、240、250、260は、フラッシュメモリ等の不揮発メモリを搭載したSSDや、MRAM(Magnetoresistive Random Access Memory)、相変化メモリ(Phase-Change Memory)、ReRAM(Resistive Random-Access Memory)、FeRAM(Ferroelectric Random Access Memory)等の種々の媒体を用いることもできる。なお、複数のPCIeスイッチ205を連結し、ドライブを更に接続した多段接続構成をストレージ装置に適用してもよい。
一般的にストレージ装置は、複数のドライブからRAID(Redundant Arrays of Inexpensive Disks)グループを構成し、そのRAIDグループによって構成される論理的な記憶領域である論理ボリュームに、ホストコンピュータから送信されたデータを格納してもよい。RAIDグループを構成するドライブに障害が生じた場合、ストレージ装置は、その障害が発生したドライブに格納されているデータを、同一のRAIDグループに属する他のドライブのデータ及びパリティを用いて復元することができる。
図3は、本実施の形態における、ストレージ装置300の一例を示す図である。ストレージ装置300は、2つのノード100-1、100-2(以降任意ノードをノード100と表記)と4つのドライブボックス200-1、200-2、200-3、200-4(以降任意ドライブボックスをドライブボックス200と表記)、そして、ノード100とドライブボックス200間を接続するリンク310、とを含む。
ノード100-1は、2つのストレージコントローラ105A-1、150B-1を含む。ストレージコントローラ105A-1は、メモリ130A-1、プロセッサ110A-1、及び2つのバックエンドインタフェース120A-1を含む。ストレージコントローラ105B-1は、メモリ130B-1、プロセッサ110B-1、及び2つのバックエンドインタフェース120B-1を含む。
ノード100-2は、2つのストレージコントローラ105A-2、150B-2を含む。ストレージコントローラ105A-2は、メモリ130A-2、プロセッサ110A-2、及び2つのバックエンドインタフェース120A-2を含む。ストレージコントローラ105B-2は、メモリ130B-2、プロセッサ110B-2、及び2つのバックエンドインタフェース120B-2を含む。
ドライブボックス200-1は、2つのPCIeスイッチ205A-1、205B-1を含む。ドライブボックス200-2は、2つのPCIeスイッチ205A-2、205B-2を含む。ドライブボックス200-3は、2つのPCIeスイッチ205A-3、205B-3を含む。ドライブボックス200-4は、2つのPCIeスイッチ205A-4、205B-4を含む。ノード100及びドライブボックス200の構成要素の詳細は、図1、図2を参照して説明した通りである。
図3で示したストレージ装置300では、単一ストレージコントローラ105から4つのドライブボックス200全てにアクセスできるようにリンク310を接続している。ストレージ装置の可用性の観点から、ノード100が何らかの異常で使用不能になった場合に、正常ノード100から継続してアクセスできるように、例えば、偶数番号のストレージコントローラ105は、ドライブボックス200の偶数番号のPCIeスイッチ205と接続する。
このようにすることで、ノード内ストレージコントローラ、または、ノードが何らかの異常で使用不能になった場合に、正常なストレージコントローラ、または正常なノードからストレージ装置300の全ドライブに継続してアクセスでき、ストレージ装置全体の可用性を維持できる。
図4は、本実施の形態のストレージ装置300において、ドライブ側で発生した異常をプロセッサへの通知する手順を示したフローチャートである。本手順により、ドライブ側で発生した異常に対し、適切な障害処理を速やかに実施可能となる。図4が示すフローチャートの実施主体は、図2で示すスイッチ制御モジュール215である。まず、ステップ405において、スイッチ制御モジュール215は、接続されているドライブのポート異常を検出していなければ(405:NO)、ステップ410に進む。スイッチ制御モジュール215は、ドライブのポート異常を検出した場合(405:YES)は、ステップ415に進む。
ステップ410において、スイッチ制御モジュール215は、通常処理を行う。通常処理の例は、PCIeスイッチ205全体の状態監視、ストレージコントローラのプロセッサとの通信制御、PCIeスイッチ205で発生した異常に対する処理などを含む。スイッチ制御モジュール215は、通常処理の一環でドライブのポート異常検出確認を実施する。
ステップ415において、スイッチ制御モジュール215は、ストレージコントローラのプロセッサ110にドライブのポート異常を通知するための、ドライブのポート異常を示すメッセージを作成する。メッセージは、ドライブの識別子及び異常の種類の情報を含む。
ステップ418において、スイッチ制御モジュール215は、ステップ415で生成したメッセージを、どのプロセッサ110に対して送信するかを決定する。スイッチ制御モジュール215は、メッセージ送信先管理テーブル600を参照して、メッセージを送信するプロセッサ110及び経路を決定する。メッセージ送信先管理テーブル600に関しては、後述する。
ステップ420において、スイッチ制御モジュール215は、ステップ410で作成したメッセージの送信先プロセッサ110それぞれに対する、書き込み先アドレスを確認する。書き込み先アドレスは、送信先プロセッサのメモリ130内のアドレスを示す。スイッチ制御モジュールは、書き込み先アドレスを確認するため、例えば、PCIeスイッチ205内のPCIeコンフィグレーションレジスタに設けられているメッセージアドレスフィールドを参照する。
ステップ425において、スイッチ制御モジュール215は、ステップ415で生成したメッセージを、ステップ420で確認したメモリ130の書き込み先アドレスに書き込むライト命令を、ストレージコントローラのプロセッサ110に対して発行する。プロセッサ110は、ライト命令に従ってメッセージを指定された書き込みアドレスに書き込む。
続いて、ステップ430において、スイッチ制御モジュール215は、他方のストレージコントローラのプロセッサ110に対して、ステップ415で生成したメッセージをステップ420で確認した書き込み先アドレスに書き込むライト命令を発行して、終了する。
図4で示したフローチャートによって、記憶ドライブにアクセス可能ないずれのプロセッサ(コントローラ)に対しても、ドライブ側の異常を通知することができるため、ストレージ装置として適切な障害処理を速やかに実施できる。
図5は、ドライブボックスから受領した異常通知に対するプロセッサの処理手順を示したフローチャートである。図5のフローチャートの処理により、記憶ドライブ側で発生した異常に対し、適切な障害処理を速やかに実施可能とする。
図5で示したフローチャートの実施主体は、ストレージコントローラのプロセッサ110で動作する制御プログラムである。なお、この制御プログラムは、プロセッサ110が使用するメモリ130に格納される。
まず、制御プログラムは、ステップ505において通常処理を行う。ここでの通常処理とは、ストレージ装置を制御するための処理、ホストコンピュータからのリード処理、ライト処理、プロセッサ110のメモリ130に設けられたキャッシュ領域に格納されたデータをドライブに格納するデステージング処理、その他、ビジネス継続性を提供するための機能にかかる処理、などである。
その中で、制御プログラムは、PCIeスイッチ205から受信した、記憶ドライブについての異常通知を確認する。この処理は、通常処理の中で、一定周期で実施してもよいし、割り込みに応じて即時に実施してもよい。
ステップ510において、制御プログラムは、異常通知を確認する条件が不成立の場合(510:NO)、ステップ505に戻る。制御プログラムは、ドライブからの異常通知を確認する条件が成立している場合(510:YES)、ステップ515に進む。
ステップ515において、制御プログラムは、記憶ドライブについての異常通知を格納するためのメモリ130における領域をチェックする。ステップ520において、制御プログラムは、異常通知が格納されていなければステップ505に戻る。制御プログラムは、異常通知が格納されていればステップ525に進む。
ステップ525において、制御プログラムは、格納された異常通知を参照し、異常が発生した記憶ドライブを特定する。ステップ530において、制御プログラムは、メモリ130に格納されている発行済みIO要求を管理する管理情報を参照して、ステップ525にて特定した記憶ドライブに対して発行済みのIO要求があるかどうかを確認する。さらに、制御プログラムは、メモリ130内のIO要求キューを参照して、ステップ525にて特定した記憶ドライブに対して未発行IO要求があるかどうかを確認する。
ステップ535において、制御プログラムは、ステップ535にて確認した、ステップ525にて特定したドライブに対する発行済みのIO要求、および未発行IO要求を取り消す(Abortまたはキャンセル)する。これにより、異常の記憶ドライブへのIO要求の発行を避け、また、未完了のIO要求を適切に処理することができる。
ステップ535までの処理を実施することで、ステップ525で特定したドライブにアクセス可能なすべてのプロセッサが、IOを停止することが可能となる。これによって、ステップ525で特定したドライブへのIOによるタイムアウトを未然に回避することができるため、適切な障害処理を速やかに実施できる。
ステップ540において、制御プログラムは、ステップ525にて特定した異常を通知したドライブに対して他の制御プログラムが障害処理を実施しているかを確認する。障害処理を実施している制御プログラムの情報は、例えば、ストレージコントローラ105それぞれの共有メモリ領域に格納されている。もし、ステップ525にて特定した異常を通知したドライブに対して他の制御プログラムが障害処理を実施している場合、適切に障害処理を完了させるために、実施中の障害処理に任せステップ505に戻る。
ステップ525にて特定した異常を通知したドライブに対して他の制御プログラムが障害処理を実施していない場合、該制御プログラムがステップ525にて特定した異常を通知したドライブの回復処理545を担当する。これにより、適切に回復処理が実行される。ここでの回復処理は、例えば、PCIeスイッチの障害情報のクリア、ドライブポートの初期化、などである。
図5で示したフローチャートを実施することで、制御プログラムは、ドライブ側で発生した異常に対し、適切な障害処理を速やかに実施することができる。
図6は、本実施形態のストレージ装置300における、メッセージ送信先管理テーブルを示す図である。ノード#欄605は、ストレージ装置300におけるノードにつけられた通し番号を示す。例えば、図3において、ノード100-1の番号はノード#0、ノード100-2の番号はノード#1とすることができる。
CTL#欄610は、ストレージ装置300におけるノードを構成するストレージコントローラにつけられた通し番号を示す。例えば、図3において、ノード100-1のストレージコントローラ105A-1の番号はCTL#0、ノード100-1のストレージコントローラ105B-1の番号はCTL#1とすることができる。
CPU#欄615は、ストレージ装置300におけるストレージコントローラに含まれるプロセッサにつけられた通し番号を示す。例えば、図3において、ノード100-1のプロセッサ110A-1の番号はCPU#0、ノード100-1のプロセッサ110B-1の番号はCPU#1とすることができる。
Port#欄620は、ストレージ装置300におけるノードとドライブボックスとの間の通信ポートにつけられた通し番号を示す。例えば、図1において、バックエンドポート122A-1の番号をPort#0、バックエンドポート122A-2の番号をPort#1、バックエンドポート122A-3の番号Port#2、バックエンドポート122A-4の番号をPort#3とすることができる。
上述のように、各レコードは、メッセージの送信先のプロセッサ及びメッセージが経由するポート(プロセッサとPCIeスイッチとが通信を行う経路)を示す。一つのPCIeスイッチは、1又は複数のポートを介して、一つのプロセッサと通信を行う。
Send Target欄625は、スイッチ制御モジュールが、図4のステップ415にて生成したメッセージを送信するように選択された送信先を示す。例えば、図6において、ノード#0、CTL#0、CPU#0、Port#0のSend Target欄625の値は「1」である。ノード#0、CTL#0、CPU#0、Port#2のレコードの、Send Target欄625の値は「0」である。
図6のメッセージ送信先管理テーブル600のSend Target欄625において、「1」は、レコードがメッセージ送信先であることを示す。Send Target「0」をメッセージの送信先としない、とする。すなわち、ノード#0、CTL#0、CPU#0、Port#0はメッセージの送信先であり、ノード#0、CTL#0、CPU#0、Port#2はメッセージの送信先としない。
図6のメッセージ送信先管理テーブル600は、ストレージコントローラのプロセッサ110で動作する制御プログラムが生成し、これをスイッチ制御モジュールが参照可能なPCIeスイッチ内のメモリ(図示せず)に格納する。そして、ストレージコントローラのプロセッサ110は、バックエンドインタフェースの稼働状況などに応じて、適宜メッセージ送信先管理テーブルを更新し、その都度PCIeスイッチ内のメモリに格納する。
図6のメッセージ送信先管理テーブル600の効果について説明する。まず、スイッチ制御モジュールは、このメッセージ送信先管理テーブル600を参照することで、図4のステップ415で生成したメッセージの送信すべき送信先を確認できる。これにより、スイッチ制御モジュールの負荷を軽減できる。
例えば、1つのプロセッサに対して、複数のバックエンドポートが備わっている場合に、複数のバックエンドポートを均等に使ってドライブボックスのドライブと通信している場合、いずれかのバックエンドポートを使ってメッセージを送信すればよいので、図6のノード#0、CTL#0、CPU#1、Port#0のみ、Send Target欄625の値を「1」にし、その他Port#1からPort#3のSend Target欄625の値を「0」としてもよい。
また、場合によっては、ストレージ装置300のバックエンドインタフェース120が何らかの要因で使用不能になっていることもあり得る。その際、ストレージコントローラのプロセッサ110は、使用不能になっているバックエンドポートのSend Target欄625の値を「0」と設定する。そうすることによって、スイッチ制御モジュール215は、メッセージ送信先管理テーブルを参照することで、使用不能なバックエンドインタフェース(バックエンドポート)を把握できるため、不要なメッセージ送信を回避できる。これにより、スイッチ制御モジュールの負荷を軽減できる。また、使用不能なバックエンドインタフェースにメッセージを送信したことによるエラーを回避できる。
上述のように、本実施形態のストレージ装置において、スイッチ装置(PCIeスイッチ)は、プロセッサとの通信プロトコルと、記憶ドライブとの間の通信プロトコルとの間の変換を行う。これによって、プロセッサと記憶ドライブとの間の通信性能が均一化される。
さらに、スイッチ装置は、記憶ドライブとの通信における異常を検知すると、接続されているプロセッサから選択したプロセッサそれぞれに異常を通知するメッセージを送信する。これにより、異常に対して速やかな処理が可能となる。なお、本実施形態の特徴は、上記構成例の通信プロトコルと異なる通信プロトコルを使用するストレージ装置に適用できる。
上述した実施形態は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
さらに上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
さらに各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記億装置、または、ICカード、SDカード、DVD等の記億媒体に置いてもよい。さらに制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
100……ノード、105A,105B……ストレージコントローラ、200……ドライブボックス、205A、205B……PCIeスイッチ、220A,220B……スイッチ制御モジュール、225A、225B……アドレス変換部

Claims (9)

  1. 複数のコントローラと、
    複数の記憶ドライブと、
    複数のスイッチ装置と、を含み、
    前記複数のスイッチ装置の各スイッチ装置は、
    複数のコントローラ側ポートを介して前記複数のコントローラ内の互いに異なるコントローラとそれぞれ通信する複数のコントローラ側スイッチと、
    複数のドライブ側ポートを介して、前記複数の記憶ドライブそれぞれと通信するドライブ側スイッチと、
    前記複数のコントローラ側スイッチと前記ドライブ側スイッチとの間においてアドレス変換を行うアドレス変換部と、を含み、
    前記ドライブ側スイッチは前記複数のコントローラ側スイッチに接続され、
    前記複数の記憶ドライブの各記憶ドライブは、前記複数のスイッチ装置に接続されており、
    前記複数のスイッチ装置の各スイッチ装置は、前記複数のドライブ側ポートの一つのポートにおいて異常を検出すると、前記異常を通知するコントローラを指定する情報を参照して、前記異常を通知するコントローラを前記複数のコントローラから選択する、ストレージ装置。
  2. 請求項1に記載のストレージ装置であって、
    前記複数のコントローラ側スイッチ及び前記ドライブ側スイッチは、それぞれ、仮想スイッチである、ストレージ装置。
  3. 複数のコントローラと、
    複数の記憶ドライブと、
    前記複数のコントローラそれぞれに接続される複数のコントローラ側ポートと、前記複数の記憶ドライブそれぞれに接続される複数のドライブ側ポートと、を含むスイッチ装置と、を含み、
    前記スイッチ装置は、
    前記複数のコントローラ側ポートと前記複数のドライブ側ポートとの間において、アドレスの変換を行い、
    前記複数のドライブ側ポートの一つのポートにおいて異常を検出すると、前記異常を示すメッセージを、前記複数のコントローラ側ポートそれぞれを介して、前記複数のコントローラに通知する、ストレージ装置。
  4. 請求項3に記載のストレージ装置であって、
    前記異常を通知されたコントローラは、前記異常が検出された前記一つのポートへ発行済み及び発行されるIO要求を取り消す、ストレージ装置。
  5. 請求項3に記載のストレージ装置であって、
    前記複数のコントローラにおける一つのコントローラは、他のコントローラが前記異常からの回復処理を行っていない場合に、前記異常からの回復処理を行う、ストレージ装置。
  6. 複数のスイッチ装置を含むストレージ装置における、通信方法であって、
    前記複数のスイッチ装置の各スイッチ装置は、
    複数のコントローラ側スイッチと、
    ドライブ側スイッチと、
    アドレス変換部と、を含み、
    前記通信方法は、
    前記複数のコントローラ側スイッチが、複数のコントローラ側ポートを介して複数のコントローラ内の互いに異なるコントローラとそれぞれ通信し、
    前記ドライブ側スイッチが、複数のドライブ側ポートを介して複数の記憶ドライブと通信し、
    前記アドレス変換部が前記複数のコントローラ側スイッチと前記ドライブ側スイッチとの間においてアドレス変換を行い、
    前記ドライブ側スイッチが、前記複数のコントローラ側スイッチと通信し、
    前記複数の記憶ドライブの各記憶ドライブが、前記複数のスイッチ装置と通信し、
    前記複数のスイッチ装置の各スイッチ装置が、前記複数のドライブ側ポートの一つのポートにおいて異常を検出すると、前記異常を通知するコントローラを指定する情報を参照して、前記異常を通知するコントローラを前記複数のコントローラから選択する、通信方法。
  7. ストレージ装置におけるスイッチ装置の通信方法であって、
    前記スイッチ装置が、複数のコントローラ側ポートそれぞれを介して複数のコントローラと通信を行い、
    前記スイッチ装置が、複数のドライブ側ポートそれぞれを介して、複数の記憶ドライブと通信を行い、
    前記スイッチ装置が、前記複数のコントローラ側ポートと前記複数のドライブ側ポートとの間において、アドレスの変換を行い、
    前記スイッチ装置が、前記複数のドライブ側ポートの一つのポートにおいて異常を検出すると、前記異常を示すメッセージを、前記複数のコントローラ側ポートそれぞれを介して、前記複数のコントローラに通知する、スイッチ装置の通信方法。
  8. 複数のコントローラと、
    複数の記憶ドライブと、
    複数のスイッチ装置と、を含み、
    前記複数のスイッチ装置の各スイッチ装置は、
    複数のコントローラ側ポートを介して前記複数のコントローラ内の互いに異なるコントローラとそれぞれ通信する複数のコントローラ側スイッチと、
    複数のドライブ側ポートを介して、前記複数の記憶ドライブそれぞれと通信するドライブ側スイッチと、
    前記複数のコントローラ側スイッチと前記ドライブ側スイッチとの間においてアドレス変換を行うアドレス変換部と、を含み、
    前記ドライブ側スイッチは前記複数のコントローラ側スイッチに接続され、
    前記複数の記憶ドライブの各記憶ドライブは、前記複数のスイッチ装置に接続されており、
    前記複数の記憶ドライブ及び前記複数のスイッチ装置を収容する、ドライブボックスと、
    複数のノードと、を含み、
    前記複数のノードの各ノードは、前記複数のコントローラ内のコントローラを含み、
    前記ドライブボックス内の前記複数のスイッチ装置は、前記複数のノードの一つのノード内の互いに異なるコントローラにそれぞれ接続されている、ストレージ装置。
  9. 請求項8に記載のストレージ装置であって、
    前記複数のスイッチ装置それぞれの前記複数のコントローラ側スイッチは、互いに異なるノードのコントローラにそれぞれ接続されている、ストレージ装置。
JP2019142713A 2019-08-02 2019-08-02 ストレージ装置 Active JP7080863B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2019142713A JP7080863B2 (ja) 2019-08-02 2019-08-02 ストレージ装置
CN202010103771.9A CN112306388B (zh) 2019-08-02 2020-02-20 存储装置
US16/818,047 US10901626B1 (en) 2019-08-02 2020-03-13 Storage device
US17/126,653 US11372552B2 (en) 2019-08-02 2020-12-18 Storage device
JP2022084994A JP7315753B2 (ja) 2019-08-02 2022-05-25 ストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019142713A JP7080863B2 (ja) 2019-08-02 2019-08-02 ストレージ装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022084994A Division JP7315753B2 (ja) 2019-08-02 2022-05-25 ストレージ装置

Publications (2)

Publication Number Publication Date
JP2021026421A JP2021026421A (ja) 2021-02-22
JP7080863B2 true JP7080863B2 (ja) 2022-06-06

Family

ID=74191054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019142713A Active JP7080863B2 (ja) 2019-08-02 2019-08-02 ストレージ装置

Country Status (3)

Country Link
US (2) US10901626B1 (ja)
JP (1) JP7080863B2 (ja)
CN (1) CN112306388B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656992B2 (en) 2019-05-03 2023-05-23 Western Digital Technologies, Inc. Distributed cache with in-network prefetch
JP6942163B2 (ja) * 2019-08-06 2021-09-29 株式会社日立製作所 ドライブボックス、ストレージシステム及びデータ転送方法
US11765250B2 (en) 2020-06-26 2023-09-19 Western Digital Technologies, Inc. Devices and methods for managing network traffic for a distributed cache
US11675706B2 (en) 2020-06-30 2023-06-13 Western Digital Technologies, Inc. Devices and methods for failure detection and recovery for a distributed cache
US11736417B2 (en) 2020-08-17 2023-08-22 Western Digital Technologies, Inc. Devices and methods for network message sequencing
CN113259273B (zh) * 2021-07-07 2021-11-09 北京国科天迅科技有限公司 交换机的控制方法、交换机、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009267771A (ja) 2008-04-25 2009-11-12 Hitachi Ltd 情報処理装置及びパス制御方法
JP6070732B2 (ja) 2015-01-27 2017-02-01 日本電気株式会社 入出力制御装置、入出力制御システム、入出力制御方法、および、プログラム
JP6070357B2 (ja) 2013-03-28 2017-02-01 富士通株式会社 ストレージ装置
WO2018173245A1 (ja) 2017-03-24 2018-09-27 株式会社日立製作所 ストレージシステム及びストレージシステムのバックエンド構築方法
JP2018190368A (ja) 2017-04-28 2018-11-29 株式会社日立製作所 ストレージシステム
JP2019071064A (ja) 2015-07-27 2019-05-09 グーグル エルエルシー スイッチへのアドレスキャッシュ

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2503513A1 (fr) * 1981-04-03 1982-10-08 Cit Alcatel Autocommutateur temporel a commande repartie
US7478178B2 (en) * 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
JP5179031B2 (ja) * 2006-09-13 2013-04-10 株式会社日立製作所 空きポートを有効に活用したストレージシステム
JP5022803B2 (ja) * 2006-12-13 2012-09-12 株式会社日立製作所 記憶制御装置
JP5127491B2 (ja) * 2008-02-08 2013-01-23 株式会社日立製作所 ストレージサブシステム及びこれの制御方法
CN101282497A (zh) * 2008-06-02 2008-10-08 刘家伟 多路音频任意交换、混音的装置
US8234459B2 (en) * 2009-03-13 2012-07-31 Hewlett-Packard Development Company, L.P. Switch module based non-volatile memory in a server
US8788753B2 (en) * 2011-01-14 2014-07-22 Lsi Corporation Systems configured for improved storage system communication for N-way interconnectivity
CN102650975B (zh) * 2012-03-31 2014-10-29 中国人民解放军国防科学技术大学 用于多硬件平台飞腾服务器的i2c总线的实现方法
US9250809B2 (en) * 2013-03-18 2016-02-02 Hitachi, Ltd. Compound storage system and storage control method to configure change associated with an owner right to set the configuration change
US9665309B2 (en) * 2014-06-27 2017-05-30 International Business Machines Corporation Extending existing storage devices in virtualized environments
US9823849B2 (en) * 2015-06-26 2017-11-21 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
TWI639919B (zh) * 2016-06-10 2018-11-01 利魁得股份有限公司 資料儲存系統中的多埠中介件架構
US10402361B2 (en) * 2017-04-28 2019-09-03 Hitachi, Ltd. Storage system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009267771A (ja) 2008-04-25 2009-11-12 Hitachi Ltd 情報処理装置及びパス制御方法
JP6070357B2 (ja) 2013-03-28 2017-02-01 富士通株式会社 ストレージ装置
JP6070732B2 (ja) 2015-01-27 2017-02-01 日本電気株式会社 入出力制御装置、入出力制御システム、入出力制御方法、および、プログラム
JP2019071064A (ja) 2015-07-27 2019-05-09 グーグル エルエルシー スイッチへのアドレスキャッシュ
WO2018173245A1 (ja) 2017-03-24 2018-09-27 株式会社日立製作所 ストレージシステム及びストレージシステムのバックエンド構築方法
JP2018190368A (ja) 2017-04-28 2018-11-29 株式会社日立製作所 ストレージシステム

Also Published As

Publication number Publication date
CN112306388A (zh) 2021-02-02
CN112306388B (zh) 2024-03-22
JP2021026421A (ja) 2021-02-22
US20210109661A1 (en) 2021-04-15
US20210034250A1 (en) 2021-02-04
US10901626B1 (en) 2021-01-26
US11372552B2 (en) 2022-06-28

Similar Documents

Publication Publication Date Title
JP7080863B2 (ja) ストレージ装置
US10789196B2 (en) Storage system
US8589723B2 (en) Method and apparatus to provide a high availability solid state drive
JP5511960B2 (ja) 情報処理装置、及びデータの転送方法
JP6273353B2 (ja) 計算機システム
US9411764B2 (en) Optimized redundant high availability SAS topology
US8898385B2 (en) Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment
US9823955B2 (en) Storage system which is capable of processing file access requests and block access requests, and which can manage failures in A and storage system failure management method having a cluster configuration
JP5635621B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
WO2017162177A1 (zh) 冗余存储***、冗余存储方法和冗余存储装置
JP2008112399A (ja) ストレージ仮想化スイッチおよびコンピュータシステム
US20110282963A1 (en) Storage device and method of controlling storage device
WO2017167106A1 (zh) 存储***
US7752340B1 (en) Atomic command retry in a data storage system
US20150143169A1 (en) Storage control device, non-transitory computer-readable recording medium having stored therein program, and control method
JP6461347B2 (ja) ストレージシステム、及び、記憶制御方法
JP7315753B2 (ja) ストレージ装置
JP5729043B2 (ja) ストレージ装置および制御装置
WO2016122602A1 (en) Systems and methods for sharing non-volatile memory between multiple access models
JP2007128551A (ja) ストレージエリアネットワークシステム
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200303

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220413

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220525

R150 Certificate of patent or registration of utility model

Ref document number: 7080863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150