diff --git a/versions/v1.5/modules/en/pages/integrations/rancher/csi-driver.adoc b/versions/v1.5/modules/en/pages/integrations/rancher/csi-driver.adoc index cca3a7dc..75e03919 100644 --- a/versions/v1.5/modules/en/pages/integrations/rancher/csi-driver.adoc +++ b/versions/v1.5/modules/en/pages/integrations/rancher/csi-driver.adoc @@ -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. @@ -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" @@ -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[] diff --git a/versions/v1.6/modules/en/pages/integrations/rancher/csi-driver.adoc b/versions/v1.6/modules/en/pages/integrations/rancher/csi-driver.adoc index baeff2b4..49872823 100644 --- a/versions/v1.6/modules/en/pages/integrations/rancher/csi-driver.adoc +++ b/versions/v1.6/modules/en/pages/integrations/rancher/csi-driver.adoc @@ -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. @@ -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" @@ -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[] diff --git a/versions/v1.7/modules/en/pages/integrations/rancher/csi-driver.adoc b/versions/v1.7/modules/en/pages/integrations/rancher/csi-driver.adoc index ca2b374d..5bfacfac 100644 --- a/versions/v1.7/modules/en/pages/integrations/rancher/csi-driver.adoc +++ b/versions/v1.7/modules/en/pages/integrations/rancher/csi-driver.adoc @@ -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} @@ -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" @@ -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[] diff --git a/versions/v1.8/modules/en/images/vm/clone-vm-with-data.png b/versions/v1.8/modules/en/images/vm/clone-vm-with-data.png index bfae58f2..aed24504 100644 Binary files a/versions/v1.8/modules/en/images/vm/clone-vm-with-data.png and b/versions/v1.8/modules/en/images/vm/clone-vm-with-data.png differ diff --git a/versions/v1.8/modules/en/images/vm/clone-vm-without-data-config.png b/versions/v1.8/modules/en/images/vm/clone-vm-without-data-config.png new file mode 100644 index 00000000..7fb215a0 Binary files /dev/null and b/versions/v1.8/modules/en/images/vm/clone-vm-without-data-config.png differ diff --git a/versions/v1.8/modules/en/images/vm/clone-vm-without-data.png b/versions/v1.8/modules/en/images/vm/clone-vm-without-data.png index 7cd62520..924ded97 100644 Binary files a/versions/v1.8/modules/en/images/vm/clone-vm-without-data.png and b/versions/v1.8/modules/en/images/vm/clone-vm-without-data.png differ diff --git a/versions/v1.8/modules/en/pages/integrations/rancher/csi-driver.adoc b/versions/v1.8/modules/en/pages/integrations/rancher/csi-driver.adoc index 17c90c01..ab1d124a 100644 --- a/versions/v1.8/modules/en/pages/integrations/rancher/csi-driver.adoc +++ b/versions/v1.8/modules/en/pages/integrations/rancher/csi-driver.adoc @@ -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. @@ -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" @@ -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[] diff --git a/versions/v1.8/modules/en/pages/virtual-machines/clone-vm.adoc b/versions/v1.8/modules/en/pages/virtual-machines/clone-vm.adoc index 49c384c2..836b9906 100644 --- a/versions/v1.8/modules/en/pages/virtual-machines/clone-vm.adoc +++ b/versions/v1.8/modules/en/pages/virtual-machines/clone-vm.adoc @@ -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] diff --git a/versions/v1.8/modules/en/pages/virtual-machines/live-migration.adoc b/versions/v1.8/modules/en/pages/virtual-machines/live-migration.adoc index d6b1a9ed..27ded0b3 100644 --- a/versions/v1.8/modules/en/pages/virtual-machines/live-migration.adoc +++ b/versions/v1.8/modules/en/pages/virtual-machines/live-migration.adoc @@ -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. @@ -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] \ No newline at end of file +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] \ No newline at end of file diff --git a/versions/v1.9/modules/en/images/vm/clone-vm-with-data.png b/versions/v1.9/modules/en/images/vm/clone-vm-with-data.png index bfae58f2..aed24504 100644 Binary files a/versions/v1.9/modules/en/images/vm/clone-vm-with-data.png and b/versions/v1.9/modules/en/images/vm/clone-vm-with-data.png differ diff --git a/versions/v1.9/modules/en/images/vm/clone-vm-without-data-config.png b/versions/v1.9/modules/en/images/vm/clone-vm-without-data-config.png new file mode 100644 index 00000000..7fb215a0 Binary files /dev/null and b/versions/v1.9/modules/en/images/vm/clone-vm-without-data-config.png differ diff --git a/versions/v1.9/modules/en/images/vm/clone-vm-without-data.png b/versions/v1.9/modules/en/images/vm/clone-vm-without-data.png index 7cd62520..924ded97 100644 Binary files a/versions/v1.9/modules/en/images/vm/clone-vm-without-data.png and b/versions/v1.9/modules/en/images/vm/clone-vm-without-data.png differ diff --git a/versions/v1.9/modules/en/images/vm/efi-tpm-clone.png b/versions/v1.9/modules/en/images/vm/efi-tpm-clone.png new file mode 100644 index 00000000..98e9d122 Binary files /dev/null and b/versions/v1.9/modules/en/images/vm/efi-tpm-clone.png differ diff --git a/versions/v1.9/modules/en/pages/integrations/rancher/csi-driver.adoc b/versions/v1.9/modules/en/pages/integrations/rancher/csi-driver.adoc index 17c90c01..ab1d124a 100644 --- a/versions/v1.9/modules/en/pages/integrations/rancher/csi-driver.adoc +++ b/versions/v1.9/modules/en/pages/integrations/rancher/csi-driver.adoc @@ -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. @@ -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" @@ -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[] diff --git a/versions/v1.9/modules/en/pages/virtual-machines/clone-vm.adoc b/versions/v1.9/modules/en/pages/virtual-machines/clone-vm.adoc index 49c384c2..60a110d1 100644 --- a/versions/v1.9/modules/en/pages/virtual-machines/clone-vm.adoc +++ b/versions/v1.9/modules/en/pages/virtual-machines/clone-vm.adoc @@ -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}. +==== \ No newline at end of file diff --git a/versions/v1.9/modules/en/pages/virtual-machines/live-migration.adoc b/versions/v1.9/modules/en/pages/virtual-machines/live-migration.adoc index d6b1a9ed..4ce09d6f 100644 --- a/versions/v1.9/modules/en/pages/virtual-machines/live-migration.adoc +++ b/versions/v1.9/modules/en/pages/virtual-machines/live-migration.adoc @@ -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. @@ -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 @@ -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] \ No newline at end of file +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] \ No newline at end of file