純規の暇人趣味ブログ

首を突っ込んで足を洗う

VirtualBoxで仮想環境を使ってみよう

      2017/04/11    HimaJyun

サーバの動作テストをする時は「仮想環境」を頻繁に使用します。

仮想環境を作るためのソフトは色々あります、どれも使うのが特別に難しいという訳ではないのですが、今回は「VirtualBox」の使い方を紹介しようと思います。

仮想環境

このページを見ている人に仮想環境の説明は必要ないと思いますが、一応……

仮想環境は手っ取り早く言えば「パソコンの上で動かすパソコン」です、ええ。

ですので、Windows上でLinuxを動作させて動作確認を行うというのは良くある使い方でしょう。

もちろん、Windows上でWindows、Linux上でLinuxでも構わないのですよ、環境を汚さずに済むのでテストにはもってこいです。

VirtualBoxってなによ?

その「仮想環境」を作成するためのソフトウェアは色々あります。

VMWearとか、Hyper-Vとか、LinuxならXenやKVS、狭義には異なるけどDockerなんて物も……(Vagrantはただの補助ツールなので違う)

個人的にテストなどの軽い用途でオススメなのはVirtualBox、Oracleが開発するオープンソースで無料の仮想化ソフトウェア

まぁ、拘る理由みたいなのがある訳ではないのですが、使い勝手や操作性は良いんじゃないかな、くらいの理由。

(ガチガチの仮想化サーバとかならDockerとかフル動員する必要があると思いますけどね……)

使い方

VirtualBoxを使うのですから当然ながらにインストールが必要です。

ダウンロードページからダウンロードしてインストールしておいてくださいね。

新しい仮想マシンを作成

VirtualBoxを起動すると以下のような画面になるかと思われます。

説明の必要はないでしょうが、新たな仮想マシンを追加する場合には「新規」をクリックします。

新しい仮想環境の作成画面に入ります。

まずは名付け、OSのタイプ選択、種類選択を行います。

ちなみにですが、名前欄に「Ubuntu」や「Windows」、「CentOS」などの名前を入れると(厳密には2文字目を入れた段階で)自動でOSが設定されるので、私はよく「Ub」と打ってから消して好きな名前を打ちなおすと言う事をやっています。(マウスで選択するより早い)

次に割り当てメモリの設定です。

当然ながら多ければ多いほど良い訳ではあるのですが……そこは空きメモリとご相談なさってください。

注意点ですが、Windowsの仮想マシンは起動しただけで割り当てたメモリをフルで持っていくので割り当てすぎると痛い目みるかも?(Linux(Ubuntu)では使っている分だけしか確保しない)

次に仮想HDDの設定です。

普通は「仮想ハードディスクを作成する」で良いでしょう。

仮想ディスクの種類は普通に「VDI」で良いでしょう。(むしろ他の形式にする意味はあるのか?)

ディスクの容量は「可変」で問題ないと思われます。(固定だとパフォーマンスは上がりますがファイルサイズがデカくなりすぎて取り回しが悪くなる)

次に容量ですが、ここはメモリの時と違って多ければ良いと言う訳でもないです。

後で紹介する「ディスク圧縮」の際に余計な時間が掛かるようになりますし、必要な容量+5~10Gくらいで良いでしょう。

私はだいたい30~50GB程度にしています。

これで仮想マシンの作成は完了です、起動ボタンを押せば起動します。(当たり前ですね)

適当にダウンロードして来たisoやOSインストール用のディスクなどを利用してインストールを行って下さい。

Guest Additionsのインストール

VirtualBoxを使うのであればゲストOSへのGuest Additionsのインストールは必須でしょう。

Guest Additionsは「デバイス」から「Guest Additions CDイメージの挿入」をクリック。

GUIが入っていれば大抵は自動でインストーラーとかが起動します。

CUIの場合は以下のコマンドで……

sudo apt-get install make gcc
# CentOSだとkernel-devも要るっぽい?
#sudo yum install make gcc kernel-dev

# CDのマウント
sudo mount -r /dev/cdrom /media
cd /media
# インストール
sudo ./VBoxLinuxAdditions.run
# アンマウント
cd
sudo umount /media
# 再起動
sudo reboot

