Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Harvester CSI Driver
:revdate: 2025-03-12
:revdate: 2026-07-02
:page-revdate: {revdate}

The Harvester Container Storage Interface (CSI) driver provides a standard CSI interface used by guest Kubernetes clusters. It connects to the host cluster and hot-plugs host volumes to the virtual machines to provide native storage performance.
Expand Down Expand Up @@ -343,6 +343,7 @@ provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
migratable: false # Must be empty or set to `false` when using standard RWX filesystem volumes
parameters:
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
Expand All @@ -351,6 +352,11 @@ parameters:
nfsOptions: "vers=4.2,noresvport,softerr,timeo=600,retrans=5"
----
+
[IMPORTANT]
====
To use standard RWX filesystem volumes, the `migratable` parameter must be empty or explicitly set to `false`.
====
+
image::rancher/create-rwx-sc-host-cluster-01.png[]
+
image::rancher/create-rwx-sc-host-cluster-02.png[]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Harvester CSI Driver
:revdate: 2026-06-03
:revdate: 2026-07-02
:page-revdate: {revdate}

The Harvester Container Storage Interface (CSI) driver provides a standard CSI interface used by guest Kubernetes clusters. It connects to the host cluster and hot-plugs host volumes to the virtual machines to provide native storage performance.
Expand Down Expand Up @@ -350,6 +350,7 @@ provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
migratable: false # Must be empty or set to `false` when using standard RWX filesystem volumes
parameters:
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
Expand All @@ -358,6 +359,11 @@ parameters:
nfsOptions: "vers=4.2,noresvport,softerr,timeo=600,retrans=5"
----
+
[IMPORTANT]
====
To use standard RWX filesystem volumes, the `migratable` parameter must be empty or explicitly set to `false`.
====
+
image::rancher/create-rwx-sc-host-cluster-01.png[]
+
image::rancher/create-rwx-sc-host-cluster-02.png[]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Harvester CSI Driver
:revdate: 2026-06-03
:revdate: 2026-07-02
:page-languages: [en, de, es, fr, ja, pt, zh]
:page-revdate: {revdate}

Expand Down Expand Up @@ -361,6 +361,7 @@ provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
migratable: false # Must be empty or set to `false` when using standard RWX filesystem volumes
parameters:
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
Expand All @@ -369,6 +370,11 @@ parameters:
nfsOptions: "vers=4.2,noresvport,softerr,timeo=600,retrans=5"
----
+
[IMPORTANT]
====
To use standard RWX filesystem volumes, the `migratable` parameter must be empty or explicitly set to `false`.
====
+
image::rancher/create-rwx-sc-host-cluster-01.png[]
+
image::rancher/create-rwx-sc-host-cluster-02.png[]
Expand Down
Binary file modified versions/v1.8/modules/en/images/vm/clone-vm-with-data.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified versions/v1.8/modules/en/images/vm/clone-vm-without-data.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Harvester CSI Driver
:revdate: 2026-06-09
:revdate: 2026-07-02
:page-revdate: {revdate}

The Harvester Container Storage Interface (CSI) driver provides a standard CSI interface used by guest Kubernetes clusters. It connects to the {harvester-product-name} cluster and hot-plugs volumes to the virtual machines to provide native storage performance.
Expand Down Expand Up @@ -352,6 +352,7 @@ provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
migratable: false # Must be empty or set to `false` when using standard RWX filesystem volumes
parameters:
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
Expand All @@ -360,6 +361,11 @@ parameters:
nfsOptions: "vers=4.2,noresvport,softerr,timeo=600,retrans=5"
----
+
[IMPORTANT]
====
To use standard RWX filesystem volumes, the `migratable` parameter must be empty or explicitly set to `false`.
====
+
image::rancher/create-rwx-sc-host-cluster-01.png[]
+
image::rancher/create-rwx-sc-host-cluster-02.png[]
Expand Down
39 changes: 29 additions & 10 deletions versions/v1.8/modules/en/pages/virtual-machines/clone-vm.adoc
Original file line number Diff line number Diff line change
@@ -1,22 +1,41 @@
= Clone a Virtual Machine
:revdate: 2025-05-09
:revdate: 2026-07-02
:page-revdate: {revdate}

Virtual machines can be cloned with or without data. This function doesn't need to take a virtual machine snapshot or set up a backup target first.

== Clone a Virtual Machine with Volume Data
The cloned virtual machine inherits the source's basic configuration. You can choose whether to include the source's volume data, as well as customize the clone's name and xref:virtual-machines/create-vm.adoc#_run_strategy[run strategy].

. On the `Virtual Machines` page, click `Clone` of the VM actions.
. Set a new virtual machine name and click `Create`.
== Cloning a virtual machine with volume data

. On the *Virtual Machines* screen, locate the target virtual machine and select *⋮ -> Clone*.
+
image::vm/clone-vm-with-data.png[Cloning a virtual machine with volume data]

. Specify a unique name for the cloned virtual machine.

