Niriakot Inc.

AIとITとコンサルティング

Proxmox VE ホスト本体のバックアップ術:設定ファイルを守る方法

 


Proxmox VE (PVE) を運用していると、VMやCT(コンテナ)のバックアップ(VZDump)は日常的に行っている方が多いでしょう。しかし、万が一PVEホスト自体が起動しなくなったり、設定を誤って戻せなくなったりした場合、PVEホスト(本体)の設定はバックアップされているでしょうか?

VMのデータが無事でも、ホストの設定(ネットワーク、ストレージ、クラスタ設定など)が失われると、復旧には多大な時間がかかります。

この記事では、VM/CTのデータとは別に、PVEホスト本体の重要な設定ファイルをバックアップし、万が一の際に備える方法について解説します。


なぜホスト本体のバックアップが必要か?

PVEホストのバックアップは、主に以下のシナリオで役立ちます。

  • ホストOSの障害: システムドライブ(ブートドライブ)の故障。
  • アップグレードの失敗: apt upgrade やメジャーバージョンアップに失敗し、システムが不安定になった場合。
  • 設定ミス: ネットワーク設定やストレージ設定を誤り、PVEにアクセスできなくなった場合。
  • ハードウェアの移行: 別のマシンにPVE環境を再構築する際、設定を引き継ぎたい場合。

バックアップ対象の重要ファイル・ディレクトリ

