JP5884602B2 - ストレージ制御装置、およびストレージシステム - Google Patents

ストレージ制御装置、およびストレージシステム Download PDF

Info

Publication number
JP5884602B2
JP5884602B2 JP2012080650A JP2012080650A JP5884602B2 JP 5884602 B2 JP5884602 B2 JP 5884602B2 JP 2012080650 A JP2012080650 A JP 2012080650A JP 2012080650 A JP2012080650 A JP 2012080650A JP 5884602 B2 JP5884602 B2 JP 5884602B2
Authority
JP
Japan
Prior art keywords
storage
access
size
area
logical 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.)
Active
Application number
JP2012080650A
Other languages
English (en)
Other versions
JP2013210846A (ja
Inventor
智彦 室山
智彦 室山
雅裕 吉田
雅裕 吉田
忠 松村
忠 松村
紀之 矢須
紀之 矢須
基紀 曽谷
基紀 曽谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012080650A priority Critical patent/JP5884602B2/ja
Priority to EP13158344.5A priority patent/EP2645225A1/en
Priority to US13/803,501 priority patent/US9507703B2/en
Publication of JP2013210846A publication Critical patent/JP2013210846A/ja
Application granted granted Critical
Publication of JP5884602B2 publication Critical patent/JP5884602B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はストレージ制御装置、およびストレージシステムに関する。
現在、データを蓄積・利用するためのストレージシステムが利用されている。ストレージシステムは、複数の記憶装置と複数の記憶装置に格納されたデータへのアクセスを制御するストレージ制御装置とを含む。ストレージシステムでは、RAID(Redundant Arrays of Independent Disks)の技術を利用することがある。RAIDでは、複数の記憶装置に分散してデータを配置することがある。この手法をストライピング(Striping)と呼ぶことがある。ストライピングにより、例えば、アクセスに伴う負荷の複数の記憶装置への分散化を図れ、アクセスの高速化を図れる。
ストライピングでは各記憶装置の記憶領域を所定サイズに分割する。分割された所定サイズの記憶域をストリップ(strip)と呼ぶことがある。ストリップのサイズをストリップサイズ(strip size)またはストライプ深度(Stripe depth)などと呼ぶことがある。異なる記憶装置上の分割した記憶域(ストリップ)を組み合わせてストライプ(Stripe)と呼ばれる1つの論理的な記憶領域とする。例えば、RAID0の場合、1つのストライプの記憶容量は、ストリップサイズと当該ストライプに記憶域を提供する記憶装置の数との積である。ストライプを複数組み合わせて1つの論理的な記憶領域とすることもできる。
ストリップサイズを調整することで、データへのアクセスの効率化を図れる場合がある。例えば、比較的大きなサイズ(例えば、1ストライプの記憶容量以上のサイズ)のデータに対する複数のアクセスが重複して発生すると、複数のアクセスを並行に処理できないことがある。一方、比較的小さなサイズのデータに対するアクセスが特定の記憶装置に集中すると、複数の記憶装置に並行してアクセスしないことがある。この場合、ストライピングによる負荷の分散化を十分に図れていない可能性がある。そこで、アクセスログに基づき、サポートするストリップサイズ別にアクセスサイズをカウントし、要求されたアクセスサイズの発生頻度によりアクセスの傾向を把握して、ストリップサイズを変更する提案がある。
また、書き込みまたは読み出しのコマンドを監視し、特定のサイズのデータが規定の割合を超えると、アレイのストリップサイズを変更する提案がある。
なお、ホスト装置からのアクセス情報に基づいて、パウンダリ(ストレージ装置上のキャッシュメモリへのデータの書き込み開始位置のずれ)の有無やパウンダリの大きさを解析する提案がある。更に、ストレージシステムの負荷が低い時間帯に、ストレージ装置の構成情報をストレージ装置から取得する提案もある。
特開平11−154057号公報 特開平8−129461号公報 特開2008−269015号公報 特開2006−134021号公報
ストライピングによる論理的な記憶領域(論理領域と呼ぶことがある)は、複数作成できる。各論理領域は種々の用途に用いられる。用途によってはランダムアクセスが頻発する論理領域も存在し得る。例えば、論理領域をデータベースに用いる場合、当該論理領域に対してランダムアクセスが頻発し得る。論理領域に対してランダムアクセスが頻発すると、現在のストリップサイズでは当該論理領域のデータへのアクセスが非効率になることがある。そこで、ランダムアクセスされる論理領域について、ストリップサイズの調整をどのようにして効率的に行うかが問題となる。
例えば、ランダムアクセスでは比較的小さなサイズのデータへアクセスすることがある。比較的小さなサイズのデータへアクセスする場合、各記憶装置において記憶域を物理的に探索するための所要時間がアクセス性能に及ぼす影響が大きくなる。したがって、アクセス対象となる論理領域内の範囲が複数の記憶装置上の記憶域に跨ると、複数の記憶装置で記憶域の探索を行うことになり、そのオーバーヘッドでアクセス性能が悪化し得る。このため、例えば、ランダムアクセスされるサイズに対してストリップサイズが小さいと、ストライピングによるアクセス性能を十分に発揮できないことがある。
一側面によれば、本発明は、ランダムアクセスされる論理領域のチューニングを効率的に行うことができるストレージ制御装置、およびストレージシステムを提供することを目的とする。
一実施態様によれば、複数の記憶装置それぞれから所定サイズの記憶域が割り当てられた論理領域に対する情報処理装置からのアクセスの制御に用いられるストレージ制御装置が提供される。ストレージ制御装置は、取得手段と制御手段とを有する。取得手段は、情報処理装置からのアクセスの内容に基づいて、第1の論理領域に対するランダムアクセスの回数を示す情報およびランダムアクセスの対象となったデータのサイズを示す情報を取得して記憶手段に格納する。制御手段は、記憶手段を参照して、第1の論理領域への総アクセス回数に対するランダムアクセスの回数の割合が閾値以上になると、ランダムアクセスの対象となったデータのサイズを示す情報に基づいて第2の論理領域に割り当てる記憶域のサイズを決定し、複数の記憶装置を用いて第2の論理領域を作成し、第1の論理領域へアクセスする代わりに第2の論理領域へアクセスするように情報処理装置からのアクセスを制御する。
また、一実施態様によれば、複数の記憶装置を備えており複数の記憶装置それぞれの記憶域が割り当てられた論理領域に対する情報処理装置からのアクセスを制御するストレージシステムが提供される。ストレージシステムはストレージ制御装置を有する。ストレージ制御装置は、情報処理装置からのアクセスの内容に基づいて、第1の論理領域に対するランダムアクセスの回数を示す情報およびランダムアクセスの対象となったデータのサイズを示す情報を取得し、第1の論理領域への総アクセス回数に対するランダムアクセスの回数の割合が閾値以上になると、ランダムアクセスの対象となったデータのサイズを示す情報に基づいて第2の論理領域に割り当てる記憶域のサイズを決定し、複数の記憶装置を用いて第2の論理領域を作成し、第1の論理領域へアクセスする代わりに第2の論理領域へアクセスするように情報処理装置からのアクセスを制御する。
一実施態様によれば、ランダムアクセスされる論理領域のチューニングを効率的に行うことができる。
第1の実施の形態のストレージ制御装置を示す図である。 第2の実施の形態のストレージシステムを示す図である。 ストレージシステムのハードウェア例を示す図である。 CEのソフトウェア例を示す図である。 論理ボリュームの例を示す図である。 読み出しリクエストの例を示す図である。 利用可能ストリップサイズの例を示す図である。 RAIDグループ管理テーブルの例を示す図である。 論理ボリューム管理テーブルの例を示す図である。 アクセス管理テーブルの例を示す図である。 ランダムアクセス閾値の例を示す図である。 アクセス統計テーブルの例を示す図である。 読み出しアクセス受信時の処理例を示すフローチャートである。 チューニング実行時間の決定例を示すフローチャートである。 チューニングの処理例を示すフローチャートである。 チューニングの第1の具体例を示す図である。 チューニングの第2の具体例を示す図である。 論理ボリュームの他の例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ制御装置を示す図である。ストレージ制御装置1は、情報処理装置2および記憶装置3,4,5,6を含む複数の記憶装置と接続される。ストレージ制御装置1は、論理領域B1に対する情報処理装置2からのアクセスの制御に用いられる。論理領域B1は、記憶装置3,4,5,6を用いて作成される。記憶装置3,4,5,6は、所定サイズの記憶域を有する。記憶装置3は記憶域B11を有する。記憶装置4は記憶域B12を有する。記憶装置5は記憶域B13を有する。記憶装置6は記憶域B14を有する。論理領域B1は、記憶域B11,B12,B13,B14が割り当てられた論理的な記憶領域である。論理領域B1のサイズは、記憶域B11,B12,B13,B14のサイズの合計となる。論理領域B1は、ストライピングにより作成された領域であるということができる。
ストレージ制御装置1は、取得手段1a、記憶手段1bおよび制御手段1cを有する。
取得手段1aは、情報処理装置2からのアクセスの内容に基づいて、論理領域B1に対するランダムアクセスの頻度を示す情報を記憶手段1bに格納する。また、取得手段1aは、当該ランダムアクセスの対象となったデータのサイズを示す情報を取得して記憶手段1bに格納する。
記憶手段1bは、取得手段1aが取得したランダムアクセスの頻度を示す情報およびランダムアクセスの対象となったデータのサイズを示す情報を、論理領域B1を示す情報に対応付けて記憶する。
制御手段1cは、記憶手段1bを参照して、ランダムアクセスの頻度が閾値以上になると、ランダムアクセスの対象となったデータのサイズを示す情報に基づいて、論理領域B2に割り当てる記憶域のサイズを決定する。
ここで、ランダムアクセスの頻度とは、例えば、全体のアクセス総数に対するランダムアクセス数の割合である。また、例えば、ある一定期間におけるランダムアクセスの回数をランダムアクセスの頻度としてもよい。
論理領域B2は、論理領域B1に代替するための論理領域である。例えば、制御手段1cは、ランダムアクセスの対象となった複数のデータのサイズを示す情報に基づき当該サイズの平均値を求め、その平均値よりも大きな値を論理領域B2に割り当てる記憶域のサイズと決定することが考えられる。ランダムアクセスの対象となるデータが2以上の記憶装置に跨って配置される可能性を低減できるからである。例えば、平均値の2倍以上になるように決定してもよい。
また、記憶域B11,B12,B13,B14が十分大きいと判断できる場合には、記憶域B11,B12,B13,B14それぞれのサイズよりも小さなサイズを論理領域B2に割り当てる記憶域のサイズと決定してもよい。なぜなら、ストリップサイズが大き過ぎると、特定の記憶装置にアクセスが集中する可能性が高まる。よって、この場合、特定の記憶装置の負荷が高まる可能性もあり、アクセス性能が悪化し得るからである。
制御手段1cは、記憶装置3,4,5,6および記憶装置3,4,5,6以外の複数の他の記憶装置の少なくとも一部を用いて、論理領域B2を作成する。例えば、制御手段1cは、記憶域B21,B22を作成して論理領域B2に割り当てる。記憶域B21,B22のサイズを記憶域B11,B12,B13,B14の現サイズよりも大きくする場合、例えば、当該現サイズの2倍とする。具体的には、制御手段1cは、記憶域B11,B12を結合した領域に対応する記憶域B21を作成して記憶装置3に格納する。また、制御手段1cは、記憶域B13,B14を結合した領域に対応する記憶域B22を作成して記憶装置4に格納する。論理領域B2のサイズは、例えば論理領域B1と同じである。
制御手段1cは、論理領域B1へアクセスする代わりに論理領域B2へアクセスするように情報処理装置2からのアクセスを制御する。例えば、情報処理装置2が論理領域B1に対応付けられた所定の識別子を用いて論理領域B1へアクセスしているとする。その場合、例えば、当該識別子と論理領域B1(例えば、論理領域B1を示すアドレスなど)との対応関係が記憶手段1bに格納される。例えば、制御手段1cは論理領域B2を作成した後、当該識別子と論理領域B1との対応関係を変更して当該識別子を論理領域B2に対応付ける。このようにして、制御手段1cは、情報処理装置2が当該識別子を用いて論理領域B2へアクセスできるようにする。
ストレージ制御装置1によれば、取得手段1aにより、情報処理装置2からのアクセスの内容に基づいて、論理領域B1に対するランダムアクセスの頻度を示す情報およびランダムアクセスの対象となったデータのサイズを示す情報が取得されて記憶手段1bに格納される。制御手段1cにより、記憶手段1bが参照されて、ランダムアクセスの頻度が閾値以上になると、ランダムアクセスの対象となったデータのサイズを示す情報に基づいて論理領域B2に割り当てる記憶域のサイズが決定される。制御手段1cにより、複数の記憶装置を用いて論理領域B2が作成される。制御手段1cにより、論理領域B1にアクセスする代わりに論理領域B2へアクセスするように情報処理装置2からのアクセスが制御される。
これにより、ランダムアクセスされる論理領域のチューニングを効率的に行うことができる。ある記憶領域のランダムアクセスの頻度が高い場合には、シーケンシャルアクセスに比べてランダムアクセスが高い論理領域であると判断できる。この場合には、ランダムアクセスに、より特化したチューニングを行うことで当該論理領域に対するアクセス性能を向上し得る。そこで、ランダムアクセスの頻度が高い論理領域を取得し、ランダムアクセスの対象となったデータサイズに応じたサイズの記憶域を割り当てなおして論理領域を作り変える。このように、論理領域ごとのランダムアクセスの状況に応じて、論理領域ごとのストリップサイズを調整する作業の省力化を図れる。
ここで、ランダムアクセスでは比較的小さなサイズでデータアクセスを行うことがある。その場合、アクセス対象となる論理領域内の範囲が複数の記憶装置上の記憶域に跨ると、各記憶装置において記憶域(アクセス先のデータが格納された位置)を探索するための所要時間がアクセス性能に及ぼす影響が大きくなる。
例えば、論理領域B1に対してランダムアクセスA1,A2,A3,A4,A5が発生したとする。ランダムアクセスA1は、アクセス対象となる論理領域B1内の範囲が記憶域B11,B12に跨る。ランダムアクセスA2は、アクセス対象となる論理領域B1内の範囲が記憶域B12内のみに収まる。ランダムアクセスA3は、アクセス対象となる論理領域B1内の範囲が記憶域B12,B13に跨る。ランダムアクセスA4は、アクセス対象となる論理領域B1内の範囲が記憶域B13,B14に跨る。ランダムアクセスA5は、アクセス対象となる論理領域B1内の範囲が記憶域B14内に収まる。ランダムアクセスA1,A3,A4のように2以上の記憶域に跨って比較的小さなデータにランダムアクセスする場合、各記憶装置から各記憶域内を物理的に探索してデータへアクセス(例えば、読み出し)するための所要時間がアクセス性能に及ぼす影響が大きくなる。
具体的には、記憶装置3,4,5,6が磁気ディスク装置であれば、アクセス時間とデータ転送時間との和でアクセス性能を評価することがある。アクセス時間は、情報処理装置2からデータ転送要求を受けて転送を開始するまでの時間である。アクセス時間は、シーク時間(磁気ヘッドの位置決め時間)とディスクの回転待ち時間(トラック上のセクタの位置決め時間)との和である。転送するデータ量が小さい程(すなわち、データ転送時間が小さい程)、アクセス性能へのアクセス時間(記憶域を探索するための所要時間)の影響が大きくなる。例えば、ランダムアクセスA1の対象となるデータを記憶装置3,4から並行して読み出したとしても、アクセス時間が遅い方の記憶装置からの読み出しが完了するまで、ランダムアクセスA1の対象となるデータの読み出しは完了しないことになる。すなわち、遅い方のアクセス時間でアクセス性能が決まってしまう。ランダムアクセスが頻発すると、このオーバーヘッドによるアクセス時間の遅延が顕著になり、ストライピングによるアクセス性能を十分に発揮できないことがある。すなわち、このような場合には、1つのランダムアクセス(例えば、ランダムアクセスA1)により1つの記憶装置のみにアクセスする方が、複数の記憶装置にアクセスするよりも効率的である。
そこで、ストレージ制御装置1は、論理領域B2を作成し、論理領域B1の代わりとする。例えば、論理領域B2に対してランダムアクセスA1a,A2a,A3a,A4a,A5aが発生したとする。ランダムアクセスA1,A1aのアクセス対象データは同じである。ランダムアクセスA2,A2aのアクセス対象データは同じである。ランダムアクセスA3,A3aのアクセス対象データは同じである。ランダムアクセスA4,A4aのアクセス対象データは同じである。ランダムアクセスA5,A5aのアクセス対象データは同じである。ランダムアクセスA1aは、アクセス対象となる論理領域B2内の範囲が記憶域B21内に収まる。ランダムアクセスA2aは、アクセス対象となる論理領域B2内の範囲が記憶域B21内に収まる。ランダムアクセスA3aは、アクセス対象となる論理領域B2内の範囲が記憶域B21,B22に跨る。ランダムアクセスA4aは、アクセス対象となる論理領域B2内の範囲が記憶域B22内に収まる。ランダムアクセスA5aは、アクセス対象となる論理領域B2内の範囲が記憶域B22内に収まる。
論理領域B2では、ランダムアクセスの対象となる領域が1つの記憶装置上の記憶域に収まる場合が、論理領域B1に比べて多い。すなわち、論理領域B2では2以上の記憶域を跨ったランダムアクセスが発生する可能性が論理領域B1よりも低く、アクセス時間の短縮化を図れる。
このようにして、論理領域ごとのランダムアクセスに対するストリップサイズの調整を効率的に行うことができる。また、当該論理領域に対するアクセス性能の向上を図ることができる。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムを示す図である。第2の実施の形態のストレージシステムは、コントローラエンクロージャ(CE:Controller Enclosure)100およびディスクエンクロージャ(DE:Disk Enclosure)200,300を含む。CE100とDE200とはケーブル11を用いて接続されている。DE200,300はケーブル12を用いて接続されている。また、CE100はスイッチ装置400にケーブル13を用いて接続されている。スイッチ装置400にはサーバ500がケーブル14を用いて接続されている。ケーブル11,12,13,14は複数でもよい。
ケーブル11,12には、例えばinfiniBandやFC(Fibre Channel)などに対応したケーブルを用いることができる。ケーブル13,14には、例えばFC、SAS(Serial Attached Small Computer System Interface)、iSCSI(Internet Small Computer System Interface)およびFCoE(Fibre Channel over Ethernet)(Ethernetは登録商標)などに対応したケーブルを用いることができる。
CE100は、サーバ500からのDE200,300へのアクセスを制御するストレージ制御装置である。
DE200,300は、複数のディスク装置を収納可能なストレージ装置である。DE20,300は、ディスクシェルフと呼ばれることもある。
スイッチ装置400は、CE100およびサーバ500の間の通信を中継する中継装置である。例えば、スイッチ装置400にサーバ500以外のサーバコンピュータを接続することで、当該サーバコンピュータからもストレージシステムへアクセス可能となる。
サーバ500は、ストレージシステムへアクセスするサーバコンピュータである。
CE100、DE200,300、スイッチ装置400およびサーバ500は、例えばラックに収納される。ただし、各装置はタワー型でもよい。
以下の説明では、各装置を接続するケーブルの符号を省略する。
図3は、ストレージシステムのハードウェア例を示す図である。CE100は、CM(Contoller Module)110,120を有する。CM110,120は、DE200,300が備える複数のディスク装置に対するサーバ500からのアクセスを制御するモジュールである。CM110,120は、冗長化されており、サーバ500からの複数のアクセスを分担して並列に処理することができる。CM110,120はCE100内部のバスを介して接続されている。CM110は、CPU(Central Processing Unit)111、メモリ112、CA(Channel Adaptor)113,114およびDA(Disk Adaptor)115,116を有する。CPU111は、CM110内のバスを介して他のユニットと接続されている。
CPU111は、CM110の情報処理を制御するプロセッサである。CM110は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
メモリ112は、不揮発性メモリおよび揮発性メモリを含む。不揮発性メモリにはCPU111が実行するファームウェアのプログラムや処理に用いるデータを記憶する。揮発性メモリは、CPU111が実行するファームウェアのプログラムや処理に用いるデータを一時的に記憶する。CM110は、複数個のメモリを備えていてもよい。
CA113,114は、スイッチ装置400を介してサーバ500と通信を行う通信インタフェースである。CA113,114は冗長化されており、両方をアクティブとすることができる。
DA115,116は、DE200と通信を行う通信インタフェースである。DA115,116は冗長化されており、両方をアクティブとすることができる。
CM120は、CPU121、メモリ122、CA123,124およびDA125,126を有する。ここで、CPU121、メモリ122、CA123,124およびDA125,126のそれぞれは、CPU111、メモリ112、CA113,114およびDA115,116と同様であるため、説明を省略する。なお、CPU111,121はCE100内部のバスを介して通信できる。
DE200は、IOM(Input/Output Module)210,220およびHDD(Hard Disk Drive)230,240,250,260,・・・を有する。
IOM210,220は、CE100からの指示に基づいて、HDD230,240,250,260,・・・に対するデータの書き込み(Write)や読み出し(Read)を実行するモジュールである。例えば、IOM210,220は、書き込みや読み出しを実行するASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などを含む。IOM210,220は、IOM210,220内のメモリに格納されたファームウェアなどのプログラムを実行する汎用のプロセッサを含んでもよい。また、IOM210,220は、CE100およびDE300と接続して通信を行うための通信インタフェースを含む。IOM210は、DA115,116と接続される。IOM220は、DA125,126と接続される。
HDD230,240,250,260,・・・は、サーバ500や他のサーバコンピュータの処理に用いるデータを格納するためのディスク装置である。
DE300は、IOM310,320およびHDD330,340,350,360,・・・を有する。
IOM310,320は、IOM210,220と同様であるため説明を省略する。ただし、IOM310,320は、IOM210,220と接続されている。CE100は、DE200を介して、DE300と通信する。
HDD330,340,350,360は、サーバ500や他のサーバコンピュータの処理に用いるデータを格納するためのディスク装置である。
DE200,300では、ストライピングの技術により各HDDを用いて複数の論理ボリュームが作成されている。RAIDレベルは、例えば、RAID0である。あるいは、RAID4、RAID5、RAID6の何れかのRAIDレベルでもよい。また、これらのRAIDレベルに更にミラーリング(RAID1)を適用したRAID0+1、RAID4+1、RAID5+1、RAID6+1などでもよい。
なお、CE100に複数のHDDを収納可能としてもよい。CM110,120は、サーバ500からCE100に収納された複数のHDDに対するアクセスを制御してもよい。
また、CE100およびDE200,300は、HDDに代えて、または、HDDと併せてSSD(Solid State Drive)などの他の記憶装置を備えてもよい。
図4は、CEのソフトウェア例を示す図である。図4では、スイッチ装置400およびDE300の図示を省略している。図4に示すユニットの一部または全部は、CPU111が実行するプログラムのモジュールであってもよい。また、図4に示すユニットの一部または全部は、FPGAやASICなどの電子回路であってもよい。CM120もCM110と同様のユニットを用いて実装できる。ただし、CM120はIOM220と通信することで、CM120と同様の制御を行う。
CM110は、記憶部130、アクセス処理部140、ボリューム制御部150および同期部160を有する。
記憶部130は、アクセス処理部140、ボリューム制御部150および同期部160の処理に用いる各種のデータを記憶する。記憶部130は、メモリ112の記憶領域を用いて実装できる。
アクセス処理部140は、データの書き込みや読み出しなどのアクセス要求(リクエストということがある)をサーバ500から受信する。アクセス処理部140は、記憶部130に記憶された情報に基づいて、アクセス要求に応じたデータの書き込みや読み出しの実行をIOM210に指示する。IOM210は、アクセス処理部140からの書き込みの指示に応じて、HDD230,240,250,260,・・・にデータを書き込み、書き込みの実行結果をアクセス処理部140に応答する。IOM210は、アクセス処理部140からの読み出しの指示に応じて、HDD230,240,250,260,・・・からデータを読み出し、読み出したデータをアクセス処理部140に応答する。アクセス処理部140は、書き込みの実行結果や読み出されたデータをサーバ500に応答する。
また、アクセス処理部140は、サーバ500から連続して受信する論理ボリュームごとの読み出しリクエストに基づいて、当該リクエストに係る連続したアクセスがランダムアクセスであるかシーケンシャルアクセスであるかを判断する。更に、アクセス処理部140は、ランダムアクセスが比較的小さいサイズのデータへのアクセスである場合には、当該ランダムアクセスに関する情報を取得し、論理ボリュームに対応付けて記憶部130に記録する。また、アクセス処理部140は、アクセス要求の統計を取って、記憶部130に記録する。
ボリューム制御部150は、記憶部130に記憶された情報に基づいて、論理ボリュームごとのストリップサイズの変更を制御する。ボリューム制御部150は、IOM210に対して、ストリップサイズの変更を指示し、ストリップサイズを変更させる。この処理を、単に「ボリューム制御部150がストリップサイズを変更する」ということがある。
ボリューム制御部150は、DE200における全てのHDDのストリップサイズの変更を制御する。すなわち、CM120が備えるボリューム制御部は、ボリューム制御部150の待機系として利用する。ただし、ボリューム制御部150とCM120が備えるボリューム制御部とを両方アクティブとして、ストリップサイズの変更を制御する対象のHDDや論理ボリュームなどを分担してもよい。
同期部160は、CM120と情報を同期し共有する。具体的には、同期部160は、CM120が備える記憶部と記憶部130とのうち、CM120が備える記憶部だけに記憶された情報を記憶部130に記録する。また、同期部160は、記憶部130側だけに記憶された情報をCM120に提供する。同期のタイミングは、所定の周期(例えば、1分、10分、30分)でもよく、同期対象の情報に更新が発生したタイミングでもよい。
図5は、論理ボリュームの例を示す図である。論理ボリューム600は、HDD230,240,250,260にストライピング(RAID0)を適用して作成された論理領域である。当該論理領域は、LU(Logical Unit)と呼ばれることもある。ここで、あるRAIDを適用するHDDの集合をRAIDグループと呼ばれる単位で管理する。HDD230,240,250,260はRAIDグループ#0に属する。HDD230,240,250,260には、各HDDを識別するためのディスク番号が付与されている。HDD230はディスク#0である。HDD240はディスク#1である。HDD250はディスク#2である。HDD260はディスク#3である。
論理ボリューム600には、ストレージシステム内で論理ボリュームを識別するための識別子である論理ユニット番号(LUN:Logical Unit Number)が付与されている。論理ボリューム600は、LUN0である。
論理ボリューム600は、HDD230,240,250,260上でストリップサイズ単位に分割された複数の記憶域の集合である。HDD230,240,250,260上の各記憶域をストリップ(strip)と呼ぶことがある。
HDD230は、ストリップ231,232,・・・を有する。ストリップ231の識別子は“SP00”である。ストリップ232の識別子は“SP04”である。
HDD240は、ストリップ241,242,・・・を有する。ストリップ241の識別子は“SP01”である。ストリップ242の識別子は“SP05”である。
HDD250は、ストリップ251,252,・・・を有する。ストリップ251の識別子は“SP02”である。ストリップ252の識別子は“SP06”である。
HDD260は、ストリップ261,262,・・・を有する。ストリップ261の識別子は“SP03”である。ストリップ262の識別子は“SP07”である。
論理ボリューム600は、これらストリップの集合である。具体的には、論理ボリューム600は、ストリップ231,241,251,261,232,・・・を含む。ストリップの順番は、論理ボリューム600内の位置を示す論理ブロックアドレス(LBA:Logical Block Addressing)の順である。論理ボリューム600の先頭のLBAは、ストリップ231の先頭のLBAである。ストリップ231の最後のLBAの次のLBAは、ストリップ241の先頭のLBAである。ストリップ261の最後のLBAの次のLBAは、ストリップ232の先頭のLBAである。
図5の例では、ストリップ231,241,251,261を組み合わせた論理領域を1つのストライプ(ストライプ“1”)と呼ぶことができる。よって、1つのストライプのサイズ(ストライプ幅と呼ぶことがある)は、ストリップサイズ×4である。ストリップ232,242,252,262を組み合わせた論理領域も1つのストライプ(ストライプ“2”)である。
論理ボリューム600は、当該ストライプを1またはそれ以上組み合わせた論理領域である。論理ボリューム600のサイズは、ストライプ幅×ストライプ数である。
図6は、読み出しリクエストの例を示す図である。読み出しリクエスト700は、サーバ500により生成されCE100に送信される。読み出しリクエスト700は、LUN、論理ボリュームの先頭からのオフセットおよび読み出しバイト数のフィールドを含む。
LUNのフィールドには、読み出し対象のデータを格納した論理ボリュームを指定するための情報が設定される。LUNのフィールドに設定される情報は、LUNそのものでもよいし、CE100がLUNに対応付けて管理する所定の論理ボリューム名でもよい。論理ボリュームの先頭からのオフセットのフィールドには、当該論理ボリューム内の領域のうち、読み出しを開始する位置を示すLBAが設定される。ここで指定されるLBAは、論理ボリュームの先頭LBAを0としたときの相対的なLBA(オフセット)である。読み出しバイト数のフィールドには、当該オフセットから読み出すデータのサイズが設定される。
例えば、読み出しリクエスト700には、論理ボリュームの先頭からのオフセットが“678”、読み出しバイト数が“72KB(KiloBytes)”という情報が設定されている。以下の説明では、論理ボリュームの先頭からのオフセットを単にオフセットということがある。
図7は、利用可能ストリップサイズの例を示す図である。利用可能ストリップサイズリスト131は、記憶部130に予め格納される。利用可能ストリップサイズリスト131は、利用可能な(すなわち、ストリップに対して適用可能な)ストリップサイズの一覧である。利用可能ストリップサイズリスト131は、利用可能なストリップサイズが予め定められていることが分かり易いように図示したものであり、利用可能なストリップサイズをこのようなリストを用いずに管理してもよい。この例では、ストリップサイズの最小値は64KBであり、最大値は1024KBである。他のストリップサイズはその整数倍である。ストリップサイズとして64KB、128KB、256KB、512KB、1024KBを利用可能である。
図8は、RAIDグループ管理テーブルの例を示す図である。RAIDグループ管理テーブル132は、記憶部130に格納される。RAIDグループ管理テーブル132は、RAIDグループ、ディスク番号およびLBA数の項目を含む。
RAIDグループの項目には、RAIDグループ番号が登録される。ディスク番号の項目には、当該RAIDグループ番号で示されるRAIDグループに属するHDDのディスク番号が登録される。LBA数の項目には、当該RAIDグループ番号で示されるRAIDグループにおけるLBAの総数が登録される。1LBAは、HDD上の1つのセクタに対応する。したがって、1セクタのサイズにLBA数を乗じた数が当該RAIDグループで利用可能な記憶容量である。
例えば、RAIDグループ管理テーブル132には、RAIDグループが“0”、ディスク番号が“0,1,2,3”、LBA数が“524288”という情報が登録されている。これは、RAIDグループ#0のRAIDグループに、ディスク#0,1,2,3のHDD230,240,250,260が属しており、LBA数が524288であることを示す。例えば、1セクタのサイズが512Bであれば、512B×524288=268MB(MegaBytes)が当該RAIDグループ#0で利用可能な全記憶容量である。
図9は、論理ボリューム管理テーブルの例を示す図である。論理ボリューム管理テーブル133は、記憶部130に格納される。論理ボリューム管理テーブル133には、LUN、RAIDグループ、先頭LBAおよび総LBA数の項目を含む。
LUNの項目には、LUNが登録される。RAIDグループの項目には、当該論理ボリュームが属するRAIDグループのRAIDグループ番号が登録される。先頭LBAの項目には、RAIDグループ内における当該論理ボリュームの先頭LBAが登録される。総LBA数の項目には、当該論理ボリュームの総LBA数が登録される。
例えば、論理ボリューム管理テーブル133には、LUNが“0”、RAIDグループが“0”、先頭LBAが“0”、総LBA数が“131072”という情報が登録される。これは、LUN0で識別される論理ボリューム600がRAIDグループ#0のRAIDグループに属していること、当該RAIDグループのLBA“0”を先頭として、総LBA数“131072”分の領域が確保されていることを示す。例えば、1セクタのサイズが512Bであれば、512B×131072=67MBが論理ボリューム600で利用可能な記憶容量である。
1つのRAIDグループには、複数の論理ボリュームを作成することができる。論理ボリューム管理テーブル133によれば、RAIDグループ#0には、LUN1の論理ボリュームも存在している。
図10は、アクセス管理テーブルの例を示す図である。アクセス管理テーブル134は、記憶部130に格納される。アクセス管理テーブル134は、RAIDグループ、LUN、総アクセス回数、ランダムアクセス回数、平均読み出しバイト数、ストリップサイズおよび調整フラグの項目を含む。
RAIDグループの項目には、RAIDグループ番号が登録される。LUNの項目には、論理ボリュームのLUNが登録される。総アクセス回数の項目には、当該論理ボリュームに対する総読み出しアクセス回数が登録される。ランダムアクセス回数の項目には、当該論理ボリュームに対する読み出しのランダムアクセス回数が登録される。総アクセス回数およびランダムアクセス回数は、読み出しリクエストを受信するごとにカウントされる。ただし、ランダムアクセス回数は読み出しリクエストが所定の条件(後述する)を満たす場合にカウントされる。平均読み出しバイト数の項目には、ランダムアクセスとしてカウントされたアクセスについての平均読み出しバイト数が登録される。ストリップサイズの項目には、当該論理ボリュームの現在のストリップサイズが登録される。調整フラグの項目には、当該論理ボリュームがストリップサイズのチューニング対象であるか否かを示すフラグが登録される。フラグ“true”はチューニング対象であることを示す。フラグ“false”はチューニング対象外であることを示す。
例えば、アクセス管理テーブル134には、RAIDグループが“0”、LUNが“0”、総アクセス回数が“61287”、ランダムアクセス回数が“55817”、平均読み出しバイト数が“78KB”、ストリップサイズが“128KB”、調整フラグが“true”という情報が登録される。これは、RAIDグループ#0のLUN0で識別される論理ボリューム600に対して、読み出しの総アクセス回数が61287回であり、カウント対象となった読み出しのランダムアクセス回数が55817回であることを示す。また、当該読み出しのランダムアクセスについての平均読み出しバイト数が78KBであることを示す。更に、現在のストリップサイズが128KBであること、ストリップサイズのチューニング対象であることを示す。ここで、論理ボリューム600のサイズが例えば67MBであれば、論理ボリューム600のストリップ総数は67MB÷128KB=524個程度である。
図11は、ランダムアクセス閾値の例を示す図である。ランダムアクセス閾値135は、記憶部130に格納される。ランダムアクセス閾値135は、論理ボリュームのストリップサイズのチューニングを行うか否かを判断するために用いるパラメータである。例えば、ランダムアクセス閾値135として、総アクセス回数の80%という情報が登録される。これは、カウント対象となったランダムアクセス回数が総アクセス回数の80%以上となる場合に、チューニング対象とすることを示す。なお、ランダムアクセス閾値135をストレージシステムの運用に応じて異なる値に変更可能としてもよい。また、ランダムアクセス閾値135を論理ボリュームごとに登録可能としてもよい。
図12は、アクセス統計テーブルの例を示す図である。アクセス統計テーブル136は、記憶部130に格納される。アクセス統計テーブル136は、RAIDグループ、LUN、曜日、時間帯およびアクセス回数の項目を含む。
RAIDグループの項目には、RAIDグループ番号が登録される。LUNの項目には、論理ボリュームのLUNが登録される。曜日の項目には、曜日が登録される。時間帯の項目には、時間帯(例えば、1時間刻み)が登録される。アクセス回数の項目には、当該曜日・当該時間帯における総アクセス回数が登録される。
例えば、アクセス統計テーブル136には、RAIDグループが“0”、LUNが“0”、曜日が“月”、時間帯が“0:00”、アクセス回数が“5237”という情報が登録される。これは、RAIDグループ#0のLUN0で識別される論理ボリューム600に対して、月曜日の0時00分00秒〜0時59分59秒の間に5237回のアクセスがあったことを示す。
なお、アクセス回数を曜日単位以外で取得してもよい。例えば、日付単位や第1週,第2週などの週単位で取得してもよい。また、アクセス回数を1時間刻み以外の時間帯(例えば、2時間、3時間、6時間など)を単位として取得してもよい。
図13は、読み出しアクセス受信時の処理例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS11)アクセス処理部140は、読み出しリクエスト700をサーバ500から受信する。アクセス処理部140は、読み出しリクエスト700に応じて、DE200にデータの読み出しを指示する。アクセス処理部140は、読み出されたデータをDE200から取得すると、取得したデータをサーバ500に応答する。なお、アクセス処理部140は、現在のストリップサイズやストライピングに用いているHDDの数に基づき所定の演算を行うことで、何れのストリップから読み出しを行えばよいかを判断することができる。
(ステップS12)アクセス処理部140は、記憶部130に記憶されたアクセス管理テーブル134において、読み出しリクエスト700で指定された論理ボリューム600(LUN0)に対応する総アクセス回数を更新する。具体的には、LUN0に対応する総アクセス回数に1を加算する。
(ステップS13)アクセス処理部140は、記憶部130に記憶されたアクセス統計テーブル136において、現在の曜日/時間帯に対応するアクセス回数を更新する。具体的には、現在の曜日/時間帯に対応するアクセス回数に1を加算する。
(ステップS14)アクセス処理部140は、読み出しリクエスト700がランダムアクセスであるか否かを判定する。ランダムアクセスである場合、処理をステップS15に進める。ランダムアクセスでない場合(シーケンシャルアクセスである場合)、処理を終了する。アクセス処理部140は、読み出しリクエスト700の1つ前のLUN0に対する読み出しリクエスト(前回の読み出しリクエスト)と、読み出しリクエスト700とを対比することで、読み出しリクエスト700がランダムアクセスであるか否かを判定できる。具体的には、前回のオフセットに対し、前回の読み出しバイト数に相当するLBAを加算した値が読み出しリクエスト700で指定されるオフセットに一致する場合、読み出しリクエスト700はシーケンシャルアクセスである。一方、一致しない場合、読み出しリクエスト700はランダムアクセスである。なお、前回の読み出しバイト数に相当するLBAは、例えば、1セクタのサイズが512Bであれば、前回の読み出しバイト数を512Bで割った商である。
(ステップS15)アクセス処理部140は、読み出しリクエスト700で指定された読み出しバイト数(アクセスサイズということがある)が閾値以下であるか否かを判定する。閾値以下である場合、処理をステップS16に進める。閾値よりも大きい場合、処理を終了する。ここで、ステップS15で用いる閾値は、利用可能ストリップサイズの最大値の1/n(nは1よりも大きな実数)とする。例えば、利用可能ストリップサイズリスト131によれば、利用可能ストリップサイズの最大値は1024KBである。例えば、n=2のとき、ステップS15で用いる閾値は1024KB/2=512KBである。
(ステップS16)アクセス処理部140は、アクセス管理テーブル134において、読み出しリクエスト700で指定された論理ボリューム600に対応するランダムアクセス回数を更新する。具体的には、LUN0に対応するランダムアクセス回数に1を加算する。
(ステップS17)アクセス処理部140は、読み出しリクエスト700で指定された読み出しバイト数と、アクセス管理テーブル134に登録されたLUN0の平均読み出しバイト数と、の値を用いて、当該平均読み出しバイト数を更新する。
(ステップS18)アクセス処理部140は、アクセス管理テーブル134を参照して、読み出しリクエスト700で指定された論理ボリューム600について、ランダムアクセス回数が閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS19に進める。閾値よりも小さい場合、処理を終了する。ここで、ステップS18で用いる閾値は、記憶部130に記憶されたランダムアクセス閾値135(総アクセス回数の80%)である。
(ステップS19)アクセス処理部140は、記憶部130に記憶されたアクセス管理テーブル134において、読み出しリクエスト700で指定された論理ボリューム600をチューニング対象に設定する。具体的には、調整フラグを“false”から“true”に変更する。これにより、論理ボリューム600はストリップサイズの変更対象として登録されたことになる。
このようにして、アクセス処理部140は、サーバ500から読み出しリクエスト700を受信するたびに、ランダムアクセス性を判定し、ストリップサイズの変更の要否を決定する。同期部160は、アクセス管理テーブル134が更新されると更新内容をCM120に提供して、情報の共有を図る。CM110で障害が発生しても、CM120でストリップサイズのチューニングを行えるようにするためである。
ボリューム制御部150は、記憶部130に記憶されたアクセス統計テーブル136に基づいて、チューニング実行時間を決定する。次にそのための手順を説明する。ボリューム制御部150は、例えば、新たにチューニング対象となった論理ボリュームが発生した際に当該論理ボリュームについて以下の手順を実行する。または、所定の周期(例えば、1日、1週間など)でチューニング対象となっている論理ボリュームに対し一括して以下の手順を実行してもよい。
図14は、チューニング実行時間の決定例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
(ステップS21)ボリューム制御部150は、記憶部130に記憶されたアクセス統計テーブル136を参照して、チューニング対象の論理ボリューム600(LUN0)についてアクセス数が最小の曜日・時間帯を取得する。
(ステップS22)ボリューム制御部150は、ステップS21で取得した曜日・時間帯を論理ボリューム600のチューニング実行時間に決定する。例えば、ボリューム制御部150は、論理ボリューム600にチューニング実行時間を対応付けた情報を作成して、記憶部130に格納する。
このようにして、ボリューム制御部150は、論理ボリュームごとにチューニング実行時間を決定する。論理ボリュームに対する負荷が最小の時間帯にチューニングを行うことで、サーバ500から当該論理ボリュームへのアクセスに対するチューニングの処理の影響を軽減することができる。ボリューム制御部150は、論理ボリューム600についてチューニング実行時間になると、次の手順を実行して論理ボリューム600のストリップサイズを変更する。
図15は、チューニングの処理例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(ステップS31)ボリューム制御部150は、論理ボリューム600の容量を取得する。上述したように論理ボリューム600の容量は、例えば67MB程度である。
(ステップS32)ボリューム制御部150は、変更後のストリップサイズを決定する。ここで、図13のステップS15では、比較的小さなランダムアクセスを検出するためのアクセスサイズの閾値を利用可能な最大ストリップサイズの1/nとしている。そこで、ステップS32では、論理ボリューム600についてアクセス管理テーブル134に登録された平均読み出しバイト数のn倍より大きな最小の利用可能ストリップサイズを変更後のストリップサイズとする。例えば、ステップS15において、利用可能な最大ストリップサイズの1/2を閾値に用いている場合、平均読み出しバイト数の2倍より大きな最小の利用可能ストリップサイズとする。より具体的には、アクセス管理テーブル134によれば、論理ボリューム600について、平均読み出しバイト数は78KBである。n=2のとき、78KB×2=156KBであるから、156KBよりも大きな最小の利用可能ストリップサイズである256KBを変更後のストリップサイズと決定する。この場合、変更後のストリップサイズ256KBは、変更前のストリップサイズ128KBよりも大きい。したがって、ストリップサイズを拡大することになる。一方、変更後のストリップサイズが変更前のストリップサイズよりも小さくなることもある。この場合、ストリップサイズを縮小することになる。
(ステップS33)ボリューム制御部150は、ステップS31,S32の結果に基づいて、変更後のストリップの個数を決定する。例えば、論理ボリューム600の容量は、約67MBである。変更後のストリップサイズは256KBである。よって、変更後のストリップの個数は、67MB÷256KB=262個程度である。
(ステップS34)ボリューム制御部150は、論理ボリューム600の現在のストリップの一部(ただし、ステップS35,S36の未処理部分)をメモリ112の作業領域に格納する。
(ステップS35)ボリューム制御部150は、メモリ112に格納されたストリップを分割/結合して、ステップS32で決定されたストリップサイズでストリップを生成する。ステップS33の例では、変更後のストリップサイズ256KBは、変更前のストリップサイズ128KBの2倍である。したがって、現在の2つのストリップを結合して、1つのストリップを作成すればよい。例えば、ストリップ231,241を結合して1つのストリップを生成する。また、ストリップ251,261を結合して1つのストリップを生成する。ボリューム制御部150は、新たなストリップに格納されるデータのLBAのオフセットと、元のストリップに格納されていた同一データのLBAのオフセットとが同一になるようにする。すなわち、ストリップサイズを変更しても、変更前後での論理ボリューム内のデータのオフセットを維持する。更に、現在のストリップの1.5個分や2.5個分などを変更後のストリップとする場合には、3個、5個などのストリップを結合した後に、決定したストリップサイズとなるように分割すればよい。ストリップサイズを縮小する場合には、1つのストリップ(または、複数のストリップを結合したストリップ)を、決定したストリップサイズとなるように分割すればよい。
(ステップS36)ボリューム制御部150は、ステップS35で生成したストリップをHDD230,240,250,260に書き込む。書き込み位置は、HDD230,240,250,260の空いた領域でもよいし、元のストリップが存在していた領域に上書きしてもよい。更に、論理ボリューム600の格納位置を別のRAIDグループに変更してもよい。
(ステップS37)ボリューム制御部150は、論理ボリューム600内の全ストリップについて、ステップS35,S36の処理を完了したか否かを判定する。完了した場合、処理をステップS38に進める。未完了のストリップがある場合、処理をステップS34に進める。
(ステップS38)ボリューム制御部150は、アクセス管理テーブル134において、論理ボリューム600のストリップサイズを256KBに変更する。以後、アクセス処理部140は、論理ボリューム600のアクセス先のストリップを計算する際に用いるストリップサイズとして256KBを使用することになる。更に、ステップS36でLUN0の書き込み位置を別のLBA範囲に変更した場合、論理ボリューム管理テーブル133を更新してLUN0につき新たなLBA範囲を登録する(先頭LBAの変更)。RAIDグループを変更した場合には、当該RAIDグループの変更も反映させる。これにより、チューニング後のLUN0へアクセス可能となる。
(ステップS39)ボリューム制御部150は、アクセス管理テーブル134において、チューニングを行ったLUN0の記録を初期化する。具体的には、総アクセス回数およびランダムアクセス回数を“0”にリセットする。平均読み出しバイト数を“0B”とする。調整フラグを“false”とする。
このようにして、ボリューム制御部150は、論理ボリュームごとにストリップサイズのチューニングを行う。
なお、ステップS32では、平均読み出しバイト数のn倍としたが、その理由は平均読み出しバイト数が小さい程、より大きな定数を乗じてストリップサイズを決定することで、現状のストリップサイズに対するチューニング後のアクセス効率をより向上させるためである。ただし、ステップS32において、チューニングのストリップサイズを平均読み出しバイト数のm倍(mはnと異なる1よりも大きな実数)としてもよい。例えば、ステップS15でn=3を採用して、ステップS32においてm=2を採用してもよい。
次に、チューニングの具体例を説明する。
図16は、チューニングの第1の具体例を示す図である。図16では、ストリップサイズを2倍にする場合を例示している。
ボリューム制御部150は、メモリ112に論理ボリューム600の一部を格納する。例えば、メモリ112には、ストリップ231,241,251,261,232,・・・が格納されている。ボリューム制御部150は、次のように現ストリップを結合して、新たなストリップを生成する。
すなわち、ストリップ231,241を結合して、ストリップ231aを生成する。ストリップ231aの識別子は“SP00a”である。また、ストリップ251,261を結合して、ストリップ241aを生成する。ストリップ241aの識別子は“SP01a”である。ストリップ232,242を結合して、ストリップ251aを生成する。ストリップ251aの識別子は“SP02a”である。ストリップ252,262を結合して、ストリップ261aを生成する。ストリップ261aの識別子は“SP03a”である。このようにして、論理ボリューム600内の連続するストリップを結合または分割して新たなストリップを生成する。
ボリューム制御部150は、生成したストリップをHDD230,240,250,260にLBA順を維持して格納する。HDD230にはストリップ231aを格納する。HDD240にはストリップ241aを格納する。HDD250にはストリップ251aを格納する。HDD260にはストリップ261aを格納する。他のストリップも順番にHDD230,240,250,260に格納する。
そして、ボリューム制御部150は、チューニング前のストリップ231,232,241,242,251,252,261,262,・・・を無効化し、チューニング後のストリップ231a,241a,251a,261a,・・・を有効化する。
このように、ボリューム制御部150は、チューニングの前後で論理ボリュームのサイズを維持するようにストリップの数を決定する。このため、ストリップサイズを拡大することで論理ボリュームのサイズが拡大し、RAIDグループ内の記憶容量を圧迫するような事態を避けられる。
また、ボリューム制御部150は、論理ボリューム600に格納されたデータについて、論理ボリューム600の先頭LBAに対する当該データのオフセットを取得し、当該オフセットを維持するようにチューニング後の論理ボリュームを作成する。このため、論理ボリューム管理テーブル133において、論理ボリューム600(LUN0)の先頭LBAを変更することで、チューニング後の論理ボリュームのLBAを容易に指定できる。すなわち、論理ボリューム600とLBAとの対応関係を更新する処理を簡便に行える。また、サーバ500は、論理ボリューム600におけるストリップサイズの変更を意識せずに、論理ボリューム600に継続してアクセス可能となる。
図17は、チューニングの第2の具体例を示す図である。図17では、ストリップサイズを1/2にする場合を例示している。
ボリューム制御部150は、メモリ112に論理ボリューム600の一部を格納する。例えば、メモリ112には、ストリップ231,232,・・・が格納されている。ボリューム制御部150は、次のように現ストリップを分割して、新たなストリップを生成する。
すなわち、ストリップ231を分割して、ストリップ231b,241bを生成する。ストリップ231bの識別子は“SP00b”である。ストリップ241bの識別子は“SP01b”である。ストリップ241を分割して、ストリップ251b,261bを生成する。ストリップ251bの識別子は“SP02b”である。ストリップ261bの識別子は“SP03b”である。ストリップ251を分割して、ストリップ232b,242bを生成する。ストリップ232bの識別子は“SP04b”である。ストリップ242bの識別子は“SP05b”である。ストリップ261を分割して、ストリップ252b,262bを生成する。ストリップ252bの識別子は“SP06b”である。ストリップ262bの識別子は“SP07b”である。このようにして、論理ボリューム600内の連続するストリップを結合または分割して新たなストリップを生成する。
ボリューム制御部150は、生成したストリップをHDD230,240,250,260にLBA順を維持して格納する。HDD230にはストリップ231b,232bを格納する。HDD240にはストリップ241b,242bを格納する。HDD250にはストリップ251b,252bを格納する。HDD260にはストリップ261b,262bを格納する。他のストリップも順番にHDD230,240,250,260に格納する。
そして、ボリューム制御部150は、チューニング前のストリップ231,241,251,261,・・・を無効化し、チューニング後のストリップ231b,232b,241b,242b,251b,252b,261b,262b,・・・を有効化する。
このように、ボリューム制御部150は、ストリップサイズがランダムアクセスされるデータのサイズに比べて十分に大きいと判断できる場合に、ストリップサイズを縮小する。これにより、1つのHDDにアクセスが集中するのを抑えられる。特に、論理ボリューム600の用途やアクセスの特性(ランダムアクセスされるデータのサイズ)は、時間の経過とともに変化し得る。すなわち、ストリップサイズをチューニングして大きくしたとしても、そのストリップサイズが恒常的に適切であるとは限らない。
この点、CE100によれば、論理ボリュームごとのストリップサイズを、当該論理ボリュームに対するランダムアクセスのアクセス特性に応じて、効率的にチューニングすることが可能となる。また、ランダムアクセスによるアクセス性能の向上を図ることができる。更に、論理領域ごとにストリップサイズをチューニングする作業の省力化を図れる。
なお、上記の例では、ランダムアクセスのアクセス特性を判断するために、読み出しリクエストのみを用いたが、読み出しリクエストに代えて、または、読み出しリクエストと併せて、書き込みリクエストを用いてもよい。
ところで、上記の例では、複数のストリップを束ねて1つの論理ボリュームを作成し、当該論理ボリュームに対してサーバ500がアクセスする場合を説明した。これは言い換えると、ストリップは物理的な記憶域であるため、サーバ500と物理的な記憶域との間に論理ボリュームが一層設けられている場合である。一方、ストレージシステムにおいて実現する種々の機能に応じて、論理ボリュームが複数階層設けられることがある。
図18は、論理ボリュームの他の例を示す図である。図18では、RAIDグループ#10が例示されている。RAIDグループ#10にはHDD270,280,290が属している。
HDD270はストリップ271を有する。ストリップ271の識別子は“SP10”である。HDD280はストリップ281を有する。ストリップ281の識別子は“SP11”である。HDD290はストリップ291を有する。ストリップ291の識別子は“SP12”である。
ここで、図18では、論理ボリュームを2階層設ける場合を例示している。例えば、サーバ500は、OLU(Open Logical Unit)800にアクセスする。OLU800は、1つ目の階層の論理ボリュームである。OLU800には、SLU(Shared Logical Unit)810,820,830が割り当てられている。
SLU810,820,830は、2つ目の階層の論理ボリュームである。SLU810には、ストリップ271,281,291が割り当てられている。SLU820,830にも同様にして、何れかのRAIDグループからストリップが割り当てられている(図示を省略している)。
このように、ストリップを複数束ねて第1層の論理ボリューム(SLU)を作成し、当該第1層の論理ボリューム(SLU)を複数束ねて第2層の論理ボリューム(OLU)を作成する。この場合、CE100は、RAIDグループとSLU、SLUとOLUの対応関係を管理する。サーバ500は、OLU800を指定して書き込みや読み出しのリクエストをCE100に送信する。CE100は、各層を辿って各HDDへアクセスする。
論理ボリュームをこのように管理する場合にも、上記と同様にストリップサイズの変更を行える。この場合、CE100は、SLU810,820,830について、アクセス管理テーブル134に相当する情報を作成すればよい。このようにすれば、SLU単位でランダムアクセスの特性に応じたチューニングを行うことができる。すなわち、論理ボリュームを複数階層設ける場合にも、最下層(ストリップを束ねた階層)における論理ボリュームごとのストリップサイズを、当該論理ボリュームに対するランダムアクセスのアクセス特性に応じて、効率的にチューニングすることが可能となる。
1 ストレージ制御装置
1a 取得手段
1b 記憶手段
1c 制御手段
2 情報処理装置
3,4,5,6 記憶装置
A1,A1a,A2,A2a,A3,A3a,A4,A4a,A5,A5a ランダムアクセス
B1,B2 論理領域
B11,B12,B13,B14,B21,B22 記憶域

