よく考えたら当たり前?

投稿者名: 
Aqualight
ホストOS: 
N/A
ゲストOS: 
N/A
本文: 

 読者の皆様 こんにちは、こんばんは。 Aqualight です。
今回の投稿は常識とされる事柄の検証(再確認)とも言える内容です。
ご存知の仮想マシンユーザーの方々は読む必要は無いかもしれません。
ですが超基本的な内容ですので、うっかり失念してしまう事もあります。 (灯台下暗し)
まぁ、それでもシステム側で何らかのエラー・メッセージが出ますので、それが理解できれば気付く内容ですが。

 

 事の起こりは「質問フォーラム」での問い合わせです。

「サーバー機にて VirtualBox を運用しようとしたが、VirtualBox をアップデートしたら仮想マシンが動作しなかった。」

というものです。
そしてエラー・メッセージには「ビデオエラー:描画レクタングルが多すぎ」という物でした。

 聞けば、そのサーバー機には 16 MG しか V-RAM が搭載されていません。
CPU 自体は Intel core i3 または Xeon が選択可能でメモリーもそこそこ搭載されています。
利用可能OSも Windows 7 ~10 の他に Linux もOK というまさにサーバー専用機です。
そして V-RAM の量から、用途は CGI サーバー DBサーバーなど GUI を必要としない サーバー構成要素としての
マシンだった訳です。

 障害の原因は Windows ホストのレジストリに障害発生時の設定がそのまま残っていて
VirtualBox を再インストールしても同じ障害が発生するという物でした。
ですが今回の投稿は、その質問者様を どうこうする話ではありません。
むしろ、これを書くネタを提供して頂いた事に感謝です。
そして今回はハードウェアに関連した純粋に VirtualBox の設定に関する話です。

今どき V-RAM 16 MB で良いのか?

 まず この話からです。
16 MB と言えば Windows 95 時代の V-RAM 量です。
SVGA ( 800 x 600 pix) の 16 bit カラー が一般的とされた時代で、ゲームには不適で事務機としての仕様です。
このマシンは V-RAM が 16 MB である事以外には仮想マシンを遜色なく動作可能なスペックです。
それがサーバー機というものです。
このサーバー機の主たる運用目的は画面表示ではなく、ユーザーに機能を提供するものなのです。
その V-RAM は 動作モニター用で、テキスト画面、GUI であっても文字情報中心の表示用途向けです。
絶対に3Dゲームなど動作しません。 決定的に V-RAM が不足だし、何より GPU を搭載していないからです。

仮想マシンはホストから見れば単なるアプリ

 アプリはOSだけでなくハードウェアにも依存します。
MS製品で顕著なのが「OSをバージョンアップしたら アプリに不具合が出た/動作しない。」です。
これとは別に GPU 非搭載のマシンで 3D系ゲームは動作するでしょうか?
あるゲームはソフトウェア・エミュレーションで対応し、動きが紙芝居状態だったり、
あるゲームは最初からハードウェア非搭載を理由に動作しなかったり…
これは言い換えると「アプリがハードウェア機能を要求しても、それが無ければ動作できない」という事です。
現実に GPU が無かったり、画面描画に必要な V-RAM が無かったり…という事です。
 アプリが要求するハードウェア資源が無いと、アプリは満足に動作しない(出来ない)訳で、
それは VirtualBox でも同じ事です。
仮想マシン自体はホストのメインメモリーを主に要求しますが、それ上で動作する仮想OSが
多大な V-RAM を要求すると、どうなるでしょう?
ホストは 3Dゲームが出来ない仕様のグラフィック・アダプターです。
ゲスト側に V-RAM を大量に用意して ソフトウェア・エミュレーションにて 画面データまでは作れます。
けれどもそれを描画するのはホストのビデオ・アダプターなのです。
それを図解すると以下となります。

 仮想マシンの V-RAM は メイン・メモリー同様にホストの メイン・メモリー上に確保されます。
V-RAM の内容は表示画面データと画面構成用チップ画像、描画位置、ウィンドウ内コンテンツ が主な情報で、
画面全体でのアニメーションを行うため、少なくとも画面サイズで決まる画面バッファー・サイズの4倍は必要とされ、
次いで描画チップなどで利用されます。

 フルHD 画面だと、32 bit フルカラー(RGB輝度各 8 bit + 透過度 8 bit の 32 bit カラー) の  1920 x 1080 pix です。
