| z/VM | |
|---|---|
![]() | |
| 開発者 | IBM |
| OSファミリー | VMファミリー |
| 動作状態 | 現在 |
| ソースモデル | 1972年~1986年オープンソース、1977年~現在クローズドソース |
| 初回リリース | 1972年 (1972年) |
| 最新リリース | IBM z/VM V7.4 / 2024年9月20日 ( 2024-09-20 ) [ 1 ] |
| マーケティングターゲット | IBMメインフレームコンピュータ |
| 利用可能 | 英語 |
| 対応プラットフォーム | System/370、System/390、IBM Z |
| ライセンス | 1972年~1981年パブリックドメイン、1976年~現在著作権保護対象 |
| 公式サイト | www.vm.ibm.com |

VM ( VM/CMSと表記されることが多い)は、 System/370、System/390、IBM Z、および互換システムを含むIBMメインフレームで使用される仮想マシンオペレーティングシステムのファミリーです。これは、CP/CMSオペレーティングシステムの基盤となった旧式のCP-67に取って代わりました。1972年にS/370向けの無料版Virtual Machine Facility/370として初めてリリースされ、その後、有料アップグレード[ a ]や新しいハードウェアのサポートを追加したバージョン[ d ]がリリースされました。
VMは、ユーザープログラムを実行できるように、従来のオペレーティングシステムをロードできる仮想マシンを作成します。当初、そのオペレーティングシステムは、 DOSに似たシンプルなシングルユーザーシステムであるCMSでした。VMは、 MVSやVSEのような大規模システムを含む、他の多くのIBMオペレーティングシステムでも使用できます。これらの大規模システムは、VMなしで単独で実行されることがよくあります。その他の場合、VMは、より特殊なオペレーティングシステム、あるいは多くのOS機能を提供するプログラムで使用されることもあります。これには、RSCS [ e ]やMUMPSなどが含まれます。
VMアーキテクチャの中核は、制御プログラムまたはハイパーバイザ(略称CP、VM-CP、場合によっては曖昧にVM)です。これは物理ハードウェア上で動作し、仮想マシン環境を作成します。VM-CPは、すべてのI/O操作やその他の特権操作を含む、物理マシンの完全な仮想化を提供します。デバイス管理、ディスパッチ、仮想ストレージ管理、その他の従来のオペレーティングシステムタスクなど、システムのリソース共有を実行します。各VMユーザーには、独自のアドレス空間、仮想デバイスなどを持つ個別の仮想マシンが提供され、スタンドアロン(「ベアメタル」)マシンで実行できるソフトウェアを実行できます。特定のVMメインフレームでは、通常、数百または数千の仮想マシンインスタンスが実行されます。VM-CPは、CP-67の再実装であるCP-370として始まり、CP-67自体はCP-40の再実装です。
各仮想マシン内では、別のオペレーティングシステム、つまりゲストオペレーティングシステムが動作しています。これは次のようなものかもしれません。
以下のバージョンが確認されています。
名称にあるCMSは、会話監視システム(Conversational Monitor System)の略で、製品の構成要素の一つであり、仮想マシン上で動作するシングルユーザーオペレーティングシステムで、仮想マシン内で会話型のタイムシェアリング機能を提供する。
IBMは360/65 [ 14 ]のためにハイパーバイザーという用語を作り出し、後にCP-67のDIAGハンドラーにもそれを使用しました。
診断命令('83'x - ニーモニックなし)は、IBMが元々「組み込みの診断機能、またはその他のモデル依存機能」を実行するために意図した特権命令です。 [ 15 ] IBMはDIAGを「仮想マシンとCP間の通信」のために再利用しました。[ 16 ] [ 17 ]この命令には、RxとRyと呼ばれる2つの4ビットレジスタ番号が含まれており、これらは「DIAGNOSEインターフェースに渡されるオペランド格納アドレスまたは戻りコード」を格納できます。また、CPが実行するDIAGNOSE機能を決定するために使用する2バイトのコードも含まれています。[ 16 ]利用可能な診断機能には、次のものがあります。
かつて、CMSはベアメタルマシン上で真のオペレーティングシステムとして動作することが可能でした(ただし、そのような構成は一般的ではありません)。現在は、VM上のゲストOSとしてのみ動作します。これは、CMSがファイルシステム操作を実行したり、他のVMサービスを要求したりするために、VM-CPへのハイパーバイザインターフェースに依存しているためです。この準仮想化インターフェースは次のとおりです。


