vagrantのプラグイン、saharaを使ってVirtualBox上のCentOSを破壊しました。
photo credit: mariusz kluzniak via photopin
saharaとは
saharaはvagrantのプラグインです。
saharaを使うと、以下のようなことがコマンドラインからできます。
- 仮想マシンのスナップショットを作成
- スナップショットから仮想マシンを復元
つまり、仮想マシンをボロボロのメタメタのケチョンケチョンに破壊しまくっても、
元に戻せるのです!( ̄ー ̄)
saharaのインストール
$ vagrant plugin install sahara
Installing the 'sahara' plugin. This can take a few minutes...
Installed the plugin 'sahara (0.0.15)'!
saharaの使い方
コマンドは以下の4つです。
- vagrant sandbox on
- vagrant sandbox commit
- vagrant sandbox rollback
- vagrant sandbox off
簡単な例
ここでは、 /usr配下をうっかり削除してしまい、復元しようと思います。
まずは、事前にvmを立ちあげときます。
$ vagrant up
サンドボックス有効化
saharaを利用するためには、sandboxモードを有効化します。
$ vagrant sandbox on
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
GUIからも、スナップショットが作成されたことが確認できます。
以下のフォルダに格納されました。
C:\home\TSUNEMICHI\VirtualBox VMs\centos_1373847520\Snapshots
スナップショットから以前の状態を復元
rollbackコマンドでsandboxモードを有効化した時点に戻ることができます。
$ vagrant sandbox rollback
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
それでは、ここでうっかりディレクトリ削除をしてみます。
$ vagrant ssh
$ su # root passwordは vagrant
$ rm -rf /usr
うひゃあ 。゚(゚´Д`゚)゚。
$ ls /usr
ls: cannot access /usr: No such file or directory
でも、大丈夫だよ (´・ω・)っ□
$ vagrant sandbox rollback
$ vagrant ssh
$ ls /usr/
bin etc games include lib lib64 libexec local sbin share src tmp
よかったねー。(っ´∀`)っ
サンドボックス無効化
saharaをもう利用しない時は、sandboxモードを無効化します。ちなみに、けっこう時間がかかります。
$ vagrant sandbox off
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
スナップショットは以下に保存されています。もちろん、VirtualBoxからもスナップショットの管理ができます。
スナップショット作成
commitコマンドで現在の状態を保存します。これによって、rollbackで戻れる時点を変更できます。これはスナップショットを一旦削除するので、時間がかかります。
$ vagrant sandbox commit
内部的には、sandbox offしてonしているだけに見えます。
パフォーマンスについて
時間はどうなの?
sandbox onと sandbox rollbackは一瞬で終わります。sandbox offとsandbox commitスナップショットの削除時間が入るので、数分かかります。
とくに、sandbox rollbackが一瞬で完了するのは素晴らしいです。これなら、エンドツーエンドテストに十分応用可能なスピードです。
容量はどうなの?
スナップショットをたくさんとった時の気になる容量を確認しました。
CentOS 6.4 Minimal の元ファイルが1.5GBのスナップショットは 63.8 MB でした。このくらいならば、許せるレベル。僕の貧弱マシンでも大丈夫です。