1画面に必要なバッファーは  1920 × 1080 × 4 byte ⇒ 8294400 byte ⇒ 約 8 MB です。
V-RAM 16 MB のサーバー機に フルHDモニターを接続しても 2画面分のビデオメモリーです。
これでは表示すら満足に出来ません。
V-RAM 16 MB でストレス無く運用可能な画面サイズは XGA (1024 x 768 pix)程度で 3D ゲーム不可は当然でしょう。
色深度も 16 bit カラー(RGB輝度各 5bit + 透明フラグ 1bit )が上限で 1画面 約 1.5 MB です。

 

 という事で、本テキストの最重要事項です。

仮想マシンの V-RAM 量設定はホストの V-RAM 以下にする

こういう事です。

 で…
V-RAM が 16 MB しか搭載されていないマシンでは Windows 系ゲストは ほぼ全滅かもしれません。
と言うのは、便宜性から Guest Additions をインストールするからです。

 仮想マシンのビデオ・アダプターは仮想ハードウェアです。
この仮想ビデオアダプタは Guest Additions によってインストールされるからです。
何が問題なのかと言うと、ゲストOS如何に関わらず同じビデオアダプタがインストールされるという事です。
つまり、仮想マシンの設定で 3D アクセラレーションを「使わない」という設定にしても、その機能自体は既に組み込まれていて、
ただ「利用しない」というだけで暗黙に利用されている可能性があるという事です。
ゲストOSによってデフォルト値に違いはありますが、ホスト搭載の V-RAM 以上に設定が可能なのが その証拠です。

 V-RAM はメイン・メモリー上に確保されます。
(これは GPU 搭載型 CPU や ビデオアダプター搭載マザボも同様ですが)
仮想マシンゆえ V-RAM も上限いっぱい確保可能ですが、生成された画像データはホストの V-RAM に転送されます。
ホストの V-RAM が小さければ、当然入りきらない訳でエラーになります。

 このような理由から上記赤字強調した事が言える訳です。
ではなぜ Windows 系はほぼ全滅なのでしょうか?
それは Guest Additions は Windows Vista 以降、暗黙に 3D アクセラレーションを利用する設定のため、
ホストで運用可能な最低限の V-RAM を要求するからです。
まして Vista と 7 では Aero UI を実現するため強制的に 3D機能が利用され、 それは 8 や 10 でも同じだからです。

 では  V-RAM 16 MB のマシンでは仮想マシンは利用できないのでは? という疑問が出ます。
そんな事はありません。  このようなサーバー機でも VirtualBox は動作しますが制限はあります。
まず V-RAM を ホストの容量以下に設定しておく事です。
次に 3D アクセラレーション を排除するため GuesuAdditions をインストールしない事です。
(これではマウスがキャプチャされ使い勝手が悪くなりますが)

 実際、そんなマシンでは最新OSのデスクトップなど利用できません。
すぐに V-RAM 不足が発生するからです。
元々ホストにしたハードウェアの利用目的はサーバー内部処理を行うための物です。
ならば クライアントOSではなく サーバーOSを運用すべきかと思われます。
代表的な部分では Linux の Ubuntu サーバーです。
これは CUI による操作がメインで V-RAM は殆ど利用しません。
Windows サーバーは GUI なので V-RAM を大量に必要としますが、画面サイズを小さくし、
色深度を 256 色などにすれば利用可能でしょう。
どちらのOSでも V-RAM をホストの量以下にするのが原則ではありますが。

 最後に そもそもの話です。
VirtualBox はクライアントOS上で仮想マシンを稼働させるツールと言えます。
それは Guest Additions を考察すれば分かることです。
Guest Additions の目的はデスクトップでの利便性であり、デスクトップ自体がクライアントOSの象徴だからです。
サーバー(特に内部サーバー)はデスクトップなど不要です。 ユーザーに対するサービスを供給する他に
ログさえ残せれば御の字です。
つまり Guest Additions はクライアントOS向けの仕様であり内部サーバーには不要な機能です。
この点で VirtualBox 仮想マシンはクライアント向けツールという訳です。
だからサーバー上で動作は可能でもサーバー機能を拡張する Guest Additions が導入されない限り
不便とも言えそうですが、それはユーザーが GUI によるデスクトップに慣れきっているからで 運用面では無駄その物だからです。

 

 という訳で、今回の投稿は V-RAM というハードウェアに焦点を当てたものでした。
この辺、 VMware の hyper Server とは異なった部分なので本来は比較したい部分ですが、
その比較などは別な機械に公開したいと思います。
次回、乞うご期待! (笑)

 

 

コメントを追加

Filtered HTML

  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br />
  • 行と段落は自動的に折り返されます。

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
スパム投稿防止の為以下のテキストを入力してください
Image CAPTCHA
Enter the characters shown in the image.