JP6544386B2 - ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム - Google Patents
ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム Download PDFInfo
- Publication number
- JP6544386B2 JP6544386B2 JP2017108743A JP2017108743A JP6544386B2 JP 6544386 B2 JP6544386 B2 JP 6544386B2 JP 2017108743 A JP2017108743 A JP 2017108743A JP 2017108743 A JP2017108743 A JP 2017108743A JP 6544386 B2 JP6544386 B2 JP 6544386B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- request
- storage control
- volume
- storage
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1012—Load balancing
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 Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ストレージ制御装置、ストレージ制御プログラムおよびストレージシステムに関する。
近年、顧客を取り巻くビジネスの状況は刻一刻と変化しており、新たな事業・サービスの開始や、既存サービスのワークロードの変化に対して、柔軟かつ俊敏に拡張できるストレージシステムが求められている。ストレージシステムの拡張方法としては、スケールアウトがある。スケールアウトでは、ノードを増設することで処理能力を向上させることができる。
先行技術としては、論理ボリュームの作成時に、割り当てた実記憶領域と対応付けた割当情報と、論理ブロックのブロックサイズの特定情報とを関連付けた管理情報を格納するアクセス制御装置がある。アクセス制御装置は、データアクセス要求が入力されると、データアクセス要求によって指定されるアクセス先に対応する管理情報に設定される論理ブロックのデータ長に基づき、データアクセス要求をスライスのブロック長に基づく記述に変換する。また、帯域幅、通信コストおよび書き込みを依頼するノードとストレージの間の物理的距離に基づいて、分散配置された各ストレージについて利用対象としての望ましさを示す評価値を算出し、評価値に基づいてストレージセットを選択する技術がある。
ストレージシステムにより提供される論理ボリュームに対する上位装置からのI/O(Input/Output)要求を、複数のノードで分散して処理することで、負荷の分散を行うことが考えられる。しかしながら、従来技術では、論理ボリューム内のどの領域をどのノードに担当させるのかを効率的に決めるのが難しい。
一つの側面では、本発明は、上位装置からのI/O要求を処理するストレージ制御装置を効率的に決定することを目的とする。
1つの実施態様では、ボリューム内の論理ブロックを指定する論理アドレスを含むI/O要求を上位装置から受け付け、受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ストレージ制御装置が提供される。
本発明の一側面によれば、上位装置からのI/O要求を処理するストレージ制御装置を効率的に決定することができる。
以下に図面を参照して、本発明にかかるストレージ制御装置、ストレージ制御プログラムおよびストレージシステムの実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかるストレージ制御装置101の一実施例を示す説明図である。図1において、ストレージ制御装置101−1〜101−n(nは、2以上の自然数)は、ストレージ102にアクセス可能なコンピュータである。以下の説明では、ストレージ制御装置101−1〜101−nのうちの任意のストレージ制御装置を、「ストレージ制御装置101」と表記する場合がある。
図1は、実施の形態にかかるストレージ制御装置101の一実施例を示す説明図である。図1において、ストレージ制御装置101−1〜101−n(nは、2以上の自然数)は、ストレージ102にアクセス可能なコンピュータである。以下の説明では、ストレージ制御装置101−1〜101−nのうちの任意のストレージ制御装置を、「ストレージ制御装置101」と表記する場合がある。
また、ストレージ102は、データを記憶する1以上の記憶装置を含む。記憶装置は、例えば、フラッシュメモリ、ハードディスク、光ディスク、磁気テープなどである。上位装置103は、情報処理を行うコンピュータである。上位装置103は、例えば、業務処理を行う業務サーバである。
ストレージ制御装置101は、例えば、RAID(Redundant Arrays of Inexpensive Disks)構成の仮想化ストレージ装置に適用される。仮想化ストレージ装置は、シン・プロビジョニング(Thin Provisioning)が適用されたストレージ装置である。
シン・プロビジョニングとは、ストレージリソースを仮想化して割り当てることで、ストレージの物理容量を削減するための技術である。シン・プロビジョニングが導入された環境では、ユーザの要求に応じた容量を物理ディスク等に割り当てず、「論理ボリューム(仮想ボリューム)」として割り当てる。物理ディスク等は共有のディスクプールとして管理され、論理ボリュームに書き込まれたデータ量に応じて物理ディスク等に容量が割り当てられる。
ここで、仮想化ストレージ装置において、サーバに業務ごとのボリュームを提供する場合を想定する。この場合、サーバからのI/O要求を複数のストレージ制御装置(例えば、ストレージ制御装置101−1〜101−n)で負荷分散する方法として、例えば、ボリュームごとに、サーバからのI/O要求を処理するストレージ制御装置を決める方法がある。
ところが、この方法では、特定のストレージ制御装置で、その装置の能力を超えて業務負荷が高まると、レイテンシーが大きく劣化してしまう。また、業務や業務ボリュームが、ストレージ制御装置の装置数を超えて多数になると、どの業務をどのストレージ制御装置で動作させるかのストレージ設計が難しくなり、業務数の変動やワークロードの変化に対応することができなくなるおそれがある。
このため、各ボリュームについて、サーバからのI/O要求を複数のストレージ制御装置で分散して処理することで、負荷の分散を行い、安定した性能を維持することが考えられる。この方法では、ボリューム内のどの領域をどのストレージ制御装置に担当させるのかを決めることになる。
ボリューム内の各領域を担当するストレージ制御装置を決める方法としては、例えば、ボリューム内の各領域と、当該各領域を担当するストレージ制御装置との対応関係を記憶するテーブル等を予め用意することが考えられる。ところが、この方法では、I/O要求を受け付けた際に、その都度テーブル等を参照することになり、I/O処理にかかる処理時間の増加を招く。さらに、各ストレージ制御装置において、テーブル等を保持するための記憶領域を確保することになり、記憶容量不足を招くおそれがある。
そこで、本実施の形態では、論理ボリューム内のどの領域をどのストレージ制御装置101−1〜101−nに担当させるのかを効率的に決定することができるストレージ制御装置101について説明する。以下、ストレージ制御装置101の処理例について説明する。
(1)ストレージ制御装置101は、上位装置103からI/O要求を受け付ける。ここで、I/O要求は、ボリュームに対するリード要求またはライト要求である。ボリュームは、上位装置103に提供される論理ボリューム(仮想ボリューム)である。ストレージ102は、ボリュームに割り当てる物理記憶領域を有する。
I/O要求は、ボリューム内の論理ブロックを指定する論理アドレスを含む。論理ブロックは、所定容量で規定された管理単位の領域である。論理アドレスは、例えば、LBA(Logical Block Address)によって指定される。1LBAは、例えば、512B(Byte)の領域(1論理ブロック)に相当する。
図1の例では、ストレージ制御装置101−1が、上位装置103からボリューム110のLBAを含むI/O要求を受け付けた場合を想定する。
(2)ストレージ制御装置101は、ストレージ制御装置101−1〜101−nから、受け付けたI/O要求を処理するストレージ制御装置101を決定する。ここで、I/O要求を処理するとは、I/O要求されたデータの論理アドレスと物理アドレスとの対応関係を特定するメタデータからデータの物理位置を特定してアクセスを行うことである。
以下の説明では、上位装置103からのI/O要求を処理するストレージ制御装置101を「担当装置」と表記する場合がある。
具体的には、例えば、ストレージ制御装置101は、I/O要求に含まれる論理アドレスと、分割ブロックサイズ当たりの論理ブロック数と、ストレージ制御装置101−1〜101−nの装置数nとに基づいて、担当装置を決定する。ここで、分割ブロックサイズとは、ボリュームを区切って分割した分割ブロックのサイズである。
分割ブロックサイズは、任意に設定可能であり、I/O要求がストレージ制御装置101−1〜101−nにできるだけ分散されるような値に設定される。例えば、上位装置103から発行されるI/Oサイズは、最大でINQUIRYコマンドで返すサイズ(例えば、8MB)に分割される。このため、分割ブロックサイズを8MBとすることにしてもよい。
また、分割ブロックサイズ当たりの論理ブロック数は、論理アドレスがLBAによって指定されるとすると、分割ブロックサイズ当たりのLBA数、すなわち、1分割ブロック当たりのLBA数に相当する。一例として、分割ブロックサイズを「8MB」とし、1LBAを「512B」とする。この場合、分割ブロックサイズ当たりの論理ブロック数は、「8MB/512B」となる。
具体的には、例えば、ストレージ制御装置101は、下記式(1)を用いて、担当装置を決定することができる。下記式(1)は、I/O要求に含まれるボリュームのLBAと、分割ブロックサイズ当たりのLBA数と、複数のストレージ制御装置101の装置数nとから、担当装置を識別する装置番号を導出する数式の一例である。
ただし、「/」は、商を求める演算子を表す。「%」は、余りを求める演算子を表す。lbaは、I/O要求に含まれるボリュームのLBAであり、例えば、論理アドレスとして指定される先頭のLBAである。unit_sizeは、分割ブロックサイズ当たりのLBA数である。担当装置番号は、担当装置の装置番号である。装置番号は、ストレージ制御装置101において内部的に管理される各ストレージ制御装置101−1〜101−nを識別する識別子であり、0から順に1ずつ増えていく整数である。各ストレージ制御装置101−1〜101−nには、0から順に1ずつ増えていく装置番号が振られている。図1中、「#i」の「i」は、装置番号を示している(i=0,1,…,n−1)。
担当装置番号=(lba/unit_size)%n ・・・(1)
一例として、lbaを「50」とし、unit_sizeを「30」とし、nを「4」とする。この場合、担当装置番号は、「1(=(50/30)%4)」となる。このため、ストレージ制御装置101−1は、担当装置番号「1」のストレージ制御装置101、すなわち、ストレージ制御装置101−2を担当装置に決定する。
このように、ストレージ制御装置101によれば、上位装置103からのI/O要求に含まれる論理アドレスに応じて、ストレージ制御装置101−1〜101−nから担当装置を効率的に決定することができる。これにより、I/O処理にかかる負荷をストレージ制御装置101−1〜101−nで分散することが可能となる。
具体的には、例えば、ストレージ制御装置101は、上記式(1)を用いて、ボリューム110のLBAから担当装置番号を求めることができる。このため、例えば、ボリューム110内の領域と当該領域を担当する担当装置との対応関係を示すテーブル等を用いる場合に比べて、I/O処理にかかる処理時間を削減することができるとともに、記憶容量の使用量を抑えることができる。
(ストレージシステム200のシステム構成例)
つぎに、図1に示したストレージ制御装置101をストレージシステム200に適用した場合について説明する。ストレージシステム200は、例えば、RAID5,6等の冗長化されたシステムである。ただし、以下の説明では、ストレージ制御装置101を「ノードN」と表記する場合がある。
つぎに、図1に示したストレージ制御装置101をストレージシステム200に適用した場合について説明する。ストレージシステム200は、例えば、RAID5,6等の冗長化されたシステムである。ただし、以下の説明では、ストレージ制御装置101を「ノードN」と表記する場合がある。
図2は、ストレージシステム200のシステム構成例を示す説明図である。図2において、ストレージシステム200は、ノードブロックNB1,NB2と、ドライブグループDG1,DG2と、を含む。ノードブロックNB1は、ノードN1と、ノードN2とを含む。ノードブロックNB2は、ノードN3と、ノードN4とを含む。
ドライブグループDG1,DG2は、ドライブdの集合であり、例えば、6〜24台のドライブdを有する。ドライブdは、SSD(Solid State Drive)である。ただし、ドライブdとして、HDD(Hard Disk Drive)を用いることにしてもよい。図1に示したストレージ102は、例えば、ドライブグループDG1,DG2に相当する。
ノードブロックNB1内の各ノードN1,N2は、自配下のドライブグループDG1の各ドライブdに直接アクセス可能である。また、ノードブロックNB2内の各ノードN3,N4は、自配下のドライブグループDG2の各ドライブdに直接アクセス可能である。各ノードN1〜N4は、構成情報やメタデータを有する。
構成情報は、例えば、ストレージシステム200において作成された論理ボリュームや、RAIDを構成するドライブdについての種々の管理情報を含む。また、各ノードN1〜N4は、メタデータを用いてデータ(ユーザデータ)を管理する。メタデータは、データの論理アドレスと物理アドレスの対応関係を管理する論物メタmtを含む。論物メタmtのフォーマット例については、図4を用いて後述する。
ホスト装置201は、ストレージシステム200により提供される論理ボリューム(仮想ボリューム)に対するデータのリード/ライトを要求するコンピュータである。例えば、ホスト装置201は、ストレージシステム200を利用する業務サーバや、ストレージシステム200を管理する管理サーバなどである。図1に示した上位装置103は、例えば、ホスト装置201に相当する。ストレージシステム200は、Active/Active構成であり、各ノードN1〜N4のいずれでもホスト装置201からのI/O要求を受け付けることができる。
ストレージシステム200において、各ノードN1〜N4とホスト装置201は、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)で接続される。具体的には、例えば、各ノードN1〜N4は、EC−H(Expansion Card for Host)を介してホスト装置201と相互に通信可能に接続される。また、ノードブロックNB内のノードN間は、内部通信によって接続される。また、ノードブロックNBを跨いだノードN間は、例えば、EC−SO(Expansion Card for Scale−Out)を介して相互に通信可能に接続される。
また、ストレージシステム200では、例えば、RAIDユニットの単位でデータを管理する。シン・プロビジョニングの物理割当の単位は、一般に固定サイズのチャンク単位で行われ、1チャンクは1RAIDユニットに該当する。以降の説明では、チャンクをRAIDユニットと呼称する。RAIDユニットは、例えば、ドライブグループDGから割り当てられる24MBの連続な物理領域である。RAIDユニットは、複数のユーザデータユニット(データログとも呼ばれる)を含む。ユーザデータユニットには、例えば、ドライブdに書き込まれるデータの管理データと、ドライブdに書き込まれるデータの圧縮データとが含まれる。
なお、図2の例では、ストレージシステム200に含まれるノード数が4である場合を例に挙げて説明したが、ノード数は5以上であってもよい。また、ホスト装置201を1台のみ表記したが、ストレージシステム200は、2台以上のホスト装置201で利用可能である。また、ここでは、冗長化のためにノードブロックNBに2つのノードNが含まれる場合を例に挙げて説明したが、これに限らない。例えば、ノードブロックNBに含まれるノードNの数は、1つであってもよく、また、3つ以上であってもよい。また、ストレージシステム200には、例えば、ノードブロック単位でノードNを増設可能である。
(ノードNのハードウェア構成例)
図3は、ノードNのハードウェア構成例を示すブロック図である。図3において、ノードNは、CPU(Central Processing Unit)301と、メモリ302と、通信I/F(Interface)303と、I/Oコントローラ304と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
図3は、ノードNのハードウェア構成例を示すブロック図である。図3において、ノードNは、CPU(Central Processing Unit)301と、メモリ302と、通信I/F(Interface)303と、I/Oコントローラ304と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、ノードNの全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。RAMには、例えば、キャッシュメモリが含まれる。キャッシュメモリには、例えば、ホスト装置201から要求されるI/Oのデータが一時的に格納される。
通信I/F303は、通信回線を通じてネットワークに接続され、ネットワークを介して他のコンピュータ(例えば、図2に示したホスト装置201や他ノードN)に接続される。ネットワークは、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、SAN(Storage Area Network)などである。そして、通信I/F303は、ネットワークと装置内部とのインターフェースを司り、他のコンピュータからのデータの入出力を制御する。通信I/F303は、例えば、EC−H、EC−SOなどを含む。
I/Oコントローラ304は、CPU301の制御にしたがって、自配下のドライブグループDG内の各ドライブd(図2参照)に対するアクセスを行う。I/Oコントローラ304は、例えば、PCIe(PCI Express)スイッチを含む。
(論物メタmtのフォーマット例)
つぎに、ノードNが用いる論物メタmtのフォーマット例について説明する。論物メタmtは、例えば、図3に示したノードNのメモリ302に記憶される。
つぎに、ノードNが用いる論物メタmtのフォーマット例について説明する。論物メタmtは、例えば、図3に示したノードNのメモリ302に記憶される。
図4は、論物メタmtのフォーマット例を示す説明図である。図4において、論物メタmtは、データの論理アドレスと物理アドレスの対応関係を特定可能な情報である。論物メタmtは、例えば、8KBのデータごとに管理される。
図4の例では、論物メタmtの大きさは、32Bである。論物メタmtには、2BのLUNと、6BのLBAがデータの論理アドレスとして含まれる。また、論物メタmtには、2BのCompression Byte Countが、圧縮されたデータのバイト数として含まれる。また、論物メタmtには、2BのNode Noと、1BのDisk Pool Noと、4BのRAID Unit Noと、2BのRAID Unit Offset LBAが物理アドレスとして含まれる。
Node Noは、データユニットを記憶するRAIDユニットが属するドライブグループDGを担当するノードNを識別する番号である。Disk Pool Noは、データユニットを記憶するRAIDユニットが属するドライブグループDGを識別する番号である。RAID Unit Noは、データユニットを記憶するRAIDユニットを識別する番号である。RAID Unit Offset LBAは、データユニットのRAIDユニット内でのアドレスである。
(ノードNの機能的構成例)
図5は、ノードNの機能的構成例を示すブロック図である。図5において、ノードNは、受付部501と、決定部502と、転送部503と、処理部504と、を含む構成である。受付部501〜処理部504は制御部となる機能であり、具体的には、例えば、図3に示したメモリ302に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F303、I/Oコントローラ304により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302に記憶される。
図5は、ノードNの機能的構成例を示すブロック図である。図5において、ノードNは、受付部501と、決定部502と、転送部503と、処理部504と、を含む構成である。受付部501〜処理部504は制御部となる機能であり、具体的には、例えば、図3に示したメモリ302に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F303、I/Oコントローラ304により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302に記憶される。
受付部501は、ホスト装置201からI/O要求を受け付ける。ここで、I/O要求は、ボリュームVに対するリード要求またはライト要求である。ボリュームVは、ホスト装置201に提供される論理ボリューム(仮想ボリューム)である。ボリュームVには、例えば、図2に示したドライブグループDG1,DG2内のドライブdの物理記憶領域が適宜割り当てられる。
I/O要求は、ボリュームV内の論理ブロックを指定する論理アドレスを含む。具体的には、例えば、I/O要求は、ボリュームVのLUN(Logical Unit Number:論理ユニット番号)と、ボリュームVのLBAとを含む。ボリュームVのLUNは、ホスト装置201が用いるボリュームVを識別する識別子である。ボリュームVのLBAは、アクセス先となるLBAであり、例えば、ボリュームV内の先頭LBAおよびLBA範囲を示す。LBA範囲は、先頭LBAから何LBA分アクセスするのかの範囲を示す。LBA範囲は、例えば、LBA数によって示される。先頭LBAおよびアクセス範囲からI/O範囲(アクセス範囲)が特定される。
決定部502は、ノードN1〜N4から、受付部501によって受け付けたI/O要求を処理するノードNを決定する。ここで、ノードN1〜N4は、ストレージシステム200の構成要素となるノードNの集合である。ただし、ストレージシステム200には、5以上のノードNが含まれていてもよい。
以下の説明では、I/O要求を処理するノードNを「担当ノードN」と表記する場合がある。
具体的には、例えば、決定部502は、I/O要求に含まれる論理アドレスと、ボリュームVの分割ブロックサイズ当たりの論理ブロック数と、ボリュームVのボリューム番号と、ストレージシステム200のノード数とに基づいて、担当ノードNを決定する。分割ブロックサイズは、ボリュームVを区切って分割した分割ブロックのサイズである。分割ブロックサイズは、例えば、8MBである。
ボリューム番号は、ノードNにおいて内部的に管理される各ボリュームVを識別する識別子であり、0から順に1ずつ増えていく整数である。ボリューム番号は、例えば、ボリュームVのLUNをキーとして、構成情報から特定することができる。例えば、決定部502は、構成情報を参照して、I/O要求に含まれるボリュームVのLUNに対応するボリューム番号を特定する。
ストレージシステム200のノード数は、ストレージシステム200の構成要素となるノードN1〜N4の数である。すなわち、ノード数は、ボリュームVが存在するプールを構成するノードNの数である。プールは、例えば、複数のドライブdから構成されるRAID6ベースの物理的な容量プールである。
より詳細に説明すると、決定部502は、例えば、下記式(2)および(3)を用いて、担当ノードNを決定することができる。ただし、nodeは、担当ノードNを識別するノード番号である。ノード番号は、ノードNにおいて内部的に管理される各ノードN1〜N4を識別する識別子であり、0から順に1ずつ増えていく整数である。すなわち、ノード番号は、図1で説明した「装置番号」に相当する。unitは、I/O要求に含まれるボリュームVのLBAがボリュームV内の何領域目(分割ブロック)になるかを示す。lbaは、I/O要求に含まれるボリュームVのLBAを示す。lbaは、例えば、アクセス先の先頭LBAである。unit_sizeは、ボリュームVの分割ブロックサイズ当たりのLBA数である。lunは、ボリュームVのボリューム番号である。nodeCntは、ストレージシステム200の構成要素となるノードN1〜N4のノード数を示す。
node=(unit+lun)%nodeCnt ・・・(2)
unit=lba/unit_size ・・・(3)
unit=lba/unit_size ・・・(3)
なお、上記式(2)および(3)を用いて決定される各ボリュームVにおける担当ノードNの配置例については、図6を用いて後述する。
ここで、I/O範囲がボリュームV内の複数の分割ブロックに跨る場合がある。例えば、ホスト装置201から発行されるI/Oサイズは、最大でINQUIRYコマンドで返すサイズ(8MB)に分割される。したがって、分割ブロックサイズを「8MB」とした場合、I/O範囲は、最大で2つの分割ブロックに跨ることになる。
このため、決定部502は、I/O範囲がボリュームVの複数の分割ブロックに跨る場合は、I/O範囲を複数のI/O範囲に分割し、分割した複数のI/O範囲それぞれに対するI/O要求について、担当ノードNを決定することにしてもよい。具体的には、例えば、決定部502は、I/O要求に含まれるボリュームVの先頭LBAおよびLBA範囲と、分割ブロックサイズ当たりのLBA数とに基づいて、I/O範囲がボリュームVの複数の分割ブロックに跨るか否かを判断する。
より詳細に説明すると、決定部502は、例えば、下記式(4)を用いて、unit_cntを算出する。unit_cntは、I/O範囲が跨る分割ブロックの数を示す。換言すれば、unit_cntは、I/O要求がいくつの担当ノードNに分かれるのかを示す。ただし、start_lbaは、ボリュームVの先頭LBAである。io_blk_cntは、LBA範囲が示すLBA数である。unit_sizeは、ボリュームVの分割ブロックサイズ当たりのLBA数である。
unit_cnt
={(start_lba+io_blk_cnt−1)/unit_size}−
(start_lba/unit_size)+1 ・・・(4)
={(start_lba+io_blk_cnt−1)/unit_size}−
(start_lba/unit_size)+1 ・・・(4)
そして、決定部502は、算出したunit_cntが「1」の場合、I/O範囲が複数の分割ブロックに跨らないと判断する。一方、unit_cntが「2」の場合、決定部502は、I/O範囲が複数の分割ブロックに跨ると判断する。ここで、I/O範囲が複数の分割ブロックに跨る場合、決定部502は、I/O範囲を複数のI/O範囲に分割し、分割した複数のI/O範囲それぞれに対するI/O要求について、担当ノードNを決定する。
なお、I/O範囲がボリュームVの複数の分割ブロックに跨る場合の担当ノードNの決定例については、図7を用いて後述する。
転送部503は、決定された担当ノードNが他ノードであれば、I/O要求を担当ノードNに転送する。具体的には、例えば、転送部503は、I/O要求を担当ノードNに転送して、I/O要求の処理依頼を行う。この結果、担当ノードNにおいてI/O要求が処理される。例えば、I/O要求がリード要求の場合、転送部503は、担当ノードNからデータを受信すると、受信したデータをホスト装置201に送信する。
処理部504は、決定された担当ノードNが自装置であれば、I/O要求を処理する。具体的には、例えば、処理部504は、図4に示したような論物メタmtを参照して、I/O要求に含まれる論理アドレス(LUN、LBA)に基づいて、データの物理位置(物理アドレス)を特定する。
つぎに、処理部504は、特定した物理位置を物理担当ノードNに通知する。物理担当ノードNは、特定した物理位置のデータに直接アクセス可能なノードNである。例えば、I/O要求がリード要求の場合、処理部504は、物理担当ノードNからデータを受信すると、受信したデータをホスト装置201に送信する。ただし、自装置が物理担当ノードNの場合には、処理部504が、データの読み出しを行う。
また、処理部504は、受付部501が、他ノードからI/O要求を受け付けた場合、当該I/O要求を処理して、他ノードNに処理結果を通知する。すなわち、他ノードにおいて、ノードNが担当ノードNと決定された場合は、ノードNは、ホスト装置201からのI/O要求を他ノードから受け付け、担当ノードNとして当該I/O要求を処理する。
なお、ホスト装置201からのI/O要求に対するストレージシステム200の動作例については、図8を用いて後述する。
(各ボリュームVにおける担当ノードNの配置例)
つぎに、図6を用いて、上記式(2)および(3)を用いて決定される各ボリュームVにおける担当ノードNの配置例について説明する。
つぎに、図6を用いて、上記式(2)および(3)を用いて決定される各ボリュームVにおける担当ノードNの配置例について説明する。
図6は、各ボリュームVにおける担当ノードNの配置例を示す説明図である。図6において、ホスト装置201に提供される各ボリュームVにおける分割ブロックごとの担当ノードNが示されている。なお、図6中、node#の「#」は、ノードNのノード番号を示す。Volume#の「#」は、ボリュームVのボリューム番号を示す。
図6に示すように、同一ボリュームV内では、分割ブロックサイズごとに担当ノードNのノード番号が一つずつずれている。これにより、各ボリュームVのI/O処理にかかる負荷をノードN1〜N4で分散することができ、ストレージシステム200の安定した性能を維持することが可能となる。
また、ボリュームV間では、先頭分割ブロックの担当ノードNのノード番号がずれている。これにより、ストレージシステム200全体で負荷をより分散することができる。例えば、同一のホスト装置201や同一のOS(Operating System)から複数のボリュームVにアクセスがあった際に、各ボリュームVへのアクセスパターンが似たようなものとなることがある。例えば、各ボリュームVの1分割ブロックにアクセスが集中することがある。このような場合であっても、ボリュームV間で始まりの担当ノードNがずれているため、性能の低下を抑えることができる。
(I/O範囲が複数の分割ブロックに跨る場合の担当ノードNの決定例)
つぎに、図7を用いて、I/O範囲がボリュームVの複数の分割ブロックに跨る場合の担当ノードNの決定例について説明する。
つぎに、図7を用いて、I/O範囲がボリュームVの複数の分割ブロックに跨る場合の担当ノードNの決定例について説明する。
図7は、I/O範囲が複数の分割ブロックに跨る場合の一例を示す説明図である。図7において、Xは、ボリュームVのボリューム番号を示す。Yは、ノード数を示す。図7の例では、I/O範囲が複数の分割ブロックに跨っているため、I/O処理が、ノード番号「(Y−1)%X」の担当ノードNと、ノード番号「Y%X」の担当ノードNとに分散される例である。ここでは、1LBAを「512B」とし、分割ブロックサイズを「8MB」とする。この場合、unit_sizeは、「0x4000(=16384=8*1024*1024/512)」となる。
以下、ボリューム番号「2」のボリュームVに対して、14MB目から4MB分のI/O要求(LBA:0x7000〜0x8FFF)を受け付けた場合を例に挙げて、担当ノードNの決定例について説明する。
まず、決定部502は、上記式(4)を用いて、unit_cntを算出する。ここで、nodeCntは、「4」である。また、start_lbaは、「0x7000」である。また、io_blk_cntは、「0x2000(=0x8FFF−0x7000+1)」である。このため、unit_cntは、「2(=((0x7000+0x2000−1)/0x4000)−(0x7000/0x4000)+1=2−1+1)」となる。
この場合、決定部502は、I/O範囲が2つの分割ブロックに跨ると判断する。そして、決定部502は、I/O範囲を2つのI/O範囲に分割し、分割した2つのI/O範囲それぞれに対するI/O要求について、担当ノードNを決定する。具体的には、例えば、まず、決定部502は、1つ目の分割ブロックについて、lba_1、unit_1、node_1およびio_blk_cnt_1を算出する。
lba_1は、1つ目の分割ブロック内のアクセス先の先頭LBAである。unit_1は、1つ目の分割ブロックがボリュームV内の何領域目になるかを示す。node_1は、1つ目の分割ブロックの担当ノードNのノード番号である。io_blk_cnt_1は、1つ目の分割ブロック内のI/O範囲のLBA数を示す。算出結果は、以下の通りである。
lba_1
=start_lba=0x7000
unit_1
=lba_1/unit_size=0x7000/0x4000=1
node_1
=(unit_1+lun)%nodeCnt=(1+2)%4=3
io_blk_cnt_1
=(unit_1+1)*unit_size−lba_1
=(1+1)*0x4000−0x7000
=0x8000−0x7000
=0x1000
=start_lba=0x7000
unit_1
=lba_1/unit_size=0x7000/0x4000=1
node_1
=(unit_1+lun)%nodeCnt=(1+2)%4=3
io_blk_cnt_1
=(unit_1+1)*unit_size−lba_1
=(1+1)*0x4000−0x7000
=0x8000−0x7000
=0x1000
このため、1つ目の分割ブロックに対するI/O要求は、LBA「0x7000」から0x1000LBA分の範囲をI/O範囲とする、ノード番号「3」のノードNに対するI/O要求となる。
つぎに、決定部502は、2つ目の分割ブロックについて、lba_2、unit_2、node_2およびio_blk_cnt_2を算出する。
lba_2は、2つ目の分割ブロック内のアクセス先の先頭LBAである。unit_2は、2つ目の分割ブロックがボリュームV内の何領域目になるかを示す。node_2は、2つ目の分割ブロックの担当ノードNのノード番号である。io_blk_cnt_2は、2つ目の分割ブロック内のI/O範囲のLBA数を示す。算出結果は、以下の通りである。
lba_2
=lba_1+io_blk_cnt_1=0x8000
unit_2
=lba_2/unit_size=0x8000/0x4000=2
node_2
=(unit_2+lun)%nodeCnt=(2+2)%4=0
io_blk_cnt_2
=start_lba+io_blk_cnt−lba_2
=0x7000+0x2000−0x8000=0x1000
=lba_1+io_blk_cnt_1=0x8000
unit_2
=lba_2/unit_size=0x8000/0x4000=2
node_2
=(unit_2+lun)%nodeCnt=(2+2)%4=0
io_blk_cnt_2
=start_lba+io_blk_cnt−lba_2
=0x7000+0x2000−0x8000=0x1000
このため、2つ目の分割ブロックに対するI/O要求は、LBA「0x8000」から「0x1000」LBA分の範囲をI/O範囲とする、ノード番号「0」のノードNに対するI/O要求となる。これにより、ボリュームV内の複数の分割ブロックに跨るI/O要求についても対応することが可能となる。
(ストレージシステム200の動作例)
つぎに、図8を用いて、ホスト装置201からのI/O要求に対するストレージシステム200の動作例について説明する。ここでは、ホスト装置201からのI/O要求を受け付けるレシーブノードNが、ノードN2である場合を想定する。また、ホスト装置201からのI/O要求として、ボリュームVに対するリード要求を受け付ける場合を例に挙げて説明する。また、担当ノードNを「論理担当ノードN」と表記する場合がある。
つぎに、図8を用いて、ホスト装置201からのI/O要求に対するストレージシステム200の動作例について説明する。ここでは、ホスト装置201からのI/O要求を受け付けるレシーブノードNが、ノードN2である場合を想定する。また、ホスト装置201からのI/O要求として、ボリュームVに対するリード要求を受け付ける場合を例に挙げて説明する。また、担当ノードNを「論理担当ノードN」と表記する場合がある。
図8は、ストレージシステム200の動作例を示すシーケンス図である。図8において、まず、ノードN2は、ホスト装置201からのリード要求を受け付ける(ステップS801)。つぎに、ノードN2は、受け付けたリード要求を処理する論理担当ノードNを決定する(ステップS802)。
ここでは、論理担当ノードNとして「ノードN4」が決定された場合を想定する。なお、論理担当ノードNを決定する具体的な処理手順については、図9および図10を用いて後述する。
そして、ノードN2は、受け付けたホスト装置201からのリード要求を、決定した論理担当ノードN4に転送する(ステップS803)。つぎに、論理担当ノードN4は、ノードN2(以下、「レシーブノードN2」)からI/O要求を受信すると、論物メタmtを参照して、受信したI/O要求に含まれる論理アドレスに基づいて、データの物理位置を特定する(ステップS804)。
ここでは、データの物理位置として、ノードN3が直接アクセス可能な物理位置が特定された場合を想定する。
そして、論理担当ノードN4は、特定した物理位置を物理担当ノードN3に通知する(ステップS805)。つぎに、物理担当ノードN3は、論理担当ノードN4から物理位置を受信すると、受信した物理位置のデータを自配下のドライブdから読み出す(ステップS806)。そして、物理担当ノードN3は、読み出したデータを伸長して論理担当ノードN4に送信する(ステップS807)。
つぎに、論理担当ノードN4は、物理担当ノードN3からデータを受信すると、受信したデータをレシーブノードN2に転送する(ステップS808)。そして、レシーブノードN2は、論理担当ノードN4からデータを受信すると、受信したデータをホスト装置201に転送して(ステップS809)、本シーケンスによる一連の処理を終了する。
なお、ストレージシステム200では、ノード数n(n=4)に対して、(n−1)/nの割合でノード間通信が発生する。このため、ストレージシステム200では高速に通信可能なインターフェースを備えることにしてもよい。
(ノードNのストレージ制御処理手順)
つぎに、図9および図10を用いて、ノードNのストレージ制御処理手順について説明する。ただし、ここでは、I/O範囲が、最大でボリュームV内の2つの分割ブロックに跨る場合を想定する。
つぎに、図9および図10を用いて、ノードNのストレージ制御処理手順について説明する。ただし、ここでは、I/O範囲が、最大でボリュームV内の2つの分割ブロックに跨る場合を想定する。
図9および図10は、ノードNのストレージ制御処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、ノードNは、ホスト装置201からI/O要求を受け付けたか否かを判断する(ステップS901)。ここで、ノードNは、I/O要求を受け付けるのを待つ(ステップS901:No)。
そして、I/O要求を受け付けた場合(ステップS901:Yes)、ノードNは、上記式(4)を用いて、unit_cntを算出する(ステップS902)。なお、unit_cntは、I/O範囲が跨る分割ブロックの数を示す。つぎに、ノードNは、算出したunit_cntが「1」であるか否かを判断する(ステップS903)。
ここで、unit_cntが「1」の場合(ステップS903:Yes)、ノードNは、上記式(3)を用いて、unitを算出する(ステップS904)。なお、unitは、I/O要求に含まれるボリュームVのLBAがボリュームV内の何領域目(分割ブロック)になるかを示す。
つぎに、ノードNは、上記式(2)を用いて、nodeを算出する(ステップS905)。なお、nodeは、担当ノードNのノード番号である。そして、ノードNは、算出したnodeから特定される担当ノードNにI/O要求を転送して(ステップS906)、本フローチャートによる一連の処理を終了する。ただし、nodeが自ノードのノード番号には、ノードNは、ホスト装置201からのI/O要求を自ノードで処理する。
また、ステップS903において、unit_cntが「2」の場合(ステップS903:No)、ノードNは、図10に示すステップS1001に移行する。
図10のフローチャートにおいて、まず、ノードNは、lba_1を算出する(ステップS1001)。なお、lba_1は、1つ目の分割ブロック内のアクセス先の先頭LBAである。つぎに、ノードNは、unit_1を算出する(ステップS1002)。なお、unit_1は、1つ目の分割ブロックがボリュームV内の何領域目になるかを示す。
つぎに、ノードNは、node_1を算出する(ステップS1003)。なお、node_1は、1つ目の分割ブロックの担当ノードNのノード番号である。つぎに、ノードNは、io_blk_cnt_1を算出する(ステップS1004)。なお、io_blk_cnt_1は、1つ目の分割ブロック内のI/O範囲のLBA数を示す。
そして、ノードNは、算出したnode_1から特定される担当ノードNに、lba_1からio_blk_cnt_1のLBA分の範囲をI/O範囲とするI/O要求を転送する(ステップS1005)。ただし、node_1が自ノードのノード番号には、ノードNは、I/O要求を自ノードで処理する。
つぎに、ノードNは、lba_2を算出する(ステップS1006)。なお、lba_2は、2つ目の分割ブロック内のアクセス先の先頭LBAである。つぎに、ノードNは、unit_2を算出する(ステップS1007)。なお、unit_2は、2つ目の分割ブロックがボリュームV内の何領域目になるかを示す。
つぎに、ノードNは、node_2を算出する(ステップS1008)。なお、node_2は、2つ目の分割ブロックの担当ノードNのノード番号である。つぎに、ノードNは、io_blk_cnt_2を算出する(ステップS1009)。なお、io_blk_cnt_2は、2つ目の分割ブロック内のI/O範囲のLBA数を示す。
そして、ノードNは、算出したnode_2から特定される担当ノードNに、lba_2からio_blk_cnt_2のLBA分の範囲をI/O範囲とするI/O要求を転送して(ステップS1010)、本フローチャートによる一連の処理を終了する。ただし、node_2が自ノードのノード番号には、ノードNは、I/O要求を自ノードで処理する。これにより、各ボリュームVのI/O処理にかかる負荷をノードN1〜N4で適切に分散することが可能となる。
以上説明したように、実施の形態にかかるノードNによれば、ホスト装置201からのI/O要求を受け付け、該I/O要求に含まれるボリュームVの論理アドレスに応じて、担当ノードNを決定することができる。具体的には、例えば、ノードNは、上記式(2)および(3)を用いて、ボリュームVのLBAと、分割ブロックサイズ当たりのLBA数と、ボリューム番号と、ストレージシステム200のノード数とに基づいて、担当ノードNを決定することができる。
これにより、ノードN1〜N4で負荷分散してストレージシステム200の安定した性能を維持するための担当ノードNを効率的に決めることができる。具体的には、ボリュームV内の分割ブロック(特定サイズのLBA)ごとに担当ノードNを割り振ることができる。このため、例えば、ランダムI/Oに対して負荷分散の効果がより期待できる。また、ボリュームV間において、先頭分割ブロックの担当ノードNをずらすことができる。このため、例えば、各ボリュームVの1分割ブロックにアクセスが集中するようなことがあっても、性能の低下を抑えることができる。
また、ノードNによれば、決定した担当ノードNが自装置であれば、I/O要求を自ノードで処理し、決定した担当ノードNが他ノードであれば、I/O要求を担当ノードNに転送して処理させることができる。これにより、ホスト装置201からのI/O要求の処理にかかる負荷を分散することができる。
また、ノードNによれば、I/O要求に含まれるボリュームVの先頭LBAおよびLBA範囲と、分割ブロックサイズ当たりのLBA数とに基づいて、I/O範囲がボリュームVの複数の分割ブロックに跨るか否かを判断することができる。そして、ノードNによれば、複数の分割ブロックに跨る場合には、I/O範囲を複数のI/O範囲に分割し、分割した複数のI/O範囲それぞれに対するI/O要求について、担当ノードNを決定することができる。これにより、ボリュームV内の複数の分割ブロックに跨るI/O要求についても、I/O範囲を複数のI/O範囲に分割して、各I/O範囲を担当する担当ノードNをそれぞれ決めることができる。
これらのことから、実施の形態にかかるストレージシステム200によれば、各ノードNの負荷が均等に分散され、各ノードNに必要とされる最大性能を低く抑えることができる。また、どの業務をどのノードNで担当させるかをユーザが業務ごとに考える場合に比べて、ストレージ設計が容易になる。また、突発的に負荷が上昇しても、全ノードNで負荷分散するため、新たな業務の追加やワークロードの変化に対応可能となり、ホットスポットを回避して安定した性能を提供することができる。また、ストレージやボリュームなどの設定変更を行うことなく、リニアに性能を向上させることができる。
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明したノードN(ストレージ制御装置101)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、例えば、上述したノードNの機能(受付部501〜処理部504)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、ノードN(ストレージ制御装置101)を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)ボリューム内の論理ブロックを指定する論理アドレスを含むI/O(Input/Output)要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
制御部を有することを特徴とするストレージ制御装置。
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
制御部を有することを特徴とするストレージ制御装置。
(付記2)前記制御部は、
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記1に記載のストレージ制御装置。
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記1に記載のストレージ制御装置。
(付記3)前記論理アドレスは、LBA(Logical Block Address)によって指定され、
前記制御部は、
前記I/O要求に含まれる前記ボリュームのLBAと、前記分割ブロックサイズ当たりのLBA数と、前記ボリューム番号と、前記装置数とから、前記I/O要求を処理するストレージ制御装置を識別する装置番号を導出する数式を用いて、前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記2に記載のストレージ制御装置。
前記制御部は、
前記I/O要求に含まれる前記ボリュームのLBAと、前記分割ブロックサイズ当たりのLBA数と、前記ボリューム番号と、前記装置数とから、前記I/O要求を処理するストレージ制御装置を識別する装置番号を導出する数式を用いて、前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記2に記載のストレージ制御装置。
(付記4)前記制御部は、
決定した前記I/O要求を処理するストレージ制御装置が自装置であれば、前記I/O要求を処理し、
決定した前記I/O要求を処理するストレージ制御装置が他装置であれば、前記I/O要求を前記他装置に転送する、
ことを特徴とする付記1〜3のいずれか一つに記載のストレージ制御装置。
決定した前記I/O要求を処理するストレージ制御装置が自装置であれば、前記I/O要求を処理し、
決定した前記I/O要求を処理するストレージ制御装置が他装置であれば、前記I/O要求を前記他装置に転送する、
ことを特徴とする付記1〜3のいずれか一つに記載のストレージ制御装置。
(付記5)前記論理アドレスは、LBA(Logical Block Address)によって指定され、
前記制御部は、
前記I/O要求に含まれる前記ボリュームのLBAと、前記分割ブロックサイズ当たりのLBA数と、前記装置数とから、前記I/O要求を処理するストレージ制御装置を識別する装置番号を導出する数式を用いて、前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記1に記載のストレージ制御装置。
前記制御部は、
前記I/O要求に含まれる前記ボリュームのLBAと、前記分割ブロックサイズ当たりのLBA数と、前記装置数とから、前記I/O要求を処理するストレージ制御装置を識別する装置番号を導出する数式を用いて、前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記1に記載のストレージ制御装置。
(付記6)前記制御部は、
前記I/O要求に含まれる前記ボリュームの先頭LBAおよび範囲と、前記分割ブロックサイズ当たりのLBA数とに基づいて、I/O範囲が前記ボリュームの複数の分割ブロックに跨る場合は、前記I/O範囲を複数のI/O範囲に分割し、
分割した前記複数のI/O範囲それぞれに対するI/O要求について、前記複数のストレージ制御装置から当該I/O要求を処理するストレージ制御装置を決定する、
ことを特徴とする付記3または5に記載のストレージ制御装置。
前記I/O要求に含まれる前記ボリュームの先頭LBAおよび範囲と、前記分割ブロックサイズ当たりのLBA数とに基づいて、I/O範囲が前記ボリュームの複数の分割ブロックに跨る場合は、前記I/O範囲を複数のI/O範囲に分割し、
分割した前記複数のI/O範囲それぞれに対するI/O要求について、前記複数のストレージ制御装置から当該I/O要求を処理するストレージ制御装置を決定する、
ことを特徴とする付記3または5に記載のストレージ制御装置。
(付記7)前記制御部は、
前記上位装置からのI/O要求を他のストレージ制御装置から受け付けた場合、当該I/O要求を処理して、前記他のストレージ制御装置に処理結果を通知する、
ことを特徴とする付記1〜6のいずれか一つに記載のストレージ制御装置。
前記上位装置からのI/O要求を他のストレージ制御装置から受け付けた場合、当該I/O要求を処理して、前記他のストレージ制御装置に処理結果を通知する、
ことを特徴とする付記1〜6のいずれか一つに記載のストレージ制御装置。
(付記8)ボリューム内の論理ブロックを指定する論理アドレスを含むI/O要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
(付記9)前記決定する処理は、
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記8に記載のストレージ制御プログラム。
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記8に記載のストレージ制御プログラム。
(付記10)複数のストレージ制御装置と、前記複数のストレージ制御装置がアクセス可能なストレージとを含むストレージシステムであって、
前記複数のストレージ制御装置のいずれかのストレージ制御装置が、
ボリューム内の論理ブロックを指定する論理アドレスを含むI/O要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
ことを特徴とするストレージシステム。
前記複数のストレージ制御装置のいずれかのストレージ制御装置が、
ボリューム内の論理ブロックを指定する論理アドレスを含むI/O要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
ことを特徴とするストレージシステム。
(付記11)前記ストレージ制御装置が、
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記10に記載のストレージシステム。
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする付記10に記載のストレージシステム。
101,101−1〜101−n ストレージ制御装置
102 ストレージ
103 上位装置
110,V ボリューム
200 ストレージシステム
201 ホスト装置
301 CPU
302 メモリ
303 通信I/F
304 I/Oコントローラ
501 受付部
502 決定部
503 転送部
504 処理部
d ドライブ
DG1,DG2 ドライブグループ
mt 論物メタ
N,N1〜N4 ノード
NB1,NB2 ノードブロック
102 ストレージ
103 上位装置
110,V ボリューム
200 ストレージシステム
201 ホスト装置
301 CPU
302 メモリ
303 通信I/F
304 I/Oコントローラ
501 受付部
502 決定部
503 転送部
504 処理部
d ドライブ
DG1,DG2 ドライブグループ
mt 論物メタ
N,N1〜N4 ノード
NB1,NB2 ノードブロック
Claims (6)
- ボリューム内の論理ブロックを指定する論理アドレスを含むI/O(Input/Output)要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
制御部を有することを特徴とするストレージ制御装置。 - 前記制御部は、
前記論理アドレスと、前記論理ブロック数と、前記ボリュームを識別するボリューム番号と、前記装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする請求項1に記載のストレージ制御装置。 - 前記論理アドレスは、LBA(Logical Block Address)によって指定され、
前記制御部は、
前記I/O要求に含まれる前記ボリュームのLBAと、前記分割ブロックサイズ当たりのLBA数と、前記ボリューム番号と、前記装置数とから、前記I/O要求を処理するストレージ制御装置を識別する装置番号を導出する数式を用いて、前記I/O要求を処理するストレージ制御装置を決定する、ことを特徴とする請求項2に記載のストレージ制御装置。 - 前記制御部は、
決定した前記I/O要求を処理するストレージ制御装置が自装置であれば、前記I/O要求を処理し、
決定した前記I/O要求を処理するストレージ制御装置が他装置であれば、前記I/O要求を前記他装置に転送する、
ことを特徴とする請求項1〜3のいずれか一つに記載のストレージ制御装置。 - ボリューム内の論理ブロックを指定する論理アドレスを含むI/O要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記ボリュームに割り当てる物理記憶領域を有するストレージにアクセス可能な複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。 - 複数のストレージ制御装置と、前記複数のストレージ制御装置がアクセス可能なストレージとを含むストレージシステムであって、
前記複数のストレージ制御装置のいずれかのストレージ制御装置が、
ボリューム内の論理ブロックを指定する論理アドレスを含むI/O要求を上位装置から受け付け、
受け付けた前記I/O要求に含まれる前記論理アドレスと、前記ボリュームを区切る分割ブロックサイズ当たりの論理ブロック数と、前記複数のストレージ制御装置の装置数とに基づいて、前記複数のストレージ制御装置から前記I/O要求を処理するストレージ制御装置を決定する、
ことを特徴とするストレージシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017108743A JP6544386B2 (ja) | 2017-05-31 | 2017-05-31 | ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム |
US15/990,968 US20180349030A1 (en) | 2017-05-31 | 2018-05-29 | Storage control device, storage control program, and storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017108743A JP6544386B2 (ja) | 2017-05-31 | 2017-05-31 | ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018205936A JP2018205936A (ja) | 2018-12-27 |
JP6544386B2 true JP6544386B2 (ja) | 2019-07-17 |
Family
ID=64458321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017108743A Expired - Fee Related JP6544386B2 (ja) | 2017-05-31 | 2017-05-31 | ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180349030A1 (ja) |
JP (1) | JP6544386B2 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10852951B1 (en) * | 2017-10-18 | 2020-12-01 | EMC IP Holding Company, LLC | System and method for improving I/O performance by introducing extent pool level I/O credits and user I/O credits throttling on Mapped RAID |
JP2020146298A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146318A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146306A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146308A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146301A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146309A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146304A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146317A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146312A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146316A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146297A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146314A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146307A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146313A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146305A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146302A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146299A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146303A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146300A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146311A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146310A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
JP2020146315A (ja) * | 2019-03-14 | 2020-09-17 | 株式会社三洋物産 | 遊技機 |
-
2017
- 2017-05-31 JP JP2017108743A patent/JP6544386B2/ja not_active Expired - Fee Related
-
2018
- 2018-05-29 US US15/990,968 patent/US20180349030A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2018205936A (ja) | 2018-12-27 |
US20180349030A1 (en) | 2018-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6544386B2 (ja) | ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム | |
US8650381B2 (en) | Storage system using real data storage area dynamic allocation method | |
JP6019513B2 (ja) | 記憶リソースを共有する方法およびシステム | |
RU2658886C1 (ru) | Способ управления файлами, распределенная система хранения и узел управления | |
JP4932390B2 (ja) | 仮想化システム及び領域割当て制御方法 | |
JP5309259B2 (ja) | ストレージ装置及びその制御方法 | |
US9329792B2 (en) | Storage thin provisioning and space reclamation | |
US9658796B2 (en) | Storage control device and storage system | |
JP7467593B2 (ja) | リソース割振り方法、記憶デバイス、および記憶システム | |
JP7135074B2 (ja) | クラウド・ベースのランクを使用するシン・プロビジョニング | |
JP2019079448A (ja) | ストレージシステム及びストレージシステムの制御方法 | |
JP2020533694A (ja) | クラウド・ベースのランクを使用するデータの動的再配置 | |
KR102521051B1 (ko) | 하이브리드 데이터 룩-업 방법 | |
JP2018532166A (ja) | 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ | |
US20180307426A1 (en) | Storage apparatus and storage control method | |
JP2015520426A (ja) | ストレージ装置及び記憶制御方法 | |
US11100008B2 (en) | Efficient memory usage for snapshots | |
US11347641B2 (en) | Efficient memory usage for snapshots based on past memory usage | |
JP6451770B2 (ja) | ストレージ制御装置およびストレージ制御プログラム | |
US11201788B2 (en) | Distributed computing system and resource allocation method | |
US11144445B1 (en) | Use of compression domains that are more granular than storage allocation units | |
JP5900063B2 (ja) | ストレージ装置およびストレージ装置における初期化方法 | |
JP5125624B2 (ja) | ファイルシステム制御装置 | |
JP5895042B2 (ja) | 計算機システム、管理計算機およびストレージ管理方法 | |
JP2022061706A (ja) | 計算機システム及び負荷分散方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190424 |
|
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: 20190521 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190603 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6544386 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |