実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部(メモリ等)及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。また、プログラムが実行されることによって実現される処理のうちの少なくとも一部が、ハードウェア回路(例えばASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array))によって実現されてもよい。
図1は、第1実施形態に係る計算機システムの全体構成図である。
計算機システム1は、1台以上のストレージ装置100と、1台以上の管理用計算機110と、1台以上のホスト計算機120とを備える。ストレージ装置100と、管理用計算機110と、ホスト計算機120とは、全て又は一部が、同一の物理計算機で構成されていてもよい。
ストレージ装置100と、管理用計算機110と、ホスト計算機120とは、ネットワーク130を介して接続されている。ネットワーク130は、有線LAN(Local Area Network)、無線LAN、インターネット等により構成される。なお、ストレージ装置100と管理用計算機110とを接続するネットワークと、ストレージ装置100とホスト計算機120とを接続するネットワークとは、別のネットワークであってもよい。
ホスト計算機120は、例えば、アプリケーションプログラムを実行する計算機である。ホスト計算機120は、ストレージ装置100が提供する論理的な記憶領域(仮想ボリューム)にネットワーク130経由でアクセスする。ホスト計算機120は、ストレージ装置100に対して、I/O(Input/Output)要求であるリード要求やライト要求を発行することで、ストレージ装置100の仮想ボリュームに格納されたデータ(ユーザデータ)にアクセスする。
管理用計算機110は、リソース管理プログラム111を実行することにより、ストレージ装置100のリソース、例えば、記憶領域の構成等を管理する。
ストレージ装置100は、例えば、汎用サーバやPC(Personal Computer)等の計算機により構成されている。ストレージ装置100は、1つ以上のCPU101と、メモリ102と、不揮発媒体103と、記憶デバイスの一例としてのドライブ104と、を有する。
CPU101は、メモリ102及び/又はドライブ104に格納されているプログラムに従って各種処理を実行する。メモリ102は、例えば、RAM(Random Access Memory)で構成され、CPU101で実行されるプログラムや、必要な情報を記憶する。メモリ102のレイテンシは、不揮発媒体103のレイテンシよりも短い。ドライブ104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などであり、CPU101で実行されるプログラムや、CPU101に利用されるデータや、ホスト計算機120で利用されるユーザデータ等を記憶する。
不揮発媒体103は、電源の供給がない場合であってもデータの記憶を維持することのできる媒体であって、例えば、フラッシュメモリ等の不揮発メモリや、HDDやSSD等のドライブであってもよい。なお、図1においては、不揮発媒体103とドライブ104とを別体として表記しているが、ドライブ104を不揮発媒体103として用いるようにしてもよく、この場合には、ドライブ104と別に不揮発媒体103を備える必要がない。
次に、ストレージ装置100のメモリ102の構成について説明する。
図2は、第1実施形態に係るストレージ装置のメモリの構成図である。
ストレージ装置100のメモリ102は、OS(Operating System)200と、1以上のストレージ制御プログラム210と、制御用情報220とを記憶する。制御用情報220は、メモリ102上ではI/O処理で変更があれば都度更新され、ストレージ稼働の正常終了時等の長周期でドライブ104内の制御用情報に反映させる。
OS200は、CPU101に実行されることにより、ストレージ装置100におけるプログラムの実行を制御する処理等を実行する。例えば、OS200は、メモリ102等の記憶領域をストレージ制御プログラム210の仮想アドレス空間300(図3参照)に割り当てる処理等を行う。
ストレージ制御プログラム210は、リソース管理プログラム211と、I/O実施プログラム212とを有する。各プログラムの処理については、後述する。
制御用情報220は、ストレージ制御プログラム210により用いられ、ホスト計算機120からのI/O要求に対応するI/O処理の制御に利用等する情報である。制御用情報220は、物論アドレス変換テーブル221と、論物アドレス変換テーブル222と、モニタ情報223と、キャッシュ224とを含む。なお、制御用情報220に含まれる各種情報については後述する。
次に、ストレージ制御プログラム210が使用する、メモリ102、不揮発媒体103、ドライブ104に格納されている情報について説明する。
図3は、第1実施形態に係るメモリ、不揮発媒体、及びドライブに格納された情報を説明する図である。
メモリ102には、物論アドレス変換テーブル221、論物アドレス変換テーブル222、モニタ情報223、及びキャッシュ224が格納される。
ストレージ制御プログラム210には、OS200によって、CPU101やメモリ102が提供される。OS200によりストレージ制御プログラム210に割り当てられたメモリ102の領域は、ストレージ制御プログラム210におけるアドレス空間、すなわち、仮想アドレス空間300として管理されている。仮想アドレス空間300においては、物論アドレス変換テーブル301、論物アドレス変換テーブル302、モニタ情報303、キャッシュ304が仮想的に格納されている。すなわち、仮想アドレス空間300の物論アドレス変換テーブル301の実体は、メモリ102の物論アドレス変換テーブル221であり、論物アドレス変換テーブル302の実体は、メモリ102の論物アドレス変換テーブル222であり、モニタ情報303の実体は、メモリ102のモニタ情報223であり、キャッシュ304の実体は、メモリ102のキャッシュ224である。
ストレージ制御プログラム210を実行するCPU101は、仮想アドレス空間300上の仮想アドレスを用いて各種情報に対するアクセス要求を発行することにより、各種情報を取得する。このとき、OS200を実行するCPU101は、ストレージ制御プログラム210からのアクセス要求を検出すると、この仮想アドレスをメモリ102上の位置を示す物理アドレスに変換し、物理アドレスを用いてメモリ102上に格納された情報にアクセスを行い、ストレージ制御プログラム210にアクセス結果を返す。
不揮発媒体103には、制御用情報の中の物論アドレス変換テーブル310が格納されている。
ドライブ104には、所定の時点(例えば、ストレージ装置100の前回の終了時点)におけるメモリ102の制御用情報に相当する制御用情報320と、ドライブ104に正常な制御用情報320が格納されているか否かを示す正常格納情報の一例としての格納済みフラグ321が格納されている。格納済みフラグは、ストレージ装置の稼働時には削除され、正常に稼働終了した場合に格納する。ドライブ104に格納される制御用情報320としては、メモリ102における、物論アドレス変換テーブル221と、論物アドレス変換テーブル222と、モニタ情報223と、キャッシュ224とを含んでいてもよいし、物論アドレス変換テーブル221のみであってもよい。
次に、論物アドレス変換テーブル222について詳細に説明する。
ストレージ制御プログラム210は、ドライブ104にI/O要求を発行するプログラムである。ストレージ制御プログラム210は、物理アドレスと、論理アドレスとを使用する。
物理アドレスは、I/O要求を発行する対象のドライブ104のデータの格納位置を一意に識別する値である。物理アドレスは、ドライブ104の記憶領域に対して、シーケンシャルに番号を割り当てたものとなっている。
一方、論理アドレスは、ドライブ104へのアクセスを容易にするためにストレージ制御プログラム210により生成される値であり、ストレージ制御プログラム210が容易に管理できるように、論理的な記憶領域についてのスペースに番号を割り当てたものとなっている。論理アドレスは、例えば、ホスト計算機120に対して通知されるアドレスであり、ホスト計算機120からのI/O要求には、論理アドレスが指定される。論理アドレスと、物理アドレスとは、一対一で対応する。
論物アドレス変換テーブル222は、論理アドレスを物理アドレスに変換する、すなわち、論理アドレスから物理アドレスを一意に特定するためのテーブルである。論理アドレスは、スペースに番号を割り当てたものとなっており、論理アドレス空間は、物理アドレス空間と比較して大きなサイズとなる。そのため、論理アドレスと物理アドレスとの対応関係を1段のテーブルで管理すると、論理アドレス変換テーブル222のデータ量が大きくなってしまう。そこで、本実施形態では、論理アドレス変換テーブル222のデータ量の巨大化を防ぐために、多段のテーブル構成としている。
図4は、第1実施形態に係る論物アドレス変換テーブルの構成図である。
論物アドレス変換テーブル222は、多段テーブル400と、空領域リスト410とを有する。空領域リスト410は、多段テーブル400に割当可能な空領域のエントリ411のリストである。空領域リスト410で管理されるエントリ411には、値が格納されていない。空領域リスト410のエントリ411は、多段テーブル400へのエントリの割当が必要となった時点で、空領域リスト410から解放され、多段テーブル400に割り当てられる。
多段テーブル400は、複数段のテーブル401〜407で構成されている。各段のテーブルは、対象となる論理アドレスに対応するエントリを管理しており、論理アドレスに対応するエントリを識別して、識別したエントリの値によって、下段のテーブルへと辿ることができるようになっている。そして、論理アドレスによって一意に辿ることのできる最下段のテーブルのエントリから、この論理アドレスに対応する物理アドレスを取得することができる。なお、対象となる論理アドレスに対して、物理アドレスが未割当の場合には、論理アドレスによって識別されるエントリが空となっている。例えば、この論理アドレスに物理アドレスを割り当てる場合には、空領域リスト410の末尾のエントリ411を開放し、このエントリを、論理アドレスによって識別されるテーブルのエントリとして用い、このエントリを、割り当てる物理アドレスを取得できるように設定する。
ここで、論物アドレス変換テーブル222を用いて、論理アドレス422(例えば、abcdef)に対応する物理アドレスを取得する例について説明する。まず、一段目のテーブル401から論理アドレス422に対応するエントリ(例えば、000のエントリ)を識別する。このエントリから、2段目のテーブル402に辿ることができる。次いで、2段目のテーブル402から論理アドレス422に対応するエントリを識別する。このエントリから、3段目のテーブル404を辿ることができ、同様にして、4段目のテーブル406に辿ることができる。4段目のテーブル406から論理アドレス422に対応するエントリを識別する。このエントリのポインタを辿ることにより、物理アドレス432(例えば、123456)を取得することができる。
次に、論物アドレス変換テーブル222に対して、論理アドレス421(例えば、02468a)に対応する物理アドレスを登録する例について説明する。まず、論理アドレス421により、各段のテーブルを辿ることにより、4段目のテーブル407を特定することができる。ここで、テーブル407から論理アドレス421に対応するエントリを識別すると、物理アドレスが未割当であるので、エントリが空となっている。この際、空領域リスト410の末尾のエントリ411を空領域リスト410から解放し、4段目のテーブル407のエントリとして割り当てる。次いで、このエントリに、論理アドレス421に割り当てる物理アドレス431へのポインタを格納する。これにより、以降において、論理アドレス421に対応する物理アドレス431を取得することができるようになる。
次に、物論アドレス変換テーブル221について詳細に説明する。
図5は、第1実施形態に係る物論アドレス変換テーブルの構成図である。
物論アドレス変換テーブル221は、物理アドレスを論理アドレスに変換する、すなわち、物理アドレスから論理アドレスを一意に特定するためのテーブルである。物理アドレス空間は、論理アドレス空間よりもサイズが小さい。このため、物論アドレス変換テーブル221は、論物アドレス変換テーブル222とは異なり、1段のテーブルで構成してもで、比較的データ量を抑えることができる。そこで、本実施形態では、物論アドレス変換テーブル221を1段のテーブルとして構成している。
物論アドレス変換テーブル221は、各物理アドレスに対応するエントリを格納する。各エントリは、例えば、物理アドレスの昇順に並べられている。物論アドレス変換テーブル221のエントリは、物理アドレス501と、論理アドレス502とのフィールドを含む。物理アドレス501には、ドライブ104の物理アドレスが格納される。論理アドレス502には、エントリの物理アドレス501の物理アドレスに割り当てられている論理アドレスが格納される。
図5の物論アドレス変換テーブル221の一行目のエントリによると、物理アドレス432(値が1234356)から、論理アドレス422(値がabcdef)を取得することができる。
ここで、I/O要求により、ドライブ104のデータにアクセスするためには、論理アドレスと物理アドレスとを変換するために必要な論理アドレスと物理アドレスとの対応関係が必須となる。論理アドレスと物理アドレスとの対応関係は、物論アドレス変換テーブル221と、論物アドレス変換テーブル222とに管理されている。これら両方のテーブルが消失してしまうと、論理アドレスと物理アドレスとの対応関係を生成できない。したがって、物論アドレス変換テーブル221又は論物アドレス変換テーブル222のいずれか一方の情報が、I/O要求に対応するデータにアクセスするために必須な情報であり、且つ消失時に生成できない情報ということができる。本実施形態では、物論アドレス変換テーブル221は1段のテーブルでありテーブルサイズが小さいこと、および、I/O要求毎に参照しないことから、物論アドレス変換テーブル221を保存対象情報としている。なお、制御用情報における物論アドレス変換テーブルを含む一部の情報を保存対象情報としてもよい。
次に、モニタ情報223について詳細に説明する。
図6は、第1実施形態に係るモニタ情報の構成図である。
モニタ情報223は、ストレージ装置100のリソースの情報が格納される。モニタ情報223は、リソース毎のエントリを格納する。モニタ情報223のエントリは、種別511と、ID512と、更新時刻513と、リードIOPS514と、ライトIOPS515と、リード転送速度516と、ライト転送速度517と、キャッシュヒット率518とのフィールドを含む。
種別511には、エントリに対応するリソースの種別が格納される。ID512には、エントリに対応するリソースを一意に識別するIDが格納される。更新時刻513には、エントリの内容を更新した更新時刻が格納される。リードIOPS514には、エントリに対応するリソース(ここでは、ボリューム)におけるリードに関するIOPS(Input/Output per second)が格納される。ライトIOPS515には、エントリに対応するリソース(ここでは、ボリューム)におけるライトに関するIOPSが格納される。リード転送速度516には、エントリに対応するリソースにおけるリード時の転送速度が格納される。ライト転送速度517には、エントリに対応するリソースにおけるライト時の転送速度が格納される。キャッシュヒット率518には、エントリに対応するリソースにおけるキャッシュのヒット率が格納される。
なお、モニタ情報223に登録するリソースとしては、ボリューム以外のリソース、例えば、CPU等であってもよい。また、エントリに格納するリソースの情報としては、上記した以外の性能に関する情報を含んでもよく、また、ボリュームの使用率等のリソースの使用状況に関する情報を含んでもよい。
例えば、モニタ情報223のエントリ520は、IDが002で識別されるボリューム(Vol)についての情報が格納されている。このエントリによると、エントリの情報は、10:15に更新されており、ボリュームのリードIOPSが10kであり、ライトIOPSが0であり、リード転送速度が10000MB/sであり、ライト転送速度が0MB/sであり、キャッシュヒット率が80%であることがわかる。
次に、キャッシュ224について説明する。
図7は、第1実施形態に係るキャッシュの構成図である。
キャッシュ224は、アクセスにおける応答性能を向上するために一部のユーザデータを管理する。キャッシュ224は、キャッシュしたユーザデータごとのエントリを格納する。キャッシュ224のエントリは、論理アドレス521と、格納データ522とのフィールドを含む。論理アドレス521には、エントリに対応する論理アドレスが格納される。格納データ522には、エントリの論理アドレス521の論理アドレスに対応するドライブ104の物理アドレスに格納されているユーザデータが格納される。
例えば、キャッシュ224のエントリ530には、論理アドレスabcdefで識別されるドライブ104の記憶領域のユーザデータである0x101010が格納されている。なお、キャッシュ224を、論物アドレス変換テーブル222と同様に多段テーブルで管理してもよい。
次に、ストレージ装置100による処理動作について説明する。
図8は、第1実施形態に係るI/O処理のフローチャートである。
ストレージ制御プログラム210のI/O実施プログラム212(厳密には、I/O実施プログラム212を実行するCPU101)は、ホスト計算機120からI/O要求を受信すると(ステップ601)、I/O要求の発行先のドライブ104の物理アドレスを取得する物理アドレス取得処理(図9参照)を実行する(ステップ602)。
次いで、I/O実施プログラム212は、ステップ602で取得した物理アドレスで識別されるドライブ104の記憶領域に対してデータアクセス処理(図10参照)を実施することにより、ドライブ104に対するアクセスを行う(ステップ603)。
次いで、I/O実施プログラム212は、データアクセス処理の結果を、ホスト計算機120に応答(通知)する(ステップ604)。
次に、物理アドレス取得処理(ステップ602)について説明する。
図9は、第1実施形態に係る物理アドレス取得処理のフローチャートである。なお、図9及び以降の図面において、物論アドレス変換テーブルを物論テーブルと記載し、論物アドレス変換テーブルを論物テーブルと記載する場合がある。
ストレージ制御プログラム210のI/O実施プログラム212(厳密には、I/O実施プログラム212を実行するCPU101)は、受信したI/O要求に含まれるI/O要求先の論理アドレス(この処理の説明において、対象論理アドレスという)を取得し、メモリ102の論物アドレス変換テーブル222を参照し、対象論理アドレスに対応する物理アドレスを探す(ステップ701)。
この結果、対象論理アドレスに対応する物理アドレスが論物アドレス変換テーブル222に格納されている場合(ステップ701:アドレスあり)には、I/O実施プログラム212は、この物理アドレスを取得し(ステップ702)、物理アドレス取得処理を終了する。
一方、対象論理アドレスに対応する物理アドレスが論物アドレス変換テーブル222に格納されていない場合(ステップ701:アドレスなし)には、I/O実施プログラム212は、物論アドレス変換テーブル221を参照し、対象論理アドレスを探す(ステップ703)。
この結果、対象論理アドレスが物論アドレス変換テーブル221に格納されている場合(ステップ703:アドレスあり)には、電断等によって論物アドレス変換テーブル222に対象論理アドレスについての物理アドレスが格納されていないことを意味しているので、I/O実施プログラム212は、物論アドレス変換テーブル221を参照し、対象論理アドレスに対応する物理アドレスを取得し(ステップ704)、処理をステップ709に進める。
一方、対象論理アドレスが物論アドレス変換テーブル221に格納されていない場合(ステップ703:アドレスなし)には、この論理アドレスには物理アドレスが割り当てられていないことを意味しており、I/O実施プログラム212は、I/O要求のアクセス種別を確認する(ステップ705)。
この結果、I/O要求のアクセス種別がライトである場合(ステップ705:ライト)には、I/O実施プログラム212は、対象論理アドレスに対応する物理アドレスを割り当て(ステップ706)、不揮発媒体103の物論アドレス変換テーブル310に、対象論理アドレスと割り当てた物理アドレスとの組を登録し(ステップ707)、仮想アドレス空間300の物論アドレス変換テーブル301に、対象論理アドレスと割り当てた物理アドレスとの組を格納する(ステップ708)。I/O実施プログラム212により、仮想アドレス空間300の物論アドレス変換テーブル301に、対象論理アドレスと割り当てた物理アドレスとの組が格納されると、OS200によって、仮想アドレス空間300の領域に対応するメモリ102の物論アドレス変換テーブル221に、対象論理アドレスと割り当てた物理アドレスとの組が格納されることとなる。
ステップ704又はステップ708を実施した後には、I/O実施プログラム212は、対象論理アドレスと、対応する物理アドレスとの組を論物アドレス変換テーブル222に登録し(ステップ709)、物理アドレス取得処理を終了する。
一方、ステップ705で、I/O要求のアクセス種別がリードである場合(ステップ705:リード)には、I/O実施プログラム212は、ゼロが格納されている領域(ゼロ格納済領域)の物理アドレスを取得し(ステップ710)、物理アドレス取得処理を終了する。
I/O要求毎に実施される物理アドレス取得処理においては,論物アドレス変換テーブルに物理アドレスが格納済であれば,論物アドレス変換テーブルへのアクセスのみで物理アドレス取得が可能である。
次に、データアクセス処理(ステップ603)について説明する。
図10は、第1実施形態に係るデータアクセス処理のフローチャートである。
ストレージ制御プログラム210のI/O実施プログラム212(厳密には、I/O実施プログラム212を実行するCPU101)は、受信したI/O要求に含まれるアクセス種別を確認する(ステップ801)。
この結果、アクセス種別がライトである場合(ステップ801:ライト)には、I/O実施プログラム212は、キャッシュ224の論理アドレス521にI/O要求のアクセス対象のアドレス(アクセス対象アドレス)を格納し、格納データ522に、このI/O要求でライトする対象のデータ(ライトデータ)を格納する(ステップ802)。次いで、I/O実施プログラム212は、ステップ602で取得した物理アドレスによって識別されるドライブ104の記憶領域に対して、ライトデータを格納し(ステップ803)、データアクセス処理を終了する。
一方、ステップ801で、アクセス種別がリードである場合(ステップ801:リード)には、I/O実施プログラム212は、キャッシュ224を参照し、論理アドレス521に、I/O要求のアクセス対象アドレスが格納されているかを探す(ステップ804)。
この結果、論理アドレス521に、I/O要求のアクセス対象アドレスが格納されている場合(ステップ804:あり)には、I/O実施プログラム212は、対応するエントリの格納データ522からデータを取得(リード)し(ステップ805)、データアクセス処理を終了する。
一方、論理アドレス521に、I/O要求のアクセス対象アドレスが格納されていない場合(ステップ804:なし)には、I/O実施プログラム212は、ステップ602で取得した物理アドレスによって識別されるドライブ104の記憶領域からデータを取得(リード)し(ステップ806)、データアクセス処理を終了する。
次に、モニタ情報取得処理について説明する。
モニタ情報取得処理は、対象リソースをモニタして得られるモニタ情報を取得する処理であり、例えば、定期的に実施されてもよく、I/O処理の延長としてモニタ情報223のエントリ520に格納する情報が更新されたことを契機として実施されてもよく、また、ユーザによる指示を契機として実施されてもよい。
図11は、第1実施形態に係るモニタ情報取得処理のフローチャートである。
ストレージ制御プログラム210のリソース管理プログラム211(厳密には、リソース管理プログラム211を実行するCPU101)は、対象リソースについてのモニタ情報223のエントリ520に格納する情報を取得し、モニタ情報223に格納し(ステップ901)、モニタ情報取得処理を終了する。なお、モニタ情報を収集する対象リソースとしては、例えば、ストレージ制御プログラム210が制御対象とする全リソースとしてもよいし、ユーザにより指示されたリソースのみとしてもよい。
次に、モニタ情報表示処理について説明する。
モニタ情報表示処理は、例えば、ユーザによる指示を契機として実施されてもよく、定期的に実施されてもよい。
図12は、第1実施形態に係るモニタ情報表示処理のフローチャートである。
ストレージ装置100内のストレージ制御プログラム210のリソース管理プログラム211は、メモリ102のモニタ情報223に格納されているエントリ520を、管理用計算機110のリソース管理プログラム111に送信する(ステップ1001)。
一方、管理用計算機110のリソース管理プログラム111(厳密には、リソース管理プログラム111を実行する管理用計算機110のプロセッサ)は、ストレージ装置100のストレージ制御プログラム210から送信されたモニタ情報223のエントリを受信する(ステップ1002)。
次いで、リソース管理プログラム111は、受信したモニタ情報のエントリ520の更新時刻513の更新時刻を、前回更新時刻、すなわち、前回の表示時に使用したモニタ情報223における更新時刻と比較する(ステップ1003)。
この結果、受信したモニタ情報に格納されている更新時刻が、前回更新時刻と等しい場合(ステップ1003:前回更新時刻と等しい)には、現在の表示が最新の状態であるので、リソース管理プログラム111は、処理を終了する。
一方、受信したモニタ情報に格納されている更新時刻が、前回更新時刻と異なる場合(ステップ1003:前回更新時刻と異なる)には、モニタ情報223が新たに更新されたことを意味しているので、リソース管理プログラム111は、性能情報表示画面1100(図13参照)に、受信したモニタ情報323のエントリ520から得られる情報を表示する(ステップ1004)。次いで、リソース管理プログラム111は、前回更新時刻を、ステップ1002で受信したモニタ情報223に格納されている更新時刻に変更し(ステップ1005)、モニタ情報表示処理を終了する。
なお、管理用計算機110のリソース管理プログラム111は、モニタ情報の表示を行う処理以外に、例えば、モニタ情報を用いてストレージ装置100におけるリソースの割り当てを変更する処理を行って、ストレージ装置100における負荷分散を実施してもよい。
次に、性能情報表示画面1100について説明する。
図13は、第1実施形態に係る性能情報表示画面の構成図である。
性能情報表示画面1100には、性能情報表示領域1101と、更新ボタン1102と、閉じるボタン1103とが表示される。
性能情報表示領域1101には、モニタ情報223から得られる、対象リソースについての性能に関する時系列のグラフが表示される。性能情報表示領域1101には、例えば、モニタ情報223のリード転送速度516から得られるリード転送速度に基づいて、対象リソースについての時系列のグラフが表示される。図13の例では、時間9:15〜10:15までのVol1001、V0l1102で識別されるボリュームについてのリード転送速度を示すグラフが表示されている。なお、性能情報表示領域1101に表示する時刻範囲は、図13の例と異なってもよい。また、性能情報表示領域1101で表示対象とする性能情報の種別は、リード転送速度に限られず、他の性能情報、例えば、IOPSやキャッシュヒット率であってもよい。また、モニタ情報223に、ボリュームの使用率の情報が格納されている場合は、このボリュームの使用率の情報を表示してもよい。
更新ボタン1102は、モニタ情報表示処理の実行を受け付けるボタンである。ユーザにより更新ボタン1102が押下されると、リソース管理プログラム111は、図12に示すモニタ情報表示処理の実行を開始する。これにより、性能情報表示画面1100には、最新の性能情報が表示されることとなる。なお、更新ボタン1102の押下を契機として、ストレージ装置100が図11に示すモニタ情報取得処理の実行を開始するようにしてもよい。
閉じるボタン1103は、性能情報表示画面1100を閉じる指示を受け付けるボタンである。ユーザにより閉じるボタン1103が押下されると、リソース管理プログラム111は、性能情報表示画面1100を閉じて、動作を終了する。
次に、ストレージ装置100が起動された際に実行される起動処理について説明する。
図14は、第1実施形態に係る起動処理のフローチャートである。
ストレージ制御プログラム210(厳密には、ストレージ制御プログラム210を実行するCPU101)は、OS220から割り当てられたメモリ102の空間を自身における仮想アドレス空間300に対応付けることにより、仮想アドレス空間300を生成する処理を行う(ステップ1201)。
次いで、ストレージ制御プログラム210は、ドライブ104に格納されている格納済みフラグ321を参照する(ステップ1202)。この結果、格納済みフラグ321がオンである場合(ステップ1202:オン)には、正常に制御用情報がドライブ104に格納されていることを意味しているので、ストレージ制御プログラム210は、ドライブ104に格納されている制御用情報320を仮想アドレス空間300内に書き込み(ステップ1203)、処理をステップ1208に進める。
一方、格納済みフラグ321がオフである場合(ステップ1202:オフ)には、ドライブ104に正常に制御用情報が格納されていないことを意味しているので、ストレージ制御プログラム210は、不揮発媒体103に格納されている物論アドレス変換テーブル310を仮想アドレス空間300内に書き込む(ステップ1204)。
次いで、ストレージ制御プログラム210は、仮想アドレス空間300上の物論アドレス変換テーブル301を参照する(ステップ1205)。この結果、物論アドレス変換テーブル301に物理アドレスと論理アドレスの組(エントリ)が格納されている場合(ステップ1205:エントリあり)には、そのエントリに対応する物理アドレスと論理アドレスとの対応関係を論物アドレス変換テーブルに登録する必要があるので、ストレージ制御プログラム210は、論物テーブル更新処理(図15参照)を実行し(ステップ1206)、処理をステップ1208に進める。なお、ステップ1206においては、ストレージ制御プログラム210は、物理アドレスが未割当である容量分の空領域を空領域リストに格納する。
一方、物論アドレス変換テーブル301にエントリが格納されていない場合(ステップ1205:空)には、ストレージ装置100のドライブ104にはユーザデータが格納されていないことを意味しているので、ストレージ制御プログラム210は、論物アドレス変換テーブル222を新規に仮想アドレス空間300内に生成し(ステップ1207)、処理をステップ1208に進める。なお、ステップ1207では、ストレージ制御プログラム210は、論物アドレス変換テーブル222に格納されるエントリには空を設定し、割り当て可能な容量分の空領域を空領域リスト410に格納する。
ステップ1208では、ストレージ制御プログラム210は、ドライブ104の格納済みフラグ321をオフに設定し、処理を終了する。
なお、ステップ1202で格納済みフラグがオフの場合においては、モニタ情報223及びキャッシュ224は、新規に生成されることとなる。
上記した起動処理によると、停電等により電源の供給が遮断され(電断が発生し)、ドライブ104に制御用情報320を正常に格納できなかった場合であっても、不揮発媒体103の物論アドレス変換テーブル310により、論物アドレス変換テーブル302(222も同様)を正確に再生することができ、以降において、論物アドレス変換テーブル302により、論理アドレスに対応する物理アドレスを適切に特定して、対応するドライブ114の領域にアクセスすることができる。
次に、論物テーブル更新処理(ステップ1206)について説明する。
図15は、第1実施形態に係る論物テーブル更新処理のフローチャートである。
ストレージ制御プログラム210(厳密には、ストレージ制御プログラム210を実行するCPU101)は、物論アドレス変換テーブル221を参照する(ステップ1701)。この結果、物論アドレス変換テーブル301内に論物アドレス変換テーブル302への更新を実施していない、物理アドレスと論理アドレスとの組がない場合(ステップ1701:未更新アドレスなし)には、ストレージ制御プログラム210は、物論アドレス変換テーブル301に登録されている、すべての物理アドレスと論理アドレスとの組について、論物アドレス変換テーブル302に反映させたことを意味しているので、論物テーブル更新処理を終了する。
一方、物論アドレス変換テーブル301内に論物アドレス変換テーブル302の更新を実施していない、物理アドレスと論理アドレスとの組がある場合(ステップ1701:未更新アドレスあり)には、ストレージ制御プログラム210は、論物アドレス変換テーブル302への更新を実施していない、物理アドレスと論理アドレスとの組を1つ取得する(ステップ1702)。
次いで、ストレージ制御プログラム210は、論物アドレス変換テーブル302の1段目のテーブルを参照対象とし(ステップ1703)、ステップ1702で取得した論理アドレスに基づいて、参照対象のテーブル内のエントリを識別する(ステップ1704)。
この結果、識別したエントリが空ではない場合(ステップ1705:空ではない)には、ストレージ制御プログラム210は、処理をステップ1708に進める。一方、識別したエントリが空の場合(ステップ1705:空)には、ストレージ制御プログラム210は、空領域リスト410からエントリを取得し(ステップ1706)、取得したエントリを、識別したエントリとして割り当て(ステップ1707)、処理をステップ1708に進める。
ステップ1708では、ストレージ制御プログラム210は、参照対象のテーブルが最終段であるか否かを判定する。
この結果、参照対象のテーブルが最終段ではない場合(ステップ1708:最終段ではない)には、ストレージ制御プログラム210は、ステップ1705で識別したエントリから次段のテーブルを識別して参照対象とし(ステップ1709)、処理をステップ1704に進める。
一方、参照対象のテーブルが最終段である場合(ステップ1708:最終段)には、ストレージ制御プログラム210は、ステップ1705で識別したエントリ、又はステップ1707で割り当てたエントリに対して、ステップ1702で取得した物理アドレスを登録し、処理をステップ1701に進める。
この論物テーブル更新処理によると、不揮発媒体103に格納されていた物論アドレス変換テーブル310に基づいて生成された物論アドレス変換テーブル301により、その状態に対応する論物アドレス変換テーブル302を適切に再生することができる。
次に、ストレージ装置100を終了させる場合の終了処理について説明する。
図16は、第1実施形態に係る終了処理のフローチャートである。
ストレージ制御プログラム210(厳密には、ストレージ制御プログラム210を実行するCPU101)は、プログラムの終了要求を受信する(ステップ1301)と、後続の処理を実行する。なお、終了要求は、ユーザの指示に基づいて発行されてもよいし、ストレージ制御プログラム210が自身の異常等を検出して自身に対して発行してもよい。
次いで、ストレージ制御プログラム210は、I/O要求の受信を終了する(ステップ1302)。次いで、ストレージ制御プログラム210は、受信済のI/O要求をすべて実行し、実行結果を要求元に応答する(ステップ1303)。
次いで、ストレージ制御プログラム210は、仮想アドレス空間300に格納されている制御用情報をドライブ104に転送して、制御用情報320を作成する(ステップ1304)。次いで、ストレージ制御プログラム210は、格納済みフラグ321をオンに設定し(ステップ1305)、自身を終了する(ステップ1306)。
この終了処理によると、I/O要求に対応する処理を行った後における仮想アドレス空間300に格納されている制御用情報、すなわち、メモリ102に格納されている制御用情報をドライブ104に格納することができ、このように、メモリ102に格納されている制御用情報をドライブ104に正常に格納することができた後に、格納済みフラグ321をオンとすることができる。このため、格納済みフラグ321がオンであるによって、ドライブ104の制御用情報が終了処理で正しく格納された制御用情報であることを表すことができる。
以上説明したように、第1実施形態に係る計算機システムでは、物論アドレス変換テーブル301(222と同様)に更新があった場合に、不揮発媒体103の物論アドレス変換テーブル310についても更新するようにしたので、物論アドレス変換テーブル310の最新の状態を電断が発生した時に消失してしまうことがなく、電断後にストレージ装置100を起動した場合には、物論アドレス変換テーブル310に基づいて、I/O要求の論理アドレスに対応する物理アドレスを取得することができるので、適切にデータにアクセスすることができる。
次に、本発明の第2実施形態に係る計算機システムについて説明する。なお、第2実施形態においては、第1実施形態に係る計算機システムと異なる部分を中心に説明する。
まず、第2実施形態に係る計算機システムの全体構成について説明する。
図17は、第2実施形態に係る計算機システムの全体構成図である。
第2実施形態に係る計算機システム1Aは、第1実施形態に係る計算機システム1における不揮発媒体103として、不揮発媒体103の一例としての不揮発メモリ1301を有するようにしたシステムである。不揮発メモリ1301は、例えば、FM(Flash Memory)、PRAM(Phase-change Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)であってよい。
図18は、第2実施形態に係る不揮発メモリに格納された情報を説明する図である。
第2実施形態の不揮発メモリ1301は、第1実施形態のメモリ102に格納されていた制御用情報である、物論アドレス変換テーブル221、論物アドレス変換テーブル222、モニタ情報223、及びキャッシュ224を格納している。なお、第2実施形態においては、メモリ102は、物論アドレス変換テーブル221、論物アドレス変換テーブル222、モニタ情報223、及びキャッシュ224を格納していない。また、第2実施形態のドライブ104は、制御用情報320を格納していなくてよい。
ストレージ制御プログラム210の仮想アドレス空間300には、OS200によって不揮発メモリ1301の記憶領域が割り当てられている。なお、第1実施形態と第2実施形態とでは、仮想アドレス空間300を同一にすることができるので、ストレージ制御プログラム210は、仮想アドレス空間300に実際に割り当てられている領域が、メモリ102であるか不揮発メモリ1301であるかによって、物論アドレス変換テーブル221、論物アドレス変換テーブル222、モニタ情報223、及びキャッシュ224に対するデータのアクセス処理を変える必要がない。
次に、第2実施形態に係る計算機システム1Aにおける処理動作について説明する。
計算機システム1Aにおいては、図8に示すI/O処理と同様な処理を実行する。なお、図8における各ステップにおいては、第1実施形態に係る計算機システムの処理と異なる部分がある場合がある。これについては、以下に記載する。
計算機システム1Aにおける物理アドレス取得処理では、図9に示す物理アドレス取得処理において、ステップ707の処理を実行しなくてもよい。
また、計算機システム1Aにおける起動処理では、図14に示す起動処理におけるステップ1201において、ストレージ制御プログラム210(厳密には、ストレージ制御プログラム210を実行するCPU101)は、OS220から割り当てられた不揮発メモリ1301のメモリ空間を自身における仮想アドレス空間300に対応付けることにより、仮想アドレス空間を生成する処理を行う(ステップ1201)。そして、ステップ1201の処理が終了した後に、ステップS1205を実行する。そして、ステップS1205の結果、物論アドレス変換テーブル301にデータが格納されていない場合(ステップ1205:空)にステップ1207の処理を行い、データが格納されている場合には、処理を終了する。
また、計算機システム1Aにおける終了処理においては、図16に示す終了処理において、ステップ1304及びステップ1305を実行しない。
以上説明したように、第2実施形態に係る計算機システムでは、物論アドレス変換テーブル221、論物アドレス変換テーブル222、モニタ情報223、及びキャッシュ224を不揮発メモリ1301に格納して管理するようにしたので、これらの情報を電断時に消失してしまうことを防止でき、電断後にストレージ装置100を起動した場合に、I/O要求の論理アドレスに対応する物理アドレスを取得することができるので、適切にドライブ104のデータにアクセスすることができる。また、論物アドレス変換テーブル222、モニタ情報223、及びキャッシュ224をメモリ102に格納しないようにしているので、メモリ102の空き容量を多く確保することができる。
次に、本発明の第3実施形態に係る計算機システムについて説明する。なお、第3実施形態に係る計算機システムの全体構成は、第2実施形態に係る計算機システム1Aと同様にあり、ここでは、第1実施形態に係る計算機システムと異なる部分を中心に説明する。
図19は、第3実施形態に係る不揮発メモリに格納された情報を説明する図である。
メモリ102には、論物アドレス変換テーブル222、モニタ情報223、キャッシュ224が格納される。
不揮発媒体1301には、制御用情報の中の物論アドレス変換テーブル1601が格納されている。物論アドレス変換テーブル1601は、物論アドレス変換テーブル221と同様な構成である。
本実施形態においては、ストレージ制御プログラム210には、OS200によって、CPU101やメモリ102、不揮発メモリ1301が提供される。OS200によりストレージ制御プログラム210に割り当てられたメモリ102及び不揮発メモリ1301の領域は、ストレージ制御プログラム210におけるアドレス空間、すなわち、仮想アドレス空間300として管理されている。仮想アドレス空間300においては、物論アドレス変換テーブル301、論物アドレス変換テーブル302、モニタ情報303、キャッシュ304が仮想的に格納されている。本実施形態では、仮想アドレス空間300の物論アドレス変換テーブル301の実体は、不揮発メモリ1301の物論アドレス変換テーブル1601であり、論物アドレス変換テーブル302の実体は、メモリ102の論物アドレス変換テーブル222であり、モニタ情報303の実体は、メモリ102のモニタ情報223であり、キャッシュ304の実体は、メモリ102のキャッシュ224である。
ストレージ制御プログラム210を実行するCPU101は、仮想アドレス空間300上の仮想アドレスを用いて各種情報に対するアクセス要求を発行することにより、各種情報を取得する。このとき、OS200を実行するCPU101は、ストレージ制御プログラム210からのアクセス要求を検出すると、この仮想アドレスをメモリ102、又は不揮発メモリ1301上の位置を示す物理アドレスに変換し、物理アドレスを用いてメモリ102又は不揮発メモリ1301上に格納された情報にアクセスを行い、ストレージ制御プログラム210にアクセス結果を返す。したがって、本実施形態においては、ストレージ制御プログラム210においては、仮想アドレス空間300の領域の情報に対するアクセスにおいては、仮想アドレス空間300の情報の実体が、不揮発メモリ1301に格納されているか、メモリ102に格納されているかを意識することがない。
ドライブ104には、所定の時点(例えば、ストレージ装置100の前回の終了時点)におけるメモリ102の制御用情報に相当する制御用情報320と、ドライブ104に正常な制御用情報320が格納されているか否かを示す正常格納情報の一例としての格納済みフラグ321が格納されている。ドライブ104に格納される制御用情報320としては、物論アドレス変換テーブル221と、論物アドレス変換テーブル222と、モニタ情報223と、キャッシュ224とを含んでいてもよいし、物論アドレス変換テーブル221のみであってもよい。
次に、第3実施形態に係る計算機システムにおける処理動作について説明する。
計算機システムにおいては、図8に示すI/O処理と同様な処理を実行する。なお、図8における各ステップにおいては、第1実施形態に係る計算機システムの処理と異なる部分がある場合がある。これについては、以下に記載する。
計算機システムにおける物理アドレス取得処理では、図9に示す物理アドレス取得処理において、ステップ707の処理を実行しなくてもよい。
また、計算機システムにおける起動処理では、図14に示す起動処理におけるステップ1201において、ストレージ制御プログラム210(厳密には、ストレージ制御プログラム210を実行するCPU101)は、OS220から割り当てられた不揮発メモリ1301及びメモリ102のメモリ空間を自身における仮想アドレス空間300に対応付けることにより、仮想アドレス空間を生成する処理を行う(ステップ1201)。そして、ステップ1201以降の処理においては、ステップS1204以外の処理を実行する。
なお、第3実施形態においては、ドライブ104に制御用情報320を格納しないようにしてもよい。この場合においては、起動処理および終了処理におけるドライブ104との間の制御用情報の転送処理は実施しない。
以上説明したように、第3実施形態に係る計算機システムでは、物論アドレス変換テーブルを、不揮発メモリ1301で管理するようにし、メモリ102で管理しないようにしたので、I/O処理時に、論理アドレスに対して物理アドレスを新たに割り当てた際に、メモリ102に格納せずに済む。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、ストレージ装置をSDSとしていたが、本発明はこれに限られず、ストレージ装置は、バッテリを搭載している専用のストレージ装置であってもよい。この場合には、バッテリの電源障害等が発生した場合において、適切に障害前のデータに対してアクセスすることができる。
また、上記実施形態では、制御用情報をテーブル形式で管理していたが、本発明はこれに限られず、例えば、ログ形式の情報で管理してもよく、要は、更新結果を特定可能な情報を管理しておけばよい。例えば、物論アドレス変換情報については、不揮発媒体103又は不揮発メモリ1301においては、その全体のログを格納してもよく、ドライブ104に格納されているログ以降のログを格納するようにしてもよい。
また、上記実施形態では、図14に示す起動処理を実行し、起動時において、論物アドレス変換テーブル302を更新して最新の状態としていたが、本発明はこれに限られず、図14に示す起動処理を実行しないで、図8のI/O処理を実行するようにしてもよい。この場合においては、論物アドレス変換テーブル302に登録のない論理アドレスに対するI/O要求があった場合には、図9の物理アドレス取得処理におけるステップ703、704、及び709により、アクセスのあった論理アドレスの物理アドレスを取得して、論物アドレス変換テーブルを更新することができる。これにより、このI/O要求に対するデータをドライブ104から適切に取得することができる。このように、図14に示す起動処理を実行しない場合には、論物アドレス変換テーブル302の全体を復元する必要がなく、迅速にI/O処理を行うことができる。