以下,本実施の形態について,図を用いて説明する。
〔実施の形態1〕
図1は,本実施の形態による仮想計算機システムの構成例を示す図である。
図1に示す仮想計算機システム10は,ホストOS(Operating System)11,ゲストOS12,チャネル制御部13,チャネル14,記憶装置15を備える。
ホストOS11は,仮想計算機システム10において,ゲストOS12の管理や制御を行うOSである。ゲストOS12と記憶装置15との取り付け/取り外しを行う際には,ホストOS11から,取り付け要求/取り外し要求等の要求が発行される。
ゲストOS12と記憶装置15との取り付けは,ゲストOS12と記憶装置15との間の論理的な接続を行うことである。ゲストOS12と記憶装置15との取り外しは,ゲストOS12と記憶装置15との間の論理的な接続関係を解除することである。取り付け要求は,ゲストOS12と記憶装置15との間の論理的な接続を求める要求である。取り外し要求は,ゲストOS12と記憶装置15との間の論理的な接続関係の解除を求める要求である。
ゲストOS12は,ホストOS11上で動作する仮想計算機である。ゲストOS12は,取り付けられた記憶装置15に対する入出力処理を行う際に,IO(Input Output)命令を発行する。
チャネル制御部13は,仮想計算機システム10において,ゲストOS12と記憶装置15との接続関係を制御する。具体的には,チャネル制御部13は,ゲストOS12から発行されたIO命令をもとに,各チャネル14を制御する。また,ホストOS11から発行された要求に基づいて,ゲストOS12と記憶装置15との論理的な取り付け/取り外しを実行する。チャネル14は,記憶装置15を接続するインタフェースである。記憶装置15は,例えば磁気テープやハードディスクなどの外部記憶装置である。本実施の形態では,記憶装置15は,論理的な単位で,ゲストOS12との取り付け/取り外しが行われる。
本実施の形態による仮想計算機システム10のチャネル制御部13は,取り外し実行制御部16,IO命令制御部17,取り外し制御部100を備える。取り外し実行制御部16は,チャネル制御部13内で,指定されたゲストOS12と記憶装置15との取り外しを実行する。IO命令制御部17は,チャネル制御部13内で,ゲストOS12からのIO命令を実行する。
チャネル制御部13の取り外し制御部100は,ゲストOS12と記憶装置15との取り外しを制御する。例えば,取り外し制御部100は,ホストOS11からの取り外し要求があった場合に,取り外しの対象となったゲストOS12と記憶装置15との間で入出力処理が実行されている間は,当該ゲストOS12からの当該記憶装置15の取り外しを抑止する。取り外し制御部100は,ホスト側制御部110,ゲスト側制御部120,予測制御部130を備える。
ホスト側制御部110は,チャネル制御部13内で,主にホストOS11とのやり取りを司る。ゲスト側制御部120は,チャネル制御部13内で,主にゲストOS12とのやり取りを司る。予測制御部130は,取り外しが指定されたゲストOS12と記憶装置15との取り外しが完了する時間を予測する。
図2は,本実施の形態による取り外し制御部の構成例を示す図である。
チャネル制御部13の取り外し制御部100において,ホスト側制御部110は,受付部111,判断部112,通知部113,取り外し抑止制御部114,取り外し抑止情報記憶部115を備える。
受付部111は,ホストOS11から発行された取り外し要求を受け付ける。本実施の形態では,取り外し要求は,ホストOS11から,取り外し実行制御部16を経由して,ホスト側制御部110に送られる。取り外し要求では,取り外し対象のゲストOS12と記憶装置15とが指定されている。
判断部112は,受付部111が取り外し要求を受け付けた際に,速やかに取り外し対象のゲストOS12と記憶装置15との取り外しを実行するか,取り外し対象のゲストOS12と記憶装置15との間の入出力処理の終了を待って取り外しを実行するかを判断する。このとき,判断部112は,ゲストOS12からのリザーブコマンドやリリースコマンドの発行状況をもとに,判断を行う。
通知部113は,取り外し対象のゲストOS12と記憶装置15との取り外しが実行された際に,その取り外しの実行をホストOS11に通知する。また,通知部113は,判断部112により入出力処理の終了を待って取り外しを実行すると判断された際に,取り外し対象のゲストOS12と記憶装置15との間の入出力処理が終了するまでの予測時間の情報や,入出力処理の異常などを,ホストOS11に通知する。なお,取り外し対象のゲストOS12と記憶装置15との間の入出力処理が終了するまでの時間の予測や,入出力処理の異常可能性の判断は,予測制御部130の予測部131により行われる。
取り外し抑止制御部114は,取り外し抑止情報記憶部115に記憶された取り外し抑止制御情報を更新することで,各ゲストOS12と各記憶装置15との間の取り外しの抑止の状態を制御する。
取り外し抑止情報記憶部115は,取り外し抑止制御情報を記憶する記憶部である。取り外し抑止制御情報は,各ゲストOS12と各記憶装置15との間の取り外し抑止制御の状態が記録された情報である。
チャネル制御部13の取り外し制御部100において,ゲスト側制御部120は,IO命令受付部121,IO命令解析制御部122,取り外し状況管理部123,取り外し状況情報記憶部124を備える。
IO命令受付部121は,ゲストOS12から発行されるIO命令を受け付ける。本実施の形態では,IO命令は,ゲストOS12から,IO命令制御部17を経由して,ゲスト側制御部120に送られる。
IO命令解析制御部122は,IO命令受け付け部121が受け付けたIO命令の解析を行う。IO命令の解析によって,リザーブコマンドやリリースコマンドなどが検出される。
取り外し状況管理部123は,取り外し状況情報記憶部124に記憶された取り外し状況管理情報を更新することで,各ゲストOS12と各記憶装置15との間の取り外しの状況を管理する。
取り外し状況情報記憶部124は,取り外し状況管理情報を記憶する記憶部である。取り外し状況管理情報は,各ゲストOS12と各記憶装置15との間の取り外しの状況が記録された情報である。
チャネル制御部13の取り外し制御部100において,予測制御部130は,予測部131,予測情報記憶部132を備える。
予測部131は,判断部112により入出力処理の終了を待って取り外しを実行すると判断された場合に,過去の入出力処理の実行時間に基づいて,取り外し対象のゲストOS12と記憶装置15との間の入出力処理が終了するまでの時間を予測する。このとき,予測部131は,取り外し対象のゲストOS12から記憶装置15へのリザーブコマンドの発行からの経過時間が,過去の入出力処理の実行時間から予測される実行時間を所定時間以上超えた場合に,入出力処理に異常が発生した可能性があると判断する。
予測情報記憶部132は,取り外し予測情報を記憶する記憶部である。取り外し予測情報は,取り外し要求されたゲストOS12と記憶装置15との間の入出力処理が終了するまでの時間の予測に用いる情報である。
図3は,本実施の形態の仮想計算機システムを実現するコンピュータのハードウェア構成例を示す図である。
本実施の形態の仮想計算機システム10を実現するコンピュータ1は,例えば,CPU(Central Processing Unit )2,主記憶となるメモリ3,記憶装置4,通信装置5,媒体読取・書込装置6,入力装置7,出力装置8等を備える。記憶装置4は,例えば磁気テープ装置やHDD(Hard Disk Drive )などである。仮想計算機システム10における記憶装置15は,例えば,コンピュータ1の記憶装置4により実現される。媒体読取・書込装置6は,例えばCD−R(Compact Disc Recordable )ドライブやDVD−R(Digital Versatile Disc Recordable )ドライブなどである。入力装置7は,例えばキーボード・マウスなどである。出力装置8は,例えばディスプレイ等の表示装置などである。
仮想計算機システム10のホストOS11,ゲストOS12,チャネル制御部13,およびそれらが備える各機能部は,コンピュータ1が備えるCPU2,メモリ3等のハードウェアと,ソフトウェアプログラムとによって実現することが可能である。コンピュータ1が実行可能なプログラムは,記憶装置4に記憶され,その実行時にメモリ3に読み出され,CPU2により実行される。
コンピュータ1は,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。また,コンピュータ1は,サーバコンピュータからプログラムが転送されるごとに,逐次,受け取ったプログラムに従った処理を実行することもできる。さらに,このプログラムは,コンピュータ1で読み取り可能な記録媒体に記録しておくことができる。
図4は,本実施の形態によるゲスト−記憶装置間の一連の入出力処理の例を説明する図である。
ゲストOS12側から記憶装置15側に発行されるIO命令には,他のゲストOS12と共用する記憶装置15の排他制御に使用するリザーブコマンドとリリースコマンドがある。リザーブコマンドは,ゲストOS12が記憶装置15に一時的な占有の開始を指示するコマンドである。リリースコマンドは,ゲストOS12が記憶装置15に一時的な占有の終了を指示するコマンドである。
図4に示すように,一連の入出力処理は,複数のIO命令の組み合わせから成り立っている。あるIO命令に対するIO命令終了通知から,次のIO命令の発行までに,若干の時間の隙間があり,このタイミングでは,入出力処理中であってもゲストOS12と記憶装置15との取り外しが可能である。しかし,このタイミングでゲストOS12と記憶装置15との取り外しを行うと,ゲストOS12の入出力処理が異常終了することになり,記憶装置15のデータベースが破壊される可能性がある。
本実施の形態によるチャネル制御部13の取り外し制御部100では,リザーブコマンドの発行からリリースコマンドの発行までを一連の入出力処理の単位として,原則的にその間のゲストOS12と記憶装置15との取り外しを抑止する制御を行う。このような取り外し抑止の制御により,ゲストOS12と記憶装置15との安全な取り外しが可能となる。
IO命令の解析により,リザーブコマンドやリリースコマンドの発行が検出されると,ゲスト側制御部120は,その旨をホスト側制御部110と予測制御部130とに通知する。本実施の形態では,ゲストOS12からのリザーブコマンドの発行が検出された際に送られる通知を,取り外し抑止開始通知と呼ぶ。また,ゲストOS12からのリリースコマンドの発行が検出された際に送られる通知を,取り外し抑止終了通知と呼ぶ。
ホスト側制御部110では,ゲスト側制御部120からの通知に基づいて,入出力処理の実行中であると判断されるゲストOS12と記憶装置15との取り外しを抑止する制御が行われる。すなわち,ホスト側制御部110では,リザーブコマンドが発行されてからリリースコマンドが発行されるまでは,リザーブコマンドを発行したゲストOS12とその相手先の記憶装置15との間で入出力処理が実行中であると判断される。このとき,ホスト側制御部110では,取り外し要求があっても,原則として,入出力処理が終了するまで,該当ゲストOS12と該当記憶装置15との取り外しが抑止される。
予測制御部130では,ゲスト側制御部120からの通知に基づいて,各ゲストOS12と各記憶装置15との間の入出力処理の実行時間の実績を蓄積保持する。入出力処理が実行中であるゲストOS12と記憶装置15とに対して取り外し要求があった場合には,予測制御部130では,保持された入出力処理の実行時間の実績に基づいて,該当ゲストOS12と該当記憶装置15との間での入出力処理が終了までの時間の予測が行われる。
図5は,本実施の形態による取り外し抑止制御情報の例を示す図である。
図5に示す取り外し抑止制御情報116は,取り外し抑止情報記憶部115に記憶される取り外し抑止制御情報116の一例である。図5に示す例では,ゲストIDが“#01”であるゲストOS12についての取り外し抑止制御情報116の例が示されている。ゲストIDは,ゲストOS12を一意に識別する識別情報である。
図5に示す取り外し抑止制御情報116は,装置番号,取り外し抑止の情報を持つ。装置番号は,記憶装置15を一意に識別する識別情報である。取り外し抑止は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しについて,抑止制御の状態を示す。
本実施の形態による取り外し抑止制御情報116において,取り外し抑止が示す状態には,“なし”,“有り”,“予約”の3つの状態がある。取り外し抑止“なし”は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しが抑止されていない状態を示す。取り外し抑止“有り”は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しが抑止されている状態を示す。取り外し抑止“予約”は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しが抑止されている状態で取り外し要求があり,該当ゲストOS12と該当記憶装置15との間の入出力処理の終了を待っている状態を示す。
なお,ゲストID“#01”のゲストOS12以外のゲストOS12についての取り外し抑止制御情報116の構成も,図5に示すゲストID“#01”のゲストOS12のものと同様の構成である。
ホスト側制御部110において,ゲスト側制御部120から取り外し抑止開始通知を受けると,取り外し抑止制御部114は,取り外し抑止制御情報116における指定されたゲストOS12と記憶装置15との取り外し抑止の情報を,“有り”に更新する。取り外し抑止制御情報116において取り外し抑止が“有り”であるということは,該当ゲストOS12と該当記憶装置15との間で,入出力処理が実行中であることを意味する。
ホスト側制御部110において,ゲスト側制御部120から取り外し抑止終了通知を受けると,取り外し抑止制御部114は,取り外し抑止制御情報116における指定されたゲストOS12と記憶装置15との取り外し抑止の情報を,“なし”に更新する。取り外し抑止制御情報116において取り外し抑止が“なし”であるということは,該当ゲストOS12と該当記憶装置15との間では,入出力処理が実行されていないことを意味する。
判断部112は,受付部111により取り外し要求が受け付けられると,取り外し抑止制御情報116から,取り外し要求で指定された取り外し対象のゲストOS12と記憶装置15とについての取り外し抑止の情報を取得する。
取り外し抑止が“なし”である場合には,該当ゲストOS12と該当記憶装置15との間で入出力処理が実行中ではないので,判断部112は,取り外し対象のゲストOS12と記憶装置15との安全な取り外しが可能であると判断する。
取り外し抑止が“有り”である場合には,該当ゲストOS12と該当記憶装置15との間で入出力処理が実行中であるので,判断部112は,取り外し対象のゲストOS12と記憶装置15との間での入出力処理の終了を待って,取り外しを実行すると判断する。なお,取り外し抑止制御情報116における取り外し抑止の情報は,リザーブコマンドやリリースコマンドの発行状況をもとに,更新される情報である。すなわち,判断部112は,リザーブコマンドやリリースコマンドの発行状況をもとに,取り外し対象のゲストOS12と記憶装置15との間での入出力処理の終了を待って取り外しを実行するかを判断していることになる。
判断部112が入出力処理の終了を待って取り外しを実行すると判断した場合,取り外し抑止制御部114は,取り外し抑止制御情報116における該当ゲストOS12と該当記憶装置15との取り外し抑止の情報を,“予約”に更新する。また,ホスト側制御部110は,取り外し対象のゲストOS12と記憶装置15とについて,入出力処理の終了を待って,取り外しを実行する旨を示す取り外し予約通知を,ゲスト側制御部120に送る。また,ホスト側制御部110は,取り外し対象のゲストOS12と記憶装置15との取り外しが行われる予測時間,すなわち取り外し対象のゲストOS12と記憶装置15との間での入出力処理が終了するまでの予測時間を,予測制御部130に問い合わせる。以下では,取り外し対象のゲストOS12と記憶装置15との取り外しが行われる予測時間,すなわち取り外し対象のゲストOS12と記憶装置15との間での入出力処理が終了するまでの予測時間を,取り外し予測時間と呼ぶ。
取り外し抑止制御情報116の取り外し抑止が“予約”であるゲストOS12と記憶装置15との対応について,再度取り外し要求があった場合には,判断部112は,取り外し対象のゲストOS12と記憶装置15との強制的な取り外しを行うと判断する。
図6は,本実施の形態による取り外し状況管理情報の例を示す図である。
図6に示す取り外し状況管理情報125は,取り外し状況情報記憶部124に記憶される取り外し状況管理情報125の一例である。図6に示す例では,ゲストIDが“#01”であるゲストOS12についての取り外し状況管理情報125の例が示されている。ゲストIDは,ゲストOS12を一意に識別する識別情報である。
図6に示す取り外し状況管理情報125は,装置番号,取り外し状況の情報を持つ。装置番号は,記憶装置15を一意に識別する識別情報である。取り外し状況は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しの状況を示す。
本実施の形態による取り外し状況管理情報125において,取り外し状況が示す状況には,“なし”,“予約”,“実行”の3つの状況がある。取り外し状況“なし”は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外し要求がない状況を示す。取り外し状況“予約”は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外し要求があり,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間の入出力処理の終了を待っている状況を示す。取り外し状況“実行”は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しを実行している状況を示す。
なお,ゲストID“#01”のゲストOS12以外のゲストOS12についての取り外し状況管理情報125の構成も,図6に示すゲストID“#01”のゲストOS12のものと同様の構成である。
ゲスト側制御部120において,ホスト側制御部110から取り外し予約通知を受けると,取り外し状況管理部123は,取り外し状況管理情報125における指定されたゲストOS12と記憶装置15との取り外し状況の情報を,“予約”に更新する。取り外し状況管理情報125において取り外し状況が“予約”であるということは,ホスト側制御部110で,安全な取り外しのために該当ゲストOS12と該当記憶装置15との間の入出力処理の終了を待っていることを意味する。
取り外し状況管理情報125の取り外し状況が“予約”であるゲストOS12と記憶装置15との対応について,リリースコマンドの発行が検出された場合には,取り外し状況管理部123は,当該取り外し状況の情報を,“実行”に更新する。取り外し状況管理情報125において取り外し状況が“実行”であるということは,ホスト側制御部110で,該当ゲストOS12と該当記憶装置15との取り外しが実行されていることを意味する。
取り外し状況管理情報125の取り外し状況が“実行”であるゲストOS12と記憶装置15との対応について,リザーブコマンドの発行が検出された場合には,ゲスト側制御部120は,リザーブコマンドを発行したゲストOS12に対して,ビジー応答する。
図7は,本実施の形態による取り外し予測情報の例を示す図である。
図7に示す取り外し予測情報133は,予測情報記憶部132に記憶される取り外し予測情報133の一例である。図7に示す例では,ゲストIDが“#01”であるゲストOS12についての取り外し予測情報133の例が示されている。ゲストIDは,ゲストOS12を一意に識別する識別情報である。
図7に示す取り外し予測情報133は,装置番号,最大時間,平均時間,開始時刻の情報を持つ。装置番号は,記憶装置15を一意に識別する識別情報である。最大時間は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間の過去の入出力処理において,最も長かった処理時間を示す。平均時間は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間の過去の入出力処理における,実行時間の近似平均を示す。開始時刻は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間で入出力処理が実行中である場合に,その入出力処理の開始時刻を示す。
なお,ゲストID“#01”のゲストOS12以外のゲストOS12についての取り外し予測情報133の構成も,図7に示すゲストID“#01”のゲストOS12のものと同様の構成である。
予測制御部130において,ゲスト側制御部120から取り外し抑止開始通知を受けると,予測部131は,取り外し予測情報133における指定されたゲストOS12と記憶装置15との開始時刻に,現在の時刻を設定する。取り外し予測情報133における開始時刻は,取り外し抑止開始通知を受けた時刻であるので,実行中の入出力処理の開始時刻となる。
予測制御部130において,ゲスト側制御部120から取り外し抑止終了通知を受けると,予測部131は,現在の時刻から,取り外し予測情報133における指定されたゲストOS12と記憶装置15との開始時刻を差し引いて,経過時間を求める。取り外し抑止終了通知を受けた時刻は入出力処理の終了時刻となるので,求められた経過時間は,終了したばかりの入出力処理の実行時間である。
求められた経過時間が,取り外し予測情報133における該当ゲストOS12と該当記憶装置15との最大時間を超えている場合には,予測部131は,その最大時間を経過時間で更新する。また,予測部131は,取り外し予測情報133における該当ゲストOS12と該当記憶装置15との平均時間を,その平均時間に経過時間を加えて2で割って得られる時間で更新する。このように求められた平均時間は,過去の入出力処理の実行時間の近似平均となる。
このように,該当ゲストOS12と該当記憶装置15との過去の入出力処理の実行時間の実績が,取り外し予測情報133における最大時間,平均時間の項目に蓄積される。なお,図7に示す取り外し予測情報133において,最大時間,平均時間の項目が“不明”となっているゲストOS12と記憶装置15との組み合わせについては,過去に入出力処理の実績がないことを示している。
予測制御部130において,ホスト側制御部110から取り外し予測時間の問い合わせを受けると,予測部131は,現在の時刻から,取り外し予測情報133における指定されたゲストOS12と記憶装置15との開始時刻を差し引いて,経過時間を求める。このとき,指定されたゲストOS12と記憶装置15との間の入出力処理は,実行中である。求められた経過時間は,入出力処理の開始時刻から取り外し要求が発行された時刻までの経過時間となる。
予測部131は,取り外し予測情報133における該当ゲストOS12と該当記憶装置15との平均時間から経過時間を差し引いた時間を求める。ここでは,取り外し予測情報133における平均時間から経過時間を差し引いて得られる時間を,予測平均時間と呼ぶ。予測平均時間は,該当ゲストOS12と該当記憶装置15との間の入出力処理が終了するまでの時間として,過去の実績から最も期待される予測時間の一例である。
予測部131は,取り外し予測情報133における該当ゲストOS12と該当記憶装置15との最大時間から経過時間を差し引いた時間を求める。ここでは,取り外し予測情報133における最大時間から経過時間を差し引いて得られる時間を,予測最大時間と呼ぶ。予測最大時間は,該当ゲストOS12と該当記憶装置15との間の入出力処理が終了するまでの時間として,過去の実績から想定される最大の予測時間の一例である。
予測制御部130は,ホスト側制御部110の問い合わせに対する応答として,予測部131により求められた取り外し予測時間の情報を通知する。本実施の形態では,取り外し予測時間の情報として,予測平均時間と予測最大時間とが通知される。なお,過去の入出力処理の実績がなく,取り外し予測情報133における最大時間や平均時間が不明となっている場合には,取り外し予測時間の情報として,不明が通知される。
また,予測部131は,求められた経過時間が,過去の入出力処理の実行時間から予測される実行時間を所定時間以上超えた場合に,入出力処理に異常が発生した可能性があると判断する。例えば,予測部131は,経過時間と,取り外し予測情報133における該当ゲストOS12と該当記憶装置15との最大時間とを比較して,経過時間が最大時間の2倍以上である場合に,入出力処理に異常が発生した可能性があると判断する。このとき,予測制御部130は,ホスト側制御部110の問い合わせに対する応答として,取り外し予測時間の情報の代わりに,異常を通知する。
同じゲストOS12と同じ記憶装置15との間での入出力処理では,同じパターンの処理が繰り返し実行されるケースも多く,その場合,入出力処理の実行時間も,毎回同じぐらいの時間となる。そのため,本実施の形態の予測部131では,ゲストOS12と記憶装置15との組み合わせごとに,過去の入出力処理の実行時間の実績から,実行中の入出力処理が終了するまでの時間の予測を行う。
図8は,本実施の形態による通知画面の例を示す図である。
ホスト側制御部110が予測制御部130から問い合わせに対する応答を受けると,通知部113は,その応答の内容に応じた通知を,ホストOS11に送る。ホストOS11では,ホストOS11の操作者に対する,ホスト側制御部110から通知された内容の提示が行われる。例えば,ホストOS11での制御によって,ホストOS11の操作者が使用しているディスプレイに,ホスト側制御部110からの通知の内容を提示した画面が表示される。
問い合わせに対する予測制御部130からの応答が取り外し予測時間の情報の通知であれば,通知部113は,予測制御部130から得られた取り外し予測時間の情報を,ホストOS11に通知する。取り外し予測時間の情報の通知を受けたホストOS11では,操作者のディスプレイに,取り外し予測時間の情報を表示する制御が行われる。
図8(A)は,取り外し予測時間として,予測平均時間と予測最大時間とが表示された通知画面の例を示す。取り外し予測時間として,予測平均時間と予測最大時間とが得られた場合には,図8(A)に示すように,それらの予測時間の情報が,取り外し完了予測時間として,操作者のディスプレイに表示される通知画面に提示される。図8(A)に示す通知画面において,“通常60s後”とあるのが提示された予測平均時間であり,“最大90s後”とあるのが提示された予測最大時間である。
図8(B)は,取り外し予測時間が不明である場合の通知画面の例を示す。取り外し予測時間が不明である場合には,図8(B)に示すように,取り外し完了予測時間として,操作者のディスプレイに表示される通知画面に,不明である旨が提示される。
問い合わせに対する予測制御部130からの応答が異常の通知であれば,通知部113は,ホストOS11に異常を通知する。異常の通知を受けたホストOS11では,操作者のディスプレイに,異常が発生している可能性がある旨を表示する制御が行われる。
図8(C)は,異常の可能性が提示された通知画面の例を示す。取り外し対象の入出力処理に異常の可能性がある場合には,図8(C)に示すように,操作者のディスプレイに表示される通知画面に,異常が発生している可能性がある旨が提示される。
なお,図8の通知画面では,再度の取り外しの指示により,強制的にゲストOS12と記憶装置15との取り外しができる旨が,説明されている。
以下チャネル制御部13の取り外し制御部100により,ゲストOS12と記憶装置15との取り外しを制御する例を,フローチャートを用いて具体的に説明する。
図9,図10は,本実施の形態のホスト側制御部による取り外し要求受け付け時の処理フローチャートである。
受付部111は,ホストOS11から発行された取り外し要求を受け付ける(ステップS10)。取り外し要求では,取り外し対象となるゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。判断部112は,取り外し対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し抑止制御情報116にアクセスする(ステップS11)。判断部112は,取り外し抑止制御情報116の該当ゲストID,該当装置番号における取り外し抑止が“有り”であるかを判定する(ステップS12)。
取り外し抑止が“有り”であれば(ステップS12のYES),ホスト側制御部110は,予測制御部130に対して,ゲストIDと装置番号とを指定して,取り外し予測時間を問い合わせる(ステップS13)。取り外し抑止が“有り”である場合には,取り外し対象のゲストOS12と記憶装置15との間で入出力処理が実行中であると判断できる。この場合には,安全な取り外しができないため,判断部112は,入出力処理の終了を待ってから,取り外し対象のゲストOS12と記憶装置15との取り外しを実行すると判断する。
ホスト側制御部110は,予測制御部130から,取り外し予測時間の問い合わせに対する応答を受け付ける(ステップS14)。通知部113は,予測制御部130からの応答が,異常の通知であるかを判定する(ステップS15)。
応答が異常の通知であれば(ステップS15のYES),通知部113は,ホストOS11に異常を通知する(ステップS16)。このとき,ホストOS11での制御により,ホストOS11の操作者に対して,異常を通知する画面が提示される。
応答が異常の通知でなければ(ステップS15のNO),すなわち応答が取り外し予測時間の情報の通知であれば,通知部113は,ホストOS11に取り外し予測時間の情報を通知する(ステップS17)。このとき,ホストOS11での制御により,ホストOS11の操作者に対して,取り外し予測時間の情報を通知する画面が提示される。
取り外し抑止制御部114は,取り外し抑止制御情報116の該当ゲストID,該当装置番号における取り外し抑止を“予約”に更新する(ステップS18)。ホスト側制御部110は,ゲスト側制御部120に対して,ゲストIDと装置番号とを指定した取り外し予約を通知する(ステップS19)。これにより,取り外し対象のゲストOS12と記憶装置15との間での入出力処理の終了を待ってから取り外しを実行する状態となる。
取り外し抑止が“有り”でなければ(ステップS12のNO),判断部112は,取り外し抑止制御情報116の該当ゲストID,該当装置番号における取り外し抑止が“予約”であるかを判定する(ステップS20)。
取り外し抑止が“予約”であれば(ステップS20のYES),ホスト側制御部110は,取り外し実行制御部16に取り外しの実行を通知する。取り外し実行制御部16は,取り外し対象のゲストOS12と記憶装置15との取り外しを実行する(ステップS21)。この取り外しは,強制的な取り外しとなる。取り外し抑止が“予約”である状態は,取り外し対象のゲストOS12と記憶装置15との間での入出力処理の終了を待っている状態である。この状態で,入出力処理の終了を待たずに再度取り外し要求があった場合,判断部112は,ホストOS11の操作者が強制的な取り外しを指示したものと判断する。通知部113は,ホストOS11に強制取り外しを通知する(ステップS22)。
取り外し抑止が“予約”でなければ(ステップS20のNO),すなわち取り外し抑止が“なし”であれば,ホスト側制御部110は,取り外し実行制御部16に取り外しの実行を通知する。取り外し実行制御部16は,取り外し対象のゲストOS12と記憶装置15との取り外しを実行する(ステップS23)。この取り外しは,安全な取り外しとなる。取り外し抑止が“なし”である状態は,取り外し対象のゲストOS12と記憶装置15との間での入出力処理が行われていない状態である。このとき,判断部112は,取り外し対象のゲストOS12と記憶装置15との安全な取り外しが実行できると判断する。通知部113は,ホストOS11に取り外しを通知する(ステップS24)。
図11は,本実施の形態のホスト側制御部による取り外し抑止開始通知受け付け時の処理フローチャートである。
ホスト側制御部110は,ゲスト側制御部120から,取り外し抑止開始通知を受け付ける(ステップS30)。取り外し抑止開始通知では,取り外し抑止の制御を開始する対象となるゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。
取り外し抑止制御部114は,取り外し抑止の制御を開始する対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し抑止制御情報116にアクセスする(ステップS31)。取り外し抑止制御部114は,取り外し抑止制御情報116の該当ゲストID,該当装置番号における取り外し抑止を,“有り”に更新する(ステップS32)。
取り外し抑止開始通知は,ゲスト側制御部120がゲストOS12から発行された記憶装置15に対するリザーブコマンドを検知したときに送られる通知である。このことは,リザーブコマンドを発行したゲストOS12と,相手先の記憶装置15との間での一連の入出力処理が開始されたことを意味している。取り外し抑止制御情報116において,取り外し抑止を“有り”に更新するということは,入出力処理が終了するまで,対象のゲストOS12と記憶装置15との取り外しを抑制する制御を行うということである。
図12は,本実施の形態のホスト側制御部による取り外し抑止終了通知受け付け時の処理フローチャートである。
ホスト側制御部110は,ゲスト側制御部120から,取り外し抑止終了通知を受け付ける(ステップS40)。取り外し抑止終了通知では,取り外し抑止の制御を終了する対象となるゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。
取り外し抑止制御部114は,取り外し抑止の制御を終了する対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し抑止制御情報116にアクセスする(ステップS41)。取り外し抑止制御部114は,取り外し抑止制御情報116の該当ゲストID,該当装置番号における取り外し抑止を,“なし”に更新する(ステップS42)。
取り外し抑止終了通知は,ゲスト側制御部120がゲストOS12から発行された記憶装置15に対するリリースコマンドを検知したときに送られる通知である。このことは,リリースコマンドを発行したゲストOS12と,相手先の記憶装置15との間での一連の入出力処理が終了したことを意味している。取り外し抑止制御情報116において,取り外し抑止を“なし”に更新するということは,対象のゲストOS12と記憶装置15との取り外しの抑制を解除したということである。
図13は,本実施の形態のホスト側制御部による取り外し抑止終了通知・取り外し通知受け付け時の処理フローチャートである。
ホスト側制御部110は,ゲスト側制御部120から,取り外し抑止終了通知と取り外し通知とを受け付ける(ステップS50)。取り外し抑止終了通知や取り外し通知では,対象となるゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。
取り外し抑止制御部114は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し抑止制御情報116にアクセスする(ステップS51)。取り外し抑止制御部114は,取り外し抑止制御情報116の該当ゲストID,該当装置番号における取り外し抑止を,“なし”に更新する(ステップS52)。ホスト側制御部110は,取り外し実行制御部16に取り外しの実行を通知する。取り外し実行制御部16は,取り外し対象のゲストOS12と記憶装置15との取り外しを実行する(ステップS53)。この取り外しは,安全な取り外しとなる。
取り外しが予約された状況で,ゲスト側制御部120がゲストOS12から発行された記憶装置15に対するリリースコマンドを検知した場合には,ゲスト側制御部120から取り外し抑止終了通知と取り外し通知とが同時に送られる。このとき,リリースコマンドを発行したゲストOS12と相手先の記憶装置15との間では,一連の入出力処理が終了しているので,安全な取り外しが可能となる。
図14,図15は,本実施の形態のゲスト側制御部によるIO命令受け付け時の処理フローチャートである。
IO命令受付部121は,ゲストOS12から発行されたIO命令を受け付ける(ステップS60)。IO命令解析制御部122は,受け付けたIO命令を解析する(ステップS61)。IO命令解析制御部122は,IO命令の解析の結果,リリースコマンドが検出されたかを判定する(ステップS62)。
リリースコマンドが検出されなければ(ステップS62のNO),IO命令解析制御部122は,IO命令の解析の結果,リザーブコマンドが検出されたかを判定する(ステップS63)。リザーブコマンドが検出されなければ(ステップS63のNO),ゲスト側制御部120は,IO命令制御部17に入出力処理の実行を通知する。IO命令制御部17は,IO命令に従った入出力処理を実行する(ステップS68)。
リザーブコマンドが検出されれば(ステップS63のYES),IO命令解析制御部122は,リザーブコマンドを発行したゲストOS12のゲストIDと相手先の記憶装置15の装置番号とで,取り外し状況管理情報125にアクセスする(ステップS64)。IO命令解析制御部122は,取り外し状況管理情報125の該当ゲストID,該当装置番号における取り外し状況が“実行”であるかを判定する(ステップS65)。
取り外し状況が“実行”であれば(ステップS65のYES),ゲスト側制御部120は,リザーブコマンドを発行したゲストOS12に対して,ビジー応答する(ステップS66)。取り外し状況管理情報125の取り外し状況が“実行”である場合には,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との取り外しが行われているので,該当ゲストOS12から該当記憶装置15へのアクセスが行われないように制御される。
取り外し状況が“実行”でなければ(ステップS65のNO),ゲスト側制御部120は,ホスト側制御部110と予測制御部130とに,それぞれゲストIDと装置番号とを指定した取り外し抑止開始を通知する(ステップS67)。取り外し抑止開始の通知によって,リザーブコマンドの発行で該当ゲストOS12と該当記憶装置15との間の入出力処理が開始されたことが,ホスト側制御部110や予測制御部130に通知される。
ゲスト側制御部120は,IO命令制御部17に入出力処理の実行を通知する。IO命令制御部17は,IO命令に従った入出力処理を実行する(ステップS68)。ゲストOS12が発行したリザーブコマンドによって,そのゲストOS12と相手先の記憶装置15との間で入出力処理が開始される。
リリースコマンドが検出されれば(ステップS62のYES),IO命令解析制御部122は,リリースコマンドを発行したゲストOS12のゲストIDと相手先の記憶装置15の装置番号とで,取り外し状況管理情報125にアクセスする(ステップS69)。IO命令解析制御部122は,取り外し状況管理情報125の該当ゲストID,該当装置番号における取り外し状況が“予約”であるかを判定する(ステップS70)。
取り外し状況が“予約”でなければ(ステップS70のNO),すなわち取り外し状況が“なし”であれば,ゲスト側制御部120は,ホスト側制御部110に,ゲストIDと装置番号とを指定した取り外し抑止終了を通知する(ステップS71)。また,ゲスト側制御部120は,予測制御部130に,ゲストIDと装置番号とを指定した取り外し抑止終了を通知する(ステップS72)。取り外し抑止終了の通知によって,リリースコマンドの発行で該当ゲストOS12と該当記憶装置15との間の入出力処理が終了したことが,ホスト側制御部110や予測制御部130に通知される。
取り外し状況が“予約”であれば(ステップS70のYES),ゲスト側制御部120は,ホスト側制御部110に,ゲストIDと装置番号とを指定した,取り外し抑止終了と取り外しとを通知する(ステップS73)。取り外し状況管理部123は,取り外し状況管理情報125の該当ゲストID,該当装置番号における取り外し状況を“実行”に更新する(ステップS74)。また,ゲスト側制御部120は,予測制御部130に,ゲストIDと装置番号とを指定した取り外し抑止終了を通知する(ステップS72)。取り外し抑止終了の通知によって,リリースコマンドの発行で該当ゲストOS12と該当記憶装置15との間の入出力処理が終了したことが,ホスト側制御部110や予測制御部130に通知される。また,取り外し状況が“予約”である状態は,安全な取り外しのために,該当ゲストOS12と該当記憶装置15との間の入出力処理の終了を待っている状態であるので,ホスト側制御部110に取り外しが通知される。
ゲスト側制御部120は,IO命令制御部17に入出力処理の実行を通知する。IO命令制御部17は,IO命令に従った入出力処理を実行する(ステップS68)。ゲストOS12が発行したリリースコマンドによって,そのゲストOS12と相手先の記憶装置15との間で入出力処理が終了される。
図16は,本実施の形態のゲスト側制御部による取り外し予約通知受け付け時の処理フローチャートである。
ゲスト側制御部120は,ホスト側制御部110から,取り外し予約通知を受け付ける(ステップS80)。取り外し予約通知では,取り外しの対象となるゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。
取り外し状況管理部123は,取り外し対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し状況管理情報125にアクセスする(ステップS81)。取り外し状況管理部123は,取り外し状況管理情報125の該当ゲストID,該当装置番号における取り外し状況を,“予約”に更新する(ステップS82)。
図17は,本実施の形態の予測制御部による取り外し抑止開始通知受け付け時の処理フローチャートである。
予測制御部130は,ゲスト側制御部120から,取り外し抑止開始通知を受け付ける(ステップS90)。取り外し抑止開始通知では,対象のゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。
予測部131は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し予測情報133にアクセスする(ステップS91)。予測部131は,取り外し予測情報133の該当ゲストID,該当装置番号における開始時刻に,現在の時刻を設定する(ステップS92)。
取り外し抑止開始通知は,ゲスト側制御部120がゲストOS12から発行された記憶装置15に対するリザーブコマンドを検知したときに送られる通知である。このことは,リザーブコマンドを発行したゲストOS12と,相手先の記憶装置15との間での一連の入出力処理が開始されたことを意味している。予測制御部130にとって,取り外し抑止開始通知は,入出力処理の実行時間の実績の記録と,入出力処理の終了までの時間の予測とに必要な,ゲストOS12と記憶装置15との間での入出力処理の開始時刻を得るための通知となる。
図18は,本実施の形態の予測制御部による取り外し抑止終了通知受け付け時の処理フローチャートである。
予測制御部130は,ゲスト側制御部120から,取り外し抑止終了通知を受け付ける(ステップS100)。取り外し抑止終了通知では,対象のゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。予測部131は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し予測情報133にアクセスする(ステップS101)。
予測部131は,取り外し予測情報133の該当ゲストID,該当装置番号における開始時刻と,現在の時刻とから,経過時間を算出する(ステップS102)。経過時間は,現在の時刻から開始時刻を差し引くことにより求められる。取り外し予測情報133の開始時刻は,ゲストOS12からリザーブコマンドが発行された時刻,すなわちゲストOS12と記憶装置15との間での入出力処理が開始された時刻である。取り外し抑止終了通知を受け付けた時点における現在の時刻は,ゲストOS12からリリースコマンドが発行された時刻,すなわちゲストOS12と記憶装置15との間での入出力処理が終了した時刻である。ここで求められる経過時間は,ゲストOS12と記憶装置15との間での入出力処理の実行時間となる。
予測部131は,取り外し予測情報133の該当ゲストID,該当装置番号における平均時間に経過時間を足して2で割った値で,該当ゲストID,該当装置番号における平均時間を更新する(ステップS103)。ここでは,平均時間として,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間での入出力処理について,過去の実行時間の近似平均が求められている。なお,予測時間として,過去の実行時間のログを蓄積して平均時間を求める,統計的手法を用いて期待値を求めるなどの設計は,任意である。
予測部131は,経過時間が,取り外し予測情報133の該当ゲストID,該当装置番号における最大時間より大きいかを判定する(ステップS104)。経過時間が最大時間より大きい場合には(ステップS104のYES),予測部131は,取り外し予測情報133の該当ゲストID,該当装置番号における最大時間を,経過時間で更新する(ステップS105)。
取り外し抑止終了通知は,ゲスト側制御部120がゲストOS12から発行された記憶装置15に対するリリースコマンドを検知したときに送られる通知である。このことは,リリースコマンドを発行したゲストOS12と,相手先の記憶装置15との間での一連の入出力処理が終了したことを意味している。予測制御部130にとって,取り外し抑止終了通知は,入出力処理の実行時間の実績の記録に必要な,ゲストOS12と記憶装置15との間での入出力処理の終了時刻と得るための通知となる。ゲストOS12と記憶装置15との間での入出力処理の開始時刻と終了時刻とから,入出力処理の実行時間の実績が得られる。
図19は,本実施の形態の予測制御部による取り外し予測時間問い合わせ受け付け時の処理フローチャートである。
予測制御部130は,ホスト側制御部110から,取り外し予測時間の問い合わせを受け付ける(ステップS110)。取り外し予測時間の問い合わせでは,対象のゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。予測部131は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し予測情報133にアクセスする(ステップS111)。
予測部131は,取り外し予測情報133の該当ゲストID,該当装置番号における開始時刻と,現在の時刻とから,経過時間を算出する(ステップS112)。経過時間は,現在の時刻から開始時刻を差し引くことにより求められる。ここで求められる経過時間は,実行中であるゲストOS12と記憶装置15との間での入出力処理の開始時刻から,ホストOS11から取り外し要求を受けた時刻までの経過時間である。
予測部131は,経過時間が,取り外し予測情報133の該当ゲストID,該当装置番号における最大時間の2倍以上かを判定する(ステップS113)。
経過時間が最大時間の2倍以上であれば(ステップS113のYES),予測部131は,異常と判断し,取り外し予測時間の問い合わせに対する応答として,ホスト側制御部110に異常を通知する(ステップS114)。入出力処理が開始されてからの経過時間が,過去の入出力処理の実行時間の実績から予測される範囲の時間を大きく超えている場合には,入出力処理に何らかの異常が発生している可能性がある。なお,ここでは,最大時間を基準として,その2倍以上の時間が入出力処理の開始から経過していることを条件に,異常の判断を行っているが,異常を判断する基準の時間や,その基準時間に基づいた異常判定の条件などは,任意の設計が可能である。
経過時間が最大時間の2倍以上でなければ(ステップS113のNO),予測部131は,取り外し予測情報133の該当ゲストID,該当装置番号における平均時間と,最大時間とから,それぞれ経過時間を差し引いた時間を求める(ステップS115)。平均時間から経過時間を差し引いて得られる予測平均時間は,実行中の入出力処理が終了までの平均的な時間の予測を示す。最大時間から経過時間を差し引いて得られる予測最大時間は,実行中の入出力処理が終了までの過去の最大時間を示す。ここでは,求めた2つの時間を取り外し予測時間とする。
予測部131は,問い合わせに対する応答として,ホスト側制御部110に,取り外し予測時間の情報を通知する(ステップS116)。
以上説明したように,本実施の形態による仮想計算機システム10では,入出力処理の終了を待ってゲストOS12と記憶装置15との取り外しを実行する場合に,取り外しの実行時間,すなわち入出力処理の終了時間を予測して,ホストOS11の操作者に提示することが可能となる。これにより,ホストOS11の操作者は,取り外しを要求したゲストOS12と記憶装置15との取り外し完了までのおおよその時間を把握することが可能となり,強制的に取り外しを実行するか否かを容易に判断できるようになる。
また,取り外しを要求したゲストOS12と記憶装置15とについて,予測時間を大きく経過しているのに入出力処理が終了していない場合に,異常の可能性をホストOS11の操作者に提示することが可能となる。これにより,ホストOS11の操作者は,取り外しを要求したゲストOS12と記憶装置15との間における入出力処理の異常を速やかに知ることが可能となり,強制的に取り外しを実行するか否かを容易に判断できるようになる。
〔実施の形態2〕
前述の実施の形態1では,予測制御部130において,各ゲストOS12と各記憶装置15とを組み合わせた単位で,過去の入出力処理の実行時間の実績から,入出力処理の終了までの予測時間を求める例を説明した。予測制御部130において,各ゲストOS12と各記憶装置15とを組み合わせた単位をさらに詳細にした,入出力処理時のコマンドの実行パターンごとの単位で,過去の入出力処理の実行時間の実績から,入出力処理の終了までの予測時間を求めることもできる。
図20は,本実施の形態による取り外し予測情報の例(2)を示す図である。
図20に示す取り外し予測情報133’は,図7に示す取り外し予測情報133と同様に,予測情報記憶部132に記憶される取り外し予測情報の一例である。ただし,図7に示す取り外し予測情報133と異なり,図20に示す取り外し予測情報133’では,各ゲストOS12と各記憶装置15とを組み合わせた単位をさらに詳細にした,入出力処理時のコマンドの実行パターンごとの単位で,情報が管理されている。
図20に示す例では,ゲストIDが“#01”であるゲストOS12についての取り外し予測情報133’の例が示されている。ゲストIDは,ゲストOS12を一意に識別する識別情報である。
図20に示す取り外し予測情報133’は,装置番号,コマンド列,最大コマンド数,平均コマンド数,平均時間,現在のコマンド数,開始時刻の情報を持つ。装置番号は,記憶装置15を一意に識別する識別情報である。
コマンド列は,リザーブコマンドから始まる一連の入出力処理において,リザーブコマンド後のコマンドの実行パターンごとの分類を示す。本実施の形態では,Read系コマンドとWrite系コマンドとの実行パターンで分類を行うものとする。図20に示すコマンド列において,RDはRead系コマンドを示し,WTはWrite系コマンドを示す。例えば,RD−WTは,一連の入出力処理において,最初に発行されたRead系/Write系コマンドがRead系コマンドであり,2番目に発行されたRead系/Write系コマンドがWrite系コマンドであることを示している。なお,図20に示す取り外し予測情報133’では,2番目までのRead系/Write系コマンドのコマンド列で,コマンドの実行パターンを分類しているが,3番目までのコマンド列で分類するなどの設計は任意である。
最大コマンド数は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間の過去の入出力処理において,最大のRead系/Write系コマンドの出現数である。平均コマンド数は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間の過去の入出力処理における,Read系/Write系コマンドの出現数の近似平均を示す。平均時間は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間の過去の入出力処理における,Read系/Write系コマンドの1コマンド当たりの実行時間の近似平均を示す。
図20に示す取り外し予測情報133’において,最大コマンド数,平均コマンド数,平均時間の項目が,各ゲストOS12と各記憶装置15との,各コマンド列のコマンドパターンにおける,過去の入出力処理の実行時間の実績が蓄積される項目である。なお,図20に示す取り外し予測情報133’において,最大コマンド数,平均コマンド数,平均時間の項目が“不明”となっているゲストOS12と記憶装置15との組み合わせについては,過去に入出力処理の実績がないことを示している。
現在のコマンド数は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間で入出力処理が実行中である場合に,その時点までに検出されているRead系/Write系コマンドの数を示す。開始時刻は,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間で入出力処理が実行中である場合に,その入出力処理の開始時刻を示す。
なお,ゲストID“#01”のゲストOS12以外のゲストOS12についての取り外し予測情報133’の構成も,図5に示すゲストID“#01”のゲストOS12のものと同様の構成である。
本実施の形態2において,ホスト側制御部110の動作は,上述の実施の形態1における動作と同様である。例えば,本実施の形態2において,ホスト側制御部110による処理の例は,上述の実施の形態1と同様に,図9〜図13のフローチャートに示すものとなる。
本実施の形態2において,ゲスト側制御部120の動作は,一部Read系/Write系コマンドに対する処理の部分以外は,上述の実施の形態1における動作と同様である。例えば,本実施の形態2において,ゲスト側制御部120による処理の例は,図14に示すフローチャート以外については,上述の実施の形態1と同様に,図15,図16のフローチャートに示すものとなる。
図21は,本実施の形態のゲスト側制御部によるIO命令受け付け時の処理フローチャート(2)である。
図21に示すように,本実施の形態2のゲスト側制御部120によるIO命令受け付け時の処理では,リザーブコマンド/リリースコマンド検出時の処理(ステップS60〜68)については,図14に示すフローチャートと同様である。図14に示すフローチャートと異なる部分のみを説明する。
リザーブコマンドが検出されなければ(ステップS63のNO),IO命令解析制御部122は,IO命令の解析の結果,Read系/Write系コマンドが検出されたかを判定する(ステップS120)。Read系/Write系コマンドが検出されれば(ステップS120のYES),ゲスト側制御部120は,予測制御部130に,ゲストIDと装置番号とを指定して,Read系/Write系コマンドを通知する(ステップS121)。ゲスト側制御部120は,IO命令制御部17に入出力処理の実行を通知する。IO命令制御部17は,IO命令に従った入出力処理を実行する(ステップS68)。
本実施の形態2において,予測制御部130の動作は,取り外し抑止開始通知受け付け時の動作以外は,上述の実施の形態1における動作と異なる。例えば,本実施の形態2において,予測制御部130による処理の例は,図17に示すフローチャートのみが,上述の実施の形態1と同様になる。
図22は,本実施の形態の予測制御部によるRead系/Write系コマンドの通知受け付け時の処理フローチャートである。
予測制御部130は,ゲスト側制御部120から,Read系/Write系コマンドの通知を受け付ける(ステップS130)。Read系/Write系コマンドの通知では,対象のゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。予測部131は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し予測情報133’にアクセスする(ステップS131)。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における現在のコマンド数が2以上のコマンド列があるかを判定する(ステップS132)。
現在のコマンド数が2以上のコマンド列があれば(ステップS132のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における,現在のコマンド数が2以上のコマンド列にアクセスする(ステップS133)。予測部131は,該当コマンド列の現在のコマンド数を+1する(ステップS134)。
現在のコマンド数が2以上のコマンド列がなければ(ステップS132のNO),予測部131は,現在のコマンド数が1であるコマンド列があるかを判定する(ステップS135)。
現在のコマンド数が1のコマンド列がなければ(ステップS135のNO),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号において,1つ目のコマンドが今回の通知で受け付けたRead系/Write系コマンドと一致するコマンド列の,現在のコマンド数を1にする(ステップS136)。リザーブコマンド後の最初のRead系/Write系コマンドだけでは,コマンド列を限定することができない。この段階では,予測部131は,1つ目のコマンドが一致する2つのコマンド列の現在のコマンド数を,両方1にしておく。
現在のコマンド数が1のコマンド列があれば(ステップS135のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における,現在のコマンド数が1のコマンド列にアクセスする(ステップS137)。予測部131は,2つ目のコマンドが今回の通知で受け付けたRead系/Write系コマンドと一致する方のコマンド列の,現在のコマンド数を+1する(ステップS138)。予測部131は,2つ目のコマンドが今回の通知で受け付けたRead系/Write系コマンドと一致しなかった方のコマンド列の,現在のコマンド数を0にする(ステップS139)。リザーブコマンド後の2つ目のRead系/Write系コマンドで,コマンド列を限定することができる。
本実施の形態2では,一連の入出力処理の実行中にRead系/Write系コマンドが検出されるたびに,取り外し予測情報133’の該当ゲストID,該当装置番号,該当コマンド列における現在のコマンド数が加算されていく。
図23は,本実施の形態の予測制御部による取り外し抑止終了通知受け付け時の処理フローチャート(2)である。
予測制御部130は,ゲスト側制御部120から,取り外し抑止終了通知を受け付ける(ステップS140)。取り外し抑止終了通知では,対象のゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。予測部131は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し予測情報133’にアクセスする(ステップS141)。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における現在のコマンド数が2以上のコマンド列があるかを判定する(ステップS142)。現在のコマンド数が2以上のコマンド列があれば(ステップS142のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における,現在のコマンド数が2以上のコマンド列にアクセスする(ステップS143)。
現在のコマンド数が2以上のコマンド列がなければ(ステップS142のNO),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における現在のコマンド数が1のコマンド列があるかを判定する(ステップS144)。現在のコマンド数が1のコマンド列があれば(ステップS144のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における,平均コマンド数×平均時間が最大の,現在のコマンド数が1のコマンド列にアクセスする(ステップS145)。
現在のコマンド数が1のコマンド列がなければ(ステップS144のNO),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号において,すべてのコマンド列のうち,平均コマンド数×平均時間が最大のコマンド列にアクセスする(ステップS146)。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における開始時刻と,現在の時刻とから,経過時間を算出する(ステップS147)。経過時間は,現在の時刻から開始時刻を差し引くことにより求められる。取り外し予測情報133’の開始時刻は,ゲストOS12からリザーブコマンドが発行された時刻,すなわちゲストOS12と記憶装置15との間での入出力処理が開始された時刻である。取り外し抑止終了通知を受け付けた時点における現在の時刻は,ゲストOS12からリリースコマンドが発行された時刻,すなわちゲストOS12と記憶装置15との間での入出力処理が終了した時刻である。ここで求められる経過時間は,ゲストOS12と記憶装置15との間での入出力処理の実行時間となる。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における平均時間に経過時間を現在のコマンド数で割ったものを足して2で割った値で,該当ゲストID,該当装置番号における平均時間を更新する(ステップS148)。ここでは,平均時間として,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間での入出力処理について,Read系/Write系コマンド1コマンド当たりの過去の実行時間の近似平均が求められている。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における平均コマンド数に現在のコマンド数を足して2で割った値で,該当ゲストID,該当装置番号における平均コマンド数を更新する(ステップS149)。ここでは,平均コマンド数として,該当ゲストIDのゲストOS12と該当装置番号の記憶装置15との間での入出力処理について,Read系/Write系コマンドの数の近似平均が求められている。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における最大コマンド数より,現在のコマンド数が大きいかを判定する(ステップS150)。最大コマンド数より現在のコマンド数の方が大きい場合には(ステップS150のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における最大コマンド数を,現在のコマンド数で更新する(ステップS151)。
このように,本実施の形態2では,取り外し予測情報133’に,各ゲストOS12と各記憶装置15との間での入出力処理における,コマンドの実行パターンごとの最大コマンド数,平均コマンド数,平均時間等の実績が蓄積される。
図24は,本実施の形態の予測制御部による取り外し予測時間問い合わせ受け付け時の処理フローチャート(2)である。
予測制御部130は,ホスト側制御部110から,取り外し予測時間の問い合わせを受け付ける(ステップS160)。取り外し予測時間の問い合わせでは,対象のゲストOS12と記憶装置15とが,それぞれゲストIDと装置番号とで指定されている。予測部131は,対象のゲストOS12のゲストIDと記憶装置15の装置番号とで,取り外し予測情報133’にアクセスする(ステップS161)。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における現在のコマンド数が2以上のコマンド列があるかを判定する(ステップS162)。現在のコマンド数が2以上のコマンド列があれば(ステップS162のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における,現在のコマンド数が2以上のコマンド列にアクセスする(ステップS163)。
現在のコマンド数が2以上のコマンド列がなければ(ステップS162のNO),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における現在のコマンド数が1のコマンド列があるかを判定する(ステップS164)。現在のコマンド数が1のコマンド列があれば(ステップS164のYES),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における,平均コマンド数×平均時間が最大の,現在のコマンド数が1のコマンド列にアクセスする(ステップS165)。
現在のコマンド数が1のコマンド列がなければ(ステップS164のNO),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号において,すべてのコマンド列のうち,平均コマンド数×平均時間が最大のコマンド列にアクセスする(ステップS166)。
予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における開始時刻と,現在の時刻とから,経過時間を算出する(ステップS167)。経過時間は,現在の時刻から開始時刻を差し引くことにより求められる。ここで求められる経過時間は,実行中であるゲストOS12と記憶装置15との間での入出力処理の開始時刻から,ホストOS11から取り外し要求を受けた時刻までの経過時間である。
予測部131は,経過時間が,取り外し予測情報133’の該当ゲストID,該当装置番号における,最大コマンド数×平均時間の2倍以上かを判定する(ステップS168)。
経過時間が最大コマンド数×平均時間の2倍以上であれば(ステップS168のYES),予測部131は,異常と判断し,取り外し予測時間の問い合わせに対する応答として,ホスト側制御部110に異常を通知する(ステップS169)。入出力処理が開始されてからの経過時間が,過去の入出力処理の実行時間の実績から予測される範囲の時間を大きく超えている場合には,入出力処理に何らかの異常が発生している可能性がある。なお,ここでは,最大コマンド数×平均時間を基準として,その2倍以上の時間が入出力処理の開始から経過していることを条件に,異常の判断を行っているが,異常を判断する基準の時間や,その基準時間に基づいた異常判定の条件などは,任意の設計が可能である。
経過時間が最大コマンド数×平均時間の2倍以上でなければ(ステップS168のNO),予測部131は,取り外し予測情報133’の該当ゲストID,該当装置番号における平均コマンド数×平均時間と,最大コマンド数×平均時間とから,それぞれ経過時間を差し引いた時間を求める(ステップS170)。平均コマンド数×平均時間から経過時間を差し引いて得られる予測平均時間は,実行中の入出力処理が終了するまでの平均的な時間の予測を示す。最大コマンド数×平均時間から経過時間を差し引いて得られる予測最大時間は,実行中の入出力処理が終了するまでの過去の最大時間を示す。ここでは,求めた2つの時間を取り外し予測時間とする。
予測部131は,問い合わせに対する応答として,ホスト側制御部110に,取り外し予測時間の情報を通知する(ステップS171)。
同じゲストOS12と同じ記憶装置15との間での入出力処理では,いくつかの決まったコマンドの実行パターンの処理が繰り返し実行されるケースも多い。本実施の形態2で説明したように,予測制御部130において,さらにコマンドの実行パターンで分類した単位で蓄積した過去の入出力処理の実行時間の実績から,入出力処理の終了までの時間の予測を行うことで,より精度が高い予測が可能となる。これにより,ホストOS11の操作者は,より正確な取り外し完了までの予測時間の情報に基づいて,強制的な取り外しを指示するか否かの判断が可能となる。
以上,本実施の形態について説明したが,本発明はその主旨の範囲において種々の変形が可能であることは当然である。