KVM仮想マシンをrsyncで一括バックアップ

公開 | 更新 
図1.中華mSATA 1TB SSD使用不能に

KVM 仮想環境に使っているストレージが使用不能になる障害を踏まえ、 KVM 仮想マシン を同じネットワーク内のMac Proへ rsync を使って、定期的に バックアップ する仕組みを組みました。

QEMU KVM仮想マシンの現状確認

以前、普段仕事で使っているUbuntu 18.04デスクトップ機に、KVM / QEMUによる仮想開発環境を構築しました。

更にその後、仮想ディスクのプール先に使用していたストレージをSSDへ入れ替え

快適に使っていたのもつかの間、数ヶ月後にはSSDは爆熱状態でもう認識されなくなりました。

図1.中華mSATA 1TB SSD使用不能に

図1.中華mSATA 1TB SSD使用不能に

換装前のHDDを再び現役に戻しつつ、今後に備えてKVM仮想マシンの定期的なバックアップを思い立ったというのが、事の次第です。

 

バックアップ対象を確認

KVM仮想マシンはその設定を記したXMLファイルと、仮想ディスクファイルにより構成されており、前者は virsh dumpxml でエクスポートすることも出来るのですが、今回は格納されているディレクトリ /etc/libvirt/qemu/ を丸ごとバックアップすることにします。

仮想ディスクはデフォルトの格納ディレクトリ /var/lib/libvirt/images/ に加えて、前回の構築時にシステムとは別のストレージにプールを追加して以降は、専らこちらに仮想ディスクを置いています(そして今回死んだSSDがこのストレージというわけです)。

 

バックアップ先はMacPro

バックアップ先に選んだのは、同じネットワーク内にいる「岡持ち」Mac Pro (Mid 2010)です(関連記事はこちら)。4基あるSSDのうちの1つに適当な名前で新規フォルダを作成して、バックアップ先としました。

Macのボリューム名には半角スペースが含まれているので、この処理方法を確認しておきます。

パスを直接記述する場合は、半角スペース前をバックスラッシュで逃がし、パス全体をクォーテーションで囲むと、意図したように解釈してもらえました。

実際バッチファイルを組む場合には、パス文字列を変数に入れてき、 rsync コマンドにはその変数を渡しますが、その際の対処は少し異なりました(後述)。

 

 動いている仮想マシンはいないか

バックアップに際しては、仮想マシンが全て停止していることが安全確実。

普段、PCの電源を入れたままで帰るので、元々、夜になったら自動的に全てシャットダウンするよう、次のコマンドを cron に登録していました。

 

さらに、 virsh list コマンドは稼働中の仮想マシン有無により、その結果が次のように異なることから、

バックアップの実行前に以下の要領で、全仮想マシンの停止確認を行なうようにします。

 

rootアカウントのssh鍵認証

バッチファイルによるrsyncの自動実行に欠かせないのがsshの鍵認証。 ssh-keygen コマンドでrootユーザの鍵を作成し、バックアップ先のMac Proの ~/.ssh/authorized_keys に追加しておきます。

 

バッチファイルの組み立て

その他、簡単なネットワーク疎通確認などを加え、以下のようにバッチファイルが組み上がりました。

ここで前述のMac Pro内の半角スペースを含むパスの取り扱いでは、まず変数の中へはバックスラッシュで逃がさずに記述し、 rsync へ渡す変数をクォーテーションで囲む必要がありました。

 

cronへ登録して定期実行

これを夜間実行するよう、 cron へ登録します。

実行結果はログファイルに上書き出力されるので、前回の実行結果を確認することができます。

 

created by Rinker
¥3,247 (2024/03/04 22:38:14時点 Amazon調べ-詳細)
created by Rinker
¥2,398 (2024/03/04 22:38:15時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA