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」でインストールしておく
2 | # vzdump and ftp upload script |
5 | UPLOADDIR="/disk1/backup/dump" |
14 | # create upload directory |
15 | lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST |
16 | mkdir $UPLOADDIR/transfer" |
19 | # dump and upload virtual machine |
20 | # "vzlist -1" : dump active VM only |
21 | # "vzlist -a -1": dump all VM |
22 | # "vzlist -S -1": dump standby VM only |
23 | for hostid in `vzlist -1` |
27 | vzdump --dumpdir $DUMPDIR $hostid |
28 | lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST |
34 | lftp -c "open -u $FTPUSER,$FTPPASSWORD $FTPHOST |
上記スクリプトは毎日夜間に実行するつもりのものなので、NetAppライクに「daily.数字」という感じでディレクトリを作成しています。