名前

pvesr - Proxmox VEストレージレプリケーション

SYNOPSIS

pvesr <COMMAND> [ARGS] [OPTIONS] です

pvesr create-local-job <id> <target> [OPTIONS].

新しいレプリケーション・ジョブの作成

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

<ターゲット>: <文字列

対象ノード

--コメント <文字列

説明

--無効 <ブール値

エントリーを無効化/非活性化するフラグ。

--レート <数値> (1 - N)

mbps(メガバイト/秒)単位のレート制限を浮動小数点数で指定します。

--remove_job <full | local>.

レプリケーション・ジョブを削除するようにマークします。このジョブはすべてのローカルレプリケーションスナップショットを削除します。フルに設定すると、ターゲット上のレプリケートされたボリュームも削除しようとします。その後、ジョブは構成ファイルから自身を削除します。

--スケジュール <文字列>(デフォルト = */15)

ストレージのレプリケーションスケジュール。このフォーマットはsystemdカレンダーイベントのサブセットです。

--ソース <文字列

ゲストが盗まれたかどうかを検出するための内部使用。

pvesr delete <id> [OPTIONS].

削除するレプリケーション・ジョブをマークします。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

--force <ブール値>(デフォルト = 0)

jobconfig エントリを削除しますが、クリーンアップはしません。

--keep <boolean>(デフォルト = 0)

レプリケートされたデータをターゲットに保持します(削除しないでください)。

pvesr disable <id

レプリケーション・ジョブを無効にします。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

pvesr enable <id>

レプリケーション・ジョブを有効にします。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

pvesr finalize-local-job <id> [<extra-args>] [OPTIONS].

レプリケーション・ジョブを確定します。これにより、<last_sync>と異なるタイムスタンプを持つすべてのレプリケーション・スナップショットが削除されます。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

<extra-args>: <array> です。

検討するボリュームIDのリスト。

--last_sync <整数> (0 - N)

最後に同期に成功した時刻(UNIXエポック)。指定しない場合は、すべてのレプリケーションスナップショットが削除されます。

pvesr help [OPTIONS]

指定したコマンドに関するヘルプを表示します。

--extra-args <array> です

特定のコマンドのヘルプを表示します。

--verbose <ブール値

冗長出力フォーマット。

pvesrリスト

レプリケーション・ジョブを一覧表示します。

pvesr prepare-local-job <id> [<extra-args>] [OPTIONS].

レプリケーション・ジョブの開始準備。これはレプリケーション開始前にターゲットノードで呼び出されます。この呼び出しは内部用で、標準出力にJSONオブジェクトを返します。このメソッドは、まず VM <vmid> がローカルノードに存在するかどうかをテストします。存在する場合は直ちに停止します。その後、このメソッドはスナップショットについてすべてのボリュームIDをスキャンし、<last_sync>と異なるタイムスタンプを持つすべてのレプリケーション・スナップショットを削除します。また、未使用のボリュームも削除します。既存のレプリケーション・スナップショットを持つすべてのボリュームのブール値マーカーを持つハッシュを返します。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

<extra-args>: <array> です。

検討するボリュームIDのリスト。

--force <ブール値>(デフォルト = 0)

既存のボリュームをすべて削除できます(空のボリュームリスト)。

--last_sync <整数> (0 - N)

最後に同期に成功した時刻(UNIXエポック)。指定しない場合は、すべてのレプリケーション・スナップショットが削除されます。

-親スナップ名 <文字列

スナップショットの名前。

--スキャン <文字列

古くなったボリュームをスキャンするストレージIDのリスト。

pvesr read <id>

レプリケーション・ジョブの設定を読み取ります。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

pvesr run [OPTIONS]

このメソッドは systemd-timer によって呼び出され、すべての(または特定の)同期ジョブを実行します。

--id [1-9][0-9]{2,8}-d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

--メール <ブール値>(デフォルト = 0)

障害発生時にメール通知を送信します。

--verbose <boolean>(デフォルト = 0)

標準出力に詳細なログを出力します。

pvesr schedule-now <id>

レプリケーション・ジョブをできるだけ早く開始するようにスケジュールします。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

pvesr set-state <vmid> <state>です。

マイグレーション時にジョブのレプリケーション状態を設定します。この呼び出しは内部用で、ja JSON objとしてジョブ状態を受け取ります。

