コンピューター好きのブログ

主にコンピューター・ラズパイと電子工作・オーディオ関連の記事を書いています。

KVMホストのNFSにゲストのVMから参照する方法

我が家はRed Hat Enterprise Linux 8 (RHEL8)のPCをファイルサーバーにしています。

そして、このサーバー上でKVMの仮想マシンを複数起動しています。

今回、この仮想マシン上のUbuntu 20.04 LTSからホストのNFSサーバーにアクセスする必要があったのですが、ファイヤーウォール周りで若干はまったので設定手順と合わせてご紹介したいと思います。

ホスト側(RHEL8)のNFSの設定

1.ホストのRHEL8で下記のコマンドを実行し、NFSサーバーをインストールします。

$ sudo yum install nfs-utils

2./etc/exportsを編集し、NFSとして公開するディレクトリを記載します。

下記では /home/test を 192.168.122.0/24(KVMの内部ネットワーク)に公開します。

/home/test 192.168.122.0/24(rw,no_root_squash)

3.下記を実行して/etc/exportsに指定したディレクトリをエクスポートします。

$ sudo exportfs -a

 4.下記を実行してエクスポートした内容を確認します。

$ sudo exportfs

/home/test
                   192.168.122.0/24 

ホスト側(RHEL8)のファイヤーウォールの設定

今回、ここでlibvirtゾーンではなくpublicゾーンの設定を行ってしまったため、はまりました。KVMの内部ネットワークなのでlibvirtゾーンが対象になるのでした。。

1.下記を実行してlibvirtゾーンでnfsが使用するポートを穴あけします。

 sudo firewall-cmd --permanent --zone=libvirt --add-service=nfs

2.下記のコマンドで穴あけの設定を反映します。

 sudo firewall-cmd --reload

クライアント側(Ubuntu 20.04 LTS)のNFSの設定

1.下記のコマンドでNFSクライアントをインストールします。

$ sudo apt-get install nfs-client

2.下記のコマンドで /mnt/nfs にホストのNFSディレクトリをマウントします。

$ sudo mount -t nfs -o vers=4 192.168.122.1:/home/test /mnt/nfs 

3.下記のコマンドでmountできていることを確認します。

$ mount 

 <省略>

192.168.122.1:/home/test on /mnt/nfs type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,…

4.mount できたら /etc/fstab に下記を記述します。

192.168.122.1:/home/test /mnt/nfs nfs defaults 0 0 

 

以上で完了です。

私が調べた限り、ホスト-ゲスト間でNFSを使用するときにファイヤーウォールの設定をどうするかについて記載された情報を見つけられませんでした。もし同じ場所ではまっている方がいたらお役に立てると幸いです!

VirtualBoxの仮想マシンにVPN環境を構築してみました

以前、SoftEtherVPNを使用してWindows10上にVPNサーバーを構築した記事を書きました。

www.toomath.net

このときは物理マシン上に構築しましたが、VPNサーバーのために物理マシンを1台用意するのはもったいないです。

そこで、常時起動のファイルサーバーで仮想マシンを起動し、そこにVPNサーバーを構築することにしました。

 

基本は仮想マシンにWindows10とSoftEtherVPNをインストールして設定するのみですが、はまりポイントがあったので顛末をご紹介したいと思います。

仮想環境を作るPCの紹介

先に書いた通り、我が家には常時起動のファイルサーバーがありまして、そこに仮想環境を作ります。

このサーバーのスペックは以下になります。

  • CPU:Core i7-2600K
  • メモリー:DDR3 16GB
  • ドライブ:SSD 120GB + HDD 2TB × 4 + USB HDD 4TB
  • OS:CentOS 7 x64

ファイルサーバーとして使うだけなら完全にオーバースペックです。性能も電気代も。。(^^;)

しかし、DockerでWebサーバー用のコンテナを起動したり、Pythonでプログラミングをしたりしているのでまぁよいかなと思っています。

仮想環境ソフトはOracle VirtualBoxを選択

ファイルサーバーのOSはCentOSなのでLinuxで動く仮想環境ソフトを使います。

ネットワークはブリッジ接続でいきます。

なんとなくVPNサーバーにするなら独立したIPアドレスを持たせた方がよいと思いまして。

 