. Select a xref:virtual-machines/create-vm.adoc#_run_strategy[run strategy].
+
The cloned virtual machine uses the source's run strategy by default.

. Click *Create*.
+
image::vm/clone-vm-with-data.png[clone-vm-with-data.png]

== Clone a Virtual Machine without Volume Data
== Cloning a virtual machine without volume data

Cloning a virtual machine without volume data creates a new virtual machine with the same configuration as the source.
. On the *Virtual Machines* screen, locate the target virtual machine and select *⋮ -> Clone*.
+
image::vm/clone-vm-without-data.png[Cloning a virtual machine without volume data]

. Clear *Clone volume data*.

. Specify a unique name for the cloned virtual machine.

. Select a xref:virtual-machines/create-vm.adoc#_run_strategy[run strategy].
+
The cloned virtual machine uses the source's run strategy by default.

. On the `Virtual Machines` page, click `Clone` of the VM actions.
. Unclick the `clone volume data` checkbox.
. Set a new virtual machine name and click `Create`.
. Click *Create*.
+
image::vm/clone-vm-without-data.png[clone-vm-without-data.png]
image::vm/clone-vm-without-data-config.png[Cloned virtual machine without volume data configuration]
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Live Migration
:revdate: 2026-06-02
:revdate: 2026-07-02
:page-revdate: {revdate}

Live migration means moving a virtual machine to a different host without downtime. A couple of comprehensive processes and tasks are done under the hood to fulfill the live migration.
Expand Down Expand Up @@ -211,4 +211,12 @@ Until the upstream issue is fixed, perform one of the following workarounds:
* Migrate the virtual machine without ejecting images from the CD-ROM devices.
* During virtual machine creation, declare all `Container` volumes before the first `Image Volume` (with `cd-rom` type).

Related issue: https://github.com/harvester/harvester/issues/10221[#10221]
Related issue: https://github.com/harvester/harvester/issues/10221[#10221]

=== Network disruption due to multiple MAC address moves between source and target hosts

During live migration, the virtual machine's MAC address moves between the source and target hosts *multiple times*. This causes external switches to register the same MAC address on different interfaces, resulting in a temporary network disruption.

To resolve this issue, set `disableContainerInterface: true` within the `spec.config` field of the corresponding Multus `NetworkAttachmentDefinition` *before* starting a live migration. This configuration delays enabling of the pod interface until after the switchover occurs, preventing multiple MAC address moves. For more information, see https://www.cni.dev/plugins/current/main/bridge/#example-l2-only-disabled-interface-configuration[Example L2-only, disabled interface configuration] in the Container Network Interface (CNI) documentation.

Related issue: https://github.com/harvester/harvester/issues/10653[#10653]
Binary file modified versions/v1.9/modules/en/images/vm/clone-vm-with-data.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified versions/v1.9/modules/en/images/vm/clone-vm-without-data.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Harvester CSI Driver
:revdate: 2026-06-09
:revdate: 2026-07-02
:page-revdate: {revdate}

The Harvester Container Storage Interface (CSI) driver provides a standard CSI interface used by guest Kubernetes clusters. It connects to the {harvester-product-name} cluster and hot-plugs volumes to the virtual machines to provide native storage performance.
Expand Down Expand Up @@ -352,6 +352,7 @@ provisioner: driver.longhorn.io
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate
migratable: false # Must be empty or set to `false` when using standard RWX filesystem volumes
parameters:
numberOfReplicas: "3"
staleReplicaTimeout: "2880"
Expand All @@ -360,6 +361,11 @@ parameters:
nfsOptions: "vers=4.2,noresvport,softerr,timeo=600,retrans=5"
----
+
[IMPORTANT]
====
To use standard RWX filesystem volumes, the `migratable` parameter must be empty or explicitly set to `false`.
====
+
image::rancher/create-rwx-sc-host-cluster-01.png[]
+
image::rancher/create-rwx-sc-host-cluster-02.png[]
Expand Down
76 changes: 65 additions & 11 deletions versions/v1.9/modules/en/pages/virtual-machines/clone-vm.adoc
Original file line number Diff line number Diff line change
@@ -1,22 +1,76 @@
= Clone a Virtual Machine
:revdate: 2025-05-09
:revdate: 2026-07-02
:page-revdate: {revdate}

Virtual machines can be cloned with or without data. This function doesn't need to take a virtual machine snapshot or set up a backup target first.

== Clone a Virtual Machine with Volume Data
The cloned virtual machine inherits the source's basic configuration. You can choose whether to include the source's volume data, as well as customize the clone's name and xref:virtual-machines/create-vm.adoc#_run_strategy[run strategy].

. On the `Virtual Machines` page, click `Clone` of the VM actions.
. Set a new virtual machine name and click `Create`.
== Cloning a virtual machine with volume data

. On the *Virtual Machines* screen, locate the target virtual machine and select *⋮ -> Clone*.
+
image::vm/clone-vm-with-data.png[Cloning a virtual machine with volume data]

. Specify a unique name for the cloned virtual machine.

