(57)【特許請求の範囲】
【請求項１】
アプリケーションが動作するOSを有する第１の論理区画と、
RAID制御機能を有するストレージ制御部を有する第２の論理区画と、
RAID領域及びRAID構成に依存しない記憶領域であるRaw領域を含む記憶媒体と
を備える計算機であって、
前記第１の論理区画は、
前記アプリケーションからの第１のI/O要求に基づいて、前記第２の論理区画を介さずに前記Raw領域にアクセスし、
前記アプリケーションからの第２のI/O要求に基づいて、前記第２の論理区画に前記第２のI/O要求を送信し、
前記第２の論理区画は、
前記RAID制御機能により前記第２のI/O要求を処理し、前記RAID領域にアクセスする、
ことを特徴とする計算機。
【請求項２】
請求項１記載の計算機であって、
前記第２の論理区画が、複数の論理ボリュームを提供し、
前記複数の論理ボリュームが、前記第１のRAID領域に関連付いた論理ボリュームである第１の論理ボリュームと、前記Raw領域に関連付いた論理ボリュームである第２の論理ボリュームとを含み、
前記第１の論理区画が、アプリケーションが動作するOSを有し、
前記第１のRAID領域に関連付けられた領域は、前記第１の論理ボリュームが関連付けられたデバイスと、前記第１のRAID領域が前記第２の論理区画非経由で関連付けられたデバイスと、の両方が関連付けられ前記アプリケーション又は前記OSから認識される第１の仮想デバイスであり、
前記Raw領域に関連付けられた領域は、前記第２の論理ボリュームが関連付けられたデバイスと、前記Raw領域が前記第２の論理区画非経由で関連付けられたデバイスと、の両方が関連付けられ前記アプリケーション又は前記OSから認識される第２の仮想デバイスである
ことを特徴とする計算機。
【請求項３】
請求項２記載の計算機であって、
前記第１の論理区画は、管理情報を有し、
前記第１の論理区画は、前記管理情報に基づき前記第２の論理区画を介して前記記憶媒体にアクセスするか、前記第２論理区画を介さずに前記記憶媒体にアクセスするかを判定し、
前記管理情報が、前記第１及び第２の仮想デバイスの各々について、論理ボリュームが関連付けられたデバイスを経由するパスである第１パスと、前記第２の論理区画非経由のデバイスを経由するパスである第２パスとのうちのいずれのパスを使用するかを含む
ことを特徴とする計算機。
【請求項４】
請求項２又は３記載の計算機であって、
前記複数の論理ボリュームが、RAID構成に依存した第２の記憶領域である第２のRAID領域が関連付いた論理ボリュームである第３の論理ボリュームを含み、
前記第１及び前記第２の仮想デバイスを含みそれぞれが前記アプリケーション又は前記OSから認識される複数の仮想デバイスが、前記第３の論理ボリュームに関連付いたデバイスのみが関連付けられた第３の仮想デバイスを含む
ことを特徴とする計算機。
【請求項５】
請求項４記載の計算機であって、
前記１以上の記憶媒体は、第１の記憶媒体と、該第１の記憶媒体より低速かつ大容量の第２の記憶媒体とを含み、
前記第１の記憶媒体は、前記第１のRAID領域及び前記Raw領域を含み、
前記第２の記憶媒体は、前記第２のRAID領域を含む
ことを特徴とする計算機。
【請求項６】
請求項１乃至５のうちのいずれか１項に記載の計算機であって、
前記第２の論理区画は、第１のRAID制御機能及び外部ストレージ制御機能を有し、
前記第２の論理区画は、
受信したI/O要求が前記第１のI/O要求の場合、前記第１のRAID制御機能により前記第１のRAID領域へアクセスし、
受信したI/O要求が前記第２のI/O要求の場合、前記外部ストレージ制御機能により前記Raw領域へアクセスする
ことを特徴とする計算機。
【請求項７】
請求項１乃至６のうちのいずれか１項に記載の計算機であって、
前記第１の論理区画は、第２のRAID制御機能を有し、
前記第１の論理区画は、前記第１のI/O要求について前記第１のRAID領域へ前記第２の論理区画非経由でアクセスする場合、前記第２のRAID制御機能により前記RAID領域へアクセスする
ことを特徴とする計算機。
【請求項８】
請求項３記載の計算機であって、
前記第１の論理区画は、I/O要求キューとI/O要求処理とのうちの少なくとも１つの状態に基づいて、前記第１及び第２の仮想デバイスの少なくとも１つについて、使用するパスとして前記管理情報に設定されているパスを、前記第１パスから第２パスへ、又は、前記第２パスから前記第１パスへ変更する
ことを特徴とする計算機。
【請求項９】
請求項８記載の計算機であって、
前記I/O要求キュー及び前記I/O要求処理の各々の状態は、前記第１及び第２の仮想デバイスの少なくとも１つのアクセス頻度と、前記アプリケーション及び前記第２の論理区画の性能情報とに基づき算出される
ことを特徴とする計算機。
【請求項１０】
請求項１乃至９のうちのいずれか１項に記載の計算機であって、
前記第１の論理区画は、
前記第１のRAID領域に格納する前記I/O要求の対象のデータの一部にデータ分析の対象が含まれる場合、前記データ分析の対象を前記第１のRAID領域から前記Raw領域へ移行する
ことを特徴とする計算機。
【請求項１１】
請求項１乃至１０のうちのいずれか１項に記載の計算機であって、
前記第２の論理区画は、前記第２のI/O要求で指定の論理ブロックアドレスを物理ブロックアドレスに変換して前記第１のRAID領域へアクセスする
ことを特徴とする計算機。
【請求項１２】
請求項１乃至１１のうちのいずれか１項に記載の計算機であって、
前記１以上の記憶媒体は、第１の記憶媒体と、該第１の記憶媒体より低速かつ大容量の第２の記憶媒体とを含み、
前記第１の記憶媒体は、前記第１のRAID領域及び前記Raw領域を含み、
前記第２の記憶媒体は、第２のRAID領域を含み、
前記第２のRAID領域へのアクセスは、前記第２の論理区画経由ならば可能であるが、前記第２の論理区画非経由ならば不可能である
ことを特徴とする計算機。
【請求項１３】
請求項３に記載の計算機であって、
前記第１の論理区画が、
前記管理情報が、前記第１及び第２の論理区画から共有される情報である、
ことを特徴とする計算機。
【請求項１４】
請求項１乃至１３のうちのいずれか１項に記載の計算機であって、
前記第２の論理区画が、第１の論理ボリュームを提供し、
前記第１の論理ボリュームに、いずれかのRAID領域が関連付けられ、
前記第１の論理ボリュームから前記Raw領域へデータが移行される場合、前記第２の論理区画が、
前記第１の論理ボリュームのミラーボリュームとしての第２の論理ボリュームを生成し、
いずれかのRaw領域が関連付けられる第３の論理ボリュームを生成し、
前記第１の論理区画が、
前記アプリケーション又は前記OSから認識される対象の仮想デバイスに対して、前記第２の論理ボリュームへのパスを前記第２の論理区画経由のパスである第１パスとして関連付け、前記いずれかのRaw領域へのパスを前記第２の論理区画非経由のパスである第２パスとして関連付け、
前記第３の論理ボリュームの前記第２の論理ボリュームとの同期の完了後に、前記対象の仮想デバイスから前記第２の論理ボリュームへのパスを前記第２の論理ボリュームから前記第３の論理ボリュームへと張り替える
ことを特徴とする計算機。
【請求項１５】
アプリケーションが動作するOS及び前記アプリケーションから要求されるI/Oの送信先を有する管理情報を備える第１の論理区画、並びにRAID制御機能を有するストレージ機能を備える第２の論理区画に計算機を論理分割し、
RAID領域及びRAID構成に依存しない記憶領域であるRaw領域を含む記憶媒体と接続され、
前記アプリケーションから要求される第１のI/O要求に基づいて、前記管理情報を参照し、前記第２の論理区画を介さずに、前記第１の論理区画から前記Raw領域にアクセスし、
前記アプリケーションから要求される第２のI/O要求に基づいて、前記管理情報を参照し、前記第１論理区画から前記第２論理区画に前記第２のI/O要求を送信し、
前記第２論理区画が前記第２のI/O要求を受信した場合、前記RAID制御機能により前記第２のI/O要求を処理し、
前記第２の論理区画から前記記憶媒体にアクセスする
ことを特徴とする計算機のI/O要求処理方法。
【請求項１６】
アプリケーションが動作するOS、及び第１のRAID構成情報を有するI/O制御部を備える第１の計算機と、
第２のRAID構成情報を有するストレージ制御部を備える第２の計算機と、
RAID領域及びRAID構成に依存しない記憶領域であるRaw領域を含む記憶媒体と
を備える計算機システムであって、
前記I/O制御部は、
前記アプリケーションからI/O要求を受信し、
前記I/O要求のアクセス先である前記RAID領域に、前記第２の計算機を介して前記記憶媒体にアクセスするか、前記ストレージ制御部を介さずに前記記憶媒体にアクセスするか、を決定し、
前記第２の計算機を介して前記記憶媒体にアクセスする場合、前記ストレージ制御部に前記I/O要求を送信し、
前記第２の計算機を介さずに前記記憶媒体にアクセスする場合、前記第１のRAID構成情報を用いて前記記憶媒体にアクセスし、
前記ストレージ制御部は、
前記I/O制御部から前記I/O要求を受信した場合、前記第１のRAID構成情報を用いて前記記憶媒体にアクセスする
ことを特徴とする計算機システム。
【請求項１７】
請求項１６記載の計算機システムであって、
前記第１の計算機が、第１の管理情報を有し、
前記第１の計算機が、前記第１の管理情報に基づき、前記I/O要求のアクセス先である前記RAID領域に、前記第２の計算機を介して前記記憶媒体にアクセスするか、前記ストレージ制御部を介さずに前記記憶媒体にアクセスするか、を決定し、
前記第２の計算機が、前記第１の管理情報と同期する第２の管理情報を有する
ことを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージデバイスのアクセス性能を引き出しつつデータ保護を実現する計算機、計算機システム、及びI/O要求処理方法に関する。
【背景技術】
【０００２】
重要なデータに対するトランザクションなどの処理においては、高いデータ保護機能を備えるストレージシステムが必須である。一方で、リトライ処理が可能な一次処理や検索・分析処理などでは、高速性を重視する場合がある。
【０００３】
現在、サーバやストレージに搭載する高速なデバイスとしては、SSD (Solid State Drive)をPCIe (PCI Express)等の高速なプロトコルで接続するPCIe-SSDなどの製品や、SSDのみを搭載するAll Flash Storageなどの製品が登場している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2008-97225号公報
【特許文献２】米国特許2011/0289267号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１記載のように、HDD（Hard Disk Drive）などの低速デバイスとSSDなどの高速デバイスの両方を利用し、それぞれの特徴を活かした高性能なストレージシステムが提案されている。しかし、この場合、ストレージコントローラがボトルネックとなり、SSDなどの高速デバイスの性能が十分に引き出せないといった課題がある。一方、高速デバイスをサーバに直接接続することでストレージコントローラを経由せずに性能を引き出すことが可能であるが、ストレージコントローラが備えるデータ保護機能などのストレージ機能を活用できないといった課題がある。
【０００６】
また、特許文献２記載のように、高速デバイスを活用してアプリケーションのRead性能を向上させるために、高速デバイスをサーバに直接接続し、該当高速デバイスはキャッシュ用途として利用し、アプリケーションからのWriteについては外部に接続したストレージ装置に対してライトスルーにてデータを書き込み、高速アクセスとデータ保護とを両立する方法があるが、全てのwriteデータを必ずしもデータ保護する必要はなく、Write性能が十分に引き出せないという課題がある。
【０００７】
本発明の目的は、記憶デバイスに対するデータアクセスにおいて、ストレージコントローラの持つ機能性と、記憶デバイスの持つI/O性能を引出すことを両立することが可能なデータアクセス手段を提供することである。
【課題を解決するための手段】
【０００８】
本発明では、上記課題の少なくとも一つを解決するために、計算機を論理分割して、コンピュート用の論理区画とストレージ用の論理区画を準備する。コンピュート区画からのI/Oについて、I/Oの内容に応じてストレージ用の論理区画を経由するか否かを判断してI/Oの振り分けを行い、ストレージデバイス群にアクセスする。
【０００９】
また、本発明では、上記課題の少なくとも一つを解決するために、コンピュート用の計算機とストレージ用の計算機を準備し、コンピュート用の計算機からのI/Oについて、I/Oの内容に応じてストレージ用の計算機を経由するか否かを判断してI/Oの振り分けを行い、ストレージデバイス群にアクセスする。
【発明の効果】
【００１０】
本発明によれば、ストレージデバイスに対して高速でアクセスしたい場合と、データ保護したい場合とで、ユーザニーズに応じた柔軟な利用が可能な計算機を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施例１における計算機システムの構成例を説明するブロック図。
【図２】実施例１におけるノードの論理構成例を模式的に示す図。
【図３】実施例１におけるストレージ制御プログラムの構成例を示す図。
【図４】実施例１における共有テーブルの構成例を示す図。
【図５】実施例１におけるデバイス構成テーブルの構成例を示す図。
【図６】実施例１におけるRAID構成テーブルの構成例を示す図。
【図７】実施例１におけるボリューム構成テーブルの構成例を示す図。
【図８】実施例１におけるI/O制御プログラムの構成例を示す図。
【図９】実施例１における仮想デバイス構成テーブルの構成例を示す図。
【図１０】実施例１におけるストレージの論理構成例を模式的に示す図。
【図１１】実施例１における仮想デバイス構成部の処理例を示すフローチャート。
【図１２】実施例１におけるI/O振分部の処理例を示すフローチャート。
【図１３】実施例１におけるストレージ制御プログラムの論理構成例を模式的に示す図。
【図１４】実施例１におけるI/O処理のシーケンス図。
【図１５】実施例１におけるモード切り替え部の処理例を示すフローチャート。
【図１６】実施例１におけるデータ移行処理例を示すフローチャート。
【図１７】実施例１におけるデータ移行処理を模式的に示す図。
【図１８】実施例２における計算機システムの構成例を説明するブロック図。
【発明を実施するための形態】
【００１２】
以下、本発明の実施例を、図を用いて説明する。
【００１３】
なお、以下の実施例において、同一の構造部を持ち、同一の符号を付した部分は、原則として同一の動作を行うため、重複する説明を省略した。
【実施例１】
【００１４】
以下、図１乃至図１８を参照して本発明の第一の実施例を説明する。本実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【００１５】
図１は、本実施例における計算機システムの構成例を示すブロック図である。本実施例における計算機システムは、１つ以上のノード１０を備える。ノード１０は、ノード１０に１つ以上のメモリ１１、ＣＰＵ（Central Processing Unit）１２、I/O（Input/Output）デバイス１３、ＮＩＣ(Network Interface Card)１４、ストレージデバイス群１５及び１６を備える。ここでストレージデバイス群１５、１６は、複数のストレージデバイスの集合である。また、ストレージデバイス群１５と１６とでは、種類が異なる。例えば、一方はHard Disk Drive(HDD)であり、一方はSolid State Drive(SSD)などである。また、I/Oデバイス１３はHBA（Host Bus Adaptor）やCNA（Converged Network Adapter）、HCA(Host Channel Adaptor)、PCIeエクステンダなどである。なお、本実施例では、発明の好適な例として、高速なデバイスと低速なデバイスの２種類がノード１０に接続する形で説明をするが、デバイスの種類は２種類に限られず、１種類でも３種類以上であっても良い。
【００１６】
ノード１０のメモリ１１には、論理分割プログラム１００、I/O制御プログラム１１０、ストレージ制御プログラム１２０、共有テーブル１３０、１つ以上のOS（Operating System）/アプリ１５０を備える。論理分割プログラム１００は、１つ以上の論理区画をノード上に構築し、各論理区画では独立してＯＳを稼働できる。I/O制御プログラム１１０は、OS/アプリ１５０からのI/O要求を制御する。ストレージ制御プログラム１２０は、ストレージデバイス群１５、１６の管理機能とノード内およびノード外からのストレージI/Oを受け付け応答する共有ストレージ機能、およびデータ保護やデータコピー等の機能を提供する。共有テーブル１３０は、I/O制御プログラム１１０とストレージ制御プログラム１２０とで共有する情報を保持する。すなわち、メモリ１１は、共有テーブル１３０を含む共用部分、コンピュート区画用の部分およびストレージ区画用の部分から構成されることになる。
【００１７】
また、計算機システムには、ネットワーク２０、および管理計算機３０、管理計算機３０のメモリ３１、ＣＰＵ３２、ＮＩＣ３３、および管理プログラム３５を備える。なお、管理計算機３０およびネットワーク２０は必須ではなく、例えばあるノード１０に管理プログラム３５を備え、計算機システム全体の管理を行っても良い。
【００１８】
管理プログラム３５は、本計算機システム全体を管理する。管理計算機３０は、ネットワーク２０を介して、ノード１０から必要な情報の取得とノード１０の制御ができる。
【００１９】
また、ノード１０には、ストレージ装置４０が接続されている。ここでストレージ装置４０とは、ＳＡＮ（Storage Area Network）ストレージ装置４０などの共有ストレージ装置である。なお、ストレージ装置４０は必須でなない。なお、本実施例では、ストレージデバイスを記憶媒体として、ストレージ装置４０を種々のストレージ機能を有する機器として用いる。
【００２０】
図２は、ノード１０の論理的な構成例を示す。本実施例では、ノード１０には、論理分割プログラム１００により論理区画としてコンピュート区画１０１とストレージ区画１０２が構築される。なお、ここで論理分割プログラム１００は、ノード１０の
備えるＣＰＵ１２，メモリ１１、I/Oデバイス１３、ストレージデバイス群１５、１６などのハードウェアリソースを論理的に分割して各論理区画に割り当てることができる。なお、割り当て方法として、特定の論理区画に特定のハードリソースを優先して割り当てることで、該当リソースの性能保証や障害影響範囲の限定ができる。また、ハードリソースの共有も可能であり、特定の物理ハードリソースを複数の論理区画に対して共有に割り当てることにより実現する。
【００２１】
本実施例では、コンピュート区画１０１においては、メモリ１１上にI/O制御プログラム１１０およびOS/アプリ１５０を保持し、ＣＰＵ１２により実行される。ストレージ区画１０２にはストレージ制御プログラム１２０をメモリ１１上に保持し、ＣＰＵ１２により実行される。また、ストレージ区画１０２には、ストレージデバイス群１６が割り当てられている。また、コンピュート区画１０１、ストレージ区画１０２の両方に共有記憶部１０３およびストレージデバイス群１５が割り当てられ、共有されている。ここで共有記憶部１０３はノード１０のメモリ１１の一部であり、共有テーブル１３０を保持する。なお、本実施例ではI/O制御プログラム１１０はコンピュート区画１０１に存在するが、I/O制御プログラム１１０が論理分割プログラム１００の一部であっても良い。
【００２２】
図３は、本実施例のストレージ制御プログラム１２０のブロック図を示す。
【００２３】
デバイス管理部１２１は、ストレージ区画１０２に割り当てられたストレージデバイス群１５及び１６のデバイス構成とRAID(Redundant Array Inexpensive Disk)構成を管理する。ここでデバイス構成の管理とは、該当ストレージデバイスがストレージ区画１０２とコンピュート区画１０１とで共有可能か否か、該当ストレージデバイスをRAID構成で利用するか、及び直接アクセス(以下、Rawアクセスと呼ぶ)可能なデバイスとして利用するかを管理し、本管理情報はデバイス構成テーブル１３１に保持する。さらに、デバイス管理部１２１は、論理分割プログラム１００に対して、ストレージデバイスの論理区画への割り当て変更を指示できる。また、RAID構成の管理とは、該当ストレージデバイスのRAIDレベルと構成を管理し、本管理情報はRAID構成テーブル１３２に保持する。なお、デバイス管理部１２１は、管理GUI（Graphical User Interface）やAPI（Application Programming Interface）を備える。
【００２４】
I/O処理部１２２は、ホストからのI/O要求に対するキャッシュ制御とRAID構成部１２３および外部ストレージ接続部１２４へのI/OアクセスI/O要求と、ホストへの応答を実施する。さらに、I/O処理部１２２は、コピーやスナップショット、バックアップ、ミラーリング、ティアリングなどのストレージ装置特有の機能を備える。ここでホストとは、ノード１０内のコンピュート区画１０１、または当該ストレージ制御プログラムを備えるノード１０外部の別ノードやサーバである。
【００２５】
RAID構成部１２３は、I/O要求に対して論理ブロックアドレスと物理ブロックアドレスへの変換処理を実施してストレージデバイスに対してI/O要求を実施する。
【００２６】
外部ストレージ接続部１２４は、ストレージデバイスおよびストレージ装置４０に対してRawアクセスを実施するため、該当ストレージデバイスおよびストレージ装置４０に対応する論理ボリュームを構成し、I/O要求を該当ストレージデバイスおよびストレージ装置４０に対して実施する。
【００２７】
デバイスドライバ１２５は、ストレージデバイスのドライバ、コンピュート区画１０１との接続のためのドライバ、およびI/Oデバイス１３のドライバである。
【００２８】
図４は、本実施例の共有テーブル１３０のブロック図を示す。ボリューム構成テーブル１２６、デバイス構成テーブル１３１、RAID構成テーブル１３２、仮想デバイス構成テーブル１３３についてはそれぞれ図７、図５、図６、および図９にて詳細を述べる。
【００２９】
図５は、本実施例のデバイス構成テーブル１３１を示す。カラム５０１は、ストレージデバイスの識別子５０１を保持する。ここでいうストレージデバイスは、たとえばSSD単位や、PCI-SSDボード単位、およびSR-IOV(Single Root I/O Virtualization)などでPCI-SSDボードを論理的に分割した単位である。ストレージデバイス識別子としては、たとえば該当デバイスのPCIのBus、Device、Functionなどの番号を利用する。もちろん識別が可能であれば、特定の識別子を付与しておき、これをストレージデバイス識別子としても良い。
【００３０】
カラム５０２は、該当ストレージデバイスがストレージ区画１０２とコンピュート区画１０１とで共有可能か否かを保持する。本情報は、該当ストレージデバイスの仕様に基づき保持したり、APIにより取得したりする。カラム５０３は、該当ストレージデバイスをRAID構成で利用するか、Rawアクセスで利用するかを識別する。ここで“RAID”であればRAID構成、“Raw”であればRawアクセスで利用する。なお、本テーブル１３１はストレージ制御プログラム１２０やI/O制御プログラム１１０、管理プログラム３５によって作成されても良いし、あらかじめ保存されていても良い。
【００３１】
図６は、本実施例におけるRAID構成テーブル１３２を示す。カラム６０１は、アレイグループの識別子を保持する。カラム６０１は、該当アレイグループのRAIDレベル（RAID0,1,5,6等の情報）と、RAID構成としてデータドライブ数nとパリティドライブ数mを“nD+mP”として保持する。カラム６０３は、該当アレイグループに属するストレージデバイスの識別子を示す。このストレージデバイス識別子は、デバイス構成テーブル１３１のカラム５０１と対応する。なお、本テーブル１３２はストレージ制御プログラム１２０やI/O制御プログラム１１０、管理プログラム３５によって作成されても良いし、あらかじめ保存されていても良い。
【００３２】
図７は、本実施例におけるボリューム構成テーブル１２６を示す。カラム７０１はボリュームの識別子を保持する。カラム７０２は該当ボリュームに対応するストレージデバイスを保持する。ここで、RAID構成したストレージデバイスの場合であれば、アレイグループの識別子として“AG1”などと記載している。Rawアクセスのストレージデバイスの場合はストレージデバイスの識別子として“ストレージデバイス１”などと記載している。また、Rawアクセスのストレージでかつノード外部のストレージ装置４０であれば“ストレージ装置x”などと記載している。さらに、特定のボリュームと同じ内容を持つミラーボリュームを論理的に構成する場合には、たとえばボリューム“VOL a”のミラーであれば“VOL aミラー”などと記載している。
【００３３】
カラム７０３は割当先ホストの識別子を保持する。ここで割当とは、該当ボリュームが該当ホストからアクセス可能であることを示す。ここで、たとえばノード内のコンピュート区画１０１として、割当先の論理区画の識別子が“APP LPAR1”、さらに該当論理区画に対する論理的なボリュームの識別子（たとえばLUN（Logical Unit number）等）としてa,b,c…などの識別情報を組み合わせて、“APP LPAR1-a”などと記載している。また、ノード外のホストの場合は、WWNやSCSI Nameなどの識別子を保持する。さらに、割当先が存在しない場合は”なし”と記載している。なお、本テーブル１２６はストレージ制御プログラム１２０やI/O制御プログラム１１０、管理プログラム３５によって作成されても良いし、あらかじめ保存されていても良い。
【００３４】
図８は、本実施例のI/O制御プログラム１１０のブロック図を示す。
【００３５】
仮想デバイス構成部１１１は、OS/アプリ１５０からアクセスするブロックデバイスとして、仮想デバイスを構成する。詳細フローは図１１に述べる。
【００３６】
モード切り替え部１１２は、OS/アプリ１５０からストレージへのI/Oアクセスのパスを切り替える機能を備える。
【００３７】
I/O振分部１１３は、ストレージへのI/Oアクセスをモードによって振り分ける機能を備える。詳細フローは図１２に述べる。
【００３８】
RAID構成部１１４は、I/O要求に対して論理ブロックアドレスと物理ブロックアドレスへの変換処理を実施してストレージデバイスに対してI/O要求を実施する。
【００３９】
デバイスドライバ１１５は、ストレージデバイスのドライバ、ストレージ区画１０２への接続のためのドライバ、およびストレージI/Oのドライバである。
【００４０】
図９は、本実施例における仮想デバイス構成テーブル１３３を示す。カラム９０１は識別子として、ノード内のコンピュート区画１０１の論理区画の識別子を保持する。カラム９０２は該当論理区画における対象仮想デバイスの識別子を示す。この識別子は、I/O制御プログラム１１０の仮想デバイス構成部１１１が構成した仮想デバイスの識別子である。複数存在する場合は“,”により列挙する。カラム９０３は、該当仮想デバイスが複数パスを備えるか否かを保持する。本実施例では、備える場合は“あり”、備えない場合は“なし”と記載している。カラム９０４は該当仮想デバイスのモードを示す。
【００４１】
ここで、“第一パス“とは、該当デバイスへのI/Oアクセスパスとして、ストレージ区画１０２のストレージ制御プログラム１２０を経由してストレージデバイスにアクセスする経路を利用する場合を示す。“第二パス”とは、コンピュート区画１０１から直接ストレージデバイスにアクセスする場合を示す。ここで、第一パスを利用する場合は、ストレージ制御プログラム１２０が備えるデータ保護機能やデータ制御機能などを活用できる。一方、第二パスを利用する場合は、ストレージ制御プログラム１２０をバイパスして直接ストレージデバイスにアクセスすることで、ストレージデバイスの性能を効果的に発揮できる。
【００４２】
また、カラム９０５は、カラム９０４のパスで接続されるデバイスの識別子をI/Oのアクセス先として保持する。例えば、仮想デバイスBのI/Oのカラム９０４が第二パスであるため、送信先９０５は2bで識別されるデバイスとなる。
【００４３】
カラム９０６は、該当仮想デバイスのRAIDレベルおよび構成を保持する。“Raw“であればRAID構成デバイスではない。RAIDが構成されているデバイスを対象とする場合、RAIDレベルと構成を”RAID5(4D+1P)”などと記載する。これはRAID構成テーブル１３２のカラム６０２と同等である。
【００４４】
図１０は、本実施例のストレージの論理的な構成を示す。ストレージデバイス群１５には、RAIDが構成されたストレージデバイスの組としてRAID領域９４２と、直接アクセスが可能なストレージデバイスの組としてRaw領域９４３を備える。ストレージデバイス群１６においても、RAID領域９４１を備える。RAID領域９４１、９４２、およびRaw領域９４３は、ストレージ区画１０２のストレージ制御プログラム１２０によりそれぞれボリューム９３１、９３２、および９３３に対応づけられる。さらに、ボリューム９３１、９３２、９３３は、それぞれコンピュート区画１０１のI/O制御プログラム１１０が認識するデバイス９１１、９１２、９１３に対応づけられる。また、RAID領域９４２、およびRaw領域９４３は、さらにコンピュート区画１０１のデバイス９２２、および９２３に対応づけられる。ここでRAID領域９４２およびデバイス９２２は複数のストレージデバイスであってもよい。
【００４５】
I/O制御プログラム１１０が構成しOS/アプリ１５０に見せる仮想デバイス９１０はデバイス９１２、９２２が対応し、仮想デバイス９２０はデバイス９１３、９２３が対応し、仮想デバイス９３０はデバイス９１１が対応する。ここで、デバイス９２２が複数デバイスであった場合でも、I/O制御プログラム１１０のRAID構成部１１４により単一の仮想デバイス９１０へと変換される。仮想デバイス９１０と９２０は、第一パス１７０１、第二パス１７０２によるI/Oアクセス経路を備え、第一パスにおいてはI/O制御プログラム１１０はそれぞれデバイス９１２、９１３に対応づけたI/Oアクセスを実施し、第二パスにおいては、それぞれデバイス９２２、９２３に対応づけたI/Oアクセスを実施する。
【００４６】
なお、図示はしていないが、デバイス９２２からRAID領域９４２のI/Oアクセスについては、コンピュート区画１０１上で動作するRAID構成部を介してRAID制御を行う。
【００４７】
図１１は、本実施例のI/O制御プログラム１１０における仮想デバイス構成部１１１の処理フローを示す。ステップ１００１では、仮想デバイス構成部１１１は、デバイスの識別を実施する。ここでいう識別とは、該当コンピュート区画に対応づけられたデバイス（図１０の９１１、９１２、９１３，９２２，９２３）が、ストレージ区画１０２のストレージ制御プログラム１２０により構成されたボリュームに対応するデバイス（図１０の９１１、９１２、９１３）であるか、ストレージデバイスに直接対応づけられたデバイス（図１０の９２２、９２３）であるかを識別することを指す。ここでは、仮想デバイス構成部１１１は、たとえばボリューム構成テーブル１２６を参照し、カラム７０３の論理的なボリュームの識別子(LUN等)とOSまたはデバイスドライバ１２５が認識するデバイス情報に基づいて、ストレージ区画１０２のストレージ制御プログラム１２０により構成されたボリュームに対応するデバイスを識別する。次に、ステップ１００２では、仮想デバイス構成部１１１が各デバイスのストレージデバイス識別子を取得する。ここではまず、仮想デバイス構成部１１１は、ストレージ制御プログラム１２０により構成されたボリュームに対応するデバイス（図１０の９１１、９１２、９１３）について、ボリューム構成テーブル１２６のカラム７０２と、RAID構成テーブル１３２のカラム６０１および６０３を参照し、ボリュームがアクセスするストレージデバイス識別子を特定する。たとえば、図７のボリューム“VOL c”の対象は“ストレージデバイス１”であり、ボリューム“VOL b”の対象“AG1”は図６のアレイグループ“AG1”に対応し、そのデバイス識別子は“ストレージデバイス３，４”である。次に、仮想デバイス構成部１１１は、ストレージデバイスに直接対応づけられたデバイス（図１０の９２２、９２３）について、該当デバイスのストレージデバイス識別子を取得する。取得方法としては、たとえばデバイスドライバ経由や、ＯＳ経由、およびBIOSやEFIなどのファームウェア経由で取得する。
【００４８】
ステップ１００３では、仮想デバイス構成部１１１は、複数パスで同一ストレージデバイスに対応するデバイスの組が存在するか判定する。ここでは、仮想デバイス構成部１１１は、ステップ１００２にて取得したストレージデバイス識別子が、ストレージ制御プログラム１２０により構成されたボリュームに対応するデバイス（図１０の９１１、９１２、９１３）と、ストレージデバイスに直接対応づけられたデバイス（図１０の９２２、９２３）とで一致しているデバイスの組を取得する。図１０の例では、デバイス９１２と９２２、および９１３と９２３の組が該当する。もし、デバイスの組が存在する場合にはステップ１００４へ移り、存在しない場合、仮想デバイス構成部１１１は、ステップ１００５へ移る。ステップ１００４では、仮想デバイス構成部１１１は、仮想デバイスを構成する。ここでは、仮想デバイス構成部１１１は、ステップ１００３にて取得したデバイスの組に対応した仮想デバイスを構成する。図１０の例では、デバイス９１２と９２２の組に対しては仮想デバイス９１０を構成し、デバイス９１３と９２３の組に対しては仮想デバイス９２０を構成する。ステップ１００５では、仮想デバイス構成部１１１は、該当デバイスに対応する仮想デバイスを構成する。図１０ではデバイス９１１に対応する仮想デバイス９３０を構成する。ただし、本ステップにおける仮想デバイスの構成は必須ではなく、デバイス９１１を直接OS/アプリ１５０が利用しても良い。
【００４９】
ステップ１００６では、仮想デバイス構成部１１１は、仮想デバイス構成テーブル１３３を更新する。ここで、カラム９０２には構成した仮想デバイスの識別子とし、ステップ１００４にて仮想デバイスを構成した場合にはカラム９０３は“あり”、ステップ１００５にて仮想デバイスを構成した場合にはカラム９０３は“なし”となる。また、カラム９０４および９０５については、ユーザ等が任意に設定するデフォルト設定に従ったパスを選択するものとする。カラム９０６にはRAIDレベル・構成を登録する。ステップ１００４およびステップ１００５で作成した仮想デバイスの対象デバイスに対してRAIDを構成している場合はRAIDレベルと構成を登録し、そうでない場合は“Raw“を登録する。ここでRAIDを構成しているか否かは、ステップ１００１にて該当デバイスに対するボリューム構成テーブル１２６の対象（カラム７０２）がアレイグループ（“AG1”など）の場合である。ステップ１００７では、仮想デバイス構成部１１１は、ステップ１００１で検出したデバイスに対して、対応する仮想デバイスが構成されていない未構成のデバイスが存在する場合には、ステップ１００２に移る。
【００５０】
図１２に本実施例におけるI/O振分部１１３の処理フローを示す。ステップ１１０１では、I/O振分部１１３は、OS/アプリ１５０より仮想デバイスに対するI/O要求を受信する。ステップ１１０２では、I/O振分部１１３は、該当仮想デバイスに対するアクセスモードを判定する。ここでは、I/O振分部１１３は、仮想デバイス構成テーブル１３３を参照し、該当仮想デバイスのモード（図９のカラム９０４）が“第一パス”であればステップ１１０３へ、“第二パス”であればステップ１１０４へと移る。なお、カラム９０５を参照して、送信先の識別子から判定しても良い。ステップ１１０３では、I/O振分部１１３は、該当仮想デバイスに対応する第一パスのデバイスへとI/Oアクセスを振り分ける。ここで第一パスのデバイスとは、ストレージ区画１０２のストレージ制御プログラム１２０により構成されたボリュームに対応するデバイス（図１０のデバイス９１２、９１３）である。ステップ１１０４では、I/O振分部１１３は、アクセス先の仮想デバイスに対応するデバイスがRAIDを構成しているか否かを取得する。これには、仮想デバイス構成テーブル１３３の該当ホストの該当仮想デバイスに対するカラム９０６が“Raw”で無い場合を示す。
【００５１】
なお、仮想デバイスに対するアクセスモードについて、システムの導入時はユーザがシステムのデータを利用するユースケースに応じてデータのアクセスパスを選択することが考えられる。“第一パス”を利用したい場合は、ユーザがストレージ制御プログラム１２０の備える機能を利用したい場合に選択する。ここでいう機能とは、主にスナップショット、バックアップ、ディザスタリカバリ、シンプロビジョニング、データ移行、及びストレージ階層の仮想化などが挙げられる。一方、“第二パス”を利用したい場合は、これら機能を利用せず、ユーザがデータアクセス機能を効果的に引出したい場合に選択する。
【００５２】
ステップ１１０５では、I/O振分部１１３は、ステップ１１０４で取得した情報をもとに、RAIDが構成されている場合はステップ１１０６へ、そうでない場合はステップ１１０７へ移る。ステップ１１０６では、I/O振分部１１３は、該当仮想デバイスに対応する第二パスのデバイスに対して、RAID構成部１２３によるRAID領域アクセス処理を実施する。ここで第二パスのデバイスとは、ストレージデバイスに直接対応づけられたデバイスである。また、RAID領域アクセス処理においては、仮想デバイス構成テーブル１３３の該当ホストの該当仮想デバイスのカラム９０６が示すRAIDレベル・構成をもとに、I/Oアクセス要求をストレージデバイスの物理アドレスと論理アドレスとの変換、対象デバイスへのアクセス処理を適宜分割・集約の実施、書き込みアクセス時のパリティ計算とデバイスへの書き込み等の処理を実施する。これにより、RAIDが構成されたデバイスへの読み書きを実現する。ステップ１１０７では、I/O振分部１１３は、該当仮想デバイスに対応する第二パスのデバイスに対してI/Oアクセス要求を振り分ける。
【００５３】
図１３は、本実施例におけるストレージ制御プログラム１２０の論理的なブロック構成を示す。各ストレージデバイス群１５、１６に対応したデバイスドライバ１２５を経由して、RAIDを構成したストレージデバイス（図中９４１、９４２）に対してはRAID構成部１２３を経由してアクセスを実施し、Rawアクセスするストレージデバイス（図中９４３）や、外部のストレージ装置（図中ストレージ装置４０）の場合は、外部ストレージ接続部１２４を経由してアクセスする。
【００５４】
RawアクセスするVOL C(９３３)は、ストレージデバイス上でRaw領域９４３のため、RAID構成がない。そのため、RAID構成部１２３を介してRaw領域９４３にアクセスすると、データを正しく認識することができない。そのため、Raw領域９４３にアクセスする場合は本図のように、外部ストレージ接続部１２４を経由してアクセスすることで、ストレージ区画１０２を利用しながら、Raw領域９４３を利用することが可能となる。
【００５５】
図１４は、本実施例におけるI/Oアクセスのシーケンスを示す。OS/アプリ１５０からのI/O要求の対象仮想デバイスのモードが“第一パス”であり、RAID構成が“RAID“の場合（図中１３０１）はストレージ制御プログラム１２０を経由したストレージデバイスへのアクセスを実施する。一方I/O要求の対象仮想デバイスのモードが“第二パス”であり、RAID構成が“RAID”の場合（図中１３０２）は、ストレージ制御プログラム１２０を経由せず、I/O制御プログラム１１０のRAID構成部１１４を経由してストレージデバイスへのアクセスを実施する。また、I/O要求の対象仮想デバイスのモードが“第二パス”であり、RAID構成が“Raw”の場合（図中１３０３）は、ストレージ制御プログラム１２０やRAID構成部１１４を経由せずストレージデバイスにアクセスを実施する。これにより、I/Oアクセス性能は１３０１、１３０２、１３０３の順に高速となる一方、１３０１ではストレージ制御プログラム１２０の機能、１３０１，１３０２ではRAIDといった機能性を備える。
【００５６】
図１５は、本実施例のモード切り替え部１１２の処理フローを示す。ステップ１４０１では、モード切り替え部１１２は、モード切り替え要求を受け付ける。モード切り替え要求は、たとえばユーザやアプリケーションへのインタフェイス（GUI、APIなど）をモード切り替え部１１２が備え、該当インターフェイスにより要求を受け付ける。受付内容としては、モードの切り替えを実施する対象となる仮想デバイスと、切り替え先のモードの種類である。ステップ１４０２では、モード切り替え部１１２は、受け付けた要求が第二パスへのアクセスモードへの切り替えであればステップ１４０３へ移り、第一パスへの切り替えであればステップ１４０６へ移る。なお、仮想デバイス構成テーブル１３３を参照し、該当仮想デバイスのモードがすでに切り替え先のモードと同一であれば、モード切り替え部１１２の処理を終了する。
【００５７】
ステップ１４０３では、モード切り替え部１１２は、コンピュート区画１０１におけるデバイスドライバ１１５のI/O完了をウエイトする。次に、ステップ１４０４では、モード切り替え部１１２は、ストレージ制御プログラム１２０において該当仮想デバイスに対応するボリュームに対するI/O要求の実行完了をウエイトする。ここで、完了通知はストレージ制御プログラム１２０とモード切り替え部１１２が情報交換インターフェイス等を通じて実施する。ステップ１４０５では、モード切り替え部１１２は、仮想デバイス構成テーブル１３３の該当仮想デバイスのモードを第二パスに変更する。一方、ステップ１４０６では、モード切り替え部１１２は、コンピュート区画１０１におけるデバイスドライバ１１５のI/O完了をウエイトする。次にステップ１４０７では、モード切り替え部１１２は、仮想デバイス構成テーブル１３３の該当仮想デバイスのモードを第一パスに変更する。
【００５８】
なお、アクセスモードの切り替えは、I/O制御プログラム１１０が判別プログラムを有し、動的に変更するようにしてもよい。この場合、I/O制御プログラム１１０は、OS/アプリ１５０から仮想デバイスへのアクセス頻度や、OS/アプリ１５０、ファイルシステム、ドライバまたはストレージ制御プログラム１２０から性能情報を収集し、I/OキューやI/O処理ネックとなっている部分の検出を行う。これにより、予め定めた閾値よりI/Oアクセス頻度が高いデータやOS/アプリ１５０、ファイルシステム、ドライバにてI/O処理待ちが他と比較して多く発生しているデータに対して、第一パスから第二パスへ切り替えを行う。一方、予め定めた閾値よりI/Oアクセス頻度が低いデータや、I/O処理待ちが他と比較して少ないデータに対して、第二パスから第一パスへの切り替えを行う。これにより、データに応じてアクセスパスを最適化し、より高い性能向上を実現することができる。
【００５９】
また、I/O制御プログラム１１０は、管理計算機３０を介して、上記のパス切り替えを実施する閾値を指定するGUIをユーザに提供する。閾値の具体例としては、上記I/OキューやI/O処理ネックを判断する一指標としての閾値や、I/Oアクセス頻度の閾値である。
【００６０】
ここまで、ストレージデバイス群１５、１６について、RAID領域９４１とRaw領域９４３として使い分ける方法を説明してきた。次に、RAID領域９４１やRaw領域９４３に保存したデータを、データ移動を行って別の領域に移動し、ストレージ制御プログラム１２０の利用の有無だけではなく、さらにデータの利用用途に従ってRAID領域９４１とRaw領域９４３まで使い分ける方法を、図１６及び図１７を用いて説明する。
【００６１】
例えば、オンライントランザクション処理など、データ保護の重要性が高い処理や、コアシステムなどの重大処理のデータは、RAID領域９４１に保存し、これらのデータの一部を利用してデータ分析処理などを実施する場合に、データをRAID領域９４１からRaw領域９４３に移動するケースが考えられる。これにより、データの利用用途に応じた、さらに柔軟なシステムをユーザに提供することが可能となる。
【００６２】
ここで、移行にあたってRAID領域９４１からRaw領域９４３へのデータ移行をする際、データ移行のためにシステムの処理は停止できないという課題がある。図１６及び図１７で説明する方法では、I/O制御プログラム１１０において、一時的に移行のためのデバイスに保持したデータをアクセスパスとして選定することでデータを無停止で移行し、上記課題も解決することが可能となる。
【００６３】
図１６は、本実施例における管理プログラム３５において、データ移行処理を実施する処理フローである。ステップ１６０１では、管理プログラム３５は、(1)ストレージ制御プログラム１２０に対して第一ボリュームのミラーボリュームとして第二ボリュームの作成を指示、ステップ１６０２では、管理プログラム３５は、(2)I/O制御プログラム１１０に仮想デバイスを作成指示。ここで、該当仮想デバイスの第一パスとして第二ボリューム、第二パスとしてストレージデバイスのRaw領域９４３を対応付ける。ステップ１６０３では、管理プログラム３５は、(3)ストレージ制御プログラム１２０にRaw領域９４３を外部ストレージとして接続した第三ボリュームを作成指示。ステップ１６０４では、管理プログラム３５は、(4)ストレージ制御プログラム１２０に第二ボリュームと第三ボリュームの同期を指示。ステップ１６０５では、管理プログラム３５は、(5)ステップ１６０４の同期完了後、I/O制御プログラム１１０に該当仮想デバイスの第一パスとして第三ボリュームへのマッピング変更を指示する。これにより、既存第一ボリュームに保存された内容をコンピュート区画１０１でアクセス可能としつつ、第二パスからアクセス可能な状態へと移行することができる。
【００６４】
図１７は、図１６に示したデータ移行処理のブロック図である。ここで、第一ボリュームは外部のストレージ装置４０に対応するボリュームであっても良い。図中１７０１は図１６のステップ１６０１、１７０２はステップ１６０２、１７０３はステップ１６０４、１７０４はステップ１６０４、１７０５はステップ１６０５に対応する。
【００６５】
また、Raw領域９４３からRAID領域９４１へデータを移行する場合も、同様の方法で実現が可能である。
【００６６】
なお、図示はしていないが、上記のシステム及び装置は、例えばディスプレイやキーボードを代表とする入出力装置など、情報処理装置として処理を行う上で必要となる構成を備え、各部による処理はそれぞれのハードウェアが連関して行う。また、各処理は、集積回路化などして、それを行う処理部としてハードウェアで実現する事もできる。これについては以下の実施例についても同様である。
【実施例２】
【００６７】
実施例２では、論理分割を利用せず、コンピュート区画とした論理区画とストレージ区画とした論理区画のそれぞれについて、ノードを分離して別々の計算機で実現するシステムであり、実施例１と同様、ストレージデバイスに対して高速でアクセスしたい場合と、データ保護したい場合とで、ユーザニーズに応じた柔軟な利用が可能な計算機システムを説明する。
【００６８】
図１８は、本発明の第二の実施例の構成例を示すブロック図である。実施例１と異なるのはストレージデバイス群１５が、ノード間の共有バス１８４０を通じて、複数のノード１０、１８００で共有されている点と、ノード１０にはストレージ制御プログラム１２０、ノード１８００にはOS/アプリ１５０とI/O制御プログラム１１０、および各テーブルに実施例１の共有テーブル１３０と同等のテーブル１８５０を保持する点である。テーブル１８５０は、ノード間のネットワーク２０、および共有バス１８４０を通じて内容を同期する。ここでノード１８００は、実施例１のコンピュート区画１０１に相当する。
【００６９】
これにより、OS/アプリ１５０とストレージ制御プログラム１２０とでリソースを分離することによって、リソースの干渉をなくすことが可能となる。
【００７０】
なお、以上に記載した実施例では、I/O制御プログラム１１０がI/O振分手段を有するという形で説明したが、上記I/O振分手段を実現するプログラム及び関連する情報を、計算機に導入するという形をとっても良い。さらに、上記I/O振分手段を実現するプログラムは、あらかじめ計算機内の記憶装置や外部記憶装置に格納されていても良いし、着脱可能な記憶媒体や通信媒体(有線、無線、光などのネットワーク、又はそのネットワーク上の搬送波やデジタル信号)を介して、必要なときに外部記憶装置に導入されても良い。
【符号の説明】
【００７１】
１０…ノード、１１…メモリ、１２…ＣＰＵ、１３…I/Oデバイス、１４…ＮＩＣ、１５、１６…ストレージデバイス群
【図１】
0005996098.tif 000002
【図２】
0005996098.tif 000003
【図３】
0005996098.tif 000004
【図４】
0005996098.tif 000005
【図５】
0005996098.tif 000006
【図６】
0005996098.tif 000007
【図７】
0005996098.tif 000008
【図８】
0005996098.tif 000009
【図９】
0005996098.tif 000010
【図１０】
0005996098.tif 000011
【図１１】
0005996098.tif 000012
【図１２】
0005996098.tif 000013
【図１３】
0005996098.tif 000014
【図１４】
0005996098.tif 000015
【図１５】
0005996098.tif 000016
【図１６】
0005996098.tif 000017
【図１７】
0005996098.tif 000018
【図１８】
0005996098.tif 000019