<vmid>: <整数> (100 - 999999999)

VMの(一意の)ID。

<状態>: <文字列

JSON デコードされた文字列としてのジョブ状態。

pvesr status [OPTIONS]

このノードのすべてのレプリケーション・ジョブのステータスを一覧表示します。

--ゲスト <整数> (100 - 999999999)

このゲストのレプリケーションジョブのみをリストします。

pvesr update <id> [OPTIONS].

レプリケーション・ジョブ構成を更新します。

<id>: [1-9][0-9]{2,8}-\d{1,9}

レプリケーション・ジョブID。IDはゲストIDとジョブ番号で構成され、ハイフンで区切られます(<GUEST>-<JOBNUM>)。

--コメント <文字列

説明

--削除 <文字列

削除したい設定のリスト。

-ダイジェスト <文字列

現在のコンフィギュレーション・ファイルのダイジェストが異なる場合、変更を防止します。これは同時修正を防ぐために使用できます。

--無効 <ブール値

エントリーを無効化/非活性化するフラグ。

--レート <数値> (1 - N)

mbps(メガバイト/秒)単位のレート制限を浮動小数点数で指定します。

--remove_job <full | local>.

レプリケーション・ジョブを削除するようにマークします。このジョブはすべてのローカルレプリケーションスナップショットを削除します。フルに設定すると、ターゲット上のレプリケートされたボリュームも削除しようとします。その後、ジョブは構成ファイルから自身を削除します。

--スケジュール <文字列>(デフォルト = */15)

ストレージのレプリケーションスケジュール。このフォーマットはsystemdカレンダーイベントのサブセットです。

--ソース <文字列

ゲストが盗まれたかどうかを検出するための内部使用。

説明

pvesrコマンドラインツールは Proxmox VE ストレージレプリケーションフレームワークを管理します。ストレージレプリケーションは、ローカルストレージを使用するゲストに冗長性をもたらし、移行時間を短縮します。

ゲストボリュームを別のノードにレプリケートし、共有ストレージを使用せずにすべてのデータを利用できるようにします。レプリケーションでは、スナップショットを使用してネットワーク経由で送信されるトラフィックを最小限に抑えます。そのため、最初の完全同期の後、新しいデータは増分的にしか送信されません。ノードに障害が発生した場合でも、ゲストデータはレプリケートされたノードで利用可能です。

レプリケーションは設定可能な間隔で自動的に行われます。 レプリケーション間隔は最小で1分、最大で週に1回です。これらの間隔を指定するために使われるフォーマットはsystemdカレンダーイベントのサブセットです:

ゲストを複数のターゲットノードにレプリケートすることは可能ですが、同じターゲットノードに2回レプリケートすることはできません。

各レプリケーションの帯域幅は、ストレージやサーバーに過負荷をかけないように制限することができます。

ゲストがすでにレプリケートされているノードに移行する場合は、最後のレプリケーション以降の変更(いわゆるデルタ)のみを転送する必要があります。これにより、必要な時間が大幅に短縮されます。ゲストをレプリケーションターゲットノードに移行すると、レプリケーションの方向が自動的に切り替わります。

例えばVM100は現在nodeA上にあり、nodeBにレプリケートされています。VM100をnodeBにマイグレートすると、自動的にnodeBから nodeAにレプリケートバックされます。

ゲストがレプリケートされていないノードに移行する場合、ディスクデータ全体を送信する必要があります。移行後、レプリケーションジョブはこのゲストを設定されたノードにレプリケートし続けます。

Important

高可用性はストレージ・レプリケーションとの組み合わせで許可されますが、最後に同期された時刻とノードが故障した時刻の間に何らかのデータ損失が発生する可能性があります。

対応ストレージタイプ

表1.ストレージの種類
説明 プラグインタイプ スナップ写真 安定

ZFS(ローカル)

ゼットスプール

はい

はい

スケジュールフォーマット

レプリケーションでは、スケジュールの設定にカレンダーイベントを使用します。

エラー処理

この状態では、設定されたレプリケーション間隔は一時的に中断されます。失敗したレプリケーションは、30分間隔で繰り返し再試行されます。 これが成功すると、元のスケジュールが再びアクティブになります。

考えられる問題

