JP2008310685A - 冗長性を維持した性能最適化を行うストレージシステム - Google Patents
冗長性を維持した性能最適化を行うストレージシステム Download PDFInfo
- Publication number
- JP2008310685A JP2008310685A JP2007159303A JP2007159303A JP2008310685A JP 2008310685 A JP2008310685 A JP 2008310685A JP 2007159303 A JP2007159303 A JP 2007159303A JP 2007159303 A JP2007159303 A JP 2007159303A JP 2008310685 A JP2008310685 A JP 2008310685A
- Authority
- JP
- Japan
- Prior art keywords
- load
- storage
- storage device
- physical
- storage area
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】ストレージシステムにおいて冗長性を保ちつつ物理記憶装置の負荷を分散する。
【解決手段】負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したRAIDレベルに従う冗長性が低下するか否かを判断する。その判断結果が、冗長性が低下しないとの判断結果であるならば、上記選択された記憶領域に記憶されているデータ要素を、上記選択された負荷の低い物理記憶装置が有するバッファ用領域に移動し、選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、そのバッファ用領域に対応付ける。
【選択図】図12
【解決手段】負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したRAIDレベルに従う冗長性が低下するか否かを判断する。その判断結果が、冗長性が低下しないとの判断結果であるならば、上記選択された記憶領域に記憶されているデータ要素を、上記選択された負荷の低い物理記憶装置が有するバッファ用領域に移動し、選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、そのバッファ用領域に対応付ける。
【選択図】図12
Description
本発明は、ストレージシステムの性能の最適化に関する。
記憶装置の負荷を分散する技術として、例えば、特許文献1及び2に開示の技術が知られている。特許文献1には、ストライピングディスクを構成する複数のディスク装置の負荷分散技術が開示されている。特許文献2には、論理記憶装置(論理ボリューム)の負荷分散技術が開示されている。
通常、ストレージシステムでは、RAID(Redundant Array of Independent (or Inexpensive) Disks)技術を利用した記憶制御が行われる。具体的には、例えば、ストレージシステムには、二以上の物理記憶装置で構成されたRAIDグループ(パリティグループ或いはアレイグループと呼ばれることもある)が備えられ、RAIDグループのRAIDレベルに応じた記憶制御が行われる。
採用されるRAIDレベルとしては、一般に、RAIDグループを構成する二以上の物理記憶装置のうちの一つに障害が発生しても障害の生じた物理記憶装置に記憶されているデータ要素を復元することが可能なタイプのRAIDレベル(以下、復元可能RAIDレベル)、具体的には、RAID0以外のRAIDレベル(例えば、RAID1、RAID5或いはRAID6)が挙げられる。
物理記憶装置は、複数の物理記憶領域を有する。同一のRAIDグループを構成する二以上の物理記憶装置の負荷が、アクセスパターンによってばらつきが生じることがある。このため、物理記憶装置の負荷を分散すること、具体的には、物理記憶領域単位でデータ要素を再配置することが望ましいと考えられる。
そして、このような負荷分散を行うにあたり、復元可能RAIDレベルが採用されている場合には、冗長性を保つ必要がある。しかし、特許文献1に開示の技術によれば、ストライピングディスクを構成する複数のディスク装置の負荷分散、言い換えれば、RAIDレベルがRAID0の場合の負荷分散であるため、冗長性を考慮した負荷分散は行われない。また、特許文献2に開示の技術によれば、物理記憶装置ではなく論理記憶装置(論理ボリューム)の負荷が分散される。
従って、本発明の目的は、ストレージシステムにおいて冗長性を保ちつつ物理記憶装置の負荷を分散することにある。
本発明の他の目的は、後の説明から明らかになるであろう。
負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したRAIDレベルに従う冗長性が低下するか否かを判断する。その判断結果が、冗長性が低下しないとの判断結果であるならば、上記選択された記憶領域に記憶されているデータ要素を、上記選択された負荷の低い物理記憶装置が有するバッファ用領域に移動し、選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、そのバッファ用領域に対応付ける。
第一の実施形態では、ストレージシステムでは、アクセス部により、アクセス先の論理ボリュームを構成する二以上の物理記憶装置の各々が有する各記憶領域に対してその論理ボリュームに対応したRAIDレベルに基づくアクセスが実行されるが、このストレージシステムに、各記憶領域についてのアクセスに伴う負荷を基に各物理記憶装置についての負荷を算出する負荷算出部と、複数の物理記憶装置の負荷を分散する処理である負荷分散処理を実行する負荷分散処理部が備えられる。負荷分散処理部は、判断部と、データ再配置部とを有する。負荷分散処理では、判断部により、負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域が選択され、その物理記憶装置よりも負荷の低い物理記憶装置が選択され、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると、上記RAIDレベル(そのデータ要素が記憶された論理ボリュームに対応するRAIDレベル)に従う冗長性が低下するか否かが判断される。冗長性が低下しないとの判断結果であれば、負荷分散処理において、データ再配置部により、上記選択された記憶領域に記憶されているデータ要素が、上記選択された負荷の低い物理記憶装置が有するバッファ用領域(論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域)に移動され、上記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間が、そのバッファ用領域に対応付けられる。
第二の実施形態では、第一の実施形態において、論理ボリュームを構成する各ボリューム要素領域に書かれた複数のデータ要素がそれぞれどの物理記憶装置のどの記憶領域に書き込まれたかを表すボリューム管理情報が更に備えられる。その情報は、例えば、ストレージシステム内の記憶領域に記憶される。冗長性が低下するか否かの判断は、そのボリューム管理情報を参照して行われる判断であって、同一のボリューム要素領域について、上記選択された記憶領域がある物理記憶装置が、上記選択された負荷の低い物理記憶装置であるか否かの判断である。
第三の実施形態では、第一乃至第二の実施形態の少なくとも一つにおいて、データ再配置部により、上記選択された記憶領域からデータ要素が移動された後、その記憶領域がバッファ用領域とされる。具体的には、例えば、その記憶領域に対応付ける論理アドレス空間として無効を表すアドレス空間が対応付けられるか、或いは、その記憶領域に、バッファ用領域を表す値がその記憶領域の属性を表す情報として対応付けられる。
第四の実施形態では、第一乃至第三の実施形態の少なくとも一つにおいて、判断部は、冗長性が低下するとの判断結果になった場合、負荷の高い物理記憶装置よりも負荷が低いが前回の前記判断の際に選択された物理記憶装置よりも負荷が高い物理記憶装置を選択する。その選択された物理記憶装置について、再度、冗長性が低下するか否かの判断を行うことができる。
第五の実施形態では、第一乃至第四の実施形態の少なくとも一つにおいて、負荷の高い物理記憶装置が、複数の物理記憶装置のうち負荷がK番目(Kは整数)に高い物理記憶装置である場合、初回に選択された負荷の低い物理記憶装置は、複数の物理記憶装置のうち負荷がK番目に低い物理記憶装置である。
第六の実施形態では、第一乃至第五の実施形態の少なくとも一つにおいて、判断部が、更に、選択された記憶領域についての負荷を基に、データ要素の移動が行なわれた場合に上記選択された負荷の低い物理記憶装置の負荷が所定値を超えるか否かを判断し、超えるならば、負荷の高い物理記憶装置が有する二以上の記憶領域から、前回に選択された記憶領域よりも負荷の低い記憶領域を選択する。
第七の実施形態では、第一乃至第六の実施形態の少なくとも一つにおいて、データ再配置部により、更に、負荷の低い物理記憶装置が有する二以上の記憶領域から選択された記憶領域に記憶されているデータ要素が、負荷の高い物理記憶装置が有するバッファ用領域に移動される。つまり、負荷の高い物理記憶装置から選択された第一の記憶領域に記憶されているデータ要素が、負荷の低い物理記憶装置にあるバッファ用領域にコピーされ、負荷の低い物理記憶装置から選択された第二の記憶領域に記憶されているデータ要素が、負荷の高い物理記憶装置にあるバッファ用領域にコピーされる。
第八の実施形態では、第七の実施形態において、判断部が、更に、上記の第一の記憶領域の負荷よりも上記の第二の記憶領域の負荷が高いか否かを判断し、高いならば、上記負荷の高い物理記憶装置よりも負荷が低く上記負荷の低い物理記憶装置とは別の物理記憶装置を選択する。
第九の実施形態では、第一乃至第八の実施形態の少なくとも一つにおいて、ストレージシステムに、複数の物理記憶装置のうちの或る物理記憶装置について記憶装置最適化処理を実行する記憶装置最適化部が更に備えられる。記憶装置最適化処理では、或る物理記憶装置について、高速アクセスとなり負荷の低い第一の記憶領域に記憶されているデータ要素が、その或る物理記憶装置におけるバッファ用領域にコピーされ、第一の記憶領域よりも低速アクセスとなり負荷の高い第二の記憶領域に記憶されているデータ要素が、第一の記憶領域にコピーされ、第二の記憶領域に対応付けられていた論理アドレス空間が第一の記憶領域に対応付けられ、第一の記憶領域に対応付けられていた論理アドレス空間がバッファ用領域に対応付けられる。
第十の実施形態では、九の実施形態において、記憶装置最適化処理は、負荷分散処理の後に実行される。
第十一の実施形態では、第九乃至第十の実施形態の少なくとも一つにおいて、記憶装置最適化処理では、更に、第二の記憶領域に記憶されているデータ要素が第一の記憶領域にコピーされた後、その第二の記憶領域がバッファ用領域とされる。
第十二の実施形態では、第九乃至第十一の実施形態の少なくとも一つにおいて、上記或る物理記憶装置は、ディスク媒体のドライブである。第一の記憶領域は、第二の記憶領域よりもそのディスク媒体の外周側に存在する記憶領域である。
第十三の実施形態では、第九乃至第十二の実施形態の少なくとも一つにおいて、ストレージシステムに、複数の物理記憶装置の負荷のばらつきの度合いが所定の度合い以下か否かを判断するばらつき度合い判断部が更に備えられる。所定の度合い以下との判断になれば、前記負荷分散処理が行われることなく記憶装置最適化処理が行われる。
第十四の実施形態では、第九乃至第十三の実施形態の少なくとも一つにおいて、上記或る物理記憶装置には、二以上のバッファ用領域がある。記憶装置最適化部が、或る物理記憶装置のうちの二以上の第一の記憶装置について、二以上のバッファ用領域をそれぞれ使用して並行して記憶装置最適化処理を行うことができる。
第十五の実施形態では、第九乃至第十四の実施形態の少なくとも一つにおいて、或る物理記憶装置について、二以上の記憶領域のそれぞれの記憶領域識別子が連番となっている。各記憶領域に記憶されているデータ要素のコピー先は、各記憶領域の負荷順位を記憶領域識別子とした場合のその記憶領域識別子から識別される記憶領域である。
上述した複数の実施形態のうちの二以上の実施形態を組み合わせることができる。また、上述した各部(例えば、判断部、データ再配置部、記憶装置性能最適化部)は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
以下、図面を参照して本発明の一実施形態を詳細に説明する。
図1は、本発明の一実施形態における計算機システムの全体構成例を示す。
図1において、ストレージシステム10が、ストレージシステム10全体の制御を行なう制御部100と、データが記憶されるディスク部200とから構成される。
ストレージシステム10には、制御部100のホストアダプタ110を介して、ホスト計算機(ストレージシステム10を利用する上位装置(例えばアプリケーションサーバ))300が接続されている。なお、ストレージシステム10とホスト計算機300を接続するためのインタフェースには、例えば、SAN(Storage Area Network)180が用いられる。SAN180の構築には、例えば、ファイバチャネル、SCSI(Small Computer System Interface)、iSCSI(internet Small Computer System Interface)、USB(Universal Serial Bus)、IEEE1394バス等を用いることが可能である。また、ストレージシステム10に接続されるホスト計算機300は、複数台でもよい。また、SAN180に代えて、他種のインタフェースが採用されても良い。
ホスト計算機300には、ストレージシステム10の動作を制御する制御ソフトウェアがインストールされており、ホスト計算機300で実行される制御ソフトウェアにより、ストレージシステム10に対してコマンドなどを発行し、ストレージシステム10の動作を制御することができる。ただし、ストレージシステム10とホスト計算機300で実行される制御ソフトウェアとは、例えばLAN(Local Area Network)190を経由して通信される。ストレージシステム10の管理、制御或いは保守を行う計算機は、ホスト計算機300とは別の計算機が使用されても良い。また、LAN190に代えて他種の通信ネットワークが利用されても良い。
制御部100は、ホスト計算機300が接続されホスト計算機300との通信を行うホストアダプタ110と、ストレージシステム10全体の制御を行なうCPU(Central Processing Unit)120と、CPU120がストレージシステム10を制御するために必要なコンピュータプログラムやデータが記憶されるメモリ130とを備える。また、制御部100は、ホスト計算機300とディスク部200との間で通信されるデータが一時的に記憶されるキャッシュメモリ140と、パリティデータの計算等を行なうASICs(application specific integrated circuits)150と、ディスク部200を構成する各物理ディスク2100に接続され各物理ディスク2100と通信するディスクアダプタ160とを備える。
ディスク部200は、複数のディスクボックス210を備えており、各ディスクボックス210の中に、複数の物理ディスク2100を備えている。それら複数の物理ディスク2100のうちの二以上の物理ディスク2100で、RAIDグループが構成される。物理ディスク2100は、例えばハードディスクドライブ(HDD)であるが、他種の物理ディスクドライブ、例えば、DVD(Digital Versatile Disk)ドライブなどであっても良い。また、物理ディスクドライブに代えて、半導体メモリドライブ(例えばフラッシュメモリドライブ)などの、他種の物理記憶装置が採用されても良い。
図2は、物理ディスク2100が提供する記憶空間の構成例を示す。図16は、RAIDグループが提供する記憶空間の構成例を示す。
図16に示すように、RAIDグループ2500が提供する記憶空間を基に、一以上の論理的な記憶デバイス(以下、LU(Logical
Unit)と言う)が形成される。一つのLUは、RAIDグループを構成する各物理ディスク2100の記憶空間の一部で構成される。LUは、複数の所定サイズの記憶領域で構成されている。以下、その所定サイズの記憶領域を、便宜上、「ストライプ」と言う。
Unit)と言う)が形成される。一つのLUは、RAIDグループを構成する各物理ディスク2100の記憶空間の一部で構成される。LUは、複数の所定サイズの記憶領域で構成されている。以下、その所定サイズの記憶領域を、便宜上、「ストライプ」と言う。
図2に示すように、物理ディスク2100が提供する記憶空間は、n個の所定サイズの記憶領域で構成されている。以下、その所定サイズの記憶領域を、「ゾーン」(図では英語で“Zone”と示している)と言う。ここで言う「ゾーン」とは、ストライプの構成要素である。ストライプには、複数のデータ要素や、それら複数のデータ要素を基に計算された冗長データ要素が書かれるが、一つのゾーンには、一つのデータ要素或いは冗長データ要素が書かれる。ゾーンのサイズは、全ての物理ディスク2100で均一であり、そのサイズは、ホスト計算機300で実行される制御ソフトウェアにより変更可能である。
N個のゾーンのうちの、n−1個のゾーンで、データ用領域2200が構成され、1個のゾーンで、スワップ用領域2300が構成される。データ用領域2200は、ユーザデータ要素や冗長データ要素の書込み先として使用され、スワップ用領域2300は、データ要素を再配置する際の一時的なバッファ用領域として使用される。
図3は、メモリ130に記憶されるコンピュータプログラムやデータを示す。
メモリ130には、CPU120によって実行されるプログラム群1300と、LU2400における論理アドレス空間と物理ディスク2100における物理アドレス空間との対応付けに関する情報が記録されるLU管理テーブル1310と、ゾーンに関する情報が記録されるゾーン管理テーブル1320と、各ゾーンの負荷状況に関する情報が記録されるゾーン負荷管理テーブル1330と、各物理ディスク2100の負荷状況に関する情報が記録されるディスク負荷管理テーブル1340とが記憶される。
ここで、LU管理テーブル1310はLU2400毎、ゾーン管理テーブル1320およびゾーン負荷管理テーブル1330は、物理ディスク2100毎にそれぞれ作成される。
また、プログラム群1300には、例えば、ホスト計算機300から受信したI/Oコマンドを処理し各種負荷管理テーブル1330及び1340を更新するI/O制御プログラム1301、物理ディスク間の負荷を分散する負荷分散プログラム1302、及び、物理ディスク2100の性能を最適化するディスク性能最適化プログラム1303が含まれる。負荷分散プログラム1302は、データ要素のスワップの可否を判定するスワップ可否判定プログラム13021と、スワップ対象を検索するスワップ対象検索プログラム13022と、データ要素のスワップを行うスワッププログラム13023と、負荷分散処理の実行を制御する負荷分散制御プログラム13024とを有する。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するCPU120によって処理が行われるものとする。
図4は、LU管理テーブル1310の構成例を示す。
LU管理テーブル1310には、ストライプ番号が書かれるカラム1311と、RAIDレベルが書かれるカラム1312と、論理アドレス空間に関する情報が書かれるカラム1313と、物理アドレス空間に関する情報が書かれるカラム1314とがある。カラム1312には、論理アドレス空間の先頭LBA(Logical Brock Address)が書かれるカラム13131と末尾LBAが書かれるカラム13132がある。カラム1314には、ユーザデータ要素が存在する物理的な記憶領域の位置を表す情報が書かれるカラム1315と、冗長データ要素1が存在する物理的な記憶領域の位置を表す情報が書かれるカラム1316、及び、冗長データ要素2が存在する物理的な記憶領域の位置を表す情報が書かれるカラム1317がある。カラム1315、1316及び1317には、それぞれ、HDD番号が書かれるカラム13151、13161及び13171と、ゾーン番号が書かれるカラム13152、13162及び13172とがある。LU管理テーブル1310には、一つのLUの一つのストライプにつき、一つのレコードが記録される。一つのレコードは、そのストライプの番号、そのLUを有するRAIDグループのRAIDレベル、そのストライプに対応する論理アドレス空間に関する情報(先頭LBA及び末尾LBA)、ユーザデータ要素が存在するHDD番号及びゾーン番号、冗長データ1が存在するHDD番号及びゾーン番号、及び、冗長データ2が存在するHDD番号及びゾーン番号で構成される。このレコードから、どのストライプには、どの論理アドレス空間とどの物理アドレス空間とが対応し、対応している物理アドレス空間はどの物理ディスク2100のどのゾーンで構成されているかがわかる。
なお、「冗長データ要素1」とは、例えば、冗長度が1の場合に作成される冗長データ要素のことである。具体的には、例えば、冗長データ要素1とは、RAIDレベルがRAID1の場合に作成されるオリジナルのユーザデータ要素の複製(ミラーリングされたユーザデータ要素)、RAIDレベルがRAID5の場合に作成されるパリティデータ要素、或いは、RAIDレベルがRAID6の場合に作成される二つの冗長データ要素のうちの一方である。「冗長データ要素2」とは、例えば、冗長度が2の場合に作成される冗長データ要素のことである。具体的には、例えば、冗長データ要素2とは、RAIDレベルがRAID6の場合に作成される二つの冗長データ要素のうちの他方である。このため、このテーブル1310に対応したLU2400が存在するRAIDグループのRAIDレベルによっては、冗長データ要素1や2に対応するHDD番号及びゾーン番号として、無効値(例えば“N/A”)が記録される。
また、このテーブル1310に記録されるHDD番号は、2種類の番号の組合せで表されるが、2種類の番号のうちの一方は、ディスクボックス210の番号であり、2種類の番号のうちの他方は、そのディスクボックス210内での物理ディスク(HDD)2100の番号である。
図5は、ゾーン管理テーブル1320の構成例を示す。
ゾーン管理テーブル1320には、ゾーン番号が書かれるカラム1321と、ゾーンの属性が書かれるカラム1322と、LU番号が書かれるカラム1323と、論理アドレス空間に関する情報が書かれるカラム1324と、物理アドレス空間に関する情報が書かれるカラム1325と、最適位置情報が書かれるカラム1326とがある。カラム1324には、論理アドレス空間の開始LBAが書かれるカラム13241と終了LBAが書かれるカラム13242とがある。カラム1325には、物理アドレス空間の開始LBAが書かれるカラム13251と終了LBAが書かれるカラム13252とがある。一つのゾーンにつき、一つのレコードが記録される。一つのレコードは、ゾーン番号、ゾーン属性、LU番号、論理アドレス空間の開始LBA及び終了LBA、物理アドレス空間の開始LBA及び終了LBA、及び最適位置情報で構成される。一つのレコードから、どのゾーンがどの論理アドレス空間とどの物理アドレス空間とに対応しているかがわかる。
本実施形態では、図17に例示するように、物理ディスク2100におけるディスク媒体の外周側に存在する記憶領域に対応したゾーンには、小さいゾーン番号が割当てられ、そのディスク媒体の内周側に存在する記憶領域に対応したゾーンには、大きいゾーン番号が割当てられる。
また、ゾーン属性としては、ゾーンの状態を示すものであり、例えば、「Data」、「スワップ」、及び「N/A」の3つのパラメータで表すことが可能である。ここで、「Data」(図5では“D”と示されている)とは、ゾーンにユーザデータ要素もしくは冗長データ要素が格納されている状態であることを表し、「スワップ」(図5では“Swap”と示されている)とは、ゾーンがデータ要素の再配置の際に一時的なバッファ用領域として使われる状態であることを表し、「N/A」とは、ゾーンがデータ要素格納用の領域であるが未使用の空間である状態であることを表す。
最適位置情報は、ゾーンに記憶されているデータ要素をどのゾーンに移動させるべきかを表す情報であり、具体的には、例えば、データ要素の移行先のゾーンのゾーン番号である。
図6は、ゾーン負荷管理テーブル1330の構成例を示す。
ゾーン負荷管理テーブル1330には、ゾーン番号が書かれるカラム1331と、コマンド数が書かれるカラム1332と、負荷順位が書かれるカラム1333とがある。一つのゾーンにつき、ゾーン番号、コマンド数及び負荷順位が書かれる。
ここで、コマンド数とは、対応するゾーンに対するアクセス回数であり、そのゾーンへのアクセスが発生する度にインクリメントされる。
また、負荷順位は、ゾーン毎の負荷の大きさの順位を示すものであり、負荷の大きなゾーンほど、若い番号が割り振られる。具体的には、例えば、負荷の最も大きいゾーンには、“0”という番号が割り振られる。
図7は、ディスク負荷管理テーブル1340の構成例を示す。
ディスク負荷管理テーブル1340には、HDD番号が書かれるカラム1341と、負荷率が書かれるカラム1342とがある。一つの物理ディスク2100につき、HDD番号及び負荷率が記録される。負荷率は、例えば、物理ディスク2100のIOPS(アクセス回数/秒)と、その物理ディスク2100に対応したゾーン負荷管理テーブル1330に記録されている、各ゾーンのコマンド数とに基づいて算出される。
上述したLU管理テーブル1310、ゾーン管理テーブル1320、ゾーン負荷管理テーブル1330及びディスク負荷管理テーブル1340の内容は、ホスト計算機300で実行される制御ソフトウェアを利用して、ホスト計算機300のユーザが確認可能である。すなわち、ユーザは、どのLUにおけるどの論理アドレス空間がどのゾーンに対応付けられているかや、物理ディスク単位やゾーン単位での負荷状況等を把握することが可能である。
以下、本実施形態で行われる処理を説明する。
図8は、I/Oコマンド処理の流れの一例を示す。図では、ステップを「S」と略記している。
I/O制御プログラム1301は、ホスト計算機300から受信したI/Oコマンド(リードコマンド或いはライトコマンド)に応答して、I/O処理を実行する(ステップ100)。具体的には、例えば、I/O制御プログラム1301は、I/Oコマンドで指定されているLU番号及びLBAを基に、そのLU番号及びLBAから特定される論理アドレス空間に対応した物理アドレス空間を特定し、特定した物理アドレス空間に対応するゾーンにアクセスする。
その後、ステップ100でのI/O処理に伴い、I/O制御プログラム1301は、アクセスしたゾーンに対応する、ゾーン負荷管理テーブル1330のコマンド数および負荷順位を更新する(ステップ101)。
さらに、I/O制御プログラム1301は、ゾーン負荷管理テーブル1330における更新後のコマンド数を基に、アクセスしたゾーンを保持する物理ディスク2100の負荷率を算出し、算出後の負荷率を、その物理ディスク2100に対応した既存の負荷率(ディスク負荷管理テーブル1340に記録されている負荷率)に上書きする(ステップ102)。
以上のI/Oコマンド処理により、I/Oコマンドに応答してI/O処理が行なわれる都度に、ゾーン負荷管理テーブル1330およびディスク負荷管理テーブル1340が更新される。
図9は、システム性能最大化処理の流れの一例を示す。
負荷分散制御プログラム13024は、負荷分散処理が必要であるか否かを判定する(ステップ200)。負荷分散制御プログラム13024は、例えば、ディスク負荷管理テーブル1340を参照し、負荷率の差が所定値以上である物理ディスク2100の組が有れば、負荷分散処理が必要であると判断し、そのような物理ディスク2100の組が無ければ、負荷分散処理が不必要であると判断する。
負荷分散処理が必要であると判断した場合は(ステップ200:Yes)、負荷分散制御プログラム13024は、負荷分散処理を実行し(ステップ201)、その後、ディスク性能最適化プログラム1303にステップ202を実行させる。一方、負荷分散処理が不必要であると判断した場合は(ステップ200:No)、負荷分散制御プログラム13024は、ステップ201をスキップし、ディスク性能最適化プログラム1303にステップ202を実行させる。
ディスク性能最適化プログラム1303は、ディスク性能最適化が必要か否かを判断する(ステップ202)。具体的には、例えば、ディスク性能最適化プログラム1303は、物理ディスク2100毎に、ゾーン負荷管理テーブル1330に記録されている各負荷順位を参照し、内周側にあるゾーンが外周側にあるゾーンよりも高負荷か否かを判断する。内周側にあるゾーンがより高負荷であると判断された場合が、ディスク性能最適化が必要ということであり、そうではない場合が、ディスク性能最適化が不必要ということである。
ディスク性能最適化が必要であると判断した場合は(ステップS202:Yes)、ディスク性能最適化プログラム1303は、ディスクの性能最適化を実行して(ステップ203)、システム性能最適化処理を終了する。一方、ディスク性能最適化が不必要であると判断した場合は、ディスク性能最適化プログラム1303は、そのままシステム性能最適化処理を終了する。
ここで、システム性能最大化処理は、例えば、定期的に、負荷分散プログラム1302における負荷分散制御プログラム13024が起動することで、開始される。定期的なタイミングの例としては、タイマによる一定時間毎の実行や、ホスト計算機300から受信したコマンド数が特定の数の倍数に到達する毎の実行等、任意の条件を採用することが可能である。また、例えば、不定期的なタイミングの例としては、ストレージシステム10の管理者がホスト計算機300にインストールされている制御ソフトウェアを使用し本処理の実行を指示した場合や、ストレージシステム10が特定のコマンドを受領した場合、もしくは、CPU120が特定のコマンドを実行した場合等がある。
図10は、図9のステップ201で行われる負荷分散処理の流れの一例を示す。
負荷分散制御プログラム13024が、ディスク負荷管理テーブル1340を参照し、全ての物理ディスク2100が処理限界に到達しているか否かを判断する(ステップ300)。少なくとも一つの物理ディスク2100が処理限界に到達していない場合は(ステップ300:No)、負荷分散制御プログラム13024は、処理限界に到達している物理ディスク2100のうちのひとつを、処理対象ディスクとして選択する(ステップ301)。一方、全ての物理ディスク2100が処理限界に到達している場合は(ステップ300:Yes)、負荷分散制御プログラム13024は、この負荷分散処理を終了する。なぜなら、物理ディスク間でデータ要素を再配置しても、処理限界状態を回避することは困難であるためである。
ステップ301の後、負荷分散制御プログラム13024は、スワップ可否判定プログラム13021を呼び出す。スワップ可否判定プログラム13021が、物理ディスク2100間のデータ要素の再配置により処理対象ディスクの負荷分散が可能であるか否か(スワップ可能か否か)を判断する(ステップ302)。
負荷分散制御プログラム13024は、スワップ不可能との判断結果をリターンされた場合は(ステップ302:No)、ステップ304に進む。一方、負荷分散制御プログラム13024は、スワップ可能との判断結果をリターンされた場合は(ステップ302:Yes)、スワッププログラム13023を呼び出す。スワッププログラム13023が、スワップ先ディスクと処理対象ディスク間でデータ要素の入替え(つまりスワップ)を実行する(ステップ303)。その後、負荷分散制御プログラム13024は、当該処理対象ディスクの他に処理限界となっている物理ディスクがあるか否かを、ディスク負荷管理テーブル1340を基に判断する(ステップ304)。他に処理限界となっている物理ディスク2100が存在する場合は、負荷分散制御プログラム13024は、ステップ301に戻り、他に処理限界となっている物理ディスク2100が存在しない場合は、負荷分散処理を終了する。
図11は、図10のステップ302で行われるスワップ可否判定処理の流れの一例を示す。
スワップ可否判定プログラム13021が、ステップ301で選択された処理対象ディスクを、スワップ元ディスクとして選択し(ステップ400)、スワップ元ディスクに対応するゾーン負荷管理テーブル1330を基に、スワップ元ディスクの中で最大負荷率のゾーンをスワップ元ゾーンとして選択する(ステップ401)。
次に、スワップ可否判定プログラム13021が、スワップ対象検索プログラム13022を呼び出す。スワップ対象検索プログラム13022が、スワップ対象となる物理ディスクおよびゾーンを検索する(ステップ402)。ステップ402にて、スワップ対象ありと判定された場合には、スワップ可否判定プログラム13021が、ステップ402のスワップ対象検索プログラム13022からの返却値を、スワップ先ディスク、および、スワップ先ゾーンとしてそれぞれ選択し(ステップ403)、その後、スワップ可能であることを示す「Yes」を負荷分散制御プログラム13024に返却し、ステップ302を終了する。一方、ステップ402にてスワップ対象なしと判定された場合には、スワップ可否判定プログラム13021が、スワップ不可能であることを示す「No」を負荷分散制御プログラム13024に返却し、ステップS302を終了する。
図12は、図11のステップ402で行われるスワップ対象検索処理の流れの一例を示す。
スワップ対象検索プログラム13022は、ディスク負荷管理テーブル1340を参照し、負荷率が最も低い物理ディスクを、スワップ先ディスクとして選択する(ステップ500)。スワップ対象検索プログラム13022は、スワップを実行することでスワップ元ゾーン(ステップ401で選択されたゾーン)およびスワップ先ゾーンに格納されているデータの冗長性が低下しないかをチェックする(ステップ501)。具体的には、例えば、スワップ対象検索プログラム13022は、LU管理テーブル1310を参照し、スワップ先ディスクに、スワップ元ゾーンに記憶されているデータ要素が存在するストライプと同じストライプに存在するデータ要素(ユーザデータ要素及び冗長データ要素)が記憶されていないか否かと、スワップ元ディスクに、スワップ先ゾーンに記憶されているデータ要素が存在するストライプと同じストライプに存在するデータ要素(ユーザデータ要素及び冗長データ要素)が記憶されていないか否かとを判断する。より具体的には、例えば、スワップによりLU管理テーブル1310が更新された場合に、LU管理テーブル1310の一つのレコードに、同一のHDD番号が存在することにならないか否かが判断される。同一のHDD番号が存在することになれば、冗長性が低下するということになる。
ここで、冗長性が低下する場合とは、例えば、RAID5で構成されたLUの、同一ストライプのユーザデータ要素もしくは冗長データ要素(パリティデータ要素)が、同一の物理ディスクに2つ以上存在する場合や、RAID1で構成されたLUの、同一ストライプのマスターデータ要素(オリジナルのユーザデータ要素)およびミラーリングされたデータ要素(冗長データ要素)が、同一の物理ディスクに存在する場合等である。なぜなら、その同一の物理ディスクに障害が発生すると、その同一のストライプに存在する他のデータ要素を復元することができなくなるためである。
冗長性が低下すると判断された場合は(ステップ501:Yes)、スワップ対象検索プログラム13022は、スワップ先ディスクとして現在選択されている物理ディスク2100の次に負荷率の高い物理ディスク2100が存在するかを判断する(ステップ502)。そのような物理ディスク2100が存在する場合は(ステップ502:Yes)、スワップ対象検索プログラム13022は、その物理ディスクが処理限界となっているかを、ディスク負荷管理テーブル1340を基に判断する(ステップ503)。これは、新たに選択したスワップ先ディスクが処理限界に到達している場合は、スワップ(つまりデータ要素の入替え)を実行しても、負荷分散が行なえないためである。
現在選択中の物理ディスクが処理限界となっていない場合は(ステップ503:No)、スワップ対象検索プログラム13022は、選択中の物理ディスクを新たなスワップ先ディスクとして選択し(ステップ504)、ステップ501に戻る。
一方、ステップ502にて該当する物理ディスクがない場合や(ステップ502:No)、ステップ503にて選択中の物理ディスクが処理限界の状態であると判断された場合は(ステップ503:Yes)、スワップ対象検索プログラム13022は、スワップ対象が無しであることを示す「No」をスワップ可否判定プログラム13021にリターンし、ステップ402を終了する(ステップ505)。
ステップ501にて冗長性が低下しないと判断された場合は(ステップ501:No)、スワップ対象検索プログラム13022は、選択中のスワップ先ディスクに対応するゾーン負荷管理テーブル1330を参照し、負荷率が最小であるゾーンをスワップ先ゾーンとして選択する(ステップ506)。
次に、スワップ対象検索プログラム13022は、スワップによりスワップ先ディスクが処理限界となるか否かを判定する(ステップ507)。処理限界に到達するかの判断は、スワップ後のコマンド数(スワップ先ゾーンのコマンド数を、スワップ元ゾーンのコマンド数に変更し、変更後のコマンド数と、スワップ先ディスクにおける他のゾーンのコマンド数との合計)が、スワップ先ディスクの処理可能なコマンド数を超えるか否かで行なう。
ステップ507にてスワップ先ディスクが処理限界に到達すると判断した場合には(ステップS507:Yes)、スワップ対象検索プログラム13022は、選択中のスワップ元ゾーンの次に負荷率の高いゾーンを新たなスワップ元ゾーンとして選択する(ステップ508)。
次に、スワップ対象検索プログラム13022は、スワップ元ゾーンの負荷率がスワップ先ゾーンの負荷率よりも大きいか否かを判断する(ステップ509)。
ステップ509にて、スワップ元ゾーンの負荷率がスワップ先ゾーンの負荷率よりも大きい場合は(ステップ509:Yes)、スワップ対象検索プログラム13022は、ステップ507に戻るが、スワップ元ゾーンの負荷率がスワップ先ゾーンの負荷率よりも小さい場合は(ステップ509:No)、ステップ502に戻る(すなわち、他にスワップ先ディスクとして相応しい物理ディスクがないかどうかを再度検索する)。なぜなら、スワップ実行によりスワップ元ディスクの負荷が更に高くなってしまうため、スワップ実行は好ましくないためである。
ステップ507にて、スワップによりスワップ先ディスクが処理限界とならないと判断された場合には(ステップ507:No)、スワップ対象検索プログラム13022は、スワップ対象がありであることを示す「Yes」に加え、現在選択中のスワップ先ディスク(例えばそれのHDD番号)およびスワップ先ゾーン(例えばそれのゾーン番号)を併せてスワップ可否判定プログラム13021にリターンし、ステップ402を終了する(ステップ510)。
図13は、図10のステップ303で行われるスワップ処理の流れの一例を示す。
スワッププログラム13023は、スワップ元ゾーンに記憶されているデータ要素を、スワップ先ディスクにあるスワップ用ゾーン(スワップ用領域2300を構成するゾーン)へとコピーする処理を開始する(ステップ600)。
次に、スワッププログラム13023は、スワップ先ゾーンに記憶されているデータ要素を、スワップ元ディスクにあるスワップ用ゾーンにコピーする(ステップ601)。
その後、スワッププログラム13023は、LU管理テーブル1310及びゾーン管理テーブル1320を更新する。具体的には、例えば、LU管理テーブル1310について言えば、スワッププログラム13023は、スワップ元ゾーンに対応したHDD番号及びゾーン番号を、スワップ先ディスクにあるスワップ用ゾーン(つまりコピー先のゾーン)に対応したHDD番号及びゾーン番号に変更し、同様に、スワップ先ゾーンに対応したHDD番号及びゾーン番号を、スワップ元ディスクにあるスワップ用ゾーン(つまりコピー先のゾーン)に対応したHDD番号及びゾーン番号に変更する。また、例えば、ゾーン管理テーブル1320について言えば、スワッププログラム13023は、スワップ元ゾーン及びスワップ先ゾーンにそれぞれ対応したゾーン属性を「Data」から「Swap」に変更し、且つ、それらにそれぞれ対応したLU番号及び論理アドレス空間を、「N/A」に変更する。また、スワッププログラム13023は、スワップ先ディスクにあるスワップ用ゾーンに対応したゾーン属性を「Swap」から「Data」に変更し、それに対応したLU番号及び論理アドレス空間を、「N/A」から、スワップ元ゾーンに対応していたLU番号及び論理アドレス空間に変更する。さらに、スワッププログラム13023は、スワップ元ディスクにあるスワップ用ゾーンに対応したゾーン属性を「Swap」から「Data」に変更し、それに対応したLU番号及び論理アドレス空間を、「N/A」から、スワップ先ゾーンに対応していたLU番号及び論理アドレス空間に変更する。
スワッププログラム13023は、ゾーン負荷管理テーブル1330に記録されているコマンド数及び負荷順位と、ディスク負荷管理テーブル1340に記録されている負荷率とをリセットする(例えば全て0に戻す)(ステップ605)。
図14は、図9のステップ203で行われるディスク性能最適化処理の流れの一例を示す。なお、その説明では、適宜、図15を参照する。なお、図15に記載のS700からS705は、図14に記載のS700からS705に対応している。
ディスク性能最適化プログラム1303が、ゾーン並べ替えが必要である物理ディスク(内周側にあるゾーンが外周側にあるゾーンよりも高負荷となっている物理ディスク、以下、最適化対象ディスク)について、データ要素の最適位置を決定する(ステップ700)。具体的には、ディスク性能最適化プログラム1303が、最適化対象ディスクに対応するゾーン負荷管理テーブル1330を参照し、そのテーブル1330のカラム1333に記録されている負荷順位を、最適化対象ディスクに対応するゾーン管理テーブル1320のカラム1326にコピーする。ゾーン管理テーブル1320でもゾーン負荷管理テーブル1330でも、テーブルを構成する複数のレコード(一つのゾーンに対応した1件分のデータ)が、ゾーン番号を基にした順番で並んでいる(例えば昇順となっている)。そして、ゾーン番号も負荷順位も、最小値を0とした整数である。このため、ゾーン管理テーブル1320において、コピーされた負荷順位は、最適位置情報となり、移動先のゾーンの番号を表すことになる。
以下のステップ701からステップ706は、最適化対象ディスクにおけるゾーン毎に実行される。
ディスク性能最適化プログラム1303は、ゾーン番号と最適位置情報とが一致しているかを判定する(ステップ701)。
ステップ701において一致が検出された場合は(ステップ701:Yes)、そのゾーン番号に対応するゾーンは最適な記憶位置ということなので、ディスク性能最適化プログラム1303は、ステップ702からステップ705を行わず、ステップ706を実行する。
一方、ステップ701において不一致が検出された場合は(ステップ701:No)、ディスク性能最適化プログラム1303は、現在の処理対象ゾーン(ゾーン番号が“x”であるゾーン(xは整数)、以下、「ゾーン(A)」と呼ぶ)に記憶されているデータ要素“0”を、最適化対象ディスク内のスワップ用ゾーンにコピーする(ステップ702)。
次に、ディスク性能最適化プログラム1303は、ゾーン(A)に記憶されるべきデータ要素を記憶しているゾーン(以下、「ゾーン(B)」と呼ぶ)、言い換えれば、ゾーン(A)のゾーン番号と同じ値が最適位置情報となっているゾーンを探索する(ステップ703)。図15の例で言えば、ゾーン(A)のゾーン番号が“0”の場合、ゾーン(B)のゾーン番号は“1”である。つまり、ゾーン0(ゾーン番号“0”のゾーン)がゾーン(A)であり、ゾーン1がゾーン(B)であり、ゾーン3がスワップ用ゾーンである。
ステップ702のコピー終了後、ディスク性能最適化プログラム1303は、ゾーン(B)に記憶されているデータ要素“1”を、ゾーン(A)にコピーする(ステップ704)。これにより、ゾーン(A)に記憶されているデータ要素“0”に、データ要素“1”が上書きされる。
ステップ704のコピー終了後、ディスク性能最適化プログラム1303は、LU管理テーブル1310とゾーン管理テーブル1320を更新する(ステップ705)。具体的には、例えば、ディスク性能最適化プログラム1303は、ゾーン0に対応したLU番号及び論理アドレス空間を、ゾーン3に対応付け、ゾーン1に対応したLU番号及び論理アドレス空間を、ゾーン0に対応付け、ゾーン3に対応したLU番号及び論理アドレス空間(ここでは、ゾーン3はスワップ用ゾーンであったのでLU番号及び論理アドレス空間はそれぞれ「N/A」)を、ゾーン1に対応付ける。
その後、ディスク性能最適化プログラム1303は、現在の処理対象ゾーンが最終のゾーン(例えばゾーン番号“N”であるゾーン)であるか否かを判断する(ステップ706)。最終ゾーンでない場合は、ディスク性能最適化プログラム1303は、次のゾーン(例えば、ゾーン番号が“x+1”のゾーン)を処理対象ゾーンとし、ステップ701からステップ705の処理を実行する。一方、現在の処理対象ゾーンが最終ゾーンである場合には、ディスク性能最適化プログラム1303は、最適化対象ディスクに対応する負荷率、コマンド数及び負荷順位をリセットし(ステップ707)、ステップ203を終了する。なお、その後、最適化対象ディスクが未だ残っていれば、別の最適化対象ディスクについて、ステップ203が実行される。
以上、上述した実施形態によれば、RAIDの冗長性を保ちつつ、物理ディスク2100間の負荷を均一化するためのスワップと、単一の物理ディスクの性能が最大となるようなスワップとを行うことで、ストレージシステム10の性能を最大限に引き出すことが期待できる。
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、図18に例示するように、一つの物理ディスク2100において、スワップ用領域2300を構成するゾーンの数は、2以上であっても良い。この場合、ディスク性能最適化処理において、2以上のスワップ用ゾーンが並行して使用されても良い。言い換えれば、一つの処理対象ゾーンについてステップ203を行うことに代えて、2以上の処理対象ゾーンを選択しそれら2以上の処理対象ゾーンについてステップ203が行われてもよい。これにより、一つの物理ディスク2100にかかるディスク最適化処理の時間長を短縮することができる。
また、例えば、コマンド数、負荷率などの情報は、ホスト計算機300からのI/Oコマンドに従う処理のときのみならず、他の理由によって物理ディスク2100にアクセスが生じる場合にも更新されても良い。例えば、LU間のデータのリプレケーション或いはマイグレーションのためのアクセスが行われた場合に更新されても良い。
10…ストレージシステム 100…制御部 200…ディスク部 300…ホスト計算機 2100…物理ディスク
Claims (17)
- 複数の物理記憶装置と、
前記複数の物理記憶装置の記憶空間を構成する記憶領域群を基に形成された複数の論理ボリュームと、
アクセス先の論理ボリュームを構成する二以上の物理記憶装置の各々が有する各記憶領域に対してその論理ボリュームに対応したRAIDレベルに基づくアクセスを行うアクセス部と、
各記憶領域についてのアクセスに伴う負荷を基に各物理記憶装置についての負荷を算出する負荷算出部と、
前記複数の物理記憶装置の負荷を分散する処理である負荷分散処理を実行し、判断部とデータ再配置部とを有する負荷分散処理部と
を備え、
前記負荷分散処理では、
前記判断部により、負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域が選択され、その物理記憶装置よりも負荷の低い物理記憶装置が選択され、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると前記RAIDレベルに従う冗長性が低下するか否かが判断され、
冗長性が低下しないとの判断結果であれば、前記データ再配置部により、前記選択された記憶領域に記憶されているデータ要素が、前記選択された負荷の低い物理記憶装置が有し論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域であるバッファ用領域に移動され、前記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間が、前記バッファ用領域に対応付けられる、
ストレージシステム。 - 前記論理ボリュームを構成する各ボリューム要素領域に書かれた複数のデータ要素がそれぞれどの物理記憶装置のどの記憶領域に書き込まれたかを表すボリューム管理情報を更に備え、
前記冗長性が低下するか否かの判断は、前記ボリューム管理情報を参照して行われる判断であって、同一のボリューム要素領域について、前記選択された記憶領域がある物理記憶装置が、前記選択された負荷の低い物理記憶装置であるか否かの判断である、
請求項1記載のストレージシステム。 - 前記データ再配置部により、前記選択された記憶領域からデータ要素が移動された後、その記憶領域がバッファ用領域とされる、
請求項1記載のストレージシステム。 - 前記判断部は、冗長性が低下するとの判断結果になった場合、前記負荷の高い物理記憶装置よりも負荷が低いが前回の前記判断の際に選択された物理記憶装置よりも負荷が高い物理記憶装置を選択する、
請求項1記載のストレージシステム。 - 前記負荷の高い物理記憶装置が、前記複数の物理記憶装置のうち負荷がK番目(Kは整数)に高い物理記憶装置である場合、初回に選択された前記負荷の低い物理記憶装置は、前記複数の物理記憶装置のうち負荷がK番目に低い物理記憶装置である、
請求項1記載のストレージシステム。 - 前記判断部が、更に、選択された記憶領域についての負荷を基に、データ要素の移動が行なわれた場合に前記選択された負荷の低い物理記憶装置の負荷が所定値を超えるか否かを判断し、超えるならば、前記負荷の高い物理記憶装置が有する二以上の記憶領域から、前回に選択された記憶領域よりも負荷の低い記憶領域を選択する、
請求項1記載のストレージシステム。 - 前記データ再配置部により、更に、前記負荷の低い物理記憶装置が有する二以上の記憶領域から選択された記憶領域に記憶されているデータ要素が、前記負荷の高い物理記憶装置が有するバッファ用領域に移動される、
請求項1記載のストレージシステム。 - 前記判断部が、更に、前記負荷の高い物理記憶装置から選択された第一の記憶領域の負荷よりも、前記負荷の低い物理記憶装置から選択された第二の記憶領域の負荷が高いか否かを判断し、高いならば、前記負荷の高い物理記憶装置よりも負荷が低く前記負荷の低い物理記憶装置とは別の物理記憶装置を選択する、
請求項1記載のストレージシステム。 - 前記複数の物理記憶装置のうちの或る物理記憶装置について記憶装置最適化処理を実行する記憶装置最適化部、を更に備え、
前記記憶装置最適化処理では、前記或る物理記憶装置について、高速アクセスとなり負荷の低い第一の記憶領域に記憶されているデータ要素が、その或る物理記憶装置におけるバッファ用領域にコピーされ、前記第一の記憶領域よりも低速アクセスとなり負荷の高い第二の記憶領域に記憶されているデータ要素が、前記第一の記憶領域にコピーされ、前記第二の記憶領域に対応付けられていた論理アドレス空間が前記第一の記憶領域に対応付けられる、
請求項1記載のストレージシステム。 - 前記記憶装置最適化処理は、前記負荷分散処理の後に実行される、
請求項9記載のストレージシステム。 - 前記記憶装置最適化処理では、更に、前記第二の記憶領域に記憶されているデータ要素が前記第一の記憶領域にコピーされた後、その第二の記憶領域がバッファ用領域とされる、
請求項9記載のストレージシステム。 - 前記或る物理記憶装置は、ディスク媒体のドライブであり、
前記第一の記憶領域は、前記第二の記憶領域よりも前記ディスク媒体の外周側に存在する記憶領域である、
請求項9記載のストレージシステム。 - 前記複数の物理記憶装置の負荷のばらつきの度合いが所定の度合い以下か否かを判断するばらつき度合い判断部を更に備え、
所定の度合い以下との判断になれば、前記負荷分散処理が行われることなく前記記憶装置最適化処理が行われる、
請求項9記載のストレージシステム。 - 前記或る物理記憶装置には、二以上のバッファ用領域があり、
前記記憶装置最適化部が、前記或る物理記憶装置のうちの二以上の第一の記憶装置について、前記二以上のバッファ用領域をそれぞれ使用して並行して記憶装置最適化処理を行う、
請求項9記載のストレージシステム。 - 前記或る物理記憶装置について、二以上の記憶領域のそれぞれの記憶領域識別子が連番となっており、
各記憶領域に記憶されているデータ要素のコピー先は、各記憶領域の負荷順位を記憶領域識別子とした場合のその記憶領域識別子から識別される記憶領域である、
請求項9記載のストレージシステム。 - 複数の物理記憶装置を備えたストレージシステムの性能を最適化する方法であって、
負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したRAIDレベルに従う冗長性が低下するか否かを判断し、
冗長性が低下しないとの判断結果であれば、前記選択された記憶領域に記憶されているデータ要素を、前記選択された負荷の低い物理記憶装置が有し論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域であるバッファ用領域に移動し、前記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、前記バッファ用領域に対応付ける、
方法。 - 複数の物理記憶装置を備えたストレージシステムの性能を最適化するためのコンピュータプログラムであって、
負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したRAIDレベルに従う冗長性が低下するか否かを判断し、
冗長性が低下しないとの判断結果であれば、前記選択された記憶領域に記憶されているデータ要素を、前記選択された負荷の低い物理記憶装置が有し論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域であるバッファ用領域に移動し、前記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、前記バッファ用領域に対応付ける、
コンピュータプログラム。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007159303A JP2008310685A (ja) | 2007-06-15 | 2007-06-15 | 冗長性を維持した性能最適化を行うストレージシステム |
| US11/969,315 US7945732B2 (en) | 2007-06-15 | 2008-01-04 | Storage system that executes performance optimization that maintains redundancy |
| US13/082,872 US8239626B2 (en) | 2007-06-15 | 2011-04-08 | Storage system that executes performance optimization that maintains redundancy |
| US13/540,643 US8489813B2 (en) | 2007-06-15 | 2012-07-03 | Storage system that executes performance optimization that maintains redundancy |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007159303A JP2008310685A (ja) | 2007-06-15 | 2007-06-15 | 冗長性を維持した性能最適化を行うストレージシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2008310685A true JP2008310685A (ja) | 2008-12-25 |
Family
ID=40133432
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007159303A Pending JP2008310685A (ja) | 2007-06-15 | 2007-06-15 | 冗長性を維持した性能最適化を行うストレージシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (3) | US7945732B2 (ja) |
| JP (1) | JP2008310685A (ja) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101244001B1 (ko) * | 2012-07-02 | 2013-03-15 | 주식회사 태진인포텍 | 하이브리드 raid 저장 기반 시스템 아키텍쳐 및 이를 제공하는 방법 |
| KR101317759B1 (ko) * | 2012-07-02 | 2013-10-11 | 주식회사 태진인포텍 | 비대칭 raid 저장 기반 시스템 아키텍쳐 |
| WO2013176308A1 (en) * | 2012-05-23 | 2013-11-28 | Taejin Info Tech Co., Ltd. | System architecture based on hybrid raid storage |
| WO2013176307A1 (en) * | 2012-05-23 | 2013-11-28 | Taejin Info Tech Co., Ltd. | System architecture based on asymmetric raid storage |
| US9176670B2 (en) | 2011-04-26 | 2015-11-03 | Taejin Info Tech Co., Ltd. | System architecture based on asymmetric raid storage |
| US9405478B2 (en) | 2012-02-08 | 2016-08-02 | Hitachi, Ltd. | Storage apparatus provided with a plurality of nonvolatile semiconductor storage media and storage control method |
Families Citing this family (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008310685A (ja) * | 2007-06-15 | 2008-12-25 | Hitachi Ltd | 冗長性を維持した性能最適化を行うストレージシステム |
| KR101574603B1 (ko) | 2008-10-31 | 2015-12-04 | 삼성전자주식회사 | 컨디셔널 프로세싱 방법 및 장치 |
| US20110307660A1 (en) * | 2010-06-14 | 2011-12-15 | Chien-Hung Yang | Redundant array of independent disks system, method for writing data into redundant array of independent disks system, and method and system for creating virtual disk |
| US10372350B2 (en) * | 2010-11-29 | 2019-08-06 | Pure Storage, Inc. | Shared ownership of namespace ranges |
| US10922179B2 (en) | 2010-11-29 | 2021-02-16 | Pure Storage, Inc. | Post rebuild verification |
| US11789631B2 (en) | 2010-11-29 | 2023-10-17 | Pure Storage, Inc. | Utilizing metadata storage trees in a vast storage network |
| US11307930B1 (en) | 2010-11-29 | 2022-04-19 | Pure Storage, Inc. | Optimized selection of participants in distributed data rebuild/verification |
| US10802763B2 (en) | 2010-11-29 | 2020-10-13 | Pure Storage, Inc. | Remote storage verification |
| KR101982251B1 (ko) * | 2011-05-24 | 2019-05-24 | 마벨 월드 트레이드 리미티드 | 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법 |
| US8661196B2 (en) * | 2011-08-15 | 2014-02-25 | International Business Machines Corporation | Optimizing locations of data accessed by client applications interacting with a storage system |
| US8775733B2 (en) * | 2011-08-30 | 2014-07-08 | Hitachi, Ltd. | Distribution design for fast raid rebuild architecture based on load to limit number of redundant storage devices |
| US9298617B2 (en) | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Parallel destaging with replicated cache pinning |
| US9329938B2 (en) | 2013-04-16 | 2016-05-03 | International Business Machines Corporation | Essential metadata replication |
| US9619404B2 (en) | 2013-04-16 | 2017-04-11 | International Business Machines Corporation | Backup cache with immediate availability |
| US9104597B2 (en) | 2013-04-16 | 2015-08-11 | International Business Machines Corporation | Destaging cache data using a distributed freezer |
| US9104332B2 (en) | 2013-04-16 | 2015-08-11 | International Business Machines Corporation | Managing metadata and data for a logical volume in a distributed and declustered system |
| US9423981B2 (en) | 2013-04-16 | 2016-08-23 | International Business Machines Corporation | Logical region allocation with immediate availability |
| US9298398B2 (en) | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Fine-grained control of data placement |
| US9423965B2 (en) * | 2014-07-11 | 2016-08-23 | Dell Products L.P. | Method and system for writing to and reading from computer readable media |
| US12468467B2 (en) | 2015-10-31 | 2025-11-11 | Netapp, Inc. | Sequential write based durable file system |
| US10379742B2 (en) * | 2015-12-28 | 2019-08-13 | Netapp, Inc. | Storage zone set membership |
| US10514984B2 (en) | 2016-02-26 | 2019-12-24 | Netapp, Inc. | Risk based rebuild of data objects in an erasure coded storage system |
| US10055317B2 (en) | 2016-03-22 | 2018-08-21 | Netapp, Inc. | Deferred, bulk maintenance in a distributed storage system |
| CN109640197B (zh) * | 2018-12-04 | 2021-12-07 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于缓冲区共享的fc通信实现方法 |
| CN112083892B (zh) * | 2020-09-25 | 2021-05-18 | 上海依图网络科技有限公司 | 一种数据存储方法、装置、设备和介质 |
| US11875051B2 (en) * | 2022-06-17 | 2024-01-16 | Microsoft Technology Licensing, Llc | Contiguous data storage using group identifiers |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0756691A (ja) | 1993-08-12 | 1995-03-03 | Toshiba Corp | ストライピングディスクのデータブロック自動再配置機能を持つ情報処理装置 |
| US6766430B2 (en) * | 2000-07-06 | 2004-07-20 | Hitachi, Ltd. | Data reallocation among storage systems |
| US20040177218A1 (en) * | 2002-11-06 | 2004-09-09 | Meehan Thomas F. | Multiple level raid architecture |
| US6973654B1 (en) * | 2003-05-27 | 2005-12-06 | Microsoft Corporation | Systems and methods for the repartitioning of data |
| JP2007502470A (ja) * | 2003-08-14 | 2007-02-08 | コンペレント・テクノロジーズ | 仮想ディスク・ドライブのシステムおよび方法 |
| US7330943B2 (en) | 2004-08-03 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Storage device flow control |
| JP2006053601A (ja) | 2004-08-09 | 2006-02-23 | Hitachi Ltd | ストレージ装置 |
| JP2006113648A (ja) * | 2004-10-12 | 2006-04-27 | Hitachi Ltd | ディスクアレイ装置 |
| US7636801B1 (en) * | 2005-06-20 | 2009-12-22 | Symantec Operating Corporation | Coordination of quality of service in a multi-layer virtualized storage environment |
| US7979460B2 (en) * | 2006-02-15 | 2011-07-12 | Sony Computer Entainment America Inc. | Systems and methods for server management |
| JP5099128B2 (ja) * | 2007-04-20 | 2012-12-12 | 富士通株式会社 | ストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法 |
| JP2008310685A (ja) * | 2007-06-15 | 2008-12-25 | Hitachi Ltd | 冗長性を維持した性能最適化を行うストレージシステム |
-
2007
- 2007-06-15 JP JP2007159303A patent/JP2008310685A/ja active Pending
-
2008
- 2008-01-04 US US11/969,315 patent/US7945732B2/en not_active Expired - Fee Related
-
2011
- 2011-04-08 US US13/082,872 patent/US8239626B2/en not_active Expired - Fee Related
-
2012
- 2012-07-03 US US13/540,643 patent/US8489813B2/en not_active Expired - Fee Related
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9176670B2 (en) | 2011-04-26 | 2015-11-03 | Taejin Info Tech Co., Ltd. | System architecture based on asymmetric raid storage |
| US9405478B2 (en) | 2012-02-08 | 2016-08-02 | Hitachi, Ltd. | Storage apparatus provided with a plurality of nonvolatile semiconductor storage media and storage control method |
| WO2013176308A1 (en) * | 2012-05-23 | 2013-11-28 | Taejin Info Tech Co., Ltd. | System architecture based on hybrid raid storage |
| WO2013176307A1 (en) * | 2012-05-23 | 2013-11-28 | Taejin Info Tech Co., Ltd. | System architecture based on asymmetric raid storage |
| KR101244001B1 (ko) * | 2012-07-02 | 2013-03-15 | 주식회사 태진인포텍 | 하이브리드 raid 저장 기반 시스템 아키텍쳐 및 이를 제공하는 방법 |
| KR101317759B1 (ko) * | 2012-07-02 | 2013-10-11 | 주식회사 태진인포텍 | 비대칭 raid 저장 기반 시스템 아키텍쳐 |
Also Published As
| Publication number | Publication date |
|---|---|
| US7945732B2 (en) | 2011-05-17 |
| US20080313398A1 (en) | 2008-12-18 |
| US8239626B2 (en) | 2012-08-07 |
| US20120271992A1 (en) | 2012-10-25 |
| US8489813B2 (en) | 2013-07-16 |
| US20110185124A1 (en) | 2011-07-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2008310685A (ja) | 冗長性を維持した性能最適化を行うストレージシステム | |
| CN1327330C (zh) | 逻辑磁盘管理方法和装置 | |
| JP4146380B2 (ja) | ストレージシステム、ブロック再配置制御方法及びプログラム | |
| JP3135751B2 (ja) | データ記憶装置 | |
| JP5971354B2 (ja) | ストレージシステム | |
| JP5444464B2 (ja) | ストレージシステム | |
| JP5685676B2 (ja) | 計算機システム及びデータ管理方法 | |
| EP1909163A2 (en) | Storage apparatus and load balancing method | |
| JP5080611B2 (ja) | ThinProvisioningが適用されたストレージ装置 | |
| JP5531091B2 (ja) | 計算機システム及びその負荷均等化制御方法 | |
| JP4684864B2 (ja) | 記憶装置システム及び記憶制御方法 | |
| US8195877B2 (en) | Changing the redundancy protection for data associated with a file | |
| JP2010211681A (ja) | ストレージ装置及び仮想化装置 | |
| JP6889742B2 (ja) | ストレージシステム、データ管理方法、及びデータ管理プログラム | |
| JP2020154587A (ja) | 計算機システム及びデータ管理方法 | |
| US11188258B2 (en) | Distributed storage system | |
| JP2008102590A (ja) | ストレージシステムの運用管理方法およびストレージシステム | |
| JP2021028773A (ja) | ストレージシステム | |
| JP5691234B2 (ja) | ディスクアレイ装置、及び、ミラーリング制御方法 | |
| JP4714720B2 (ja) | ストレージ装置及びその制御方法、並びにディスク装置 | |
| JP2008186141A (ja) | データ管理方法、データ管理プログラム、データ管理システム、および、構成管理装置 | |
| JP2002116936A (ja) | ディスクアレイ装置 | |
| Thomasian et al. | Data Allocation in a Heterogeneous Disk Array-HDA with Multiple RAID Levels for Database Applications | |
| JP2026022138A (ja) | ストレージ装置 | |
| JP2007334913A (ja) | 記憶装置システム及び記憶装置システムにおけるデータの複写方法 |