Claims (9)

  1. 複数の記憶装置それぞれから所定サイズの記憶域が割り当てられた論理領域に対する情報処理装置からのアクセスの制御に用いられるストレージ制御装置であって、
    前記情報処理装置からのアクセスの内容に基づいて、第1の論理領域に対するランダムアクセスの回数を示す情報および前記ランダムアクセスの対象となったデータのサイズを示す情報を取得して記憶手段に格納する取得手段と、
    前記記憶手段を参照して、前記第1の論理領域への総アクセス回数に対する前記ランダムアクセスの回数の割合が閾値以上になると、前記ランダムアクセスの対象となったデータのサイズを示す情報に基づいて第2の論理領域に割り当てる記憶域のサイズを決定し、複数の記憶装置を用いて前記第2の論理領域を作成し、前記第1の論理領域へアクセスする代わりに前記第2の論理領域へアクセスするように前記情報処理装置からのアクセスを制御する制御手段と、
    を有するストレージ制御装置。
  2. 前記ランダムアクセスの対象となったデータのサイズを示す情報は、各ランダムアクセスの対象となったデータのサイズの平均値であり、
    前記制御手段は、前記平均値よりも大きな値を前記第2の論理領域に割り当てる記憶域のサイズと決定する、
    請求項1記載のストレージ制御装置。
  3. 適用可能な記憶域のサイズとして、複数のサイズが予め決まっており、
    前記取得手段は、前記複数のサイズのうち、最大サイズのn(nは1より大きな実数)分の1よりも小さいサイズのデータに対するランダムアクセスについて、前記ランダムアクセスの回数を示す情報および前記ランダムアクセスの対象となったデータのサイズを示す情報を取得し、
    前記制御手段は、前記複数のサイズのうち前記平均値のn倍よりも大きな最小のサイズを前記第2の論理領域に割り当てる記憶域のサイズと決定する、
    請求項2記載のストレージ制御装置。
  4. 前記制御手段は、前記第1の論理領域のサイズと前記第2の論理領域のサイズとが同じサイズになるように前記第2の論理領域に割り当てる記憶域の個数を決定する、請求項1乃至3の何れか一項に記載のストレージ制御装置。
  5. 前記制御手段は、前記第1の論理領域に格納されたデータについて、前記第1の論理領域内の先頭位置に対する前記第1の論理領域内での当該データの相対的な位置関係を示す論理アドレスを取得し、当該論理アドレスに基づいて前記第2の論理領域に当該データを格納する、請求項1乃至4の何れか一項に記載のストレージ制御装置。
  6. 前記制御手段は、前記情報処理装置からのアクセスで指定される論理領域の識別子と前記第1の論理領域との対応関係に代えて前記論理領域の識別子と前記第2の論理領域との対応関係を示す情報を作成し、新たに作成した対応関係に基づいてアクセス先を決定することで、前記情報処理装置からのアクセスを制御する、請求項1乃至5の何れか一項に記載のストレージ制御装置。
  7. 複数の記憶装置を備えており複数の記憶装置それぞれの記憶域が割り当てられた論理領域に対する情報処理装置からのアクセスを制御するストレージシステムであって、
    前記情報処理装置からのアクセスの内容に基づいて、第1の論理領域に対するランダムアクセスの回数を示す情報および前記ランダムアクセスの対象となったデータのサイズを示す情報を取得し、前記第1の論理領域への総アクセス回数に対する前記ランダムアクセスの回数の割合が閾値以上になると、前記ランダムアクセスの対象となったデータのサイズを示す情報に基づいて第2の論理領域に割り当てる記憶域のサイズを決定し、複数の記憶装置を用いて前記第2の論理領域を作成し、前記第1の論理領域へアクセスする代わりに前記第2の論理領域へアクセスするように前記情報処理装置からのアクセスを制御するストレージ制御装置、
    を有するストレージシステム。
  8. 複数の記憶装置それぞれから所定サイズの記憶域が割り当てられた論理領域に対する情報処理装置からのアクセスの制御に用いられるストレージ制御装置であって、
    前記情報処理装置からのアクセスの内容に基づいて、第1の論理領域に対するランダムアクセスの頻度を示す情報および前記ランダムアクセスの対象となったデータのサイズを示す情報を取得して記憶手段に格納する取得手段と、
    前記記憶手段を参照して、前記ランダムアクセスの頻度が閾値以上になると、前記ランダムアクセスの対象となったデータのサイズを示す情報に基づいて第2の論理領域に割り当てる記憶域のサイズを決定し、複数の記憶装置を用いて前記第2の論理領域を作成し、前記第1の論理領域へアクセスする代わりに前記第2の論理領域へアクセスするように前記情報処理装置からのアクセスを制御する制御手段と、を有し、
    前記ランダムアクセスの対象となったデータのサイズを示す情報は、各ランダムアクセスの対象となったデータのサイズの平均値であり、
    前記制御手段は、前記平均値よりも大きな値を前記第2の論理領域に割り当てる記憶域のサイズと決定する、
    ストレージ制御装置。
  9. 複数の記憶装置を備えており複数の記憶装置それぞれの記憶域が割り当てられた論理領域に対する情報処理装置からのアクセスを制御するストレージシステムであって、
    前記情報処理装置からのアクセスの内容に基づいて、第1の論理領域に対するランダムアクセスの頻度を示す情報および前記ランダムアクセスの対象となったデータのサイズを示す情報を取得し、前記ランダムアクセスの頻度が閾値以上になると、前記ランダムアクセスの対象となったデータのサイズを示す情報に基づいて第2の論理領域に割り当てる記憶域のサイズを決定し、複数の記憶装置を用いて前記第2の論理領域を作成し、前記第1の論理領域へアクセスする代わりに前記第2の論理領域へアクセスするように前記情報処理装置からのアクセスを制御するストレージ制御装置を有し、
    前記ランダムアクセスの対象となったデータのサイズを示す情報は、各ランダムアクセスの対象となったデータのサイズの平均値であり、
    前記ストレージ制御装置は、前記平均値よりも大きな値を前記第2の論理領域に割り当てる記憶域のサイズと決定する、
    ストレージシステム。
JP2012080650A 2012-03-30 2012-03-30 ストレージ制御装置、およびストレージシステム Active JP5884602B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012080650A JP5884602B2 (ja) 2012-03-30 2012-03-30 ストレージ制御装置、およびストレージシステム
EP13158344.5A EP2645225A1 (en) 2012-03-30 2013-03-08 Storage control apparatus, storage system, and storage control method
US13/803,501 US9507703B2 (en) 2012-03-30 2013-03-14 Storage control apparatus, storage system, and storage control method to adjust RAID system strip size

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012080650A JP5884602B2 (ja) 2012-03-30 2012-03-30 ストレージ制御装置、およびストレージシステム

Publications (2)

Publication Number Publication Date
JP2013210846A JP2013210846A (ja) 2013-10-10
JP5884602B2 true JP5884602B2 (ja) 2016-03-15

Family

ID=47845785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012080650A Active JP5884602B2 (ja) 2012-03-30 2012-03-30 ストレージ制御装置、およびストレージシステム

Country Status (3)

Country Link
US (1) US9507703B2 (ja)
EP (1) EP2645225A1 (ja)
JP (1) JP5884602B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2517195A (en) * 2013-08-15 2015-02-18 Ibm Computer system productivity monitoring
KR102310117B1 (ko) * 2017-07-07 2021-10-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP7030463B2 (ja) * 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US10768844B2 (en) 2018-05-15 2020-09-08 International Business Machines Corporation Internal striping inside a single device
CN108958656B (zh) * 2018-06-27 2021-01-08 北京计算机技术及应用研究所 基于raid5固态硬盘阵列的动态条带系统设计方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4252102B2 (ja) * 1993-06-21 2009-04-08 株式会社日立製作所 計算機システムおよび二次記憶装置
JPH08129461A (ja) 1994-11-01 1996-05-21 Hitachi Ltd 補助記憶装置
JPH10143328A (ja) * 1996-11-14 1998-05-29 Toshiba Corp 記憶装置制御方式
JP3616487B2 (ja) * 1997-11-21 2005-02-02 アルプス電気株式会社 ディスクアレイ装置
US6347359B1 (en) * 1998-02-27 2002-02-12 Aiwa Raid Technology, Inc. Method for reconfiguration of RAID data storage systems
JP2002182860A (ja) * 2000-12-18 2002-06-28 Pfu Ltd ディスクアレイ装置
JP3592640B2 (ja) * 2001-01-09 2004-11-24 株式会社東芝 ディスク制御システムおよびディスク制御方法
JP2006134021A (ja) 2004-11-05 2006-05-25 Hitachi Ltd ストレージシステム及びストレージシステムの構成管理方法
US7437507B2 (en) * 2005-06-06 2008-10-14 Cisco Technology, Inc. Online restriping technique for distributed network based virtualization
US7296135B2 (en) * 2005-10-05 2007-11-13 Hewlett-Packard Development Company, L.P. Data misalignment detection and correction in a computer system utilizing a mass storage subsystem
US8019790B2 (en) * 2006-07-11 2011-09-13 Dell Products, Lp System and method of dynamically changing file representations
JP5094193B2 (ja) 2007-04-16 2012-12-12 株式会社日立製作所 記憶システム及びその制御方法
CN100530138C (zh) 2007-06-28 2009-08-19 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的自适应控制方法
CN100547566C (zh) * 2007-06-28 2009-10-07 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法

