2015年2月20日金曜日

自宅PCを仮想化する(その2:VMWare導入編)

「自宅仮想化」ネタの第2弾、実際に仮想化を行ったことで感じたことを書き連ねていきます。

#そもそもなぜ仮想化に至ったかという経緯はこちら

「仮想化」に対してあまり知識がない状態なので、まずは調べ物から。
・・・と調べてみたものの、例えばWikipediaなどの情報だと言ってる意味が全くわからない。イメージが湧かない、というか、そんな感じ。

そんな中、以前「仮想化」という意識をせずに使っていたMacの仮想化ソフト、「VMWare FUSION」の親戚みたいなの(導入時点ではこの程度の認識でした・・・)があり、しかも無償で提供されている、というので、まずはそいつで試してみよう、と相成った。その名は・・・、

「VMWare ESXi」

名前なんてどうでもいいが、要するにVMWareってヤツだね、と。Macで使う前から名前だけは聞いていて、何やら遠隔地にあるサーバをごにょごにょとかマシンがごにょごにょとかどうとか。要するに一つの物理マシン(パソコンの機械)のハードディスクにOSを入れるんじゃなくって、物理マシンを四次元ポケットみたいにしてしまい、その中に「パソコン的なもの(いわゆる仮想マシン)」をいっぱい放り込み、使いたい時に取り出せる、という便利な「未来の道具」なのだ、とドラえもん的発想で考えればそんな感じ。

本来なら他に検討するべきところなのだが、まずはどんなイメージで動作するのかを確認したいので、ちゃっちゃとインストール。特に今回セットアップ等の方法はここには載せないが、参考になるサイトはいくつかあって、

など。この辺を見たらまぁ大体セットアップはできるはず。

ただし、このソフト(・・・というような代物ではないがまぁわかりやすく言えばソフトだなぁ)、ちょっとした問題点がある。

ハードウェアの対応が厳しすぎるのだ。

基本的に、仮想化するためのハードウェアの条件は、
・CPUが「仮想化技術」に対応していること
 IntelであればVT-x、AMDならAMD−V対応のモノでないとできない(詳細はこのページから)
 →自宅PC:Intel Core2 Quad Q9650 3.00GHz

・メモリをいっぱい積んでないとダメ
 理由:複数OSに対して一つのマシンに積んであるメモリを共有させるから
  ※後々触れる「メモリ共有」という仕組みはあるが、だからと言ってメモリ最低限、というわけにはいかない

 →自宅PC:8GB

・ネットワークカード(NIC)がないとダメ
 普通のPCのようにディスプレイを繋いでも仮想化したOSが表示されるわけじゃない。仮想マシンは別のPCからネットワーク経由で呼び出すし、仮想マシンのOSインストールも同様に別のPCからネットワーク経由で行うのだ
 →自宅PC:後述

というのがある。実はその辺で売っている(いわゆる家庭向け/コンシューマー向け)PCだとこの条件を微妙に満たさない。俺はたまたま(というか仕事だから、というか)チョイとハイスペックな自作PCをWindows用に使っていたこともあり、この条件は満たしていたのだが、ここからさらに細かい条件があり、そのままでは使えない、ということになった。

詳しく言うと、NICがあるのに対応していない、という状況。
使っていたPCはNICがマザーボードに直接繋がっている(いわゆるオンボードNIC)タイプの、「ASUS P5QC」というヤツ。ちなみにNICのチップセットはAtheros社のヤツなのだが、この会社のはVMWareではほぼ未対応だとのこと。
#実は、対応させる方法はあるのだが、ドライバーを自分で作らなければならない。
#そのために時間を割くことはできなかったのでこの方法での対応は却下した。

なので、対応しているNICを買ってくる羽目に。買ったのはIntel社のチップが載っているノーブランドのバルクもので、こいつを入れてあげたらインストールできた。

簡単な手順としては、このソフトをインストールしてから、「Windowsマシン上で」仮想マシンを作成、OSを入れる、という手順なのだが、この時点でWindowsマシンは手元にない。Macしかない。さてどうするか。

とりあえず以前使っていたVMWare FUSIONがあるので、Macにインストールし、そこからWindowsを起動させて、という、かなりややこしいことをして仮想マシンを2台作成することに成功。仮想マシンはMacにインストールした「Microsoft Remote Desktop」を使ってアクセスすることになった。