CMS やその他のオペレーティングシステムでは、DASD の要件が実際のボリュームのサイズよりもはるかに小さいことがよくあります。このため、CP では、インストール時にデバイスの容量までの任意のサイズの仮想ディスクを定義できます。CKD ボリュームの場合、ミニディスクはフル シリンダで定義する必要があります。ミニディスクは、通常はサイズが小さく、各ミニディスクの開始位置がシリンダまたはブロック 0 にマッピングされる点を除いて、基となる実際のディスクと同じ属性を持ちます。ミニディスクには、実際のディスクと同じチャネル プログラムを使用してアクセスできます。
CMSファイルシステムで初期化されたミニディスクはCMSミニディスクと呼ばれますが、CMSだけがそれを使用できるシステムではありません。
ボリュームを特定の仮想マシンに割り当てるのではなく、z/OSなどのゲスト オペレーティング システムで使用するためにボリューム全体を定義するのが一般的ですDEDICATE。専用の DASD を使用すると、CP のオーバーヘッドが一部削減されるため、ゲスト オペレーティング システムのパフォーマンスがわずかに向上する可能性がありますが、他の仮想マシンによる同時アクセスは許可されません。「フル パック リンク」は、システム上のすべての DASD に対して定義されることが多く、MAINT ユーザー ID が所有します。これらは、DASD ダンプ/リストア プログラム (DDR) を使用してシステムをバックアップするために使用され、DASD の内容全体がテープまたは別の DASD に正確に書き込まれます。

最新のVMバージョンでは、システムの大部分をSFSにインストールでき、残りのミニディスクはシステムの起動に絶対に必要なものと、ファイルプールサーバーマシンが所有するものに限られます。

VM/SP リリース 6 では、CMS ファイルのストレージ機能を大幅に向上させた共有ファイルシステム[ 18 ]が導入されました。CMS ミニディスクファイルシステムはディレクトリ (フォルダ) をまったくサポートしていませんが、SFS はサポートしています。SFS は、よりきめ細かなセキュリティも導入しています。CMS ミニディスクでは、システムを構成して、ユーザーがディスクに対して読み取り専用または読み書きアクセスを許可または拒否することができますが、個々のファイルに同じセキュリティを適用することはできません。SFS はこの問題を緩和し、パフォーマンスを大幅に向上させます。
SFS はサービス仮想マシンによって提供されます。最新の VM システムでは、通常 3 つのサービス仮想マシンが必要です。VMSERVR は、実際にはファイルを提供しない「リカバリ マシン」です。VMSERVS は VMSYS ファイルプールのサーバーです。VMSERVU は VMSYSU (ユーザー) ファイルプールのサーバーです。[ 19 ]ファイルプール サーバー マシンは、通常、CMS A ディスク (仮想デバイス アドレス 191、ファイル プール構成ファイルを含む)、制御ディスク、ログ ディスク、およびユーザー ファイルを実際に保存する任意の数のデータ ディスクを含む、複数のミニ ディスクを所有しています。
ユーザー アカウントが SFS のみを使用するように構成され (ミニ ディスクを所有していない場合)、ユーザーの A ディスクは となりFILEPOOL:USERID.、ユーザーが作成する以降のディレクトリは、FILEPOOL:USERID.DIR1.DIR2.DIR3同等の UNIX ファイル パスが であるディレクトリになります/dir1/dir2/dir3。SFS ディレクトリは、ミニ ディスク (前述のように、読み取りパスワード、書き込みパスワード、および複数書き込みパスワードしか設定できない場合が多い) と比較して、はるかにきめ細かいアクセス制御が可能です。SFS ディレクトリは、2 人のユーザーが同時に同じ CMS ミニ ディスクに書き込む場合に発生する可能性のある問題も解決します。これにより、ディスクの破損が発生する可能性があります (書き込みを実行している CMS VM は、別の CMS インスタンスもミニ ディスクに書き込んでいることに気づかない可能性があるため)。
ファイルプールサーバーマシンは、密接に関連するファイルシステムであるバイトファイルシステム(BFS)も提供します。BFSは、UNIXスタイルのファイルシステムにファイルを保存するために使用されます。その主な用途は、CMS用のVM OpenExtensions POSIX環境です。CMSユーザー仮想マシン自体は、IUCVメカニズムを介してSFSサーバー仮想マシンと通信します。[ 20 ]


