2025/04/17 追記
最近この記事へのアクセスが微妙にあるので、注釈を入れておきます。
この記事で紹介しているものは、2025年現在のProxmox環境ではサポートされていないOpenVZ仮想マシンをバックアップする際の手法について書いたものです。
vzdumpコマンドは残っていますが、仮想マシン一覧を取得するvzlistはなくなっています。
一覧を qm listなどに置き換える、また、バックアップ保存先へのアップロード手法を lftp ではなくほかの手法にする、などを行うことで2025年で使える内容になるかと思います。
参考資料: PVE 8.3.5環境で実行したvzdumpコマンドのログ例
root@pve3:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
101 windows-zfs stopped 8092 60.00 0
103 linux2-ceph stopped 2048 40.00 0
105 wintest3-nfs stopped 2048 40.00 0
root@pve3:~# vzdump --dumpdir /mnt/pve/ontap 103
INFO: starting new backup job: vzdump 103 --dumpdir /mnt/pve/ontap
INFO: Starting Backup of VM 103 (qemu)
INFO: Backup started at 2025-04-17 15:06:25
INFO: status = stopped
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: VM Name: linux2-ceph
INFO: include disk 'scsi0' 'cephpool:vm-103-disk-0' 40G
INFO: creating vzdump archive '/mnt/pve/ontap/vzdump-qemu-103-2025_04_17-15_06_25.vma'
INFO: starting kvm to execute backup task
INFO: started backup task '930f41bc-3a8d-4ec6-b998-a1ec012a9c0a'
INFO: 6% (2.7 GiB of 40.0 GiB) in 3s, read: 912.7 MiB/s, write: 99.1 MiB/s
INFO: 8% (3.3 GiB of 40.0 GiB) in 6s, read: 201.6 MiB/s, write: 73.6 MiB/s
INFO: 30% (12.3 GiB of 40.0 GiB) in 9s, read: 3.0 GiB/s, write: 64.6 MiB/s
INFO: 31% (12.6 GiB of 40.0 GiB) in 12s, read: 116.0 MiB/s, write: 116.0 MiB/s
INFO: 54% (21.6 GiB of 40.0 GiB) in 15s, read: 3.0 GiB/s, write: 53.8 MiB/s
INFO: 55% (22.1 GiB of 40.0 GiB) in 19s, read: 115.2 MiB/s, write: 114.9 MiB/s
INFO: 56% (22.4 GiB of 40.0 GiB) in 22s, read: 111.8 MiB/s, write: 111.8 MiB/s
INFO: 71% (28.5 GiB of 40.0 GiB) in 26s, read: 1.5 GiB/s, write: 89.6 MiB/s
INFO: 77% (31.0 GiB of 40.0 GiB) in 29s, read: 877.2 MiB/s, write: 95.0 MiB/s
INFO: 78% (31.4 GiB of 40.0 GiB) in 32s, read: 120.8 MiB/s, write: 120.3 MiB/s
INFO: 100% (40.0 GiB of 40.0 GiB) in 2m 54s, read: 62.1 MiB/s, write: 537.0 KiB/s
INFO: backup is sparse: 36.98 GiB (92%) total zero data
INFO: transferred 40.00 GiB in 174 seconds (235.4 MiB/s)
INFO: stopping kvm after backup task
INFO: archive file size: 3.03GB
INFO: Finished Backup of VM 103 (00:02:56)
INFO: Backup finished at 2025-04-17 15:09:21
INFO: Backup job finished successfully
INFO: notified via target `mail-to-root`
root@pve3:~# ls -l /mnt/pve/ontap/
total 3187656
-rw-r--r-- 1 root root 1978 Apr 17 15:06 vzdump-qemu-103-2025_04_17-15_06_25.log
-rw-r--r-- 1 root root 3251337728 Apr 17 15:06 vzdump-qemu-103-2025_04_17-15_06_25.vma
root@pve3:~#
Proxmox VEにはOpenVZ仮想マシンのバックアップを容易に取れるように、専用ツールvzdumpが用意されている。
このvzdumpは、OpenVZのwikiにも掲載されているぐらいの便利ツールのようです。
vzdumpでバックアップを行うと、各仮想マシンごとにtarファイルができあがります。
さて、このバックアップファイルを、Proxmoxサーバ内部に残しておくとバックアップの意味がないので、外部サーバに転送しましょう。
NFSでマウントした先にコピーというのが一番簡単なやりかたですが、安いNASだとNFSに対応していない場合があります。
まぁ、具体的にはLinkStationをバックアップ先にしたいです。
この場合、CIFS、ftp、そして、rsync(LinkStationは「バックアップ」と呼ばれている)で転送することができますが、無難なあたりでftpで転送する、とします。
そんなスクリプトを作りました
仕様
・ftpサーバに指定ユーザ・パスワードでログインする
・バックアップは10世代保存とする。
・起動中の仮想マシンのみバックアップする
・Proxmoxサーバ内にバックアップイメージを作成するが、容量が少なく済むように1個ずつ実施する
・lftpを使ってアップロードするので、「aptitude install lftp」でインストールしておく
#!/bin/bash
# vzdump and ftp upload script
#
DUMPDIR="/work"
UPLOADDIR="/disk1/backup/dump"
FTPHOST="IPアドレス"
FTPUSER="ユーザ名"
FTPPASSWORD="パスワード"
cd $DUMPDIR
vzlist > vzlist.log
# create upload directory
lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST
mkdir $UPLOADDIR/transfer"
# dump and upload virtual machine
# "vzlist -1" : dump active VM only
# "vzlist -a -1": dump all VM
# "vzlist -S -1": dump standby VM only
for hostid in `vzlist -1`
do
echo $hostid;
cd $DUMPDIR
vzdump --dumpdir $DUMPDIR $hostid
lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST
cd $UPLOADDIR/transfer
mput -E *.tar *.log"
done
# lotate
lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST
cd $UPLOADDIR
rm -r daily.9
mv daily.8 daily.9
mv daily.7 daily.8
mv daily.6 daily.7
mv daily.5 daily.6
mv daily.4 daily.5
mv daily.3 daily.4
mv daily.2 daily.3
mv daily.1 daily.2
mv daily.0 daily.1
mv transfer daily.0"
上記スクリプトは毎日夜間に実行するつもりのものなので、NetAppライクに「daily.数字」という感じでディレクトリを作成しています。