VBoxManage:システム管理者のためのCLIによるVirtualBox管理術

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

GUIがあるのになぜコマンドを打つのか?

仮想化を始めたばかりの頃は、私もマウスでクリックするだけの操作が好きでした。しかし、作業量が増えるにつれ、VirtualBoxのウィンドウが開くのを待ってから手動で各マシンを起動するのは非常に時間がかかるようになりました。ステージング環境テスト用に12台ほどのVMでホームラボを構築した際、コマンドライン(CLI)の真の力を実感しました。

簡単に言えば、VBoxManageは普段使っているインターフェースの背後にある「脳」のようなものですが、ボタンによる制限がありません。大量の仮想マシンの作成から午前2時のバックアップスケジュールまで、あらゆることを自動化できます。ヘッドレスモード(画面なし)で仮想マシンを実行すると、グラフィカルインターフェースの負荷がないため、VMごとに約200〜500MBのメモリを節約できます。

クイックスタート:5分でVirtualBoxをマスターする

コマンドを入力する前に、VBoxManageが環境変数(PATH)に含まれていることを確認してください。Linuxでは通常、最初から設定されています。Windowsの場合は、C:\Program Files\Oracle\VirtualBoxを環境変数に追加することで、どこからでもコマンドを呼び出せるようになります。

1. 仮想マシンの一覧を確認する

システムにいくつの仮想マシンがあり、どれがリソースを消費しているかを確認するには、以下のコマンドを使用します。

# すべての仮想マシンを表示
VBoxManage list vms

# 実行中の仮想マシンのみ表示
VBoxManage list runningvms

2. 「ステルス」起動(ヘッドレスモード)

これはサーバーにとって非常に便利な機能です。仮想マシンがバックグラウンドで実行され、コンソールウィンドウが表示されないため、ホストマシンの動作が大幅に軽くなります。

VBoxManage startvm "VM名" --type headless

3. 安全なシャットダウン

ファイルシステムの破損を防ぐため、いきなり電源を切る(Power off)のは避けましょう。物理的な電源ボタンを押したときと同じように、ACPI信号を送信してシャットダウンします。

# ACPI経由で正しくシャットダウンする
VBoxManage controlvm "VM名" acpipowerbutton

# または、次回の使用のために状態を保存する
VBoxManage controlvm "VM名" savestate

ターミナルから直接ハードウェアを構成する

仮想マシンを停止して設定画面を開き、メモリを調整する代わりに、CLIから直接実行できます。これは、過負荷状態のDockerサーバーのリソースを迅速にスケールアップする必要がある場合に非常に便利です。

RAMとCPUのアップグレード

コマンド一行で、仮想マシンに4GBのRAMと2つのCPUコアを割り当てることができます。

VBoxManage modifyvm "Ubuntu_Server" --memory 4096 --cpus 2

サービスにアクセスするためのポートフォワーディング

仮想マシン内でWebサーバーを実行しており、ホストマシンからポート 8080 経由でそのサイトを確認したいとします。ネットワークメニューで迷う必要はありません。次のように入力してください。

VBoxManage controlvm "Ubuntu_Server" natpf1 "guestwww,tcp,,8080,,80"

これで、ホストマシンのブラウザで localhost:8080 にアクセスすると、VirtualBoxが自動的に仮想マシン内のWebサーバーのポート 80 に「接続」してくれます。

スナップショットとバックアップ:あらゆるミスへの備え

検証環境をいじっていると、コマンドの打ち間違いでOSを壊してしまうことはよくあります。私にとって、スナップショットは命綱です。カーネルのアップグレードや未知のソフトウェアをインストールする前には、必ずスナップショットを作成して復元ポイントを確保しています。

迅速なスナップショット作成

VBoxManage snapshot "Ubuntu_Server" take "Dockerインストール前"

過去の状態に戻す

万が一、誤って `rm -rf /` を実行してしまっても、わずか30秒で以前の状態に復元できます。

VBoxManage snapshot "Ubuntu_Server" restore "Dockerインストール前"

仮想マシンを.OVAファイルにエクスポートする

仮想マシンを別のPCに移動したり、同僚に送ったりする必要がある場合、exportコマンドが最もスマートな選択肢です。

VBoxManage export "Ubuntu_Server" -o Ubuntu_Server_Backup.ova

応用:スクリプトによる自動化

実際、CLIの最大の強みはプログラミングのしやすさにあります。私はよく、Bash(Linux)やPowerShell(Windows)スクリプトを使用して、週末にシステム全体のバックアップを行っています。Cronjobと組み合わせれば、バックアップを忘れる心配はもうありません。

以下は、私がよく使用する基本的なバックアップスクリプトの例です。

#!/bin/bash
VM_NAME="Web_Server_Staging"
BACKUP_PATH="/mnt/storage/backups/"
DATE=$(date +%Y%m%d)

echo "データの破損を防ぐため、仮想マシンを一時停止しています..."
VBoxManage controlvm "$VM_NAME" savestate

echo "OVAファイルのエクスポートを開始します..."
VBoxManage export "$VM_NAME" -o "$BACKUP_PATH$VM_NAME_$DATE.ova"

echo "仮想マシンを再起動しています..."
VBoxManage startvm "$VM_NAME" --type headless

echo "$DATE のバックアップが完了しました!"

CLIをより効果的に活用するための実践的なヒント

  • 常にヘッドレスモードを使用する: PCの動作が明らかに軽くなるのを実感できるはずです。すべての管理操作は、仮想マシンのコンソール画面を見るのではなく、SSH経由で行う習慣をつけましょう。
  • マシン名にスペースを入れない: Ubuntu Server 01 ではなく Ubuntu-Server-01 を使用しましょう。これにより、引用符を入力する手間が省け、スクリプトの初歩的なエラーを防ぐことができます。
  • ScreenまたはTmuxを使用する: Linuxでは、tmuxセッション内でVM起動コマンドを実行しましょう。これにより、誤ってターミナルウィンドウを閉じてしまっても、仮想マシンが突然停止するのを防げます。
  • GUIの「フリーズ」を解消する: GUI上で仮想マシンの状態がエラーになり、削除もできなくなった場合は、VBoxManage unregistervm "マシン名" --delete コマンドを使えば一瞬でクリーンアップできます。

結論として、VBoxManageは多くの人が思っているほど難しいものではありません。上記の10個ほどのコマンドをマスターするだけで、仮想化システムの管理をより迅速かつプロフェッショナルに行えるようになります。現在は大規模なプロジェクトにはProxmoxを使用していますが、個人のマシンでテスト環境を素早く構築する必要があるとき、VBoxManageは今でも頼りになるツールです。

Share: