JP2016119110A - ストレージシステム及びリソース割当て方法 - Google Patents

ストレージシステム及びリソース割当て方法 Download PDF

Info

Publication number
JP2016119110A
JP2016119110A JP2016008615A JP2016008615A JP2016119110A JP 2016119110 A JP2016119110 A JP 2016119110A JP 2016008615 A JP2016008615 A JP 2016008615A JP 2016008615 A JP2016008615 A JP 2016008615A JP 2016119110 A JP2016119110 A JP 2016119110A
Authority
JP
Japan
Prior art keywords
block storage
hypervisor
resource
management table
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016008615A
Other languages
English (en)
Other versions
JP5937772B1 (ja
Inventor
里山 愛
Ai Satoyama
愛 里山
江口 賢哲
Kentetsu Eguchi
賢哲 江口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2016008615A priority Critical patent/JP5937772B1/ja
Application granted granted Critical
Publication of JP5937772B1 publication Critical patent/JP5937772B1/ja
Publication of JP2016119110A publication Critical patent/JP2016119110A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】従来のユニファイドストレージシステムでは、ブロックストレージ用のI/Oおよびファイルストレージ用のI/OをシングルOS上で区別せずに処理するため、迅速な障害検出やハードウェアの直接監視を通した性能チューニングのような性能向上のために行う処理を実施できない面があった。【解決手段】ブロックストレージ側OSとブロックストレージ以外のファイルシステムを含む複数システムを管理するOS群とに分けて共存させ、ブロックストレージ以外のファイルシステムを含む複数システムを管理するOS群はハイパバイザによって仮想化されるように構成したストレージシステムにより、ブロックストレージマイクロ制御とハイパバイザの処理を協調して動作させる。【選択図】図1

Description

本発明は、ストレージシステム及びリソース割当て方法に関するものである。
従来から、ホスト計算機に対して大規模なデータストレージサービスを提供する計算機システムが存在する。このシステムは、ホスト計算機、ホスト計算機が接続するストレージ装置及びストレージ装置の管理装置を備えたものとして知られている。
ストレージ装置は、複数のハードディスクをRAID(Redundant Array of Independent/Inexpensive Disks)方式で管理する。そして、多数のハードディスクが有する物理的な記憶領域を論理化し、これを論理ボリュームとしてホスト計算機に提供する。ホスト計算機は論理ボリュームにアクセスしてデータのリード・ライトを要求する。
近年のトレンドとして、ストレージ装置の省スペース化、運用管理コスト低減(メンテナンスの容易化)、CPUなどのリソースの有効活用が課題となっている。これらを受けて、FC(Fibre channel;ファイバー・チャネル)、iSCSI、FCoE(Fibre Channel over Ethernet)、NAS(Network Attached Storage)など複数のプロトコルに対して1台で対応する一体型ストレージ装置、すなわち、ユニファイドストレージ装置に注目が集まっている。一体型にすることで要素が直結する構成となり、開発コストを抑えることができ、かつ、性能も確保できるメリットがある。
また、ネットワークに接続されファイルアクセスを受け付けるストレージ装置(例えば、NAS)が有するハードウェアリソースを、論理的に分割して個々の論理区画(仮想的な記憶装置)を独立して動作させる技術も知られている(特許文献1)
特開2005−128733号公報 (米国特許公開2005−091454)
従来の一体型ストレージ装置では、ブロックストレージ用のI/Oもファイルストレージ用のI/OもシングルOS上で区別せずに処理している。このため、従来のブロックストレージ装置は、性能向上のために行う処理を実施できない。例えば、ブロックストレージ装置では、リアルタイムOSによって障害を直ぐ検出することで高信頼性を実現したり、ハードウェアの動作を直接監視して性能チューニングを行っているが、シングルOSではそのような処理ができない。
そこで、ブロックストレージ装置の高性能なメリットを活かすストレージシステム及びそのリソース割当て方法を提供することを課題とする。
ブロックストレージ用のOSと、このブロックストレージ用のOS以外のファイルシステム用のOSなどの複数のOSを用いたサービスを行うユニファイドストレージシステムを提供する。すなわち、ブロックストレージ用のOSによりブロックインターフェースによるサービスを提供するシステムであり、また、ファイルシステム用のOSなど(例えば、検索システムやWindowsなど)によりファイルインターフェースによるサービスを提供するシステムである。リアルタイムOSであるブロックストレージ用のOSとファイルシステム用のOSとに分けることが課題解決に向けたポイントである。
そして、複数のOSが1つの筐体内に共存するシステムであるため、複数OSが協調して動作できるストレージ装置を提供する。
また、ハイエンドストレージ装置の高機能を活かしたユニファイドストレージシステムを実現するために、ハイエンドストレージ装置が動作するために必要な分のCPUやメモリなどを割り当てる必要がある。そこで、ハイエンドストレージ装置側の性能を発揮できるようなハードウェアリソース定義(割当て)の仕方を提供する。
本発明では、複数OSを共存する構成を提供する。まず、ブロックストレージマイクロ側制御マイクロ(ブロックストレージ側OS)とブロックストレージ以外のOSとに分け、ブロックストレージ以外のOSはハイパバイザ上に構成する。ハイパバイザは、複数の異なるOSを並列に実行する仮想環境を実現することを可能にするソフトウェアである。
ブロックストレージマイクロ制御とハイパバイザの処理を協調して動作させる。
データを格納するストレージ装置はハイエンドストレージ装置を構成し、ブロックストレージマイクロ制御が処理を行う。
本発明によるハードウェアリソース定義を行うことによって、リソースを無駄にすることなく、さらに、それぞれの処理の効率や性能を落とすことなく運用できる。
ブロックストレージマイクロの制御に先にリソースを割り当てるため、ブロックストレージマイクロ制御側の性能を確保できる。これは即ち装置全体の性能を確保することとなる。ブロックストレージマイクロ制御側の処理及び機能の能力を有効に活用できる。
図1は、ユニファイドストレージシステムにおいて、ハードウェアリソースを確保する方法の概念図である。 図2は、別のリソース確保方法の概念図である。 図3は、ストレージシステムのハードウェアの全体構成図の一例である。 図4Aは、ユニファイドストレージシステムに第2のストレージ装置を接続した例である。 図4Bは、ユニファイドストレージシステムがSANを介して第3のストレージ装置を接続した例である。 図5は、ストレージシステムの動作を説明するための、ハードウェアとソフトウェアのイメージ図である。 図6は、ブロックストレージ側へのI/O処理の流れの概要図である。 図7は、ブロックストレージ以外のI/O処理としてFOSがI/Oを受けたときの処理の流れの概要図である。 図8Aは、ハードウェアリソース管理テーブルの一例で、ブロックストレージマイクロ制御が持つハードウェアリソース管理情報である。 図8Bは、ハードウェアリソース管理テーブルの一例で、ハイパバイザが持つハードウェアリソース管理情報である。 図8Cは、ハードウェアリソース管理テーブルの一例で、ブロックストレージ以外の個々のOSが持つハードウェアリソース管理情報である。 図9は、ディレクトリデバイス情報テーブルの一例である。 図10は、ブロックストレージマイクロ制御側へのコマンド共有を説明するための図である。 図11Aは、ハードウェアリソースをブロックストレージ装置側に割り当てる処理手順である。 図11Bは、ハードウェアリソースをブロックストレージ以外のOSに割り当てる処理手順である。 図11Cは、ハードウェアリソースを割り当てるための別の処理手順である。 図12は、リソースが追加された場合の構成定義手順である。 図13は、ブロックストレージのハードウェアリソースをブロックストレージ以外に動的に割り当てなおす処理を示すフローチャートである。 図14は、ブロックストレージ以外が使用しているハードウェアリソースをブロックストレージ側へ動的に割り当てなおす処理を示すフローチャートである。 図15は、ブロックストレージ側へのライト処理に係るフローチャートである。 図16は、ブロックストレージ側へのリード処理に係るフローチャートである。 図17は、ストレージ装置内に備えた障害プログラムの存在箇所を示した図である。 図18は、別の実施例に係るストレージシステムのハードウェアの全体構成図である。 図19は、FOS側のライト処理に係るフローチャートである。 図20は、FOS側のリード処理に係るフローチャートである。 図21は、ブロックストレージ側占有ハードウェアで発生した障害に関する図である。 図22は、ブロックストレージ側以外の共有ハードウェアで発生した障害に関する図である。 図23は、障害監視に係る情報を格納している情報管理テーブルを示した図である。
以下、図面を参照しながら本発明の実施の形態を説明する。ただし、本実施形態は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
なお、以後の説明では「テーブル」という表現にて本発明の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくてもよい。例えば、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために、「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
以後の説明では、「プログラム」を主語として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては、専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムは、プログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
図1は、ユニファイドストレージシステムにおいて、ブロックストレージマイクロ制御側とブロックストレージマイクロ制御以外の制御側でハードウェアリソースを確保する方法の概念図である。ユニファイドストレージシステム内には複数のOSが共存している。ユニファイドストレージシステムに接続される全ハードウェアの「一部のハードウェア」を「優先」して、特定のOSへ割り当てる。この例では、特定のOSはブロックストレージマイクロ制御部である。ブロックストレージマイクロ制御部で割り当てられなかった残りのハードウェアを、ブロックストレージマイクロ制御部以外のOSへ割り当てる。
図1では、ブロックストレージマイクロ制御部以外のOSは複数あり、これら複数OSを仮想化するソフトウェアとして、ハイパバイザによってハードウェアリソースの分配が行われる。この例では、論理分割技術である、LPAR(Logical PARtitioning:論理分割)を使用して割り当てている。ハイパバイザは、割り当て可能なハードウェアリソースを対象となるOSに同時に割り当てる。
ハードウェアリソースには、例えば、制御プロセッサ(CPU)、ポート、障害監視用のハード、メモリ、記憶装置であるハードディクスなどのディスクがある。
従来、ストレージ装置にハードウェアリソースを割り当てる際は、認識するハードウェアのうち、確保する(以下では、使用するという場合もある)ものをストレージ装置が定義して登録すると、使用可能な状態となる。ストレージ装置が確保しない残りのリソースは、誰にも使用されていない「空き」状態として認識される。「空き」状態のリソースは、使用中のハードウェア要素に障害が発生した場合に代わりに使用したり、性能や容量が不足した場合の増設用として使用できる。
しかし、本発明のストレージシステムにおいては、ブロックストレージマイクロ制御が確保しなかったリソースは、ブロックストレージ装置のリソースではなくなり、また「空き」リソースではないため、後からブロックストレージマイクロ制御が使用することは原則できない。従来の装置構成では、このようなリソースの状態は発生せず、リソースはストレージ装置によって「空き」状態として認識させることはできなかった。
図2は、別のリソース確保方法の概念図である。複数OSが共存するユニファイドストレージシステムの構成であり、例えば、OS1は1つで、OS2は1つ以上からなる。
説明では、ブロックインターフェースによってサービスを提供するものの例として、ブロックストレージマイクロ制御示し、ファイルインターフェースによってサービスを提供するものの例として、ファイルシステム、検索システム、広くはWindowsなどを示す。ファイルインターフェースによってサービスを提供するものは、仮想化プログラム即ちハイパバイザ上で動作するものを示す。
図3は、ストレージシステムのハードウェアの全体構成図の一例である。
クライアント機器である101A、101B、少なくとも1つの管理装置(管理計算機)20、および、これらが接続される少なくとも1つのストレージ装置30を有している。なお、ストレージ装置30は、ストレージシステム、ストレージサブシステム、あるいはユニファイドストレージシステムと言うこともできる。
クライアント機器101Aおよび101Bは、ストレージ装置30を利用する外部計算機である。クライアント機器101Bは、ストレージ装置30に対して、ファイルの書き込み、読み出し、生成を要求するファイルクライアント機器である。クライアント機器101Aは、ストレージ装置30の論理的な記憶資源にアクセスするブロッククライアント機器である。実際の機器としてはPCなどである。
また、クライアント機器101A及び101Bは、入力デバイス、出力デバイス、CPU、メモリ、ホストアダプタまたはネットワークアダプタを備える。このホストアダプタやネットワークアダプタは、ストレージ装置30とネットワーク106、107を介してデータを送受信する。
クライアント機器101Aは、ブロックインターフェースであるFC(Fibre Channel)やiSCSIを持つサーバ機器である場合もある。クライアント機器101Bは、ファイルインターフェースであるNFSやCIFSを持つ機器である場合もある。
管理装置20は、ストレージ装置30の記憶領域の構成を管理する。この管理装置20は以下の要素から構成される。
入力デバイス210は、管理装置20を操作する管理者等からの入力を受け付け、例えばキーボード等で構成される。出力デバイス220は、管理装置20の状態や設定項目を表示し、例えば、ディスプレイ装置等で構成される。
CPU230は、ディスクドライブ260に格納されている管理プログラムをメモリ240に読み込んで、そのプログラムに基づいて、ストレージ装置30に対する管理処理を実行する。メモリ240は、例えばRAM等で構成され、プログラムやデータ等を格納する。
ネットワークアダプタ250は、クライアント機器101A及び101B又はストレージ装置30と、管理ネットワーク108を介してデータを送受信する。管理ネットワーク108は、例えばEthernet(登録商標)で構成される。ディスクドライブ260は、例えばハードディスク装置で構成され、データやプログラムを格納する。
ストレージ装置30は、物理デバイス34に設定された記憶領域にデータを格納する。
ストレージ装置30は、その内部に、少なくとも1つの制御プロセッサ、メモリ、物理デバイス34を有し、より具体的には、制御プロセッサである中央処理装置(CPU: Central Processing Unit)31、メモリ32、ディスクインターフェース33、FCインターフェースであるHBA(Host Bus adaptor)35(HBAターゲットであり、ホストアダプタとも言う)、LANインターフェースであるNIC(Network Card)36を備えている。
CPU31、メモリ32、HBA35、NIC36およびディスクインターフェース33は、相互にバス37を介して接続されている。バスは例えば、PCI−EXであり、または、スイッチで構成されていてもよい。
CPU31は、メモリ32に格納されている各種プログラム、モジュールを実行する演算処理装置である。このCPU(制御プロセッサ)31は、物理デバイス34に構成された記憶領域へのデータの格納を制御する。
メモリ32は、いわゆる内部記憶装置であり、CPU(制御プロセッサ)31で動作するプログラムや構成情報等を格納する不揮発性メモリおよび演算処理結果を一時的に格納する揮発性メモリの双方を含む。メモリ32内の不揮発性メモリは、ハードディスクやフラッシュメモリで構成される。メモリ32内のキャッシュメモリ部分は、物理デバイス34に読み書きされるデータを一時的に格納する。共有メモリ部分は、ストレージ装置30や物理デバイス34の構成情報を格納する。
ディスクインターフェース33は、物理デバイス34とメモリ32等との間でデータを送受信する。
物理デバイス34は、複数のディスク装置によって構成される。ディスク装置(記憶デバイス)は、例えばハードディスクドライブで構成され、主としてユーザデータを格納する。記憶デバイスとしては、フラッシュメモリなどの半導体メモリからなるドライブでもよい。
HBA35は、ネットワーク106に接続されており、データ転送に適したプロトコルによって、ブロッククライアント機器101A(またはホスト計算機)との間でコマンド、データの授受を実行する。ネットワーク106は、例えばFC(Fibre Channel)、イーサネットなどである。
NIC36は、ネットワーク107に接続されており、NFS、CIFSなどのプロトコルによって、ファイルクライアント機器101Bとの間でコマンド、データの授受を実行する。ネットワーク107は例えばLANなどイーサネットである。
1つのHBA及びNICに対して複数ポートが設けられている。
クライアント機器101A及び101Bは、管理ネットワーク108を介して管理装置20との間でシステム管理上必要なデータ(管理情報)を送受信する。
ストレージ装置30は、保守管理インターフェース39を備える。バス37とは異なるネットワーク38を介して、制御プロセッサ31と接続している。ネットワークの種類は例えばLANである。ストレージ装置30内のCPU以外の部位において、障害が起こった場合、CPU31経由で障害情報を管理装置20へ報告することができる。
プログラムは、メモリ32の他、物理デバイス34に格納されていてもよい。
図18に、別の実施例に係るストレージシステムのハードウェアの全体構成図を示す。
別の実施例では、ストレージ装置30内に、コントローラボード41を2枚搭載している。コントローラボード41A内に搭載された制御プロセッサ31Aは、コントローラボード41B内に搭載された制御プロセッサ31Bとライン42により接続されている。ライン42は、例えば、専用線のバスやスイッチなどの接続機構である。例えば、このライン42を介して制御プロセッサ31Aから制御プロセッサ31Bを経て相手方メモリ32Bをアクセスすることを可能とする。
クラスタ50は、コントローラボード41、ホスト側インターフェースであるHBA35、NIC36、ディスクインターフェース33、保守管理インターフェースであるNIC39を含む。
クラスタ50Aのブロックストレージマイクロ制御以外のハイパバイザ上で動作させるOSとクラスタ50Bのブロックストレージマイクロ制御以外のハイパバイザ上で動作させるOSでは通常のクラスタサーバ構成を組む。例えば、ファイルシステムを使用するOSであるFOSの場合、クラスタ50AのあるFOSとクラスタ50BのあるFOSで予めクラスタ構成を組み、正クラスタ50A内のFOSと副クラスタ50B内のFOSが例えば、ハートビートなどの手段によって、一定期間単位に常に相手が正常に稼働していることを確認する。正クラスタ50A側のファイルシステムに障害が発生したことを副クラスタ50B側のFOSが検知した場合、クラスタ50AのFOSが障害をクラスタ50Bが判断して、クラスタ50BのFOSがクラスタ50AのFOSの処理を肩代わりして稼働し続けるフェイルオーバ処理を実現する。このような構成をとることでシステム全体の信頼性を向上している。
ブロックストレージマイクロ制御314は、クラスタ50Aとクラスタ50Bにまたがり1つの共通した制御として動作する。即ち、1つの制御情報を参照してクラスタ50Aのプロセッサとクラスタ50Bのプロセッサが動作する。
さらなるバリーションとして、ライン42は、制御プロセッサ31Aと制御プロセッサ31B上のブロックストレージマイクロ制御314同士でのみ通信が可能であり、ブロックストレージマイクロ制御314Aが使用するメモリ31Aとブロックストレージマイクロ制御314Bが使用するメモリ32Bはブロックストレージマイクロ制御314Aとブロックストレージマイクロ制御314Bの間で共有され、メモリ31Aとメモリ31Bの内容は同じであってもよい。
図4は、ユニファイドストレージシステム全体構成のバリエーション例を示す。例えば、ユニファイドストレージシステムに外部ストレージシステムを接続してもよい(図4A)。
ユニファイドストレージシステム30Aは、外部接続機能を備える。第2のストレージ装置30Bは、この機能によってユニファイドストレージシステム30Aに外部接続されている。外部接続機能は、特許第4704659号明細書に記載がある。
ここで、外部接続機能について説明する。第2のストレージ装置30Bは、ユニファイドストレージシステム30Aと同じ機種でも異なる機種でもよい。また、ユニファイドストレージシステム30Aは、図3に示すストレージ装置30に対応する。
既に説明したように、ユニファイドストレージシステム30Aは、1つ又は複数の論理ボリュームをサーバに提供する。各論理ボリュームは、サーバによって1つの記憶デバイスと認識される。例えば、ユニファイドストレージシステム30Aが提供する論理ボリュームが、ユニファイドストレージシステム30A内の物理デバイス34(または物理デバイス34から作成される仮想デバイス)に対応付けられる。その場合、ユニファイドストレージシステム30Aは、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられた物理デバイス34にデータを格納する。
あるいは、ユニファイドストレージシステム30Aが提供する論理ボリュームは、第2のストレージ装置30B内の物理デバイス34Bに対応付けられてもよい。この場合、ユニファイドストレージシステム30Aは、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられた物理デバイス34Bにデータを書き込むためのライトコマンドを生成する。ユニファイドストレージシステム30Aは、生成したライトコマンドを第2のストレージ装置30Bに送信する。第2のストレージ装置30Bは、ユニファイドストレージシステム30Aから受信したライトコマンドに従って、データを物理デバイス34Bに格納する。
このように、ユニファイドストレージシステム30Aが提供する論理ボリュームに格納されるデータを、実際にはユニファイドストレージシステム30Aの外部に接続された第2のストレージ装置30Bに格納する機能が、外部接続機能と呼ばれるものである。
また、ユニファイドストレージシステム30Aは、例えばSANなどの外部のネットワークに接続されていてもよい。図4Bは、ユニファイドストレージシステム30Aは、SANを介して第3のストレージ装置30Cを外部接続している例である。
図5に、ストレージシステムの動作を説明するために、ハードウェアとソフトウェアのイメージ図を示す。簡略化するために、図3のハードウェア構成のうち、説明に必要な部分のみを記載した。
各OS及びブロックストレージマイクロ制御部は、制御プロセッサであるCPUのコア上で動作する。実際には、OSはプログラムであるためメモリ上に置かれ、CPUがそれを読み込んで動作するが、説明上、コアの上に各OSを記載している。CPU1枚のパッケージにコアは通常複数個あり、障害などに対応するための冗長性をもたせるため、パッケージは2枚単位で増減する。つまり、最小構成におけるパッケージ数は2枚である。プロセッサコアの使い方として、同じパッケージに同種類のOSを集中させても、物理的なパッケージに分割できるように分散してもよい。性能や可用性のうち、何を優先するかで設計できる。
ハイパバイザもソフトウェアであるため、メモリ上に格納されている。ハイパバイザは各OSでそれぞれ動作するため、コアに対応するものではなく、図5のように、ブロックストレージマイクロ制御以外のOSを搭載する。図5では、ある制御プロセッサ31、すなわちパッケージに複数のコアがあり、FOS311A、検索システム312、Windows315およびブロックストレージマイクロ制御314A、314Bがコア毎に載っている。
ハイパバイザ313は、FOS311A、検索システム312およびWindows315それぞれに組み込まれている。ハイパバイザ313上で、FOS311Aと検索システム312およびWindows315を動作させる。他の制御プロセッサに、別のFOS311Bや他のシステム313が載っている場合もある。その場合は、ハイパバイザ313上でFOS311Bや他のシステムOS313を動作させてもよいし、他のハイパバイザ313Bでもよい。ここで、FOSとは、ファイルシステムを使用するOSのことを指すものである。
または、ハイパバイザを特定のコア上で動作させてもよい。
メモリは、不揮発性、揮発性など特徴が異なるものが混在する場合もある。いずれにしても、冗長性を保つため2重化している。メモリには、ストレージ装置の構成情報や、要求コマンド、アドレスマッピング情報などの制御情報およびリードライトデータを格納するためのキャッシュメモリ的な要素であるものがある。
制御情報(または構成情報)を格納するメモリと、データを格納するキャッシュメモリ的な用途のメモリは、使用する領域が論理的または物理的に分かれていればよい。不揮発性メモリ、揮発性メモリなど種類が異なってもよい。制御情報を格納するメモリとキャッシュメモリ的な用途のメモリは、メモリを使用するブロックストレージマイクロ制御、FOSおよびその他のOSごとに、使用する領域が論理的または物理的に分かれていればよい。
図5に、メモリ32の割り当て例を示す。メモリ32は、物理的に分かれたメモリであり、制御情報を格納するメモリ321とデータを格納するメモリ322からなる。メモリ321、322は、アドレス空間によって使用するOS毎に分割して使用している。各OSは自らに割り当てられたメモリ空間しか認識できない。例えば、FOS311Aは、FOS3211Aの空間とFOS3221Aしか認識しておらず、そこを使用できる。FOS3211AおよびFOS3221AにはFOSプログラムが格納されている。
メモリ321のブロックストレージマイクロ制御部3214には、プロセッサ31によって読み込まれて実行される各種プログラムや、論理ボリュームの設定に関する構成情報、及び、プールの設定に関するプール情報を格納している。メモリ322のブロックストレージマイクロ制御部3224には、転送データなどを格納する。
制御プロセッサ31によって読み込まれて実行される各種プログラムには、次のものがある。
コマンド制御プログラムは、クライアント機器101、又は管理装置20からのコマンドを解釈し、そのコマンドに規定された処理を実行する。構成制御プログラムは、ストレージ装置30の構成の設定、更新等の処理を実現する。ディスクI/Oプログラムは、物理デバイス34へのアクセスを制御する。
構成情報は、仮想デバイス、論理デバイス、階層、RAIDグループなどストレージ装置の環境設定に必要な情報である。また、構成情報として、アドレス管理テーブルおよび論理デバイス管理情報テーブルがある。
アドレス管理テーブルは、ターゲットデバイス、論理デバイス、仮想デバイスおよび物理デバイスとのアドレスのマッピング情報、ターゲットデバイスと論理デバイスのマッピング情報、そして、論理デバイスと仮想デバイスのマッピング情報、及び、仮想デバイスと物理デバイスのマッピング情報を格納している。
ストレージ装置30は、このアドレス管理テーブルを参照することによって、ターゲットデバイスのアドレスがどの論理デバイスのどのアドレスに対応するかを知ることができる。また、論理デバイスのアドレスがどの仮想デバイスのどのアドレスに対応するかを知ることができる。また、仮想デバイスのアドレスがどのRAIDグループに属しており、どの物理デバイスのどのアドレスに対応するかを知ることができる。
データが物理的などの位置に格納されるのか、または、容量仮想化機能により格納されるのかは、ブロックストレージの制御に委ねる。
ブロックストレージ側のハードディスクを使用する際、FOSのI/Oかブロックかを区別して格納場所を決めてもよい。
図6は、ブロックストレージ側へのI/Oを受けたときの処理の流れの概要である。図15のフローチャートに従って処理を説明する。
ブロッククライアント機器101Aが、ライト要求をHBA35の#0のポートであるP#1へ出す(S610)。以降の処理は、制御プロセッサ31内のブロックストレージマイクロ制御314B部(プロセッサボード内の1つのコア)が実行する。制御プロセッサ31には、他にもFOSなどのブロックストレージ以外のOSが搭載されているが実行に関与しない。ブロックストレージマイクロ制御がコマンドの種類を認識する。ライトであればS612へすすみ、リードであればS642へ進む(S611)。
HBA35内のバッファ領域に前記要求が格納されると、ライト要求されたデータを格納すべきアドレス、すなわち、ブロックストレージが処理できる形態のコマンドに、ブロックストレージマイクロ制御が変換する。ここでは、ブロックストレージがサーバへ提供しているLUとアドレス番号に変換される(S612)。変換されたコマンドをブロックストレージマイクロ制御は自らのメモリ領域へ格納する(S614)。格納の際は2重化などの冗長化も行う。
コマンド制御プログラムは、LU−論理デバイス−仮想デバイスアドレス変換を行う(S616)。続いて、ライト対象アドレスがキャッシュメモリに確保されているか否かのヒットミス判定を行う(S617)。
ヒットミス(ライト対象アドレスに対してキャッシュメモリが確保されていない)と判定されれば(S617でNoの場合)、コマンド制御プログラムは、ライトデータを格納するためのキャッシュメモリ領域を確保する(S618)。
次いで、コマンド制御プログラムは、データの受領準備ができたことをブロッククライアント機器101Aに報告する(S620)。
コマンド制御プログラムが、ブロッククライアント機器101Aから転送データを受領すると、データを確保したキャッシュメモリに格納し(S624)、ライト完了報告をブロッククライアント機器101Aに送信する(S626)。
ブロックストレージマイクロ制御は、要求を処理待ちキューに登録する(S630)。ブロックストレージマイクロ制御は、順次処理待ちキューから要求を取り出し、順番に処理をしていく。ここは、従来のブロックストレージのデータの流れと同じである。すなわち、コマンド制御プログラムは、仮想デバイス−物理デバイス/外部LUアドレス変換(S632)を行い、ライト対象データを格納するメディアのアドレスを算出し(S634)、キャッシュメモリに格納したデータをこのメディアアドレスに対して書き込む(S636)。
メモリ3214Bには、要求コマンドを順番に処理するためにキューイングするI/Oキューが格納される。メモリ3224Bには、データ格納用であるキャッシュメモリ、CPU作業用バッファなどが格納される。
リード処理も同様に行う。図16にそのフローチャートを示す。
コマンド受け取りまではライト処理と同様である。
ブロッククライアント機器101Aがリード要求を出す。S644からS648の処理は、先のS612からS616までの処理と同じである。
コマンド制御プログラムは、LU−論理デバイス−仮想デバイスアドレス変換を行い、リード対象アドレスのデータがキャッシュメモリ上にあるか否かのヒットミス判定を行う(S650)。
リード対象アドレスのデータがキャッシュ上にあれば(S650でYesの場合)、コマンド制御プログラムは、キャッシュ上のデータをブロッククライアント機器101Aに転送し(S660)、ブロッククライアント機器101Aに完了を報告する(S662)。
リード対象アドレスのデータがキャッシュ上に無ければ(S650でNoの場合)、コマンド制御プログラムは、仮想デバイス−物理デバイス/外部LUアドレス変換を行い(S652)、リード対象データが格納されているメディアのアドレスを算出し(S654)、メディアアクセスプログラムを起動する。
メディアアクセスプログラムは、算出したメディアのアドレスからデータを読み出して、キャッシュに格納し(S656)、キャッシュに格納したことをコマンド制御プログラムに通知する(S658)。コマンド制御プログラムは、メディアアクセスプログラムからの通知を受領すると、キャッシュ上のデータをブロッククライアント機器101Aに転送し(S660)。完了報告をする(S662)。
上記のとおり、ブロックストレージ側へのI/Oを処理する際には、ハイパバイザを介さない。これにより、ハイパバイザを介することで発生するオーバヘッドを無くし、性能低下を抑えられる。
図7に、ブロックストレージ以外へのI/Oの例として、FOSがI/Oを受けたときの処理の流れを示し、図19のフローチャートとともに処理を説明する。
ファイルクライアント機器101Bが、ライト要求をポートに対して出す(S710)。図の例では、NIC36の#0のポートP#2へ出す。FOS311Aがコマンドの種類を認識する。ライトであれはS712へすすみ、リードであればS752へ進む(S711)。要求の形態はファイルシステムへのライトなどがあり、または、ディレク
トリ情報の形態での要求となる。
NIC36の#0のポートP#2が割り当てたOSへ要求を渡す(S712)。図7では、FOS311Aがライト要求をFOS専用のメモリへ格納する。
ライトデータを格納するバッファエリアをメモリ322のFOS領域から確保する(S714)。確保できれば、ファイルクライアント機器101Bへ確保できたことを報告する(S716)。報告を受けたファイルクライアント機器101BはライトデータをFOSへ転送する(S718)。
ハイパバイザが仮想的にHBAを提供し、仮想HBAに前記要求を格納すると、FOSは、要求コマンドをLU番号とアドレスに変換する(S720)。前記要求は、この変換後の形態でメモリへ格納される。 ここで、仮想HBAは、例えば、FOS制御メモリ内に搭載されるソフトウェアである。要求を格納するメモリは、例えば、ブロックストレージマイクロ制御とFOSの共有領域として定義しておき、ブロックストレージマイクロ制御とFOS両方からアクセスできるメモリ領域とする。そのようにすることで、格納された要求コマンドを直接ブロックストレージマイクロ制御が読み込んで処理を開始できる。別の方法として、共有する領域を持たずに、FOSは、要求をFOS領域からブロックストレージマイクロ制御領域へコピーしたり、ブロックストレージマイクロ制御とFOSのメモリ領域をスイッチング(交換)する。
FOS側の要求が共有領域に格納されたことをブロックストレージマイクロ制御側へ知らせるために、FOS側からブロックストレージマイクロ制御部へ割り込みを上げるか、ブロックストレージマイクロ制御部が一定間隔で要求キューを見に行き、処理待ちコマンドがあれば要求を選択して処理をするなどの動作を行う(S722)。
以降の処理は、ブロックストレージマイクロ制御によるS616以降の処理と同様に、アドレス変換を行い(S724)、ヒットミス判定を行う(S726)。キャッシュが確保できていれば、FOS側へデータを転送するように報告し(S730)、FOSからブロックストレージ側へデータを転送し(S732)、ブロックストレージマイクロ制御側のキャッシュへ格納する(S734)。
データ転送は、具体的には、データが格納されたFOSが使用するメモリアドレスからブロックストレージが使用するメモリアドレスへメモリ間コピーを行う。または、管理するデータが格納されているメモリ領域とコピー先のブロックストレージマイクロ制御側のメモリ領域とのアドレスを交換する。物理的なデータ格納アドレスがコピー元とコピー先で同じ場合は、実質的なデータのコピー処理は発生しないというケースもある。このような場合は、ハイパバイザの中のプログラムが別の領域にデータがあり、コピーされているように見せかける処理を行う。
ブロックストレージ側のキャッシュメモリが確保され準備できれば、FOS側へデータ転送を開始することを示す。ブロックストレージマイクロ制御からFOSへ割り込みを上げるか、メッセージを送信する。
指示を受けたFOS側は、自らの領域のメモリ内に格納していればそのデータをブロック側メモリへコピーし、なければファイルクライアント機器からライトデータを送信してもらう。
ブロックマイクロストレージ制御側のキャッシュへライトデータが格納されれば、FOS側へ完了報告をする(S736)。FOSは、ブロックストレージマイクロ制御側からの完了報告を受けて、ファイルクライアント機器へライト完了を報告する(S737)。
S738以下の処理は、図15のS630以降の処理と同様である。
リード処理も同様に行う。図20にそのフローチャートを示す。
コマンドの受け取りまではライト処理と同様である。
ファイルクライアント機器101Bがリード要求を出す。S754からS764の処理は、先のS712からS724までの処理と同じである。
コマンド制御プログラムは、LU―論理デバイス−仮想デバイスアドレス変換を行い(S764)、リード対象アドレスのデータがキャッシュメモリ上にあるか否か、ヒットミス判定を行う(S766)。
リード対象アドレスのデータがキャッシュ上にあれば(S766でYesの場合)、コマンド制御プログラムは、キャッシュ上のデータをFOSに転送し(S776)、FOSに完了を報告する(S780)。
リード対象アドレスのデータがキャッシュ上に無ければ(S766でNoの場合)、コマンド制御プログラムは、仮想デバイス−物理デバイス/外部LUアドレス変換を行い(S768)、リード対象データが格納されているメディアのアドレスを算出し(S770)、メディアアクセスプログラムを起動する。
メディアアクセスプログラムは、算出したメディアのアドレスからデータを読み出して、キャッシュに格納し(S772)、コマンド制御プログラムに対してキャッシュに格納したことを通知する(S774)。
コマンド制御プログラムは、メディアアクセスプログラムからの通知を受領すると、キャッシュ上のデータをFOSに転送し(S776)、完了報告をする(S780)。
FOS側へのデータ転送は、具体的にはメモリ間コピーとなる。ライト処理で記載したものと同様である。FOSは、データを転送された、すなわち、データが自らの領域に格納されたこと、またはメモリの共通領域に格納されたことを(ライト処理と同様の方法によって)知る(S778)。FOSは、ファイルクライアント機器101Bへデータを転送する(S782)。
別の実施例として、ブロックマイクロストレージ側だけではなく、FOS側にもキャッシュメモリを設けた場合がある。その場合は、キャッシュのヒットミス判定をFOS側でも行う。FOS側のキャッシュにデータが既にあれば、リード要求時はそのままデータを転送し、処理を完了できる。ライト要求の場合は、FOS側のキャッシュにライトデータを格納した時点で処理を完了としてもよいし、ブロックストレージ側のキャッシュへライトデータが格納された時点で完了としてもよい。
図6および図7の処理で、ブロックストレージマイクロ制御部が処理する要求キューをまとめてもよい。S614にて格納する要求を、共有領域3220にあるキューに入れてもよい。また、S738で一旦共有領域3220に要求を格納した後に、ブロックストレージマイクロ制御3214Aにある要求キューに登録してもよい。
通常のFOSでは、HBAをハードウェアで保持し、SCSIコマンドへ変換してFCI/FにてSANを介してストレージ装置側へアクセスしていた。前記のように、一体型のストレージシステム構成によると、価格の高いHBAが不要となり、内部で直結するため、SANを介することもなくコストが低減できるとともに、性能向上を実現できる。
図8に、ハードウェアリソース管理テーブルの例を示す。
この情報により、ハードウェアごとに稼働中か障害閉塞中かの状態、そのハードウェアを使用しているOSまたはブロックストレージがわかる。
図8Aに、ブロックストレージマイクロ制御が持つハードウェアリソース管理情報801Aを示す。ストレージ装置30内に搭載されるハードウェアリソース全体の情報である。リソース名802AにCPU番号、CPUごとにCore番号803A、ブロックストレージ側で定義しているかの情報804Aがある。
この804Aには、ブロックストレージが使用するリソースには「定義」が登録され、使用しないリソースには「未定義」が登録される。CPU1と2は、ブロックストレージが使用するため「定義」と登録される。CPU3は、ブロックストレージマイクロ制御で確保していないため「未定義」と登録され、ブロックストレージマイクロ以外のOSで使用中という認識を持つ。通常は、未定義という情報だけであるが、バリエーションとして、ハイパバイザが使用するハードウェア情報をブロックストレージマイクロ以外(例えば、ハイパバイザまたは管理サーバまたは他の装置)から受け取って、リソース割り当て状況を具体的に登録してもよい。
812Aにメモリのリソース名、813Aにメモリ空間のアドレスが格納されている。各アドレスに対し、ブロックストレージマイクロ制御側が確保したか否かを814Aに登録する。アドレス1001〜は他のOSと共有している。例えば、図7で説明したリード/ライト要求処理の際、ブロックストレージマイクロ制御以外のFOSなどの要求コマンドを変換する。ここで、上記アドレスは、ブロックストレージマイクロ制御へ処理を委託する場合に、変換したコマンドを格納するアドレスのことで、コマンドを変換するFOS側と変換したコマンドを参照して処理をするブロックストレージマイクロと、両方からアクセス可能な領域である。814Aの情報では、共有しているか否かは管理せず、ブロックストレージが使えるか否かを管理する。
他のハードウェアリソースである、ポートやハードディスクについても、同様な管理を行う。ポートの場合、例えばFCポートとイーサネットポートとがあり、それぞれ番号を管理する。
テーブル801Aのハードウェア全体の管理情報から、ブロックストレージに定義されたリソースのみのテーブルを作成する。例えば、図8Aに示す821Aや831Aである。821Aは、ブロックストレージが使用するCPUの情報であり、CPU1およびCPU2はブロックストレージが使用するCPUであり、状態が使用中であることがわかる。使用状態823Aには使用中や障害閉塞中などの情報を登録する。
801Aは、ブロックストレージマイクロ制御とハイパバイザが参照するため、両方の制御が見ることができるメモリ領域へ格納する。
図8Bに、ハイパバイザが持つハードウェアリソース管理情報を示す。
ハードウェアリソース管理情報801B、811Bは、ハイパバイザが持つ情報であり、ハイパバイザが使用するメモリ領域に格納される。ブロックストレージマイクロ制御がもつ、全ハードウェアの管理情報である801Aを参照し、使用状況が未定義のものだけを801B、811B(ポートは図示していない、HDDは使用しないため無し)に載せる。リソースが既に使用中である(すなわち、ブロックストレージマイクロ制御側で確保済みである)かどうかをまず登録し、その後、FOSなどの複数OSへリソース分割して割り当てた結果を格納する。リソースごとに誰が使用しているかはハイパバイザが管理する。
メモリ内のアドレス1001から2000はブロックストレージと共有領域であるが、ハイパバイザの領域とする。
ハイパバイザは、FOSなどにハードウェアリソースを仮想化して見せるため、例えば、821Bに示すように、物理的には1つのCPU3を複数のCPUであるVCPU1から4にみせ、それぞれをハイパバイザの上にのるOSへ割り当てることをする。従って、後述する障害が発生し、検知した場合、物理的に障害が発生すると、どのOSへ障害の影響があるのかを調べて障害処理を行う必要がある。
図8Cのハードウェアリソース使用情報801Cは、ブロックストレージ以外の個々のOSが持つ情報であり、自らが使えるリソース情報のみを持つ。既述の、ブロックストレージマイクロ制御と共有な領域も自らが使用できるものであり、すなわち使用状態が使用中として管理する。
図9に、FOS側の要求コマンドを変換するための情報として、ディレクトリデバイス情報テーブル901を示す。ディレクトリデバイス情報テーブル901は、ファイルシステム名またはディレクトリ情報と、それがマウントされている場所としてストレージ側から提供されるLU情報との対応関係を示す。このテーブル情報はFOS側で持つ。本例では、ファイルシステムに対してLUを1:1でストレージ側から提供されている。別のバリエーションとして、LU情報だけではなく、LU内のアドレス情報との対応関係も格納される。
図10により、FOSからブロックストレージマイクロ制御側へのコマンドを共有する方法を説明する。
913にコマンドに対して要求元を記載しておき、コマンドの処理が完了した際に、どこへ完了報告をすべきかを明確にしておく。例えば、ブロックストレージの場合、コマンド発行元と認識するのはポートとLU番号であるため、これを情報として持つ。コマンドを処理する場合、要求元まで区別してスケジュールすることもあるので、SCSIのIDやWWNをもつことで要求元を区別する。ブロック側の要求も同様に発生し、同じ要求コマンドキューへ書き込んでもよいし、別のメモリ領域に要求キューを持たせてもよい。別々の場合はキュー間で処理順序を決めるルールが必要である。コマンドが終了すれば、終了したことをブロックから報告する。
図11Aおよび図11Bに、ハードウェアリソースをブロックストレージ装置側とそれ以外のOSに割り当てる処理手順を示す。
まず、ストレージ装置30の電源を入れる(S1110)。ブロックストレージマイクロ制御のみ起動する(S1112)。このように筐体内の一部だけをブートすることは本装置の特徴である。ブロックストレージマイクロ制御は、初期状態(または構成ファイルが定義されていないことを検知する状態)では、最小構成を決定する(S1114)。最小構成とはブロックストレージ側の構成のことで、例えば、2PK(パッケージ)構成であって、最大で8PK構成まで組める。このように、デフォルトで一旦は最小構成で立ち上げている。最小構成で構築する際に使用する物理的なCPUコアやメモリは予め決めておく。ここで構成を確定するために、一旦リブートする(S1115)。
ユーザが予め管理装置経由で、ブロックストレージ側の構成を考え、その装置構成において必要となるハードウェア部位の数を決定した情報を、構成ファイルに登録する(S1116)。構成ファイルに登録された構成に従ったブロックストレージ装置を構築する。ユーザは、ブロックストレージ装置を構成する各部位が必要とするハードウェアリソース数と、ブロックストレージ装置以外のOS、FOSなどが必要とするリソースを考慮し、FOSなどで必要なリソースを残すようにその数を決める。ブロックストレージマイクロ制御は、リブートすれば、ストレージ装置30内に接続されるハードウェアを認識し、801Aの管理テーブルを構築する(S1117)。この情報は、最初に最小構成で立ち上げた時のメモリ領域に格納される。
次に、ユーザ定義構成ファイルの内容に従って、ブロックストレージ装置に接続されるハードウェアリソースを認識する(S1118)。認識したハードウェアは801Aの管理テーブルに登録する。ユーザ定義構成ファイルの内容に従ったハードウェアリソースを確保し、構成を定義する(S1120)。具体的には、801Aの使用状況に「定義」と登録する。使用するハードウェアリソースの情報である821Aと831Aを構築し、ブロックストレージマイクロ制御用に確保した制御メモリに格納する(S1122)。構成を確定するためにリブートする(S1123)。
さらに、ハイパバイザを起動する(S1124)。ハイパバイザは、ブロックマイクロ制御部と共有するメモリ領域に格納されたハードウェア管理情報801Aを参照し、ハードウェア全体を認識する(S1126)。ハイパバイザは、使用状況が「未定義」の情報を自らのメモリ領域へ格納する(S1128)。ハイパバイザは、未定義のハードウェアリソースが使用可能であることを認識し、ハイパバイザ用ハードウェア管理情報テーブル801B、811Bを作成する(S1132)。ハイパバイザは、リブートして構成を確定する(S1134)。ハイパバイザはさらに、821Bを構築し、ハイパバイザにのる複数OSへ割り当て、割り当てた情報を811B、821Bへ格納する(S1136)。
別の方法(図11C)として、ハイパバイザを起動する(S1142)。ハイパバイザは、ストレージ装置30内に接続された全てのハードウェアリソースを認識する(S1144)。ハイパバイザは、ブロックストレージマイクロ制御部に、自らが起動したことを報告する(S1146)。報告を受けたブロックストレージマイクロ制御部は、自らのメモリ内に格納した自らが使用するリソース情報をハイパバイザへ提供する(S1148)。ハイパバイザは、受け取った情報を自らのメモリ領域へ格納する(S1150)。ハイパバイザは、受け取った情報からどのハードウェアリソースが使用可能かを認識し、まずハイパバイザ用のメモリ領域を確保する(S1152)。
確保したメモリ領域に、ハイパバイザ用ハードウェア管理情報テーブルを作成して登録する(S1154)。ハイパバイザをリブートする(S1156)。使用可能なリソースをハイパバイザにのる複数OSへ割り当てる(S1158)。割り当てた情報をそれぞれのOSが使用するメモリ領域へ格納する(S1160)。ここにおいて、ブロックストレージマイクロ制御部にハイパバイザ側のリソース割り当て情報を提供してもしなくてもよい。また、ブロックストレージマイクロ制御部からハイパバイザへ使用済みハードウェアリソース情報を受け渡す方法として、メモリ空間内コピー、または、アドレス情報を共有することで、情報を共有する方法もある。
S1146からS1150の処理が、従来のハイパバイザには無い処理である。ハイパバイザがゲストOSへリソース割り当てを行う処理は従来技術であるが、使用できるリソース情報を他のOSから受け取る処理、受け取った情報により使用するリソースを決定する処理は従来技術には無い処理である。
メモリの確保は、メモリ空間のアドレスまたは容量を指定することにより行われる。障害等を考慮して2重化した構成で確保する。
図12は、リソースが追加された場合の構成定義手順を示すフローチャートである。
ハードウェアリソースが追加されれば、追加されたリソースを含めてユーザが管理装置において構成ファイルを作成しなおし登録する。ブロックストレージマイクロ制御はオン中のまま、ユーザが定義した構成ファイルに従って接続するハードウェアリソースを認識する。認識しなおすトリガーは、ユーザがストレージ装置30へ指示を出してもよいし、ストレージ装置30が検出する手段を持っていてもよい。図11のフローチャートと同様に構成を定義する。原則として、追加されたハードウェアリソースを割り振る操作となり、既に使用しているリソースについては最初に割り当てたままとする。ハイパバイザ側の処理は、図11BのS1126以降から同じである。
リソース追加の場合、原則、現状確保しているリソースはそのまま同じものを確保する。追加になったリソースをブロックストレージマイクロ制御側とそれ以外に割り当てる。
リソース追加では、ハイパバイザがリブートをせずに、ブロックストレージマイクロ制御のトリガによってリソース追加及び使用可能情報を取得し、ゲストOSへ割り当て処理を行う箇所が従来と異なる。
次に、リソースを減設、つまり、削除する場合の手順を以下に示す。
削除対象となるリソースがメモリ空間の場合、削除するメモリ容量をメモリ空間のどこにするかを決定する。削除するメモリ空間に格納されているデータ及び制御情報を削除しないメモリ空間へ退避する。次処理からはコピー先のデータを使用する。図12のフローチャートと同様に、ユーザが管理装置経由にて削除したメモリ空間アドレスを構成ファイルに作成しなおし登録する。以降は図12のフローと同様の処理となる。
削除対象となるリソースがプロセッサの場合、削除の指示が出れば、削除対象のプロセッサはしかかり中の処理を完了し終了させるまで、新規処理を開始しない。処理の切れ目で、削除するプロセッサがもっていた処理待ちキューなどのデータを他のプロセッサへ委託する。委託されたプロセッサはもともと持っていた処理キューとマージして、自らのメモリへその情報を登録する。削除するリソースの情報には使用不可(または閉塞など)状態を登録する。以降は、図12のフローと同様の処理となる。
ディスクの削除については、ストレージシステムの従来方法と同様でよい。
図13は、ブロックストレージのハードウェアリソースをブロックストレージ以外に動的に割り当てなおす処理を示すフローチャートである。
前述のリソース削除処理により、ブロックストレージ側で使用しているハードウェアのうち、削除対象となるリソースの使用をやめる。削除するリソースを使用不可などの状態とし、使用できない状態にする(S1310)。ユーザが構成ファイルを作成しなおす際、削除対象となるリソースを選択しないように指定する(S1312)。例えば、使用不可のメモリアドレスを指定しないなどがある。ユーザが作成しなおした構成ファイルに従って、接続するハードウェアリソースから確保し構成を定義する(S1316)。その後、使用不可の状態にしていたハードウェアの使用状態を使用可能とする(S1318)。以降の処理は、図11BのS1126からS1136の処理と同様となる。
図14は、ブロックストレージ以外が使用しているハードウェアリソースをブロックストレージ側へ動的に割り当てなおす処理を示すフローチャートである。
例えば、FOS側のファイルシステムを縮小する場合など、ハードウェア能力が余る場合、FOS側からハードウェアを解放してブロックストレージ側に割り当てなおすことができる。
ハードウェアリソースの削除処理は、前記に示した処理で行う。ハイパバイザが削除処理を起動し(S1410)、各OSに削除処理を実行させる(S1412)。削除すれば、ハイパバイザが削除後の現状使用できるリソースを割り当てなおし(S1416)、ハイパバイザの情報へ登録する(S1420)。以降に続く、構成ファイルの作成しなおし及びブロックストレージ側への割り当てなおし(追加)については、図12のフローに準ずることになる。
ブロックストレージマイクロ制御とハイパバイザの協調処理の1つに、障害処理がある。従来、ストレージ装置の各筐体にOSが搭載され、OS毎に障害管理をするための環境系プログラムや共通ロジックプログラムなどを設けていた(例えば、図17に示す障害プログラム316)。ハードウェア側で障害が発生したならば、各OSへ障害報告を上げ、OS側で障害対処プログラムを起動して対応していた。
本発明のストレージシステムにおいては、OS毎にあった環境系や共通ロジックをまとめる必要がある。なぜならば、障害が発生してそれぞれの障害プログラムを起動すると、例えばハイパバイザ側が管理するハードウェアに障害が発生した場合、可用性に対する許容度がブロックストレージ装置と異なることから、ハイパバイザの障害に対する判断を採用するとブロックストレージ装置の可用性が落ちてしまう、という事態が起こる。
また、ブロックストレージマイクロ制御側の処理は、ハイパバイザを介することによりオーバヘッドがかかるため、ブロックストレージ装置側の処理性能がダウンする可能性がある。ブロックストレージ装置の可用性を落とさず、ハイパバイザと協調処理できるようにするために、障害処理の主導権をブロックストレージマイクロ制御側に持たせる。それにより、障害を検出した場合は、ブロックストレージマイクロ制御側にまず報告をあげる処理とする。
ただし、ハイパバイザ側でのみ使用するハードウェアについては障害処理をする必要が無い場合がある。そのために、ブロックストレージとハイパバイザとで、障害処理を実施する対象となるリソースを切り分けておく(担当を決めておく)。そのリソースに障害が発生した際、障害が発生したことを示す情報(障害発生情報)を登録するメモリ領域を、ハイパバイザ側かブロックストレージマイクロ制御部のどちらに設けるかを決める。そのリソースの障害がブロックストレージマイクロ制御部の障害処理に関連があれば、障害発生情報をブロックストレージマイクロ制御部側のメモリ領域へ格納してその情報を見るべき制御部の側に置く。
次に、障害処理について説明する。障害処理においても、ブロックストレージマイクロ制御とハイパバイザが協調して処理をする必要がある。
ストレージ装置30内の各ハードウェアに障害が発生した場合、障害を検出するハードウェアである障害監視がそれを検出する。
対象となるハードウェアリソースは、以下の4種類に分類される。
(1)ブロックストレージとブロックストレージ以外(ハイパバイザとハイパバイザ上で動作するOS群)で共有されるリソース
(2)ブロックストレージで占有されるリソース
(3)ブロックストレージ以外のハイパバイザ上で動作するOS間で共有されるリソース
(4)ブロックストレージ以外のハイパバイザ上で動作するOSで占有されるリソース
各ハードウェアリソースは、あらかじめ設定された側へ障害を通知し、割り込みを上げる。上記(1)および(2)の場合は、図21に示されるように、ブロックストレージマイクロ制御部へ障害を通知し割り込みを上げる。上記(3)の場合は、図22に示されるように、ハイパバイザへ障害を通知し割り込みを上げる。上記(4)の場合は、各OSへ障害を通知し割り込みを上げる。
このために、各ハードウェアリソースには、どこへ障害を通知するかの通知先も登録する必要がある。メモリ321内に障害処理用の領域を確保し、全ハードウェアリソースの障害報告先を登録する情報管理テーブルに登録し、障害を検知した場合、前記情報管理テーブルを参照し、障害報告先へ障害発生を通知する。前記情報管理テーブルを図23に示す。例えば、CPUの障害管理テーブル2300の2314に格納する使用者情報が、障害通知先となる。使用者がブロックである場合はブロックストレージマイクロ制御側へ返信し、使用者がFOSの場合はFOSへ返信する。
上記(1)の例として、ハードディスクの障害がある。ハードディスクはブロックストレージとFOSなど種々のOSから使用される。従って、ハードディスクの障害が起こった際には、障害部位に格納されたデータがどのOSのデータであるかは、ディスク制御側で管理していないため、全体へ障害発生を通知する。
また、図23に示したメモリの場合、1枚のメモリ単位に障害か正常かの判定をする。このケースでは、メモリが共有されているため(上記(1)の場合)、メモリを使用しているブロックに障害を返信する。
障害の検出方法として、CPU、メモリ、ディスクなどは障害監視によってハードウェアが自らで障害を認識できる。ポートは自らが検出できないため、障害検出プログラム等が一定間隔で障害がないかどうか見に行くためのジョブを起こすなどによって対応する。障害を見つければ、前記障害報告先を登録する情報管理テーブルを参照し、報告先を検索して障害を報告する。ポートは、上記(2)又は(4)のどちらかに報告する。
ハイパバイザ上で動作するOSの一つが占有するリソースに障害が発生し、かつ、そのOSがフェイルオーバする必要がある場合は、OSがのっているハイパバイザからブロックストレージマイクロ制御部へ障害を通知する。
従来、ハイパバイザは接続している全てのハードウェアリソースを認識し、障害についても検知しようとする。また、ブロックストレージにおいては、同様に全てのハードウェアリソースの障害を検知しようとする。しかし、ユニファイドストレージシステムにおいては、ハードウェアリソースをブロックストレージとハイパバイザ側とに分けて割り当てるために、障害処理も分けて行う。すなわち、それぞれのOSで閉じた処理はOS内で行い、両方で共通して使用するものについての処理はどちらがやるかを決めておく必要がある。この方式により、障害処理の主導権はリカバリ能力の高いブロックストレージマイクロ制御側がもつが、ブロックストレージマイクロ制御側に関係がないハードウェアについては、各OSまたはハイパバイザに処理を任せる。
他の構成バリエーションとして、1番目は、ハイパバイザのみに障害プログラムを設け、ブロックストレージ制御側を含めてハイパバイザが管理する。ブロックストレージがストレージシステム内に存在しない構成の場合、ハイパバイザに障害報告をし、ハイパバイザの障害処理プログラムで対応する。サーバやファイルシステムに対応するレベルでの障害処理となる。
2番目は、ブロックストレージマイクロ制御部のみに障害プログラムを設ける。ハイパバイザが最初から存在しない、もしくは、途中でハイパバイザを削除した場合に相当する。ブロックストレージレベルでの障害処理プログラムを起動する。途中でハイパバイザを削除する場合は、削除前処理として、ハイパバイザが担当していた障害処理をブロックストレージマイクロ制御部が引き継ぐ。
なお、本発明は、実施形態そのままに限定されるものではなく、実施段階では、その要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
また、実施形態で示された各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良い。また、上記各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現しても良い。各機能等を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録或いは記憶装置、またはIC(Integrated Circuit)カード、SDメモリカード、DVD(Digital Versatile Disc)等の記録或いは記憶媒体に格納することができる。
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
20:管理装置
30:ストレージ装置
31:制御プロセッサ(CPU)
32:メモリ
33:ディスクインターフェース
34:物理デバイス
35:HBA
36:NIC
37:バス
39:保守管理インターフェース
101:クライアント機器
106,107:ネットワーク
108:管理ネットワーク

Claims (15)

  1. ブロックストレージ側OSと、
    該ブロックストレージ側OS以外のハイパバイザ上で動作する複数OSを含む複数システムを管理するOS群と、
    前記ブロックストレージ側OSによって直接的に当該ブロックストレージ側OSに割り当てられる第1のリソース部分と、前記ハイパバイザによって論理分割を使用して前記OS群中のいずれかのOSに割り当てられる第2のリソース部分と、を含むハードウェアリソースと
    から構成されることを特徴とするストレージシステム。
  2. 請求項1記載のストレージシステムであって、
    前記第1のリソース部分は、前記ハイパバイザによる前記第2のリソース部分の割り当てに先立って優先的に割り当てられることを特徴とするストレージシステム。
  3. 請求項1記載のストレージシステムであって、
    前記ブロックストレージ側OSと該ブロックストレージ側OS以外の前記OS群を独立に、順番にブートすることを特徴とするストレージシステム。
  4. 請求項1記載のストレージシステムであって、
    当該ストレージシステム全体の処理は前記ブロックストレージ側OSが主導権をもって実行する
    ことを特徴とするストレージシステム。
  5. 請求項1記載のストレージシステムであって、
    前記ハードウェアリソースの構成を設定するための情報に基づいて、前記ブロックストレージ側OSに対して前記第1のリソース部分を確保するために該ブロックストレージ側OSが作成する第1の構成管理テーブルと、
    前記ハイパバイザが前記OS群中のいずれかのOSに対して前記第2のリソース部分を確保するために、前記第1の構成管理テーブルに基づいて前記ハイパバイザが作成する第2の構成管理テーブルと
    を有することを特徴とするストレージシステム。
  6. 請求項1記載のストレージシステムであって、
    前記ハードウェアリソースの構成を設定するための情報に基づいて、前記ブロックストレージ側OSに対して前記第1のリソース部分を確保するために該ブロックストレージ側OSが作成する第1の構成管理テーブルと、
    前記ハイパバイザが前記OS群中のいずれかのOSに対して前記第2のリソース部分を確保するために、前記ブロックストレージ側OSから前記第1のリソース部分の情報を受け取ることにより前記ハイパバイザが作成する第2の構成管理テーブルと
    を有することを特徴とするストレージシステム。
  7. 請求項5記載のストレージシステムであって、
    ハードウェアリソースを追加する時には、
    前記ブロックストレージ側OSは、該追加するハードウェアリソースを認識して前記第1の構成管理テーブルを再構築して、該追加するハードウェアリソースの一部分が前記第1のリソース部分として使用される場合には該追加するハードウェアリソースの一部分を自らに対して確保し、
    前記ハイパバイザは、前記第1の構成管理テーブルに基づいて第2の構成管理テーブルを再構築して、前記追加するハードウェアリソースの残り部分を前記第2のリソース部分として自らが使用する
    ことを特徴とするストレージシステム。
  8. 請求項5記載のストレージシステムであって、
    ハードウェアリソースを削除する時には、
    前記ブロックストレージ側OSは、該削除するハードウェアリソースを認識して前記第1の構成管理テーブルを再構築して、該削除するハードウェアリソースを自らが確保している場合にはそれを使用不可の状態にし、
    前記ハイパバイザは、前記第1の構成管理テーブルに基づいて第2の構成管理テーブルを再構築して、前記削除するハードウェアリソースを自らが確保している場合にはそれを使用不可の状態にする
    ことを特徴とするストレージシステム。
  9. 請求項5記載のストレージシステムであって、
    前記ブロックストレージ側OSが確保しているハードウェアリソースを該OS以外に動的に割り当てなおす時には、
    前記ブロックストレージ側OSは、該動的に割り当てなおす対象のハードウェアリソースを使用不可の状態にして、前記第1の構成管理テーブルを再構築した後に使用可能な状態に戻し、
    前記ハイパバイザは、前記第1の構成管理テーブルに基づいて第2の構成管理テーブルを再構築して、前記使用可能な状態のハードウェアリソースを確保する
    ことを特徴とするストレージシステム。
  10. 請求項5記載のストレージシステムであって、
    前記ブロックストレージ側OS以外のOS群中のいずれかのOSが確保しているハードウェアリソースを前記ブロックストレージ側OSに動的に割り当てなおす時には、
    前記ハイパバイザは、前記OS群中のいずれかのOSが自ら確保していた前記ハードウェアリソースを使用不可の状態にして、前記第2の構成管理テーブルを再構築した後に使用可能な状態に戻し、
    前記ブロックストレージ側OSは、前記第2の構成管理テーブルに基づいて前記第1の構成管理テーブルを再構築して、前記使用可能な状態のハードウェアリソースを確保することを特徴とするストレージシステム。
  11. 請求項1記載のストレージシステムであって、
    前記ハードウェアリソースは、その障害発生時に、
    該障害発生したハードウェアリソースが前記ブロックストレージ側OSまたは前記OS群中のいずれかのOSに占有されている場合には、該占有するOSへ該障害発生を通知し、
    該障害発生したハードウェアリソースが前記ブロックストレージ側OS、前記ハイパバイザおよび前記ハイパバイザ上で動作するOS群に共有されている場合には、前記ブロックストレージ側OSへ該障害発生を通知し、
    該障害発生したハードウェアリソースが前記ハイパバイザ上で動作する前記OS群中のいずれかのOS間で共有されている場合には、前記ハイパバイザへ該障害発生を通知することを特徴とするストレージシステム。
  12. ブロックストレージ側OSと該ブロックストレージ側OS以外のファイルシステムを含む複数システムを管理するOS群とが共存するストレージシステムにハードウェアリソースを割り当てる方法であって、
    前記ブロックストレージ側OSを起動し、該OSは、前記ハードウェアリソースの設定構成情報に基づいて第1の構成管理テーブルを構築して、自らが使用するハードウェアリソースを確保する第1のステップと、
    前記第1のステップの後に、前記ブロックストレージ以外のOS群を仮想化するハイパバイザを起動し、該ハイパバイザは、前記第1の構成管理テーブルに基づいて第2の構成管理テーブルを構築して、前記ブロックストレージ側OSが確保しなかったハードウェアリソースを自らが使用するハードウェアリソースとして確保する第2のステップと
    を有することを特徴とするリソース割当て方法。
  13. 請求項12記載のリソース割当て方法であって、
    ハードウェアリソースをさらに追加する時には、
    前記ブロックストレージ側OSは、該追加するハードウェアリソースを認識して前記第1の構成管理テーブルを再構築して、自らが使用する場合には該追加するハードウェアリソースを確保する第3のステップと、
    前記第3のステップの後に、前記ハイパバイザは、前記第1の構成管理テーブルに基づいて第2の構成管理テーブルを再構築して、前記ブロックストレージ側OSが前記追加するハードウェアリソースを確保しなかった場合には自らが使用するハードウェアリソースとして確保する第4のステップと
    を有することを特徴とするリソース割当て方法。
  14. 請求項12記載のリソース割当て方法であって、
    前記ブロックストレージ側OSが確保しているハードウェアリソースを該OS以外に動的に割り当てなおす時には、
    前記ブロックストレージ側OSは、該動的に割り当てなおす対象のハードウェアリソースを使用不可の状態にし、続いて前記第1の構成管理テーブルを再構築し、その後に使用
    可能な状態に戻す第5のステップと、
    前記第5のステップの後に、前記ハイパバイザは、前記第1の構成管理テーブルに基づいて第2の構成管理テーブルを再構築し、続いて前記使用可能な状態のハードウェアリソースを確保する第6のステップと
    を有することを特徴とするリソース割当て方法。
  15. 請求項12記載のリソース割当て方法であって、
    前記ブロックストレージ側OS以外のOS群中のいずれかのOSが確保しているハードウェアリソースを前記ブロックストレージ側OSに動的に割り当てなおす時には、
    前記ハイパバイザは、前記OS群中のいずれかのOSが自ら確保していた前記ハードウェアリソースを使用不可の状態にし、続いて前記第2の構成管理テーブルを再構築し、その後に使用可能な状態に戻す第7のステップと、
    前記第7のステップの後に、前記ブロックストレージ側OSは、前記第2の構成管理テーブルに基づいて前記第1の構成管理テーブルを再構築し、続いて前記使用可能な状態のハードウェアリソースを確保する第8のステップと
    を有することを特徴とするリソース割当て方法。

JP2016008615A 2016-01-20 2016-01-20 ストレージシステム及びリソース割当て方法 Active JP5937772B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016008615A JP5937772B1 (ja) 2016-01-20 2016-01-20 ストレージシステム及びリソース割当て方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016008615A JP5937772B1 (ja) 2016-01-20 2016-01-20 ストレージシステム及びリソース割当て方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015523724A Division JP5877552B1 (ja) 2013-01-28 2013-01-28 ストレージシステム及びリソース割当て方法

Publications (2)

Publication Number Publication Date
JP5937772B1 JP5937772B1 (ja) 2016-06-22
JP2016119110A true JP2016119110A (ja) 2016-06-30

Family

ID=56184769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016008615A Active JP5937772B1 (ja) 2016-01-20 2016-01-20 ストレージシステム及びリソース割当て方法

Country Status (1)

Country Link
JP (1) JP5937772B1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080104315A1 (en) * 2006-10-25 2008-05-01 Hitachi Global Technologies Netherlands, B.V. Techniques For Improving Hard Disk Drive Efficiency
US20080244577A1 (en) * 2007-03-29 2008-10-02 Vmware, Inc. Software delivery for virtual machines
US20100058335A1 (en) * 2008-08-28 2010-03-04 Weber Bret S Methods and systems for integrated storage and data management using a hypervisor
JP2012014239A (ja) * 2010-06-29 2012-01-19 Hitachi Ltd フォールトトレラントの計算機システム、複数の物理サーバとストレージ装置とに接続されるスイッチ装置、及び、サーバ同期制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080104315A1 (en) * 2006-10-25 2008-05-01 Hitachi Global Technologies Netherlands, B.V. Techniques For Improving Hard Disk Drive Efficiency
US20080244577A1 (en) * 2007-03-29 2008-10-02 Vmware, Inc. Software delivery for virtual machines
US20100058335A1 (en) * 2008-08-28 2010-03-04 Weber Bret S Methods and systems for integrated storage and data management using a hypervisor
JP2012014239A (ja) * 2010-06-29 2012-01-19 Hitachi Ltd フォールトトレラントの計算機システム、複数の物理サーバとストレージ装置とに接続されるスイッチ装置、及び、サーバ同期制御方法

Also Published As

Publication number Publication date
JP5937772B1 (ja) 2016-06-22

Similar Documents

Publication Publication Date Title
JP5877552B1 (ja) ストレージシステム及びリソース割当て方法
US11663029B2 (en) Virtual machine storage controller selection in hyperconverged infrastructure environment and storage system
US11314543B2 (en) Architecture for implementing a virtualization environment and appliance
US8555279B2 (en) Resource allocation for controller boards management functionalities in a storage management system with a plurality of controller boards, each controller board includes plurality of virtual machines with fixed local shared memory, fixed remote shared memory, and dynamic memory regions
JP5595530B2 (ja) データ移行システム及びデータ移行方法
JP5124103B2 (ja) 計算機システム
US8667504B2 (en) System and method for achieving high performance data flow among user space processes in storage system
US20170102874A1 (en) Computer system
US9823955B2 (en) Storage system which is capable of processing file access requests and block access requests, and which can manage failures in A and storage system failure management method having a cluster configuration
US11520674B2 (en) Managing containers on a data storage system
US20110004708A1 (en) Computer apparatus and path management method
JP2010257274A (ja) 仮想化環境におけるストレージ管理システム及びストレージ管理方法
CN105739930A (zh) 一种存储架构及其初始化方法和数据存储方法及管理装置
WO2014054070A1 (en) Management system for managing a physical storage system, method of determining a resource migration destination of a physical storage system, and storage medium
JP5597266B2 (ja) ストレージシステム
JP5937772B1 (ja) ストレージシステム及びリソース割当て方法
US20120016992A1 (en) Architecture for improved cloud computing
JP2018101440A (ja) 計算機システム
JP2023094302A (ja) 情報処理システム及び構成管理方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160318

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160318

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160405

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160512

R150 Certificate of patent or registration of utility model

Ref document number: 5937772

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150