Also Published As

Publication number Publication date
JP2013210846A (ja) 2013-10-10
US9507703B2 (en) 2016-11-29
EP2645225A1 (en) 2013-10-02
US20130262813A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
JP7089830B2 (ja) 不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法
US8788755B2 (en) Mass data storage system and method of operating thereof
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
CN110268391B (zh) 用于缓存数据的系统和方法
US9703717B2 (en) Computer system and control method
US8321646B2 (en) Method and apparatus for rebalancing storage components within a storage tier
US9804966B1 (en) Methods and apparatus for content-based storage addressing with data prioritization
US20110072225A1 (en) Application and tier configuration management in dynamic page reallocation storage system
US20140122796A1 (en) Systems and methods for tracking a sequential data stream stored in non-sequential storage blocks
US11169927B2 (en) Efficient cache management
WO2013134345A1 (en) Hybrid storage aggregate block tracking
US11402998B2 (en) Re-placing data within a mapped-RAID environment comprising slices, storage stripes, RAID extents, device extents and storage devices
CN111587423A (zh) 分布式存储系统的分层数据策略
JP5884602B2 (ja) ストレージ制御装置、およびストレージシステム
US10853252B2 (en) Performance of read operations by coordinating read cache management and auto-tiering
US10176103B1 (en) Systems, devices and methods using a solid state device as a caching medium with a cache replacement algorithm
US20120011319A1 (en) Mass storage system and method of operating thereof
US8949528B2 (en) Writing of data of a first block size in a raid array that stores and mirrors data in a second block size
US9189407B2 (en) Pre-fetching in a storage system
US10606754B2 (en) Loading a pre-fetch cache using a logical volume mapping
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US11182077B1 (en) Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US10929032B1 (en) Host hinting for smart disk allocation to improve sequential access performance
US11687278B2 (en) Data storage system with recently freed page reference state
US9898208B2 (en) Storage system with hybrid logical volumes utilizing in-band hinting

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160125

R150 Certificate of patent or registration of utility model

Ref document number: 5884602

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150