JP2007128175A - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP2007128175A
JP2007128175A JP2005318694A JP2005318694A JP2007128175A JP 2007128175 A JP2007128175 A JP 2007128175A JP 2005318694 A JP2005318694 A JP 2005318694A JP 2005318694 A JP2005318694 A JP 2005318694A JP 2007128175 A JP2007128175 A JP 2007128175A
Authority
JP
Japan
Prior art keywords
controller
storage node
logical unit
storage
cpu
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
JP2005318694A
Other languages
English (en)
Other versions
JP4814617B2 (ja
Inventor
Naoto Matsunami
直人 松並
Tetsuya Shirogane
哲也 白銀
Satoru Nishimoto
哲 西本
Kenta Shiga
賢太 志賀
Naoko Iwami
直子 岩見
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 JP2005318694A priority Critical patent/JP4814617B2/ja
Priority to US11/331,115 priority patent/US7512746B2/en
Priority to EP06251232A priority patent/EP1785828B1/en
Priority to DE602006005311T priority patent/DE602006005311D1/de
Priority to CN200610057017.6A priority patent/CN1959618B/zh
Publication of JP2007128175A publication Critical patent/JP2007128175A/ja
Application granted granted Critical
Publication of JP4814617B2 publication Critical patent/JP4814617B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/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/0658Controller construction 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/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/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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ストレージシステムにおいて、コマンドに応じた処理を実行する処理装置の切り替えを容易に実現することを可能とする。
【解決手段】ストレージシステムは、複数のストレージノードとストレージノード内コントローラ間を接続する結合部とを備える。コントローラ内のメモリは、CPUコアと論理ユニットコントローラとの組み合わせに対応付けられた複数の共用メモリ領域を有する。第1のストレージノードのネットワークコントローラが第2のストレージノードの論理ユニットを対象としたコマンドを受領したときは、第1のストレージノードのCPUコアは、第2のストレージノードの論理ユニットコントローラに対応付けられた共用メモリ領域にコマンドを格納する。第2のストレージノードの論理ユニットコントローラは、共用メモリ領域に格納されたコマンドを結合部を介して取得する。
【選択図】図28

Description

本発明は、ストレージシステムに関し、特にストレージシステムにおいてコマンドに応じた処理を行う処理装置の切り替えを行う技術に関する。
ホストコンピュータとストレージシステムとを備えるデータ処理システムが、種々の用途に利用されている。ここで、ストレージシステムとは、データを格納するディスクとディスクを制御するコントローラとを有する少なくとも1つのストレージノードによって構成されたシステムである。ストレージノード内では、一般に、ディスクによって1つまたは複数の論理的な記憶領域(例えば「論理ユニット」と呼ばれる)が構築される。ホストコンピュータは、ストレージシステムのストレージノード内に構築された論理ユニットを対象としたコマンドを発行しながら、データ処理業務を実行する。ホストコンピュータからのコマンドを受領したストレージノード内では、コントローラ内の処理装置(例えばCPUコア)が、受領したコマンドに応じた処理を行う。
このようなストレージシステムにおいて、論理ユニットに格納されたデータ量の増大やホストコンピュータからのアクセス頻度の増大等により、特定のストレージノード内の特定の処理装置の負荷が過大となる場合がある。
他方、ストレージシステムにおいて、第1のストレージノード内の論理ユニットから第2のストレージノード内の論理ユニットにデータを移行する技術が開示されている(例えば特許文献1)。この技術では、データ移行後は、ホストコンピュータからのコマンドが第2のストレージノードによって受領される。そのため、データ移行前に第1のストレージノード内の処理装置によって実行されていたホストコンピュータからのコマンドに応じた処理は、データ移行後は、第2のストレージノード内の処理装置によって実行されることとなる。上述した特定の処理装置の負荷が過大である場合に、このようなホストコンピュータからのコマンドに応じた処理を実行する処理装置の切り替えを実行すれば、ストレージシステム内の負荷分散を図ることができる。
特開2000−187608号公報
上記従来の技術では、コマンドに応じた処理を実行する処理装置の切り替えを行う際に、データの移行やそれに伴う各種設定の変更を必要とし、処理が煩雑であるという問題があった。
本発明は、上述した従来の課題を解決するためになされたものであり、ストレージシステムにおいて、コマンドに応じた処理を実行する処理装置の切り替えを容易に実現することを可能とする技術を提供することを目的とする。
上記課題の少なくとも一部を解決するために、本発明の第1のストレージシステムは、
データを格納する論理的な記憶領域である少なくとも1つの論理ユニットと、前記論理ユニットを制御する少なくとも1つのコントローラと、をそれぞれ含む複数のストレージノードと、
それぞれ異なる前記ストレージノードに含まれる複数の前記コントローラ間を、前記コントローラと前記ストレージシステムに接続されるホストコンピュータとの間のアクセスパスを介することなく接続するコントローラ間結合部と、を備え、
前記ストレージノードの前記コントローラは、
少なくとも1つのCPUコアを含むCPUと、
ネットワークを介してホストコンピュータから前記ストレージシステム内の複数の前記論理ユニットの内の1つを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記CPUと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記CPU内の前記CPUコアと前記ストレージシステム内の複数の前記論理ユニットコントローラとの組み合わせのそれぞれと対応付けられた複数の第1の共用メモリ領域を有するメモリと、を含み、
前記複数のストレージノードの内の第1のストレージノードに含まれる前記ネットワークコントローラが、前記複数のストレージノードの内の第2のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときは、前記第1のストレージノード内の前記CPUコアは、受領されたコマンドに応じた処理を実行することによって、前記第2のストレージノードに含まれる論理ユニットに接続された前記論理ユニットコントローラに対するコマンドを、前記第1のストレージノード内の前記CPUコアと前記第2のストレージノード内の前記論理ユニットコントローラとの組み合わせに対応付けられた前記第1のストレージノード内の前記第1の共用メモリ領域に格納し、
前記第2のストレージノード内の前記論理ユニットコントローラは、前記第1のストレージノード内の前記第1の共用メモリ領域に格納されたコマンドを、前記コントローラ間結合部を介して取得し、取得したコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する。
このストレージシステムでは、複数のストレージノードの内の第1のストレージノードに含まれるネットワークコントローラが、複数のストレージノードの内の第2のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときは、第1のストレージノード内のCPUコアが、受領されたコマンドに応じた処理を行うことによって、第2のストレージノード内の論理ユニットに接続された論理ユニットコントローラに対するコマンドを、自らと第2のストレージノード内の論理ユニットコントローラとの組み合わせに対応付けられた第1のストレージノード内の第1の共用メモリ領域に格納する。また、第2のストレージノード内の論理ユニットコントローラは、第1のストレージノード内の第1の共用メモリ領域に格納されたコマンドを、コントローラ間結合部を介して取得し、取得したコマンドに従って、論理ユニットにおけるデータの入出力を制御する。そのため、第1のストレージノード内のCPUコアが、第2のストレージノードに含まれる論理ユニットを対象としたコマンドに応じた処理を行うことができる。従って、このストレージシステムでは、コマンドに応じた処理を実行する処理装置の切り替えの際に、論理ユニットに格納されたデータの移行等を行う必要が無く、切り替えを容易に実現することができる。
また、上記課題の少なくとも一部を解決するために、本発明の第2のストレージシステムは、
少なくとも1つのストレージノードを備え、
前記ストレージノードは、
データを格納する論理的な記憶領域である少なくとも1つの論理ユニットと、
複数のCPUコアを含むCPUと、
ネットワークを介してホストコンピュータから前記論理ユニットを対象としたコマンドを受領するネットワークコントローラと、
前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
前記CPUと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記CPUの複数のCPUコアのそれぞれと対応付けられた複数の第1の共用メモリ領域と、前記CPUと前記ネットワークコントローラとで共用されるメモリ領域であって、前記CPUの複数のCPUコアのそれぞれと対応付けられた複数の第2の共用メモリ領域と、を有するメモリと、を含み、
前記ネットワークコントローラは、ホストコンピュータから受領されたコマンドに応じた処理を行う前記CPUコアである担当CPUコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有すると共に、前記担当CPUコアに対応付けられた前記第2の共用メモリ領域に受領されたコマンドを格納し、
前記担当CPUコアは、前記第2の共用メモリ領域に格納されたコマンドに応じた処理を実行することによって、前記論理ユニットコントローラに対するコマンドを、前記担当CPUコアに対応付けられた前記第1の共用メモリ領域に格納し、
前記論理ユニットコントローラは、前記第1の共用メモリ領域に格納されたコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する。
このストレージシステムでは、ネットワークコントローラが、ホストコンピュータから受領したコマンドに応じた処理の担当CPUコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有していると共に、担当CPUコアに対応付けられた第2の共用メモリ領域に受領されたコマンドを格納する。担当CPUコアは、第2の共用メモリ領域に格納されたコマンドに応じた処理を行うことによって、論理ユニットコントローラに対するコマンドを、自らに対応付けられた第1の共用メモリ領域に格納する。論理ユニットコントローラは、第1の共用メモリ領域に格納されたコマンドに従って、論理ユニットにおけるデータの入出力を制御する。そのため、ネットワークコントローラにおいて担当CPUコアの設定を変更するだけで、変更後の担当CPUコアによる、自らに対応付けられた第1の共用メモリ領域および第2の共用メモリ領域を用いたコマンドに応じた処理が実行される。従って、このストレージシステムでは、コマンドに応じた処理を実行する処理装置の切り替えを容易に実現することができる。
なお、本発明は、種々の態様で実現することが可能であり、例えば、ストレージシステム、ストレージ装置、ストレージシステムまたはストレージ装置の制御方法、これらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを含むコンピュータプログラムセット、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
本発明をコンピュータプログラムまたはそのコンピュータプログラムを記録した記録媒体等として構成する場合には、計算機システム全体の動作を制御するプログラムとして構成することも可能であるし、計算機や記憶サブシステム毎の動作を制御するプログラムとして構成することも可能である。
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。なお、以下に説明する実施形態は一例であってこれによって本発明が限定されるものではない。
A.第1実施例:
A−1.システムの構成:
A−2.ホストコマンド実行処理:
A−3.コントローラ内担当CPUコア切り替え:
A−4.ストレージノード100のコントローラ110内におけるアドレス空間およびメモリマップ:
A−5.ストレージシステム1000のアドレス空間およびメモリマップ:
A−6.ノード間担当CPUコア切り替え:
A−7.ホストコンピュータとストレージノードとの間のアクセスパス変更:
A−8.管理画面の例:
A−9.第1実施例の応用:
B.第2実施例:
C.変形例:
A.第1実施例:
A−1.システムの構成:
図1は、本発明の第1実施例におけるデータ処理システムの構成を概略的に示す説明図である。第1実施例のデータ処理システム10は、ホストコンピュータ(以下「Host」とも称する)200と、ホストコンピュータ200に接続されたストレージシステム1000と、を備えている。図1の例では、データ処理システム10は3つのホストコンピュータ200(200a、200b、200c)を備えているが、データ処理システム10は少なくとも1つのホストコンピュータ200を備えていればよい。
なお本実施例のデータ処理システム10では、ホストコンピュータ200とストレージノード100とを接続するネットワークとしてIPネットワークを想定しており、同様に、ネットワークプロトコルとしてTCP/IPプロトコルを、ホストコンピュータ200とストレージノード100との間のデータプロトコルとしてブロック型I/OインタフェースであるiSCSIプロトコルを用いるものと想定しているが、本発明はこれらに限られるものではない。
また、本明細書および図面では、データ処理システム10内に同じ構成要素が複数ある場合には、それらの構成要素の名前および符号の末尾に、それぞれを区別するための識別子として小文字のアルファベット(a、b、c・・・)を付加している。例えば、図1に示すように、3台のホストコンピュータ200は、それぞれ「ホストコンピュータa(Host a)」、「ホストコンピュータb(Host b)」、「ホストコンピュータc(Host c)」と表され、その符号はそれぞれ「200a」、「200b」、「200c」と表される。ただし、個々の構成要素を特に区別する必要のないときは、付加した識別子を省略する場合もある。
ストレージシステム1000(図1)は、ストレージノード(以下「SN」とも称する)100と、スイッチ300と、管理装置400と、ネームサーバ500と、を含んでいる。なお、ネームサーバ500は、本実施形態で説明するTargetネーム引継ぎによるアクセスパスの切替を行う際に存在していることが必要であるが、後述する別の方法によりアクセスパスの切替を行う場合には必要ではない。
ストレージノード100は、ホストコンピュータ200からアクセスされる論理的な記憶領域である論理ユニット(以下「LU」とも称する)190と、論理ユニット190を制御してホストコンピュータ200からのアクセス要求を実行するコントローラ(以下「CTL」とも称する)110と、を含んでいる。なお、本明細書および図面では、1つのストレージノード100内の論理ユニット190を個々に区別するため、論理ユニット190の名前および符号に連続番号(0以上の整数)を付加している。
本実施例のストレージシステム1000は、このように論理ユニット190およびコントローラ110を備えるストレージノード100を1つ以上含むように構成されたシステムである。ストレージシステム1000では、要求容量や要求性能に応じて、ストレージノード100の増減設を行うことが可能である。以下では、図1に示すように、ストレージシステム1000に3つのストレージノード100が含まれている例を用いて説明を行う。
ストレージノード100のコントローラ110は、ストレージシステム1000内の他のストレージノード100のコントローラ110と、ノード間コントローラ結合部102を介して接続されている。このノード間コントローラ結合部102は、スイッチ300を介することなく、すなわち、ホストコンピュータ200とコントローラ110との間のアクセスパスを介することなく、コントローラ110同士を接続している。なお、ノード間コントローラ結合部102の詳細構成については、後述する。
スイッチ300は、ストレージノード100のコントローラ110と、管理装置400と、ネームサーバ500と、ホストコンピュータ200と、を互いに接続している。管理装置400は、ストレージシステム1000の管理を行う装置である。ネームサーバ500は、ストレージノード100およびホストコンピュータ200の名前(ネーム)管理および論理的接続関係を管理するための装置である。
なお、図1の例では、スイッチ300と管理装置400とネームサーバ500とは、ストレージシステム1000内に含まれているが、スイッチ300と管理装置400とネームサーバ500とが、ストレージシステム1000内に含まれず、ストレージシステム1000とは独立した構成要素であるとしてもよい。また、図1の例では、管理装置400がスイッチ300を介したネットワーク経由で各コントローラ110と通信する「InBand型」の通信形態を想定しているが、各コントローラ110に管理のために専用に設けられた管理ネットワーク(図示せず)に接続するための管理インタフェースが設けられ、管理装置400が管理ネットワークを介して各コントローラ110の管理インタフェースに接続して通信する「Out of Band型」の通信形態をとることも可能である。
ホストコンピュータ200は、CPU、メモリ、及びネットワークコントローラ(いずれも図示せず)を有する計算機であり、メモリ内にイニシエータ管理テーブル210を有している。イニシエータ管理テーブル210については後述する。
図2は、ストレージノード100(図1)のハードウェア構成の一例を示す説明図である。図2に示すように、ストレージノード100は、コントローラ(CTL)110と、ファイバチャネル(以下「FC」とも称する)192を介してコントローラ110に接続された複数のディスク194と、を含んでいる。なお、ディスク種としてはFC以外にもSATA、SAS、パラレルSCSI等も採用することができ、この場合、インタフェースとしてもそれぞれ対応するものを採用することによって同様に実施可能である。
コントローラ110は、複数のディスク194に対する入出力を制御する装置であり、ストレージノード100全体を制御するCPU120と、スイッチ300(図1)に接続するためのネットワークコントローラ(以下「NWC」とも称する)130と、ブリッジ140と、ファイバチャネル192を制御するFCコントローラ(以下「FCC」とも称する)150と、メモリ160と、を含んでいる。メモリ160は、CPU120が実行する制御プログラムや制御データを格納すると共に、ディスクアクセスの高速化のためのキャッシュとしても使用される。ブリッジ140は、CPU120およびメモリ160間のデータ若しくはプログラムの転送と、ネットワークコントローラ130およびメモリ160間のデータ転送と、FCコントローラ150およびメモリ160間のデータ転送と、を制御する。なお、図1に示したように、ストレージノード100内のコントローラ110は他のストレージノード100内のコントローラ110とノード間コントローラ結合部102を介して接続されているが、この接続の構成については図3に示すものとし、図2では図示を省略している。FCコントローラ150は、本発明における論理ユニットコントローラに相当する。なお、コントローラ110が、制御プログラムや制御データを格納するためのメモリとキャッシュとして使用されるメモリとを別々のメモリとして含んでいるとしてもよい。
図3は、ノード間コントローラ結合部102(図1)の構成を示す説明図である。図3に示すように、各ストレージノード100内のコントローラ110に含まれるブリッジ140は、スイッチ142(以下「SW」とも称する)を有している。各ストレージノード100のコントローラ110(CTLa、CTLb、CTLc)は、スイッチ142間を接続する接続線104(以下「ノード間コントローラ接続線104」と呼ぶ)によって、互いに接続されている。ノード間コントローラ結合部102は、各コントローラ110内のスイッチ142と、ノード間コントローラ接続線104と、から構成されている。
なお、図3の例では、ノード間コントローラ接続線104のそれぞれは、2本の線の組によって構成されている。このようにすれば、ノード間コントローラ接続線104の1本が障害により不通になっても他の1本が使用できるため、信頼性を向上させることができる。また、2本の線の内の1本を上り専用に、他の1本を下り専用に用いることによって、それぞれの使用帯域を分割することができ、これによってノード間コントローラ接続線104における通信性能を向上させることもできる。なお、ノード間コントローラ接続線104のそれぞれを、1本の線によって構成することも可能である。また、図3に破線で示した接続線は、ストレージノード100を将来増設した際に設けるノード間コントローラ接続線である。
図4は、ストレージノード100に含まれる論理ユニット190(図1)の構成の一例を示す説明図である。図4(a)には、RAID(Redundant Arrays of Inexpensive Disks)グループ(以下「RG」とも称する)の構成の一例を示している。図4(a)に示した例では、ストレージノード100に含まれる3つのディスク194(図2)によってRAID5型のRAIDグループ(RG)が構成されており、そのストライプサイズはSブロックとなっている。ここで「ブロック」とは、SCSIプロトコル仕様で定義された論理ブロックを意味している。一般に、512バイトのディスクセクタが1つの論理ブロックとして定義されることが多い。なお、RAIDのレベルやブロックサイズは任意に設定可能である。また、RAIDグループを構成するために用いるディスク194の数は、2台以上であれば何台であってもよい。
図4(a)に示したRAIDグループにおいては、RAID5型の構成の例であり、一連のデータはSブロック毎に分割され、分割後のデータ(図4(a)において「Di」(iは0以上の整数)と表す)は3つのディスク194に分散配置される。また、各々異なるディスク194内に存在する3つの記憶領域からストライプ列が構成され、ストライプ列中の2つの記憶領域にはデータが格納され、残りの1つの記憶領域には、他の2つの記憶領域に格納されたデータから排他的論理和を計算することにより生成されたパリティデータ(図4(a)において「Pj」(jは0以上の整数)と表す)が格納される。
図4(b)には、論理ユニット190の構成例を示している。上述のように構成されたRAIDグループには、図4(b)に示すように、2つの論理ユニット190(LU0、LU1)が構成されている。LU0は容量kブロックの論理ユニット190であり、LU1は容量nブロックの論理ユニット190である。RAIDグループ内での論理ブロックアドレス(以下「LBA」とも称する)は、図4(b)に示すように、論理ユニットLU0が0からk−1までであり、論理ユニットLU1がkから(k+n−1)までとなっている。なお、ひとたび論理ユニット190が構築されると、各論理ユニット190は、ホストコンピュータ200(図1)からは論理ユニット190毎にローカルなLBA(以下「Local LBA」とも称する)を用いてアクセスされ、それぞれの論理ユニット190はあたかも独立したディスクのように振る舞うことができる。すなわち論理ユニットLU0のLocal LBAは、0から始まってk−1が最終アドレスとなり、論理ユニットLU1のLocal LBAは、同じく0から始まってn−1が最終アドレスとなる。
図5は、ストレージノード100のコントローラ110に含まれるCPU120(図2)の構成の一例を示す説明図である。本実施例のCPU120は、2つのコア122を含んでいる。すなわち、本実施例のCPU120は、マルチコアCPUである。ここで、コア122は、CPU120において、実際に演算などの処理を行う部分である。図1に示すように、本実施例のストレージシステム1000は、3つのストレージノード100を備えており、各ストレージノード100のコントローラ110内のCPU120は、それぞれ2つのコア122を含んでいるため、ストレージシステム1000内には、合計6つのコア122が存在することとなる。なお、本明細書および図面では、1つのCPU120に含まれる2つのコア122を区別するために、一方のコア122の名前および符号の末尾に識別子「p」を付加し、他方のコア122の名前および符号の末尾に識別子「q」を付加している。
図6は、ストレージノード100のコントローラ110に含まれるFCコントローラ150(図2)の構成の一例を示す説明図である。本実施例のFCコントローラ150は、複数のFCCドアベル154を有するドアベルレジスタ152と、CPU対応器156と、複数の割り込み線(以下「INTF」とも称する)158と、を含んでいる。
FCCドアベル154は、CPU120のコア122(図5)とFCコントローラ150との間の通信のために準備された領域である。FCコントローラ150には、ストレージシステム1000(図1)内に存在する複数のコア122のそれぞれに対応付けられたFCCドアベル154が準備される。複数のコア122とFCCドアベル154との対応は、CPU対応器156によって設定される。なお、必ずしも、コア122とFCCドアベル154との対応をCPU対応器156によって設定する必要は無く、ストレージシステム1000内に存在しうるコア122の数分のFCCドアベル154をFCコントローラ150に準備し、コア122とFCCドアベル154との対応を固定的に設定してもよい。また、本明細書および図面では、個々のFCCドアベル154を区別するために、FCCドアベル154の名前の末尾に括弧付きの連番(0以上の整数)を付加している。FCCドアベル154は、本発明における第1の通信領域に相当する。
割り込み線158は、FCコントローラ150からCPU120のコア122(図5)に割り込み要求を発行するために準備されている。FCコントローラ150には、ストレージシステム1000(図1)内の複数のコア122のそれぞれに対応付けられた割り込み線158が準備される。本明細書および図面では、個々の割り込み線158を区別するために、割り込み線158の名前の末尾に括弧付きの連番(0以上の整数)を付加している。
図7は、ストレージノード100のコントローラ110に含まれるネットワークコントローラ130(図2)の構成の一例を示す説明図である。本実施例のネットワークコントローラ130は、複数のNWCドアベル134を有するドアベルレジスタ132と、複数の割り込み線(以下「INTN」とも称する)138と、を含んでいる。
NWCドアベル134は、CPU120のコア122(図5)とネットワークコントローラ130との間の通信のために準備された領域である。ネットワークコントローラ130には、コントローラ110内のCPU120に含まれる2つのコア122のそれぞれに対応付けられたNWCドアベル134が準備される。また、割り込み線138は、ネットワークコントローラ130からCPU120のコア122(図5)に割り込み要求を発行するために準備されている。ネットワークコントローラ130には、コントローラ110内のCPU120に含まれる2つのコア122のそれぞれに対応付けられた割り込み線138が準備される。本明細書および図面では、個々のNWCドアベル134および割り込み線138を区別するために、NWCドアベル134および割り込み線138の名前の末尾に括弧付きの連番(0以上の整数)を付加している。NWCドアベル134は、本発明における第2の通信領域に相当する。
図8は、ストレージノード100のコントローラ110に含まれるメモリ160(図2)の構成の一例を示す説明図である。メモリ160は、キャッシュ領域162と、制御データ領域164と、制御プログラム領域166と、を含んでいる。
キャッシュ領域162は、ホストコンピュータ200(図1)からのディスクアクセス高速化のためにディスク194(図2)に格納されるべきデータやディスク194から読み出されたデータのコピーを一時的に保管するディスクキャッシュ(以下単に「キャッシュ」とも称する)を構成する領域である。
制御データ領域164は、CPU120(図2)が制御プログラムを実行する際に参照する各種データ等を格納する領域である。制御データ領域164には、ストレージシステム1000(図1)の構成情報が登録されているシステム構成管理テーブル171と、ストレージノード100が有する論理ユニット190(図1)の構成情報が登録されているLU管理テーブル172と、論理ユニット190に設けられた論理的アドレスであるターゲットネーム(以下「Target」若しくは「ターゲット」とも称する)が登録されているターゲット管理テーブル173と、論理ユニット190にアクセスするアクセス元の論理アドレスであるイニシエータネーム(以下「Initiator」若しくは「イニシエータ」とも称する)が登録されているイニシエータ管理テーブル174と、が格納されている。
なお、ターゲットネーム若しくはイニシエータネームとしては、例えばiSCSIプロトコルを用いるシステムにおけるiSCSIネーム、FCシステムにおけるWWN(World Wode Name)等が該当する。しかしターゲットネームはアクセス先に割り振られたグローバルに一意であり作成されてから削除されるまで変化しない識別子であればこれらに限られることはなく、同様にイニシエータネームもアクセス元に割り振られたグローバルに一意であり作成されてから削除されるまで変化しない識別子であればこれらに限られることはない。なお、アクセス先若しくはアクセス元を識別する情報としてターゲットアドレス若しくはイニシエータアドレスが用いられる場合もある。ターゲットアドレスとしてはFCプロトコルを用いるシステムにおけるDestination ID等があり、イニシエータアドレスとしてはFCプロトコルを用いるシステムにおけるSource ID等があるが、勿論これらに限られることはない。ターゲットネーム及びターゲットアドレスは共にアクセス先を識別する識別情報であることに変わりはなく、イニシエータネーム及びイニシエータアドレスは共にアクセス元を識別する識別情報であることに代わりはないので、ターゲットネームの代わりにターゲットアドレスを用いたり、イニシエータネームの代わりにイニシエータアドレスを用いたりすることも可能である。なお、以下ターゲットネームとターゲットアドレスを区別することなく、便宜上、「ターゲットネーム」と呼ぶこととする。またイニシエータに関しても同様である。
制御データ領域164(図8)には、また、複数のNWCメールボックス176と、複数のFCCメールボックス178と、が格納されている。ここで、NWCメールボックス(以下「NWC MB」とも称する)176は、CPU120のコア122(図5)とネットワークコントローラ130(図2)との共有メモリ領域としての機能を有している。メモリ160の制御データ領域164には、コントローラ110内のCPU120に含まれる2つのコア122のそれぞれに対応付けられたNWCメールボックス176が準備される。各NWCメールボックス176は、図8に示すように、後述するコマンドを格納するコマンド格納領域と、後述するステータスを格納するステータス格納領域と、を含んでいる。なお、本明細書および図面では、個々のNWCメールボックス176を区別するために、NWCメールボックス176の名前の末尾に括弧付きの連番(0以上の整数)を付加している。NWCメールボックス176は、本発明における第2の共用メモリ領域に相当する。
また、FCCメールボックス178(以下「FCC MB」とも称する)は、CPU120のコア122(図5)とFCコントローラ150(図2)との共有メモリ領域としての機能を有している。メモリ160の制御データ領域164には、当該メモリ160が含まれるコントローラ110内のコア122とストレージシステム1000(図1)内の複数のFCコントローラ150との組み合わせのそれぞれに対応付けられたFCCメールボックス178が準備される。すなわち、ストレージノード100のコントローラ110には、自ストレージノード100内のFCコントローラ150に限らず、他ストレージノード100内のFCコントローラ150と対応付けられたFCCメールボックス178が含まれている。各FCCメールボックス178は、図8に示すように、後述するコマンドを格納するコマンド格納領域と、後述するステータスを格納するステータス格納領域と、を含んでいる。なお、本明細書および図面では、個々のFCCメールボックス178を区別するために、FCCメールボックス178の名前の末尾に括弧付きの連番(0以上の整数)を付加している。FCCメールボックス178は、本発明における第1の共用メモリ領域に相当する。
制御プログラム領域166は、CPU120(図2)が実行する制御プログラムを格納する領域である。制御プログラム領域166には、制御プログラムを実行するための環境となる基本プログラムであるオペレーティングシステムプログラム180と、TCP/IPプロトコルを用いてスイッチ300(図1)を介したデータの送受信を実行するTCP/IPプログラム181と、ホストコンピュータ200とストレージノード100(図1)との間をiSCSIプロトコルで接続するためのiSCSI制御プログラム182と、イニシエータであるホストコンピュータ200からiSCSIのターゲットである論理ユニット190(図1)へのアクセスを受領する際に、ホストコンピュータ200からのコマンドの受領や受領したコマンドの解釈等のターゲット処理を制御するターゲット制御プログラム183と、ストレージノード100が備える複数のディスク194(図2)から構成されるRAIDを制御するためのRAID制御プログラム184と、キャッシュ領域162に構成されるディスクキャッシュを管理し制御するためのキャッシュ制御プログラム185と、単体のディスク194に対するコマンド生成等のディスク制御処理を行うディスク制御プログラム186と、FCコントローラ150(図2)を制御しファイバチャネル192経由でディスク194とコマンドやデータ等の送受信を行うFC制御プログラム187と、複数のディスク194からRAIDを構成し、そこから論理的記憶領域である論理ユニット190を構成するLU制御プログラム188と、iSCSIプロトコル仕様に基づきネームサーバ500との間でネーム管理のための通信を行う通信プログラム189と、が格納されている。
なお上述したように、本実施例のデータ処理システム10では、ホストコンピュータ200とストレージノード100とを接続するネットワークとしてIPネットワークを想定しており、同様に、ネットワークプロトコルとしてTCP/IPプロトコルを、ホストコンピュータ200とストレージノード100との間のデータプロトコルとしてブロック型I/OインタフェースであるiSCSIプロトコルを用いるものと想定しているが、本発明はこれらに限られるものではない。データ処理システム10において、他のプロトコルが用いられる場合には、ストレージノード100内のメモリ160の制御プログラム領域166には、用いられるプロトコルに応じた所定のプログラムが格納される。
図9は、LU管理テーブル172(図8)の一例を示す説明図である。図9には、ストレージノード100a(図1)のメモリ160上の制御データ領域164(図8)に格納されているLU管理テーブル172の内容を示している。ストレージノード100の有するLU管理テーブル172には、当該ストレージノード100に含まれる論理ユニット190の情報が記載されている。
LU管理テーブル172において、「LU」欄は論理ユニット190(図1)の番号を示している。同様に、「RG」欄は論理ユニット190が構築されているRAIDグループ(RG)の識別情報を、「Start RG LBA」欄は論理ユニット190が構築されているRG内における論理ユニット190の先頭RG LBA(図4)を、「LEN」欄は論理ユニット190の容量(単位はブロック)を、それぞれ示している。また、「Initiator」欄は論理ユニット190へのアクセスが許可されているイニシエータ(例えばホストコンピュータ200に設定されているイニシエータ)のイニシエータネームを示しており、「Target」欄は論理ユニット190に割り当てられているターゲットネームを示している。
LU管理テーブル172によって、例えば、ストレージノード100aに含まれる論理ユニット190「LUa0」(図1)は、RAIDグループ「RGa0」に存在し、先頭RG LBAが0であり、容量がkブロックであり、アクセスを許可されたイニシエータが「Init−a0」のネームを持つイニシエータ(例えばホストコンピュータ200a(図1))であり、ターゲットネームが「Targ−a0」であることがわかる。なお、データ処理システム10内の他のLU管理テーブル172の内容も図9に示した内容と同様である。
ここで、1つの論理ユニット190には1つのターゲットが割り当てられる。一方、1つのターゲットに対して複数のイニシエータがアクセスを許可される場合がある。LU管理テーブル172の「Initiator」欄にイニシエータネームが登録されると、ターゲット制御プログラム183(図8)が、登録されたイニシエータネームを有するイニシエータ以外からの論理ユニット190へのアクセスを抑止する。1つの論理ユニット190に対して複数のイニシエータからのアクセスを許可する場合には、LU管理テーブル172の「Initiator」欄に複数のエントリが作成され、複数のイニシエータネームが登録される。なお、論理ユニット190に対してアクセス制限をかけない場合、すなわち全てのイニシエータに対して論理ユニット190へのアクセスを許可する場合には、この論理ユニット190に対応する「Initiator」欄にはネームを登録しない(NULLとする)。
なお、管理装置400は、ストレージシステム1000(図1)内のすべてのストレージノード100が有するLU管理テーブル172を統合したLU管理テーブルを有しているものとする。
図10は、ターゲット管理テーブル173(図8)の一例を示す説明図である。図10には、ストレージノード100a(図1)のメモリ160上の制御データ領域164(図8)に格納されているターゲット管理テーブル173の一部(論理ユニット190a0(図1)に関する部分)を示している。ストレージノード100の有するターゲット管理テーブル173には、当該ストレージノード100に含まれる論理ユニット190に設定されたターゲットの情報が記載されている。
ターゲット管理テーブル173において、「Target」欄は同テーブルのエントリが管理するターゲットのネームを示している。同様に、「Initiator」欄は同ターゲットへのアクセスが許可されているイニシエータのネームを、「Entity」欄はターゲットを持つ装置の実体を特定する識別子を、「Portal」欄は同ターゲットが存在するポータルを、「Portal Gr」欄は同ポータルが属するポータルグループを、それぞれ示している。
ここでポータルとは、ストレージノード100のネットワークコントローラ130(図2)もしくはホストコンピュータ200のネットワークコントローラ(図示せず)が備える、物理ポートのIPアドレスとTCPポート番号の対で構築された、論理的なポートを意味している。同一の物理ポートに複数のTCPポートをそなえれば複数のポータルを備えることができる。ポータルグループは複数のポータルを1つの集合体として単一の通信路として使用するためのグループのことである。以下本明細書ではポータルグループについてはグループ名以上のことについては言及しない。
ターゲット管理テーブル173によって、例えば、ターゲット「Targ−a0」は、ストレージノード100a(SNa)のポータルTa0に存在し、ポータルグループTPGa0に属し、イニシエータ「Init−a0」にアクセスを許可していることがわかる。なお、データ処理システム10内の他のターゲット管理テーブルの内容も図10に示した内容と同様である。
図11は、イニシエータ管理テーブル210(図1)の一例を示す説明図である。図11には、ホストコンピュータ200a(図1)の有するイニシエータ管理テーブル210aの内容を示している。
イニシエータ管理テーブル210において、「Initiator」欄は同テーブルのエントリが管理するイニシエータのネームを示している。同様に、「Entity」欄はイニシエータを持つ装置の実体を特定する識別子を、「Portal」欄は同イニシエータが存在するポータルを、「Portal Gr」欄は同ポータルが属するポータルグループを、それぞれ示している。
イニシエータ管理テーブル210によって、例えば、イニシエータ「Init−a0」は、ホストコンピュータ200aのポータルIa0に存在し、ポータルグループIPGa0に属していることがわかる。なお、データ処理システム10内の他のイニシエータ管理テーブルの内容も図11に示した内容と同様である。
図12は、ネームサーバ500(図1)の構成の一例を示す説明図である。ネームサーバ500は、ネームサーバ500の全体を制御するCPU520と、スイッチ300に接続するためのネットワークコントローラ530と、ブリッジ540と、メモリ560と、を含んでいる。ブリッジ540は、CPU520およびメモリ560間のデータおよびプログラムの転送や、ネットワークコントローラ530およびメモリ560間のデータ転送を制御する。メモリ560は、CPU520が実行する制御プログラムおよび制御データを格納する。メモリ560は、制御データ領域562と、制御プログラム領域564と、を有している。
メモリ560の制御データ領域562は、CPU520が制御プログラムを実行する際に参照する各種データ等を格納する領域である。制御データ領域562には、iSCSIにおけるイニシエータおよびターゲットの名前、及びイニシエータとターゲット間の接続関係が登録されるネーム管理テーブル571が格納されている。ネーム管理テーブル571には、データ処理システム10内に存在するターゲット管理テーブル(図10)およびイニシエータ管理テーブル(図11)が含まれている。すなわち、ネームサーバ500は、データ処理システム10内のイニシエータのイニシエータ管理テーブルと、ターゲットのターゲット管理テーブルとを、ネーム管理テーブル571を用いて一元管理すると共に、イニシエータとターゲットとの組を管理している。なお、ネームサーバ500が保有するネーム管理テーブル571と同様のテーブルは、管理装置400にも格納されている。
制御プログラム領域564(図12)は、CPU520が実行する制御プログラムを格納する領域である。制御プログラム領域564には、制御プログラムを実行するための環境となる基本プログラムであるオペレーティングシステムプログラム580と、TCP/IPプロトコルを用いてスイッチ300を介したデータの送受信を実行するTCP/IPプログラム581と、スイッチ300に接続するiSCSIノード(ホストコンピュータ200およびストレージノード100)のネームを管理すると共にイニシエータとiSCSIノード間の対応関係を制御するネーム管理プログラム582と、iSCSIプロトコル仕様に基づき各イニシエータ(例えばホストコンピュータ200)およびターゲット(例えばストレージノード100)のネーム管理のための通信を行う通信プログラム583と、が格納されている。
なお本実施例では、ネームサーバ500としてiSCSIプロトコル仕様のiSNS(iSCSI Name Server)を想定しているが、本発明の実施に際してはiSNS以外のネームサーバ仕様を用いてネームサーバを構築しても構わない。
図13は、ストレージシステム1000の製品形態の一例を示す説明図である。図13の例は、いわゆるラックマウント型の例である。19インチラック1100の最下段に、スイッチ300が設置され、その上段に3つのストレージノード100が、ストレージノード100a、ストレージノード100b、ストレージノード100cの順に設置される。各ストレージノード100は、コントローラ筐体1200と、ディスク筐体1300とから構成される。コントローラ筐体1200にはコントローラ110が装填され、ディスク筐体1300にはディスク194が装填される。なお、図13のディスク筐体1300における破線で囲まれたスペースは、ディスク194が未装填であるスペースを示している。ストレージノード100cの上段には、ストレージノードを増設するためのスペース、すなわち、コントローラ筐体1200もしくはディスク筐体1300が搭載されていないスペース(ハッチングを付して示す)が設けられ、さらに上段には、ネームサーバ500と管理装置400とが設置される。
図14は、ストレージシステム1000の製品形態の他の一例を示す説明図である。図14の例は、いわゆるブレード型の例である。19インチラック1100の最下段に、スイッチ300が設置される。その上段に、すべてのストレージノード100が共用するコントローラ筐体1200が設置され、コントローラ筐体1200内にストレージシステム1000内のすべてのコントローラ110が装填される。なお、図14のコントローラ筐体1200における破線で囲まれたスペースは、コントローラ110を増設するためのスペースを示している。コントローラ筐体1200の上段には、3つのストレージノード100のディスク筐体1300が、ストレージノード100a用(1300a)、ストレージノード100b用(1300b)、ストレージノード100c用(1300c)の順に設置され、各ディスク筐体1300内にディスク194が装填される。なお、図14のディスク筐体1300における破線で囲まれたスペースは、ディスク194が未装填であるスペースを示している。ストレージノード100c用のディスク筐体1300cの上段には、ディスク筐体1300を増設するためのスペース、すなわち、ディスク筐体1300が搭載されていないスペース(ハッチングを付して示す)が設けられ、さらに上段には、ネームサーバ500と、管理装置400とが設置される。
A−2.ホストコマンド実行処理:
図15および図16は、ストレージシステム1000のストレージノード100(図1)におけるホストコマンド実行処理の流れを示すフローチャートである。また、図17および図18は、ストレージノード100におけるホストコマンド実行処理の概要を示す説明図である。ホストコマンド実行処理は、ホストコンピュータ200(図1)からホストコマンドを受領したストレージノード100が、ホストコマンドに従って実行する処理である。ここで、ホストコマンドとは、イニシエータ(図11参照)を有するホストコンピュータ200から、ターゲット(図10参照)を有するストレージノード100の論理ユニット190を対象として発行されるコマンドである。ホストコマンドには、論理ユニット190に格納されたデータの読み出しを行うためのリードコマンドや、論理ユニット190にデータの書き込みを行うためのライトコマンドがある。
以下では、論理ユニット190a0(LU a0)(図1)を対象としたホストコマンドが、ホストコンピュータ200a(図1)から、ストレージノード100aに対して発行された場合のホストコマンド実行処理を例に用いて説明する。なお、図15および図16では、図の左側にネットワークコントローラ(NWC)130の処理を示しており、また、図の右側にFCコントローラ(FCC)150の処理を、図の中央にCPU120の処理を、それぞれ示している。また、図17および図18には、ストレージノード100a(図1)の内部構成を、一部省略して示している。
ここで、ストレージノード100a(図17および図18)において、複数のNWCメールボックス(NWC MB)176の内、NWCメールボックス(0)は、コントローラ110a(CTL a)内のCPU120のコア122p(コアp)に対応付けられており、NWCメールボックス(1)はコア122q(コアq)に対応付けられているものとする。同様に、複数のNWCドアベル134の内、NWCドアベル(0)はコア122pに対応付けられており、NWCドアベル(1)はコア122qに対応付けられている。
また、ストレージノード100a(図17および図18)において、複数のFCCメールボックス(FCC MB)178の内、FCCメールボックス(0)は、コントローラ110a(CTL a)内のCPU120のコア122pとコントローラ110a内のFCコントローラ150との組み合わせに対応付けられており、FCCメールボックス(1)は、コントローラ110a内のコア122qとコントローラ110a内のFCコントローラ150との組み合わせに対応付けられている。また、複数のFCCドアベル154の内、FCCドアベル(0)は、コントローラ110aのコア122pに対応付けられており、FCCドアベル(1)は、コントローラ110aのコア122qに対応付けられている。
以下、コマンド処理の流れに注目して説明する。なお、ホストコンピュータ200とコントローラ110との間およびコントローラ110とディスク194との間で、データの転送が行われるが、この処理はコマンドの種類により転送方向が変化するがコマンド処理とステータス処理との間でデータ転送が行われることは同じである。また、データ転送は、ネットワークコントローラ130およびFCコントローラ150に搭載されたDMAコントローラにより、CPU120の介在なく実施される。このデータ転送の方法については、従来から知られた方法と同一であるため説明を省略する。
図15のステップS110では、ネットワークコントローラ130が、ホストコンピュータ200a(図1)からホストコマンドを受領する(図17の(i))。このホストコマンドの対象の論理ユニット190は、論理ユニット190a0(LU a0)である。
ステップS120では、ネットワークコントローラ130が、受領したホストコマンドを、メモリ160内のNWCメールボックス(NWC MB)176に、DMA(Direct Memory Access)を用いて転送する(図17の(ii))。ここで、ネットワークコントローラ130は、ホストコマンドの対象の論理ユニット190に応じて、ホストコマンドに応じた処理を行うCPU120のコア122(以下「担当CPUコア」とも呼ぶ)を振り分ける機能を有している。図17および図18の例では、論理ユニット190a0(LU a0)を対象としたホストコマンドの担当CPUコアは、コア122p(コアp)であると設定されているものとする。このとき、ネットワークコントローラ130は、受領したホストコマンドを、コア122pに対応付けられたNWCメールボックス176であるNWCメールボックス(0)に転送することによって、ホストコマンドに応じた処理をコア122pに振り分ける。なお、本実施例では、ホストコマンドは、コマンドリクエストブロック(以下「CRB」とも称する)の形式で転送される。
なお、本実施例では、論理ユニット190毎に1つのコア122が、担当CPUコアとして設定されるものとしている。また、本実施例では、担当CPUコアを有するコントローラ110のみがキャッシュ等の管理情報や論理ユニット190の管理情報を更新することができる。他のコントローラ110も論理ユニット190をアクセスすることはできるが、この際に担当CPUコアを有するコントローラ110に問い合わせをして、キャッシュの管理情報の更新やロック等の処理を委託する必要がある。
ステップS130では、ネットワークコントローラ130が、NWCメールボックス176に転送したホストコマンドのアドレスを、NWCドアベル134に格納する(図17の(iii))。このとき、用いられるNWCドアベル134は、ホストコマンドの担当CPUコアであるコア122pに対応付けられたNWCドアベル134(NWCドアベル(0))である。
ステップS140では、ネットワークコントローラ130が、ホストコマンドの担当CPUコアであるコア122pに対し、割り込み要求を発行する(図17の(iv))。割り込み要求の発行には、コア122pに対応付けられた割り込み線138(図7)が用いられる。
ステップS150では、CPU120のコア122pが、NWCドアベル134に格納されたアドレスを参照して、NWCメールボックス176に格納されたホストコマンドを取得する(図17の(v))。また、コア122pは、RAID制御プログラム184(図8)を実行することによって、取得したホストコマンドの対象の論理ユニット190とディスク194との変換(以下「RAIDアドレス変換」とも称する)を行う。次に、コア122pは、ディスク制御プログラム186(図8)を実行することによって、ホストコマンドに基づき、ディスク194に対するコマンドとしてのディスクコマンドを生成する。ディスクコマンドには、例えば、コマンドの種類を表す情報や、対象となるディスク194の識別子、LBA、転送サイズ、DMAリスト等が含まれる。本実施例では、ディスクコマンドも、コマンドリクエストブロック(CRB)の形式で生成される。コア122pは、生成したディスクコマンドを、メモリ160内のFCCメールボックス178に転送する(図17の(vi))。このとき、用いられるFCCメールボックス178は、担当CPUコアであるコア122pとホストコマンドの対象の論理ユニット190に接続されたFCコントローラ150との組み合わせに対応付けられたFCCメールボックス178(FCCメールボックス(0))である。
ステップS160では、コア122pが、FCCメールボックス178に転送したディスクコマンドのアドレスを、FCCドアベル154に格納する(図17の(vii))。このとき、用いられるFCCドアベル154は、担当CPUコアであるコア122pに対応付けられたFCCドアベル154(FCCドアベル(0))である。
ステップS170では、FCコントローラ150が、FCCドアベル154に格納されたアドレスを参照して、FCCメールボックス178に格納されたディスクコマンドをDMAを用いて取得する(図17の(viii))。また、FCコントローラ150は、取得したディスクコマンドに従い、論理ユニット190を構成するディスク194に対するコマンド処理を実行する(図17の(ix))。
以上説明したステップS110からS170までにおいて、ホストコンピュータ200から発行されたホストコマンドに従った、論理ユニット190を構成するディスク194に対する処理が完了する。次に、ステップS180以降において、コマンドに従ったディスク194に対する処理の完了がホストコンピュータ200に通知される。このときに使用されるNWCメールボックス176、NWCドアベル134、FCCメールボックス178、FCCドアベル154は、ステップS110からS170までにおいて使用されたものと同じものとなる。
ステップS180では、FCコントローラ150が、ディスクコマンド終了ステータスをCRB形式で生成し、FCCメールボックス178に転送する(図18の(x))。このとき、FCCメールボックス(0)が用いられる。
図16のステップS190では、FCコントローラ150が、FCCメールボックス178に格納したディスクコマンド終了ステータスのアドレスを、FCCドアベル154に格納する(図18の(xi))。このとき、FCCドアベル(0)が用いられる。
ステップS200では、FCコントローラ150が、コア122pに対し、割り込み要求を発行する(図18の(xii))。割り込み要求の発行には、コア122pに対応付けられた割り込み線158(図6)が用いられる。
ステップS210では、CPU120のコア122pが、FCCドアベル154に格納されたアドレスを参照して、FCCメールボックス178に格納されたディスクコマンド終了ステータスを取得する(図18の(xiii))。また、コア122pは、ディスクコマンド終了ステータスに基づきホストコマンド終了ステータス(CRB形式)を生成し、NWCメールボックス176に転送する(図18の(xiv))。このとき、NWCメールボックス(0)が用いられる。
ステップS220では、CPU120のコア122pが、NWCメールボックス176に転送したホストコマンド終了ステータスのアドレスを、NWCドアベル134に格納する(図18の(xv))。このとき、NWCドアベル(0)が用いられる。
ステップS230では、ネットワークコントローラ130が、NWCドアベル134に格納されたアドレスを参照して、NWCメールボックス176に格納されたホストコマンド終了ステータスをDMAを用いて取得する(図18の(xvi))。また、ネットワークコントローラ130は、取得したホストコマンド終了ステータスを用いて、ホストコンピュータ200に対するコマンド終了処理を行う(図18の(xvii))。ステップS180からS230までにおいて、ホストコンピュータ200に対するコマンド終了処理が完了する。
ステップS240以降の処理は、ネットワークコントローラ130がCPU120のコア122pに対して、ホストコンピュータ200に対する処理が完了したことを通知するための処理である。ステップS240では、ネットワークコントローラ130が、終了ステータスをNWCメールボックス176に転送する。ステップS250では、ネットワークコントローラ130が、NWCメールボックス176に転送した終了ステータスのアドレスを、NWCドアベル134に格納する。ステップS260では、ネットワークコントローラ130が、コア122pに対し割り込み要求を発行する。ステップS270では、CPU120のコア122pが、NWCメールボックス176から終了ステータスを取得する。これにより、ホストコマンド実行処理は完了する。
A−3.コントローラ内担当CPUコア切り替え:
図19は、コントローラ内担当CPUコア切り替え後のホストコマンド実行処理の概要を示す説明図である。図19には、ホストコマンド実行処理の内、図17に示した部分に対応する処理が示されている。
コントローラ内担当CPUコア切り替えとは、ある論理ユニット190を対象としたホストコマンドの担当CPUコアを、あるコア122から、同じコントローラ110内の他のコア122へと変更することを意味している。このような切り替えは、例えば、ストレージノード100のコントローラ110内のコア122の負荷分散のために実行される。例えばユーザは、管理装置400(図1)の表示画面に表示されたコントローラ110内の各コア122の負荷を参照して、コントローラ内担当CPUコア切り替えの実行指示を行う。この点については、後述する。
図19の例は、論理ユニット190a0(LU a0)を対象としたホストコマンドの担当CPUコアが、コントローラ110a(CTL a)のコア122p(コアp)から、同じくコントローラ110aのコア122q(コアq)へと変更された例である(図19の(0)参照)。
ここで、上述したように、本実施例のストレージノード100では、ネットワークコントローラ130が、ホストコマンドの対象の論理ユニット190に応じて、ホストコマンドの担当CPUコアを振り分ける機能を有している。従って、ネットワークコントローラ130の設定を変更することによって、コントローラ内担当CPUコア切り替えを実現することができる。
具体的には、ネットワークコントローラ130が、論理ユニット190a0を対象としたホストコマンドを受領したときに、ホストコマンドを、コア122qに対応付けられたNWCメールボックス176(NWCメールボックス(1))に転送するように、ネットワークコントローラ130の設定を変更する。
その後のホストコマンド実行処理は、コントローラ内担当CPUコア切り替え前の処理(図15〜18参照)と同様に、実行される。両者の違いは、使用されるNWCメールボックス176、NWCドアベル134、FCCメールボックス178、FCCドアベル154、割り込み線138(図7)、割り込み線158(図6)が、コア122pに対応付けられたものであるか、コア122qに対応付けられたものであるかという点のみである。すなわち、図19に示すように、コントローラ内担当CPUコア切り替え後のホストコマンド実行処理では、コア122qに対応付けられた構成要素(NWCメールボックス(1)、NWCドアベル(1)、FCCメールボックス(1)、FCCドアベル(1))が用いられる。なお、コントローラ内担当CPUコア切り替え後のホストコマンド実行処理の内、図18に示した部分に対応する処理(図示せず)についても、同様である。
以上説明したように、本実施例のストレージシステム1000におけるストレージノード100では、ネットワークコントローラ130の設定を変更することによって、コントローラ110内においてホストコマンドの担当CPUコアを切り替えることができる。そして、切り替え後も、切り替え前と同一のシーケンス、同一のディスク処理、同一のネットワークコントローラ130、同一のFCコントローラ150を用いて、ホストコマンド実行処理を行うことができる。ホストコマンドの担当CPUコアの切り替えに伴い、ホストコンピュータ200とネットワークコントローラ130との間のパスやFCコントローラ150とディスク194との間のパスを変更する必要は無い。従って、本実施例のストレージシステム1000では、ホストコンピュータからのコマンドに応じた処理を実行するコア122の切り替えを容易に実現することができる。
A−4.ストレージノード100のコントローラ110内におけるアドレス空間およびメモリマップ:
図20は、ストレージノード100のコントローラ110内におけるアドレス空間を概念的に示す説明図である。図20の左側には、ストレージノード100aのコントローラ110a(図1)内のコア122p(コアp)のアドレス空間を、図20の右側には、同じくコントローラ110a内のコア122q(コアq)のアドレス空間を、それぞれ示している。
図20に示すように、コア122pのアドレス空間には、アドレス「A0」から「A3」に、コントローラ110aのメモリ160(図8)内におけるコア122p用の領域(以下「メモリap」とも称する)がマッピングされている。また、アドレス「AIO0」から「A4」に、IOアドレス領域(メモリマップドI/O)がマッピングされている。
図20に示すように、コア122pのアドレス空間におけるメモリapの領域には、制御プログラム領域と、制御データ領域と、キャッシュ領域と、がマッピングされている(図8参照)。制御データ領域には、コア122pに対応付けられたNWCメールボックス176(NWCメールボックス(0))と、同じくコア122pに対応付けられたFCCメールボックス178(FCCメールボックス(0))と、がマッピングされている。
また、コア122pのアドレス空間におけるIOアドレス領域には、コア122pに対応付けられたNWCドアベル134(NWCドアベル(0))と、同じくコア122pに対応付けられたFCCドアベル154(FCCドアベル(0))と、がマッピングされている。
図20の右側に示すコア122qのアドレス空間のアドレス「A0」から「A4」には、コア122pのアドレス空間と同様に、コントローラ110aのメモリ160内におけるコア122q用の領域(以下「メモリaq」とも称する)とIOアドレス領域とがマッピングされている。コア122pのアドレス空間にマッピングされたNWCメールボックス176、FCCメールボックス178、NWCドアベル134、FCCドアベル154は、コア122qに対応付けられたものとなっている。
また、コア122pのアドレス空間のアドレス「A4」から「A5」には、コア122qのアドレス空間のアドレス「A0」から「A4」がマッピングされている。同様に、コア122qのアドレス空間のアドレス「A4」から「A5」には、コア122pのアドレス空間のアドレス「A0」から「A4」がマッピングされている。なお、他のストレージノード100(ストレージノード100b等)のコントローラ110内のコア122pおよびコア122qのアドレス空間も、図20に示したアドレス空間と同様である。
図21は、ストレージノード100のコントローラ110内におけるメモリマップを示す説明図である。図21には、ストレージノード100aのコントローラ110a(図1)内のメモリ160のメモリマップを示している。図21に示すように、コントローラ110aのメモリ160(以下「メモリa」とも称する)のメモリマップは、コア122p用のメモリ領域「メモリap」と、コア122q用のメモリ領域「メモリaq」と、に分割されている。なお、他のストレージノード100(ストレージノード100b等)のコントローラ110内のメモリ160のメモリマップも、図21に示したメモリマップと同様である。
A−5.ストレージシステム1000のアドレス空間およびメモリマップ:
図22は、ストレージシステム1000(図1)のアドレス空間を概念的に示す説明図である。図22の左側には、ストレージノード100aのコントローラ110a(図1)内のコア122p(コアp)から見たストレージシステム1000のアドレス空間を、図22の右側には、ストレージノード100bのコントローラ110b内のコア122q(コアq)から見たストレージシステム1000のアドレス空間を、それぞれ示している。
図22に示すように、コントローラ110aのコア122pから見たストレージシステム1000のアドレス空間には、セグメントアドレス「SA0」から「SA1」に、コントローラ110aのコア122p(コアp)のアドレス空間と、コントローラ110aのコア122q(コアq)のアドレス空間と、がマッピングされている(図20参照)。
さらに、コア122pから見たストレージシステム1000のアドレス空間には、セグメントアドレス「SA1」から「SA2」に、コントローラ110b(図1)のコア122p(コアp)およびコア122q(コアq)のアドレス空間がマッピングされ、セグメントアドレス「SA2」から「SA3」に、コントローラ110c(図1)のコア122p(コアp)およびコア122q(コアq)のアドレス空間がマッピングされている。セグメントアドレス「SA3」以下は、ストレージノード100増設時用の予備領域である。
このように、コントローラ110aのコア122pから見たストレージシステム1000のアドレス空間には、他のストレージノード100のコントローラ110(コントローラ110b等)を含む、ストレージシステム1000内のすべてのコントローラ110内のコア122のアドレス空間が、規則的にマッピングされている。このようなマッピングは、ストレージシステム1000内のすべてのコントローラ110がノード間コントローラ結合部102によって互いに接続されていることにより、可能となる。従って、コントローラ110aのコア122pは、マッピングされたすべての空間を参照することができる。なお、マッピングにおけるアドレス変換は、ブリッジ140(図3)において行われる。
図22の右側に示したコントローラ110bのコア122qから見たストレージシステム1000のアドレス空間は、図22左側に示したコントローラ110aのコア122pから見たアドレス空間と同様である。ただし、マッピングされる空間の順番が異なっている。図22に示していない他のコントローラ110の他のコア122から見たストレージシステム1000のアドレス空間も、同様である。
図23は、ストレージシステム1000(図1)のメモリマップを示す説明図である。図23は、ストレージノード100aのコントローラ110aから見たストレージシステム1000のメモリマップを示している。図23に示すように、コントローラ110aから見たメモリマップには、コントローラ110a内のメモリ160の領域(メモリa)の他に、ストレージシステム1000内の他のコントローラ110のメモリ160の領域(メモリbおよびメモリc)がマッピングされている。すなわち、コントローラ110aは、ストレージシステム1000のすべてのコントローラ110内のメモリ160の領域を併せたメモリ空間を、単一のメモリ空間として把握することができる。そのため、コントローラ110a内の各コア122は、ストレージシステム1000内のすべてのメモリ空間にアクセスすることが可能である。ストレージシステム1000の他のストレージノード100のコントローラ110から見たメモリマップについても同様である。
A−6.ノード間担当CPUコア切り替え:
本実施例のストレージシステム1000(図1)では、各ストレージノード100のコントローラ110の各コア122(図5)が図22および図23に示したようなアドレス空間およびメモリマップを有しているため、ノード間担当CPUコア切り替えを実現可能である。ノード間担当CPUコア切り替えとは、ある論理ユニット190を対象としたホストコマンドの担当CPUコアを、あるコア122から、当該コア122を含むストレージノード100とは異なるストレージノード100に含まれるコア122へと変更することを意味している。一般に、ある論理ユニット190を対象としたホストコマンドの担当CPUコアは、当該論理ユニット190を含むストレージノード100に含まれるCPU120のコア122である場合が多い。このような場合に、ノード間担当CPUコア切り替えを行うことによって、ホストコマンドの対象の論理ユニット190を含むストレージノード100とは異なるストレージノード100に含まれるコア122を、当該ホストコマンドの担当CPUコアに設定することが可能となる。すなわち、CPU120のコア122が、自らが属するストレージノード100とは異なるストレージノード100内の論理ユニット190を対象としたホストコマンドに応じた処理を行うことが可能となる。このような切り替えは、例えば、ストレージノード100間の負荷分散のために実行される。例えばユーザは、管理装置400(図1)の表示画面に表示されたストレージシステム1000内の各ストレージノード100のコア122の負荷を参照して、ノード間担当CPUコア切り替えの実行指示を行う。この点については、後述する。
図24は、ノード間担当CPUコア切り替えの一例を示す説明図である。図24には、ストレージシステム1000(図1)のストレージノード100aおよびストレージノード100bの内部構成を、一部省略して示している。図24の例では、ノード間担当CPUコア切り替え前には、ストレージノード100a内の論理ユニット190a0(LU a0)を対象としたホストコマンドの担当CPUコアは、ストレージノード100aのコントローラ110a内のCPU120のコア122p(コアp)であるものとする。このとき、ストレージノード100a内のコア122pは、自らに対応付けられたNWCメールボックス176(NWCメールボックス(0))、NWCドアベル134(NWCドアベル(0))、FCCメールボックス178(FCCメールボックス(0))、FCCドアベル154(FCCドアベル(0))を用いて、ホストコマンド実行処理を行っている。
ノード間担当CPUコア切り替えにより、論理ユニット190a0を対象としたホストコマンドの担当CPUコアが、ストレージノード100bのコントローラ110b内のCPU120のコア122p(コアp)へと変更されるものとする。ここで図24の例では、コントローラ110b内において、コア122pに対応付けられたNWCメールボックス176は、NWCメールボックス(0)であり、コア122pに対応付けられたNWCドアベル134は、NWCドアベル(0)である。また、コントローラ110b内において、コア122pとストレージノード100aのコントローラ110a内のFCコントローラ150との組み合わせに対応付けられたFCCメールボックス178は、FCCメールボックス(2)である。さらに、ストレージノード100a内の論理ユニット190a0に接続されたFCコントローラ150において、ストレージノード100bのコントローラ110b内のコア122pに対応付けられたFCCドアベル154は、FCCドアベル(2)である。ストレージノード100bのコントローラ110b内のコア122pは、ノード間担当CPUコア切り替え後に、これらのメールボックスおよびドアベルを用いて、ホストコマンド実行処理を行う。
なお、ノード間担当CPUコア切り替えを行うためには、ホストコマンドが、切り替え後の担当CPUコアを有するストレージノード100(ストレージノード100b)に向けて発行される必要がある。そのため、ノード間担当CPUコア切り替えの際には、まず、ホストコンピュータ200(図1)とストレージノード100との間のアクセスパスの変更が行われる。ホストコンピュータ200とストレージノード100との間のアクセスパスの変更については、後述する。
また、ノード間担当CPUコア切り替え後の担当CPUコアを有するストレージノード100(ストレージノード100b)においては、ネットワークコントローラ130が、論理ユニット190a0を対象としたホストコマンドの処理を、切り替え後の担当CPUコア(コア122p)に割り当てる必要がある。そのため、論理ユニット190a0を対象としたホストコマンドがコア122pに割り当てられるように、ネットワークコントローラ130の設定が行われる。
図25は、ノード間担当CPUコア切り替え後の担当CPUコア(ストレージノード100bのコントローラ110b内のCPU120のコア122p)から見たストレージシステム1000のアドレス空間を概念的に示す説明図である。図25に示すように、切り替え後の担当CPUコアであるコントローラ110bのコア122p(コアp)は、コントローラ110b内のメモリ160のコア122p用の領域(「メモリbp」と表す)にマッピングされたFCCメールボックス(2)を参照可能である。同様に、コントローラ110bのコア122pは、コントローラ110a内のコア122p用のIOアドレス領域にマッピングされたFCCドアベル(2)も参照可能である。
また、本実施例のストレージシステム1000では、各ストレージノード100のコントローラ110は、ノード間コントローラ結合部102によって互いに接続されている(図1および図3参照)。そのため、切り替え後の担当CPUコアを有するコントローラ110bのCPU120から、ストレージノード100aのコントローラ110a内のメモリ160およびFCコントローラ150に至るデータアクセスパスが確保されている。従って、コントローラ110bのCPU120のコア122pは、当該アクセスパスを介して、コントローラ110a内のメモリ160およびFCコントローラ150にアクセス可能である。
さらに、コントローラ110aのFCコントローラ150内のFCCドアベル(2)(図24)は、切り替え後の担当CPUコアであるコントローラ110bのコア122p専用として準備されており、コア122pによる占有使用が可能である。そのため、FCCドアベル154についての排他制御は不要である。
以上のことから、本実施例のストレージシステム1000では、ノード間担当CPUコア切り替えを実現することができる。
図26および図27は、ノード間担当CPUコア切り替え後のホストコマンド実行処理の流れを示すフローチャートである。また、図28および図29は、ノード間担当CPUコア切り替え後のホストコマンド実行処理の概要を示す説明図である。図28には、ホストコマンド実行処理の内、図17に示した部分に対応する処理が示されており、図29には、図18に示した部分に対応する処理が示されている。
上述したように、ノード間担当CPUコア切り替えの際には、ホストコンピュータ200(図1)とストレージノード100との間のアクセスパスの変更が行われるため、論理ユニット190a0を対象としたホストコマンドは、ストレージノード100bのネットワークコントローラ130によって受領される(図26のステップS310、図28の(i))。
また、ストレージノード100bにおいては、論理ユニット190a0を対象としたホストコマンドがコア122pに割り当てられるように、ネットワークコントローラ130の設定が行われる。そのため、受領されたホストコマンドは、コア122pに対応付けられたNWCメールボックス176(NWCメールボックス(0))を経て、コア122pにより取得される(図26のステップS320からS350、図28の(ii)から(v))。
ホストコマンドを取得したコア122pは、RAIDアドレス変換およびディスクコマンド生成(図26のステップS350)を行う。なお、ストレージノード100bのコントローラ110b内のメモリ160には、論理ユニット190a0についてのRAIDアドレス変換を行うための情報(LU管理テーブル(図9)等)が格納されている。
コア122pは、生成したディスクコマンドを、メモリ160内のFCCメールボックス178に転送する(図26のステップS350、図28の(vi))。このときの転送先のFCCメールボックス178は、コア122pとストレージノード100aの論理ユニット190a0に接続されたFCコントローラ150との組み合わせに対応付けられたFCCメールボックス(2)である。
コア122pは、FCCメールボックス178におけるディスクコマンド格納アドレスを、ストレージノード100aの論理ユニット190a0に接続されたFCコントローラ150内のFCCドアベル154に格納する(図26のステップS360、図28の(vii))。このとき用いられるFCCドアベル154は、ストレージノード100bのコントローラ110b内のコア122pに対応付けられたFCCドアベル(2)である。
ストレージノード100aの論理ユニット190a0に接続されたFCコントローラ150は、FCCドアベル(2)に格納されたアドレスを参照して、ストレージノード100bのFCCメールボックス(2)からディスクコマンドを取得し(図26のステップS370、図28の(viii))、ディスクコマンド処理を行う(図26のステップS370、図28の(ix))。
ディスクコマンド処理が終了すると、ストレージノード100aのFCコントローラ150は、ディスクコマンド終了ステータスをストレージノード100aのFCCメールボックス(2)に転送し(図26のステップS380、図29の(x))、その格納アドレスを、自ら有するFCCドアベル(2)に格納する(図27のステップS390、図29の(xi))。
さらに、ストレージノード100aのFCコントローラ150は、ストレージノード100bのコア122pに対し、割り込み要求を発行する(図27のステップS400、図29の(xii))。ここで、ストレージノード100aおよびストレージノード100bのブリッジ140は、割り込み変換器(「INT変換器」とも称する)144を有している。ストレージノード100aのFCコントローラ150からストレージノード100bのコア122pへの割り込み要求(割り込み信号)の伝達経路においては、ストレージノード100a側の割り込み変換器144による割り込み要求のノード間コントローラ接続線104を通過可能なパケットへの変換と、ストレージノード100b側の割り込み変換器144による逆変換と、が実行される。
割り込み要求を受領したストレージノード100bのコントローラ110b内のコア122pは、ストレージノード100aのFCCドアベル(2)に格納されたアドレスを参照して、ストレージノード100bのFCCメールボックス(2)からディスクコマンド終了ステータスを取得する(図27のステップS410、図29の(xiii))。その後、コア122pは、ホストコマンド終了ステータスを生成して、ストレージノード100bのNWCメールボックス(0)に転送し(図27のステップS410、図29の(xiv))、アドレスをNWCドアベル(0)に格納する(図27のステップS420、図29の(xv))。
ストレージノード100bのコントローラ110b内のネットワークコントローラ130は、NWCメールボックス(0)からホストコマンド終了ステータスを取得し(図27のステップS430、図29の(xvi))、コマンド終了処理を実行する(図27のステップS430、図29の(xvii))。なお、その後、ネットワークコントローラ130によるCPU120に対する処理完了の通知が行われる(図27のステップS440からS470)。
以上説明したように、本実施例のストレージシステム1000では、ある論理ユニット190を対象としたホストコマンドの担当CPUコアを、あるコア122から、当該コア122を含むストレージノード100とは異なるストレージノード100に含まれるコア122へと変更するノード間担当CPUコア切り替えを実現することができる。これにより、ストレージシステム1000内のストレージノード100の負荷分散を図ることができる。ノード間担当CPUコア切り替えは、ホストコンピュータ200とストレージノード100との間のアクセスパスの変更と、ネットワークコントローラ130における担当CPUコアの設定と、を行うことにより実現可能であり、論理ユニット190に格納されたデータを他のストレージノード100の論理ユニット190にコピーする必要は無い。また、ノード間担当CPUコア切り替え後も、切り替え前と同一のシーケンス、同一のディスク処理、同一のネットワークコントローラ130、同一のFCコントローラ150を用いて、ホストコマンド実行処理を行うことができる。ホストコマンドの担当CPUコアの切り替えに伴い、FCコントローラ150とディスク194との間のパスの変更やデータの移動の必要は無い。従って、本実施例のストレージシステム1000では、ホストコンピュータ200からのコマンドに応じた処理を実行するコア122の切り替えを容易に実現することができる。
A−7.ホストコンピュータとストレージノードとの間のアクセスパス変更:
上述したように、ノード間担当CPUコア切り替えの際には、ホストコンピュータ200(図1)とストレージノード100との間のアクセスパスの変更を行う必要がある。図30は、ホストコンピュータ200とストレージノード100との間のアクセスパスの変更処理の一例を示す説明図である。図30には、データ処理システム10(図1)の内、アクセスパスの変更に関連する部分のみを抜き出して表示している。図30の例では、ホストコンピュータ200aから発行される論理ユニット190a0を対象としたホストコマンドが、ストレージノード100aではなく、ストレージノード100bに到達するように、アクセスパスの変更が行われる。
アクセスパス変更前の状態では、ホストコンピュータ200aはイニシエータを有しており、このイニシエータは、ホストコンピュータ200が有するイニシエータ管理テーブル210a(図11参照)に、イニシエータネーム「Init−a0」として登録されている。このイニシエータ「Init−a0」は、ネームサーバ500が有するネーム管理テーブル571(図12)にも登録されている。
また、ストレージノード100a内の論理ユニット190a0(LU a0)は、ストレージノード100aのコントローラ110aのメモリ160に格納されたターゲット管理テーブル173(図8および図10)に、ターゲットネーム「Targ−a0」として登録されている。ターゲット管理テーブル173においては、「Targ−a0」へのアクセスが許可されたイニシエータとして「Init−a0」が登録されている(図10参照)。このターゲット「Targ−a0」は、ネームサーバ500が有するネーム管理テーブル571(図12)にも登録されている。
さらに、ストレージノード100aのコントローラ110aのメモリ160に格納されたLU管理テーブル172(図8および図9)には、論理ユニット190a0(LU a0)のターゲットネームとして「Targ−a0」が登録されており、論理ユニット190a0へのアクセスが許可されたイニシエータとして「Init−a0」が登録されている。
アクセスパスの変更の際には、まず、ストレージノード100aのコントローラ110aからストレージノード100bのコントローラ110bへのターゲット「Targ−a0」の引継ぎが実行される(図30の(i))。これにより、ストレージノード100bのコントローラ110bのメモリ160に格納されたターゲット管理テーブル173に、ターゲット「Targ−a0」およびイニシエータ「Init−a0」の組が登録される。また、ストレージノード100aのコントローラ110aのメモリ160に格納されたターゲット管理テーブル173から、ターゲット「Targ−a0」およびイニシエータ「Init−a0」の組が削除される。
次に、ストレージノード100aおよびストレージノード100bは、ネームサーバ500に対し、構成通知を送信する(図30の(ii))。これを受けて、ネームサーバ500は、保有するネーム管理テーブル571(図12)内のターゲット「Targ−a0」およびイニシエータ「Init−a0」の組に関する情報を変更する。
次に、ネームサーバ500は、ストレージシステム1000に接続している各イニシエータ(ホストコンピュータ)に対し、構成変更通知を発行する(図30の(iii))。構成変更通知を受領した各イニシエータ(ホストコンピュータ)は、ディスカバリを実行し、自身がアクセス可能なターゲットに変更がないかどうかをネームサーバ500に問い合わせる(図30の(iv))。これにより、ホストコンピュータ200aは、イニシエータ「Init−a0」に対応するターゲット「Targ−a0」がストレージノード100bに移動されたことを把握する。
ホストコンピュータ200aは、変更後のターゲット「Targ−a0」の情報に従い、ストレージノード100bとの間の新たなiSCSIセッションを確立する。これにより、ホストコンピュータ200aとストレージノード100との間のパスの切り替えが完了する(図30の(v))。以上の処理により、ホストコンピュータ200aから発行される論理ユニット190a0(LU a0)を対象としたホストコマンドは、ストレージノード100bに到達することとなる。
A−8.管理画面の例:
図31は、ストレージシステム1000の管理装置400の管理画面410の一例を示す説明図である。図31に示した管理画面410には、ストレージシステム1000内の各論理ユニット190の担当CPUコアが示されている。例えば、論理ユニット190「LU b0」の担当CPUコアは、ストレージノード100bのコアpとなっている。ユーザは、管理画面410により、ストレージシステム1000内の各論理ユニット190の担当CPUコアを容易に把握することができる。
また、ユーザは、管理画面410を参照しつつ管理装置400の操作を行うことによって、上述したコントローラ内担当CPUコア切り替えや、ノード間担当CPUコア切り替えの実行指示を行うことができる。例えばユーザは、管理画面410に表示された論理ユニット190「LU a0」のアイコンを、ストレージノード100aのコアp欄からコアq欄へとドラッグアンドドロップを行うことにより(図31の(i))、論理ユニット190「LU a0」の担当CPUコアを、コントローラ110a内のコアpからコアqへと変更するコントローラ内担当CPUコア切り替えの実行を指示することができる。また、ユーザは、論理ユニット190「LU a0」のアイコンを、ストレージノード100aのコアp欄からストレージノード100bのコアp欄へとドラッグアンドドロップを行うことにより(図31の(ii))、論理ユニット190「LU a0」の担当CPUコアを、ストレージノード100a内のコアpからストレージノード100b内のコアpへと変更するノード間担当CPUコア切り替えの実行を指示することができる。ストレージシステム1000では、このようなユーザからの指示に従って、上述したコントローラ内担当CPUコア切り替えや、ノード間担当CPUコア切り替えが実行される。
図32は、ストレージシステム1000の管理装置400の管理画面410の他の一例を示す説明図である。図32に示した管理画面410には、ストレージシステム1000内の各ストレージノード100の稼働状況を表示している。管理画面410には、左から順に、ストレージノード100a(SNa)、ストレージノード100b(SNb)、ストレージノード100c(SNc)、将来増設ストレージノード100d(SNd)の稼働状況が、それぞれ表示される。各ストレージノード100の稼働状況の表示において、上段には、CPU120の各コア122の稼働率が示され、下段には、各論理ユニット190の稼働率が示される。ここで、CPU120のコア122については、例えば、ある計測時間から、その計測時間中におけるアイドルルーチン時間を除いた時間が稼働時間であるとして、稼働率が算定される。また、論理ユニット190については、例えば、ホストコンピュータ200からのコマンド受信から、ホストコンピュータ200へのコマンド完了報告送信までの時間が稼働時間であるとして、稼働率が算定される。稼働率は、例えば、所定時間経過毎に算定され、管理画面410の表示が更新される。なお、稼働状況の表示項目として、他に、ホストコンピュータ200からのアクセス回数や、リード要求とライト要求との比率や、転送長等を用いてもよい。管理画面410の表示によって、ユーザは、ストレージシステム1000内のストレージノード100の稼働状況(負荷の大きさ)を把握することができる。そのため、例えばユーザは、管理画面410に表示されたCPU120のコア122の負荷を参照して、コントローラ内担当CPUコア切り替えやノード間担当CPUコア切り替えの実行指示を行うことができる。
A−9.第1実施例の応用:
第1実施例のストレージシステム1000では、上述のコントローラ内担当CPUコア切り替えや、ノード間担当CPUコア切り替えの他に、種々の応用が可能である。図33は、ストレージシステム1000におけるシャドウイメージに関する応用の一例を示す説明図である。
ストレージシステム1000におけるシャドウイメージ(「物理コピー」とも呼ばれる)とは、ホストコンピュータからアクセスされる論理ユニット190内のデータと同じデータを格納した他の論理ユニット190を保持することによって、データの冗長性を確保したり、そのコピーした論理ユニット190を分離して別の用途に用いたりする処理である。シャドウイメージでは、ホストコンピュータからアクセスされる論理ユニット190とカップリングされた他の論理ユニット190が準備され、ホストコンピュータからのライトコマンドによって論理ユニット190にデータが書き込まれた場合に、カップリングされた他の論理ユニット190にも同じデータが書き込まれる。本実施例のストレージシステム1000では、このようなシャドウイメージを実行する際に、負荷分散を図ることができる。
図33(a)には、シャドウイメージにおけるコントローラ110内のCPUコア間の負荷分散の一例を示している。シャドウイメージにおいて、ストレージノード100aでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納(図33(a)の(i))と、キャッシュ領域に格納されたライトデータの論理ユニット(LU a0)への書き込み(図33(a)の(ii))と、ライトデータの論理ユニット(LU a1)への書き込み(図33(a)の(iii))と、が実行される。このとき、図33(a)の(i)および(ii)の処理はCPUのコアpが担当し、図33(a)の(iii)の処理はCPUのコアqが担当する。このようにすれば、ストレージシステム1000におけるシャドウイメージにおいて、コントローラ110内のコア間で負荷分散を行うことができる。
図33(b)には、シャドウイメージにおけるストレージノード間の負荷分散の一例を示している。シャドウイメージにおける処理は、図33(a)に示した処理と同様である(図33(b)の(i)から(iii))。このとき、図33(b)の(i)および(ii)の処理は、ストレージノード100aのコアpが担当し、図33(b)の(iii)の処理は、ストレージノード100bのコアpが担当する。このようにすれば、ストレージシステム1000におけるシャドウイメージにおいて、ストレージノード100間で負荷分散を行うことができる。
なお、図33(a)および(b)において、(ii)の処理から(iii)の処理への移行は、コア間で連絡を行うことにより実現可能である。この連絡は、共有メモリやシグナルを用いた方法等の公知の方法を用いて行うことができる。また、ストレージシステム1000ではメモリマップが共有されているので(図23参照)、コマンドリストにコマンドを入力することによっても、移行を実現することができる。また、各コアの処理の分担は、図33に示した分担とは異なる分担としてもよい。
図34は、ストレージシステム1000におけるシャドウイメージに関する応用の他の例を示す説明図である。図34の例は、シャドウイメージ運用中にデータのバックアップを行う場合の処理を示している。シャドウイメージ運用中のデータのバックアップとは、シャドウイメージにおいて2つの論理ユニット190のカップリング状態を解除(スプリット)し、1つの論理ユニット190内に格納されたデータを用いてデータのバックアップを行う処理である。このような処理によって、ストレージシステム1000において、ホストコンピュータからのコマンドの処理を続行しつつ、データのバックアップを行うことができる。本実施例のストレージシステム1000では、このようなシャドウイメージ運用中のデータのバックアップを実行する際に、負荷分散を図ることができる。
図34(a)には、シャドウイメージ運用中のデータのバックアップにおけるコントローラ110内のCPUコア間の負荷分散の一例を示している。シャドウイメージ運用中のデータのバックアップ実行時には、ストレージノード100aでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納(図34(a)の(i))と、キャッシュ領域に格納されたライトデータの論理ユニット(LU a0)への書き込み(図34(a)の(ii))と、論理ユニット(LU a1)からキャッシュ領域へのデータの読み出し(図34(a)の(iii))と、キャッシュ領域に読み出されたデータのバックアップ先への転送(図34(a)の(iv))と、が実行される。このとき、図34(a)の(i)および(ii)の処理はCPUのコアpが担当し、図34(a)の(iii)および(iv)の処理はCPUのコアqが担当する。このようにすれば、シャドウイメージ運用中のデータのバックアップにおいて、コントローラ110内のコア間で負荷分散を行うことができる。
図34(b)には、シャドウイメージ運用中のデータのバックアップにおけるストレージノード間の負荷分散の一例を示している。シャドウイメージ運用中のデータのバックアップの処理は、図34(a)に示した処理と同様である(図34(b)の(i)から(iv))。このとき、図34(b)の(i)および(ii)の処理は、ストレージノード100aのコアpが担当し、図34(b)の(iii)および(iv)の処理は、ストレージノード100bのコアpが担当する。このようにすれば、ストレージシステム1000におけるシャドウイメージ運用中のデータのバックアップにおいて、ストレージノード100間で負荷分散を行うことができる。なお、各コアの処理の分担は、図34に示した分担とは異なる分担としてもよい。
図35は、ストレージシステム1000におけるスナップショットに関する応用の一例を示す説明図である。ストレージシステム1000におけるスナップショット(「論理コピー」または「差分バックアップ」とも呼ばれる)とは、ホストコンピュータからのライトデータ(新データ)の論理ユニット190への書き込みを行う前に、新データが書き込まれるべき論理ユニット190内の領域に現に格納されているデータ(旧データ)を他の場所に格納することにより、ある時刻における論理ユニット190のデータイメージを保存し、バックアップする処理である。スナップショットでは、ホストコンピュータにアクセスされる論理ユニット190と仮想ボリュームとしての他の論理ユニット190とが準備され、ホストコンピュータからのライトコマンドが受領された場合に、まず旧データがキャッシュ領域に読み出される。その後、新データの論理ユニット190への書き込みと、旧データの仮想ボリュームへの書き込みと、が実行される。本実施例のストレージシステム1000では、このようなスナップショットを実行する際に、負荷分散を図ることができる。
図35(a)には、スナップショットにおけるコントローラ110内のCPUコア間の負荷分散の一例を示している。スナップショットにおいて、ストレージノード100aでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータ(新データ)のキャッシュ領域への格納(図35(a)の(i))と、旧データのキャッシュ領域への書き込み(図35(a)の(ii))と、キャッシュ領域に格納された新データの論理ユニット(LU a0)への書き込み(図35(a)の(iii))と、キャッシュ領域に格納された旧データの論理ユニット(VLU a0)への書き込み(図35(a)の(iv)と、が実行される。このとき、図35(a)の(i)から(iii)までの処理はCPUのコアpが担当し、図35(a)の(iv)の処理はCPUのコアqが担当する。このようにすれば、ストレージシステム1000におけるスナップショットにおいて、コントローラ110内のコア間で負荷分散を行うことができる。
図35(b)には、スナップショットにおけるストレージノード間の負荷分散の一例を示している。スナップショットにおける処理は、図35(a)に示した処理と同様である(図35(b)の(i)から(iv))。このとき、図35(b)の(i)から(iii)までの処理は、ストレージノード100aのコアpが担当し、図35(b)の(iv)の処理は、ストレージノード100bのコアpが担当する。このようにすれば、ストレージシステム1000におけるスナップショットにおいて、ストレージノード100間で負荷分散を行うことができる。
なお、図35において、(iii)の処理と(iv)の処理とは、並行して実行可能である。また、図35の(ii)の処理から(iv)の処理への移行は、図33の場合と同様に、コア間で連絡を行うことにより実現可能である。また、各コアの処理の分担は、図35に示した分担とは異なる分担としてもよい。
図36は、ストレージシステム1000におけるリモートコピーに関する応用の一例を示す説明図である。ストレージシステム1000におけるリモートコピーとは、ホストコンピュータにアクセスされる論理ユニット190内のデータと同じデータを格納した他の論理ユニット190を地理的に離れた地点(リモートサイト)に位置するストレージシステム1000内に保持することによって、データの冗長性確保やディザスタリカバリを実現する処理である。リモートコピーでは、ホストコンピュータからのライトデータが受領されると、ライトデータの論理ユニット190への書き込みが行われると共に、当該ライトデータのリモートサイトへの転送が実行される。本実施例のストレージシステム1000では、このようなリモートコピーを実行する際に、負荷分散を図ることができる。
図36(a)には、リモートコピーにおけるコントローラ110内のCPUコア間の負荷分散の一例を示している。リモートコピーにおいて、ストレージノード100aでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納(図36(a)の(i))と、ライトデータの論理ユニット190(LU a0)への書き込み(図36(a)の(ii))と、ライトデータのリモートサイトへの転送(図36(a)の(iii))と、が実行される。このとき、図36(a)の(i)および(ii)の処理はCPUのコアpが担当し、図36(a)の(iii)の処理はCPUのコアqが担当する。このようにすれば、ストレージシステム1000におけるリモートコピーにおいて、コントローラ110内のコア間で負荷分散を行うことができる。
図36(b)には、リモートコピーにおけるストレージノード間の負荷分散の一例を示している。リモートコピーにおける処理は、図36(a)に示した処理と同様である(図36(b)の(i)から(iii))。このとき、図36(b)の(i)および(ii)の処理は、ストレージノード100aのコアpが担当し、図36(b)の(iii)の処理は、ストレージノード100bのコアpが担当する。このようにすれば、ストレージシステム1000におけるリモートコピーにおいて、ストレージノード100間で負荷分散を行うことができる。なお、各コアの処理の分担は、図36に示した分担とは異なる分担としてもよい。
図37は、ストレージシステム1000におけるストレージノード100間のミラーリングに関する応用の一例を示す説明図である。ストレージノード100間のミラーリングとは、それぞれ異なるストレージノード100に属する2つの論理ユニット190間で、ミラーリングを行う処理である。図37の例では、ストレージノード100a内の論理ユニット(LU a0)とストレージノード100b内の論理ユニット(LU b0)との間でミラーリングが行われる。ストレージノード100間のミラーリングでは、ホストコンピュータから受領したライトコマンドに含まれるライトデータのキャッシュ領域への格納(図37の(i))と、ライトデータの論理ユニット(LU a0)への書き込み(図37の(ii))と、ライトデータの論理ユニット(LU b0)への書き込み(図37の(iii))と、が実行される。本実施例のストレージシステム1000では、図37の(i)から(iii)までの処理を、ストレージノード100aのコアpが実行することができる。また、例えば、(iii)の処理を、ストレージノード100bのコアpが実行するなどして、ストレージノード100間の負荷分散を図ることもできる。
図38は、ストレージシステム1000におけるストレージノード100間RAIDに関する応用の一例を示す説明図である。ストレージノード100間RAIDとは、複数のストレージノード100間にまたがってRAIDを構成することを意味している。図38の例では、ストレージノード100a、ストレージノード100bおよびストレージノード100cのそれぞれに含まれる計3つのディスク194によりRAIDが構成され、ストライピングが実行される。このような構成のストレージシステム1000において、ホストコンピュータからのライトコマンドが受領された場合には、ホストコンピュータから受領したライトコマンドに含まれるライトデータ(図38のD0およびD1)のキャッシュ領域への格納(図38の(i))と、ライトデータに基づくパリティ(図38のP0)の生成(図38の(ii))と、ライトデータおよびパリティのディスク194への格納(図38の(iii)から(v))と、が実行される。本実施例のストレージシステム1000では、図38の(i)から(v)までの処理を、ストレージノード100aのコアpが実行することができる。また、例えば、(iv)の処理をストレージノード100bのコアが実行し、(v)の処理をストレージノード100cのコアが実行するなどして、ストレージノード100間の負荷分散を図ることもできる。
なお、本実施例のストレージシステム1000では、ストレージノード100の増設が繰り返し行われても、管理者はシングルシステムイメージでストレージシステムを管理することができる。そのため、従来型のストレージシステムを複数台ばらばらに管理する場合と比較して、ストレージシステムの管理コストを大幅に低減することができる。
また、本実施例のストレージシステム1000では、以下の4つの利点を得ることができる。第1に、小規模で低コストに構成されたストレージノード100を複数台集合することで、大規模でコストパフォーマンスの良いストレージシステム1000を提供することができる。第2に、容量や性能の拡大要求に従い、ストレージノード100単位での増設が可能となり、常に最適コストで構成されたスケーラブルなストレージシステム1000を提供することができる。第3に、ストレージノード100の増減設に伴うノード間担当CPUコア切り替えの際に、ホストコンピュータ200のアプリケーションに透過な処理を実現できるので、寿命によってストレージノード100の交換が必要な際にも、運用を停止する必要が無く、ストレージノード100の寿命を超えた長期のデータ保存を実現することができる。第4に、ストレージノード100の組み合わせにより、小規模から大規模まで、また、各種アプリケーションに応じた柔軟なシステム構成を実現できるので、製品開発の際に製品の種類(製品ラインナップ数)を少なくすることができる。
B.第2実施例:
図39は、第2実施例におけるデータ処理システム10の構成を概略的に示す説明図である。第2実施例のデータ処理システム10は、各ストレージノード100が2つのコントローラ110を含んでいる点が、図1に示した第1実施例のデータ処理システム10とは異なっている。また、第2実施例のデータ処理システム10は、ストレージシステム1000が2つのスイッチ300を含んでいる点も、第1実施例のデータ処理システム10とは異なっている。
第2実施例におけるストレージシステム1000では、各ストレージノード100が2つのコントローラ110を含んでおり、コントローラ110に関して冗長性を有している。そして、各コントローラ110は、2つの系列の内のいずれかに属するように設定されている。ここで、系列とは、コントローラ110のグループを意味しており、2つの系列を「x系列」および「y系列」と呼ぶものとしている。
コントローラ110の系列は、1つのストレージノード100内の2つのコントローラ110が、それぞれ異なる系列に属するように設定される。例えば、ストレージノード100a内の2つのコントローラ110aの内の、一方はx系列に属し、他方はy系列に属するように、系列が設定される。ストレージノード100bおよびストレージノード100c内の2つのコントローラ110についても、同様に設定される。本明細書および図面では、x系列に属するコントローラ110の名前および符号の末尾には「x」の添字を付し、y系列に属するコントローラ110の名前および符号の末尾には「y」の添字を付している。例えば、ストレージノード100a内のx系列に属するコントローラ110は、コントローラ110ax(CTL ax)と表される。
図39に示すように、1つのストレージノード100内の2つのコントローラ110は、互いに接続されている。また、1つのストレージノード100内の2つのコントローラ110は、それぞれ、当該ストレージノード100内のすべての論理ユニット190と接続されている。例えば、ストレージノード100a内の2つのコントローラ110(CTLaxおよびCTLay)のそれぞれは、2つの論理ユニット190(LUa0およびLUa1)と接続されている。
また、ストレージシステム1000の各ストレージノード100内のコントローラ110の内、同じ系列に属するコントローラ110同士は、ノード間コントローラ結合部102によって互いに接続されている。すなわち、ノード間コントローラ結合部102によって、各ストレージノード100の有するx系列に属する3つのコントローラ110(CTLax、CTLbx、CTLcx)は、互いに接続されている。同様に、ノード間コントローラ結合部102によって、各ストレージノード100の有するy系列に属する3つのコントローラ110(CTLay、CTLby、CTLcy)も互いに接続されている。これらのノード間コントローラ結合部102は、スイッチ300を介することなく、すなわち、コントローラ110とホストコンピュータ200との間のアクセスパスを介することなく、コントローラ110間を接続している。
ストレージシステム1000内の2つのスイッチ300は、各ストレージノード100の有する2つのコントローラ110のそれぞれに対応している。すなわち、一方のスイッチ300x(スイッチx)は、各ストレージノード100に含まれるx系列に属するコントローラ110のそれぞれと接続され、他方のスイッチ300y(スイッチy)は、各ストレージノード100に含まれるy系列に属するコントローラ110のそれぞれと接続される。なお、2つのスイッチ300は、それぞれ、ホストコンピュータ200、管理装置400およびネームサーバ500とも接続される。
図40は、第2実施例におけるノード間コントローラ結合部102の構成を示す説明図である。第2実施例におけるノード間コントローラ結合部102は、図3に示した第1実施例におけるノード間コントローラ結合部102と同様である。すなわち、ストレージノード100の各コントローラ110内のブリッジ140は、スイッチ(SW)142を有し、同一系列に属するコントローラ110は、スイッチ142間を接続する接続線104によって、互いに接続されている。なお、ストレージノード100内では、2つのコントローラ110内のスイッチ142間を接続する接続線によって、2つのコントローラ110が互いに接続されている。
図41は、第2実施例におけるストレージシステム1000のアドレス空間を概念的に示す説明図である。図41には、ストレージノード100aのコントローラ110ax(図39)内のコアp(図示せず)から見たストレージシステム1000のアドレス空間を示している。図41に示した第2実施例におけるアドレス空間は、図22に示した第1実施例のアドレス空間と同様である。すなわち、図41に示すように、ストレージノード100aのコントローラ110axのコアpから見たストレージシステム1000のアドレス空間には、ストレージシステム1000内のすべての空間が規則的にマッピングされている。これは、他のコアから見たアドレス空間についても同様である。従って、ストレージシステム1000内に含まれるCPUのコアは、アドレス空間にマッピングされたすべての空間を参照することができる。
従って、第2実施例のストレージシステム1000では、第1実施例で説明したコントローラ内担当CPUコア切り替えや、ノード間担当CPUコア切り替えを実現可能である。さらに、第2実施例のストレージシステム1000では、同一ストレージノード100内の異なるコントローラ110に含まれるCPUコア間で担当CPUコアの切り替えを行うノード内コントローラ間担当CPUコア切り替えを実現可能である。
C.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
C−1.変形例1:
上記各実施例におけるノード間コントローラ結合部102(図1および図39)の構成(図3および図40)は、あくまで一例であり、ノード間コントローラ結合部102の構成を他の構成とすることも可能である。図42は、変形例としてのノード間コントローラ結合部102の構成を示す説明図である。
図42に示す変形例では、結合部スイッチ106が設けられ、結合部スイッチ106は、接続線104によって各コントローラ110のスイッチ(SW)142と接続される。すなわち、図42に示す変形例では、ノード間コントローラ結合部102が、結合部スイッチ106と、結合部スイッチ106とスイッチ142とを接続する接続線104とから構成される。図42に示す変形例では、コントローラ110間を接続するための構成を簡素化することができる。なお、図42の変形例では、結合部スイッチ106とスイッチ142とを接続する接続線104が、1本の線によって構成されているが、接続線104を2本の線の組によって構成してもよい。
なお、図42には、図3に示した第1実施例におけるノード間コントローラ結合部102に対応した変形例を示しているが、図39に示した第2実施例におけるノード間コントローラ結合部102についても、同様に変形可能である。
図43は、他の変形例としてのノード間コントローラ結合部102の構成を示す説明図である。図43の変形例は、図40に示した第2実施例におけるノード間コントローラ結合部102に対応した変形例を示している。
図43に示す変形例では、2つの結合部スイッチ106が設けられ、ノード間コントローラ結合部102が、系列毎に、結合部スイッチ106と、結合部スイッチ106およびスイッチ142を接続する接続線104とから構成されている。さらに、図43に示す変形例では、2つの結合部スイッチ106が、接続線105によって接続されており、この接続線105を介して、ストレージノード100内の2つのコントローラ110が接続される。図43に示す変形例では、コントローラ110間を接続するための構成をさらに簡素化することができる。なお、図43に示す変形例においても、各接続線を2本の線の組によって構成してもよい。
C−2.変形例2:
図44は、変形例としてのストレージノード100の構成を示す説明図である。上記各実施例におけるストレージノード100の構成(図2および図3参照)との違いは、ストレージノード100内のコントローラ110の構成である。
図44に示す変形例では、コントローラ110は、コントローラチップ(CTLチップ)112とメモリ160とから構成されている。すなわち、コントローラ110内のメモリ160以外の構成要素は、1つのチップ上に配置されている。
図44に示す変形例において、コントローラチップ112上には、CPU120と、ネットワークコントローラ130と、ブリッジ回路141およびスイッチ(SW)142と、FCコントローラ150と、が配置されている。コントローラチップ112上には、また、各種回路(DMA回路114、パリティ演算回路116、メモリ制御回路168)が配置されている。
C−3.変形例3:
上記各実施例におけるホストコンピュータ200とストレージノード100との間のアクセスパス変更の方法(図30)は、あくまで一例であり、他の方法を用いることも可能である。図45は、ホストコンピュータ200とストレージノード100との間のアクセスパスの変更処理の変形例を示す説明図である。図45の変形例において、ストレージノード100のコントローラ110間では、担当CPUコアの引継ぎが行われる(図45の(i))。また、ホストコンピュータ200は、パス切り替えプログラム220を有しており、ホストコンピュータ200に接続された管理装置400からの指示に従って、ストレージノード100へのパスの切り替えを行う(図45の(ii))。図45の変形例の方法は、FCプロトコルやSASプロトコルを利用するシステムにおいて適用可能である。
図46は、ホストコンピュータ200とストレージノード100との間のアクセスパスの変更処理の他の変形例を示す説明図である。図46の変形例では、スイッチ300がバーチャリゼーション装置310を有している。バーチャリゼーション装置310は、仮想ポートを有しており、ホストコンピュータ200のイニシエータと仮想ポートとを対応付けていると共に、ストレージノード100のターゲットと仮想ポートとを対応付けられている。すなわち、ホストコンピュータ200のイニシエータとストレージノード100のターゲットとが、バーチャリゼーション装置310の仮想ポートを介して対応付けられている。
ストレージノード100のコントローラ110間における担当CPUコアの引継ぎ(図46の(i))に伴い、ターゲットが移動されると、バーチャリゼーション装置310において仮想ポートとターゲットとの対応が更新される。これにより、ホストコンピュータ200のアクセス先(仮想ポート)が変更されることなく、ホストコンピュータ200とストレージノード100との間のパスの切り替えを実行することができる(図46の(ii))。図46の変形例の方法は、iSCSIプロトコルを用いるシステムに適用できると共に、ターゲットの移動に伴いターゲットネーム(もしくはWWN)が変更されるFCプロトコルやSASプロトコルを利用するシステムにも適用可能である。
C−4.変形例4:
上記各実施例におけるデータ処理システム10(図1)の構成は、あくまで一例であり、データ処理システム10の構成を他の構成とすることも可能である。例えば、データ処理システム10において、ストレージシステム1000が1つのストレージノード100のみを備えるとしてもよい。この場合にも、上述のコントローラ内担当CPUコア切り替えを実現可能である。
また、ストレージシステム1000に含まれるストレージノード100のコントローラ110内のCPU120(図5)が、1つのコア122のみを有するとしてもよい。この場合にも、上述のノード間担当CPUコア切り替えを実現可能である。
また、データ処理システム10において用いられるプロトコルとして、種々のプロトコルを採用可能である。データ処理システム10の各構成要素は、採用するプロトコルに従った構成とすることができる。例えば、上記各実施例のネットワークコントローラ130は、イーサネット(Ethernet)(登録商標)、iSCSIコントローラ、FCコントローラ、SASコントローラ等として構成可能である。また、上記各実施例のFCコントローラ150は、FCコントローラ、SASコントローラ、SATAコントローラ、SCSIコントローラ等として構成可能である。また、ストレージノード100間のネットワークとして、イーサネット、PCI−EXPRESS、InfiniBand、PCI/PCI−X、専用線等を採用可能である。なお、コントローラ110を、図44に示すように、1つのチップ上に配置された構成とした場合には、回路がコンパクトであるという理由から、FCコントローラ150としてSASコントローラを採用するのが好ましい。また、コントローラ110を1つのチップ上に配置された構成とした場合には、ストレージノード100間のネットワークとして、シリアル線であるPCI−EXPRESSやInfiniBandを採用するのが好ましい。
C−5.変形例5:
上記各実施例におけるホストコマンド実行処理(図15および図16)の内容は、あくまで一例であり、他の内容に変更することも可能である。例えば、ネットワークコントローラ130からCPU120への割り込み要求の発行(図15のステップS140)や、FCコントローラ150からCPU120への割り込み要求の発行(図16のステップS200)は、必ずしも行われる必要はなく、ポーリング等によってCPU120の処理への移行を実現可能である。
本発明の第1実施例におけるデータ処理システムの構成を概略的に示す説明図である。 ストレージノード100のハードウェア構成の一例を示す説明図である。 ノード間コントローラ結合部102の構成を示す説明図である。 ストレージノード100に含まれる論理ユニット190の構成の一例を示す説明図である。 ストレージノード100のコントローラ110に含まれるCPU120の構成の一例を示す説明図である。 ストレージノード100のコントローラ110に含まれるFCコントローラ150の構成の一例を示す説明図である。 ストレージノード100のコントローラ110に含まれるネットワークコントローラ130の構成の一例を示す説明図である。 ストレージノード100のコントローラ110に含まれるメモリ160の構成の一例を示す説明図である。 LU管理テーブルの一例を示す説明図である。 ターゲット管理テーブルの一例を示す説明図である。 イニシエータ管理テーブルの一例を示す説明図である。 ネームサーバ500の構成の一例を示す説明図である。 ストレージシステム1000の製品形態の一例を示す説明図である。 ストレージシステム1000の製品形態の他の一例を示す説明図である。 ストレージシステム1000のストレージノード100におけるホストコマンド実行処理の流れを示すフローチャートである。 ストレージシステム1000のストレージノード100におけるホストコマンド実行処理の流れを示すフローチャートである。 ストレージノード100におけるホストコマンド実行処理の概要を示す説明図である。 ストレージノード100におけるホストコマンド実行処理の概要を示す説明図である。 コントローラ内担当CPUコア切り替え後のホストコマンド実行処理の概要を示す説明図である。 ストレージノード100のコントローラ110内におけるアドレス空間を概念的に示す説明図である。 ストレージノード100のコントローラ110内におけるメモリマップを示す説明図である。 ストレージシステム1000のアドレス空間を概念的に示す説明図である。 ストレージシステム1000のメモリマップを示す説明図である。 ノード間担当CPUコア切り替えの一例を示す説明図である。 ノード間担当CPUコア切り替え後の担当CPUコアから見たストレージシステム1000のアドレス空間を概念的に示す説明図である。 ノード間担当CPUコア切り替え後のホストコマンド実行処理の流れを示すフローチャートである。 ノード間担当CPUコア切り替え後のホストコマンド実行処理の流れを示すフローチャートである。 ノード間担当CPUコア切り替え後のホストコマンド実行処理の概要を示す説明図である。 ノード間担当CPUコア切り替え後のホストコマンド実行処理の概要を示す説明図である。 ホストコンピュータ200とストレージノード100との間のアクセスパスの変更処理の一例を示す説明図である。 ストレージシステム1000の管理装置400の管理画面410の一例を示す説明図である。 ストレージシステム1000の管理装置400の管理画面410の他の一例を示す説明図である。 ストレージシステム1000におけるシャドウイメージに関する応用の一例を示す説明図である。 ストレージシステム1000におけるシャドウイメージに関する応用の他の例を示す説明図である。 ストレージシステム1000におけるスナップショットに関する応用の一例を示す説明図である。 ストレージシステム1000におけるリモートコピーに関する応用の一例を示す説明図である。 ストレージシステム1000におけるストレージノード100間のミラーリングに関する応用の一例を示す説明図である。 ストレージシステム1000におけるストレージノード100間RAIDに関する応用の一例を示す説明図である。 第2実施例におけるデータ処理システムの構成を概略的に示す説明図である。 第2実施例におけるノード間コントローラ結合部102の構成を示す説明図である。 第2実施例におけるストレージシステム1000のアドレス空間を概念的に示す説明図である。 変形例としてのノード間コントローラ結合部102の構成を示す説明図である。 他の変形例としてのノード間コントローラ結合部102の構成を示す説明図である。 変形例としてのストレージノード100の構成を示す説明図である。 ホストコンピュータ200とストレージノード100との間のアクセスパスの変更処理の変形例を示す説明図である。 ホストコンピュータ200とストレージノード100との間のアクセスパスの変更処理の他の変形例を示す説明図である。
符号の説明
10...データ処理システム
100...ストレージノード
102...ノード間コントローラ結合部
104...接続線
105...接続線
106...結合部スイッチ
110...コントローラ
112...コントローラチップ
114...DMA回路
116...パリティ演算回路
120...CPU
122...コア
130...ネットワークコントローラ
132...ドアベルレジスタ
134...NWCドアベル
138...割り込み線
140...ブリッジ
141...ブリッジ回路
142...スイッチ
144...割り込み変換器
150...FCコントローラ
152...ドアベルレジスタ
154...FCCドアベル
156...CPU対応器
158...割り込み線
160...メモリ
162...キャッシュ領域
164...制御データ領域
166...制御プログラム領域
168...メモリ制御回路
171...システム構成管理テーブル
172...LU管理テーブル
173...ターゲット管理テーブル
174...イニシエータ管理テーブル
176...NWCメールボックス
178...FCCメールボックス
180...オペレーティングシステムプログラム
183...ターゲット制御プログラム
184...RAID制御プログラム
185...キャッシュ制御プログラム
186...ディスク制御プログラム
187...FC制御プログラム
188...LU制御プログラム
189...通信プログラム
190...論理ユニット
192...ファイバチャネル
194...ディスク
200...ホストコンピュータ
210...イニシエータ管理テーブル
220...パス切り替えプログラム
300...スイッチ
310...バーチャリゼーション装置
400...管理装置
410...管理画面
500...ネームサーバ
520...CPU
530...ネットワークコントローラ
540...ブリッジ
560...メモリ
562...制御データ領域
564...制御プログラム領域
571...ネーム管理テーブル
580...オペレーティングシステムプログラム
582...ネーム管理プログラム
583...通信プログラム
1000...ストレージシステム
1200...コントローラ筐体
1300...ディスク筐体

Claims (15)

  1. ストレージシステムであって、
    データを格納する論理的な記憶領域である少なくとも1つの論理ユニットと、前記論理ユニットを制御する少なくとも1つのコントローラと、をそれぞれ含む複数のストレージノードと、
    それぞれ異なる前記ストレージノードに含まれる複数の前記コントローラ間を、前記コントローラと前記ストレージシステムに接続されるホストコンピュータとの間のアクセスパスを介することなく接続するコントローラ間結合部と、を備え、
    前記ストレージノードの前記コントローラは、
    少なくとも1つのCPUコアを含むCPUと、
    ネットワークを介してホストコンピュータから前記ストレージシステム内の複数の前記論理ユニットの内の1つを対象としたコマンドを受領するネットワークコントローラと、
    前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
    前記CPUと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記CPU内の前記CPUコアと前記ストレージシステム内の複数の前記論理ユニットコントローラとの組み合わせのそれぞれと対応付けられた複数の第1の共用メモリ領域を有するメモリと、を含み、
    前記複数のストレージノードの内の第1のストレージノードに含まれる前記ネットワークコントローラが、前記複数のストレージノードの内の第2のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときは、前記第1のストレージノード内の前記CPUコアは、受領されたコマンドに応じた処理を実行することによって、前記第2のストレージノードに含まれる論理ユニットに接続された前記論理ユニットコントローラに対するコマンドを、前記第1のストレージノード内の前記CPUコアと前記第2のストレージノード内の前記論理ユニットコントローラとの組み合わせに対応付けられた前記第1のストレージノード内の前記第1の共用メモリ領域に格納し、
    前記第2のストレージノード内の前記論理ユニットコントローラは、前記第1のストレージノード内の前記第1の共用メモリ領域に格納されたコマンドを、前記コントローラ間結合部を介して取得し、取得したコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する、ストレージシステム。
  2. 請求項1記載のストレージシステムであって、
    前記第1のストレージノード内の前記CPUは、前記CPUコアを複数含み、
    前記第1のストレージノード内の前記メモリは、前記CPUと前記ネットワークコントローラとで共用されるメモリ領域であって、前記複数のCPUコアのそれぞれと対応付けられた複数の第2の共用メモリ領域を含み、
    前記第1のストレージノード内の前記ネットワークコントローラは、受領されたコマンドに応じた処理を実行する前記CPUコアである担当CPUコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有すると共に、前記担当CPUコアに対応付けられた前記第2の共用メモリ領域に受領されたコマンドを格納し、
    前記担当CPUコアは、前記第2の共用メモリ領域からコマンドを取得し、コマンドに応じた処理を実行する、ストレージシステム。
  3. 請求項2記載のストレージシステムであって、
    前記論理ユニットコントローラは、前記ストレージシステム内の複数の前記CPUコアのそれぞれに対応付けられた、前記CPUと前記論理ユニットコントローラとの通信のための領域である第1の通信領域を含み、
    前記第1のストレージノード内の前記担当CPUコアは、前記第1のストレージノード内の前記第1の共用メモリ領域に格納したコマンドの場所を示す場所情報を、前記担当CPUコアに対応付けられた前記第2のストレージノードの前記論理ユニットコントローラ内の前記第1の通信領域に格納し、
    前記第2のストレージノードの前記論理ユニットコントローラは、前記第1の通信領域に格納された前記場所情報を参照して、前記第1の共用メモリ領域からコマンドを取得する、ストレージシステム。
  4. 請求項2記載のストレージシステムであって、
    前記ネットワークコントローラは、複数の前記CPUコアのそれぞれに対応付けられた、前記CPUと前記ネットワークコントローラとの通信のための領域である第2の通信領域を含み、
    前記第1のストレージノード内の前記ネットワークコントローラは、前記第1のストレージノード内の前記第2の共用メモリ領域に格納したコマンドの場所を示す場所情報を、前記担当CPUコアに対応付けられた前記第2の通信領域に格納し、
    前記担当CPUコアは、前記第2の通信領域に格納された前記場所情報を参照して、前記第2の共用メモリ領域からコマンドを取得する、ストレージシステム。
  5. 請求項2記載のストレージシステムであって、
    前記第1のストレージノード内の前記ネットワークコントローラは、前記第2の共用メモリ領域にコマンドを格納した後、前記担当CPUコアに割り込み要求を発行し、
    前記担当CPUコアは、前記割り込み要求を受領したとき、前記第2の共用メモリ領域からコマンドを取得する、ストレージシステム。
  6. 請求項2記載のストレージシステムであって、
    前記第2のストレージノード内の前記論理ユニットコントローラは、取得したコマンドに従った前記論理ユニットにおけるデータの入出力の制御を完了したときには、処理の完了を表すステータス情報を、前記コントローラ間結合部を介して、前記第1のストレージノード内の前記担当CPUコアに対応付けられた前記第1の共用メモリ領域に格納し、
    前記担当CPUコアは、前記第1の共用メモリ領域に格納されたステータス情報に応じた処理を実行することによって、前記第1のストレージノード内の前記ネットワークコントローラに対するコマンドを、前記担当CPUコアに対応付けられた前記第2の共用メモリ領域に格納し、
    前記第1のストレージノード内の前記ネットワークコントローラは、前記第2の共用メモリ領域に格納されたコマンドに従って、ホストコンピュータから受領したコマンドの完了に関する処理を実行する、ストレージシステム。
  7. 請求項6記載のストレージシステムであって、
    前記第2のストレージシステム内の前記論理ユニットコントローラは、前記第1のストレージノード内の前記第1の共用メモリ領域にステータス情報を格納した後、前記担当CPUコアに割り込み要求を発行し、
    前記担当CPUコアは、前記割り込み要求を受領したとき、前記第1の共用メモリ領域からステータス情報を取得する、ストレージシステム。
  8. 請求項2記載のストレージシステムであって、
    前記ストレージノード内の前記コントローラは、前記コントローラ間結合部と接続されるコントローラスイッチを含み、
    前記コントローラ間結合部は、前記コントローラスイッチ間を接続する接続線を含む、ストレージシステム。
  9. 請求項2記載のストレージシステムであって、
    前記ストレージノード内の前記コントローラは、前記コントローラ間結合部と接続されるコントローラスイッチを含み、
    前記コントローラ間結合部は、前記コントローラスイッチと接続された複数の接続線と、前記複数の接続線のそれぞれと接続された結合部スイッチと、を含む、ストレージシステム。
  10. 請求項2記載のストレージシステムであって、
    前記ストレージノードのそれぞれは、前記コントローラを複数含み、
    前記ストレージノード内の複数の前記コントローラのそれぞれは、1つの系列に1つの前記ストレージノード内の複数の前記コントローラが属さないように、複数の系列の内のいずれかの系列に属するように設定され、
    前記コントローラ間結合部は、前記ストレージシステム内の同一の系列に属する複数の前記コントローラ間を接続する、ストレージシステム。
  11. 請求項10記載のストレージシステムであって、
    前記ストレージノード内の前記コントローラは、前記コントローラ間結合部と接続されるコントローラスイッチを含み、
    前記コントローラ間結合部は、系列毎に共有される結合部スイッチと、前記結合部スイッチと前記結合部スイッチに対応した系列に属する前記コントローラ内の前記コントローラスイッチとを接続する接続線と、複数の前記結合部スイッチ間を接続する接続線と、を含み、
    1つの前記ストレージノード内に含まれる複数の前記コントローラは、前記結合部スイッチ間を接続する接続線を介して、互いに接続されている、ストレージシステム。
  12. 請求項2記載のストレージシステムであって、さらに、
    表示部と操作部とを有する管理装置を備え、
    前記管理装置の表示部は、前記ストレージシステム内の複数の前記論理ユニットと前記担当CPUコアとの対応関係を表示可能であり、
    前記ネットワークコントローラは、ユーザによる前記管理装置の操作部の操作により、前記管理装置の表示部に表示された前記対応関係が変更された場合に、変更後の前記対応関係に従って、前記担当CPUコアの設定を行う、ストレージシステム。
  13. 請求項2記載のストレージシステムであって、
    前記コントローラの前記CPUと、前記ネットワークコントローラと、前記論理ユニットコントローラと、は、1つのチップ上に配置されている、ストレージシステム。
  14. ストレージシステムであって、
    少なくとも1つのストレージノードを備え、
    前記ストレージノードは、
    データを格納する論理的な記憶領域である少なくとも1つの論理ユニットと、
    複数のCPUコアを含むCPUと、
    ネットワークを介してホストコンピュータから前記論理ユニットを対象としたコマンドを受領するネットワークコントローラと、
    前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
    前記CPUと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記CPUの複数のCPUコアのそれぞれと対応付けられた複数の第1の共用メモリ領域と、前記CPUと前記ネットワークコントローラとで共用されるメモリ領域であって、前記CPUの複数のCPUコアのそれぞれと対応付けられた複数の第2の共用メモリ領域と、を有するメモリと、を含み、
    前記ネットワークコントローラは、ホストコンピュータから受領されたコマンドに応じた処理を行う前記CPUコアである担当CPUコアを、受領されたコマンドの対象の論理ユニットに応じて設定する機能を有すると共に、前記担当CPUコアに対応付けられた前記第2の共用メモリ領域に受領されたコマンドを格納し、
    前記担当CPUコアは、前記第2の共用メモリ領域に格納されたコマンドに応じた処理を実行することによって、前記論理ユニットコントローラに対するコマンドを、前記担当CPUコアに対応付けられた前記第1の共用メモリ領域に格納し、
    前記論理ユニットコントローラは、前記第1の共用メモリ領域に格納されたコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する、ストレージシステム。
  15. ストレージシステムの制御方法であって、
    前記ストレージシステムは、
    データを格納する論理的な記憶領域である少なくとも1つの論理ユニットと、前記論理ユニットを制御する少なくとも1つのコントローラと、をそれぞれ含む複数のストレージノードと、
    それぞれ異なる前記ストレージノードに含まれる複数の前記コントローラ間を、前記コントローラと前記ストレージシステムに接続されるホストコンピュータとの間のアクセスパスを介することなく接続するコントローラ間結合部と、を備え、
    前記ストレージノードの前記コントローラは、
    少なくとも1つのCPUコアを含むCPUと、
    ネットワークを介してホストコンピュータから前記ストレージシステム内の複数の前記論理ユニットの内の1つを対象としたコマンドを受領するネットワークコントローラと、
    前記論理ユニットに接続されると共に、前記論理ユニットにおけるデータの入出力を制御する論理ユニットコントローラと、
    前記CPUと前記論理ユニットコントローラとで共用されるメモリ領域であって、前記CPU内の前記CPUコアと前記ストレージシステム内の複数の前記論理ユニットコントローラとの組み合わせのそれぞれと対応付けられた複数の第1の共用メモリ領域を有するメモリと、を含み、
    前記方法は、
    (a)前記複数のストレージノードの内の第1のストレージノードに含まれる前記ネットワークコントローラが、前記複数のストレージノードの内の第2のストレージノードに含まれる論理ユニットを対象としたコマンドをホストコンピュータから受領したときに、前記第1のストレージノード内の前記CPUコアが、受領されたコマンドに応じた処理を実行することによって、前記第2のストレージノードに含まれる論理ユニットに接続された前記論理ユニットコントローラに対するコマンドを、前記第1のストレージノード内の前記CPUコアと前記第2のストレージノード内の前記論理ユニットコントローラとの組み合わせに対応付けられた前記第1のストレージノード内の前記第1の共用メモリ領域に格納する工程と、
    (b)前記第2のストレージノード内の前記論理ユニットコントローラが、前記第1のストレージノード内の前記第1の共用メモリ領域に格納されたコマンドを、前記コントローラ間結合部を介して取得し、取得したコマンドに従って、前記論理ユニットにおけるデータの入出力を制御する工程と、を備える、方法。
JP2005318694A 2005-11-01 2005-11-01 ストレージシステム Expired - Fee Related JP4814617B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2005318694A JP4814617B2 (ja) 2005-11-01 2005-11-01 ストレージシステム
US11/331,115 US7512746B2 (en) 2005-11-01 2006-01-13 Storage system with designated CPU cores processing transactions across storage nodes
EP06251232A EP1785828B1 (en) 2005-11-01 2006-03-08 Storage system
DE602006005311T DE602006005311D1 (de) 2005-11-01 2006-03-08 Speichersystem
CN200610057017.6A CN1959618B (zh) 2005-11-01 2006-03-13 存储系统以及存储系统的控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005318694A JP4814617B2 (ja) 2005-11-01 2005-11-01 ストレージシステム

Publications (2)

Publication Number Publication Date
JP2007128175A true JP2007128175A (ja) 2007-05-24
JP4814617B2 JP4814617B2 (ja) 2011-11-16

Family

ID=37032578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005318694A Expired - Fee Related JP4814617B2 (ja) 2005-11-01 2005-11-01 ストレージシステム

Country Status (5)

Country Link
US (1) US7512746B2 (ja)
EP (1) EP1785828B1 (ja)
JP (1) JP4814617B2 (ja)
CN (1) CN1959618B (ja)
DE (1) DE602006005311D1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010029812A1 (ja) * 2008-09-09 2010-03-18 日本電気株式会社 マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
JP2010531494A (ja) * 2007-06-28 2010-09-24 メモライト メモリテック (シェンチェン) カンパニー リミテッド マルチチャンネル非揮発性固体記憶装置に基づくロジック・ストリップの制御方法
JP2011113232A (ja) * 2009-11-26 2011-06-09 Nec Corp ディスクエンクロージャ及びストレージシステムの制御方法
JP2012519316A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージサブシステム、及びその制御方法
JP2013097788A (ja) * 2011-11-04 2013-05-20 Lsi Corp 仮想sasエキスパンダを介して共有されるサーバ直接接続のストレージシステム
WO2016189640A1 (ja) * 2015-05-26 2016-12-01 株式会社日立製作所 ストレージ装置、及び方法
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395390B2 (en) * 2006-07-12 2008-07-01 Inventec Corporation System for backing up cache memory in a double backup server structure
AU2008207572B2 (en) * 2008-04-23 2010-10-28 Drone Technology Pte Ltd Module for data acquisition and conrol in a sensor/control network
WO2009131542A1 (en) * 2008-04-23 2009-10-29 Drone Technology Pte Ltd Module for data acquisition and control in a sensor/control network
US9449314B2 (en) * 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US7827321B2 (en) 2008-10-02 2010-11-02 International Business Machines Corporation Central processing unit measurement facility
US9325802B2 (en) 2009-07-16 2016-04-26 Microsoft Technology Licensing, Llc Hierarchical scale unit values for storing instances of data among nodes of a distributed store
US20110154015A1 (en) * 2009-12-21 2011-06-23 Tareq Mahmud Rahman Method For Segmenting A Data File, Storing The File In A Separate Location, And Recreating The File
WO2011114496A1 (ja) * 2010-03-18 2011-09-22 富士通株式会社 マルチコアプロセッサシステム、調停回路制御方法、および調停回路制御プログラム
US8914583B1 (en) 2012-03-31 2014-12-16 Emc Corporation System and method for improving cache performance
US8966190B1 (en) * 2012-03-31 2015-02-24 Emc Corporation System and method for assigning control of a logical unit number
US8909886B1 (en) 2012-03-31 2014-12-09 Emc Corporation System and method for improving cache performance upon detecting a migration event
US9501437B2 (en) 2012-11-15 2016-11-22 Empire Technology Development Llc Scalable storage system having multiple storage channels
US9348537B2 (en) * 2013-09-10 2016-05-24 Qualcomm Incorporated Ascertaining command completion in flash memories
US9274722B2 (en) * 2013-12-06 2016-03-01 Concurrent Ventures, LLP System, method and article of manufacture for monitoring, controlling and improving storage media system performance
US10031860B2 (en) 2014-09-24 2018-07-24 Western Digital Technologies, Inc. Memory transfer of objects in a data storage device
US9851901B2 (en) 2014-09-26 2017-12-26 Western Digital Technologies, Inc. Transfer of object memory references in a data storage device
US9967337B1 (en) * 2015-12-29 2018-05-08 EMC IP Holding Company LLC Corruption-resistant backup policy
US10977124B2 (en) * 2016-01-07 2021-04-13 Hitachi, Ltd. Distributed storage system, data storage method, and software program
US20180034908A1 (en) * 2016-07-27 2018-02-01 Alibaba Group Holding Limited Disaggregated storage and computation system
US10908939B2 (en) * 2017-01-31 2021-02-02 Intel Corporation Efficient fine grained processing of graphics workloads in a virtualized environment
JP6722216B2 (ja) * 2018-03-09 2020-07-15 株式会社日立製作所 データ量削減機能を有する計算機システム、及び、記憶制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001256003A (ja) * 2000-03-10 2001-09-21 Hitachi Ltd ディスクアレイ制御装置、そのディスクアレイ制御ユニットおよびその増設方法
JP2003280824A (ja) * 2002-03-20 2003-10-02 Hitachi Ltd ストレージシステム、そのディスク制御クラスタ、その増設方法
JP2003296191A (ja) * 2002-03-06 2003-10-17 Hewlett Packard Co <Hp> 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
JP2003323263A (ja) * 2002-04-30 2003-11-14 Hitachi Ltd 共有メモリ制御方法および制御システム
JP2004302713A (ja) * 2003-03-31 2004-10-28 Hitachi Ltd 記憶システム及びその制御方法
JP2005353035A (ja) * 2004-05-10 2005-12-22 Hitachi Ltd ストレージシステムにおけるデータ移行

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0358715B1 (en) * 1987-05-01 1994-03-09 Digital Equipment Corporation Interrupting node for providing interrupt requests to a pended bus
JPH10283329A (ja) * 1997-04-02 1998-10-23 Matsushita Electric Ind Co Ltd メモリ排他制御方法
WO1999063438A1 (en) * 1998-06-05 1999-12-09 Mylex Corporation Apparatus, system and method for n-way raid controller
JP2000187608A (ja) 1998-12-24 2000-07-04 Hitachi Ltd 記憶装置サブシステム
US6629264B1 (en) * 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6772258B2 (en) * 2000-12-29 2004-08-03 Intel Corporation Method and apparatus for sharing an interrupt between disk drive interfaces
JP2004102374A (ja) * 2002-09-05 2004-04-02 Hitachi Ltd データ移行装置を有する情報処理システム
GB0227871D0 (en) * 2002-11-29 2003-01-08 Ibm DATA processing systems
JP4255699B2 (ja) * 2003-01-20 2009-04-15 株式会社日立製作所 記憶デバイス制御装置の制御方法、及び記憶デバイス制御装置
US7356655B2 (en) * 2003-05-15 2008-04-08 International Business Machines Corporation Methods, systems, and media for managing dynamic storage
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US7124143B2 (en) 2004-05-10 2006-10-17 Hitachi, Ltd. Data migration in storage system
US7904913B2 (en) * 2004-11-02 2011-03-08 Bakbone Software, Inc. Management interface for a system that provides automated, real-time, continuous data protection

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001256003A (ja) * 2000-03-10 2001-09-21 Hitachi Ltd ディスクアレイ制御装置、そのディスクアレイ制御ユニットおよびその増設方法
JP2003296191A (ja) * 2002-03-06 2003-10-17 Hewlett Packard Co <Hp> 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
JP2003280824A (ja) * 2002-03-20 2003-10-02 Hitachi Ltd ストレージシステム、そのディスク制御クラスタ、その増設方法
JP2003323263A (ja) * 2002-04-30 2003-11-14 Hitachi Ltd 共有メモリ制御方法および制御システム
JP2004302713A (ja) * 2003-03-31 2004-10-28 Hitachi Ltd 記憶システム及びその制御方法
JP2005353035A (ja) * 2004-05-10 2005-12-22 Hitachi Ltd ストレージシステムにおけるデータ移行

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010531494A (ja) * 2007-06-28 2010-09-24 メモライト メモリテック (シェンチェン) カンパニー リミテッド マルチチャンネル非揮発性固体記憶装置に基づくロジック・ストリップの制御方法
WO2010029812A1 (ja) * 2008-09-09 2010-03-18 日本電気株式会社 マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
JP5360506B2 (ja) * 2008-09-09 2013-12-04 日本電気株式会社 マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
US8694975B2 (en) 2008-09-09 2014-04-08 Nec Corporation Programming system in multi-core environment, and method and program of the same
JP2012519316A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージサブシステム、及びその制御方法
JP2011113232A (ja) * 2009-11-26 2011-06-09 Nec Corp ディスクエンクロージャ及びストレージシステムの制御方法
JP2013097788A (ja) * 2011-11-04 2013-05-20 Lsi Corp 仮想sasエキスパンダを介して共有されるサーバ直接接続のストレージシステム
WO2016189640A1 (ja) * 2015-05-26 2016-12-01 株式会社日立製作所 ストレージ装置、及び方法
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム
JP2018190368A (ja) * 2017-04-28 2018-11-29 株式会社日立製作所 ストレージシステム

Also Published As

Publication number Publication date
EP1785828A1 (en) 2007-05-16
US20070101070A1 (en) 2007-05-03
CN1959618B (zh) 2010-06-09
EP1785828B1 (en) 2009-02-25
CN1959618A (zh) 2007-05-09
DE602006005311D1 (de) 2009-04-09
US7512746B2 (en) 2009-03-31
JP4814617B2 (ja) 2011-11-16

Similar Documents

Publication Publication Date Title
JP4814617B2 (ja) ストレージシステム
JP5057656B2 (ja) ストレージシステム及びストレージシステムの運用方法
JP4718851B2 (ja) ストレージシステムにおけるデータ移行
US10162567B2 (en) Computer system
US8892840B2 (en) Computer system and data migration method
US20190310925A1 (en) Information processing system and path management method
JP5124103B2 (ja) 計算機システム
EP1837751B1 (en) Storage system, storage extent release method and storage apparatus
US9619171B2 (en) Storage system and virtualization method
US9213490B2 (en) Computer system and data migration method
US20120203988A1 (en) Storage system and virtualization method
JP2009146106A (ja) 物理的な通信ポートに付加される仮想的な通信ポートを移行する機能を有したストレージシステム
US8972656B1 (en) Managing accesses to active-active mapped logical volumes
JP2007207007A (ja) ストレージシステム、ストレージコントローラ及び計算機システム
US8972657B1 (en) Managing active—active mapped logical volumes
JP5635621B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
JP2010271808A (ja) ストレージ装置及びデータコピー方法
US10503440B2 (en) Computer system, and data migration method in computer system
JP2009129261A (ja) ストレージシステム及びストレージシステムの外部ボリューム接続経路探索方法
JP6343716B2 (ja) 計算機システム及び記憶制御方法
JP5335848B2 (ja) ストレージシステム及びストレージシステムの運用方法
US11467930B2 (en) Distributed failover of a back-end storage director
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110105

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110826

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140902

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees