Backend storage migration for a Kubernetes cluster. How to do it properly and online?

Cluster information:

Kubernetes version: 1.28
Cloud being used: bare-metal servers
Installation method: kubectl
Host OS: Ubuntu 20

I have a production Kubernetes cluster that uses a HDD storage (external storage array by iSCSI) and I was to migrate the PVCs from the HDD storage to a flash storage. I have the target SSD storage ready and configured for iSCSI. I’m using a CSI driver to auto-provision. The driver is first connecting to the backend storage by iscsi, then creates the mapping on the storage array and creates the PVC if does not exist.

My plan is to clone all old PVCs from the old array to the new one, then change the CSI config for the new array.

My questions are: what do I need to change into storage class? And how can I do this migration online? Will the kubernetes hosts map and use the new PVC after a restart or a pod migration to other host? If it’s not possible to do it online, what would be the correct procedure to migrate the backend storage offline?

I have created a test cluster to try different tests. I tried to use the cloning of the storage arrays to clone the LUN where the PVC is located. So I have a new clone on the target storage. Next, I will try and change the storage class to point to the new array and restart the pod and see if the new PVC on the flash storage is used. But I’m not very clear on the last past: on how to modify the storage class in order for the kubernetes to “see” the new LUN and identify it correctly.