ESXi仮想マシンでのメモリダンプ取得方法についてのメモ

仮想マシン内のゲスト OS の重大なエラーを特定する (2081131)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2081131

(補足:.vmsnからWindowsコアダンプファイルへの変換方法についてへのリンクもあります)

Windows 仮想マシンで手動メモリ ダンプを生成する (2101987)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2101987

(補足:Windowsのメモリダンプを取得する方法[物理サーバと同様です])

ESX/ESXi 上で仮想マシンをクラッシュさせて診断情報を収集する (2094454)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2094454

他にもNMIのクラッシュダンプを取得する方法もあるようです。
http://norimaki2000.blog48.fc2.com/blog-entry-1301.html

(この場合、NMI割り込みをかけるだけなので、挙動としてはゲストOSに依存します。)

 

AndroidをESXi仮想マシンのスピーカーにする方法

AndroidをPC(ESXiの仮想マシン)のスピーカにしてみたので、そのメモ

ESXiの仮想マシンの場合、通常の方法では、音を鳴らすことができません。
そこで、通常ではない方法の一つとして、AndroidをESXi仮想マシンのスピーカーにする方法を試してみました。

有償ソフトもあるけど、とりあえず試したのは、「WiFi Audio Wireless Speaker」。

このソフトは、PC(Xp,Vista以降、Pluse Audioを使用しているLinux)で出た音声を、同一ネットワーク上にあるAndroidに送信して、Androidのスピーカーから出すことができます。

 

まずは、Android側に上記のアプリをPlayストアからダウンロードして、起動します。

操作は基本的に、WiFi Audio Statusを OFF/ONしかありません。

ONにすると、受信した音が鳴るようになります。
また、画面下にはIPアドレスが表示されます。

 

次に送信先となるWindowsに送信用アプリを以下からダウンロードします。

http://ajeetv.info/wifiaudio/

WiFiAudio-Web

それぞれのOSに合わせた送信用ソフトウェアをダウンロードします。

Windows Vista以降
Linux (with Pulse Audio)
WindowsXP (with Wave Mix/Stereo MIx)

基本的にダウンロードしたファイルを実行するだけです。

WiFiAudio-exe

 

実行してIPアドレスを入れて、Startを押すだけで、PCで鳴らした音がAndroidから流れるようになります。

WiFiAudio-PC

 

ただし、物理PCの場合、物理PCのスピーカーもONになっていると、PC側とAndroid側の両方から音が鳴ります。
Android側からの音は若干の遅延が発生するのでエコー状態になるので
PC側のスピーカの音量を0にするか、ミュート状態にする必要があります。

また、通信時のビットレートは約1.4Mbps程度です。圧縮転送の機能はありませんので、
その場合は別のソフトの有償版を使うしかないようです。

WiFi Speaker(無償版)WiFi Speaker Pro(有償版)
SoundWire (free version)SoundWire (full version)
(両方未検証です)

また、1つのAndroidに複数のPCから音声を転送しようとすると、ノイズが多くなり事実上使えませんでした。

 

で、このオレ的用途ですが、
このアプリを使えばESXi内の仮想マシンから音声を出力することが出来ます。

ただし仮想マシンにAudioデバイスがないと、PC側アプリでStartできませんので
何らかのAudioデバイスを仮想マシンから認識させなければなりません。

物理的なデバイスをつけないという条件であれば、
ESXi仮想マシンのvmxファイルに隠しパラメータであるHDAudioをつける記述を行うか、
仮想Audioデバイス(XPの場合はTiVSound。Windows 7以降であればNetDuetto付属の仮想デバイスがお勧め)をインストールする必要があります。

上記の仮想的なデバイスは、OSからはAudioデバイスがあるように見えますが、実際に音を出すことは出来ません。ただし、Audioデバイスがないと動かないようなソフトウェアがこれをつけると動くようになります。
今回のWiFi Audio Wireless Speakerもこれで動くようになります。

 

ESXiの仮想マシンから音を出す方法は、ほかにも色々あるのでそのうちまとめる予定です。

ESXiでThinディスクをシュリンクする場合のメモ

ESXiでThinディスクをシュリンクする

ESXiで、Thinディスクを作成して仮想マシンにマウントした場合、
ファイルを作成するに従ってVMDKのサイズが増えていきますが、
ファイルを削除しても、VMDKのサイズは減りません。

VMDKファイルのサイズを小さくすることをシュリンク(shrink)と呼ぶこともあります.

 

ESXの場合、基本的には、以下の2つの処理をおこなうことでシュリンクすることができます。

・SDeleteで仮想ディスク内の過去使用したことがあるが、現在未使用領域のNullクリア

SDelete -z ドライブ文字

・仮想マシンを停止して、vmkfstoolでNullブロックを削除する

vmkfstools -K /path/to/disk-name.vmdk

 

注意点としては
・Nullクリアする段階でThinディスクは事実上Thickディスクになります。
つまり、Nullクリア完了時点でVMDKサイズに割り当てした最大容量にまでおおきくなるので、その分の空き容量がデータストア上に必要です。

・スナップショットやリンククローンを使用している場合は、シュリンクできません。

ESX3.5の頃は、Nullクリアした上でThinでStorage vMotionすればシュリンクされたような気がするけど、
ESX4.0以降では、同じブロック間のデータストア間のStorage vMotionだとNullは回収されない模様。別のブロックサイズであれば、回収されるようです。

SDelete & vmkfstoolsの場合は、仮想マシンを停止しなければいけないで、どうしても仮想マシンON状態でやりたい場合は、SDelete & Storage vMotion(別ブロック長間 or FC,iSCSI,DAS<->NFS で移動)もひとつの手かと。

 

(今回の参考)

ESXi/ESX によってホストされた仮想マシン上の VMware Tools 圧縮オプション (2094653)

http://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2094653

Storage vMotion でシン ディスクを移行したとき null ブロックが回収されない (2092768)

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2092768