VM の初期の歴史については、記事CP/CMSおよびHistory of CP/CMSで説明されています。VM/370 は CP/CMS の再実装であり、1972 年に IBM の System/370 Advanced Function 発表の一部として提供されました ( System/370シリーズに仮想メモリハードウェアとオペレーティングシステムが追加されました)。VM の初期リリースから VM/370 Release 6 までは1981 年までオープンソースとして提供され、現在ではパブリック ドメインとみなされています。この方針は、有料の VM/SE および VM/BSE アップグレードで 1977 年に終了し、VM/System Product (VM/SP) で 1980 年に終了しました。ただし、IBM は、無料ベース以外のすべてのアップグレードにはライセンスが必要でしたが、既存のコードのソース フォームでの更新を長年にわたって提供し続けました。CP-67 と同様に、仮想マシン内の特権命令はプログラム割り込みを引き起こし、CP は特権命令の動作をシミュレートしました。
VMはIBM社内ではオペレーティングシステムの開発やタイムシェアリングに利用される重要なプラットフォームであり続けましたが、顧客にとってはIBMの「もう一つのオペレーティングシステム」という位置づけでした。OSとDOSファミリーはIBMの戦略的な製品であり続け、顧客にVMの利用は推奨されませんでした。VMを利用した顧客は緊密な協力関係を築き、初期のCP/CMSユーザーのコミュニティサポートモデルを継続しました。一方、このシステムはIBM社内で、他のIBMの取り組みと比較して、このプロジェクトにどれだけの資源を割り当てるべきかという政治的な対立に苦しみました。IBMの営業担当者レベルでは、このシステムの根本的な問題が明らかになりました。VM/CMSは、一定数のタイムシェアリングユーザーをサポートするために必要なハードウェアの量を大幅に削減したのです。結局のところ、IBMはコンピュータシステムを販売するビジネスを営んでいたのです。
メリンダ・ヴァリアンは、VMの予想外の成功を示す興味深い引用をしています。[ 21 ]
VM/370のマーケティング予測では、製品ライフサイクル全体を通してVMが稼働する168はせいぜい1台だろうとされていた。実際、顧客に納入された最初の168はCPとCMSしか稼働していなかった。10年後には、ポキプシーから出荷される大型プロセッサの10%がVMを稼働させるようになり、エンディコットで製造される中型マシンのかなりの割合も同様になった。15年も経たないうちに、VMのライセンス数はMVSのライセンス数を上回ることになる。
XT/370 (後に AT/370) 上で CMS を実行するPC DOS版はVM/PC と呼ばれています。VM/PC 1.1 は VM/SP リリース 3 をベースにしていました。IBM が P/370 および P/390 プロセッサ カードを導入すると、PC で VM/370、VM/SP、VM/XA、VM/ESA を含む完全な VM システムを実行できるようになりました (これらのカードは S/370 および S/390 メインフレームと完全に互換性があり、MVS/ESA、VSE/ESA など、31 ビット時代の S/370 オペレーティングシステムを実行できました)。
IBMは、基本VM/SPリリースに加えて、VM/SP HPO(ハイパフォーマンスオプション)も導入しました。このアドオン(基本VM/SPリリースにインストールされる)は、サポート対象モデル (IBM 4381など)で16MBを超えるストレージ(RAM)の使用を可能にするなど、いくつかの主要なシステム機能を改善しました。VM/SP HPOをインストールすると、新しい制限は64MBになりました が、1人のユーザー(または仮想マシン)は16MBを超えることはできませんでした 。スプールファイルシステムの機能も改善され、システム全体で9900個ではなく、ユーザーごとに9900個のスプールファイルを作成できるようになりました。スプールファイルシステムのアーキテクチャも強化され、各スプールファイルには一意のユーザーIDが関連付けられ、リーダーファイル制御ブロックは仮想ストレージに保持されるようになりました。システムは、(ユーザーディレクトリエントリを使用して)特定のユーザーがベクター機能にアクセスできないように構成することもできます。[ 7 ]
VM/SP リリース 1 以降の VM のリリースでは、マルチプロセッサ システムのサポートが提供されています。System/370 バージョンの VM (VM/SP や VM/SP HPO など) では、最大 2 つのプロセッサがサポートされ、システムは UP (ユニプロセッサ) モード、MP (マルチプロセッサ) モード、または AP (アタッチド プロセッサ) モードのいずれかで動作します。[ 22 ] AP モードは MP モードと同じですが、2 番目のプロセッサには I/O 機能がありません。System/370-XA リリースの VM (VM/XA など) では、より多くのプロセッサがサポートされました。System/390 リリース (VM/ESA など) では、制限がほぼ完全に撤廃され、最新の z/VM システムでは最大 80 個のプロセッサを搭載できます。[ 23 ]定義済みプロセッサの VM ごとの制限は 64 です。
IBMが3081でSystem/370拡張アーキテクチャを導入した際、顧客はMVS/XAをテストしながら、本番環境のMVS/370システムを同じマシン上で稼働させる必要に迫られました。IBMの解決策はVM/XA移行支援ツールで、これは新しいStart Interpretive Execution(SIE)命令を使用して仮想マシンを実行しました。SIEは一部の特権命令を自動的に処理し、処理できない場合はCPに処理を戻しました。後の3090のプロセッサリソース/システムマネージャ(PR/SM)もSIEを使用しました。VM/XAは、最終的にVM/ESAとz/VMに取って代わられるまで、いくつかの製品がリリースされました。
IBMはRSCSネットワークに加えてVTAMネットワークもユーザーに提供しました。VM用のACF/VTAMはMVSおよびVSE上のACF/VTAMと完全に互換性がありました。[ 24 ] RSCSと同様に、VM上のVTAMは専用のGCSオペレーティングシステム上で動作しました。ただし、VMはTCP/IPネットワークもサポートしていました。1980年代後半、IBMはVM/SPおよびVM/XA用のTCP/IPスタックを開発しました。[ 25 ]このスタックはIPv4ネットワークと、さまざまなネットワークインターフェイスシステム(メインフレーム間のチャネル間リンク、またはトークンリングやイーサネットネットワークにトラフィックを中継する専用のIBM RT PCなど)をサポートしていました。このスタックは、単純なラインモード端末エミュレータまたはVT100互換エミュレータ、あるいは適切なIBM 3270端末エミュレータからのTelnet接続をサポートしていました。このスタックはFTPサーバーも提供していました。IBMはVM用のオプションのNFSサーバーも開発しました。初期バージョンはかなり原始的でしたが、最新バージョンははるかに高度になっています。[ 26 ]
また、VM/パススルー機能(または一般的にはPVMと呼ばれる)として知られる4番目のネットワークオプションもありました。PVMはVTAMと同様に、リモートのVM/CMSシステムや他のIBMシステムへの接続を可能にしました。[ 27 ] 2つのVM/CMSノードがチャネル間リンクまたはバイシンクリンク(ダイヤルアップモデムまたは専用線を使用する可能性あり)でリンクされている場合、ユーザーはVMログイン画面で「DIAL PVM」と入力し、システムノード名を入力する(または使用可能なノードのリストから選択する)ことで、どちらのシステムにもリモートで接続できました。あるいは、CMSを実行しているユーザーは、PVMとともにインストールされたPASSTHRUプログラムを使用して、ユーザーセッションからログアウトすることなくリモートシステムにすばやくアクセスできました。PVMは、3x74エミュレーション技術を利用して、VM以外のシステムへのアクセスもサポートしていました。PVMの後のリリースでは、SNAネットワークからの接続を受け入れることができるコンポーネントも搭載されました。
VM はBITNETの基盤となるオペレーティングシステムでもありました。VM で利用可能な RSCS システムは、実装が容易で、ある程度の信頼性を備えたシンプルなネットワークを提供していたからです。VM サイトは、各 VM システム上の RSCS VM が相互に通信することで相互接続され、ユーザーは RSCS を介してメッセージ、ファイル、バッチ ジョブを送受信できました。「NOTE」コマンドはXEDITを使用してダイアログを表示し、そこから電子メールを作成して送信できました。ユーザーが の形式でアドレスを指定した場合user at node、電子メール ファイルは RSCS に配信され、RSCS はそれをターゲット システム上のターゲット ユーザーに配信しました。サイトに TCP/IP がインストールされている場合、RSCS は SMTP サービス マシンと連携して、メモ (電子メール) をリモート システムに配信したり、受信したりすることができました。ユーザーが を指定した場合user at some.host.name、NOTE プログラムは電子メールを SMTP サービス マシンに配信し、SMTP サービス マシンはそれをインターネット上の宛先サイトにルーティングしました。
IBM 内で VM の役割は、ハードウェアの進化によりプロセッサ アーキテクチャに大きな変化が生じたことで変化しました。後方互換性は、オリジナルのSystem/360で導入された基本命令セットを今でも使用しているIBM メインフレームファミリーの基盤であり続けましたが、64 ビットzSeriesを効率的に使用する必要性から、VM のアプローチがはるかに魅力的になりました。VM は、DOS/VSE から MVS に移行するデータ センターでも使用され、メインフレームAIXやLinuxを実行する際にも役立ちます。これらのプラットフォームは、ますます重要になっていきます。現在のz/VMプラットフォームは、VM ユーザーが長年当然のことと考えていた評価を、IBM 内でようやく獲得しました。一部の z/VM サイトでは、1 つのシステムで数千の仮想マシン ユーザーが同時に稼働しています。z/VM は 2000 年 10 月に初めてリリースされ[ 28 ]、現在も活発に使用および開発されています。
IBMおよびサードパーティ各社は、VM上で動作する多くのアプリケーションとツールを提供してきました。例としては、RAMIS、FOCUS、SPSS、NOMAD、DB2、REXX、RACF、OfficeVisionなどが挙げられます。現在、VMはHTTPサーバー、データベースマネージャ、分析ツール、エンジニアリングパッケージ、財務システムなど、メインフレームアプリケーション全般を網羅しています。
リリース6の時点で、VM/370コントロールプログラムには、ユーザーの仮想マシンの定義と制御に関する一般ユーザー向けのコマンドが多数あります。コマンドの小文字の部分は省略可能です[ 29 ]。
VM/ESA バージョン 2 以降、IBM は有料オプション機能OpenEdition for VM/ESA Shell and Utilities Feature [ 30 ]を導入し、CMS の POSIX 互換性を提供しました。際立った機能は、CMS 用の UNIX シェルでした。この UNIX 環境用の C コンパイラは、C/370 または C for VM/ESA によって提供されます。CMS ファイルシステムも標準の VM 共有ファイルシステムも、UNIX スタイルのファイルとパスをサポートしていません。代わりに、バイトファイルシステムが使用されます。SFS ファイル プールに BFS エクステントが作成されると、ユーザーは を使用してマウントできますOPENVM MOUNT /../VMBFS:fileservername:filepoolname /path/to/mount/point。ユーザーは、 を使用してルート ファイルシステムもマウントする必要があり、OPENVM MOUNT /../VMBFS:VMSYS:ROOT/ /その後、 を使用してシェルを起動できます。通常の SFS とは異なり、BFS ファイルシステムへのアクセスは POSIX パーミッション ( chmodおよびchownOPENVM SHELLを使用) によって制御されます。
z/VM バージョン 3 以降、IBM は OpenEdition を z/VM [ 13 ]に統合し、OpenExtensions と改名しました。OpenEdition と OpenExtensions は CMS に POSIX.2 準拠を提供します。[ 31 ] OpenExtensions シェルで実行するようにコンパイルされたプログラムは、標準の CMS 実行可能モジュールと同じ形式で保存されます。3270 端末は対応していないため、 viなどのビジュアル エディタは使用できません。ユーザーは vi の代わりにedまたはXEDIT を使用できます。
1980年代初頭、SHARE(IBMユーザーグループ)内のVMグループは、コミュニティが採用するマスコットまたはロゴを探していました。これは、IBMのMVSユーザーが七面鳥をマスコットに選んだことへの反応でもありました(伝説によると、MVSパフォーマンスグループがMVSの初期に、そのパフォーマンスが問題視されていた時期に七面鳥を選んだとのことです)。1983年、SHARE 60でテディベアがVMの事実上のマスコットになりました。テディベアのステッカーが「親しみやすい古参メンバー」の名札に貼られ、新参者に対して「話しかければフレンドリー」であることを示す目印となりました。クマは人気を博し、すぐに広く普及しました。[ 32 ]クマは、コミュニティに「有益な貢献」をした個人である「VM騎士団」の入会者に贈られました。[ 33 ] [ 34 ]
ハイパーバイザの概念は比較的単純でした。それは、エミュレータ プログラムへの追加と、互換性機能を備えた Model 65 のハードウェア変更で構成されていました。ハードウェア変更により、Model 65 はパーティションに分割され、各パーティションは 0 ~ n のアドレスでアクセス可能になりました。プログラムの追加は、システムのプログラム ステータス ワード (PSW) を独自のものの上に重ね合わせ、システム全体の割り込みハンドラになりました。割り込みの原因となったイベントを開始したパーティションを特定した後、それに応じて制御が移されました。ハイパーバイザは各パーティションごとに専用のI/Oデバイスを必要としたため、I/O構成は通常非常に大規模になり、したがって大多数の用途にとって実用的ではなかった。
実際のプロセッサでは、DIAGNOSE 命令はプロセッサ依存の診断機能を実行します。 仮想マシンでは、DIAGNOSE インターフェイスを使用して、CP に仮想マシンのサービスを実行するように要求します。 仮想マシンが DIAGNOSE 命令を実行しようとすると、制御は CP に戻ります。 CP は、命令のコード部分で提供される情報を使用して、実行すべきサービスを決定します。 このサービスが提供されると、制御は仮想マシンに戻ります。