仮想環境を初めて触ったのは2006年くらいでしょうか。
職場の開発環境においてVMWarePlayerをLinuxにインストールしてWindowsXPの仮想環境を構築して使っていました。
当時はLinux環境で開発作業を行い、ちょっとした資料作成にVM環境を利用していました。
仮想環境が便利なのは用途にあわせて複数環境を構築したり、破棄したり、複製したり、物理的なPCが1台でも環境を複数作ることができるところでしょうか。
直近においては自分自身のPC上に開発環境を構築するにあたり、できるだけパフォーマンスの良い環境を構築するため、ホスト型の仮想環境ではなく、ハイパーバイザ型の環境を構築しようと思い、Hyper-vで開発環境を構築しました。ゲストOSはCentOS7です。
今まではVMWarePlayerやVirtualBoxなどのホスト型仮想環境を利用していたのですが、今回初めてハイパーバイザ型の仮想環境を利用しました。基本的にはHyper-vも同じように利用できるだろうと考えていたのですが、なかなか思ったようにはいきませんでした。
Hyper-vで困ったこと
Hyper-v上にCentOS7をインストールするのは他のVM同様何も難しいことはなかったのですが、以下のような課題に悩まされました。
- 画面の解像度がディスプレイの解像度と比較して非常に低く、変更ができない
- ホストOSのデスクトップから仮想環境のデスクトップへファイルのコピペができない(ファイル共有できない)
解像度だけでもどうにかできないかと画面解像度の種類を追加したり、いろいろ設定ファイルをいじってみましたが、解像度の変更ができず。。。
使用PCが4Kディスプレイのため、解像度が低い状態では画面に表示されるサイズが非常に小さく、特に全画面表示にしたときはとても利用できる状態ではありませんでした。
【Hyper-v 全画面表示】
VMWare Playerを利用していた時は、VMWare Toolsのおかげで特に難しい設定は必要なく、ホストOSの対応解像度にあわせて自由に設定可能でした。
もちろんファイルのクリップボード共有も可能であったため、ファイルの移送も簡単でした。
仮想環境を利用する上で、全画面表示可能であること、ホストOSとゲストOS間のファイル移送が簡単に行えることは個人的には必須と考えています。
ファイル移送については、共有フォルダを作成してネットワークドライブとして共有することも可能です。
しかしながら、わざわざ共有フォルダを生成してゲストOSからホストOS上の共有フォルダをマウントして、ファイルを移送するときは必ず共有フォルダに配置する必要があり、非常に手間です。
WindowsのホストOSからWindowsのゲストOSを立ち上げる場合は『拡張セッション』という機能でファイルのコピペなどができるようですが、WindowsのホストOSからLinuxのゲストOSとなると、拡張セッションも利用できないようです。
こんなに使い勝手が悪いのならVMWare PlayerかVirtualBoxを使ったほうが楽だなぁと思ったのですが、ハイパーバイザ型のパフォーマンスを活かしたいと思い、もう少し調査したところ、xrdpというWindowsからLinux環境へのリモートデスクトップ接続を利用すれば、万事解決することが判明致しました。
ゲストOSであるCentOS7にxrdpをインストールし、Hyper-vマネージャーの仮想環境接続をリモートデスクトップ接続を利用するようにpowershellから変更すれば課題クリアです。
以下、Ubuntu向けですが熟読すればCentOS7でやることもわかります。
CentOS7にxrdpをインストールする
CentOS7でxrdpをインストールする場合、yumインストールではHyper-vマネージャーの仮想環境接続をリモートデスクトップ接続にするための『hvsock』が無効になっているため、リモートデスクトップ接続ができません。
hvsockを有効化するためにはxrdpをソースからコンパイルしてインストールする必要があります。
xrdpをソースからコンパイルしてインストールする際、hvsock以外にもファイル共有可能にするためのオプション『fuse』も有効化しなければなりません。hvsockを有効化するだけではファイルのコピペができず失敗します。(※ 私は最初そこに気付かずホストPCとゲストPC間のファイル移送ができず、手間取りました。)
xrdpのインストール手順は整理して次の記事でご紹介しようと思いますが、ご自身で調べて解決可能な方はここまでの材料で十分ゴールにたどり着けると思います。
※ 当方でも手順をまとめてみました。関連記事のリンクからご参照ください。