見出し画像

#コンピュータ談義 #仮想環境の愉悦 #VirtualBox

VirtualBox でのWEB サーバー

自宅公開WEBサーバーはVirtualBox の仮想環境で構築しています。
(もう数年更新を怠っていますが… orz)

CentOS 7.7 (現在7.9) にVirtualBox をインストールし、仮想環境ではCent OS 7.7 がWEB 環境として稼働しています。
構築当時CentOS 8 が出たばかりで、環境構築に難があったためCent OS 7 を使用しました。
VirtualBox のバージョンは6.0 です。

仮想環境を選んだ理由として下記があります。
1.  完璧なバックアップ
2. 他の環境への移行の容易さ

完璧なバックアップというのは色々と難しい問題があり、仮想環境では比較的簡単に実装できます。(DBとか稼働していると特に…)
システム(WEBサービス)は数分停止しますが、非常に確実な方法です。

バックアップスクリプトは下記の様にしています。

#!/bin/sh

#バックアップ対象VM名
VNAME="w7"

#エクスポート先ディレクトリ
EXPORT_DIR="/backup/exported"

# VMコマンド
VM_CMD="/usr/bin/VBoxManage"

#エクスポート・ファイル名 ('VM名'YYYYMMDD.ova) 
EXPORT_FILE_NAME="${EXPORT_DIR}/${VNAME}_`/bin/date +%Y%m%d`.ova"

#開始時間を記録 
EXPORT_TIME_NAME_s="${EXPORT_DIR}/${VNAME}_`/bin/date +%Y%m%d_%R:%S`.s"
/usr/bin/touch $EXPORT_TIME_NAME_s
echo "########"
echo "-- running vm listing"
$VM_CMD list runningvms

echo "-- start backup at ${EXPORT_TIME_NAME_s}"
# VMをシャットダウン、パワーオフ、エクスポート、再起動
echo "-- shutdown vm"
#$VM_CMD controlvm ${VNAME} acpipowerbutton
echo "-- poweroff"
$VM_CMD controlvm ${VNAME} poweroff soft
echo "-- export"
$VM_CMD export ${VNAME} -o $EXPORT_FILE_NAME
echo "-- start vm"
$VM_CMD startvm ${VNAME} --type headless
echo "-- running vm listing"
$VM_CMD list runningvms

#終了時間を記憶
EXPORT_TIME_NAME_e="${EXPORT_DIR}/${VNAME}_`/bin/date +%Y%m%d_%R:%S`.e"
/usr/bin/touch $EXPORT_TIME_NAME_e
echo "-- end at ${EXPORT_TIME_NAME_e}"
echo "-- "

exit 0

書き出し先はOS とは別のディスク(SSD)にしていますので、OSディスクに問題が生じても復旧可能としています。

復旧確認

実は構築だけ行って、実際の復旧確認までは行っていませんでした… orz

移行テスト

今回復旧確認も兼ねて他の環境へ仮想環境への移行が簡単に行えるか試してみました。

Miracle Linux 9 での移行テスト

ThinkCentre M73 tiny にMiracle Linux 9 をインストールし、更にVirtualBox をインストールして仮想環境の移行確認を行いました。

Miracle Linux 9 のインストール

Miracle Linux 9起動USBメモリーを作成してインストールを行いました。
基本的な手順は下記と殆ど同じです。

VirtualBox のインストール

VirtualBox のインストールは下記手順でコマンドラインベースで行いました。
6.1 と7.0 が選べましたが、今回は新しい方の7.0 でインストールを行いました。

dnf -y install gcc make glibc kernel-headers kernel-devel 
dnf -y upgrade kernel 
reboot
curl http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo -o /etc/yum.repos.d/virtualbox.repo
dnf search virtualbox
dnf -y install VirtualBox-7.0
VBoxManage -v
curl -O http://download.virtualbox.org/virtualbox/7.0.0/Oracle_VM_VirtualBox_Extension_Pack-7.0.0.vbox-extpack 
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.0.vbox-extpack
VBoxManage list extpacks 

仮想環境のインポート

現在サービス中のサーバーからバックアップで取ってある仮想環境エクスポートファイル(ova)をコピーしておきます。
今回は仮想環境名'w7'、エクスポートされたファイル名を'w7.ova' とします。

実際に打つコマンドは下記の一行だけです。

VBoxManage import w7.ova

そうすると、VirtualBox の仮想ファイルディレクトリ(デフォルト:~/VIrtualBox VMs/)に仮想環境名のディレクトリが作成され、その中に必要なファイルが書き出されます。

仮想環境の実行

インポートした仮想環境を実行するのは下記1行のコマンドだけです。

VBoxManage startvm w7

これだけで問題無く仮想環境の実行が行えました。

この後デスクトップに戻ったところ、アプリケーションにVirtualBox のアイコンが追加され、インポートされた仮想環境もGUI上でも登録が確認出来ました。

注意: 初めて実行した時に'VT-x' がイネーブルになっていないというエラーが表示され立ち上がりませんでした。 ThinkCentre M73 tiny ではデフォルトで無効となっている様で、BIOS に入り有効化した後、問題無くVirtualBox は立ち上がる様になりました。

実は移行が問題無く行くとは予想しておらず、きっとエラーが出たり、バーションが違う等からの不具合が出るだろうと考えていました。
あっけなく移行が行えた事に実は驚いています。😝

macOS Monterey (12.6.1)での移行テスト

macOS の方でも試してみました。
Miracle Linux 9 と同じ様にコマンドラインで実行可能ですが、せっかくなのでGUI で行ってみます。
既にVirtualBox がインストール済みな所から始めます。

VirtualBox の起動

VirtualBox を起動すると、下記の様なウィンドウが表示されます。

メニューから、'File/Import Appliance…' を選択します。

下記画面が表示されますので、File 覧右端のフォルダーアイコンをクリックしてファイル選択を行います。

ファイル選択画面で ova ファイルを選択すれば、下記説明が表示されます。

ova ファイル選択が完了しましたら、'Next' ボタンを押します。

下記画面が表示され幾つか設定が行えます。

特にネットワーク設定はお好みですが、私は下記オプションを選択しました。

'Finish' ボタンを押すとインポートが開始されます。
インポート状況が下記の様に表示されます。

インポートが完了すると、下記の様に新たな仮想マシンが登録されます。

仮想マシンが選択されているのを確認し、右矢印アイコンの'Start' を押します。

私の場合、下記ウィンドウが表示され設定変更を促されました。

'Change Network Settings' ボタンを押して、表示された下記ウィンドウに'OK' ボタンを押すことで先に進めました。
サーバー用途ですと、NAT だとちょっと面倒なのでブリッジにして同じIPセグメントで見えるようにしました。

以上でCentOS 7.7 へのログインウィンドウが表示され、ログインした所CentOS 7.7 のデスクトップが表示されました。

何回かログイン・ログアウトを行っていたら画面が表示されなくなってしまったので、Display の割り当てられているメモリーを増やして解消しました。

macOS でも移行が問題無く行えてしまいました。😝

やはりGUIでの説明は面倒ですね…

感想

仮想環境のエクスポート、インポートがこんなに簡単に行えて問題無く動作する事に正直感動ものでした。😝

VirtualBox も6.0 でエクスポートして、7.0 にインポートですから何らかの問題が発生すると予想していたのに完全に外れました。



#コンピュータ談義 #仮想環境の愉悦 #VirtualBox

この記事が気に入ったらサポートをしてみませんか?