さて、使ってみると・・・。

これがまた快適。びっくりするくらい快適。
各(仮想)マシンに対してはそれぞれ4GBのメモリを割り当ててあるため、そこそこのマシンを四次元ポケットに2台入れてある状態。ただし、ネットワークの速度に依存するところもあり、たまに我が家の無線が調子悪くなったりすると突然動きが遅くなったりする。

それから、呼び出す端末の速度にも依存するようで、普段使っているMacのデスクトップ(当時はiMacのちょっと古いヤツ)が別の作業をしていると呼び出したWindowsの速度も遅くなったりする。これは、iMacを買い換えた際に判明したこと。



<!--
ちょっと話がずれるが、いわゆるシンクライアントを使う方法もあったと思う。

実際には我が家ではある事情(前回のポストにもある通り、必要以上の端末購入はできない)によりシンクライアントの導入ができなかった。が、上記のように、仮想マシンを使うにあたってのシンクライアント導入については、マシンのメモリがそこそこ積まれていて、かつネットワーク環境が早ければ早いほど快適に使える、ということが言えると思う。

では、そんな条件を満たすのは例えばどんなマシンなのか。その辺で売っているマシンなら、例えばChromebookとかなら快適かもしれないし、ネットブック系の小さいPCを使ってもメモリが増設できるマシンなら有用かもしれない。

そして、実は試してみたいのが、Playstation。2は持っているが、ネットワークに繋げない気がしているので多分無理だろう。では、3とか4とか、たしかブラウザがあるはずなので、それを使ったらどうなるだろうか。もうちょっとお金に余裕ができたら買って試してみたいところではある。

さて、呼び出す端末に依存する部分は解決のしようがあるのだが、呼び出される四次元ポケット側の問題は如何ともしがたい。先に述べている通り、この四次元ポケット(ソフトのことね)はとりあえずハードウェアの選り好みが激しいわけで、NICだけでなく、もう一つ対応できていないものがあった。サウンドカードである。

単純に開発をするだけであれば全く問題はなかったのが、WindowsマシンでRadikoの録音をする、という用途上、どうしても「音がしない」ことで、録音ができない事象が発生。いろんなソフト(こんなのとかこんなのとか)を試してみたのだが、どうもうまく録音ができない。これが結局自分で作ろう、という結論に結びついたのだが・・・。

そこで、何件かもらっていたAccessツールの移植の仕事がひと段落する頃合いを見計らって、他の「仮想化」のための方法を探ってみた。そこで見つけたのが・・・、

・・・
ここで「次回に続く」とかやると、最近のテレビ番組みたいでイヤなんだけどなぁ(笑)
でも・・・、


次回に続く。選定のプロセスもあるのでそこから話を進めようか。

2015年2月12日木曜日

自宅PCを仮想化する(その1:顛末)

いつ頃からか、IT業界では「仮想化」という言葉が流行りだしていたようである。普通の生活をしているとほぼ関係がない用語ではあり、わりと普通の生活をしている俺にとっても、しばらく関係のない用語ではあった。

が、現在では我が家のPCは「仮想化」されることで複数台のPCを一つのマシンにまとめられている、という、一風変わった環境になっている。

この環境にしたのがちょうど1年くらい前なので、その頃の状況を含めてメモを残してみようと思う。
ただし、技術的かつ概念的な話なので、非常につまらないかも。完全なチラ裏ですね(笑)


もともと、我が家ではある「掟」がある。

『PC類はたくさん買っちゃダメ。必要な分だけ。』

今でこそ仕事で使うのでこの制限は随分ゆるくなっているが、1年前はMac1台(自宅用デスクトップ)とWindows1台(Office/VBA開発用)以上は持てなかった。VBAの開発は会社員時代から個人的にチマチマと仕事を受けていたりしたので、Windowsマシンはそれなりにハイスペックな、サーバーと見間違うようなものを持っていた。

で、ディスプレイやキーボード・マウスを2セット用意し、作業部屋の小さい机の上でキーボードをとっかえひっかえしながら作業をしていたのだが、まぁ開発以外にはWindowsマシンは使わないので(実際にはRadikoの録音をしていたので常時付けっぱなし)、大した問題もなく、あえて言うならWindowsマシンがデカすぎて場所をとってしまうくらいのものであった。