PVEの「本体設定」は、主に /etc ディレクトリ以下に集中しています。特に重要なのは以下のファイルとディレクトリです。

  • /etc/pve/
    • 最重要ディレクトリです。
    • VM/CTの設定 (qemu-server/*.conf, lxc/*.conf)
    • ストレージ設定 (storage.cfg)
    • クラスタ設定
    • ネットワーク設定 (PVEのGUIで管理している場合)
    • など、PVEの根幹設定がすべて含まれます。
  • /etc/network/interfaces
    • ホストOSの基本的なネットワーク設定(IPアドレス、ブリッジなど)。
  • /etc/hosts
  • /etc/hostname
  • /etc/resolv.conf
    • DNS設定。
  • /etc/ssh/
    • SSHサーバーの設定とホストキー。
  • /etc/fstab
    • マウントポイントの設定(もし独自に追加している場合)。
  • /root/
    • rootユーザーのホームディレクトリ。自作のスクリプトなどを置いている場合は対象に含めます。

バックアップの具体的な手順

最も手軽で確実な方法は、これらの重要なファイルを tar コマンドでアーカイブ(1つのファイルにまとめる)し、PVEホストとは別の場所(NFS/CIFS共有、USBメモリ、別マシンなど)に保存することです。

1. バックアップ用ディレクトリの準備 (オプション)

バックアップファイルを一時的に置く場所を作成します。(NFSなどを直接指定する場合は不要)

mkdir /var/backup

2. tarアーカイブの作成

以下のコマンドで、必要な設定ファイルをまとめてアーカイブします。

# 日付を変数に格納 (例: proxmox-host-backup-20251021.tar.gz)
BACKUP_FILE="/var/backup/proxmox-host-backup-$(date +%Y%m%d).tar.gz"

# 重要なディレクトリをtarでアーカイブ (z: gzip圧縮, c: 作成, f: ファイル指定)
# / (ルート) からの絶対パスで指定することで、解凍時に構成が分かりやすくなります
tar -zcf ${BACKUP_FILE} \
    /etc/pve \
    /etc/network/interfaces \
    /etc/hosts \
    /etc/hostname \
    /etc/resolv.conf \
    /etc/ssh \
    /etc/fstab \
    /root
[ここにコマンド実行結果の例(スクリーンショット)を挿入]
tar: Removing leading `/' from member names
/etc/pve/
/etc/pve/nodes/
/etc/pve/nodes/pve-node1/
... (ファイルがリストされる) ...
/root/.bashrc

3. アーカイブを外部に転送

作成したバックアップファイル (.tar.gz) を、PVEホスト以外の安全な場所に転送します。

例1: scp を使って別のLinuxマシンに転送

# scp [バックアップファイル] [ユーザー名]@[転送先IP]:[転送先パス]
scp ${BACKUP_FILE} user@192.168.1.100:/home/user/backups/

例2: マウント済みのNFS/CIFSストレージにコピー

PVEにバックアップ用のストレージ(NFSやCIFS)をマウントしている場合、そこに cp コマンドでコピーします。

# /mnt/pve/NFS-Backup がマウントポイントの場合
cp ${BACKUP_FILE} /mnt/pve/NFS-Backup/host_backups/

【ポイント】
PVEのバックアップ機能(VZDump)で使っているストレージに、ホスト設定用のディレクトリ(例: host_backups)を作って、そこに保存するのが管理しやすいでしょう。


スクリプトによる自動化 (Cron)

手動でのバックアップは忘れがちです。シェルスクリプトを作成し、cron を使って定期的に自動実行するようにしましょう。

1. バックアップスクリプトの作成

nanovim でスクリプトファイルを作成します。

nano /root/backup_host_config.sh

以下にスクリプトの例を記述します。(★の部分はご自身の環境に合わせてください)

#!/bin/bash

# --- 設定項目 ---
# ★バックアップ保存先 (マウント済みの外部ストレージのパスを推奨)
BACKUP_DIR="/mnt/pve/NFS-Backup/host_backups" 
# ★バックアップ保持日数 (これより古いものは削除される)
KEEP_DAYS=7                                 
# --- 設定項目ここまで ---

# 保存先ディレクトリが存在しない場合は作成
mkdir -p ${BACKUP_DIR}

# バックアップファイル名 (日付と時間)
BACKUP_FILE="${BACKUP_DIR}/proxmox-host-backup-$(date +%Y%m%d-%H%M).tar.gz"

# ログファイル
LOG_FILE="${BACKUP_DIR}/backup.log"

# tarコマンドでアーカイブ (エラーも含めてログに出力)
{
    echo "Backup started: $(date)"
    tar -zcf ${BACKUP_FILE} \
        /etc/pve \
        /etc/network/interfaces \
        /etc/hosts \
        /etc/hostname \
        /etc/resolv.conf \
        /etc/ssh \
        /etc/fstab \
        /root
    echo "Backup finished: ${BACKUP_FILE}"
} > ${LOG_FILE} 2>&1

# 古いバックアップの削除 (指定日数より古いものを削除)
find ${BACKUP_DIR} -name "proxmox-host-backup-*.tar.gz" -mtime +${KEEP_DAYS} -exec echo "Deleting old backup: {}" \; -exec rm {} \; >> ${LOG_FILE}

echo "Proxmox host backup script finished."

2. 実行権限の付与

chmod +x /root/backup_host_config.sh

3. Cron(定期実行)の設定

crontab -e を実行し、cronの編集画面を開きます。

crontab -e

ファイルの末尾に、例えば「毎日AM 3:00」に実行する設定を追加します。

# 毎日 AM 3:00 にホスト設定をバックアップ
0 3 * * * /root/backup_host_config.sh
[ここに crontab -e の編集画面(スクリーンショット)を挿入]

これで、毎日自動でホスト設定がバックアップされるようになります。


復元(リストア)時の注意点

バックアップからの復元は、PVEホストをクリーンインストールした後に行うのが基本です。

復元は非常にデリケートな作業です。 状況を悪化させないよう、慎重に行ってください。

  1. PVEのクリーンインストール:
    • バックアップ時と同じバージョンのPVEをインストールするのが理想です。
    • インストール時、ホスト名やIPアドレスはバックアップ時と同じ設定にしておきます。
  2. ネットワークの疎通確認:
    • まず、SSHやWeb GUIにアクセスできることを確認します。
  3. バックアップファイルの展開:
    • 外部ストレージからバックアップファイル(.tar.gz)をホストに持ってきて、一時ディレクトリ(例: /tmp/restore)に展開します。
    mkdir /tmp/restore
    tar -zxf proxmox-host-backup-20251021.tar.gz -C /tmp/restore
    
  4. 設定ファイルの比較と反映:
    • いきなり上書きは危険です!
    • 特に /etc/network/interfaces/etc/hosts は、インストール直後のファイルと、バックアップしたファイル(/tmp/restore/etc/network/interfaces など)を見比べ (diff コマンドなど)、必要な箇所だけを慎重に反映させます。
    • 最重要の /etc/pve/ について:
      • クラスタ構成でない(単一ノード)場合は、インストール直後の /etc/pve をリネーム退避させ、バックアップした /etc/pve を丸ごとコピーすることで、VM/CTやストレージの設定が復元できる場合が多いです。
      # サービスを停止 (念のため)
      systemctl stop pvedaemon pveproxy pve-cluster
      
      # 現在の設定を退避
      mv /etc/pve /etc/pve.bak
      
      # バックアップからリストア
      cp -R /tmp/restore/etc/pve /etc/
      
      # サービスを再開
      systemctl start pvedaemon pveproxy pve-cluster
      
      • クラスタ構成の場合: /etc/pve の安易な上書きはクラスタを破壊する可能性があります。必要な設定(storage.cfg など)を参照しながら、手動で再設定するか、PVEの専門家の助けを借りることを推奨します。
  5. 再起動:
    • 設定を反映したら、PVEホスト自体を再起動して、VMやCTが正しく認識・起動されるか確認します。

【注意】
Proxmox Backup Server (PBS) を導入している場合、PBSの機能でホスト設定のバックアップ・リストアが可能です。PBSを利用している場合は、そちらの方法も合わせて検討してください。

まとめ

VM/CTのバックアップ(VZDump)は「データ」の保護、ホスト本体のバックアップは「環境」の保護です。

どちらが欠けても、迅速な復旧は困難になります。

今回紹介したスクリプトとcronを使い、PVEホスト本体の設定ファイルも定期的にバックアップする習慣をつけ、万が一の障害に備えましょう。