仮想マシンを自由自在に構築・運用出来るプライベートなクラウドもどきを構築しよう計画。 ついでに、最速のScala開発環境も欲しいナというお話
##要求
- 仮想マシンの作成・構築を高速で行えるようにする
- CI で、仮想環境の作成テキストを行えるようにする
- Scala でのプログラム開発を高速化する
###運用想定
- UNIX系OS (ボクが慣れたFreeBSDかな)
- メモリを山盛り積んでラムディスクを構築して、一部仮想環境構築を高速化する
- 仮想マシンソフトウェアとして使い勝手のよい VirtualBox を使う (vagrant との兼ね合いもある)
- git リポジトリをローカルに持つ。github のプライベートリポジトリと同期を取るかして、何らかの別のgitリポジトリと同期運用する
- git リポジトリに連動して、veewee/virtualbox を CI する
- バックアップが必要なのは git リポジトリと、最小限のディレクトリのみとする。どうしてもgitリポジトリに入れたくない特殊なデータ類を最小限のディレクトリで管理する
- システム全体を最低限のインストール+chef+αで構築できるようにして、いつでも簡単にクリーンインストールできるようにする
##構築考察
- Scala の高速コンパイルに関しては the fastest processor to compile scala? - Google グループ が参考になりそうで、まだ中身は読んでないが、どうやら CPU 整数演算能力 > コア数 > ストレージ速度位の影響度っぽい。
- ラムディスクを使ってはどうかという提案を受けた。プロビジョニングの実験、特にVeewee/Vagrant の CI/構築実験を行う時に効果が高いと考えられる
- TurboBoost などの技術は動作条件がかなり限られる事、コンパイルやプロビジョニングなどには向かない事から、定格周波数が重要
##Boxあたりの性能見積もり
###メモリ消費量
- 1box においてメモリ消費量は512MB〜4GBほど
- 軽いサーバー構築であれば512MBで十分ではないかと考えられる
- Java/Scalaが絡んだ場合、2GB以上欲しいはず
- オンメモリDB/KVSとか考えると、4GBとかいるケースもある?
- プロビジョニングをラムディスク上で行えばかなりの高速化を図れるのではないか。その場合、数GB(多くても10GB程度)か
###ストレージ
- ディスク使用量は 10GB〜40GB 程度を想定
- ハードに使わない限りは10GBで十分なはず
- ある程度安定的に使うなら20GBほど
- 業務で使えるレベルのあれこれなら40GB欲しい(が、そんなものを動かすのかと…?)
- I/O性能は速ければ速いほどいい(仮想マシンをラムディスクで動かす)
###CPU
- 速ければ速いほど嬉しい
- コア数は、Boxあたり最低2、マルチコアを活かせるなら4以上。
##全体での性能見積もり
###メモリ搭載量
- 同時に動かすBoxはおそらくそんなに激しくはならないだろうが、8GBだと不安を覚えるので16GBは最低限欲しい
- ラムディスクを使う場合32GB積む
###CPU
- コア数は4(HT:8)欲しい
- 定格クロック重点
- アイドリング時の省電力は欲しい
###ストレージ
- SSD: 250GB程度を想定
###他ハードウェア
- 内蔵GbE
- 他は特になし。セットアップやメンテ時にキーボードやマウスをつなぐ程度
- 出来れば小さい方がいい。拡張性要らないし。
##入れるもの
- Ruby/rbenv?
- chef-solo
- VirtualBox
- vagrant
- veewee
- JDK
- Jenkins
##要検討
- chefレシピ
- 要らないモノを極力削る
- kernelチューニング
- VirtualBox を Headless で動かす事ができるかどうか
- 本当に、SSD * 2 構成にする必要があるのか
- VirtualBox で、SSD 上で動かすヤツとラムディスク上で動かすヤツを共存出来たりしないか?Vagrant の設定でなんとかならないか?
- 管理用のソフトウェアとか作りたいかも
http://www.slideshare.net/erukiti/ss-25080788
ハードウェア組み立てた。FreeBSD9.1-Release入れて、最低限のソフトウェアをインストールした。
- CPU: Core i7 3770
- マザーボード: Asus P8H77M
- メモリ 8GB * 4
- SSD: 256GB
###選択理由
- Core i7 Ivy Brigde 世代にした理由は、Haswell はまだ出たばかりでトラブルを避ける為
- Core i7 3770 + H77 チップセットにしたのは、オーバークロックせず、定格周波数高いヤツで選んだ為
- Asus にしたのは、半ばキメうち(悩んでも時間ばかりかかるから)なのと、搭載チップなどが、FreeBSD で対応してるようだから。
- もう今の時代、パーツの選択肢少ない…。