最初、仮想環境ソフトは仕事でも使っているKVMで行こうと思っていました。しかし、仮想マシン上のWindowsがネットワークに接続できません。

色々いじっていたら少しの間だけ接続できたのですが、ネットワークカードを変えたらまたつながらなくなり、その後どうやっても接続できず。半日費やしてもできないので諦めました。

 

しょうがないので代わりにOracle VirtualBoxを使ったらさっくりブリッジ接続が使えました。KVMでできなかったのはなんだったんろう。。謎です。まったく同じブリッジデバイスを使っているんですが。。

仮想マシンでVPNサーバーを構築するときに気を付けること 

SoftEtherVPNの仮想DHCPサーバーをむやみに使用しない

仮想マシンでのWindows10やSoftEtherVPNサーバーのインストール・設定は迷いなくできましたが、なぜかVPNクライアントから接続できません。DHCPでVPNクライアントにIPアドレスが割り振れないみたいです。

SoftEtherVPNサーバーのログに下記のようなエラーが出力されます。

DHCP サーバーからの IP アドレスの取得に失敗しました。PPP の通信を受諾するためには DHCP サーバーが必要です。仮想 HUB の Ethernet セグメント上で DHCP サーバーが正しく動作しているかどうか確認してください。DHCP サーバーを用意することができない場合は、仮想 HUB の SecureNAT 機能を用いることもできます。

上記のログに「SecureNAT 機能」があるよ!とあるので本機能の「仮想DHCPサーバー」を使ったところ、VPNクライアントにIPアドレスが割り振られるようになり、接続できました。

しかし、この「仮想DHCPサーバー」が他のローカルネットワーク上のPCにもIPアドレスを割り振ってしまい、ルーターの割り振るIPアドレスが上書きされておかしな状態になってしまいました。

 

我が家のローカルネットワークはルーターのDHCPサーバーが割り振る192.168.0.xのIPアドレスを使うようになっています。

これが「仮想DHCPサーバー」が割り振った192.168.30.xに変更されたため、各デバイスがルーターを通じてインターネットにつながらなくなってしまったのです。

 

「SecureNAT機能」を有効にする画面で下記のように記載されている通り、軽い気持ちで有効にすると痛い目に合うかもしれません。

SecureNAT機能はシステム管理者やネットワークに関して詳しい知識のある方向けの機能です。