そしてある時(これがちょうど1年前)、VBA開発を以前依頼されていた方から、こんな依頼を受けた。

「以前作ってもらったAccessアプリ、Office新しくするから作り直してくれる?」

よくよく聞いてみると、そのアプリを開発した時からもう数年経っていて、マシンを新しくしようとしたのだが、その頃とは環境が随分変わっていて、アプリが古くて動かないかもしれない、ということなのだ。

開発当時は、
・OS:Windows XP
・Office: 2003

で、新しく購入予定のマシンは、
・OS: Windows 8
・Office: 2013

要するに、サポート切れ間近のマシンから最新マシンに変更したい、というところから始まったのだが、その検証段階で、Officeを使っていたアプリがあり、これが動かないのではないか、ということであった。

単純にAccessでデータベースを使っているだけならば単純に変換をするだけで動くはずなのだが、アプリとして作っているので、変換だけでは動かないだろう、という話は当初の開発時に既にしていた。開発時にはもうOffice2010が出ていて、2003との互換性については特にAccessがネックになる、ということだけは分かっていた(詳細はそのうちどこかでブログに載せようと思う)。

しかもそこでOSが新しくなる、という話もあり、そもそもOfficeは一台のマシンに複数インストールすることはできないし(本当は「できる」のだが、複数のOfficeを入れた状態は特殊であり、通常の環境とは異なる挙動をしてしまうことがあるということは経験済)、単純に我が家の開発用Windowsを新しくするだけでは失敗する可能性があるだろう、と考えた。

ということで、新しくWindowsマシンを購入しようとしたのだが、ここでネックとなるのが、我が家の掟。

『PC類はたくさん買っちゃダメ。必要な分だけ。』


いや、必要じゃん?

と思うだろうが、よく考えてみると、この「新しい環境への移植」というのは一時的な作業なのだ。一時的な作業のためだけにマシンをもう一台購入する、というのは認めたくても認められない、というのが我が家での見解。

おまけに言えば、そのための費用。今回の開発に対して支払われる報酬はそれほど多くない。一台のマシンを買うこともできない程度しか支払われない。

かといって、この仕事、受けないわけにもいかない事情があるため、なんとかしようと色々と考えてみた。

この時点(2014年1月)での我が家の状況を整理する。
・Windowsマシンは1台。OSはWin7/Office2003。常時電源を入れておく必要がある。
・Macは1台。OSはLion(10.7)。
・Office2013は持っている(Office365のサブスクリプション)。

ここで考えられる方法はいくつかあった。
1. WindowsマシンにOSを複数入れ、利用の都度切り替えて作業する
2. MacのBootcamp機能でWindowsを入れる(もしくはWindowsのみインストールする)
3. Macに「仮想化」ソフトウェアを導入、Windowsとの共存状態にする

1については、正直にいって面倒なので却下。特に、Radikoの録音予定時間に仕事をしていることがあると録音できないし、だからと言って録音するためのツールを両方のOSに入れておく、というのもちょっと違う気がしていた。
2(Bootcamp)に関しては、普段Mac使いとしてはベストな方法ではある、のだが、これまた「切り替える」という作業が面倒なことは事実。iPhoneとの同期を取ったり、iTunesで音楽でも聴きながら作業、というのができなくなるのでこれも却下。Windowsマシンにするなんてのは論外。
となると、3が最適解に思えてくる。実は以前にこの環境での作業をしていたことがあった。その時はMacのノートPC(Macbook Air:この時点では壊れており使えない状況だった)を使っていたのだが、動作が非常に重くて使い物にならない(特に開発については)、と感じていた。

そこで「仮想化」について色々と調べてみると、OSを複数同時に起動させる方法がある、ということに気がついた。いわゆる「仮想化プラットフォーム」である。これであれば、1台のマシンに2つのOS(および異なるバージョンのOffice)をインストールすることができ、かつどちらも起動した状態にすることができるのだ。

また、そもそもWindows用に使っていたマシンはサーバ用途で使えるスペックであり(しかも拡張性が高く、まだ拡張の余地は残されている)、仮想化に耐えうると判断した。

ということで、ちょっとマニアックな「仮想化」という環境を我が家で構築することになったのだが、実際の環境構築に至るまでの話や、その後の状態、今後の展開については後日改めて・・・。