]> git.proxmox.com Git - pve-docs.git/blame - pvesr.adoc
Documentation for Storage Replication.
[pve-docs.git] / pvesr.adoc
CommitLineData
c024f553
DM
1ifdef::manvolnum[]
2pvesr(1)
3========
4:pve-toplevel:
5
6NAME
7----
8
236bec37 9pvesr - Proxmox VE Storage Replication
c024f553
DM
10
11SYNOPSIS
12--------
13
14include::pvesr.1-synopsis.adoc[]
15
16DESCRIPTION
17-----------
18endif::manvolnum[]
19
20ifndef::manvolnum[]
21Storage Replication
22===================
23:pve-toplevel:
24endif::manvolnum[]
25
236bec37
WL
26The {PVE} storage replication tool (`pvesr`) manage the Proxmox VE Storage Based Replication.
27Storage Replication bring guest redundancy for local storage's,
28reduce the migration time and will only replicate new data.
29
30It will replicate the vdisk of guest to an other node this make that data available
31without using shared/distributed storage. So in case of a node failure your guest data still available
32on the replicated node.
33
34The minimal replication interval are 1 minute and the maximal interval is once a week.
35Interval schedule format is a subset of `systemd` calendar events.
36Every interval time your guest vdisk data will be synchronized,
37but only the new data will replicated. This reduce the amount of data to a minimum.
38New data are data what are written to the vdisk after the last replication.
39
40Every guest can replicate to many target nodes, but only one replication job per target node is allowed.
41
42The migration of guests, where storage replication is activated, is currently only offline possible.
43When the guest will migrate to the target of the replication, only the delta of the data must migrated and
44the replication direction will switched automatically in the opposite direction.
45If you migrate to a node where you do not replicate, it will send the whole vdisk data to the new node and after the migration it continuous the replication job as usually.
46
47WARNING: High-Availability is possible with Storage Replication but this can lead to lose data. So be aware of this problem before you use this combination.
48
49Supported Storage Types
50-----------------------
51
52.Storage Types
53[width="100%",options="header"]
54|============================================
55|Description |PVE type |Snapshots|Stable
56|ZFS (local) |zfspool |yes |yes
57|============================================
58
59Schedule
60--------
61
62Proxmox VE has a very flexible replication scheduler with will explained in detail here.
63
64A schedule string has following format.
65
66[day of the week] <time>
67
68Day of the week are taken of sun, mon, tue, wed, thu, fri and sat.
69It is allowed to make a list of this token.
70Or alternative you can use a span.
71
72The second part are the time, here the string contains two sub-string separate by `:`.
73First comes the hours, than the minutes.
740..23 are the allowed values for hours and 0..59 for minutes.
75If hours is missing it will substitute with `*`, this also counts for the day of the week.
76The `*` will be interpreted as wildcard. In case of the "all day of the week" it would be sun..sat, for the hours 0..23 or for the minutes 0..59.
77
78Examples:
79~~~~~~~~~
80
81.Schedule Examples
82[width="100%",options="header"]
83|============================================
84|String |Meaning
85|"mon,tue,wed,thu,fri" => "mon..fir" |All working days at 0:00.
86|"sat,sun" => "sat..sun" |Only on weekend at 0:00.
87|"mon,wed,fri" |Only on Monday, Wednesday and Friday at 0:00.
88|"12:05" => "sun..sat 12:05" |All weekdays at 12:05 PM.
89|"*/5" |All five minutes on all weekdays.
90|"mon..wed 30/10" |Monday, Tuesday, Wednesday at all hours and 30, 40, 50 minutes.
91|"fri 12..13:5/20" |Friday at 12:05, 12:25, 12:45, 13:05, 13:25 and 13:45.
92|"12/2:05" |All weekdays every 2 hours start at 12:05 until 22:05
93|============================================
94The simplest case is the `*` which means every min what is the minimum interval.
95
96
97Error State
98-----------
99
100It can happen that a job will have a error.
101Common issues for example:
102
103Network is not working.
104
105No space on the disk.
106...
107
108In this case storage replication will retry every 30 miuntes.
109
110
111Migrating a guest in case of Error
112~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113
114Assumed that you have two guests (KVM 100| LXC 200) running on node A (pve1) and replicate to node B (pve2).
115Node A is fails and can not get back online. Now you have to migrate the guest to Node B manually.
116
117Connect to node B with ssh.
118
119- check if that the cluster has quorum.
120
121 pvecm status
122
123Is quorum is ok continuing with the skip[ the next step.
124
125- If you have no quorum, it is important to make your pmxcfs writable.
126
127WARNING: If expected is set, please avoid large changes on the nodes before the cluster is quorate online because there is a little change to a split brain.
128
129 pvecm expected 1
130
131- move the guest config form the origin node A to node B.
132 cd /etc/pve/node && mv pve1/qemu-server/100.conf pve2/qemu-server/100.conf
133 cd /etc/pve/node && mv pve1/lxc/200.conf pve2/lxc/100.conf
134
135- Now you can start the guests.
136
137 qm start 100
138 pct start 100
139
140
141Create Replication
142------------------
143
144[thumbnail="gui-create-replica-on-node.png"]
145
146You can easy create a replication job on the GUI or as well on the command line.
147There are only a few setting to configure.
148
149The only required parameter on the GUI is the target node.
150If you create a job on the command line also a unique id is needed.
151This id will automatically generated in case of GUI created jobs.
152The id contains the VMID and a consecutive number separated by a minus.
153All other parameters are optional.
154
155Update Replication Job
156----------------------
157
158For now is possible to update rate limit and the scheduler.
159It can be done on the GUI or on the cli.
160
161
162Using the Command Line Interface
163--------------------------------
164
165Examples
166~~~~~~~~
167
168Create a replication job for VM 100 first job, which will run all 5 min with max bandwidth of 10MByte/s.
169
170 pvesr create-local-job 100-0 pve1 --schedule */5 --rate 10
171
172Disable a running job for ID 100-0
173
174 pvesr disable 100-0
175
176Enable a running job for ID 100-0
177
178 pvesr disable 100-0
179
180Change the schedule interval to once a hour
181
182 pvesr update 100-0 --schedule '*/00'
c024f553
DM
183
184ifdef::manvolnum[]
185include::pve-copyright.adoc[]
186endif::manvolnum[]