Guest Additionsを入れるとホストOSと時刻を同期するのでゲスト側のNTPとかああ言うのが動かなくなったりする事がある。(異常ではない)

パフォーマンスの設定

仮想環境は往々にして「重い」と言われます。

確かに中間に1つ余計な物を挟むわけなので多少なりともオーバーヘッドはあるのですが、少し設定を弄れば普通にテストなどに使う分には問題ないくらいのパフォーマンスは出せます。

という訳で私がよくやる設定

まずは設定を開きましょう。

VirtualBoxはなぜかデフォルトで1CPUしか割り当てていないので、システム->プロセッサーからプロセッサー数を増やします。
(「PAE/NXを有効化」は必要に応じてどうぞ)

ストレージから「コントローラ: SATA」を選択、「ホストのI/Oキャッシュを使う」にチェックを入れます。
ホストのI/Oキャッシュ……はチェックを入れるとPCの電源がぶち切れした際にデータがおかしくなるかもなので、不安なら切ったままで良いかと。

GUIがあるOSの場合はディスプレイから、ビデオメモリを増やしたり3Dアクセラレーションを有効化したりするとよいでしょう。

他はだいたいデフォルトでイイカンジに設定されています。

特に割り当てCPUを増やすのが効果が大きいみたいです。

その他

他にもいろいろ……

デフォルトの保存先の変更

SSDを使っている時など、仮想ディスクのバカでかいファイルを別の場所に保存したい状況は良くある。

そんなときはファイル->環境設定->デフォルトの仮想マシンフォルダを変更すれば良い

仮想ディスクの圧縮

仮想ディスクの容量は一度大きくなるとファイルを削除しても小さくならないみたい。(領域の再確保に時間が掛かるから?)

仮想ディスクの容量を小さくするには圧縮を行う必要がある。

まずはゲストOS側で空き領域をゼロ埋めする。

ゲストOSがWindowsならSDeleteをダウンロードして以下のコマンドを

sdelete -z C:

ゲストOSが*nixならddを

dd if=/dev/zero of=zero bs=4k;rm zero

この時に時間が掛かるから最初にディスクの容量を決定した時に「多ければ良いと言う訳でもない」と書いたのです。

次に、ホストOS側でコマンドを実行する。

の前に、ホストOSがWindowsだとPathが通っていないので以下のコマンドで移動する。

cd c:\Program Files\Oracle\VirtualBox

当然ながらインストール先がこれ以外の場所ならそちらへ

でもって、以下のコマンドでディスクのUUIDを確認する。

vboxmanage list hdds

ディスクのUUIDが分かったらそのディスクに対して以下のコマンドで圧縮を行う。

vboxmanage modifyhd UUID --compact

例としてUUIDが65f47188-d840-4d6b-909a-6a2897508249の場合は以下の通り

vboxmanage modifyhd 65f47188-d840-4d6b-909a-6a2897508249 --compact

これで綺麗になった。

Host-Only Networkを削除する

インストーラーから次へ連打で進めると「VirtualBox Host-Only Network」とかいうのが勝手に追加される。

個人的にHost-Onlyは使わないし変なNICがある事になっているのはキモチワルイのでこれを削除する。

ファイル->環境設定->ネットワークからホストオンリーネットワークを選択し、該当の物を消す。

当然ながらHost-Onlyを使うのであれば消してはいけない。

テスト時のネットワーク設定

個人的には、サーバのテストを行う際はネットワーク設定を「ブリッジアダプター」にする事をおススメしている。

理由としては、こちらの方がより実機に近いネットワーク構成になるので、実機で設定を行う際の迷いなどが少なくて済むから。

終わりに

サーバのテストを行うのであれば、構築した仮想環境のVDIを他の場所にコピーしておくのがオススメ。

それでテストに失敗したらコピーしたVDIから上書きで戻せば良い。

VirtualBox側にスナップショットとかエクスポートとかそういう機能はあるけど、私はVDIをコピーしてやるのが一番やりやすいと思う。

え?そういうのはVagrantの仕事だって?

確かにそうだが……Vagrantは1からインストールするのを自動化しているだけ、こっちはインストール済みのをまるっとコピーしている。

どちらの方が早いかは言うまでもないと思う。

 - サーバ運営