私は仮想マシンが動いているファイルサーバーをシャットダウンし、ルーターを再起動して復旧しました。焦った~(;´Д`)

仮想マシンネットワークのプレミスキャスモードを設定する

DHCP問題の解決策をネットで調べたところ、どうやら仮想マシンネットワークのプレミスキャスモードを有効にしないといけない模様。

VirtualBoxの場合下記の画面で設定します。

「プレミスキャスモード」を「すべて許可」に設定しました。

VirtualBoxのプレミスキャスモードの設定

VitualBoxのプレミスキャスモードの設定

これでVPNクライアントにIPアドレスが割り当てられるようになりました。めでたし、めでたし。

 

以上、仮想マシンにSoftEtherVPNをインストールしてVPN環境を構築したお話でした。

 

KVMにおけるVT-dの効果を検証してみました

KVMで仮想マシンを動かすとき、Intel CPUの場合、仮想化支援機能VT-xは必須です。

一方、I/O処理の仮想化を支援するVT-dは必須ではありません。

 

VT-dの有無が性能に影響するのか気になったため、検証してみることにしました。

 

 

検証方法

ホストPC(NEC VersaPro VB-G)は、BIOSでVT-dを有効/無効を切り替えられます。

そこで、VT-dが有効なパターン、無効なパターンのそれぞれにおいて、ゲストOSのWindows 10でWindowsエクスペリエンスインデックスCrystalDiskMarkによるディスク性能を測定し、比較してみました。

WindowsエクスペリエンスインデックスとCrystalDiskMarkの両方とも、数回測定して得られた安定値を採用しました。

なお、VT-dを有効にしたときは、grubのカーネル起動オプションに intel_iommu=on を追加し、dmesgに以下の出力があることを確認しました。

[ 0.000000] DMAR: IOMMU enabled

 

 ホストPCのスペックは以下です

CPU:Core i5-3340M

メモリ:DDR3-12800 4GB

ドライブ:2.5インチHDD WDC WD3200LPVT

OS:Ubuntu 18.04 LTS

 

検証結果

Windowsエクスぺリエンスインデックス

下記の通り、全く同じ測定値となりました。

VT-d有効

CPUScore : 8.6
D3DScore : 9.9
DiskScore : 5.9
GraphicsScore : 2.9
MemoryScore : 5.5
TimeTaken : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel : 2.9
PSComputerName :

VT-d無効

CPUScore : 8.6
D3DScore : 9.9
DiskScore : 5.9
GraphicsScore : 2.9
MemoryScore : 5.5
TimeTaken : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel : 2.9
PSComputerName :

 

CrystalDiskMark

測定には、CrystalDiskMark 6.0.1 x64 を使用しました。VT-dが無効の方が性能が良いように見えます。

VT-d有効

* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

Sequential Read (Q= 32,T= 1) : 697.787 MB/s
Sequential Write (Q= 32,T= 1) : 102.366 MB/s
Random Read 4KiB (Q= 8,T= 8) : 24.353 MB/s [ 5945.6 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 23.781 MB/s [ 5805.9 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 24.173 MB/s [ 5901.6 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 23.674 MB/s [ 5779.8 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 20.841 MB/s [ 5088.1 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 20.383 MB/s [ 4976.3 IOPS]

Test : 1024 MiB [C: 60.4% (38.1/63.0 GiB)] (x5) [Interval=5 sec]
Date : 2018/10/22 22:20:26
OS : Windows 10 Professional [10.0 Build 17134] (x64)

 

VT-d無効

* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

Sequential Read (Q= 32,T= 1) : 737.491 MB/s
Sequential Write (Q= 32,T= 1) : 106.258 MB/s
Random Read 4KiB (Q= 8,T= 8) : 24.829 MB/s [ 6061.8 IOPS]
Random Write 4KiB (Q= 8,T= 8) : 24.156 MB/s [ 5897.5 IOPS]
Random Read 4KiB (Q= 32,T= 1) : 25.629 MB/s [ 6257.1 IOPS]
Random Write 4KiB (Q= 32,T= 1) : 24.529 MB/s [ 5988.5 IOPS]
Random Read 4KiB (Q= 1,T= 1) : 22.195 MB/s [ 5418.7 IOPS]
Random Write 4KiB (Q= 1,T= 1) : 19.937 MB/s [ 4867.4 IOPS]

Test : 1024 MiB [C: 60.1% (37.9/63.0 GiB)] (x5) [Interval=5 sec]
Date : 2018/10/22 23:32:01
OS : Windows 10 Professional [10.0 Build 17134] (x64)

 

考察

Windowsエクスペリエンスインデックスは、VT-dの有効・無効で差はありませんでした。CrystalDiskMarkは、予想に反してVT-d無効時の方が少し性能が良い結果となりました。KVMの場合、VT-dを有効にしてもディスク性能が良くなることはないのかもしれません。

 

Windows 10マシンのハードウェア構成を変えたらライセンス認証が通らなくなったときの対処方法

Windows 10の仮想マシンをKVMからVMware Workstation Playerに移行したところ、Windowsのライセンス認証が通らない事象が発生しました。

 

KVMからVMwareに変わったことでハードウェア構成が大きく変わり、ライセンスを使い回していると判断されたようです。KVMのイメージファイルは消してしまったのでVMwareと同時に使うことはないのですが、Windowsはそんなの分かりませんもんね。

 

でも大丈夫。以前のマシンでMicrosoftアカウントを使っていれば、再認証ができることを知っていたので、落ち着いて「このデバイス上のハードウェアを最近変更しました」から進んでみると、KVMのときの情報(QEMUなんとか)が表示されました。

よしよし、これを選んでOKすればよいはずと思ったら。。駄目です。新しいライセンスを買えと言われます。

 

おかしいと思ってMicrosoftの情報を見てみたら、「ハードウェアの変更後、Windows 10 のライセンス認証をもう一度行うことができる場合があります。」と書いてあります。

"もう一度"ってことは、再認証できるのは1回だけ?

実は、KVMに入れたWindows 10のライセンスは、他のマシンで使っていたもので、一度再認証をしたことがあったのです。

 

それならしょうがない、電話するか~と思ったら、最近のWindows 10は電話認証が出来なくなっている模様。

どうすればいいんだ~と天を仰いだ時、ふと思いつきました。

今回インストールしたWindows 10はWindows 8(パッケージ版)からアップデートしたものだから、Windows 8から入れなおせば、電話認証ができるのでは?

 

早速、VMwareの仮想マシンにWindows 8をインストールしたところ、「プロダクトキーは既に他のPCで使われています。別のキーを試すか、新しいキーをお買い求めください。」のようなことを言われましたが、これは想定内。

「カスタマーサポートへの問い合わせ」から進むと電話番号が表示されたのでかけてみました。

自動応答では対応できなかったので、オペレーターの方につないでもらい、なんとかライセンス認証を行うことができました。

ついでに、このままWindows 10にアップデートしても大丈夫かについても聞いてみましたが、過去にWindows 10にアップデートしたことがあればOKとのこと。

良かった~。

この記事が私のような境遇の方の参考になれば幸いです。

 

以下、VMwareでWindows 8を動かしている画面です。(モニター画面をスマホのカメラで撮ったのでモアレがひどくてすみません。)

 

f:id:toomath:20180617150651j:plain

 

KVM上のWindows 10の性能向上を目指してみました(Windows 10仮想マシンの性能検証編)

以前、KVM上にWindows 10をインストールしたところ、満足のいく性能が出なかったため、ホストPCをCeleron J1900 + Ubuntu 16.04 LTSからCore i5-3210M + Ubuntu Linux 18.04 LTSに変更してリベンジを試みました。

 

体感的に速くなったと感じますが、今回は数値で性能を確認するため、Windows 10に始めから入っている性能計測アプリで、KVM上のWindows 10のWindowsエクスペリエンスインデックスを測定してみました。

 

 

測定方法・結果

リモートデスクトップ経由だと測定できないので、ローカルで測定を行います。

まず、管理者権限のコマンドプロンプトを開き、下記を打ち込んで実行します。

(コマンドプロンプトはスタートメニューの「Windowsシステムツール」にあります。コマンドプロンプトのアイコンを右クリック→「その他」→「管理者として実行」で開きます。)

winsat formal -restart clean

すると、コマンドプロンプト上になにやらワラワラと出ますが、終わるまで放っておきます。10分もかからないと思います。

 

次に、Windowsエクスペリエンスインデックスを表示するため、Windows PowerShellを開き、以下のコマンドを打ち込んで実行します。

(Windows PowerShellは、スタートメニューを右クリックするとメニューに表示されます。管理者権限である必要はありません。)

Get-CimInstance Win32_WinSat 

 すると、以下のような感じで結果が表示されました。

CPUScore : 8.5
D3DScore : 9.9
DiskScore : 5.9
GraphicsScore : 2.7
MemoryScore : 8.5
TimeTaken : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel : 2.7
PSComputerName : 

 

考察

私がいつも使っている NEC VersaPro VB-F の物理PC上のWindows 10の性能と比較してみると、以下のようになりました。

 (本当は前のホストPCのKVMで性能を測定し、それと比較すべきですが、すでに環境がないためご容赦を。)

 

  CPU D3D Disk Graphics Memory
KVM上のWindows 10 8.5 9.9 5.9 2.7 8.5
物理マシン上のWidnows 10 8.7 9.9 8.15 5.1 5.9

 

各マシンのスペックは以下です。

・KVM

 CPU   2コア割り当て(ホストPCのCPUはCore i5-3210M)

 メモリー 4GB割り当て(ホストPCはDDR3-1333)

 ドライブ HDD(ホストPCは2.5インチ 5400rpm HDD)

 

・物理マシン

 CPU          Core i5-3320M 2コア2スレッド

 メモリー 4GB DDR3-1600

 ドライブ SSD

 

CPUD3D(Direct3D)は物理マシンと比べて遜色ないですが、DiskGraphicsはかなり遅いです。

おそらく、DiskはSSDとHDDの違い、Graphicsは直接ビデオメモリに書き込めるかどうかの違いだと推測します。

MemoryはなぜかKVM上の方が速いみたいですが、同じ4GBですし、物理マシンの方が若干速いはずなので、説明がつきませんでした。

 

肝心の使用感はどうかというと、ホストPCがCeleron J1900 + Ubuntu 16.04 LTSのときに比べると雲泥の差です。かなり快適になりました。VT-d※が効いているのかもしれません。※Celeron J1900はVT-d未対応。

 

なお、いくつかゲームをやってみた限りでは、以前構築したVMware Workstation Player上のWindows 10と同じくらいの速さで、リモートデスクトップ経由で遊ぶことができました。

 

ただ、VMware Workstaion Playerでダメだった「バイオハザード3」はやはりダメでした。

リモートデスクトップ経由だと、PCからもAndroidタブレットからも「内部エラー」のダイアログが出て、起動すらできませんでした。ローカルだと遊べます。こちらもVMwareと同様です。

 

相変わらず、「Androidタブレットからリモートデスクトップ接続してPCゲームを遊ぶ」という目的を完全に果たせていませんが、一応、VMwareと同じレベルは達成できたので、リベンジはできたことにしたいと思います。

 

なお、ひとつ不可解な点がありました。

ローカルのKVMの画面でマウスのクリックが効きません。リモートデスクトップからだとちゃんと効きます。

何が原因かは分かっていません。

 

KVM上のWindows 10の性能向上を目指してみました(Ubuntu 18.04 LTS & Windows 10インストール編)

以前、Ubuntu のKVMにWindows 10をインストールし、Androidからリモートデスクトップで接続してゲームをしようとしました。 

このときはKVM上のWindows 10の性能が悪かったため、KVMからVMware Workstation Playerに移行し、一応満足な性能は得られたのですが、リモートデスクトップ経由で起動できないゲームがあったため、結局普通に中古のノートPCを購入しました。

 

しかし、KVMの使用を諦めたのがずっと心に引っかかっていて、いつかリベンジしたいと考えていました。というのも、仕事で使っているKVM上のWindows Server 2012 R2は快適に使えているからです。なぜ家ではダメなのか。

 

勤め先のKVMを動かしているサーバーマシンはかなりハイスペックなので、その恩恵である可能性があります。

そこで、ホストPCの性能が良くなれば、家のKVM環境のWindows 10も使い物になると思い、ホストPCをCeleron J1900(PassMark Score 1862)のデスクトップPCからCore i5-3210M(PassMark Score 3819)のノートPC(acer V3-571-H58D/K)に変更してみることにしました。

CPU性能で倍以上になりますし、仮想化支援技術として、VT-xだけでなくVT-dもサポートしているので、なんとなく期待できそうです。

それでは、設定していきます。

 

 

Linuxをインストールする

まず、ノートPCにLinuxをインストールします。Linuxは、Ubuntu 18.04 LTS を選択しました。

Windows 10で使っているボリューム(ディスク領域)の縮小

Ubuntu をインストールするノートPCは、すでにWindows 10が入っています。しかし、このWindows 10は消したくありません。そこで、Windows 10とUbuntu を共存させることにします。

Windows 10のスタートメニューを右クリックすると出てくる「ディスクの管理」でWindows 10が入っているボリュームを選択し、「ボリュームの縮小」を行います。470GBくらいのサイズだったので、250GBまで縮小し、Ubuntu 用に220GB確保しました。

Ubuntu 18.04 LTS の入手

以下のサイトからUbuntu 18.04 LTSの日本語Remixをダウンロードし、DVD-Rに焼きます。

Ubuntu 18.04 LTS 日本語 Remix リリース | Ubuntu Japanese Team

Ubuntu のインストール

ノートPCのDVDドライブにUbuntu 18.04 LTSのDVD-Rをセットし、起動します。すると、Ubuntu の画面が表示されます。

(DVDドライブから起動するには、BIOSやUEFIの設定が必要かもしれません。)

 

基本は画面の指示に従ってインストールしますが、「インストールの種類」では、「それ以外」を選択し、Windows 10のパーティション(Windowsでいうボリュームのこと)を残したまま、Ubuntu をインストールするためのパーティションを追加します。

 

スワップ領域とルート( / ) をマウントするパーティション(ext4ジャーナリングファイルシステム)の2つを作成します。スワップ領域は搭載メモリ量の1~2倍が目安です。このノートPCはメモリが12GBですが、ほとんどスワップを使わないと考えて8GBにしておきました。

 

Linuxをリモート管理する設定を行う

次にUbuntu をリモートで管理できるようにするため、sshvncserverの設定を行います。

なぜリモート管理の設定をするかというと、ノートPCが置いてある部屋はエアコンが無く、猛烈な暑さだからです。エアコンのある部屋で快適に作業がしたいと考えました。

※「ノートPCなら容易に移動できるだろう」という突っ込みがありそうですが、このノートPCはでかくて重く、色んな線が繋がっているので移動するのが面倒くさかったのです。

 

sshは以下のコマンドでインストールします。インストールするだけでリモートでコンソール操作が可能になります。

sudo apt-get install openssh-server

vncserverはtightvncserverをapt-getでインストールするだけではうまくいかなかった(画面に何も出ず、マウスをクリックしても何も起きない)ため、以下のWebページを参考にさせていただいて設定しました。

 

具体的には、合わせてxfceをインストールし、vncで接続するときはウィンドウマネージャーにxfceを使うようにしました。

Ubuntu 16.04 LTSにXcfe (or LXDE) とTightVNC Serverでリモートデスクトップ環境を構築する  | ALGO GEEKS

 

Linuxで仮想環境を起動する

KVMをGUIで管理するツールをインストールする

KVMをGUIで使うためにvirt-managerをインストールします。kvmもインストールしようとしましたが、Ubuntu 18.04 LTSではインストール必須になったためか、apt-getでインストールするパッケージには含まれていないようです。

以下のコマンドでvirt-managerをインストールします。

sudo apt-get install virt-manager

 

仮想環境にWindows 10をインストールする

ここで少しはまりました。

リモートからvnc越しに、Windows 10をインストールしようとしましたが、最初のインストール画面が出るものの、マウスやキー入力が効きません。なのでvnc越しのインストールは諦め、ノートPCを直接操作してインストールしました。

 

なお、直接操作しても、なぜかマウスはまともに動いてくれなかったので、すべてキーボードで操作しました。(インストール完了後はマウスも大丈夫でした)

仮想マシンのスペックは以下としました。

  • CPU:2コア
  • メモリ:4GB
  • HDD:64GB
  • NIC:ブリッジ
 

Windows 10のライセンス認証をする

Windows 10のライセンス認証は、以前、VMware Workstation PlayerにWindows 8をインストールしたときのライセンスが移行できました。

 

このライセンスはもともとKVMのWindows 10で使っていましたが、VMwareに移行した後は、Windows 8で使っていました。

今回、さらにKVMのWindows 10に移行したわけです。

 

KVMのWindows 10からVMwareのWindows 8に移行するときは、Microsoftに電話する必要がありましたが、今回は「このデバイス上のハードウェアを最近変更しました」から元のPCを選んでアクティブ化することでいけました。

この方法でのライセンス移行は1回しかできないようですが、Windows 10がアップデート版であれば、一度アップデート前のバージョンをインストールして電話認証することでリセットされるようです。

つまり、下記の1のパターンは3番目のVMwareへの移行でNGですが、2のパターンは3番目のWindows 8の認証でリセットされるため、4番目までいけるということです。

  1. Windows 10(物理マシン)→Windows 10(KVM)→Windows 10(VMware)
  2. Windows 10(物理マシン)→Windows 10(KVM)→Winows 8(VMware)→Windows 10(KVM)

 

そのうちホストPC変更後の性能を測ってみたいと思います。

 

(追記)

その後、KVM上のWindows 10の性能検証を行いました。↓の記事を書きましたのでよろしければご覧ください。

www.toomath.net

 

VMwareでNAT接続のWindows 10環境を構築してAndroidタブレットからリモートデスクトップ接続する方法

以前、ファイルサーバー(Ubuntu Linux)上の仮想マシンにWindowsをインストールしました。

 

最初はKVMを使おうとしましたが、あまりの性能の低さに採用を諦め、VMware Workstaion Player を使うことにしました。

 

今回はその続きです。

仮想マシンにAndroidタブレットからリモートデスクトップ接続できるように設定します。

 

 

仮想マシンでリモートデスクトップ接続を許可する

Windows 8.1 proの場合の手順について説明します。(Windows 10 proも全く同じです。)

  1. エクスプローラーを開き、左にある「PC」を右クリックして「プロパティ」を開きます。
  2. すると「システム」画面が開くので、左にある「リモートの設定」を左クリックします。
  3. 下にある「このコンピューターへのリモート接続を許可する」を選択します。「ネットワークレベル認証で・・・」もチェックしてOKを押します。

以上で仮想マシンへのリモートデスクトップ接続を許可できました。

 

VMware Workstation Player でポートフォワーディングする設定を行う

仮想マシンのネットワークをNATにしたので、ポートフォワーディングの設定をする必要があります。

ブリッジにすると、この辺の設定がいらず楽です。

しかし、なぜかうちの環境だと、仮想マシンをブリッジ接続にすると、ファイルサーバーとのVNC接続が頻繁に切れます。

私はファイルサーバーのメンテナンスにVNCを使うことが多いので、ブリッジだと都合が悪く、NATにしました。

ポートフォワーディングの設定は「/etc/vmware/vmnet8/nat」にある「nat.conf」というファイルを編集することで行います。

下の方に[incomingtcp]という項目があるので、そこに以下のように追記します。

太字が追記した部分です。

[incomingtcp]

# Use these with care - anyone can enter into your VM through these...
# The format and example are as follows:
#<external port number> = <VM's IP address>:<VM's port number>
#8080 = 172.16.3.128:80
3389 = 192.168.133.128:3389

タブレットや他のPCからファイルサーバーにリモートデスクトップ接続(使用ポート番号は3389)したら、それをそのまま仮想マシンに渡しますよという意味です。

上記の設定をした後、VMwareのサービスを再起動しないといけないと思うのですが、具体的な手順が分からなかったため、ファイルサーバー自体を再起動しました。

ファイルサーバー再起動後、仮想マシンを起動したところ、他のPCからリモートデスクトップ接続できました!

 

Androidタブレットにリモートデスクトップをインストールする

Google Playに「Microsoft Remote Desktop」が公開されているので、普通にインストールします。

アプリを起動し、右上の「」を押して「Desktop」を追加します。

私はファイルサーバーのIPアドレスを入力し、ログインアカウント、パスワードを記録させました。

 

これでタブレットからリモートデスクトップ接続ができました!

 

Windows 10の仮想マシンをKVMからVMware Workstation Playerに移行する方法

先日、AndroidタブレットでPCゲームをするために、KVMの仮想マシンでWindows 10を起動してみました。 

 

しかし、結局、KVM上のWindows 10のパフォーマンスが十分ではなく、まともにPCゲームができませんでした。

そこで、KVMは諦め、VMware Workstation Player(VMware)を使ってみようと思い立ちました。

それでは、KVMからVMwareに移行してみます。移行先はVMware Workstation 12  Playerです。

 

 

Windows 10のディスクイメージをqcow2形式からvmdk形式に変換する

まず、下記のコマンドを実行し、KVMのディスクイメージファイルをVMwareのディスクイメージファイルに変換します。

qcow2のイメージファイルは60GBあったので結構時間がかかりました。

 qemu-img convert -O vmdk <qcow2ファイル> <vmdkファイル>

 

VMware Workstation Playerで空の仮想環境を作る

次に、VMwareを起動し、Create New Virtual Machine で空の仮想マシン環境を作ります。私は下記の構成で作りました。

  • CPU 2コア
  • メモリ 2GB
  • HDD 60GB
  • ネットワーク(NIC) ブリッジ

 

CD-ROMドライブには、Windows 10のインストールディスクイメージ(isoファイル)を指定します。こうすると、VMwareが勝手にWindows 10の仮想マシンを作ると判断してくれます。

英語の文言は忘れましたが、HDDのイメージファイルは、「1つのファイルを使う」方を指定しました。

 

VMware Workstation Playerの空の仮想環境のvmdkファイルを置き換える

上で作った仮想マシンのデータ格納先ディレクトリに、ファイル名の末尾が ".vmdk" というファイルがあるので、それを削除します。

そして、qcow2形式からvmdk形式に変換したファイルを同ディレクトリにコピーし、削除したファイルと同じファイル名にします。 

 

VMware Workstation Playerで仮想環境を起動する

準備ができたので、Windows 10の仮想マシンを起動します。

VMwareのウィンドウの左の領域に作成した仮想マシンが表示されているので、それを選択すると、右の領域にPower Onというボタンが出ます。これをポチっとします。

無事Windows 10が起動しました。

おぉ!KVMより明らかに速い!快適です!

 

次はVMwareの仮想マシンにAndroidタブレットからリモートデスクトップ接続してみます。

 

Androidタブレットからリモートデスクトップ接続するWindows 10環境をKVM上に構築してみました

少し前から、カミさんが自分用の小さくてかわいいWindowsパソコンが欲しいと言っています。

目的はPCゲームをするためです。PCゲームと言っても、高いスペックを要求するものではありません。基本静止画の恋愛アドベンチャーゲームです。

しかし極力お金はかけたくない。できれば今使っているAndroidタブレットで出来ないのかと言い出しました。

 

AndroidタブレットからWindowsを使うとなると、リモートデスクトップなどでWindowsに接続するしかありません。

しかし、ゲームをやるために、まずリモートデスクトップのサーバーとなるパソコンを起動して、タブレットから接続して…というのは、面倒くさがりのカミさんがするわけありません。

 

そこで、常時稼働しているUbuntu Linuxのファイルサーバーに仮想マシン環境を構築し、そこにWindowsをインストールすれば良いのではと考えました。

幸い手元にWindows 10 proがあります。

これをKVMの仮想マシンにインストールし、Windowsを起動しっぱなしにしておけば、いつでもタブレットからリモートデスクトップ接続できます。

 

それでは、環境構築を行います。 

仮想マシンを動かすファイルサーバーのスペックは以下です。

  • CPU:Celeron J1900(Asrock Q1900B-ITXというマザーボード直付けのCPU)
  • メモリ:DDR3-10600 8GB
  • HDD:SATA内臓 2TB×2、USB3.0外付け 2TB + 4TB

Celeron J1900 はIntel VT-xをサポートしているため、KVMも動きます。(VT-dはサポートなしです)

 

以下の流れで構築します。

 

 

Ubuntu Linux 16.0.4にKVMをインストールする

apt-getでKVMをインストールします。GUIで運用管理できるようにvirt-managerもインストールします。

sudo apt-get install kvm

sudo apt-get install virt-manager

 

KVMの仮想マシンにWindows 10をインストールする

virt-managerを起動し、Windows用の仮想マシンを作成します。

私は以下の構成としました。

  • CPU:2コア
  • メモリ:2GB
  • HDD:64GB
  • NIC:ブリッジ

あらかじめダウンロードしておいたWindows 10のISOイメージをCD-ROMにマウントし、仮想マシンを起動するとインストールが始まります。

後は通常のWindows 10のインストールと同じです。
以下のように無事インストールできました。
 

KVM上で動作するWindows10pro

 

KVM上のWindows 10をチューニングする

Windows 10のインストールはできましたが、なんだかもっさりして遅い。。これではいくら軽い乙女ゲームだとしても、まともに動かないような。。

しかも、ホストOSが150%程度、ゲストOSが20%程度、何もしてなくてもCPUを消費しています。

なんとかしたい!ということで以下のWebページを参考にチューニングを試みました。

 

qiita.com

 

しかし、満足な結果は得られませんでした。

virtioというディスクコントローラーのドライバは導入できましたが、一番効果がありそうなQXLのグラフィックドライバはうまくインストールできませんでした。

公開されているWindows 7用はWindows 10に使えないようです。

Windows 7用のドライバであればWindows 10で使えることも多いですが、これは互換性がなかったようです。

 

カミさんからは諦めたら?と言われており、すでに当初の目的は見失っていますが、快適な仮想マシン上のWindows 10環境を求めて探求を進めます!

 

(c) 2018 toomath