最も一般的な問題は、以下のリストのとおりです。セットアップによっては別の原因があるかもしれません。

  • ネットワークが機能していません。

  • レプリケーション先のストレージに空き容量がありません。

  • ターゲット・ノードで利用可能な同じストレージIDのストレージ

Note レプリケーション・ログを使用すれば、いつでも問題の原因を突き止めることができます。

エラー発生時のゲストの移行

重大なエラーが発生した場合、仮想ゲストは障害が発生したノード上でスタックする可能性があります。その場合、手動で再び動作するノードに移動する必要があります。

ノードAで2つのゲスト(VM 100とCT 200)を実行し、ノードBにレプリケートしているとします。そこで、ゲストを手動でノードBに移行する必要があります。

  • sshでノードBに接続するか、ウェブUIでシェルを開きます。

  • クラスタがクォーレートかどうかをチェックします。

    # pvecm ステータス
  • クォーラムがない場合は、まずこれを修正し、ノードを再び操作できるようにすることを強くお勧めします。現時点ではこれが不可能な場合のみ、以下のコマンドを使用して現在のノードにクォーラムを強制することができます:

    # pvecm 期待値 1
Warning 期待される票が設定されている場合にクラスタに影響を与えるような変更(ノード、ストレージ、仮想ゲストの追加/削除など)は絶対に避けてください。 重要なゲストを再び稼働させるか、クォーラムの問題そのものを解決する場合にのみ使用してください。
  • 両方のゲスト設定ファイルを元のノードAからノードBに移動します:

    # mv /etc/pve/nodes/A/qemu-server/100.conf /etc/pve/nodes/B/qemu-server/100.conf # mv /etc/pve/nodes/A/lxc/200.conf /etc/pve/nodes/B/lxc/200.conf
  • これでまたゲストをお迎えすることができます:

    # qm start 100 # pct start 200

VMIDとノード名はそれぞれの値に置き換えてください。

ジョブの管理

screenshot/gui-qemu-add-replication-job.png

Web GUIを使用して、レプリケーション・ジョブを簡単に作成、変更、削除できます。さらに、コマンドライン・インターフェイス(CLI)ツールのpvesrを使用することもできます。

レプリケーション・パネルは、Web GUIのすべてのレベル(データセンター、ノード、仮想ゲスト)で見つけることができます。どのジョブが表示されるかは、すべてのジョブ、ノード固有のジョブ、ゲスト固有のジョブで異なります。

新しいジョブを追加する際、まだ選択されていない場合はゲストとターゲットノードを指定する必要があります。レプリケーションスケジュールは、デフォルトのすべて15分が不要な場合に設定できます。レプリケーションジョブにレート制限を課すことができます。レート制限は、ストレージの負荷を許容範囲に保つのに役立ちます。

レプリケーション・ジョブは、クラスタ全体で一意のIDによって識別されます。このIDは、ジョブ番号に加えてVMIDで構成されます。 このIDは、CLIツールを使用する場合にのみ手動で指定する必要があります。

コマンドライン・インターフェースの例

ID 100のゲストに対して、帯域幅を10 Mbps(メガバイト/秒)に制限して5分ごとに実行するレプリケーションジョブを作成します。

# pvesr create-local-job 100-0 pve1 --schedule "*/5" --rate 10

ID100-0 のアクティブなジョブを無効にします。

# pvesr disable 100-0

ID100-0 の非アクティブ化ジョブを有効にします。

# pvesr enable 100-0

ID100-0のジョブのスケジュール間隔を1時間に1回に変更します。

# pvesr update 100-0 --schedule '*/00'

著作権 © 2007-2022 Proxmox Server Solutions GmbH

このプログラムはフリー・ソフトウェアです。あなたは、Free Software Foundationによって発行されたGNU Affero General Public Licenseのバージョン3、またはそれ以降のバージョンのいずれかに従って、このプログラムを再配布したり、変更したりすることができます。

このプログラムは有用であることを期待して配布されていますが、商品性や特定の目的への適合性についての暗黙の保証もなく、いかなる保証もありません。詳細はGNU Affero General Public Licenseをご覧ください。

あなたはこのプログラムとともにGNU Affero General Public Licenseのコピーを受け取っているはずです。 そうでない場合は、https://www.gnu.org/licenses/をご覧ください。