技術系なぶろぐ
VMware Player上の仮想マシンからホストにリモートデスクトップ接続する
リモート天体撮影するということ
リモートデスクトップの話ですが、起源は天体写真のための環境のお話です。
うちの天体撮影はこんな環境でやってます。
右上の望遠鏡と、そこにつながる小型パソコン・ルータをベランダに設置します。望遠鏡というか赤道儀の制御や、カメラのコントロール、撮影データの取り込みするため、シリアルケーブルやUSBを繋ぐ小型パソコンを望遠鏡の近くに置く必要があります。あ、別に小型でなくてもいいですけどね?
で、その小型パソコン上でステラショット2を動かすわけですから当然、小型パソコンのGUIを操作する必要があります。どうするか?コンソール端末からリモートデスクトップ接続します。
RDP接続なわけですから、とーぜんLAN経由ですね。なんでこんなことするのか?望遠鏡はベランダに置かないといけません。ベランダは夏暑くて、冬寒いです。でもコンソール端末はネットワークさえつながれば、どこへ置いても問題ありません。コタツの上でも、エアコンが効いた室内でも。
天体観測の最大の難点は屋外で暑い!寒い!!虫がでる!!!と屋外だからこその居住性。それを屋内からできるようになるのです。
リモートデスクトップとステラショット2の問題
さて、ここで問題がひとつ。ステラショット2のバグというか制限事項です。
これが普通にステラショット2を起動した状態。何も問題はありません。正常な状態です。でこの状態にしたまま、リモートデスクトップを切断(ログオフではなく、RDPの「切断」)をして、再度RDPを接続します。
すると、
この通り、星図が表示されなくなります。赤道儀制御とか撮影は問題なく動くんですが、星図だけが消えてしまうという。
アストロアーツ社に確認したところ、不具合として認識はしてるんだけど、DirectXの不具合だそうで、そう簡単には直らない制限事項だそうです。
まぁ、MSが原因なら、当分は直らんわな・・・・
んじゃどーするか?RDPを切らなければいい!そりゃそーだわな
だけど、なんとかしたい。だってコンソール機を移動したり、ステラショットに自動撮影させて、その間はコンソール接続を切ったりしたいわけですよ。
じゃあ、どうする?
こうします。リモートデスクトップ接続を2段階にして、ステラショット2からすると、セッションが切れてないように見せかけるわけです。
仮想デスクトップはどうやるか?VMware Workstation Playerです。せっかくパソコンがあるんですから、そこにVMware Player入れて、Windowsを起動してやれば、踏み台用の仮想デスクトップができる。完璧!と考えたわけです。
が・・・・・・
VMware Player上の仮想デスクトップからホストにRDP接続する
ここで問題がでます。
こんな風に、ステラショット2と、VMware Player上でWindowsを起動します。マシンリソースの都合でWin7を使ってます。サポート切れ?そうですね?はい。
そして、仮想デスクトップにRDPで接続して、さらに仮想デスクトップからホストにRDP接続します。
すると、
こんなことになっちゃいます。分かりにくいでしょうけど、Koronaというのがホストマシン、Hikari が仮想デスクトップです。ちなみに、天文関連のマシンのホスト名はほかにOrihime、Sayaが居ます。天文関連マシンですからね、「見上げてごらん、夜空の星を。」から名前をもらってます。
どうなるかというと、仮想デスクトップからホストへのRDPが安定しません。仮想デスクトップも動作が異常に遅くなり、まともに操作できなくなります。
なぜなのか?どうやらRDPに原因があるようです。RDPのセッションが繋がった瞬間から動きがおかしくなります。また、VNCを使って同じことをしても問題が出ません。ホストマシン上で別ユーザでVMware Playerを起動した場合も問題は出ません。
さーてどうしたもんか。そうだ、Windows のサービスとして仮想マシンを起動したら?
というわけで、サービスとして登録して起動します。ポイントはsexeを使ってサービス登録すること、登録したサービスを Local Administrator 権限で起動すること。なんでかよく分かりませんが、Local System アカウントではうまく動きませんでした。
あと、Shutdown時の注意。仮想デスクトップにログインしてShutdownをしてから、ホストをSutdownすること。ホストShutdown時に仮想マシンもShutdownしてくれるといいんですが、どうやらPower Downをしちゃうようで、仮想マシンが壊れることがあります。
VMware Player の起動が異常に遅くなったのでライブラリを掃除してみた
VMware Player です。無償版のお話です。
注意:独自研究の結果です。マネする場合は自己責任で!
いつのころからか、VMware Playerを起動すると異常に時間がかかるようになりました。
こんな感じで、「応答なし」の状態が数分続きます。
ただでさえ、この後にOSの起動があって、それなりに時間かかるんだから、こんなところで止まって欲しくない。なんでここで時間かかるんぢゃ??と思ってたんですが・・・
原因はこれ
スクロールバーの長さに注目。仮想マシンおおすぎ!!
しかも、vmx に接続できない仮想マシンもちらほら。
どーやら、VMware Player起動時にライブラリに登録されてる全仮想マシンのvmxファイルを読んで、ライブラリを再構築しようとしてるみたい。そんな中で開けないvmxがあったり、そもそも開くべきvmxが多かったら、そりゃぁ時間かかりますわな。
なわけで、ライブラリを整理しましょう。GUI画面で一個づつ「ライブラリから削除」をやっていってもいいんですが・・・・仮想マシンを1個削除すると、そのたびにライブラリ画面の再構築をしようするらしく、仮想マシンを1台登録解除するたびに数分かかる。やってられっか!
というわけで、仮想マシンライブラリの一括削除を考えます。
答えは、このファイル
C:\Users\<USERNAME>\AppData\Roaming\VMware\preferenceini
このファイルを編集します。
こんな大変なことになってるファイルをばっさりと、
こんな感じにばっさりと。
すると、
あっさり起動します。
一時ファイルの作成中にエラーが発生しました とか言い出して、仮想マシンが起動しない
仮想マシンをvMotionしようとしたら、一般的なエラーとか意味不明なエラーを出して移行できなくなった。
なんじゃ??と思って、VMをShutdownして、もう一回起動。そしたら、こんなエラーががががが
とーりあえず、仮想マシンをインベントリから削除して、再登録してみる。結果変わらず。
構成ファイルと同じところにできてる、vmware.log を確認してみる。なにやら、こんなエラーメッセージが
vmx| I120: FileIO_AtomicTempFile: Failed to create temporary file, The file already exists (3). errno: 17
vmx| I120: Msg_Reset:
vmx| I120: [msg.configdb.failcreatetemp] An error occurred while creating temporary file for /vmfs/volumes/5f883c54-1bd774f2-f870-f8db88fbe1d4/***/***.vmx: The file already exists
一時ファイルの作成に失敗とか言ってる。
VMware ってGUIに表示されるエラーと、本当のエラーが食い違ってることがたまにあって、GUIのエラーメッセージはあまり信用しないほうがいいんですが、どうやら今回は一致している模様。
さーて、一時ファイルと言ってもなぁ・・・・・
とりあえず、構成ディレクトリを見てみよう。
ん・・・??なんだこれ??
※ ホスト名が見えるところは、念のためマスクしてます
**.vmx~ ファイルってなんぞや?それがないって言ってるけど、ls にもともと出てないんだから、そりゃファイルはないわな?なんでわざわざ No Such file or directory と言う??
ただ、どうやら .vmx~ っていうファイルは、VMware のロックファイルで使うっぽい。となると、「ファイルがすでにあるから、一時ファイルが作れねぇ!」っていうメッセージと整合する。。。。ような気がする。
とーりあえず、これが原因かな?ってことで、対処してみる。
とはいえ、存在しないと言ってるファイルなんてどーやって消すんだよ?
消せないなら、そんな亡霊ファイルが見えなくなりゃそれでいいだろ。ってことで、こんな手順
- 仮想マシンをVMwareのインベントリから削除(決してディスクから削除ではない)
- ESXにSSHでログイン
- 仮想マシン構成ファイルのディレクトリ名を変更
- 仮想マシン構成ファイルディレクトリを新規作成
- 旧ディレクトリから、vmxとかvmdkとかその他仮想マシンを構成するファイルを新ディレクトリに移動
- 新ディレクトリに置いたvmxファイルを使って仮想マシン登録
- 仮想マシン起動!
無事起動しました。
今回問題になった仮想マシンが、iSCSI のファイルシステムにおいてたので、ESX 上の Shell で操作してます。NFSボリュームだったら、ほかのマシンからマウントして操作するとか、もうちょっとやりやすかったかも。
NetCommonsに切り替えました
ぶろぐを Movable Type から NetCommons に切り替えました
今までのブログはこっち