Proxmox VEでは、ZFSレプリケーションを活用したHA機能が提供されており、共有ストレージを必要とせず、ローカルストレージだけでHAを実現できます。ただし、ネットワークストレージや分散ストレージを用いたHAと比較すると、一部「限定的」です。
この記事では、ZFSレプリケーションによるHAの仕組みや設定手順、そして「限定的」なHAによるメリット・デメリットを解説します。
機能概要
ZFSレプリケーションによるHAは、Proxmox VEのクラスタ環境で仮想マシン(VM)やコンテナ(CT)のデータを定期的に別のノードに複製し、障害発生時に自動復旧を可能にする機能です。ZFSのスナップショット機能により定期的にVM/CTのスナップショットを作成し、その差分をネットワーク経由でターゲットノードに送信することで、非同期にデータを同期します。
Proxmox VEのHA機能により、ノード障害時に別のノードでVM/CTを自動起動し、サービスの中断を最小限に抑えます。ただし、非同期レプリケーションであるため、障害時のデータ損失(RPO)がゼロにはならず、レプリケーション間隔に依存します。非同期レプリケーションである点が「限定的な」部分です。
ネットワーク・分散ストレージによるHAとの比較
以下はZFSレプリケーションを利用した場合と、ネットワークストレージ/分散ストレージを利用した場合の比較です。
前述の通り共有ストレージがなくてもHA機能を利用できることがメリットですが、データ同期は非同期となるためレプリケーション差分は失われてしまうため、注意が必要です。
項目 | ZFSレプリケーションによるHA | ネットワークストレージ/分散ストレージによるHA |
---|---|---|
データ同期方式 | 非同期(スケジュールベース) | 同期(リアルタイムアクセス) |
共有ストレージの必要性 | 不要 | 必要 |
障害時のデータ損失 | あり(レプリケーション差分が欠落) | なし |
Step By Step な設定方法
ここからはZFSの作成、レプリケーションの設定、HAの設定までを紹介していきます。
まずは各PVEノードでZFSプールを作成します。

今回は単一ディスクをZFSプールとして作成します。
複数ディスクを利用する場合は対象デバイスを選択する、RAIDレベルを修正するなどが可能です。
ポイントは各PVEノードで同じ名前のZFSプールを作成することです。

ZFSプールを作成するとZFSプール名のストレージとして自動的に追加されます。
以下はPVEノードごとに別名のZFSプールを作成してNGパターンの例です。別名のZFSストレージとして扱われるため、レプリケーションを行うことができません。

同じ名前のZFSプールを作成できていればZFSストレージのノードに各PVEノードが表示されているはずです。

続いて、レプリケーションの設定を行います。
レプリケーションの設定項目はデータセンター/PVEノード/VMの配下にそれぞれありますが、設定内容は同様です。PVEノード/VMから設定した場合、レプリケーション先ノードや対象VMが自動的に指定されています。
また最小のレプリケーション間隔は1分です。


レプリケーション先PVEノードのZFSストレージ内に、レプリケーション対象のディスクが存在すればレプリケーションがされています。

最後にHA設定を行います。
まずはHAグループを作成します。

グループの名前、対象PVEノード、プライオリティを設定します。
プライオリティは数字が大きい方が優先度が高くなります。

グループを作成したら、対象リソースを追加していきます。

対象リソースとHAグループを指定します。

以上で設定は終了です。PVEノード障害発生時にはHA機能が利用できるようになっているはずです。
今回の例では、PVEノード1からPVEノード2に対してレプリケーションおよびHAを行う設定を行いましたが、実際の環境では逆の方向性を持つ設定を行うなどが必要になることも多いと思います。
また、ZFSレプリケーションそのものとは関係ない補足ですが、Qdeviceを利用した2+1構成のPVEクラスタ環境を利用しています。そのため、GUI上からはPVEノード数は2つとなっていますが、HAクラスタとして動作します。2+1構成ではなく、2ノードのPVEクラスタではHA機能は利用できないことに注意が必要です。
株式会社クラスアクトは2023年2月にリセラーパートナー契約を締結して以来、日本市場におけるProxmoxの先駆者的な存在として、豊富な経験と高い技術力を誇っております。 Proxmoxに関するご質問、サブスクリプションのご購入、システム開発のご相談など、お気軽にお声がけください。