JP6464777B2 - 情報処理装置及びプログラム - Google Patents

情報処理装置及びプログラム Download PDF

Info

Publication number
JP6464777B2
JP6464777B2 JP2015016471A JP2015016471A JP6464777B2 JP 6464777 B2 JP6464777 B2 JP 6464777B2 JP 2015016471 A JP2015016471 A JP 2015016471A JP 2015016471 A JP2015016471 A JP 2015016471A JP 6464777 B2 JP6464777 B2 JP 6464777B2
Authority
JP
Japan
Prior art keywords
virtual
data
shared data
sharing area
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015016471A
Other languages
English (en)
Other versions
JP2016143120A (ja
Inventor
剛彦 村田
剛彦 村田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015016471A priority Critical patent/JP6464777B2/ja
Priority to US14/992,071 priority patent/US9928185B2/en
Publication of JP2016143120A publication Critical patent/JP2016143120A/ja
Application granted granted Critical
Publication of JP6464777B2 publication Critical patent/JP6464777B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、情報処理装置及びプログラムに関する。
近年、単一のコンピュータ・アーキテクチャ上で複数のオペレーティングシステム(OS:Operating System)を動作させるコンピュータシステムが知られている。
例えば、コンピュータシステムに備えられた複数の処理モジュールと、メイン・メモリとをコンピュータシステム内の別々のパーティションとして構成し、異なるパーティション内で複数のOSを並行に実行する。
このようなコンピュータシステムにおいて、共用メモリを通じて異なるパーティションが相互に通信を行なうことが知られている。
また、共用メモリにデータが格納されたことは、割込み通知により他方のパーティションに通知される。
例えば、仮想化OSであるハイパーバイザ(Hypervisor)上において複数の仮想OSが実行されるシステムにおいては、ハイパーバイザ経由でIPI(Inter-Processor Interrupt)機能を使用することで、送信先の仮想OSに割込み通知を行なう。IPIは、ハイパーバイザを介したゲストOS(Guest OS)間における割り込み制御である。この割込みを受けた送信先の仮想OSにおいては、共有メモリにおける前記領域をリードすることにより送信データの受け入れ準備を認識する。このようにして、仮想OS間でのデータ授受(通信)が完了する。なお、以下、ゲストOSをGOSという場合がある。
特開2004−220216号公報 特表2008−535099号公報 国際公開第2006/022161号パンフレット
しかしながら、このような従来のコンピュータシステムにおいて、IPI送信処理に要する時間が占める割合が多く、このIPI送信処理がOS間通信の処理性能のボトルネックとなっている。これにより、IPI送信処理がOS間通信の速度を低減させるという課題がある。
GOSにおいてIPIを発行すると、ハイパーバイザ層まで処理が遷移するが、このハイパーバイザにおいてはソフトウェア処理のオーバーヘッドが大きく、IPIを発行するまでに時間がかかるからである。
1つの側面では、本発明は、仮想OS間通信における処理性能を向上させることを目的とする。
このため、この情報処理装置は、第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、共有データを送信する第1の仮想OSにおいて、前記共有メモリのデータ共有領域に共有データを格納する第1格納処理部と、前記共有データを受信する第2の仮想OSにおいて、前記データ共有領域の更新状況を定期的に確認する更新判断部と、前記データ共有領域が更新されている場合に、当該データ共有領域から前記共有データを読み出す第1読出処理部とを備え、前記第1の仮想OSにおいて、前記データ共有領域に前記共有データを格納する際に、前記共有メモリに格納された第1のカウンタ値をインクリメントする第1カウンタ値更新部を備え、前記第2の仮想OSにおいて、前記データ共有領域から前記共有データを読み出す際に、前記共有メモリに格納された第2のカウンタ値をインクリメントする第2カウンタ値更新部を備え、前記更新判断部は、前記第1のカウンタ値と前記第2のカウンタ値とを比較し、前記第1のカウンタ値と前記第2のカウンタ値とが不一致の場合に、前記データ共有領域が更新されていると判断する
一実施形態によれば、仮想OS間通信における処理性能を向上させることができる。
実施形態の一例としてのストレージ装置のハードウェア構成を模式的に示す図である。 実施形態の一例としてのストレージ装置におけるハイパーバイザ上の複数のOSを模式的に示す図である。 実施形態の一例としてのストレージ装置におけるハイパーバイザ上のNAS用OS及びSAN用OSの機能構成を模式的に示す図である。 実施形態の一例としてのストレージ装置のハイパーバイザ上におけるNAS用OS及びSAN用OSの詳細な機能構成を示す図である。 実施形態の一例としてのストレージ装置におけるGOS間通信を説明する図である。 実施形態の一例としてのストレージ装置におけるGOS間通信部の機能構成を示す図である。 実施形態の一例としてのストレージ装置における更新判断部の第1の更新判断タイミングを例示する図である。 実施形態の一例としてのストレージ装置における更新判断部の第2の更新判断タイミングを例示する図である。 実施形態の一例としてのストレージ装置のGOS間通信部によるNAS用OSからSAN用OSへのゲストOS間通信を説明するための図である。 (a),(b)は実施形態の一例としてのストレージ装置のGOS間通信部によるSAN用OSからNAS用OSへのゲストOS間通信を説明するための図である。 実施形態の一例としてのストレージ装置1における、SAN用OSからNAS用OSへのデータ通信時のIPIモードからポーリングモードへの変更時の処理を説明するためのフローチャートである。 実施形態の一例としてのストレージ装置におけるSAN用OSからNAS用OSへの共有データの送信回数の実測例を示す図である。 実施形態の一例としてのストレージ装置におけるSAN用OSからNAS用OSへの共有データの送信回数の実測例を示す図である。 実施形態の一例としてのストレージ装置におけるSAN用OSからNAS用OSへのデータ通信時のポーリングモードからIPIモードへの変更時の処理を説明するためのフローチャートである。 実施形態の一例としてのストレージ装置におけるSAN用OSからNAS用OSへの共有データの送信回数の実測例を示す図である。 実施形態の一例としてのストレージ装置におけるSAN用OSからNAS用OSへの共有データの送信回数の実測例を示す図である。 実施形態の一例としてのストレージ装置におけるSAN用OSからNAS用OSへの共有データの送信回数の実測例を示す図である。
以下、図面を参照して本情報処理装置及びプログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)構成
図1は実施形態の一例としてのストレージ装置1のハードウェア構成を模式的に示す図である。
本ストレージ装置1は、ドライブエンクロージャ(DE:Drive Enclosure)30に格納された記憶装置31を仮想化して、仮想ストレージ環境を形成する。そしてストレージ装置1は、仮想ボリュームを上位装置である図示しないホスト装置に提供する。
本ストレージ装置1は、1以上のホスト装置に対して通信可能に接続されている。ホスト装置とストレージ装置1とは、後述するCA(Communication Adapter)101,102により接続されている。
ホスト装置は、例えば、サーバ機能をそなえた情報処理装置であり、本ストレージ装置1との間において、NAS(Network Attached Storage)やSAN(Storage Area Network)のコマンドを送受信する。このホスト装置は、例えば、ストレージ装置1に対してNASにおけるリード/ライト等のディスクアクセスコマンドを送信することにより、ストレージ装置1が提供するボリュームにデータの書き込みや読み出しを行なう。
そして、本ストレージ装置1は、ホスト装置からボリュームに対して行なわれる入出力要求(例えば、リードコマンドやライトコマンド)に応じて、このボリュームに対応する実ストレージに対して、データの読み出しや書き込み等の処理を行なう。なお、ホスト装置からの入出力要求のことをI/OコマンドもしくはI/O要求という場合がある。
本ストレージ装置1は、図1に示すように、複数(本実施形態では2つ)のCM(Controller Module)100a,100b及び1つ以上(図1に示す例では1つ)のドライブエンクロージャ30をそなえる。
ドライブエンクロージャ30は、1以上(図1に示す例では4つ)の記憶装置(物理ディスク)31を搭載可能であり、これらの記憶装置31の記憶領域(実ボリューム,実ストレージ)を、本ストレージ装置1に対して提供する。
例えば、ドライブエンクロージャ30は、複数段のスロット(図示省略)をそなえ、これらのスロットに、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の記憶装置31を挿入することにより、実ボリューム容量を随時変更することができる。又、複数の記憶装置31を用いてRAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。
ドライブエンクロージャ30は、CM100aのデバイスアダプタ(Device Adapter:DA)103,103とCM100bのDA103,103とそれぞれ接続されている。そして、ドライブエンクロージャ30には、CM100a,100bのいずれからもアクセスして、データの書き込みや読み出しを行なうことができる。すなわち、ドライブエンクロージャ30の記憶装置31に対して、CM100a,100bのそれぞれを接続することにより、記憶装置へのアクセス経路が冗長化されている。
コントローラエンクロージャ40は、1以上(図1に示す例では2つ)のCM100a,100bを備える。
CM100a,100bは、ストレージ装置1内の動作を制御するコントローラ(ストレージ制御装置,情報処理装置)であり、ホスト装置から送信されるI/Oコマンドに従って、ドライブエンクロージャ30の記憶装置31へのアクセス制御等、各種制御を行なう。又、CM100a,100bは互いにほぼ同様の構成を有している。以下、CMを示す符号としては、複数のCMのうち1つを特定する必要があるときには符号100a,100bを用いるが、任意のCMを指すときには符号100を用いる。又、CM100aをCM#1と、CM100bをCM#2と、それぞれ表す場合がある。
また、図中、同一の符号は同一もしくは略同一の部分を示しているので、その詳細な説明は省略する。
CM100a,100bは二重化されており、通常は、CM100aがプライマリとして各種制御を行なう。しかし、このプライマリCM100aの故障時には、セカンダリのCM100bがプライマリとしてCM100aの動作を引き継ぐ。
CM100a,100bはCA101,102を介して、それぞれホスト装置に接続される。そして、これらのCM100a,100bは、ホスト装置から送信されるリード/ライト等のコマンドを受信し、DA103等を介して記憶装置31の制御を行なう。又、CM100a,100bは、PCIe(Peripheral Component Interconnect Express)等の図示しないインタフェースを介して相互に接続されている。
CM100は、図1に示すように、CA101,102と複数(図1に示す例では2つ)のDA103,103とをそなえるとともに、CPU(Central Processing Unit)1
10,メモリ106,SSD107及びIOC108をそなえる。
CA101,102は、ホスト装置等から送信されたデータを受信したり、CM100から出力するデータをホスト装置等に送信する。すなわち、CA101,102は、ホスト装置等の外部装置との間でのデータの入出力(I/O)を制御する。
CA101は、NASを介してホスト装置と通信可能に接続するネットワークアダプタ
であり、例えば、LAN(Local Area Network)インタフェース等である。
CM100は、このCA101により図示しない通信回線を介してホスト装置等とNASにより接続され、I/Oコマンドの受信やデータの送受信等を行なう。図1に示す例においては、CM100a,100bのそれぞれに2つのCA101,101がそなえられている。
CA102は、SANを介してホスト装置と通信可能に接続するネットワークアダプタであり、例えば、iSCSI(Internet Small Computer System Interface)インタフェースやFC(Fibre Channel)インタフェースで
ある。
CM100は、このCA102により図示しない通信回線を介してホスト装置等とSANにより接続され、I/Oコマンドの受信やデータの送受信等を行なう。図1に示す例においては、CM100a,100bのそれぞれに1つのCA102がそなえられている。
DA103は、ドライブエンクロージャ30や記憶装置31等と通信可能に接続するためのインタフェースである。DA103は、ドライブエンクロージャ30の記憶装置31が接続され、CM100は、ホスト装置から受信したI/Oコマンドに基づき、これらの記憶装置31に対するアクセス制御を行なう。
CM100は、このDA103を介して、記憶装置31に対するデータの書き込みや読み出しを行なう。又、図1に示す例においては、CM100a,100bのそれぞれに2つのDA103,103がそなえられている。そして、CM100a,100bのそれぞれにおいて、各DA103にドライブエンクロージャ30が接続されている。
これにより、ドライブエンクロージャ30の記憶装置31には、CM100a,100bのいずれからもデータの書き込みや読み出しを行なうことができる。
SSD107は、CPU110が実行するプログラムや種々のデータ等を格納する記憶装置である。
メモリ106は、種々のデータやプログラムを一時的に格納する記憶装置であり、図示しないメモリ領域とキャッシュ領域とをそなえる。キャッシュ領域は、ホスト装置から受信したデータや、ホスト装置に対して送信するデータを一時的に格納する。メモリ領域には、CPU110がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。
IOC(Input Output Controller)108は、CM100内におけるデータ転送を制御する制御装置であり、例えば、メモリ106に格納されたデータをCPU110を介することなく転送させるDMA(Direct Memory Access)転送を実現する。
CPU110は、種々の制御や演算を行なう処理装置であり、マルチコアプロセッサ(マルチCPU)である。CPU110は、SSD107等に格納されたOSやプログラムを実行することにより、種々の機能を実現する。
CPU110は、仮想化OSであるハイパーバイザ200を実行し、このハイパーバイザ上で複数の仮想マシン(VM)を実行することで複数のOS(仮想OS)を実行させることができる。以下、このハイパーバイザ200上で動作するOSをゲストOSもしくはGOSという場合がある。
複数のゲストOSはCPU110やメモリ106,SSD107等のハードウェア資源を共有することができる。
なお、複数のCPU110を備え、これらの複数のCPU110上でハイパーバイザ200を実行してもよい。
図2は実施形態の一例としてのストレージ装置1におけるハイパーバイザ200上の複数のOSを模式的に示す図である。
本実施形態においては、図2に示すように、ハイパーバイザ200上で、SAN用OS400とNAS用OS300とを実行する。
SAN用OS400は、SAN制御を行なうOS(第2の仮想OS)であり、カーネル401とファンクションファームウェア402とを備える。SAN用OS400としては既知の種々のOSを用いることができるが、本実施形態においてはWind River社のVxWorks(登録商標)を用いた例を示す。
NAS用OS300は、NAS制御を行なうOS(第1の仮想OS)であり、カーネル301とファンクションファームウェア302とを備える。NAS用OS300としては既知の種々のOSを用いることができるが、本実施形態においてはLinux(登録商標)を用いた例を示す。
そして、CPU110が、ストレージ制御プログラムを実行することにより、上述したハイパーバイザ200,SAN用OS400及びNAS用OS300として機能する。
なお、これらのハイパーバイザ200,SAN用OS400及びNAS用OS300としての機能を実現するためのプログラム(ストレージ制御プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
ハイパーバイザ200,SAN用OS400及びNAS用OS300としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ106やSSD107)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU110)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
図3は実施形態の一例としてのストレージ装置1におけるハイパーバイザ200上のNAS用OS300及びSAN用OS400の機能構成を模式的に示す図である。
NAS用OS300は、図3に示すように、Samba/NFS(Network File System)サーバソフトウェア350,ファイルシステム340,OSシステム制御部390及びSCSIドライバ群360を備える。
一方、SAN用OS400は、インテリジェントCAエージェント410を備える。又、NAS用OS300とSAN用OS400とを連結するGOS間通信部500が備えられている。
Samba/NFSサーバソフトウェア350は、ファイルシステムベースのアプリケーションであり、ホスト装置から受信したNASのI/O要求をSambaやNFSで受信して、ファイルシステム340に受け渡す。
ファイルシステム340は、例えば、VFS(Virtual file system)やext3等のファイルシステムであり、Samba/NFSサーバソフトウェア350から受け取ったI/O要求を関連するローカルファイルシステムごとのAPIに変換し、SCSIドライバ群360に受け渡す。
OSシステム制御部390は、NAS用OSとしての一般的な各種制御を行なうものであり、例えば、デバイスの追加要求等のイベント要求をSCSIドライバ群360(LLD310)に発行する。
SCSIドライバ群360は、SCSIデバイスを制御するための複数のドライバである。
SCSIドライバ群360は、図3に示すように、ULD(Upper Level Driver;上位層)330,MLD(Middle Level Driver;中位層)320及びLLD(Lower Level Driver;下位層)310の3階層で構成された階層化アーキテクチャを有する。
LD330は、SCSIのカーネルと主要なデバイス・タイプのドライバの最上位レベルのインタフェースを備える。
このULD330には、SD,SR,ST及びSGの4種のドライバが用意されており、これらのドライバは、SCSIデバイスの種類によって使い分けられる。ここで、SDはHDDへのアクセス時に使用され、ブロック型である。SRは、CD−ROMへのアクセス時に使用され、ブロック型である。STは、テープ装置へのアクセス時に使用され、ブロック型である。SGは、ホストバスアダプタ(ハード)を介さない場合に使用される擬似ホストアダプタであり、キャラクタ型である。
LD320は、ULD330とLLD310とに向けてSCSIドライバAPI(Application Programming Interface,ライブラリ)を提供する。SCSIドライバはこのMLD320を読み出して制御を行なう。
LLD310は、SCSIに適用可能な物理インタフェースに対応する実際のドライバを備え、ホストバスアダプタに相当する。LLD310は、ハードインタフェースを制御するドライバ層であり、使用されるドライバは装置固有である。例えば、このLLD310には、図4に示すように、iSCSIドライバ313やFCドライバ312が備えられる。更に、本ストレージ装置1においては、このLLD310にインテリジェントSCSIドライバ311を備える。なお、ULD330やMLD320には既存のLinuxドライバを使用することができる。
ホスト装置からのI/O要求は、NAS用OS300において、図3に示すように、Samba/NFSサーバソフトウェア350,ファイルシステム340、ULD330及びMLD320を介してLLD310のインテリジェントSCSIドライバ311に到達する。
インテリジェントSCSIドライバ311は、ファイルシステム340からのI/O要求を受け付け、このI/O要求を後述するGOS間通信部500経由でSAN用OS400側のインテリジェントCAエージェント410に送信する。なお、このI/O要求は、インテリジェントSCSIドライバ311においてSCSIコマンドの形式で要求を受け付けられる。
また、インテリジェントSCSIドライバ311は、送信したSCSIコマンドに対する応答(結果)を、インテリジェントCAエージェント410から受信し、この受け取った結果をSCSIドライバレイヤ360のULD330へ通知する。
インテリジェントSCSIドライバ311は、ホスト装置等からNASのI/O要求を受信すると、SAN専用ボリューム501(図4参照)への直接のアクセスを抑止し、後述するGOS間通信部500を介したゲストOS間通信により、SAN用OS400に対してこのNASのI/O要求を送信する。
さらに、インテリジェントSCSIドライバ311は、NAS用OS300のOSシステム制御部390から受けるデバイスに関するイベント要求を処理する。例えば、このイベント要求が、デバイスの追加要求である場合には、インテリジェントSCSIドライバ311は、この追加要求を受けて“ /dev”ディレクトリにデバイスファイルを追加(定義)する。
図4は実施形態の一例としてのストレージ装置1のハイパーバイザ200上におけるNAS用OS300及びSAN用OS400の詳細な機能構成を示す図である。
NAS用OS300は、図4に示すように、SCSIドライバレイヤ360,ファイルシステム340,Samba/NFSサーバソフトウェア350,SCSIアプリケーション370,及びネットワークレイヤ380を備える。
ネットワークレイヤ380は、ネットワーク層での通信制御を行ない、例えば、ホスト装置からNASのI/O要求を受信する。
SCSIドライバレイヤ360は、SCSIデバイスを制御するためのドライバ群であり、図3に示したSCSIドライバ群360に相当する。
NAS用OS300においては、ファイルシステム340を介して、このSCSIドライバレイヤ360にI/O制御要求が行なわれる。
このSCSIドライバレイヤ360において、SCSIディスクドライバが図3に示したULD330に相当し、コモンサービスがMLD320に相当する。
また、SCSIドライバレイヤ360においては、前述したLLD310に相当する、iSCSIドライバ313やFCドライバ312を備える。これらのNAS用OS300としての各部の機能は、例えば、Linux等において既知であり、その詳細な説明を省略する。
そして、本ストレージ装置1においては、このSCSIドライバレイヤ360のLLD310に、上述したインテリジェントSCSIドライバ311が備えられる。
SAN用OS400は、図4に示すように、インテリジェントCAドライバ420,ターゲットドライバ430,CAスレッド440,ベーシックコントロール450,バックグランドコントロール460,FC−CAドライバ425,iSCSI−CAドライバ424及びSAS−CAドライバ423を備える。
なお、これらのうち、ターゲットドライバ430,CAスレッド440,ベーシックコントロール450,バックグランドコントロール460,FC−CAドライバ425,iSCSI−CAドライバ424及びSAS−CAドライバ423としての機能は、VxWorks等のSAN用OS400において既知であり、その説明は省略する。
インテリジェントCAドライバ420は、SAN用OS400におけるSAN制御のチャネルアダプタドライバ層に追加されるNASの仮想ドライバ層である。このインテリジェントCAドライバ420は、NAS用OS300との間でNASのI/O要求や応答の授受を行なう。このインテリジェントCAドライバ420は、SCSIコマンドキュー421及びSCSIステータスキュー422を備える。
SCSIコマンドキュー421には、例えば、NAS用OS300から受信するI/Oコマンドが格納され、SCSIステータスキュー422には、NAS用OS300に応答するステータス情報等が格納される。
ターゲットドライバ430には、インテリジェントCAエージェント410が備えられる。このインテリジェントCAエージェント410は、ターゲットドライバ430に追加されたNAS専用機能であり、ゲストOS間通信を介して受信されたNAS用OS300からのI/O要求を制御するブロックである。
CAスレッド440には、オプティマイズドNASI/Oレイヤ451が備えられている。オプティマイズドNASI/Oレイヤ451は、NAS用OS300からのI/O要求を処理するものであり、SANのCAスレッド(CAドライバを含む)をカスタマイズしたものである。
さらに、ハイパーバイザ200上においては、1つ以上のSAN専用ボリューム501やNAS専用ボリューム502が備えられる。SAN専用ボリューム501は、SANによるI/O要求が行なわれる記憶領域であり、NAS用ボリューム502は、NASによるI/O要求が行なわれる記憶領域である。すなわち、これらのSAN専用ボリューム501やNAS専用ボリューム502はゲストOS専用ボリュームである。
これらのSAN専用ボリューム501やNAS専用ボリューム502は、例えば、図示しない管理装置により設定・管理がされる。
GOS間通信部500は、ゲストOS間でのデータの授受を行なうものであり、本ストレージ装置1においては、NAS用OS(第1の仮想OS)300とSAN用(第2の仮想OS)OS400との間でデータの授受を行なう。具体的には、例えば、NAS用OS300において受信したI/O要求(SCSIコマンド)をインテリジェントSCSIドライバ311からSAN用OS400側のインテリジェントCAエージェント410に受け渡す。
また、GOS間通信部500は、このI/O要求に対する応答(結果)を、SAN用OS400のインテリジェントCAエージェント410からNAS用OS300のインテリジェントSCSIドライバ311に受け渡す。
図5は実施形態の一例としてのストレージ装置1におけるGOS間通信を説明する図、図6はGOS間通信部500の機能構成を示す図である。
GOS間通信部500は、これらのSAN用OS400とNAS用OS300とのそれぞれにGOS間通信ドライバ510を設けることで、ゲストOS間の通信を制御する。以下、SAN用OS400に備えられるGOS間通信ドライバを符号510bを用いて表し、NAS用OS300に備えられるGOS間通信ドライバを符号510aを用いて表す。
図6に示すように、GOS間通信ドライバ510aは、第1送信処理部11,モード確認部25,第2受信処理部26及び第3受信処理部27としての機能を備える。
なお、モード確認部25,第2受信処理部26及び第3受信処理部27としての機能は、NAS用OS300上において受信処理タスクとしてアプリケーションレベルで実装される。
また、GOS間通信ドライバ510bは、第1受信処理部12,負荷判断部21,第2送信処理部22,第3送信処理部23及び閾値更新部24としての機能を備える。
なお、第1受信処理部12,負荷判断部21,第2送信処理部22,第3送信処理部23及び閾値更新部24としての機能もSAN用OS400上においてアプリケーションレベルで実装される。
GOS間通信には、NAS用OS300とSAN用OS400とで共有される共有メモリ520が用いられる。
共有メモリ520は、NAS用OS300及びSAN用OS400の双方からデータのリード及びデータのライトが可能な記憶装置である。この共有メモリ520には、データ共有領域521,送信カウンタ値格納領域522,受信カウンタ値格納領域523及びモード情報格納領域524が備えられる。
データ共有領域521には、一方のGOSから他のGOSへ受け渡される(送信される)データ(共有データ)が格納される。すなわち、SAN用OS400からNAS用OS300へ送信されるデータと、NAS用OS300からSAN用OS400へ送信されるデータがそれぞれ格納される。
なお、このデータ共有領域521において、SAN用OS400からNAS用OS300へ送信されるデータの格納位置と、NAS用OS300からSAN用OS400へ送信されるデータの格納位置とは、別々設けられることが望ましい。
送信カウンタ値格納領域522には、送信カウンタ値(第1のカウンタ値)が格納される。送信カウンタ値は、後述する送信カウンタ更新部112によって更新され、また後述する更新判断部122によって読み出される。
受信カウンタ値格納領域523には、受信カウンタ値が格納される。受信カウンタ値は、後述する受信カウンタ更新部123によって更新され、また後述する更新判断部122によって読み出される。
モード情報格納領域524には、SAN用OS400からNAS用OS300へのデータ送信についてのモードを表すモード情報が格納される。このモード情報は、後述する負荷判断部21によって設定されるものであり、その詳細については後述する。
共有メモリ520としては、例えば、プライマリCM100aに備えられたメモリ106の記憶領域の一部を用いてもよく、また、メモリ106とは別にメモリを備えてもよい。また、共有メモリ520はプライマリCM100aの外部に備えてもよい。
NAS用OS300からSAN用OS400へのデータ通信には、第1送信処理部11及び第1受信処理部12が用いられる。
第1送信処理部11は、図6に示すように、第1格納処理部111,送信カウンタ更新部112を備える。
また、第1受信処理部12は、第1読出処理部121,更新判断部122及び受信カウンタ更新部123を備える。
第1格納処理部(第1格納処理部)111は、共有データの送信元であるNAS用OS300において、SAN用OS400に送信するデータ(共有データ)を、共有メモリ520のデータ共有領域521に格納する。
送信カウンタ更新部112は、共有データの送信元であるNAS用OS300において、第1格納処理部111がデータ共有領域521に共有データを格納する際に、送信カウンタ値格納領域522に格納されている送信カウンタ値をインクリメントする。すなわち、送信カウンタ更新部112は、共有メモリ520に格納された送信カウンタ値(第1のカウンタ値)をインクリメントする第1カウンタ値更新部として機能する。
第1読出処理部121は、共有データの送信先であるSAN用OS400において、NAS用OS300から送信されるデータ(共有データ)を、共有メモリ520のデータ共有領域521から読み出す。このデータ共有領域521から読み出された共有データは、例えば、共有メモリ520に備えられたSAN用OS400用の領域に移動され、SAN用OS400によって用いられる。
受信カウンタ更新部123は、共有データの送信先であるSAN用OS400において、第1読出処理部121が共有メモリ520のデータ共有領域521から共有データを読み出す際に、受信カウンタ値格納領域523に格納されている受信カウンタ値をインクリメントする。すなわち、受信カウンタ更新部123は、共有メモリ520に格納された受信カウンタ値(第2のカウンタ値)をインクリメントする第2カウンタ値更新部として機能する。
更新判断部122は、共有データの送信先であるSAN用OS400において、共有メモリ520のデータ共有領域521の更新状況をポーリング(polling)により定期的に確認する。
更新判断部122は、送信カウンタ値格納領域522に格納されている送信カウンタ値と、受信カウンタ値格納領域523に格納されている受信カウンタ値とを比較する。そして、更新判断部122は、これらの送信カウンタ値と受信カウンタ値とが不一致の場合に、共有メモリ520のデータ共有領域521が更新された、すなわち、NAS用OS300から送信される新たな共有データがデータ共有領域521に格納されたと判断する。
そして、更新判断部122は、このような共有データがデータ共有領域521に格納されたか否かの確認をポーリングより定期的に実行する。
図7は実施形態の一例としてのストレージ装置1における更新判断部122の第1の更新判断タイミングを例示する図である。
更新判断部122には、図示しないタイマから定期的な割り込み(タイマ割り込み)が入力されるようになっており、第1の更新判断タイミングとして、このタイマ割り込みが入力されたタイミングで、データ共有領域521の更新状況をポーリングする。
図7に示すように、データ共有領域521の更新状況のポーリング(確認)は、CPU110によって何らかの処理(図7に示す例においてはタスクA,B)が実行されている場合や、アイドル(Idle)中であっても、タイマ割り込みが入力されるとポーリングが実行される。
また、更新判断部122は、データ共有領域521の更新状況のポーリングを、実行する処理の切り替え時(タスク切替時、スレッド切替時)や、処理の非実行状態(アイドル時)にも実施する。
なお、更新判断部122及び受信カウンタ更新部123としての機能は、SAN用OS400上においてスケジューラとしてアプリケーションレベルで実装される。
上述の如くタイマ割り込みをきっかけにデータ共有領域521の更新状況をポーリングする場合に、タイマ割り込みの周期が長くすると、割込み要因の発生から検出までに時間を要する。その一方で、タイマ割り込みの周期を短くすると、CPU110の負荷が高くなり、他の処理に支障が生じるおそれがある。
そこで、本ストレージ装置1において更新判断部122は、上述したタイマ割り込みに加えて、タスクの切れ間、スレッドの切れ間及びアイドル中の各タイミングでもデータ共有領域521の更新状況をポーリングする。
ここで、タスクの切れ間とはタスクが切り替えられるタイミングであり、スレッドの切れ間とはスレッドが切り替えられるタイミングである。アイドル中とは稼動中のCPU110やOSが遊休状態にあり、処理を実行していない状態(処理の非実行状態)である。
図8は実施形態の一例としてのストレージ装置1における更新判断部122の第2の更新判断タイミングを例示する図である。
この図8に示す例においては、符号P1〜P4によって示される各タイミング(第2の更新判断タイミング)でポーリングが実行されている。具体的には、タスクAからタスクBへの切り替えられるタイミング(符号P1参照)や、タスクBからアイドル状態へ移行するタイミング(符号P2参照)でポーリングが実行される。また、タスクAにおいてスレッドA−1からスレッドA−2へ切り替えられるタイミング(符号P3参照)においてもポーリングが実行される。さらに、アイドル状態(符号P4参照)においてもポーリングが実行される。
一般に、VxWorks等の即時応答性を重視して設計された、いわゆるリアルタイムOSは、応答時間の制限等が厳しく設計されており、即応性に優れている。従って、上述の如き各第2の更新タイミングにおいて、確実にポーリングを実行することができる。
また、ストレージ装置1においては、例えばホスト装置からのI/O要求に基づいて実行されるI/Oコマンド毎にタスクやスレッドの切り替えが発生するので、タスクの切れ間やスレッドの切れ間が頻繁に発生する。従って、第1受信処理部12が、上述の如き第2の更新判断タイミングでポーリングを実行することで、データ共有領域521の更新状況を効率的にポーリングすることができる。
本ストレージ装置1において、第1受信処理部12は、タイマ割り込みが入力されたタイミング(第1の更新判断タイミング)で、データ共有領域521の更新状況をポーリングするとともに、第2の更新判断タイミングにおいてもデータ共有領域521の更新状況をポーリングする。これにより、IPIによる割り込み通知を行なうことなく、NAS用OS300からSAN用OS400へ効率的にデータ通信を実行することができる。
そして、前述した第1読出処理部121は、更新判断部122が共有メモリ520のデータ共有領域521が更新されていると判断した場合に、データ共有領域521の共有データを、共有メモリ520のデータ共有領域521から読み出す。
すなわち、第1読出処理部121(第1受信処理部12)は、共有メモリ520が更新されている場合に、共有メモリ520のデータ共有領域521から共有データを読み出す。
このように、NAS用OS300からSAN用OS400へのデータ通信においては、共有メモリ520のデータ共有領域521のデータの読み出しが、第1受信処理部12によりポーリングによって行なわれる。
一方、SAN用OS400からNAS用OS300へのデータ通信には、負荷判断部21,第2送信処理部22,第3送信処理部23,閾値更新部24,モード確認部25,第2受信処理部26及び第3受信処理部27が用いられる。
負荷判断部21は、SAN用OS400における負荷状態を判断する。具体的には、負荷判断部21は、SAN用OS400における負荷状態を表す負荷状態値を算出する。例えば、負荷判断部21は、負荷状態値として、SAN用OS400からNAS用OS300への共有データの1秒あたりの送信回数(送信回数/秒)を算出する。
そして、負荷判断部21は、この算出した負荷状態値を閾値Tと比較して、負荷状態値が閾値T以上であるか否かを判断する。すなわち、負荷判断部21は、SAN用OS400における負荷状態を表す負荷状態値が閾値T以上であるか否かを判断する負荷判断部として機能する。負荷状態値が閾値T以上である状態はSAN用OS400が高負荷状態であることを示し、負荷状態値が閾値T未満である状態はSAN用OS400が低負荷状態であることを示す。
本ストレージ装置1において、SAN用OS400が低負荷状態においては、SAN用OS400からNAS用OS300へのデータ通信はIPIモードで行なわれる。また、SAN用OS400が高負荷状態においては、SAN用OS400からNAS用OS300へのデータ通信はポーリングモードで行なわれる。
IPIモードにおいては、SAN用OS400の第2送信処理部22が共有データの送信を行ない、NAS用OS300の第2受信処理部26が共有データの受信を行なう。
ポーリングモードにおいては、SAN用OS400の第3送信処理部23が共有データの送信を行ない、NAS用OS300の第3受信処理部27が共有データの受信を行なう。
第2送信処理部22は、図6に示すように、第2格納処理部221,IPI通知部222を備える。
第2格納処理部221は、共有データの送信元であるSAN用OS400において、NAS用OS300に送信するデータ(共有データ)を、共有メモリ520のデータ共有領域521に格納する。
IPI通知部222は、ハイパーバイザ200経由でIPI機能を使用することで、送信先のNAS用OS300のGOS間通信ドライバ510aに割込み通知を行なう。すなわち、IPI通知部222は、NAS用OS300に対して、第2格納処理部221が共有メモリ520のデータ共有領域521に共有データを格納したことを割り込み信号により通知する通知部として機能する。なお、以下、IPI機能による割込み通知をIPI通知という場合がある。
第2受信処理部26は、図6に示すように、第2読出処理部261を備え、共有メモリ520のデータ共有領域521に格納された共有データをIPI通知の受信をきっかけに読み出す。
具体的には、IPI通知部222からIPI通知が入力されると、NAS用OS300において割込みハンドラが受信処理タスクを起動し、第2受信処理部26(第2読出処理部261)としての機能が開始される。
第2読出処理部261は、IPI通知部222からIPI通知が入力されると、共有メモリ520のデータ共有領域521に格納されているデータを読み出す。このデータ共有領域521から読み出された共有データは、例えば、共有メモリ520に備えられたNAS用OS300用の領域に移動された後、NAS用OS300によって用いられる。
第3送信処理部23は、図6に示すように、第3格納処理部231,モード設定部232及びIPI通知部233を備える。
第3格納処理部231は、共有データの送信元であるSAN用OS400において、NAS用OS300に送信するデータ(共有データ)を、共有メモリ520のデータ共有領域521に格納する。
モード設定部232は、共有メモリ520のモード情報格納領域524に動作モードの設定を行なう。
モード設定部232は、上述した負荷判断部21による判断の結果、負荷状態値が閾値T以上である場合、すなわち、SAN用OS400が高負荷状態である場合には、共有メモリ520のモード情報格納領域524に、ポーリングモード(第1のモード)である旨を表す値を動作モード情報として設定する。
モード設定部232は、その後、SAN用OS400の高負荷状態が継続している場合には、共有メモリ520のモード情報格納領域524の動作モード情報の変更は行なわない(変更を抑止する)。
また、負荷状態値が閾値T未満である場合、すなわち、SAN用OS400が低負荷状態である間は、共有メモリ520のモード情報格納領域524に、IPIモード(第2のモード)である旨を表す値を動作モード情報として設定する。
IPI通知部233は、ハイパーバイザ200経由でIPI機能を使用することで、送信先のNAS用OS300のGOS間通信ドライバ510aに割込み通知を行なう。すなわち、IPI通知部23は、NAS用OS300に対して、第3格納処理部231が共有メモリ520のデータ共有領域521に共有データを格納したことを割り込み信号(IPI通知)により通知する通知部として機能する。
また、IPI通知部233は、その後、SAN用OS400の高負荷状態が継続している間は、NAS用OS300に対するIPI通知の発行を抑止する。
閾値更新部24は、閾値Tの値を更新して最適な閾値を設定する。閾値更新部24は、SAN用OS400からNAS用OS300へのデータ通信時において、モード設定部232により動作モードの変更が行なわれた場合に、その動作モードの変更による効果を判定する。
具体的には、閾値更新部24は、動作モード変更前のSAN用OS400の負荷状態値と、動作モード変更後のSAN用OS400の負荷状態値とを比較し、動作モード変更前の負荷状態値が変更後の負荷状態値よりも大きい場合には、動作モード変更による効果が得られていないと判断する。
ここで、負荷状態としては、例えば、基準時間あたりの共有データの送信回数が用いられる。また、本実施形態においては、基準時間として16.6msec(1/60秒)を用いる例について示す。なお、基準時間はこれに限定されるものではなく適宜変更して実施することができる。
閾値更新部24は、動作モード変更前の負荷状態値が変更後の負荷状態値よりも大きい場合には動作モードを変更した効果がないと判断する。そして、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き上げる。
このように閾値Tを引き上げることにより、以後、同等の負荷で動作モードの変更が行なわれることを阻止し、処理を効率化することができる。すなわち閾値更新部24は閾値Tの最適化を行なう。
第3受信処理部27は、図6に示すように、第3読出処理部271及びタイマ処理部272を備え、共有メモリ520のデータ共有領域521に格納された共有データをポーリングにより読み出す。
第3受信処理部27としての機能は、IPI通知部233からのIPI通知をきっかけに開始される。
具体的には、IPI通知部233からIPI通知が入力されると、NAS用OS300において割込みハンドラが受信処理タスクを起動し、第3受信処理部27(第3読出処理部271)としての機能が開始される。
タイマ処理部272は、図示しないタイマを起動させて所定時間の経過を測定する。タイマが所定時間の経過を検知するとタイムアウト出力が行なわれる。タイムアウトが出力されると、タイマ処理部272は第3読出処理部271に通知を行なう。
第3読出処理部271は、タイマ処理部272からタイムアウトが通知されると、共有メモリ520のデータ共有領域521に格納されているデータを読み出す。このデータ共有領域521から読み出された共有データは、例えば、共有メモリ520に備えられたNAS用OS300用の領域に移動され、その後、NAS用OS300によって用いられる。
すなわち、共有メモリ520のデータ共有領域521のデータの読み出しが、第3受信処理部27によりポーリングによって行なわれる。
モード確認部25は、共有メモリ520のモード情報格納領域524に格納されている動作モード情報の確認を行なう。すなわち、モード確認部25は、モード情報格納領域524から動作モード情報を読み出し、IPIモードであるかポーリングモードであるかを確認する。このモード確認部25は、上述した第2読出処理部261や第3読出処理部271が共有メモリ520のデータ共有領域521から共有データの読み出しを行なう毎に、動作モード情報の確認を行なう。
上述した第3受信処理部27は、モード確認部25によりポーリングモードであることが確認された場合に、共有メモリ520のデータ共有領域521に格納された共有データをポーリングにより読み出す。
(B)動作
上述の如く構成された、実施形態の一例としてのストレージ装置1のGOS間通信部500によるNAS用OS300からSAN用OS400へのゲストOS間通信を、図9を用いて説明する。
なお、初期状態において、共有メモリ520の送信カウンタ値格納領域522の送信カウンタ値と受信カウンタ値格納領域523の受信カウンタ値とはそれぞれリセットされている。
送信側のNAS用OS300において、第1格納処理部111が、共有メモリ520のデータ共有領域521に共有データを格納する(符号S1参照)。また、送信カウンタ更新部112が、共有メモリ520の送信カウンタ値格納領域522の送信カウンタ値をインクリメント(+1)する(符号S2参照)。
受信側のSAN用OS400においては、更新判断部122が、送信カウンタ値格納領域522に格納されている送信カウンタ値と、受信カウンタ値格納領域523に格納されている受信カウンタ値とを比較する(符号S3参照)。そして、更新判断部122は、これらの送信カウンタ値と受信カウンタ値とが不一致の場合に、NAS用OS300から送信される共有データがデータ共有領域521に格納されたと判断する。
更新判断部122によって送信カウンタ値と受信カウンタ値とに差分がある(不一致である)と判断されると、受信カウンタ更新部123が受信カウンタ値格納領域523の受信カウンタ値をインクリメント(+1)する(符号S4参照)。
また、更新判断部122は受信処理タスク(受信処理関数)をコールし(符号S5参照)、これにより第1読出処理部121の処理が開始される。第1読出処理部121はデータ共有領域521の共有データを、共有メモリ520のデータ共有領域521から読み出す(符号S6参照)。
このようにして、GOS間通信部500によるNAS用OS300からSAN用OS400への共有データの送信が行なわれる。
次に、実施形態の一例としてのストレージ装置1のGOS間通信部500によるSAN用OS400からNAS用OS300へのゲストOS間通信を、図10(a),(b)を用いて説明する。
なお、図10(a)はSAN用OS400の低負荷状態におけるゲストOS間通信を説明するための図、図10(b)はSAN用OS400が低負荷状態から高負荷状態に移行した場合のゲストOS間通信を説明するための図である。
また、初期状態において、共有メモリ520の送信カウンタ値格納領域522の送信カウンタ値と受信カウンタ値格納領域523の受信カウンタ値とはそれぞれリセットされている。
送信側のSAN用OS400において、負荷判断部21がSAN用OS400における負荷状態を判断する。すなわち、例えば、負荷判断部21は、SAN用OS400からNAS用OS300への共有データの1秒あたりの送信回数(送信回数/秒)を負荷状態値として算出する。そして、負荷判断部21は、この算出した負荷状態値を閾値Tと比較し、負荷状態値が閾値T以上である場合には高負荷状態であると判断し、負荷状態値が閾値T未満である状態はSAN用OS400が低負荷状態であると判断する。
負荷判断部21が低負荷状態と判断した場合には、IPIモードでSAN用OS400からNAS用OS300へのゲストOS間通信が行なわれ、高負荷状態と判断した場合には、ポーリングモードでSAN用OS400からNAS用OS300へのゲストOS間通信が行なわれる。
図10(a),(b)に示すように、モード設定部232は、共有メモリ520のモード情報格納領域524に、SAN用OS400が高負荷状態である場合にはポーリングモードである旨を表す値を、また、SAN用OS400が低負荷状態である場合にはIPIモードである旨を表す値を、動作モード情報として設定する。
IPIモードでのSAN用OS400からNAS用OS300へのゲストOS間通信においては、第2送信処理部22の第2格納処理部221が共有メモリ520のデータ共有領域521に共有データを格納し(符号S11参照)、IPI通知部222がNAS用OS300のGOS間通信ドライバ510aにIPI通知を行なう(符号S12参照)。
IPI通知を受信した受信側のNAS用OS300においては、割込みハンドラが受信処理タスクを起動する(符号S13参照)。すなわち、第2受信処理部26の第2読出処理部261が、共有メモリ520のデータ共有領域521に格納されているデータを読み出す(符号S14参照)。
このようにして、GOS間通信部500によるIPIモードでのSAN用OS400からNAS用OS300への共有データの送信が行なわれる。
一方、負荷判断部21が高負荷状態と判断した場合には、ポーリングモードでSAN用OS400からNAS用OS300へのゲストOS間通信が行なわれる。すなわち、IPIモードで共有データの通信が行なわれている状態において、負荷判断部21が高負荷状態と判断した場合には、ポーリングモードへの変更が行なわれる。
ポーリングモードでのSAN用OS400からNAS用OS300へのゲストOS間通信においては、第3送信処理部23の第3格納処理部231が共有メモリ520のデータ共有領域521に共有データを格納する(符号S21参照)。また、モード設定部232が、動作モード情報としてIPIモードが設定されている共有メモリ520のモード情報格納領域524に、ポーリングモードである旨を表す値を設定することでモード変更を行なう(符号S22参照)。
そして、IPI通知部233がNAS用OS300のGOS間通信ドライバ510aにIPI通知を行なう(符号S23参照)。
IPI通知を受信した受信側のNAS用OS300においては、割込みハンドラが受信処理タスクを起動する(符号S24参照)。
NAS用OS300の受信処理タスクにおいては、第3受信処理部27の第3読出処理部271が、共有メモリ520のデータ共有領域521に共有データが格納されているか否かを確認し、共有データが格納されている場合には、データ共有領域521からその共有データを読み出す(符号S25参照)。
なお、データ共有領域521に共有データが格納されているか否かの判断は、既知の手法を用いて実施することができる。例えば、第3格納処理部231がデータ共有領域521に共有データを格納する際に所定のフラグを設定し、第3読出処理部271がこの共有データを読み出す際に、このフラグを削除する。このようにすることにより、第3読出処理部271はこのフラグの有無を確認することで、データ共有領域521に共有データが格納されているか否かを容易に判断することができる。
また、タイマ処理部272がタイマを起動させて所定時間の計時を開始する(符号S26参照)。所定時間の経過が検知されるとタイムアウト出力が行なわれ(符号S27参照)、第3読出処理部271が、共有メモリ520のデータ共有領域521に格納されているデータを読み出す(符号S25参照)。
以後、SAN用OS400において高負荷状態が継続している場合には、SAN用OS400(GOS間通信ドライバ510b)においては、上述した第3格納処理部231によるデータ共有領域521への共有データの格納(符号S21参照)だけが実施され、符号S22,S23の処理の実行は抑止される。すなわち、ポーリングモードにおいて、SAN用OS400の高負荷状態が続く場合には、SAN用OS400からNAS用OS300へのIPI通知は発行されない。これにより、IPI通知を送信するために要する時間等のオーバーヘッドを低減することができ、ゲストOS間通信における処理性能を向上させることができる。
また、ポーリングモードにおいては、NAS用OS300の第1送信処理部11からの共有データの送信時にも、第3受信処理部27は、共有メモリ520のデータ共有領域521に共有データが格納されているか否かを確認する。この確認の結果、データ共有領域521に共有データが格納されている場合には、受信処理タスクが起動され、符号S25〜S27で示す処理が実行される。
このようにして、GOS間通信部500によるポーリングモードでのSAN用OS400からNAS用OS300への共有データの送信が行なわれる。
なお、ポーリングモードにおいて、SAN用OS400の負荷が低下して低負荷状態に移行した場合には、IPIモードに変更される。
次に、実施形態の一例としてのストレージ装置1における、SAN用OS400からNAS用OS300へのデータ通信時のIPIモードからポーリングモードへの変更時の処理を、図12及び図13を参照しながら、図11に示すフローチャート(ステップA1〜A12)に従って説明する。
なお、図12及び図13は、それぞれ実施形態の一例としてのストレージ装置1におけるSAN用OS400からNAS用OS300への共有データの送信回数の実測例を示す図であり、IPIモード及びポーリングモードでの各1秒あたりの送信回数の実績値を閾値Tとともにグラフとして示す。これらの図12及び図13中において、横軸は時間(単位:秒)を、縦軸は1秒あたりの送信回数(単位:回)を表す。
ステップA1において、負荷判断部21は、SAN用OS400からNAS用OS300への共有データの1秒あたりの送信回数(送信回数/秒)を負荷状態値Aとして算出し、この算出した負荷状態値Aを、閾値Tと比較する。すなわち、負荷状態値Aが閾値Tより大きいか否かを確認する。
負荷状態値Aが閾値Tよりも大きい場合には(ステップA1のYESルート参照)、SAN用OS400が高負荷状態である。この場合には、ステップA2において、モード設定部232がIPIモードからポーリングモードに変更する。すなわち、モード設定部232は、共有メモリ520のモード情報格納領域524に格納されている動作モード情報をIPIモードからポーリングモードに変更する。
これにより、SAN用OS400の第3送信処理部23が共有データの送信を行ない、NAS用OS300の第3受信処理部27が共有データの受信を行なう。
ステップA3において、閾値更新部24が、ポーリングモードでSAN用OS400からNAS用OS300に共有データが送信された回数を取得し、この送信回数を値B(送信回数B)とする。
そして、ステップA4において、一定時間(例えば、16.6msec)待った後、ステップA5において、閾値更新部24は、ポーリングモードによってSAN用OS400からNAS用OS300に共有データが送信された回数を取得し、この送信回数を値C(送信回数C)とする。なお、16.6msecは1/60秒を近似的に表す値であり、後述するステップA6において、ステップA5でポーリングモードに変更したことによる効果を判定するための基準時間として用いられる。
ステップA6において、閾値更新部24は、ステップA2でポーリングモードに変更した後の効果を判定する。
具体的には、閾値更新部24は、負荷状態値Aを60で除算した値(A/60)と、値Cと値Bとの差(C−B)とを比較する。すなわち、(A/60)が(C−B)よりも大きいか否かを判断する。
ここで、値(A/60)は、ステップA2でポーリングモードに変更する前の状態での基準時間(16.6msec)あたりの共有データの送信回数を示す。また、値(C−B)は、ステップA2でポーリングモードに変更させた後の状態での基準時間(16.6msec)あたりの共有データの送信回数を示す。
(A/60)が(C−B)よりも大きい場合には(ステップA6のYESルート参照)、ステップA2でポーリングモードに変更した効果がないと判断することができる。そこで、ステップA7において、モード設定部232はポーリングモードからIPIモードに動作モードを戻すよう変更する。
また、ステップA8において、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き上げる。これにより、以後、同等の負荷でポーリングモードに変更されることを阻止することができ、閾値Tが最適化される。
図12に示す例においては、符号C1により示す各部分において、閾値Tの値が引き上げられている。
なお、このステップA8において閾値Tをどれだけ引き上げるかは適宜変更して実施することができる。その後、処理を終了する。
一方、ステップA6における比較の結果、(A/60)が(C−B)以下の場合には(ステップA6のNOルート参照)、ステップA2でポーリングモードに変更した効果が表れたと判断することができる。そこで、ポーリングモードからIPIモードへの変更は行なわれない。
また、ステップA9において、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き下げる。これにより、以後、同等の負荷となる前にIPIモードに変更させることができ、閾値Tが最適化される。
図13に示す例においては、符号C2により示す部分において、閾値Tの値が引き下げられている。
なお、このステップA9において閾値Tをどれだけ引き下げるかについても適宜変更して実施することができる。その後、処理を終了する。
ステップA1における比較の結果、負荷状態値Aが閾値T以下である場合には(ステップA1のNOルート参照)、ステップA10において、閾値Tと負荷状態値Aとの差(T−A)が所定の基準値Nよりも小さいか否かを確認する。閾値Tと負荷状態値Aとの差(T−A)が基準値N以上である場合には(ステップA10のNOルート参照)、処理を終了する。
また、閾値Tと負荷状態値Aとの差(T−A)が基準値Nよりも小さい場合には(ステップA10のYESルート参照)、ステップA11に移行する。このステップA11においては、閾値Tと負荷状態値Aとの差(T−A)が基準値Nよりも小さい状態が一定時間以上続いているか否かを判断する。
閾値Tと負荷状態値Aとの差(T−A)が基準値Nよりも小さい状態が一定時間以上続いた場合には(ステップA11のYESルート参照)、閾値Tを若干下回る状態の負荷が一定時間継続していることを表す。このような場合には、ステップA12において、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き下げる。
このように閾値Tを引き下げることで、ポーリングモードへ変更され易くなり、前述したステップA2〜A9の処理を積極的に行なわせることでポーリングモードに変更させてその効果を確認し、閾値Tを最適化する。
図13に示す例においては、符号C3により示す部分において、閾値Tの値が引き下げられている。
なお、ステップA12において閾値Tをどれだけ引き下げるかについても適宜変更して実施することができる。その後、処理を終了する。また、ステップA11において、閾値Tと負荷状態値Aとの差(T−A)が基準値Nよりも小さい状態が一定時間以上続かなかった場合も(ステップA11のNOルート参照)、時的に高負荷状態となっただけと考えられるので、処理を終了する。
次に、実施形態の一例としてのストレージ装置1におけるSAN用OS400からNAS用OS300へのデータ通信時のポーリングモードからIPIモードへの変更時の処理を、図15〜図17を参照しながら、図14に示すフローチャート(ステップB1〜B11)に従って説明する。
なお、図15〜図17は、それぞれ実施形態の一例としてのストレージ装置1におけるSAN用OS400からNAS用OS300への共有データの送信回数の実測例を示す図であり、IPIモード及びポーリングモードでの各1秒あたりの送信回数の実績値を閾値Tととともにグラフとして示す。ただし、図16においては、ポーリングモードでの1秒あたりの送信回数と閾値Tとを示す。また、図15〜図17中において、横軸は時間(単位:秒)を、縦軸は1秒あたりの送信回数(単位:回)を表す。
ステップB1において、負荷判断部21は、SAN用OS400からNAS用OS300への共有データの1秒あたりの送信回数(送信回数/秒)を負荷状態値Xとして算出し、この算出した負荷状態値Xを、閾値Tと比較する。すなわち、負荷状態値Xが閾値Tより大きいか否かを確認する。
負荷状態値Xが閾値Tよりも大きい場合には(ステップB1のYESルート参照)、SAN用OS400が高負荷状態である。次に、ステップB2において、この高負荷状態が予め規定された一定時間以上継続しているか否かを判断する。高負荷状態が一定時間以上継続しない場合には(ステップB2のNOルート参照)、一時的に高負荷状態となっただけと考えられるので、処理を終了する。
高負荷状態が一定時間以上継続している場合には(ステップB2のYESルート参照)、ステップB3において、モード設定部232がポーリングモードからIPIモードに変更する。すなわち、モード設定部232は、共有メモリ520のモード情報格納領域524に格納されている動作モード情報をポーリングモードからIPIモードに変更する。
これにより、SAN用OS400の第2送信処理部22が共有データの送信を行ない、NAS用OS300の第2受信処理部26が共有データの受信を行なう。
ステップB4において、閾値更新部24が、IPIモードでSAN用OS400からNAS用OS300に共有データが送信された回数を取得し、この送信回数を値Y(送信回数Y)とする。
そして、ステップB5において、一定時間(例えば、16.6msec)待った後、ステップB6において、閾値更新部24は、IPIモードによってSAN用OS400からNAS用OS300に共有データが送信された回数を取得し、この送信回数を値Z(送信回数Z)とする。なお、16.6msecは1/60秒を近似的に表す値であり、後述するステップB7において、ステップB3でIPIモードに変更したことによる効果を判定するための基準時間として用いられる。
ステップB7において、閾値更新部24は、ステップB3でIPIモードに変更した後の効果を判定する。
具体的には、閾値更新部24は、負荷状態値Xを60で除算した値(X/60)と、値Zと値Yとの差(Z−Y)とを比較する。すなわち、(X/60)が(Z−Y)よりも大きいか否かを判断する。
ここで、値(X/60)は、ステップB3でIPIモードに変更する前の状態での基準時間(16.6msec)あたりの共有データの送信回数を示す。また、値(Z−Y)は、ステップB3でIPIモードに変更させた後の状態での基準時間(16.6msec)あたりの共有データの送信回数を示す。
(X/60)が(Z−Y)よりも大きい場合には(ステップB7のYESルート参照)、ステップB3でIPIモードに変更した効果がないと判断することができる。そこで、ステップB8において、モード設定部232はIPIモードからポーリングモードに動作モードを戻すよう変更する。
また、ステップB9において、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き上げる。これにより、以後、同等の負荷でポーリングモードに変更されることを阻止することができ、閾値Tが最適化される。
図15に示す例においては、符号C41により示す部分において、IPIモードへの変更が行なわれている。これにより、IPIモードでの1秒あたりの送信回数が閾値Tを超える場合が生じるが、その場合には前述した図11のステップA8における処理により閾値Tが引き上げられ(符号C42参照)、閾値Tが最適化される。
なお、このステップB9において閾値Tをどれだけ引き上げるかは適宜変更して実施することができる。その後、処理を終了する。
一方、ステップB7における比較の結果、(X/60)が(Z−Y)以下の場合には(ステップB7のNOルート参照)、ステップB3でIPIモードに変更した効果が表れたと判断することができる。そこで、IPIモードからポーリングモードへの変更は行なわれない。
また、ステップB10において、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き下げる。これにより、以後、同等の負荷の場合にはIPIモードに変更されるようにすることができ、閾値Tが最適化される。
図16に示す例においては、符号C5により示す部分において、閾値Tの値が引き下げられている。このように、IPIモードでの1秒あたりの送信回数が、一定期間、閾値Tよりも大きく下回る場合には、閾値Tが引き下げられる。
なお、このステップB10において閾値Tをどれだけ引き下げるかについても適宜変更して実施することができる。その後、処理を終了する。
ステップB1における比較の結果、負荷状態値Xが閾値T以下である場合には(ステップB1のNOルート参照)、ステップB11において、モード設定部232がポーリングモードからIPIモードに変更する。すなわち、モード設定部232は、共有メモリ520のモード情報格納領域524に格納されている動作モード情報をポーリングモードからIPIモードに変更する。
図17に示す例においては、符号C6により示す部分において、IPIモードへの変更が行なわれている。その後、処理を終了する。
(C)効果
このように、実施形態の一例としてのストレージ装置1によれば、NAS用OS300からSAN用OS400へのデータ通信において、第1送信処理部11の第1格納処理部111が共有メモリ520のデータ共有領域521に共有データを格納し、第1受信処理部12がこのデータ共有領域521に格納された共有データをポーリングにより読み出す。
すなわち、データ共有領域521の更新が行なわれたことを更新判断部122によって判断されると、第1読出処理部121がデータ共有領域521から共有データを読み出すことで、NAS用OS300からSAN用OS400へのゲストOS間通信を行なう。
これにより、NAS用OS300からIPI通知を行なう必要がなく、ゲストOS間通信に要する時間を短縮して高速化することができる。
第1送信処理部11においては、第1格納処理部111が共有メモリ520に共有データの格納を行なうと、送信カウンタ更新部112が、共有メモリ520の送信カウンタ値格納領域522の送信カウンタ値をインクリメントする。
そして、第1受信処理部12においては、更新判断部122は、共有メモリ520の送信カウンタ値格納領域522の送信カウンタ値と受信カウンタ値格納領域523の受信カウンタ値とを比較する。そして、これらが不一致の場合に、更新判断部122は、共有メモリ520のデータ共有領域521に共有データが新たに格納されたと判断する。
また、第1受信処理部12においては、受信カウンタ更新部123が共有メモリ520の受信カウンタ値格納領域523の受信カウンタ値をインクリメントして、第1読出処理部121が共有メモリ520のデータ共有領域521から共有データを読み出す。
従って、IPI通知を行なうことなく、NAS用OS300からSAN用OS400へのデータ通信を高速に行なうことができる。
IPI通知はCPU110のレジスタ経由でIPI発行を依頼する必要がある。これに対して、例えば、送信カウンタ値格納領域522の送信カウンタ値のインクリメント(図9の符号S2参照)は1回のメモリアクセスで完了することができる。このようなメモリアクセスはCPU110のレジスタアクセスはメモリアクセスに比べて高速に行なうことができる。
また、図9の符号S4及び符号S5にかかる、受信カウンタ値の更新や受信処理タスクの起動(コール)は、数回のメモリアクセスで完了することができる。また、この際、IPI通知を受信して処理する場合に発生するようなタスクへのコンテクストスイッチが発生することもない。ここで、コンテクストスイッチとは、例えば、スタックポインタやCPU110のレジスタ等のリソースの切り替えを意味する。IPI通知からタスクへのコンテクストスイッチには膨大な回数のメモリアクセスとCPUレジスタアクセスが発生するため、データ送信処理の遅延の要因となる。
本ストレージ装置1においては、IPI通知を受信して処理する場合に発生するようなタスクへのコンテクストスイッチが発生しないので、これによってもNAS用OS300からSAN用OS400へのデータ通信を高速に行なうことができる。
また、本ストレージ装置1によれば、SAN用OS400からNAS用OS300へのデータ通信において、SAN用OS400が低負荷状態においては、SAN用OS400からNAS用OS300へのデータ通信はIPIモードで行なわれる。
SAN用OS400の低負荷状態においては、CPU110等の能力に余裕があるので、IPIモードで共有データの通信を行なっても処理性能の低下の影響は少ない。
SAN用OS400が高負荷状態においては、SAN用OS400からNAS用OS300へのデータ通信はポーリングモードで行なわれる。すなわち、IPI通知部233によるIPI通知を抑止することでIPI通知のオーバーヘッドを減らすことができ、共有データの通信を高速で処理することができる。また、この際、モード設定部232による共有メモリ520のSAN用OS400が高負荷状態においては、モード設定部232によるモード情報確報領域524へのモード情報の格納も抑止され、これによってもSAN用OS400におけるオーバーヘッドを減らすことができ、共有データの通信を高速で処理することができる。
SAN用OS400からNAS用OS300へのデータ通信について、モード確認部25,第2受信処理部26及び第3受信処理部27としての機能をアプリケーションレベルで実装する。これにより、NAS用OS300としてLinuxを用いる場合に、Linuxカーネルの変更を行なう必要がない。これによりGPL(General Public License)に従ってソースコードを公開する必要がない。
SAN用OS400からNAS用OS300へのデータ通信時において、モード設定部232が動作モードを変更した場合に、閾値更新部24が、動作モード変更前後での基準時間あたりの共有データの送信回数を比較することで、動作モード変更による効果を評価する。そして、動作モード変更前の基準時間あたりの共有データの送信回数の方が多い場合には、動作モード変更による効果が得られなかったとして、変更した動作モードを元に戻す。これにより、最適な動作モードで動作させることができ、ゲストOS間通信を効率的に行なうことができる。
また、上述の如く動作モード変更による効果が得られなかった場合に、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き上げる。これにより、以後、同等の負荷で動作モードの変更が行なわれることを阻止することができ、閾値Tが最適化される。
その一方で、動作モードを変更したことによる効果が得られた場合には、閾値更新部24は、閾値Tの値を予め規定された所定値分だけ引き下げる。これにより、以後、同等の負荷となる前にIPIモードに変更させることができ、閾値Tが最適化される。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(D)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した実施形態においては、第1の仮想OSとしてNAS用OSであるLinuxを用いるとともに、第2の仮想OSとしてSAN用OSであるVxWorksを用いた例を示しているが、これに限定されるものではなく、他のOSを用いる等、種々変形して実施することができる。
また、上述した実施形態においては、閾値更新部24が、動作モード変更前後の負荷状態値として基準時間あたりの共有データの送信回数を用いているが、これに限定されるものではなく、例えば、CPU110の使用率やメモリ106の使用率を用いる等、種々変形して実施することができる。
また、上述した実施形態においては、SAN用OS400からNAS用OS300への共有データの送信と、NAS用OS300かSAN用OS400への共有データの送信とに同じ閾値Tを用いているが、これに限定されるものではなく、それぞれに閾値を設定してもよく種々変形して実施することができる。
また、上述した実施形態においては、第3格納処理部231がデータ共有領域521に共有データを格納する際に所定のフラグを設定し、第3読出処理部271がこの共有データを読み出す際に、このフラグを削除する。そして、第3読出処理部271がこのフラグの有無を確認することで、データ共有領域521に共有データが格納されているかを判断しているが、これに限定されるものではない。例えば、第3送信処理部に送信カウンタ更新部112と同様の機能を備えるとともに、第3受信処理部27に受信カウンタ更新部123及び更新判断部122と同様の機能を備えてもよく、種々変形して実施することができる。
(E)付記
(付記1)
第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、
前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、
共有データを送信する第1の仮想OSにおいて、前記共有メモリのデータ共有領域に共有データを格納する第1格納処理部と、
前記共有データを受信する第2の仮想OSにおいて、前記データ共有領域の更新状況を定期的に確認する更新判断部と、
前記データ共有領域が更新されている場合に、当該データ共有領域から前記共有データを読み出す第1読出処理部と
を備えることを特徴とする、情報処理装置。
(付記2)
前記第1の仮想OSにおいて、前記データ共有領域に前記共有データを格納する際に、前記共有メモリに格納された第1のカウンタ値をインクリメントする第1カウンタ値更新部を備え、
前記第2の仮想OSにおいて、前記データ共有領域から前記共有データを読み出す際に、前記共有メモリに格納された第2のカウンタ値をインクリメントする第2カウンタ値更新部を備え、
前記更新判断部は、前記第1のカウンタ値と前記第2のカウンタ値とを比較し、前記第1のカウンタ値と前記第2のカウンタ値とが不一致の場合に、前記データ共有領域が更新されていると判断する
ことを特徴とする、付記1記載の情報処理装置。
(付記3)
前記更新判断部は、さらに、前記データ共有領域の更新状況を、前記第2のOSにおける処理の切り替え時に確認する
ことを特徴とする、付記1または2に記載の情報処理装置。
(付記4)
前記更新判断部は、さらに、前記データ共有領域の更新状況を、前記第2のOSにおける処理の非実行状態時に確認する
ことを特徴とする、付記1〜3のいずれか1項に記載の情報処理装置。
(付記5)
第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、
前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、
前記第1の仮想OSに共有データを送信する第2の仮想OSにおいて、前記共有データを前記共有メモリのデータ共有領域に格納する第2格納処理部と、
前記第2の仮想OSにおいて、前記第1の仮想OSに対して、前記データ共有領域に前記共有データが格納されたことを割り込み信号により通知する通知部と、
第1の仮想OSにおいて、前記データ共有領域から前記共有データを読み出す第2読出処理部と、
前記第2の仮想OSにおいて、当該第2の仮想OSにおける負荷状態を表す負荷状態値が閾値以上であるか否かを判断する負荷判断部と
を備え、
前記負荷判断部による判断結果において、前記第2の仮想OSにおける前記負荷状態値が閾値以上である場合には、前記第2格納処理部が前記データ共有領域に前記共有データを格納し、前記第2読出処理部が前記データ共有領域から定期的に前記共有データを読み出す第1のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信し、
前記負荷判断部による判断結果において、当該第2の仮想OSにおける前記負荷状態値が閾値未満である場合には、前記第2格納処理部が前記データ共有領域に前記共有データを格納し、前記通知部が割り込み信号による前記第1の仮想OSに対する通知を行ない、前記第2読出処理部が、前記データ共有領域から前記共有データを読み出す第2のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信する
ことを特徴とする、情報処理装置。
(付記6)
第2の仮想OSにおいて、前記第1のモードから前記第2のモードへまたは前記第2のモードから前記第1のモードへの動作モードの変更が行なわれた場合に、
前記動作モードの変更前での基準時間あたりの共有データの送信回数と、前記動作モードの変更後の基準時間あたりの共有データの送信回数とを比較し、前記動作モードの変更前での基準時間あたりの共有データの送信回数が、前記動作モードの変更後の基準時間あたりの共有データの送信回数よりも多い場合には、前記動作モードを変更前の状態に戻す
ことを特徴とする、付記5記載の情報処理装置。
(付記7)
前記動作モードの変更前での基準時間あたりの共有データの送信回数が、前記動作モードの変更後の基準時間あたりの共有データの送信回数よりも多い場合には、
前記閾値の値を予め規定された所定値分だけ引き上げる閾値更新部
を備えることを特徴とする、付記6記載の情報処理装置。
(付記8)
前記第1の仮想OSは、SAN制御を行なうSAN用オペレーティングシステムであり、
前記第2の仮想OSは、NAS制御を行なうNAS用オペレーティングシステムであり、
前記情報処理装置は、上位装置とストレージ部との間の通信を処理することを特徴とする、付記1〜7のいずれか1項に記載の情報処理装置。
(付記9)
第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとをコンピュータに実行させるプログラムであって、
前記第1の仮想OSに共有データを送信する第2の仮想OSにおいて、前記共有データを、前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリのデータ共有領域に格納し、
前記第2の仮想OSにおいて、前記第1の仮想OSに対して、前記データ共有領域に前記共有データが格納されたことを割り込み信号により通知し、
第1の仮想OSにおいて、前記データ共有領域から前記共有データを読み出し、
前記第2の仮想OSにおいて、当該第2の仮想OSにおける負荷状態を表す負荷状態値が閾値以上であるか否かを判断し、
前記第2の仮想OSにおける前記負荷状態値が閾値以上である場合には、前記第2の仮想OSにおいて前記データ共有領域に前記共有データを格納し、第1の仮想OSにおいて前記データ共有領域から定期的に前記共有データを読み出す第1のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信し、
当該第2の仮想OSにおける前記負荷状態値が閾値未満である場合には、前記第1の仮想OSにおいて前記データ共有領域に前記共有データを格納し、前記第2の仮想OSにおいて割り込み信号による前記第1の仮想OSに対する通知を行ない、前記第1の仮想OSにおいて前記データ共有領域から前記共有データを読み出す第2のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信する
処理を前記コンピュータに実行させることを特徴とする、プログラム。
(付記10)
第2の仮想OSにおいて、前記第1のモードから前記第2のモードへまたは前記第2のモードから前記第1のモードへの動作モードの変更が行なわれた場合に、
前記動作モードの変更前での基準時間あたりの共有データの送信回数と、前記動作モードの変更後の基準時間あたりの共有データの送信回数とを比較し、前記動作モードの変更前での基準時間あたりの共有データの送信回数が、前記動作モードの変更後の基準時間あたりの共有データの送信回数よりも多い場合には、前記動作モードを変更前の状態に戻す
処理を前記コンピュータに実行させることを特徴とする、付記9記載のプログラム。
(付記11)
前記動作モードの変更前での基準時間あたりの共有データの送信回数が、前記動作モードの変更後の基準時間あたりの共有データの送信回数よりも多い場合には、
前記閾値の値を予め規定された所定値分だけ引き上げる
処理を前記コンピュータに実行させることを特徴とする、付記10記載のプログラム。
1 ストレージ装置
11 第1送信処理部
111 第1格納処理部
112 送信カウンタ更新部(第1カウンタ値更新部)
12 第1受信処理部
121 第1読出処理部
122 更新判断部
123 受信カウンタ更新(第2カウンタ値更新部)
21 負荷判断部
22 第2送信処理部
221 第2格納処理部
222 IPI通知部
23 第3送信処理部
231 第3格納処理部
232 モード設定部
233 IPI通知部(通知部)
24 閾値更新部
25 モード確認部
26 第2受信処理部
261 第2読出処理部
27 第3受信処理部
271 第3読出処理部
272 タイマ処理部
30 ドライブエンクロージャ
31 記憶装置
40 コントローラエンクロージャ
100a,100b,100 CM
101,102 CA
103 DA
106 メモリ
107 SSD
108 IOC
110 CPU
200 ハイパーバイザ
300 NAS用OS(第1の仮想OS)
301 NAS用OS(カーネル)
302 NAS用OS(ファンクションファームウェア)
310 LLD
311 インテリジェントSCSIドライバ
312 FCドライバ
313 iSCSIドライバ
320 MLD
330 ULD
340 ファイルシステム
350 Samba/NFSサーバソフトウェア
360 SCSIドライバ群
370 SCSIアプリケーション
380 ネットワークレイヤ
390 OSシステム制御部
400 SAN用OS(第2の仮想OS)
401 SAN用OS(カーネル)
402 SAN用OS(ファンクションファームウェア)
410 インテリジェントCAエージェント
419 システム制御部
420 インテリジェントCAドライバ
421 SCSIコマンドキュー
422 SCSIステータスキュー
423 SAS−CAドライバ
424 iSCSI−CAドライバ
425 FC−CAドライバ
430 ターゲットドライバ
440 CAスレッド
450 ベーシックコントロール
460 バックグランドコントロール
451 オプティマイズドNASI/Oレイヤ
500 GOS間通信部
501 SAN専用ボリューム
502 NAS専用ボリューム
510a,510b GOS間通信ドライバ
520 共有メモリ
521 データ共有領域
522 送信カウンタ値格納領域
523 受信カウンタ値格納領域
524 モード情報格納領域