. Select a xref:virtual-machines/create-vm.adoc#_run_strategy[run strategy].
+
image::vm/clone-vm-with-data.png[clone-vm-with-data.png]
The cloned virtual machine uses the source's run strategy by default.

== Clone a Virtual Machine without Volume Data
. Click *Create*.

Cloning a virtual machine without volume data creates a new virtual machine with the same configuration as the source.
== Cloning a virtual machine without volume data

. On the `Virtual Machines` page, click `Clone` of the VM actions.
. Unclick the `clone volume data` checkbox.
. Set a new virtual machine name and click `Create`.
. On the *Virtual Machines* screen, locate the target virtual machine and select *⋮ -> Clone*.
+
image::vm/clone-vm-without-data.png[clone-vm-without-data.png]
image::vm/clone-vm-without-data.png[Cloning a virtual machine without volume data]

. Clear *Clone volume data*.

. Specify a unique name for the cloned virtual machine.

. Select a xref:virtual-machines/create-vm.adoc#_run_strategy[run strategy].
+
The cloned virtual machine uses the source's run strategy by default.

. Click *Create*.
+
image::vm/clone-vm-without-data-config.png[Cloned virtual machine without volume data configuration]

== EFI and vTPM persistent states

{harvester-product-name} supports cloning virtual machines that use persistent EFI or vTPM states. During cloning, {harvester-product-name} copies the underlying persistent data that the guest operating system depends on. This ensures the cloned virtual machine retains vital configuration details, such as EFI NVRAM settings and vTPM-stored data (including BitLocker recovery keys).

You can enable EFI and/or vTPM independently before cloning. {harvester-product-name} preserves only the persistent state required by the cloned virtual machine.

|===
| EFI Status | vTPM Status | {harvester-product-name} Behavior

| Enabled
| Enabled
| Preserves both persistent states

| Enabled
| Disabled
| Preserves only the EFI state

| Disabled
| Enabled
| Preserves only the vTPM state

| Disabled
| Disabled
| Skips processing of persistent state storage
|===

The cloned virtual machine may remain in the `Pending` state while {harvester-product-name} prepares the persistent state storage.

image::vm/efi-tpm-clone.png[EFI and vTPM persistent states]

[CAUTION]
====
EFI and vTPM persistent states are stored separately from the volumes listed in `spec.template.spec.volumes`. {harvester-product-name} creates this storage only after the source virtual machine has been started at least once. If the source storage has never been started, cloning a virtual machine with EFI or vTPM persistent state can fail because the required source storage does not exist.

Because the persistent state is copied directly from the source, the cloned virtual machine will inherit identical guest-visible firmware identifiers (including the firmware UUID). However, the clone retains its own virtual machine object identity within {harvester-product-name}.
====
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
= Live Migration
:revdate: 2026-06-02
:revdate: 2026-07-02
:page-revdate: {revdate}

Live migration means moving a virtual machine to a different host without downtime. A couple of comprehensive processes and tasks are done under the hood to fulfill the live migration.
Expand Down Expand Up @@ -200,6 +200,12 @@ The migration process runs in peer-to-peer mode, which means that the libvirt da

By default, the keepalive interval is set to 5 seconds, and the retry count is set to 5. Given these default values, the migration process is aborted if the connection is inactive for 30 seconds. However, the migration may fail earlier or later, depending on the actual cluster conditions.

== Overlay virtual machine migration

Starting with v1.9.0, virtual machines using Kube-OVN overlay networks can be live migrated with less than 0.5 seconds of network traffic disruption.

For information about migrating overlay virtual machines, see <<#_starting_migration>>. For architectural details, see https://kube-ovn.readthedocs.io/zh-cn/stable/en/kubevirt/live-migration/[Live Migration] in the Kube-OVN documentation.

== Known issues

=== Failure to migrate a virtual machine after ejecting an image from a CD-ROM device
Expand All @@ -211,4 +217,12 @@ Until the upstream issue is fixed, perform one of the following workarounds:
* Migrate the virtual machine without ejecting images from the CD-ROM devices.
* During virtual machine creation, declare all `Container` volumes before the first `Image Volume` (with `cd-rom` type).

Related issue: https://github.com/harvester/harvester/issues/10221[#10221]
Related issue: https://github.com/harvester/harvester/issues/10221[#10221]

=== Network disruption due to multiple MAC address moves between source and target hosts

During live migration, the virtual machine's MAC address moves between the source and target hosts *multiple times*. This causes external switches to register the same MAC address on different interfaces, resulting in a temporary network disruption.

To resolve this issue, set `disableContainerInterface: true` within the `spec.config` field of the corresponding Multus `NetworkAttachmentDefinition` *before* starting a live migration. This configuration delays enabling of the pod interface until after the switchover occurs, preventing multiple MAC address moves. For more information, see https://www.cni.dev/plugins/current/main/bridge/#example-l2-only-disabled-interface-configuration[Example L2-only, disabled interface configuration] in the Container Network Interface (CNI) documentation.

Related issue: https://github.com/harvester/harvester/issues/10653[#10653]
Loading