mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
docs: update live_migration.md
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de> On-behalf-of: SAP philipp.schuster@sap.com
This commit is contained in:
committed by
Rob Bradford
parent
49868f483e
commit
c8cee779b0
@@ -3,8 +3,9 @@
|
|||||||
This document gives examples of how to use the live migration support
|
This document gives examples of how to use the live migration support
|
||||||
in Cloud Hypervisor:
|
in Cloud Hypervisor:
|
||||||
|
|
||||||
1. local migration - migrating a VM from one Cloud Hypervisor instance to another on the same machine;
|
1. **Local Migration**: Migrating a VM from one Cloud Hypervisor instance to another on the same machine; also called
|
||||||
1. remote migration - migrating a VM between two machines;
|
UNIX socket migration.
|
||||||
|
1. **Remote Migration** (TCP Migration): migrating a VM between two TCP/IP hosts.
|
||||||
|
|
||||||
> :warning: These examples place sockets in /tmp. This is done for
|
> :warning: These examples place sockets in /tmp. This is done for
|
||||||
> simplicity and should not be done in production.
|
> simplicity and should not be done in production.
|
||||||
@@ -28,7 +29,8 @@ Launch the destination VM from the same directory (on the host machine):
|
|||||||
$ target/release/cloud-hypervisor --api-socket=/tmp/api2
|
$ target/release/cloud-hypervisor --api-socket=/tmp/api2
|
||||||
```
|
```
|
||||||
|
|
||||||
Get ready for receiving migration for the destination VM (on the host machine):
|
Get ready for receiving migration for the destination VM (on the host
|
||||||
|
machine):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ target/release/ch-remote --api-socket=/tmp/api2 receive-migration unix:/tmp/sock
|
$ target/release/ch-remote --api-socket=/tmp/api2 receive-migration unix:/tmp/sock
|
||||||
@@ -37,14 +39,16 @@ $ target/release/ch-remote --api-socket=/tmp/api2 receive-migration unix:/tmp/so
|
|||||||
Start to send migration for the source VM (on the host machine):
|
Start to send migration for the source VM (on the host machine):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ target/release/ch-remote --api-socket=/tmp/api1 send-migration --local unix:/tmp/sock
|
$ target/release/ch-remote --api-socket=/tmp/api1 send-migration destination_url=unix:/tmp/sock,local=true
|
||||||
```
|
```
|
||||||
|
|
||||||
When the above commands completed, the source VM should be successfully
|
When the above commands completed, the source VM should be successfully
|
||||||
migrated to the destination VM. Now the destination VM is running while
|
migrated to the destination VM. Now the destination VM is running while
|
||||||
the source VM is terminated gracefully.
|
the source VM is terminated gracefully.
|
||||||
|
|
||||||
## Remote Migration
|
## Remote Migration (TCP Migration)
|
||||||
|
|
||||||
|
_Hint: For developing purposes, same-host TCP migrations are also supported._
|
||||||
|
|
||||||
In this example, we will migrate a VM from one machine (`src`) to
|
In this example, we will migrate a VM from one machine (`src`) to
|
||||||
another (`dst`) across the network. To keep it simple, we will use a
|
another (`dst`) across the network. To keep it simple, we will use a
|
||||||
@@ -171,7 +175,13 @@ After a few seconds the VM should be up and you can interact with it.
|
|||||||
Initiate the Migration over TCP:
|
Initiate the Migration over TCP:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
src $ ch-remote --api-socket=/tmp/api send-migration tcp:{dst}:{port}
|
src $ ch-remote --api-socket=/tmp/api send-migration destination_url=tcp:{dst}:{port}
|
||||||
|
```
|
||||||
|
|
||||||
|
With migration parameters:
|
||||||
|
|
||||||
|
```console
|
||||||
|
src $ ch-remote --api-socket=/tmp/api send-migration destination_url=tcp:{dst}:{port},downtime_ms=200,timeout_s=3600,timeout_strategy=cancel
|
||||||
```
|
```
|
||||||
|
|
||||||
> Replace {dst}:{port} with the actual IP address and port of your destination host.
|
> Replace {dst}:{port} with the actual IP address and port of your destination host.
|
||||||
@@ -180,3 +190,20 @@ After completing the above commands, the source VM will be migrated to
|
|||||||
the destination host and continue running there. The source VM instance
|
the destination host and continue running there. The source VM instance
|
||||||
will terminate normally. All ongoing processes and connections within
|
will terminate normally. All ongoing processes and connections within
|
||||||
the VM should remain intact after the migration.
|
the VM should remain intact after the migration.
|
||||||
|
|
||||||
|
#### Migration Parameters
|
||||||
|
|
||||||
|
Cloud Hypervisor supports additional parameters to control the
|
||||||
|
migration process. Via the API or `ch-remote`, you may specify:
|
||||||
|
|
||||||
|
- `downtime_ms <milliseconds>`: \
|
||||||
|
The maximum downtime the migration aims for, in milliseconds.
|
||||||
|
Defaults to `300ms`.
|
||||||
|
- `timeout_s <seconds>`: \
|
||||||
|
The timeout for the migration (maximum total duration), in seconds.
|
||||||
|
Defaults to `3600s` (one hour).
|
||||||
|
- `timeout_strategy <strategy>` (`[cancel, ignore]`): \
|
||||||
|
The strategy to apply when the migration timeout is reached.
|
||||||
|
Cancel will abort the migration and keep the VM running on the source.
|
||||||
|
Ignore will proceed with the migration regardless of the downtime requirement.
|
||||||
|
Defaults to `cancel`.
|
||||||
|
|||||||
Reference in New Issue
Block a user