Proxmox 仮想マシンのバックアップとリストア方法

Proxmox

ProxmoxVEにおける仮想マシンのバックアップ、移行先マシンへのネットワークコピー、リストアの方法を解説します。

1.proxmoxのシェルを起動

proxmoxのコンソールからシェルを起動します。

proxmoxのシェルは画面を変えるとログアウトしてしまいますので、シェル画面を変えずにコマンド操作するか、teratermでssh接続します。

2.VM番号の確認

仮想マシンのイメージファイル操作は、qmコマンドで行います。

"qm list"で仮想マシンのVMIDや動作状態などを確認することができます。

qmコマンドはproxmox専用のコマンドで、ubuntuやCentOSには存在しません。

root@falcon-proxmox:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID       
       101 ace-webserver        running    2048              32.00 6775      
       102 ubuntu2204-softether running    2048              32.00 2055      
       105 aipocentos7          stopped    2048               0.00 0         
       107 falcon-ad1           stopped    4096              64.00 0         
       108 falcon-zabbix        running    8192             120.00 5391      
       109 aipo-rockylinux      running    2048              32.00 4646      
       121 postfix-relay-rocky  running    2048              32.00 455964

バックアップする仮想マシンが動作中である場合は、仮想マシン内にログインしてシャットダウンを行います。

仮想マシンは"qm stop <VMID>"で強制終了も行えます。ただし、データが消失することがあるため自己責任でお願いします。

3.vzdumpでバックアップ作成

vzdumpコマンドでバックアップを作成します。

バックアップファイル作成には時間がかかるため、余裕を見て作業します。

VMID=107 falcon-ad1をバックアップした場合は、以下コマンドになります。

# vzdump 107 --compress zstd

dumpされたイメージファイルは、/var/lib/vz/dump/に保存されます。

# cd /var/lib/vz/dump/
# root@falcon:/var/lib/vz/dump# ls
vzdump-qemu-107-2024_06_19-00_46_29.vma.zst

イメージファイルは圧縮されますが、数十Gbytesくらいになる場合がほとんどです。

proxmox内のストレージ容量を超える場合は、NFSなどをマウントして保存先を指定します。

# vzdump 107 --compress zstd --dumpdir /mnt/vz/

 4.scpコマンドで移行先サーバーへdumpファイルをコピー

dumpファイルはscpコマンドで、ネットワーク経由でコピーする方法が簡単で確実です。

scpコマンドにおいて、移行先サーバー指定は "root@192.168.100.249:/var/lib/vz/dump/"のように入力します。

コピー開始前にrootパスワードが聞かれるので入力します。

# cd /var/lib/vz/dump
# scp vzdump-qemu-107-2024_06_19-00_46_29.vma.zst root@192.168.100.249:/var/lib/vz/dump
root@192.168.100.249's password:
vzdump-qemu-107-2024_06_19-00_46_29.vma.zst 100% 9131MB 111.7MB/s 01:21

コピー作業はこれだけで済みます。

5.移行先サーバーでdumpファイルをリストアする

仮想マシンのリストアはqmrestoreコマンドで行います。

以下は移行先サーバーで"vmid=109"としてリストアした場合になります。

リストアも時間がかかるため、時間の余裕は見ておくようにします。

# cd /var/lib/vz/dump
# qmrestore vzdump-qemu-107-2024_06_19-00_46_29.vma.zst 109 --storage local-lvm

仮想ホストのストレージ形式が、zfs(raid1)からlocal-lvm(non-raid)に変わる場合は、"--storage"を指定する必要があります。

ストレージ名称は/etc/pve/storage.cfgに記載されているとおりに入力します。

以下の例は仮想ホスト用ストレージ2つ積んだマシンです。

  • local-lvm: ProxmoxOSが入っているストレージ(HDD500G)
  • lvm2:増設したストレージ(HDD 2T)
# cat /etc/pve/storage.cfg 
dir: local
        path /var/lib/vz
        content backup,iso,vztmpl

lvmthin: local-lvm
        thinpool data
        vgname pve
        content rootdir,images

dir: lvm2
        path /mnt/pve/lvm2
        content snippets,rootdir,images,backup,vztmpl,iso
        is_mountpoint 1
        nodes falcon-proxmox

仮想マシンのリストアができたら、仮想マシンが完成していることを確認します。

仮想マシンは「ハードウェア」でハードディスク、ネットデバイスを移行先のマシンに変更してから起動します。

起動したら、サーバーにログインし、ipアドレス等の基本設定と動作確認を行いましょう。

6.アト作業

vmdkファイルはサイズが大きいため、移行ホスト先で起動出来たら削除します。

後で消しても良いのですが、vzdumpのファイル名では中身がわからないため、結局、削除することになります。

筆者の場合、移行前のサーバーは完全移行できた時点で削除しています。

# cd /var/lib/vz/dump
# rm -f vzdump* (-fはforceの意味)

Proxmoxの仮想マシンのバックアップとリストアは簡単です。

マシン間のコピーに使うscpは、仮想マシンを管理していると多用しますので、覚えておくとよいでしょう。