JP2014235501A - ストレージ装置の制御方法、ストレージ装置及び情報処理装置 - Google Patents

ストレージ装置の制御方法、ストレージ装置及び情報処理装置 Download PDF

Info

Publication number
JP2014235501A
JP2014235501A JP2013115614A JP2013115614A JP2014235501A JP 2014235501 A JP2014235501 A JP 2014235501A JP 2013115614 A JP2013115614 A JP 2013115614A JP 2013115614 A JP2013115614 A JP 2013115614A JP 2014235501 A JP2014235501 A JP 2014235501A
Authority
JP
Japan
Prior art keywords
request
buffer
response
register
storage device
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
JP2013115614A
Other languages
English (en)
Other versions
JP2014235501A5 (ja
JP6040101B2 (ja
Inventor
俊臣 森木
Toshiomi Moriki
俊臣 森木
貴之 今田
Takayuki Imada
貴之 今田
直也 服部
Naoya Hattori
直也 服部
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 JP2013115614A priority Critical patent/JP6040101B2/ja
Priority to US14/252,805 priority patent/US9495172B2/en
Priority to EP14167491.1A priority patent/EP2808786B1/en
Publication of JP2014235501A publication Critical patent/JP2014235501A/ja
Publication of JP2014235501A5 publication Critical patent/JP2014235501A5/ja
Application granted granted Critical
Publication of JP6040101B2 publication Critical patent/JP6040101B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】仮想化支援機能を有して複数のコアを含むプロセッサで、ブロック機能と、仮想化ソフトウェア上で稼働するファイル機能とを統合するストレージ装置の性能の低下を抑制する。
【解決手段】仮想化支援機能を有する複数のプロセッサと、メモリと、プロセッサにアクセスされるストレージデバイスとを含み、ストレージ装置は、プロセッサのうち仮想化支援機能を無効にした第1のプロセッサグループと、プロセッサのうち仮想化支援機能を有効にした第2のプロセッサグループと、を含み、ストレージデバイスを制御する第1のOSに第2のプロセッサグループを割り当てて第1のOSを起動させ、仮想マシンを稼働させる仮想化部に第2のプロセッサグループを割り当てて前記仮想化部を起動させ、前記仮想化部が第2のOSを起動させ、仮想化部がメモリに第1のOSと第2のOSが通信を行う通信経路を設定する。
【選択図】図1

Description

本発明は、マルチコアCPUもしくはマルチコアプロセッサを有する計算機で仮想化ソフトウェアを利用して複数のOSを実行する場合の通信技術に関する。
半導体プロセスの微細化により、x86サーバを中心に単一のLSI上に複数のプロセッサコアを搭載するマルチコア化が進展している。例えば、2ソケットのCPUを搭載したサーバであれば、8コア×2ソケット=16コアが単一のSMPシステム上で利用可能となる。
多数のCPUコアを効率よく利用するため、単一のSMP及び計算機リソースを複数の論理的な区画に分割する仮想化ソフトウェアが一般的に使用されている(例えば、特許文献1)。仮想化ソフトウェアは物理的なCPUコアと論理区画との対応付けを管理し、各論理区画で独立してOSを稼働させることにより、単一のOSでは使い切れないCPUコアを有効に活用する。
仮想化ソフトウェアが動作するためには、CPUによる専用の支援機能が欠かせない。近年のIntel(登録商標)社製のCPUでは、仮想化ソフトウェアによる物理資源の管理をサポートするための専用支援機能(仮想化支援機能)を備えており、例えば、VT−x(Virtualization Technology for Xeon)として知られている(例えば、非特許文献1)。この仮想化支援機能の一例としては、拡張ページテーブル(EPT: Extended Page Table)が挙げられる。EPTは、論理区画上のOSが指定する通常のページテーブルに加えて、仮想化ソフトウェアが指定する制御データ構造であり、論理区画に提供する物理メモリ範囲を規定する。本支援機能により、複数の論理区画上のOSが、メモリにアクセスする際に相互に重複の無い物理メモリ領域を指定できるようになるため、安全かつ効率的にサーバの仮想化を実現できる。
EPTを有効化するため、ハイパバイザ等の仮想化ソフトウェアは、CPUのモードを仮想化有効のモードに切り替える。x86系CPUの場合、モードの切り替えにVMX ON/VMX OFF命令を用いる。以下、仮想化有効の状態をVMXONモード、無効の状態をVMXOFFモードと称する。
従来から仮想化ソフトウェアは、汎用の計算や業務アプリケーションを稼働させるサーバ計算機で主に活用されてきた。しかし、近年ではストレージ装置などの非サーバ装置でもx86系CPUを搭載する例が増えてきている。
ストレージ装置は、多数のハードディスク(HDD)または半導体ディスクドライブを内蔵した、データ格納専用のIT機器である。ストレージ装置は大別して、SAN(Storage Area Network)に接続されてHDDをセクタ単位でアクセスする「ブロック専用機」と、LAN(Local Area Network)に接続されファイル単位でデータを管理する「ファイル専用機」とに区分される。
従来、これらのストレージ装置は接続インタフェース(I/F)別に異なる市場を形成していた。しかし、ハードウェアの性能向上とコモディティ化が進展する中で、SAN/LAN両方のI/Fを有する統合型のストレージ装置(以下、統合ストレージ装置)が台頭してきている。
統合ストレージ装置の実現手段として、以下の2つが知られている。
(1) パッケージング型:ファイル専用機とブロック専用機の両方の装置を同一の筐体に収め、両者をFibre Channelなどのストレージアクセス用のケーブルで接続する。
(2) 仮想化ソフトウェア型:単一SMPに1つのハイパバイザを稼働させ、1つの論理区画でブロック機能(ブロック制御マイクロプログラムorブロックマイクロ)を、他の区画でファイル機能(ファイルサーバOS)を稼働させる。ブロックとファイル間はvirtioなどに代表される論理区画間での通信路で接続する。なお、ひとつのハードウェアで複数のOSを同時に実行させる手法としては、例えば、特許文献2が知られている。
一般に(1)のパッケージング型の統合機の場合、ハードウェアリソースがブロック専用機+ファイル専用機のそれぞれが必要となって2倍かかるためコスト高になる。一方、(2)はCPUおよびメモリの利用効率が高くコストパフォーマンスが良い。
米国特許出願公開第2011−161541号明細書 特開平11−149385号公報
Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3C: System Programming Guide, Part 3
ブロック専用機は高いスループットと短い応答時間を要求されるデータベースサーバなどのバックエンドとして活用されてきた。従って、性能に対する要求レベルが高い傾向にある。そのため、上記(2)の仮想化ソフトウェア型で実現された統合ストレージ装置では、仮想化モードを有効化することによる性能低下が無視できない場合がある。例えば、EPTを例に取ると、VMXOFFモードの場合には1回のページテーブルミスの解決に高々4段のテーブルスキャンで済んでいたところを、最悪のケースでは4×4=16テーブルのスキャンが必要になり、処理性能が低下するという問題があった。
また、上記(2)の仮想化ソフトウェア型で実現された統合ストレージ装置では、ファイル機能は、ブロック機能を介してディスクドライブなどの記憶媒体にアクセスする。ファイル機能を提供するファイルサーバOSは、仮想化ソフトウェア上で稼働する。一方、ブロック機能を提供するブロック制御マイクロプログラム(以下、ブロックOS)は仮想化ソフトウェアと同一のハードウェアで稼働する。ファイルサーバOSがディスクドライブにアクセスする際には、ブロックOSとの間でデータの送受信を行う必要がある。しかしながら、従来の技術では、ファイルサーバOSがディスクドライブにアクセスする度に、仮想化ソフトウェアを介してブロックOSとデータの送受信を行う必要があるため、仮想化ソフトウェアの処理がオーバーヘッドとなって、ファイルサーバOSが高速なブロック機能を有効に利用できない、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、複数のコアを含むプロセッサを有するハードウェアで、仮想化ソフトウェアを用いてブロック機能とファイル機能を統合する統合ストレージ装置において、性能の低下を抑制する技術を提供することを目的とする。
本発明は、仮想化支援機能を有する複数のプロセッサと、メモリと、前記プロセッサにアクセスされるストレージデバイスとを含むストレージ装置の制御方法であって、前記ストレージ装置は、前記プロセッサのうち仮想化支援機能を無効にした第1のプロセッサグループと、前記プロセッサのうち仮想化支援機能を有効にした第2のプロセッサグループと、を含み、前記ストレージデバイスを制御する第1のOSに前記第1のプロセッサグループを割り当てて、前記第1のOSを起動させる第1のステップと、仮想マシンを稼働させる仮想化部に前記第2のプロセッサグループを割り当て、前記仮想化部を起動させる第2のステップと、前記仮想化部が、前記メモリのうちの所定の領域を前記第2のOSに割り当てて、当該第2のOSを起動させる第3のステップと、前記仮想化部が、前記メモリに前記第1のOSと第2のOSが通信を行う通信経路を設定する第4のステップと、を含む。
したがって、本発明は、第1のOS(例えば、ブロック機能)と第2のOS(例えば、ファイル機能)は、メモリ上の通信経路を介して高速に通信を行うことが可能となる。
本発明の実施例を示し、マルチコアプロセッサを有するひとつのハードウェアを用いてファイル機能とブロック機能を統合したストレージ装置の一例を示すブロック図である。 本発明の実施例を示し、メモリリソースの物理アドレス空間の一例を示すマップである。 本発明の実施例を示し、メモリリソースのアドレス空間と、プログラム毎のアクセス権限を示す図である。 本発明の実施例を示し、スーパーバイザ領域の詳細を示すブロック図である。 本発明の実施例を示し、ブロック制御マイクロプログラムが管理するCPU割り当て管理テーブルの一例を示す図である。 本発明の実施例を示し、ブロック制御マイクロプログラムが管理するメモリ割り当て管理テーブルの一例を示す図である。 本発明の実施例を示し、ブロック制御マイクロプログラムが管理するI/O割り当て管理テーブルの一例を示す図である。 本発明の実施例を示し、VMMが管理する通信データパス制御テーブルの一例を示す図の前半部である。 本発明の実施例を示し、VMMが管理する通信データパス制御テーブルの一例を示す図の後半部である。 本発明の実施例を示し、VMMが管理するアドレス変換テーブルの一例を示す図である。 本発明の実施例を示し、通信データパスの初期化処理の一例を示すタイムチャートである。 は、ストレージ装置の起動からファイルサーバOSの実行までの処理の一例を示すシーケンス図である。 本発明の実施例を示し、ファイルサーバOSからブロック制御マイクロプログラムへの通信処理の一例を示すタイムチャートである。 本発明の実施例を示し、上記図6Aの処理のうちファイルサーバOSで行われる処理の一例を示すフローチャートである。 本発明の実施例を示し、上記図6Aの処理のうちブロック制御マイクロプログラムで行われる処理の一例を示すフローチャートである。 本発明の実施例を示し、ブロック制御マイクロプログラム108からファイルサーバOSへの通信処理の一例を示すタイムチャートである。 本発明の実施例を示し、上記図7Aの処理のうちブロック制御マイクロプログラムで行われる処理の一例を示すフローチャートである。 本発明の実施例を示し、上記図7Aの処理のうちファイルサーバOSで行われる処理の一例を示すフローチャートである。 は本発明の実施例を示し、PCIコンフィグレジスタの一例を示す図である。 は、本発明の実施例を示し、MMIOレジスタ(BAR0)の一例を示す図である。 は、本発明の実施例を示し、要求リングバッファのエントリデータフォーマットの一例を示す図である。 は、本発明の実施例を示し、応答リングバッファのエントリデータフォーマットの一例を示す図である。 は、SGLのデスクリプタデータフォーマットの一例を示す図である。
以下、本発明の一実施例を添付図面に基づいて説明する。
図1は、本発明の実施例を示し、マルチコアプロセッサを有するひとつのハードウェア上にファイル機能とブロック機能を統合したストレージ装置の一例を示すブロック図である。
本実施例では、仮想化ソフトウェア上のゲストOS(または仮想マシン)としてファイルサーバOS(以下、ファイルOSとする)を稼働させ、仮想化ソフトウェアと同一のハードウェア上で、ブロック制御マイクロプログラム(ブロック機能)を独立して稼働させ、ファイル機能とブロック機能をそれぞれ提供するストレージ装置の一例について説明する。
ハードウェア109は、上述した仮想化支援機能を備えたマルチコアのCPUリソース112と、メモリリソース113と、通信やデータの送受信を行うI/Oリソース114と、を含む。
CPUリソース112は、仮想化支援機能を有効(VMX ON)に設定したコアのグループA115と、仮想化支援機能を無効(VMX OFF)に設定したコアのグループB116と、に分類される。仮想化支援機能が有効なグループA115では、仮想化ソフトウェア上のゲストOSとしてファイルサーバOS105(第2のOS)が実行される。一方、仮想化支援機能を無効にしたグループB116では、ブロック制御マイクロプログラム(第1のOS)108が実行される。
メモリリソース113は、複数のメモリデバイス117a、l17bを含んで物理アドレス空間を提供する。
I/Oリソース114は、ネットワーク(図示省略)を介して計算機(図示省略)と通信を行うNIC118と、SAN(Storage Area Network)を介して計算機(図示省略)とデータの送受信を行うTA(Target Adapter)119と、データやプログラムを格納するストレージデバイス120と、ストレージデバイス120へアクセスするためのHBA(Host Bus Adaptor)120bを含む。ブロック制御マイクロプログラム108がストレージデバイス120への処理要求(コマンド)を発行する際、常にHBA120bを介して行う。
なお、NIC118、TA119、HBA120bは、PCI(Peripheral Component Interfaces)仕様に基づくI/Oデバイスを想定している。
ハードウェア109のうち予め設定したファイルサーバパーティション101では、仮想化ソフトウェアとしてのVMM(Virtual Machine Manager)106が実行され、VMM106上ではファイルサーバOS105が実行される。ファイルサーバパーティション101には、仮想化支援機能が有効に設定されたグループA115のCPUリソース112が割り当てられる。
ハードウェア109では、予め設定したブロックサービスパーティション102でブロック制御マイクロプログラム108が実行される。ブロックサービスパーティション102には、仮想化支援機能が無効に設定されたグループB116のCPUリソース112が割り当てられる。
なお、メモリリソース113のうち、メモリデバイス117aをファイルサーバパーティション101に割り当て、メモリデバイス117bをブロックサービスパーティション102に割り当てるようにしても良い。
次に、ストレージ装置のソフトウェア構成について説明する。ハードウェア109上で、ブロック制御マイクロプログラム108とVMM106は、システムソフトウェアとして独立して稼働する。
ブロック制御マイクロプログラム108は、ハードウェア109を直接制御するために、予め設定されたブロックサービスパーティション102で稼働し、リソース管理テーブル142と、HBA120bを制御する物理HBAドライバ141と、この物理HBAドライバ141が送受信するデータやコマンドを保持するキャッシュ制御部140と、ファイルサーバOS105と直接通信を行うキューサービス138とを含む。
リソース管理テーブル142は、後述するように、CPU割り当て管理テーブル401(図4A)と、メモリ割り当て管理テーブル402(図4B)と、I/O割り当て管理テーブル403(図4C)と、を含む。
キューサービス138は、後述するように、VMM106からアドレス変換情報を受信し、ファイルサーバOS105のデータバッファ124との間でデータ転送を行うデータバッファR/W135や、要求リングバッファ125や応答リングバッファ126との間で情報の送受信を行うキューエントリR/W136を含む。キューサービス138はキャッシュ制御部140を介して物理HBAドライバ141との間でデータやコマンドの送受信を行う。
また、ブロック制御マイクロプログラム10は、ファイルサーバOS105から送られるストレージ制御コマンドをキューサービス138、キャッシュ制御部140及び物理HBAドライバ141で処理し、ファイルサーバOS105を管理するVMM106に対してストレージ制御コマンドの完了通知のための物理割込み134を発行する。
VMM106は、予め設定されたファイルサーバパーティション101内で、1以上のゲストOSを稼働させる。本実施例では、VMM106がゲストOSとしてファイルサーバOS105を仮想計算機として稼働させる例を示す。VMM106は、ファイルサーバパーティション101のリソースをファイルサーバOS105に割り当てて、仮想計算機を生成する。
VMM106は、ファイルサーバOS105に仮想CPU(図示省略)と、メモリと、仮想HBA127を提供する。なお、図示はしないが、VMM106は、仮想NICもファイルサーバOS105に提供する。仮想CPUとしては、仮想化支援機能がONに設定されたグループA115のCPUリソース112が割り当てられる。ファイルサーバOS105に割り当てられるメモリは、ファイルサーバパーティション101内の所定の記憶領域が割り当てられる。また、仮想HBA127は、PCIコンフィグレジスタ130と、MMIOレジスタ131を含む。
VMM106は、ファイルサーバOS105とブロック制御マイクロプログラム108が高速で通信を行うための通信データパスの情報を保持する通信データパス制御テーブル133を保持する。なお、通信データパスは、メモリリソース113上に設定されて、データとコマンドまたは応答(アクセス結果)の送受信を行う通信経路である。
また、VMM106は、仮想HBA127の状態と、ファイルサーバOS105とブロック制御マイクロプログラム108の間で送受信される情報の位置を管理するアドレス変換テーブル129をメモリリソース113上に保持する。なお、VMM106は、アドレス変換テーブル129をブロック制御マイクロプログラム108と共有する。
VMM106上で稼働するファイルサーバOS105は、仮想HBA127を制御する仮想HBAドライバ123(図中vHBAドライバとする)と、ファイルシステムによってデータの送受信を行うファイルシステムレイヤ121と、を含む。
また、ファイルサーバOS105は、図示しない仮想NICドライバを介して、クライアント(図示省略)からのファイルアクセスを受け付けて、ブロック制御マイクロプログラム108に当該ファイルアクセスを要求する。
ファイルシステムレイヤ121は、クライアントからアクセス要求のあったデータやブロック制御マイクロプログラム108からのデータを保持するデータバッファ124を含む。
仮想HBAドライバ123は、クライアントからアクセス要求のあったデータやコマンドを保持するバッファとして、要求リングバッファ125と、応答リングバッファ126を含む。
ここで、VMM106はメモリリソース113上でスーパーバイザ領域205と、ユーザ領域204の双方に所属する。VMM106のうち、仮想HBA127とアドレス変換テーブル129は、ファイルサーバOS105とブロック制御マイクロプログラム108及びVMM106の全てのプログラムからアクセス可能な共有領域であるユーザ領域204に配置される。
一方、VMM106の仮想割り込み生成部132と、通信データパス制御テーブル133及びユーザ領域204以外のVMM106の構成要件はスーパーバイザ領域205に配置される。なお、スーパーバイザ領域205は、ハードウェア109に対する制御が可能なブロック制御マイクロプログラム108とVMM106がアクセス可能領域である。
そして、仮想HBAドライバ123の要求リングバッファ125と、応答リングバッファ126もブロック制御マイクロプログラム108及びVMM106からアクセス可能な共有領域であるユーザ領域204に配置される。
ファイルサーバOS105は、クライアントからの要求(コマンド)と、当該要求に付随する転送データの情報を格納するバッファアドレスリストと、を要求リングバッファ125に書き込む。ブロック制御マイクロプログラム108は、要求リングバッファ125からコマンドを取得して、当該コマンドを実行してストレージデバイス120にアクセスを行う。
一方、応答リングバッファ126は、ブロック制御マイクロプログラム108からの処理完了結果を含む応答(レスポンス)を格納する。そして、ファイルサーバOS105が、後述する仮想割り込み128に基づいて、応答リングバッファ126に書き込まれた応答を取得してクライアントへ転送する。
なお、ファイルサーバOS10はデータバッファ124、要求リングバッファ125及び応答リングバッファ126に対して行う場合には、後述するゲスト物理アドレス空間内の間接アクセス111でアクセスする。一方、ブロック制御マイクロプログラム108がユーザ領域204へアクセスする際には、後述するように、アドレス変換テーブルで、ゲスト物理アドレス空間をホスト物理アドレス空間に変換して、アクセスを実施する。
本実施例では、ファイルサーバOS105とブロック制御マイクロプログラム108の通信は、メモリリソース113上に設定された通信データパス(通信経路)によって高速なアクセスを実現する。具体的には、仮想HBA127のMMIOレジスタ131を、トラップ無しでファイルサーバOS105にアクセスさせ、MMIOレジスタ131への書き込みについては、ブロック制御マイクロプログラム108が直接ポーリングしてデータを取得することにより、高速な通信を実現する。
<ソフトウェアの概要>
図2A、図2Bは、メモリリソース113のアドレス空間を示す。図2Aは、メモリリソース113のアドレス空間の一例を示すマップである。図2Bは、メモリリソースのアドレス空間と、プログラム毎のアクセス権限を示す図である。
メモリリソース113のうち、ブロック制御マイクロプログラム108とVMM106に割り当てられたアドレスAD#1からアドレスAD#4までの領域は、ホスト物理アドレス空間203で表される。
本実施例では、アドレス201=0番地から所定のアドレスAD#1までが、ブロック制御マイクロプログラム108に割り当てられるブロック制御マイクロプログラム固有領域207である。そして、アドレスAD#1〜アドレスAD#4までがVMM106に割り当てられ、VMMのアクセス範囲209となる。このうち、アドレスAD#1〜アドレスAD#2は、VMM106に割り当てられるVMM固有領域208である。
また、アドレスAD#2〜アドレスAD#3は、VMM106のゲストOSに割り当てられるユーザ領域204であり、本実施例では、ファイルサーバOS105に割り当てられる。このユーザ領域204は、OS間共有領域206として機能する。そして、アドレスAD#3〜アドレスAD#4の領域は、ブロック制御マイクロプログラム108とVMM106がアクセス可能なスーパーバイザ領域205として設定される。
アドレスAD#2〜アドレスAD#4のゲスト物理アドレス空間202は、全てのプログラムがアクセス可能なユーザ領域204と、ブロック制御マイクロプログラム108とVMM106のみがアクセス可能なスーパーバイザ領域205に二分される。
アドレスAD#2〜アドレスAD#3のユーザ領域204は、ゲストOSが認識するアドレスであり、ゲスト物理アドレス空間202としてVMM106が提供する。本実施例では、ファイルサーバOS105がゲスト物理アドレス空間202に割り当てられる。このゲスト物理アドレス空間202は、ホスト物理アドレス空間203のアドレスAD#2のオフセットを差し引いたアドレスである。
ユーザ領域204には、ファイルサーバOS105がデータバッファ124や仮想HBAドライバ123を保持する使用(Usable)領域212と、VMM106が提供する仮想HBA127やアドレス変換テーブル129を保持する予約領域213と、が含まれる。スーパーバイザ領域205には、VMM106が提供する通信データパス制御テーブル133等が含まれる。なお、通信データパス制御テーブル133のアドレスは、予め設定されたホスト物理アドレス空間203に設定され、ブロック制御マイクロプログラム108にも通信データパス制御テーブル133のアドレスは設定されている。
図2Bにおいて、物理アドレスの領域の名称がカラム2111に格納され、本実施例では、ユーザ領域、スーパーバイザ領域、VMM固有領域、ブロック制御マイクロプログラム108がそれぞれのエントリに格納される。カラム2112にはファイルサーバOS105の各領域に対するアクセス可否が「○」=アクセス可、「×」=アクセス不可として設定される。カラム2113にはVMM106の各領域に対するアクセス可否が「○」=アクセス可、「×」=アクセス不可として設定される。また、カラム2114にはブロック制御マイクロプログラム108の各領域に対するアクセス可否が「○」=アクセス可、「×」=アクセス不可として設定される。
図2Bのように、ブロック制御マイクロプログラム108は、ホスト物理アドレス空間203の全てに渡ってアクセス可能である。次に、VMM106は、ブロック制御マイクロプログラム固有領域207以外についてアクセス可能である。ファイルサーバOS105のアクセス範囲は、ユーザ領域204のみとなる。このユーザ領域204を介して、ブロック制御マイクロプログラム108とファイルサーバOS105がデータの送受信を直接実施する。
本実施例では、まず、ブロック制御マイクロプログラム108がホスト物理アドレス空間203にロードされて、予め設定されたグループB116のCPUリソース112によって実行される。ブロック制御マイクロプログラム108は起動が完了すると、VMM106を起動させ、予め設定されたグループA115のCPUリソース112によってVMM106を起動させる。そして、VMM106は予め設定されたゲストOSとしてファイルサーバOS105を起動させ、ファイルサーバを生成する。
後述するように、VMM106は、ホスト物理アドレス空間203のスーパーバイザ領域205に通信データパスの配置アドレスの情報と状態を含む通信データパス制御テーブル133を生成する。そして、VMM106は通信データパス制御テーブル133が使用開始の状態になると、ブロック制御マイクロプログラム108へ通知する。この通知より、ブロック制御マイクロプログラム108は、VMM106がファイルサーバOS105を起動させて、通信が可能になったことを取得する。
なお、図2Aでは、各プログラムに割り当てられるメモリ領域の物理アドレスが連続的な例を示した。各プログラムに割り当てられるメモリ領域の物理アドレスが不連続の場合には、連続するメモリ領域ごとに、ベースアドレス+サイズ+オフセットアドレスで構成される変換情報を設定すればよい。
CPUリソース112は、各プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、CPUリソース112は、ブロック制御マイクロプログラム108を実行することでブロック制御マイクロ部として機能する。他のプログラムについても同様である。さらに、CPUリソース112は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
ストレージ装置の各機能を実現するプログラム、テーブル等の情報は、ストレージデバイス120や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
<通信データパスの概要>
図3は、メモリリソース113のユーザ領域204と、スーパーバイザ領域205の詳細を示すブロック図である。
図1、図2Aで示したように、ユーザ領域204には、ファイルシステムレイヤ121のデータバッファ124、仮想HBAドライバ123、PCIコンフィグレジスタ130、MMIOレジスタ131、アドレス変換テーブル129が配置される。
仮想HBAドライバ123の要求リングバッファ125と応答リングバッファ126はファイルサーバOS105とブロック制御マイクロプログラム108の通信データパスとして機能する。すなわち、要求リングバッファ125は要求系のキューとして機能し、応答リングバッファ126は応答系のキューとして機能する。
要求リングバッファ125は、ストレージデバイス120に対するコマンド(または要求)を格納するSCSI CDB(Command Descriptor Block)304と、コマンドに付随するデータの位置情報(データバッファ124)を示すバッファアドレスリストを格納するSGL(Scatter Gather List)303を含む。
ファイルサーバOS105は、クライアント(図示省力)からストレージデバイス120に対する要求(コマンド及びデータ)を受け付けると、要求リングバッファ125のSCSI CDB304に受け付けた要求(コマンド)を格納し、さらにデータを受け付けた場合には、データを格納したデータバッファ124の位置情報に対応するバッファアドレスリストを生成してSGL303に格納する。そして、後述するように、ブロック制御マイクロプログラム108がポーリングにより要求リングバッファ125を読み込んで、ストレージデバイス120に対してコマンドを実行する。
応答リングバッファ126には、ストレージデバイス120へのアクセス結果(応答)を格納するstatus305を含む。ブロック制御マイクロプログラム108は、status305に応答(レスポンス)またはデータを格納した位置を書き込む。そして、ファイルサーバOS105は、応答リングバッファ126のstatus305から、ストレージデバイス120の応答を読み込んでクライアントに送信する。
ここで、要求リングバッファ125と、応答リングバッファ126の構成を説明する。まず、要求リングバッファ125は、当該要求リングバッファに対して新しい要求を格納する位置を示すポインタとしての要求PI(producer Index)レジスタ310aと、要求リングバッファ125が次に読み出す要求の格納位置を指し示すポインタとしての要求CI(Consumer Index)レジスタ310bを、MMIOレジスタ131aに有する。
つまり、要求PIレジスタ310aは、ファイルサーバOS105がクライアントから受け付けた新たな要求を格納する要求リングバッファ125の位置を指し示す。そして、要求CIレジスタ310bは、ブロック制御マイクロプログラム108が次に読み込むべき要求リングバッファ125の位置を指し示す。
応答リングバッファ126も要求リングバッファ125と同様に2つのインデックスを有する。応答リングバッファ126は、当該応答リングバッファに対して新しい応答を格納する位置を示すポインタとしての応答PI(producer Index)レジスタ311aと、応答リングバッファ126が次に受け付ける応答の格納位置を指し示すポインタとしての応答CI(Consumer Index)レジスタ311bを、MMIOレジスタ131aに有する。
つまり、応答PIレジスタ311aは、ブロック制御マイクロプログラム108が処理した新たな応答を格納する応答リングバッファ126の位置を指し示す。そして、応答CIレジスタ310bは、ファイルサーバOS105が次に読み込むべき応答リングバッファ126の位置を指し示す。
ここで、VMM106が提供する仮想HBA127のPCIコンフィグレジスタ130とMMIOレジスタ131の構成について説明する。仮想HBA127のPCIコンフィグレジスタ130は、操作対象のMMIOレジスタ131aを指定するフィールド(BAR0 Addr)301と、割り込み対象のMMIOレジスタ131bを指定するフィールド(BAR1 Addr)302と、を含む。
操作対象のMMIOレジスタ131aは、図3で示すように、要求リングバッファ125のベースアドレスを格納する要求ベースフィールド321aと、応答リングバッファ126のベースアドレスを格納6する応答ベースフィールド321bと、上述した要求リングバッファ125の要求PIレジスタ310a及び要求CIレジスタ310bと、上述した応答リングバッファ126の応答PIレジスタ311a及び応答CIレジスタ311bと、仮想HBA127の状態を格納する仮想HBAstatusフィールド309と、仮想HBA127の使用可比(使用開始)を示す仮想HBAenableフィールド308を含む。
割り込み対象のMMIOレジスタ131bは、拡張メッセージシグナル割り込み(MSI−X:Extended Message Signaled Interrupt)テーブル306と、MSI−XのPBA(Pending Bit Array)テーブル307と、を含む。MSI−X及びPBAについてはPCI−Expressの規格に準拠するものである。
次に、VMM106が生成するアドレス変換テーブル129は、VMM106とブロック制御マイクロプログラム108の両者がアクセス可能な共有領域としてのユーザ領域204に配置される。VMM106は、図2Aで示したように、ファイルサーバOS105に割り当てたユーザ領域204と、ブロック制御マイクロプログラム108とVMM106がアクセスするスーパーバイザ領域205について、ファイルサーバOS105から認識されるゲスト物理アドレス空間202と、ブロック制御マイクロプログラム108から認識されるホスト物理アドレス空間203との関連付けを保持するアドレス変換情報を含む。このアドレス変換情報の一例としては、VMM106がユーザ領域204の開始アドレスとして割り当てたアドレスAD#3となる。つまり、ゲスト物理アドレス空間202にアドレスAD#3を加算したアドレスがホスト物理アドレス空間203となる。
なお、このアドレス変換情報は、VMM106がゲストOSとしてのファイルサーバOS105を起動するときに、当該ゲストOSに割り当てたメモリリソース113の開始アドレスをアドレス変換テーブル129に書き込む。そして、VMM106は、アドレス変換テーブル129の内容をブロック制御マイクロプログラム108に通知しておく。これにより、ブロック制御マイクロプログラム108は、ファイルサーバOS105が認識するゲスト物理アドレス空間202のアドレスで通信を行うことが可能となる。
上記ユーザ領域204のファイルシステムレイヤ121、仮想HBAドライバ123、仮想HBA127のアドレスは、ファイルサーバOS105がゲスト物理アドレス空間202でアクセスする。
すなわち、PCIコンフィグレジスタ130のレジスタ(BAR0 Addr)301は、ゲスト物理アドレス空間202でMMIOレジスタ131aの開始アドレスを指定し、レジスタ(BAR1 Addr)302は、ゲスト物理アドレス空間202でMMIOレジスタ131bの開始アドレスを指定する。そして、MMIOレジスタ131についても同様であり、MMIOレジスタ131aは、要求リングバッファ125と応答リングバッファ126のベースアドレス、PI及びCIをゲスト物理アドレス空間202で指定する。
これに対して、図1、図2Aで示したスーパーバイザ領域205には、ブロック制御マイクロプログラム108とVMM106が使用する通信データパスに関する情報を保持する通信データパス制御テーブル133が配置される。
そして、通信データパス制御テーブル133には、ユーザ領域204のリソースにアクセスするためのアドレスが、ホスト物理アドレス空間203で格納される。
通信データパス制御テーブル133は、後述するように、仮想HBA127のPOST(Power On Self test)の状態を格納するフィールド312と、ブロック制御マイクロプログラム108が認識した仮想HBA127の状態を格納するフィールド313と、PCIコンフィグレジスタ130を指し示すホスト物理アドレス空間203を格納するフィールド314と、PCIコンフィグレジスタ130のレジスタ(BAR0 Addr)301に対応するMMIOレジスタ131aへのホスト物理アドレス空間203を格納するフィールド315と、PCIコンフィグレジスタ130のレジスタ(BAR1 Addr)302に対応するMMIOレジスタ131bへのホスト物理アドレス空間203を格納するフィールド316と、アドレス変換テーブル129へのホスト物理アドレス空間203を格納するフィールド317から構成される。なお、通信データパス制御テーブル133の詳細については図4D、図4Eで詳述する。
ストレージ装置は、以上のように構成されて、ファイルサーバOS105とVMM106及びブロック制御マイクロプログラム108がアクセス可能なユーザ領域(共有領域)204に仮想HBAドライバ123を配置する。そして、仮想HBAドライバ123の要求リングバッファ125と応答リングバッファ126を通信データパスとしてファイルサーバOSとブロック制御マイクロプログラム108が高速な通信を行う。
<ファイルサーバOSからブロック制御マイクロプログラムへの通信の概要>
次に、ファイルサーバOS105からブロック制御マイクロプログラム108への通信の概要を説明する。
ファイルサーバOS105は、クライアントから受け付けた要求(コマンド)を要求リングバッファ125のSCSI CDB304に格納し、要求に関連するデータはデータバッファ124に格納する。そして、ファイルサーバOS105は、データバッファ124上のデータの位置からバッファアドレスリストを生成してSGL303に格納する。
この要求を取得するブロック制御マイクロプログラム108は、ポーリングなどにより、通信データパス制御テーブル133でフィールド317のアドレス変換テーブル129のアドレス変換情報と、フィールド315のMMIOレジスタ131aのアドレスを参照し、要求リングバッファ125の要求PIレジスタ310aを取得する。そして、ブロック制御マイクロプログラム108は、要求CIレジスタ310aのSCSI CDB304のコマンドと、当該コマンドに関連する転送データの位置情報を示すバッファアドレスリストをSGL303から取得する。
次に、ブロック制御マイクロプログラム108は、アドレス変換テーブル129のアドレス変換情報に基づいて、要求CIレジスタ310bからSGL303のバッファアドレスリストに記載された転送データの位置情報をゲスト物理アドレス空間202で取得し、アドレス変換情報を用いてゲスト物理アドレス空間202をホスト物理アドレス空間203に変換する。そして、ブロック制御マイクロプログラム108は、変換されたホスト物理アドレス空間203を用いて、要求リングバッファ125の転送データの読出しを行う。
ブロック制御マイクロプログラム108は、要求リングバッファ125からの読み出しが完了すると、要求CIレジスタ310bの値を更新する。そして、ブロック制御マイクロプログラム108は、要求リングバッファ125から読み出したコマンドとデータに基づいてストレージデバイス120にアクセスする。
以上の処理により、ファイルサーバOS105からブロック制御マイクロプログラム108への通信はVMM106を介することなくメモリリソース113上に設定した通信データパスで実現できる。
<ブロック制御マイクロプログラム108 → ファイルサーバOS105の概要>
一方、ブロック制御マイクロプログラム108がストレージデバイス120をアクセスした結果を、ファイルサーバOS105に通知する際には、応答リングバッファ126への書き込みに加えて、VMM106へ物理割込み134を通知する。
ブロック制御マイクロプログラム108は、ストレージデバイス120にアクセスした結果を応答するため、通信データパス制御テーブル133でフィールド317のアドレス変換テーブル129のアドレス変換情報と、フィールド315のMMIOレジスタ131aのアドレスを参照し、応答リングバッファ126の応答PIレジスタ311aのアドレスを取得する。そして、ブロック制御マイクロプログラム108は、応答PIレジスタ311aのゲスト物理アドレス空間202をアドレス変換情報に基づいてホスト物理アドレス空間203に変換する。そして、ブロック制御マイクロプログラム108は、要求されたコマンドに対する応答を応答PIレジスタ311aに書き込む。
次に、ブロック制御マイクロプログラム108は、VMM106に対して物理割込み134を通知し、ファイルサーバOS105へ割込み通知を行うよう要求する。VMM106は物理割込み134を受けると、ファイルサーバOS105の仮想HBA127へ仮想割り込み128を通知する。ファイルサーバOS105は、仮想HBA127からI/O割り込みを受けて、応答リングバッファ126の応答CIレジスタ311bから応答を読み込む。ファイルサーバOS105は、読み込んだ応答をクライアントへ返信する。ファイルサーバOS105は、読み込みが完了したので、応答CIレジスタ311bを更新する。
以上の処理によって、ブロック制御マイクロプログラム108からファイルサーバOS105への通信が実現できる。
<リソース管理テーブル>
次に、ブロック制御マイクロプログラム108が管理するリソース管理テーブル142について説明する。リソース管理テーブル142は、CPUリソース112を管理するCPU割り当て管理テーブル401と、メモリリソース113を管理するメモリ割り当て管理テーブル402と、I/Oリソース114を管理するI/O割り当て管理テーブル403と、を含む。
図4Aは、ブロック制御マイクロプログラム108が管理するCPU割り当て管理テーブル401の一例を示す図である。
CPU割り当て管理テーブル401は、CPUリソース112の物理CPUコア番号を格納するエントリ4011と、物理CPUコア番号毎に、仮想化支援機能(VMX)の設定状態を格納するエントリ4012と、物理CPUコア番号毎に、ホストとなるソフトウェアの割当先を格納するエントリ4013と、物理CPUコア番号毎に、割り当て先のゲストソフトウェアの情報を格納するエントリ4014と、を含む。
CPU割り当て管理テーブル401の各エントリ4011〜4014は、物理CPUコアの数に応じたフィールドを有する。エントリ4012は、“0”が仮想化支援機能をOFFに設定したことを示し、“1”が仮想化支援機能をONに設定したことを示す。図示の例では、物理CPUコア番号=0〜3が仮想化支援機能をOFFにし、物理CPUコア番号=4〜7が仮想化支援機能をONにした例を示す。
エントリ4013は、物理CPUコア番号=0〜3がブロック制御マイクロプログラム108に割り当てられ、物理CPUコア番号=4〜7がVMM106に割り当てられたことを示す。
エントリ4014は、物理CPUコア番号=0〜3がゲストのないホストであることを示し、物理CPUコア番号=4〜7はファイルサーバOS105がゲストであることを示す。
図4Bは、ブロック制御マイクロプログラム108が管理するメモリ割り当て管理テーブル402の一例を示す図である。
メモリ割り当て管理テーブル402は、メモリリソース113の物理アドレス空間に割り当てたソフトウェアを管理する。図示の例では、メモリリソース113の3つの領域に、それぞれソフトウェアを割り当てた例を示し、物理アドレス(物理メモリ範囲)が0〜16GBの領域4021にはブロック制御マイクロプログラム108が割り当てられ、16〜18GBの領域4022にはVMM106が割り当てられ、18〜32GBの領域4023にはファイルサーバOS105が割り当てられた例を示す。
図4Cは、ブロック制御マイクロプログラム108が管理するI/O割り当て管理テーブル403の一例を示す図である。
I/O割り当て管理テーブルI/O割り当て管理は、I/Oリソース114を構成するI/Oデバイス毎のフィールド4031〜4033と、I/Oデバイスを割り当てたホストとなるソフトウェアのエントリと、I/Oデバイスを割り当てたゲストとなるソフトウェアのエントリと、を含む。
フィールド4031は、NIC118がホストとしてVMM106に割り当てられ、ゲストとしてファイルサーバOS105が割り当てられる例を示す。フィールド4032は、TA119がホストとしてブロック制御マイクロプログラム108に割り当てられ、ゲストが存在しない例を示す。フィールド4033は、HBA120bがホストとしてブロック制御マイクロプログラム108に割り当てられ、ゲストが存在しない例を示す。
本実施例では、リソース管理テーブル142のテーブルについて、ブロック制御マイクロプログラム108が保持した例を示したが、VMM106に分散して保持するデータ構造としても良い。例えば、CPU割り当て管理テーブル401や、I/O割り当て管理テーブル403のゲストのエントリをVMM106が保持するようにしても良い。
<通信データパス制御テーブル133>
図4Dは、VMM106が管理する通信データパス制御テーブル133の一例を示す図の前半部である。図4Eは、VMM106が管理する通信データパス制御テーブル133の一例を示す図の後半部である。
通信データパス制御テーブル133は、テーブル先頭から現在のフィールドまでのバイト数を格納するバイトオフセット1331と、当該フィールドの長さをバイト数で示すサイズ1332と、フィールドの名称を格納するフィールドネーム1333と、当該フィールドの内容を記述する意味1334と、当該エントリを設定するソフトウェアを格納する設定者1335から一つのテーブルが形成される。
通信データパス制御テーブル133は、0〜7バイト目まではヘッダ情報511が格納され、図4Eの56バイト目以降はマルチキューに対応するときに使用されるエントリである。
図4Dのバイトオフセット1331=8バイト〜47バイトが、図3に示したフィールド312〜317に対応する。
フィールド312の“vHBA device POST”は、VMM106によって設定され、仮想HBA127の初期化状態を示す。未初期化の場合は“0”に設定され、サービス開始の場合は“1”に設定される。
フィールド313の“block micro Acknowledge”は、仮想HBA127のPOSTコードの進行に追従して、ブロック制御マイクロプログラム108側で認識した値を示す。
フィールド314の“(i)PCI configuration register location”は、0番目の仮想HBA127のPCI configurationレジスタ130のアドレスを指定する。本アドレスは、VMM106がホスト物理アドレス空間203で設定する。
フィールド315の“(ii)BAR0 MMIO register − operational”は、0番目の仮想HBA127のBAR0 MMIOレジスタ131aのアドレスを指定する。本アドレスは、VMM106がホスト物理アドレス空間203で設定する。
フィールド316の“(iii)BAR1 MMIO register − MSI−X”は、0番目の仮想HBA127のBAR1 MMIOレジスタ131bのMSI−Xテーブルのアドレスを指定する。本アドレスは、VMM106がホスト物理アドレス空間203で設定する。
フィールド317の“(iv)Address Translation Information”は、0番目の仮想HBA127を使用しているVMM106のメモリアドレスの変換情報(ゲスト物理アドレス→ホスト物理アドレス)を保持する構造体のアドレスを指定する。本アドレスは、VMM106がホスト物理アドレス空間203で設定する。
<アドレス変換テーブル129>
図4Fは、VMM106が管理するアドレス変換テーブル129の一例を示す図である。アドレス変換テーブル129は、テーブル先頭から現在のフィールドまでのバイト数を格納するバイトオフセット1291と、当該フィールドの長さをバイト数で示すサイズ1292と、フィールドの名称を格納するフィールドネーム1293と、当該フィールドの内容を記述する意味1294と、当該エントリを設定するソフトウェアを格納する設定者1295から一つのテーブルが形成される。
アドレス変換テーブル129は、0〜7バイト目まではヘッダ情報611が格納され、40バイト目以降は複数のアドレス変換情報を有する場合のエントリに使用される。
図4Fにおいて、フィールド601の“LogicalStartAddress#0”は、VMM106(ファイルサーバOS105)からみたゲスト物理アドレス空間202の先頭を示す。
フィールド602の“Size#0”は、VMM106(ファイルサーバOS105)が認識するユーザ領域204のサイズを示す。
フィールド603の“PhysicalBase#0”は、本ユーザ領域204の先頭ゲスト物理アドレス(LogicalStartAddress#0)に対応するホスト物理アドレスを示す。
ブロック制御マイクロプログラム108は、アドレス変換テーブル129の変換情報を用いてゲスト物理アドレスをホスト物理アドレスへ変換することができる。
<PCIコンフィグレジスタ130>
図8Aは、PCIコンフィグレジスタ130の一例を示す図である。PCIコンフィグレジスタ130は、レジスタ先頭から現在のフィールドまでのバイト数を格納するバイトオフセット1301と、当該フィールドの長さをバイト数で示すサイズ1302と、フィールドの名称を格納するフィールドネーム1303と、初期化後の値を格納する初期値1304と、当該フィールドの内容を記述する意味、注釈1305からレジスタが形成される。
PCIコンフィグレジスタ130は、10バイト目のBAR0にMMIOレジスタ131aのアドレスが格納され、図3のフィールド301に相当する。また、PCIコンフィグレジスタ130の18バイト目のBAR1にMMIOレジスタ131bのアドレスが格納され、図3のフィールド302に相当する。
<MMIOレジスタ131a(BAR0)>
図8Bは、MMIOレジスタ131a(BAR0)の一例を示す図である。
MMIOレジスタ131aは、レジスタ先頭から現在のフィールドまでのバイト数を格納するオフセット1311と、当該フィールドの長さをバイト数で示すサイズ1312と、フィールドの名称を格納するネーム1313と、RO=リードオンリー、RW=リードアンドライト等を格納する属性1314と、当該フィールドの内容を記述する注釈1315からレジスタが形成される。
MMIOレジスタ131aは、0128hバイト目の“Queue enable request”が、図3に示した仮想HBAenableフィールド308に対応する。012Chバイト目の“Queue status”が、図3に示した仮想HBAstatusフィールド309に対応する。
また、0140hバイト目の“ITQ#0 base addr”が、図3に示した要求ベースフィールド321aに対応し、要求リングバッファ125のベースアドレスが格納される。
また、0148hバイト目の“ITQ#0 length”は、要求リングバッファ125の長さ1601に対応する。
また、0150hバイト目の“ITQ#0 PI/CI Value”が、図3に示した要求PIレジスタ310aと、要求CIレジスタ310bに対応する。
また、0160hバイト目の“TIQ#0 base addr”が、図3に示した応答ベースフィールド321bに対応し、応答リングバッファ126のベースアドレスが格納される。0168hバイト目の“TIQ#0 length”は、応答リングバッファ126の長さ1602に対応する。0170hバイト目の“TIQ#0 PI/CI Value”が、図3に示した応答PIレジスタ311aと、応答CIレジスタ311bに対応する。
<要求リングバッファ125>
図9Aは、要求リングバッファ125のエントリデータフォーマットの一例を示す図である。本仕様は、Information technology - SCSI over PCIe(R) Architecture(SOP)(T10/2239-D Revision 4, )のフォーマットに準拠している。
1コマンドは概ね64〜128バイトに収まるため、本実施例では、一例として、リングエントリのサイズを128バイトで制御する。128バイトを超える要求をエンキューする場合は、次のエントリにまたがって格納される。
要求リングバッファ125の32バイト目の“CDB”は、図3に示した、SCSIコマンドを格納するSCSI CDB304である。そして、要求リングバッファ125の32バイト目の“CDB”は、図3に示した、SCSIコマンドを格納するSCSI CDB304である。そして、65バイト目以降が、バッファアドレスリストを格納するSGL(Scatter Gather List)303である。
<応答リングバッファ126>
図9Bは、応答リングバッファ126のエントリデータフォーマットの一例を示す図である。本仕様は、要求リングバッファ125と同様、Information technology - SCSI over PCIe(R) Architecture(SOP)のフォーマットに準拠している。要求リングバッファ125と同じく、本実施例では、一例として、リングエントリのサイズを128バイトで制御する。128バイトを超える要求をエンキューする場合は、次のエントリにまたがって格納される。
応答リングバッファ126の12バイト〜19バイトは、図3に示した、status305である。
<SGL303>
図9Cは、SGL(Scatter Gather List)303のデスクリプタデータフォーマットの一例を示す図である。本仕様は、Information technology - PCIe(R) architecture Queuing Interface (PQI)(T10/2240-D Revision 6a )に準拠している。
SGL303のデータは、0〜7バイトがアドレス部1802で、8〜11バイトまでがバッファ長1803を構成する。
アドレス部1802に、データバッファへのポインタを格納する。本ポインタは、ファイルサーバOS105が認識するゲスト物理アドレス空間202で指定される。
図9Aにおいて、SGL303のフィールド中に、本データ構造が複数個格納できる。本データは16バイトエントリであるため、typicalにはbyte offset=64〜127までで4つのSGL303が指定できる。なおSGL数が4を超えた場合、要求リングバッファ125の次のエントリにまたがってSGL303が格納される。
<通信データパスの初期化処理>
次に、ブロック制御マイクロプログラム108とVMM106及びファイルサーバOS105で行われる通信データパスの初期化処理について図5A、図5Bを参照しながら説明する。図5Aは、通信データパスの初期化処理の一例を示すタイムチャートである。この処理は、ブロック制御マイクロプログラム108の起動が完了した後に実行される。
ステップS701では、ブロック制御マイクロプログラム108がスーパーバイザ領域205の通信データパス制御テーブル133をクリアする。この時点では、まだVMM106が起動していないので、ブロック制御マイクロプログラム108は、通信データパス制御テーブル133が配置される既知のアドレスをクリアしておく。
次に、ブロック制御マイクロプログラム108は、VMM106を起動させてからゲストOSとしてファイルサーバOS105を起動させる(S702)この処理は、例えば、ブロック制御マイクロプログラム108が、図2Aに示したホスト物理アドレス空間203のアドレスAD#1〜AD#3にVMM106及びファイルサーバOS105のブートイメージを読み込んで、図1に示したグループA115のCPUリソース112を割り当てれば良い。
VMM106は起動を開始すると、ファイルサーバOS105のメモリ領域(図2AのAD#2〜AD#3)を確保し、アドレス変換テーブル129の内容を確定する。また、VMM106はPCIコンフィグレジスタ130及びMMIOレジスタ131を初期化する(S703)。
VMM106は、仮想HBA127の提供を開始し、ゲストOSとしてのファイルサーバOS105を起動する(S704)。ファイルサーバOS105は、起動すると仮想HBAドライバ123をロードして仮想HBA127が利用可能となる(S705)。
そして、VMM106は、要求リングバッファ125と応答リングバッファ126の領域をユーザ領域204に確保する。VMM106は、要求リングバッファ125と応答リングバッファ126の設定が完了すると、要求ベースフィールド321aと応答ベースフィールド321bにベースアドレスをゲスト物理アドレスで設定する。また、VMM106は、要求リングバッファ125の要求PIレジスタ310a及び要求CIレジスタ310bを設定し、応答リングバッファ126の応答PIレジスタ311a及び応答CIレジスタ311bを設定する。
要求リングバッファ125及び応答リングバッファ126の設定が完了すると、仮想HBAenableフィールド308に“1”を設定して利用開始を示し、仮想HBA127を有効化する(S706)。この後、VMM106は、仮想HBAstatusフィールド309に“1”を設定し、仮想HBA127の状態をenableに設定する。
以上の設定が完了すると、ファイルサーバOS105がブロック制御マイクロプログラム108を介してストレージデバイス120へのアクセス(SCSI block access)を開始する(S707)。
上記の初期化処理において、通信データパス制御テーブル133の初期化は、次のように行われる。
ステップS701で、ブロック制御マイクロプログラム108が通信データパス制御テーブル133をクリアする。その後、仮想HBA127のステータスの変化や、初期化の完了により、ブロック制御マイクロプログラム108やVMM106が順次通信データパス制御テーブル133を設定する。
まず、ステップS703で、VMM106が、ファイルサーバOS105のメモリ領域(図2AのAD#2〜AD#3)を確保した後、アドレス変換テーブル129の内容が設定されるので、通信データパス制御テーブル133のフィールド317のアドレス変換テーブル129のアドレスを設定する。
VMM106がPCIコンフィグレジスタ130及びMMIOレジスタ131を初期化すると、通信データパス制御テーブル133のフィールド314のPCIコンフィグレジスタ130のアドレスと、フィールド315のMMIOレジスタ131aのアドレス及びフィールド316のMMIOレジスタ131bのアドレスを設定する。
通信データパス制御テーブル133のフィールド312の“vHBA device POST”は、ステップS703で仮想HBA127の初期化が完了するので、VMM106によって“1”に設定される。
仮想HBA127の初期化が完了したステップS703の後には、ブロック制御マイクロプログラム108が仮想HBA127を認識するので、ブロック制御マイクロプログラム108が通信データパス制御テーブル133のフィールド312を“1”に設定する。以上のように、初期化の進行に応じてVMM106とブロック制御マイクロプログラム108によって通信データパス制御テーブル133が設定される。
図5Bは、ストレージ装置の起動からファイルサーバOS105の実行までの処理の概要を示すシーケンス図である。
ストレージ装置の停止状態(S801)から電源を投入すると、ブロック制御マイクロプログラム108が通信データパス制御テーブル133をクリアし、初期化する(S802=図7のステップS701)。
次に、ブロック制御マイクロプログラム108は、VMM106を起動させて(図7のS702)、仮想HBA127の初期化を実施させる(S803)。VMM106が仮想HBA127を完了した段階では、ゲストOSに割り当てられていないため、通信データパス制御テーブル133のフィールド312の仮想HBA127のPOSTの値は0となる。
VMM106がゲストOSとしてファイルサーバOS105を稼働させると、VMM106が仮想HBA127をファイルサーバOS105に割り当てる(S804)。この状態では、まだファイルサーバOS105が仮想HBAドライバ123をロードしていないので、仮想HBAstatusフィールド309の値は“0”である。
ファイルサーバOS105が仮想HBAドライバ123をロードして、要求リングバッファ125及び応答リングバッファ126の設定が完了すると、仮想HBA127が利用可能となる(S805)。この段階で、仮想HBAstatusフィールド309の値は“1”となる。
ファイルサーバOS105がクライアントから要求を受け付けて、要求リングバッファ125にコマンド及びデータを書き込むと、要求PIレジスタ310aが更新されてブロック制御マイクロプログラム108が当該要求を処理する(S806)。処理が完了するとブロック制御マイクロプログラム108は応答リングバッファ126の応答PIレジスタ311aにストレージデバイス120のアクセス結果を書き込んで処理を完了する(S805)。
<ファイルサーバOSからブロック制御マイクロプログラムへの通信>
図6Aは、ファイルサーバOS105からブロック制御マイクロプログラム108への通信処理の一例を示すタイムチャートである。
ステップS901では、ファイルサーバOS105がクライアントからストレージデバイス120へのアクセス要求として、例えば、NFS(Network File System)要求を受信する。ファイルサーバOS105は、受信した要求のコマンドに対応するデータを格納するためのデータバッファ124を確保する。
ファイルサーバOS105は、受信したデータを格納したデータバッファ124を指し示すバッファアドレスリストを生成する。ファイルサーバOS105は、受信したコマンドとデータのバッファアドレスリストを要求リングバッファ125に格納する(S902)。
ファイルサーバOS105は、次の要求を受け付ける要求リングバッファ125の位置を更新するため、要求PIレジスタ310aをインクリメントする(S903A)。
一方、ブロック制御マイクロプログラム108は、ポーリングなどによって要求リングバッファ125のポインタである要求PIレジスタ310aを監視する(S900)。ステップS903Bでは、ブロック制御マイクロプログラム108が、要求PIレジスタ310aの更新を検出し、要求PIレジスタ310aで指定される要求リングバッファ125からコマンドを読み込む。
次に、ブロック制御マイクロプログラム108は、読み込んだコマンドをデコードして、ストレージデバイス120へのアクセスがリードとライトの何れであるかを判定する(S904)。
読み込んだコマンドがライトであれば、ブロック制御マイクロプログラム108は、要求PIレジスタ310aが示す要求リングバッファ125のSGL303からバッファアドレスリストを取得する。次に、ブロック制御マイクロプログラム108は、アドレス変換テーブル129を読み込んで、バッファアドレスリストのゲスト物理アドレス空間202を、ホスト物理アドレス空間203へ変換し、データバッファ124の位置を特定する(S905)。
ブロック制御マイクロプログラム108は、要求CIレジスタ310bの値をインクリメントして、次に読み込むべき要求リングバッファ125の位置を更新する(S906)。その後、ブロック制御マイクロプログラム108は、取得したコマンド及びバッファアドレスリストのデータでストレージデバイス120へのアクセスを実行する(S907)。
以上の処理により、ファイルサーバOS105とブロック制御マイクロプログラム108は、VMM106を介在することなく直接通信を行うことが可能となって、VMM106への切り替えに要するオーバーヘッドを削減し、処理の高速化を推進できるのである。
図6Bは、上記図6Aの処理のうちファイルサーバOS105からブロック制御マイクロプログラム108への処理の一例を示すフローチャートである。
ファイルサーバOS105がクライアントからストレージデバイス120へのアクセス要求を受け付けると、処理が開始される(S1002)。アクセス要求としては、例えば、NFS要求を受信する。ファイルサーバOS105は、受信した要求のコマンドに対応するデータを格納するためのデータバッファ124を確保する(S1003)。
ファイルサーバOS105は、受信したデータを格納したデータバッファ124を指し示すバッファアドレスリストを生成する。ファイルサーバOS105は、受信したコマンドとデータのバッファアドレスリストを要求リングバッファ125に格納する(S1004)。
ファイルサーバOS105は、仮想HBAドライバ123を呼び出して(S1011)、データバッファ124の位置をMMIOレジスタ131aから取得する(S1012)。
ファイルサーバOS105は、受信したデータを格納したデータバッファ124の位置からバッファアドレスリストを生成し、要求リングバッファのSGL303に格納する(S1014)。また、ファイルサーバOS105は、ストレージデバイス120に対するコマンドをSCSI CDB(Command Descriptor Block)304に格納する。
そして、ファイルサーバOS105は、次の要求を受け付ける要求リングバッファ125の位置を更新するため、要求PIレジスタ310aをインクリメントする(S1015)。
ファイルサーバOS105は、上記処理を繰り返して要求リングバッファ125へ受け付けたコマンドとデータを格納する。
図6Cは、上記図6Aの処理のうちブロック制御マイクロプログラムで行われる処理の一例を示すフローチャートである。
この処理は、ブロック制御マイクロプログラム108が起動されると実行される(S1101)。ブロック制御マイクロプログラム108は、ポーリングによって要求リングバッファ125のポインタである要求PIレジスタ310aが更新されるまで待機する(S1102)。
要求PIレジスタ310aが更新されると、ブロック制御マイクロプログラム108は、要求PIレジスタ310aで指定される要求リングバッファ125からコマンドを読み込む。ブロック制御マイクロプログラム108は、読み込んだコマンドをデコードして、ストレージデバイス120へのアクセスがリードとライトの何れであるかを判定する(S1103)。
読み込んだコマンドがライトであれば、ブロック制御マイクロプログラム108は、要求PIレジスタ310aが示す要求リングバッファ125のSGL303からバッファアドレスリストを取得する(S1104)。
次に、ブロック制御マイクロプログラム108は、アドレス変換テーブル129を読み込んで、バッファアドレスリストのゲスト物理アドレス空間202を、ホスト物理アドレス空間203へ変換し、データバッファ124の位置を特定する(S1105)。
ブロック制御マイクロプログラム108は、要求CIレジスタ310bの値をインクリメントして、次に読み込むべき要求リングバッファ125の位置を更新する(S1106)。その後、ブロック制御マイクロプログラム108は、取得したコマンド及びバッファアドレスリストのデータでストレージデバイス120へのアクセスを実行する(S1107)。アクセスが完了した後は、後述する応答処理へ移行する。
図7Aは、ブロック制御マイクロプログラム108からファイルサーバOSへの通信処理の一例を示すタイムチャートである。
ブロック制御マイクロプログラム108は、図6AのステップS907に続いて、ストレージデバイス120のアクセスが完了するまで待機する(S1200)。ストレージデバイス120のアクセスが完了すると、ブロック制御マイクロプログラム108は要求に対する応答(データ)をストレージデバイス120から受信する。以下、ストレージデバイス120に対する要求がリードであった例を示す。
ブロック制御マイクロプログラム108は、ストレージデバイス120から読み出したデータを、データバッファ124へ転送する(S1201)。この処理は、ブロック制御マイクロプログラム108がコピー処理またはDMAによって実行する。
ブロック制御マイクロプログラム108は、データバッファ124にコピーした位置を応答リングバッファ126のstatus305に書き込んで更新する(S1202)。
次に、ステップS1203では、ブロック制御マイクロプログラム108が、応答PIレジスタ311aの値をインクリメントして、次の応答を格納する応答リングバッファ126の位置を更新する。
次に、ブロック制御マイクロプログラム108は、物理割込み134を生成し、物理割込み134をVMM106に送信する(S1204)。ここで、物理割込み134はブロック制御マイクロプログラム108を実行するグループB116のCPUリソース112から、グループA115に対するプロセッサ間割り込みIPI(Inter Processor Interrupt)とする。
VMM106は、物理割込み134を受信すると、仮想割り込み128を生成してファイルサーバOS105の仮想HBAドライバ123に通知する。
仮想HBAドライバ123は、VMM106から仮想割り込み128を受けると、所定の割り込みハンドラを起動して、応答リングバッファ126のstatus305を読み込む。そして、ファイルサーバOS105の仮想HBAドライバ123は、status305に格納されたデータバッファ124の位置からデータを取得する。
そして、ファイルサーバOS105は、応答CIレジスタ311bの値をインクリメントして、次の応答を格納する応答リングバッファ126の位置を更新する(S1207)次に、ファイルサーバOS105のファイルシステムレイヤ121は、クライアントに対してストレージデバイス120からの応答を返信する。
ブロック制御マイクロプログラム108は、物理割込み134を送信した後は、ポーリングにより応答リングバッファ126の応答CIレジスタ311bが更新されるのを監視する(S1209)。
ブロック制御マイクロプログラム108は、応答CIレジスタ311bの更新を検出すると(S1207B)、応答リングバッファ126のstatus305を解放する。
上記処理により、ブロック制御マイクロプログラム108からの応答は、応答リングバッファ126と物理割込み134を介してファイルサーバOS105に送信される。
図7Bは、上記図7Aの処理のうちブロック制御マイクロプログラム108で行われる処理の一例を示すフローチャートである。
ブロック制御マイクロプログラム108は、図6CのステップS1108に続いて、ストレージデバイス120のアクセスが完了するまで待機する(S1302)。ストレージデバイス120のアクセスが完了すると、ブロック制御マイクロプログラム108は要求に対する応答(データ)をストレージデバイス120から受信する。上述のように、以下では、ストレージデバイス120に対する要求がリードであった例を示す。
ブロック制御マイクロプログラム108は、ストレージデバイス120から読み出したデータを、データバッファ124へ転送する(S1303)。この処理は、ブロック制御マイクロプログラム108がコピー処理またはDMAによって実行する。
ブロック制御マイクロプログラム108は、データバッファ124にコピーした位置を応答リングバッファ126のstatus305に書き込んで更新する(S1304)。
次に、ステップS1305では、ブロック制御マイクロプログラム108が、応答PIレジスタ311aの値をインクリメントして、次の応答を格納する応答リングバッファ126の位置を更新する(S1305)。
次に、ブロック制御マイクロプログラム108は、物理割込み134を生成し、物理割込み134をVMM106に送信する(S1306)。ここで、物理割込み134はブロック制御マイクロプログラム108を実行するグループB116のCPUリソース112から、グループA115に対するプロセッサ間割り込みIPI(Inter Processor Interrupt)とする。
ブロック制御マイクロプログラム108は、物理割込み134を送信した後は、ポーリングにより応答リングバッファ126の応答CIレジスタ311bが更新されるのを監視する(S1307)。
ブロック制御マイクロプログラム108は、応答CIレジスタ311bの更新を検出すると(S1207B)、応答リングバッファ126のstatus305を解放して処理を終了し、再び図6CのステップS1101に復帰する。
図7Cは、本発明の実施例を示し、上記図7Aの処理のうちファイルサーバOS105で行われる処理の一例を示すフローチャートである。
VMM106は、ブロック制御マイクロプログラム108から物理割込み134を受信すると、仮想割り込み128を生成してファイルサーバOS105の仮想HBAドライバ123に通知する。
ファイルサーバOS105は、仮想HBAドライバ123がVMM106から仮想割り込み128を受けると、図7Cの処理を開始する。
仮想割り込み128を受けて、仮想HBAドライバ123は所定の割り込みハンドラを起動し(S1402)、応答リングバッファ126からstatus305を読み込む(S1403)。
ファイルサーバOS105は、status305に格納されたデータバッファ124の位置からデータを取得する(S1404)。この処理は、ストレージデバイス120にリードのときの処理で、仮想HBAドライバ123がデータバッファ124の内容をファイルシステムレイヤ121に通知する。
ファイルサーバOS105は、応答CIレジスタ311bの値をインクリメントして、次の応答を格納する応答リングバッファ126の位置を更新する(S1405)。
ファイルサーバOS105は、ファイルシステムレイヤ121の所定の関数を起動し(S1406)、クライアントに対してストレージデバイス120からの応答を返信する(S1407)。
以上の処理により、ファイルサーバOS105は、仮想割り込み128に基づいて、応答リングバッファ126の内容を、クライアントに返信することができる。
<補足>
本実施例では、VMM106上のファイルサーバOS105と、VMM106と同一のハードウェア109上で稼働するブロック制御マイクロプログラム108との通信を、メモリリソース113上に設定した通信データパスで行う。
メモリリソース113上の通信データパスは、データバッファ124、要求リングバッファ125、応答リングバッファ126、MMIOレジスタ131、アドレス変換テーブル129及び通信データパス制御テーブル133からなり、ファイルサーバOS105からブロック制御マイクロプログラム108への通信ではVMM106を介することなく高速な通信を実現できるのである。
なお、上記実施例においては、仮想マシンを生成するソフトウェアとしてVMM106を用いる例を示したが、ハイパーバイザを用いてもよい。
また、上記実施例においては、CPUリソース112の仮想化支援機能としてインテル(登録商標)社のVT−zを用いる例を示したが、AMD社のAMD−V等のように仮想化を支援する機能を利用するものであればよい。
また、上記実施例においては、CPUリソース112が仮想化支援機能を備えたマルチコアのCPUで構成された例を示したが、複数のCPUコアまたはCPUモジュールを含むヘテロジニアス・マルチコア・プロセッサでプロセッサリソースを構成してもよい。
また、上記実施例においては、通信データパスとして要求リングバッファ125と応答リングバッファ126を用いる例を示したが、これに限定されるものではなく、キューなどのバッファで構成してもよい。
また、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
15.
請求項14に記載のストレージ装置であって、
前記生成された通信経路は、前記ストレージデバイスに対する前記要求の処理結果を含む応答を格納する応答バッファを含み、
前記第1のOSは、
前記取得した要求をストレージデバイスに対して実行し、前記ストレージデバイスからの応答を取得した後に、前記応答を前記応答バッファに格納し、
前記第2のOSは、
前記応答バッファから前記応答を取得することを特徴とするストレージ装置。
16.
前記15.に記載のストレージ装置であって、
前記仮想化部は、
前記応答バッファに対して新たな応答を格納する位置を示す応答PI(Producer Index)レジスタと、前記応答バッファから次に読み出す応答を指し示す応答CI(Consumer Index)レジスタと、を前記メモリ上に設定し、前記第1のOSおよび前記第2のOSに対して前記応答PIレジスタと前記応答CIレジスタとを提供し、
前記第1のOSは、
前記応答バッファに前記応答を格納した後に、前記応答PIレジスタを更新し、前記過疎化部に対して割り込みを通知し、
前記仮想化部は、
前記割り込みを受信すると前記第2のOSに対して当該割り込みを通知し、前記第2のOSは、前記応答CIレジスタを参照して前記応答バッファから前記応答を読み出した後、前記応答CIレジスタを更新することを特徴とするストレージ装置。
101 ファイルサーバパーティション
102 ブロックサービスパーティション
204 ユーザ領域(共有)
205 スーパーバイザ領域
105 ファイルサーバOS
106 VMM
108 ブロック制御マイクロプログラム
109 ハードウェア
112 CPUリソース
113 メモリリソース
114 I/Oリソース
119 TA
120 ストレージデバイス
120b HBA
121 ファイルシステムレイヤ
123 仮想HBAドライバ
124 データバッファ
125 要求リンクバッファ
126 応答リンクバッファ
127 仮想HBA
129 アドレス変換テーブル
130 PCIコンフィグレジスタ
131 MMIOレジスタ
132 仮想割り込み生成部
133 通信データパス制御テーブル
134 物理割り込み
141 物理HBAドライバ
142 リソース管理テーブル

Claims (15)

  1. 仮想化支援機能を有する複数のプロセッサと、メモリと、前記プロセッサにアクセスされるストレージデバイスとを含むストレージ装置の制御方法であって、
    前記ストレージ装置は、
    前記プロセッサのうち仮想化支援機能を無効にした第1のプロセッサグループと、前記プロセッサのうち仮想化支援機能を有効にした第2のプロセッサグループと、を含み、
    前記ストレージデバイスを制御する第1のOSに前記第1のプロセッサグループを割り当てて、前記第1のOSを起動させる第1のステップと、
    仮想マシンを稼働させる仮想化部に前記第2のプロセッサグループを割り当て、前記仮想化部を起動させる第2のステップと、
    前記仮想化部が、前記メモリのうちの所定の領域を前記第2のOSに割り当てて、当該第2のOSを起動させる第3のステップと、
    前記仮想化部が、前記メモリに前記第1のOSと第2のOSが通信を行う通信経路を設定する第4のステップと、
    を含むことを特徴とするストレージ装置の制御方法。
  2. 請求項1に記載のストレージ装置の制御方法であって、
    前記仮想化部が、前記メモリ上に配置した前記通信経路のアドレス情報および生成状態を含む通信経路制御情報を生成する第5のステップと、
    前記仮想化部が、前記通信経路の利用開始を検出する第6のステップと、
    前記仮想化部が、前記通信経路の利用開始を前記第1のOSに通知する第7のステップと、
    をさらに含むことを特徴とするストレージ装置の制御方法。
  3. 請求項2に記載のストレージ装置の制御方法であって、
    前記第4のステップは、
    前記仮想化部が、前記メモリに前記仮想化部と前記第1のOSの双方がアクセス可能な共有領域を設定し、
    前記第5のステップは、
    前記仮想化部が、前記第2のOSに割り当てたメモリの領域について、前記第2のOSから認識されるゲスト物理アドレスと、前記第1のOSから認識されるホスト物理アドレスとの関連付けを保持するアドレス変換情報を生成し、
    前記第3のステップは、
    前記仮想化部が、前記アドレス変換情報を確定するステップと、
    前記仮想化部が、前記アドレス変換情報を、前記共有領域に格納するステップと、
    前記仮想化部が、前記第1のOSに対して、前記アドレス変換情報を前記共有領域に格納したことを通知するステップと、
    を含むことを特徴とするストレージ装置の制御方法。
  4. 請求項3に記載のストレージ装置の制御方法であって、
    前記通信経路は、前記ストレージデバイスへの要求と、該要求に付随するデータの位置情報を含むバッファアドレスリストと、を格納する要求バッファを含み、
    前記第2のOSが、前記ストレージデバイスに対する要求と当該要求に付随するデータを受信する第8のステップと、
    前記第2のOSが、前記受信したデータの位置情報を示すバッファアドレスリストを生成する第9のステップと、
    前記第2のOSが、前記要求バッファに対して前記要求とバッファアドレスリストを格納する第10のステップと、
    前記第1のOSが、前記要求バッファから前記要求を取得し、前記バッファアドレスリストを参照して前記要求に付随するデータを取得する第11のステップと、
    をさらに含むことを特徴とするストレージ装置の制御方法。
  5. 請求項4に記載のストレージ装置の制御方法であって、
    前記仮想化部は、前記要求バッファに対して新たな要求を格納する位置を示す要求PI(Producer Index)レジスタと、前記要求バッファから読み込む要求の位置を指し示す要求CI(Consumer Index)レジスタと、を前記メモリ上に設定し、前記第1のOS及び前記第2のOSに対して前記要求PIレジスタと前記要求CIレジスタとを提供し、
    前記第10のステップは、
    前記第2のOSは、前記要求バッファに対して前記要求とバッファアドレスリストを格納した後に、前記要求PIレジスタを更新し、
    前記第11のステップは、
    前記第1のOSが、前記要求PIレジスタの更新を監視して、前記要求PIレジスタが更新されたときには、前記要求バッファから前記ストレージデバイスへの要求と、前記要求に付随するデータを取得してから前記要求CIレジスタを更新することを特徴とするストレージ装置の制御方法。
  6. 請求項5に記載のストレージ装置の制御方法であって、
    前記第11のステップは、
    前記第1のOSが、前記バッファアドレスリストを参照して、前記バッファアドレスリストに格納された前記データの位置情報を前記ゲスト物理アドレスで取得し、前記アドレス変換情報を取得して前記ゲスト物理アドレスを、前記ホスト物理アドレスに変換し、前記変換されたホスト物理アドレスを用いて、前記データの読出しを行うことを特徴とするストレージ装置の制御方法。
  7. 請求項4に記載のストレージ装置の制御方法であって、
    前記通信経路は、前記ストレージデバイスに対する前記要求の処理結果を含む応答を格納する応答バッファを含み、
    前記第1のOSが、前記取得した要求をストレージデバイスに対して実行し、前記ストレージデバイスからの応答を取得する第12のステップと、
    前記第1のOSが、前記応答を前記応答バッファに格納する第13のステップと、
    前記第2のOSは、前記応答バッファから前記応答を取得する第14のステップと、
    をさらに含むことを特徴とするストレージ装置の制御方法。
  8. 請求項7に記載のストレージ装置の制御方法であって、
    前記仮想化部は、前記応答バッファに対して新たな応答を格納する位置を示す応答PI(Producer Index)レジスタと、前記応答バッファから次に読み出す応答を指し示す応答CI(Consumer Index)レジスタと、を前記メモリ上に設定し、前記第1のOSおよび前記第2のOSに対して前記応答PIレジスタと前記応答CIレジスタとを提供し、
    前記第13のステップは、
    前記第1のOSが、前記応答バッファに前記応答を格納した後に、前記応答PIレジスタを更新し、前記仮想化部に対して割り込みを通知し、
    前記第14のステップは、
    前記仮想化部が前記割り込みを受信すると前記第2のOSに対して当該割り込みを通知し、前記第2のOSは、前記応答CIレジスタを参照して前記応答バッファから前記応答を読み出した後、前記応答CIレジスタを更新することを特徴とするストレージ装置の制御方法。
  9. 仮想化支援機能を有する複数のプロセッサと、メモリと、前記プロセッサにアクセスされるストレージデバイスとを含むストレージ装置であって、
    前記プロセッサのうち仮想化支援機能を無効にした第1のプロセッサグループと、
    前記プロセッサのうち仮想化支援機能を有効にした第2のプロセッサグループと、
    前記第1のプロセッサグループを割り当てて、前記ストレージデバイスを制御する第1のOSと、
    前記第2のプロセッサグループを割り当てて、仮想マシンを稼働させる仮想化部と、を有し、
    前記仮想化部は、
    前記メモリのうちの所定の領域を第2のOSに割り当てて、当該第2のOSを起動して仮想マシンとして提供し、前記メモリ上に前記第1のOSと第2のOSが通信を行う通信経路を設定することを特徴とするストレージ装置。
  10. 請求項9に記載のストレージ装置であって、
    前記仮想化部は、
    前記メモリ上に配置した前記通信経路のアドレス情報および生成状態を含む通信経路制御情報を生成し、前記通信経路の利用開始を検出し、前記利用開始を検出したときには、前記通信経路の利用開始を前記第1のOSに通知することを特徴とするストレージ装置。
  11. 請求項10に記載のストレージ装置であって、
    前記仮想化部は、
    前記メモリに前記仮想化部と前記第1のOSの双方がアクセス可能な共有領域を設定し、前記第2のOSに割り当てたメモリの領域について、前記第2のOSから認識されるゲスト物理アドレスと、前記第1のOSから認識されるホスト物理アドレスとの関連付けを保持するアドレス変換情報を生成して前記共有領域に格納し、前記第1のOSに対して、前記アドレス変換情報を前記共有領域に格納したことを通知することを特徴とするストレージ装置。
  12. 請求項11に記載のストレージ装置であって、
    前記通信経路は、前記ストレージデバイスへの要求と、該要求に付随するデータの位置情報を含むバッファアドレスリストと、を格納する要求バッファを含み、
    前記仮想化部は、
    前記第2のOSが、ストレージデバイスに対する要求と当該要求に付随するデータを受信し、前記受信したデータの位置情報を示すバッファアドレスリストを生成して、前記要求バッファに対して前記要求とバッファアドレスリストを格納し、
    前記第1のOSは、
    前記要求バッファから前記要求を取得し、前記バッファアドレスリストを参照して前記要求に付随するデータを取得することを特徴とするストレージ装置。
  13. 請求項12に記載のストレージ装置であって、
    前記仮想化部は、
    前記要求バッファに対して新たな要求を格納する位置を示す要求PI(Producer Index)レジスタと、前記要求バッファから読み込む要求の位置を指し示す要求CI(Consumer Index)レジスタと、を前記メモリ上に設定し、前記第1のOS及び前記第2のOSに対して前記要求PIレジスタと前記要求CIレジスタとを提供し、前記第2のOSが、前記要求バッファに対して前記要求とバッファアドレスリストを格納した後に、前記要求PIレジスタを更新し、
    前記第1のOSは、
    前記要求PIレジスタの更新を監視して、前記要求PIレジスタが更新されたときには、前記要求バッファから前記ストレージデバイスへの要求と、前記要求に付随するデータを取得してから前記要求CIレジスタを更新することを特徴とするストレージ装置。
  14. 請求項13に記載のストレージ装置であって、
    前記第1のOSは、
    前記バッファアドレスリストを参照して、前記バッファアドレスリストに格納された前記データの位置情報をゲスト物理アドレスで取得し、前記アドレス変換情報を取得して前記ゲスト物理アドレスを、ホスト物理アドレスに変換し、前記変換されたホスト物理アドレスを用いて、前記データの読出しを行うことを特徴とするストレージ装置。
  15. 仮想化支援機能を有する複数のプロセッサと、メモリとを含む情報処理装置であって、
    前記プロセッサのうち仮想化支援機能を無効にした第1のプロセッサグループと、
    前記プロセッサのうち仮想化支援機能を有効にした第2のプロセッサグループと、
    前記第2のプロセッサグループを割り当てて、1以上の仮想マシンを稼働させる仮想化部と、
    前記メモリ上に設定されて、前記仮想マシンと前記第1のプロセッサグループが通信を行う通信経路と、
    を備えたことを特徴とする情報処理装置。
JP2013115614A 2013-05-31 2013-05-31 ストレージ装置の制御方法、ストレージ装置及び情報処理装置 Expired - Fee Related JP6040101B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013115614A JP6040101B2 (ja) 2013-05-31 2013-05-31 ストレージ装置の制御方法、ストレージ装置及び情報処理装置
US14/252,805 US9495172B2 (en) 2013-05-31 2014-04-15 Method of controlling computer system and computer system
EP14167491.1A EP2808786B1 (en) 2013-05-31 2014-05-08 Method of controlling computer system and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013115614A JP6040101B2 (ja) 2013-05-31 2013-05-31 ストレージ装置の制御方法、ストレージ装置及び情報処理装置

Publications (3)

Publication Number Publication Date
JP2014235501A true JP2014235501A (ja) 2014-12-15
JP2014235501A5 JP2014235501A5 (ja) 2016-01-21
JP6040101B2 JP6040101B2 (ja) 2016-12-07

Family

ID=50735861

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013115614A Expired - Fee Related JP6040101B2 (ja) 2013-05-31 2013-05-31 ストレージ装置の制御方法、ストレージ装置及び情報処理装置

Country Status (3)

Country Link
US (1) US9495172B2 (ja)
EP (1) EP2808786B1 (ja)
JP (1) JP6040101B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017072827A1 (ja) * 2015-10-26 2017-05-04 株式会社日立製作所 計算機システム、及び、アクセス制御方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798567B2 (en) 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
US9984023B2 (en) * 2015-08-12 2018-05-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Multi-server system interconnect
US9806904B2 (en) 2015-09-08 2017-10-31 Oracle International Corporation Ring controller for PCIe message handling
US10628192B2 (en) * 2015-12-24 2020-04-21 Intel Corporation Scalable techniques for data transfer between virtual machines
JP6365564B2 (ja) * 2016-02-15 2018-08-01 マツダ株式会社 車両の温度表示装置
US10078543B2 (en) 2016-05-27 2018-09-18 Oracle International Corporation Correctable error filtering for input/output subsystem
US10140214B2 (en) * 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
CN109254826B (zh) * 2017-07-12 2024-02-06 超威半导体公司 虚拟化加速处理装置的挂起检测
US10877823B1 (en) 2019-12-10 2020-12-29 Cisco Technology, Inc. High performance in-memory communication infrastructure for asymmetric multiprocessing systems without an external hypervisor
CN113094111B (zh) * 2021-04-16 2024-01-09 三星(中国)半导体有限公司 设备以及设备的启动方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008152594A (ja) * 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
JP2010128911A (ja) * 2008-11-28 2010-06-10 Hitachi Ltd 仮想計算機の制御方法、仮想計算機の制御プログラム及び計算機装置
JP2010238130A (ja) * 2009-03-31 2010-10-21 Ntt Docomo Inc 情報処理装置および制御方法
JP2012226471A (ja) * 2011-04-18 2012-11-15 Hitachi Ltd 通信方法および通信サーバ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772419B1 (en) 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
JP3546678B2 (ja) 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
WO2005116833A1 (en) 2004-05-21 2005-12-08 Computer Associates Think, Inc. Method and apparatus for dynamic cpu resource management
US8387048B1 (en) * 2006-04-25 2013-02-26 Parallels IP Holdings GmbH Seamless integration, migration and installation of non-native application into native operating system
US8549516B2 (en) * 2008-12-23 2013-10-01 Citrix Systems, Inc. Systems and methods for controlling, by a hypervisor, access to physical resources
US9058183B2 (en) * 2009-12-29 2015-06-16 Advanced Micro Devices, Inc. Hypervisor isolation of processor cores to enable computing accelerator cores
US8566492B2 (en) 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US9405566B2 (en) * 2013-05-24 2016-08-02 Dell Products L.P. Access to storage resources using a virtual storage appliance

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008152594A (ja) * 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
JP2010128911A (ja) * 2008-11-28 2010-06-10 Hitachi Ltd 仮想計算機の制御方法、仮想計算機の制御プログラム及び計算機装置
JP2010238130A (ja) * 2009-03-31 2010-10-21 Ntt Docomo Inc 情報処理装置および制御方法
JP2012226471A (ja) * 2011-04-18 2012-11-15 Hitachi Ltd 通信方法および通信サーバ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017072827A1 (ja) * 2015-10-26 2017-05-04 株式会社日立製作所 計算機システム、及び、アクセス制御方法
JPWO2017072827A1 (ja) * 2015-10-26 2018-08-16 株式会社日立製作所 計算機システム、及び、アクセス制御方法
US10592274B2 (en) 2015-10-26 2020-03-17 Hitachi, Ltd. Computer system and access control method

Also Published As

Publication number Publication date
EP2808786B1 (en) 2015-11-04
JP6040101B2 (ja) 2016-12-07
US9495172B2 (en) 2016-11-15
US20140359267A1 (en) 2014-12-04
EP2808786A1 (en) 2014-12-03

Similar Documents

Publication Publication Date Title
JP6040101B2 (ja) ストレージ装置の制御方法、ストレージ装置及び情報処理装置
CN107209681B (zh) 一种存储设备访问方法、装置和系统
US10180843B2 (en) Resource processing method and device for a multi-core operating system
EP2849076B1 (en) Dma transmission method and system
JP5276218B2 (ja) リアルタイムでlunをファイルに、またはファイルをlunに変換すること
CN106471469B (zh) 在虚拟化信息处理系统中的输入/输出加速
JP6029550B2 (ja) 計算機の制御方法及び計算機
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
US20150143031A1 (en) Method for writing data into storage device and storage device
KR102321913B1 (ko) 불휘발성 메모리 장치, 및 그것을 포함하는 메모리 시스템
WO2015114745A1 (ja) 計算機及び計算機のi/o制御方法
US11016817B2 (en) Multi root I/O virtualization system
CN113312155B (zh) 虚拟机创建方法、装置、设备、系统及计算机程序产品
KR101716715B1 (ko) 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN116204456A (zh) 数据访问方法及计算设备
WO2015180598A1 (zh) 对存储设备的访问信息处理方法和装置、系统
US9229891B2 (en) Determining a direct memory access data transfer mode
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US10169062B2 (en) Parallel mapping of client partition memory to multiple physical adapters
CN111367472A (zh) 虚拟化方法和装置
US10909044B2 (en) Access control device, access control method, and recording medium containing access control program
US20190265902A1 (en) Live migration of applications using capi flash
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161014

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161107

R150 Certificate of patent or registration of utility model

Ref document number: 6040101

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees