?Proxmoxで仮想マシンを外付けSSDなどにバックアップとして保存したいと思ったことはありませんか?
?クラスターを組んでいない環境だけど、ノード間で仮想マシンを移動できたらいいなあと思ったことはありませんか?
クラスター構成ではない環境で、仮想マシンを移動させる方法をコテコテしていたら、うまくいきましたので、記録として残すことにしました。
後日あらためて画像なども掲載したものを掲載する予定ですが、ボリュームが多いため全体を見渡すのが難しくなります。
今回は、全体をコンパクトに見渡せるダイジェスト版を公開します。慣れた方ならば、これだけで十分だと思います。
この記事を書くにあたって、Proxmox GUI操作の記載ルール
ProxmoxのGUIは、左から
・データセンター・ノード・仮想マシン等のデバイス列
・選択したデバイスの詳細項目列
・詳細項目の具体的な内容が記述されている列
という具合に、3列構成になっています。
この記事では、GUI操作を表現する際に、列をまたぐ場合には「>」を記載して左列から表現することにします。
例えば、仮想マシンVM101のハードウェア設定を表示して、メモリを8GBから16GBに変更する場合には、下記のように表現します。
仮想マシン(VM101) > ハードウェア > メモリ 8GBから16GBに変更
1 仮想マシンのバックアップを取る
バックアップしたい仮想マシン(VM101など) > バックアップ > 今すぐバックアップ
で、バックアップを取ります。
今回は、仮想マシンが載っているノードのlocalストレージをバックアップ先として指定します。
2 SSDをホストマシン(ノード)に接続する
ホストマシンにSSDを接続する。USB接続を想定しています。
ノード(ホストマシン) > ディスク > 接続したSSDが認識されていることを確認
ここではSSDが、デバイス /dev/sde として認識されているとします。
3 SSDをノードにマウントする
シェルを起動します。
ノード > シェル
マウント先を作成。最後に削除することとなるので、どこでもよいと思います。今回はルート上にvmSSDという名称でディレクトリを作成します。
# cd /
# mkdir /vmSSD
マウント先が作成されていることを確認したら、接続したデバイスをマウントします。
# mount /dev/sde /vmSSD
大切なポイント!!
下記のようなメッセージが出たときの対処方法
mount: /vmSSD: special device /dev/sde/ does not exist (a path prefix is not a directory).
dmesg(1) may have more information after failed mount system call.
SSDのフォーマット形式が定義されていないときに出るエラーです。形式を指定してフォーマットします。今回はext4形式を指定します。
# mkfs.ext4 /dev/sde
# mount /dev/sde /vmSSD
フォーマット後、マウントを再度行うとSSDがマウントされる。SSDが/vmSSDの配下にマウントされています。
4 SSDへバックアップデータをコピーする
今回のバックアップ先はlocalでした。
local のディレクトリは、
データセンター > ストレージ を見ると、パス/ターゲット欄から、
/var/lib/vz
とわかります。
シェルから当該ディレクトリ内を見てみると、
# cd /var/lib/vz
# ls
dump images template
のように見えます。
dumpのディレクトリ内を見てみると、
vzdump-qemu-101-2025_02_11-20_36_26.log
vzdump-qemu-101-2025_02_11-20_36_26.vma.zst
vzdump-qemu-101-2025_02_11-20_36_26.vma.zst.notes
のような感じで、バックアップした仮想マシンが保存されていることがわかります。
仮想マシンのデータをdumpディレクトリごと、SSDへコピーします。
# cp -r /var/lib/vz/dump /vmSSD
コピーが完了したら、SSDをアンマウントして取り外します。
# umount /vmSSD
ここまで行ってきたことのおさらい
1 仮想マシンのバックアップデータをノードのlocalストレージに保存
2 SSDをホストマシン(ノード)へUSB接続してマウント
3 localストレージ内のバックアップデータをSSDへコピーをしてSSDを取り外す
5 移動先のノードへSSDを接続してバックアップデータをコピーする
移動先のノードにSSDを接続します(USB接続です)。
移動先ノード(ホストマシン) > ディスク > 接続したSSDが認識されていることを確認
ここではSSDが、デバイス /dev/sde として認識されているとします。
シェルを起動し、マウント先を作成し、SSDをマウントします。今回も最後に削除することとなるので、ルート上にvmCOPYというディレクトリを作成し、そこへマウントすることとします。
移動先のノード > シェル
# cd /
# mkdir /vmCOPY
# mount /dev/sde /vmCOPY
移動先のノードに、SSDを追加します。
データセンター > ストレージ > 追加
追加:ディレクトリの画面では、下記のように設定します。
ID: vmCOPY
ディレクトリ: /vmCOPY
内容: VZDumpバックアップファイル を追加(これを忘れないこと!)
続いて、移動先のノードに追加したSSDのバックアップの項目を見てみます。
vmCOPY(移動先のノードのストレージ) > バックアップ
ここに、
vzdump-qemu-101-2025_02_11-20_36_26.vma.zst
という具合に、仮想マシンのバックアップデータが出てきます。
同時に、上にはリストアのボタンがアクティブになっていますので、リストアボタンを押します。
肝心なポイント!
リストア:VMの画面では、「ストレージ:」の項目で、移動先のノード上で仮想マシンのデータを蔵置したい場所を選択することに注意します。
移動先のノードへリストアが完了したら、仮想マシンの動作確認をする。
無事に仮想マシンのマイグレーションができたと思います。バックアップ元のホストから、異なるホストへリストアすればマイグレーションになりますし、同一のホストにリストアすれば、バックアップした仮想マシンを復元することになります。
あとかたづけ
各ノードのルートディレクトリ上に作成した/vmSSDや/vmCOPYは、削除します。
# cd /
# rm -r /vmSSD
移動先のノードに追加したストレージSSDを削除します。
データセンター > ストレージ > vmCOPY 削除
ここに記録した手順は検証した上での手順を記載しています。Linux勉強中の当方ですので、もしも至らないところがあった場合にはご容赦くださいませ。