Claims (9)

  1. 第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、
    前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、
    共有データを送信する第1の仮想OSにおいて、前記共有メモリのデータ共有領域に共有データを格納する第1格納処理部と、
    前記共有データを受信する第2の仮想OSにおいて、前記データ共有領域の更新状況を定期的に確認する更新判断部と、
    前記データ共有領域が更新されている場合に、当該データ共有領域から前記共有データを読み出す第1読出処理部と
    を備え
    前記第1の仮想OSにおいて、前記データ共有領域に前記共有データを格納する際に、前記共有メモリに格納された第1のカウンタ値をインクリメントする第1カウンタ値更新部を備え、
    前記第2の仮想OSにおいて、前記データ共有領域から前記共有データを読み出す際に、前記共有メモリに格納された第2のカウンタ値をインクリメントする第2カウンタ値更新部を備え、
    前記更新判断部は、前記第1のカウンタ値と前記第2のカウンタ値とを比較し、前記第1のカウンタ値と前記第2のカウンタ値とが不一致の場合に、前記データ共有領域が更新されていると判断する
    ことを特徴とする、情報処理装置
  2. 前記更新判断部は、さらに、前記データ共有領域の更新状況を、前記第2の仮想OSにおける処理の切り替え時、または、前記第2の仮想OSにおける処理の非実行状態時のいずれかのタイミングで確認する
    ことを特徴とする、請求項1に記載の情報処理装置。
  3. 第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、
    前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、
    共有データを送信する第1の仮想OSにおいて、前記共有メモリのデータ共有領域に共有データを格納する第1格納処理部と、
    前記共有データを受信する第2の仮想OSにおいて、前記データ共有領域の更新状況を定期的に確認する更新判断部と、
    前記データ共有領域が更新されている場合に、当該データ共有領域から前記共有データを読み出す第1読出処理部と
    を備え、
    前記更新判断部は、さらに、前記データ共有領域の更新状況を、前記第2の仮想OSにおける処理の切り替え時に確認する
    ことを特徴とする、情報処理装置。
  4. 第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、
    前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、
    共有データを送信する第1の仮想OSにおいて、前記共有メモリのデータ共有領域に共有データを格納する第1格納処理部と、
    前記共有データを受信する第2の仮想OSにおいて、前記データ共有領域の更新状況を定期的に確認する更新判断部と、
    前記データ共有領域が更新されている場合に、当該データ共有領域から前記共有データを読み出す第1読出処理部と
    を備え、
    前記更新判断部は、さらに、前記データ共有領域の更新状況を、前記第2の仮想OSにおける処理の非実行状態時に確認する
    ことを特徴とする、情報処理装置。
  5. 第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとを実行する情報処理装置であって、
    前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリを備え、
    前記第1の仮想OSに共有データを送信する第2の仮想OSにおいて、前記共有データを前記共有メモリのデータ共有領域に格納する第2格納処理部と、
    前記第2の仮想OSにおいて、前記第1の仮想OSに対して、前記データ共有領域に前記共有データが格納されたことを割り込み信号により通知する通知部と、
    第1の仮想OSにおいて、前記データ共有領域から前記共有データを読み出す第2読出処理部と、
    前記第2の仮想OSにおいて、当該第2の仮想OSにおける負荷状態を表す負荷状態値が閾値以上であるか否かを判断する負荷判断部と
    を備え、
    前記負荷判断部による判断結果において、前記第2の仮想OSにおける前記負荷状態値が閾値以上である場合には、前記第2格納処理部が前記データ共有領域に前記共有データを格納し、前記第2読出処理部が前記データ共有領域から定期的に前記共有データを読み出す第1のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送
    信し、
    前記負荷判断部による判断結果において、当該第2の仮想OSにおける前記負荷状態値が閾値未満である場合には、前記第2格納処理部が前記データ共有領域に前記共有データを格納し、前記通知部が割り込み信号による前記第1の仮想OSに対する通知を行ない、前記第2読出処理部が、前記データ共有領域から前記共有データを読み出す第2のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信する
    ことを特徴とする、情報処理装置。
  6. 第2の仮想OSにおいて、前記第1のモードから前記第2のモードへまたは前記第2のモードから前記第1のモードへの動作モードの変更が行なわれた場合に、
    前記動作モードの変更前での基準時間あたりの共有データの送信回数と、前記動作モードの変更後の基準時間あたりの共有データの送信回数とを比較し、前記動作モードの変更前での基準時間あたりの共有データの送信回数が、前記動作モードの変更後の基準時間あたりの共有データの送信回数よりも多い場合には、前記動作モードを変更前の状態に戻すことを特徴とする、請求項5記載の情報処理装置。
  7. 前記動作モードの変更前での基準時間あたりの共有データの送信回数が、前記動作モードの変更後の基準時間あたりの共有データの送信回数よりも多い場合には、
    前記閾値の値を予め規定された所定値分だけ引き上げる閾値更新部
    を備えることを特徴とする、請求項6記載の情報処理装置。
  8. 前記第1の仮想OSは、SAN制御を行なうSAN用オペレーティングシステムであり、
    前記第2の仮想OSは、NAS制御を行なうNAS用オペレーティングシステムであり、
    前記情報処理装置は、上位装置とストレージ装置との間の通信を処理することを特徴とする、請求項1〜7記載のいずれか1項に記載の情報処理装置。
  9. 第1の仮想オペレーティングシステム(OS:Operating System)と第2の仮想OSとをコンピュータに実行させるプログラムであって、
    前記第1の仮想OSに共有データを送信する第2の仮想OSにおいて、前記共有データを、前記第1の仮想OSと前記第2の仮想OSとのそれぞれからアクセス可能な共有メモリのデータ共有領域に格納し、
    前記第2の仮想OSにおいて、前記第1の仮想OSに対して、前記データ共有領域に前記共有データが格納されたことを割り込み信号により通知し、
    第1の仮想OSにおいて、前記データ共有領域から前記共有データを読み出し、
    前記第2の仮想OSにおいて、当該第2の仮想OSにおける負荷状態を表す負荷状態値が閾値以上であるか否かを判断し、
    前記第2の仮想OSにおける前記負荷状態値が閾値以上である場合には、前記第2の仮想OSにおいて前記データ共有領域に前記共有データを格納し、第1の仮想OSにおいて前記データ共有領域から定期的に前記共有データを読み出す第1のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信し、
    当該第2の仮想OSにおける前記負荷状態値が閾値未満である場合には、前記第1の仮想OSにおいて前記データ共有領域に前記共有データを格納し、前記第2の仮想OSにおいて割り込み信号による前記第1の仮想OSに対する通知を行ない、前記第1の仮想OSにおいて前記データ共有領域から前記共有データを読み出す第2のモードで、前記第2の仮想OSから前記第1の仮想OSへ前記共有データを送信する
    処理を前記コンピュータに実行させることを特徴とする、プログラム。
