作業環境のiPad化を進めているのと同時に、内部専用のサーバーで実行させているサービスの仮想化も検討を始めました。
私の作業環境で特に重要なサービスは、次のものです。
- JIRA
- Confluence
- Stash
- Bamboo
- Subversion
- Alfresco
- MySQL
これらを1台のOS Xサーバーで動かしているため、共存させるための設定などを色々としています。そこで、複数の仮想PCで仮想化した方が良いかなと思い、検討を始めました。
メモリ問題
複数の仮想PCを使って動かす時に、直ぐに頭に浮かんだ問題は、メモリの割り当て。自分しか使わないサーバーなので、Mac Miniのサーバーモデルを使っています。物理メモリの容量は8GB。複数の仮想PCを使うと、すぐにメモリが足りなくなりそうです。
そこで、調べてみると、VMwareは仮想メモリの仕組みになっていて、物理メモリを占有しないということがわかりました。出てきた資料は、VMwareのサーバー向けのものだったので、Mac版のFusionはどうなのか、実行して確認してみると、確かに「vmem」という拡張子の仮想メモリファイルが作られていました。ファイル容量も、仮想PCに割り当てているサイズです。
複数の仮想PCの割り当てメモリの合計が物理メモリ容量を超えても、これなら動作しそうです。パフォーマンス面の問題は出るでしょうが、GUIのアプリのように、常にグリグリ動かすものでもないですし、多少遅くても、問題ない系のものなので、分離した方が都合が良いものごとに仮想PCを作ることで良さそうです。
[UPDATE] Fusionの場合、物理メモリが不足すると、エラーになりました。物理メモリ以上を仮想PCで同時に使うのは無理なようです。
ストレージとバックアップの問題
ストレージ容量については、内蔵は500GB * 2ですが、外付けでRAIDをつないでいるので、問題なしです。RAID側に仮想PCファイルを置きます。
Promise Pegasus2 R6 12TB(2TBx6)モデル Thunderbolt対応ストレージ F40SR6R06100000
現行モデルはThunderbolt 2で色も変わっています。写真のはThunderbolt 1のモデルです。容量は12TBありますが、RAID 10で構築しているので、使えるのはその半分以下です。それでも、十分です。
バックアップについては、そのままでは、TimeMachineは使えません。実行中の仮想PCの仮想ディスクは、復元に失敗します。一工夫必要です。次の記事にもかかれていました。
VMware KB: VMware Fusion での仮想マシンのバックアップ(プログラムおよびデータ)のベスト プラクティス
これを以前、知らなくて、安心しきっていました。ある時、操作ミスからMySQLのデータを壊してしまい、TimeMachineで復元したところ、仮想PCが起動すらしなくなったことがあります。その時は、さらに古いバックアップを試していき、たまたま復帰でき、2日間のデータを失っただけで済みましたが、偶然、上手く行っただけです。それもダメだったらと考えると、ゾッとします。
上記の記事も参考に検討し、本当は仮想PCを丸ごとバックアップされているのが楽なのですが、ミラーフォルダとTimeMachineの組み合わせで、構築します。
MySQLのダンプ出力を行うスクリプトを仮想PC上で実行し、ミラーフォルダに保存し、それをTimeMachineでバックアップするという方法が使えそうです。JIRAやConfluence、StashのGitリポジトリファイルは、定期的にrsyncなどで、ミラーフォルダに出力して、後はTimeMachineに任せる。
これでデータは取れるので、仮想PCファイルはTimeMachineのバックアップから外すように設定を変更します。
すると、上記で仮想PCファイルをRAIDに置くと書きましたが、物理ディスクが異なる方が良いので、仮想PCファイル自体は内蔵ディスクに置いた方が良さそうです。
IPアドレスの割り当てと名前解決
仮想PCも一つのマシンと同じに扱うので、それぞれ固定の内部IPアドレスを割り当てます。名前解決用に内部にもDNSを立てた方が良いです。これにはOS Xサーバーを使います。ただ、以前、検討した時にOS XサーバーのDNSサーバーで登録したプライベートドメインが、Windowsマシンからは見えないという問題が起きました。
これを解決しないといけないので、調べてみましたが、特に同じような話題が見つかりませんでした。そこで、単純にDNSのキャッシュのせいかもしれないと考え、探してみると、次のような記事を発見。
構築後に、また、繋がらなかったら試してみようと思います。
まとめ
作業開始前に思い付いた問題点はまとまりました。ブログに限らず、文章にすると、洗い出せますね。いつもは、内部専用のものは、とりあえず、作業を始めてから、考える。というスタイルなので、グダグダになって、時間だけ潰した感じになってしまいます。
今回は、文章にしたので、何を設定しないといけないかも、まとまりました。特にバックアップは、物理サーバーの方でそのうち設定しようと思って、そのままになっていました。長い間、動きがないタスクリストのトップ項目です。
後は、実際に構築してみて、結果を後日、検証です。