JP2015016471A 2015-01-30 2015-01-30 情報処理装置及びプログラム Active JP6464777B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015016471A JP6464777B2 (ja) 2015-01-30 2015-01-30 情報処理装置及びプログラム
US14/992,071 US9928185B2 (en) 2015-01-30 2016-01-11 Information processing apparatus and computer-readable recording medium having program recorded therein

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015016471A JP6464777B2 (ja) 2015-01-30 2015-01-30 情報処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2016143120A JP2016143120A (ja) 2016-08-08
JP6464777B2 true JP6464777B2 (ja) 2019-02-06

Family

ID=56554353

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015016471A Active JP6464777B2 (ja) 2015-01-30 2015-01-30 情報処理装置及びプログラム

Country Status (2)

Country Link
US (1) US9928185B2 (ja)
JP (1) JP6464777B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10841169B2 (en) * 2015-11-02 2020-11-17 Hewlett Packard Enterprise Development Lp Storage area network diagnostic data
KR102461276B1 (ko) * 2016-03-10 2022-10-31 삼성전자주식회사 저밀도 패리티 검사 코드를 지원하는 통신 시스템에서 신호를 수신하는 장치 및 방법
CN108073545A (zh) * 2016-11-17 2018-05-25 联芯科技有限公司 一种多处理器通信装置及方法
US10754588B2 (en) * 2017-03-31 2020-08-25 Intel Corporation Performing data operations in a storage area network
JP6762924B2 (ja) 2017-12-01 2020-09-30 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
JP6958308B2 (ja) * 2017-12-11 2021-11-02 株式会社オートネットワーク技術研究所 車載更新装置、プログラム及び、プログラム又はデータの更新方法
JP6776292B2 (ja) 2018-03-20 2020-10-28 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
US10956240B2 (en) * 2018-10-30 2021-03-23 Blackberry Limited Sharing data by a virtual machine

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
JP2002169699A (ja) * 2000-11-30 2002-06-14 Fujitsu Ltd 複数の仮想計算機を用いた通信システム
JP2004220216A (ja) 2003-01-14 2004-08-05 Hitachi Ltd San/nas統合型ストレージ装置
CN101006433B (zh) 2004-08-25 2012-01-11 日本电气株式会社 信息通信装置和程序执行环境控制方法
US7689747B2 (en) 2005-03-28 2010-03-30 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources
US7913009B2 (en) * 2007-06-20 2011-03-22 Microsoft Corporation Monitored notification facility for reducing inter-process/inter-partition interrupts

Also Published As

Publication number Publication date
US20160224482A1 (en) 2016-08-04
JP2016143120A (ja) 2016-08-08
US9928185B2 (en) 2018-03-27

Similar Documents

Publication Publication Date Title
JP6464777B2 (ja) 情報処理装置及びプログラム
US8607230B2 (en) Virtual computer system and migration method of virtual computer
WO2017162179A1 (zh) 用于存储***的负载再均衡方法及装置
US8898385B2 (en) Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
WO2017019901A1 (en) Multiprocessing within a storage array system executing controller firmware designed for a uniprocessor environment
JP6409613B2 (ja) 情報処理装置,マルチパス制御方法及びマルチパス制御プログラム
US20070294459A1 (en) Apparatus for bridging a host to a SAN
US10318393B2 (en) Hyperconverged infrastructure supporting storage and compute capabilities
JP2010271808A (ja) ストレージ装置及びデータコピー方法
JP2011154697A (ja) Raidと関連するアプリケーションの実行のための方法およびシステム
JP2008112399A (ja) ストレージ仮想化スイッチおよびコンピュータシステム
JP2017091456A (ja) 制御装置、制御プログラムおよび制御方法
JP6241178B2 (ja) ストレージ制御装置,ストレージ制御方法及びストレージ制御プログラム
JP2014063497A (ja) 論理装置の機能を有するpciエクスプレススイッチ
US20170052709A1 (en) Storage system, storage control apparatus, and storage control method
KR101137085B1 (ko) 데이터 저장 시스템의 논리 파티션에서 초기 프로그램 로드를 관리하는 방법, 이를 수행하기 위한 저장 컨트롤러, 및 컴퓨터 판독 가능 저장매체
US11093175B1 (en) Raid data storage device direct communication system
US11016698B2 (en) Storage system that copies write data to another storage system
JP5511546B2 (ja) フォールトトレラントの計算機システム、複数の物理サーバとストレージ装置とに接続されるスイッチ装置、及び、サーバ同期制御方法
EP3871087B1 (en) Managing power request during cluster operations
JP7115322B2 (ja) ストレージ装置、ストレージ制御装置及びストレージ制御プログラム
US11467930B2 (en) Distributed failover of a back-end storage director
JP2006331421A (ja) マルチパーティションシステムにおいて取外し可能媒体格納装置を共有するシステム及び方法
US7853758B2 (en) Avoiding failure of an initial program load in a logical partition of a data storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180928

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181224

R150 Certificate of patent or registration of utility model

Ref document number: 6464777

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150