How to rename a vm?

rename all corresponding dir/files in /etc/pve/... and also the virtual disk images (wherever you stored them).

but test with a test VM first before touching your real data.
 
Maybe it will be helpful:
A script to rename VM (only ceph, dir, lvm/lvmthin storages are supported - I'm not using others):
1. Checks VM's state and new ID availability;
2. Changes dir/file names (ceph and dir storages, FW files, VM config file)
3. Updates VMID in configs: VM config, backup jobs, HA, replication (untested), pool members.
Can be run in safe mode (just make checks and lists commands to rename) or execute mode (switch to safe mode if unsupported storage found).
Here: https://github.com/abyssdigger/ProxmoxStuff/tree/main/pve-vm-rename/pve-vm-rename.sh
Output example (dry run):
Code:
Job started: rename VM 490777 to 490999, mode: dry run (list commands to rename VM).
---------------------------------------------------------------------------------------
Check VM and VMID preconditons:
[#1] check VM existance: <qm status 490777>: OK.
[#2] check VM status (must be stopped): OK.
[#3] check new VMID is available (490999 is not in /etc/pve/.vmlist): OK.
---------------------------------------------------------------------------------------
Parse /etc/pve/qemu-server/490777.conf for virtual disks:
> scsi0 cephvm:vm-490777-disk-0: [rbd:cephvm].
> scsi1 local:490777/vm-490777-disk-0.qcow2: [dir:/var/lib/vz/images].
> scsi2 mirror:490777/vm-490777-disk-0.vmdk: [dir:/mnt/mirror/pve/images].
> scsi3 mirror:490777/vm-490777-disk-1.vmdk: [dir:/mnt/mirror/pve/images].
> scsi4 cephxec:vm-490777-disk-0: [rbd:cephecssd-metadata].
> scsi5 cephzec:vm-490777-disk-0: [rbd:cephec-metadata].
---------------------------------------------------------------------------------------
Prepare command list to execute:
> commands to update VMID in config files... OK.
> commands to rename VM files... OK.
> commands to rename dirs named on VM... OK.
---------------------------------------------------------------------------------------
List commands to rename VM:
#### Rename virtual disk scsi0 [rbd:cephvm]
rbd mv -p cephvm vm-490777-disk-0 vm-490999-disk-0
#### Rename virtual disk scsi1 [dir:local]
mv -f /var/lib/vz/images/490777/vm-490777-disk-0.qcow2 /var/lib/vz/images/490777/vm-490999-disk-0.qcow2
#### Rename virtual disk scsi2 [dir:mirror]
mv -f /mnt/mirror/pve/images/490777/vm-490777-disk-0.vmdk /mnt/mirror/pve/images/490777/vm-490999-disk-0.vmdk
#### Rename virtual disk scsi3 [dir:mirror]
mv -f /mnt/mirror/pve/images/490777/vm-490777-disk-1.vmdk /mnt/mirror/pve/images/490777/vm-490999-disk-1.vmdk
#### Rename virtual disk scsi4 [rbd:cephxec]
rbd mv -p cephecssd-metadata vm-490777-disk-0 vm-490999-disk-0
#### Rename virtual disk scsi5 [rbd:cephzec]
rbd mv -p cephec-metadata vm-490777-disk-0 vm-490999-disk-0
#### VM config - update storage dirs
sed -i 's/\(^scsi[0-9]\+: .\+:\)490777\//\1490999\//g' /etc/pve/qemu-server/490777.conf
#### Pool members - update VM names
sed -i '/^pool:.*/s/\([:,]\)490777\([:,]\)/\1490999\2/g' /etc/pve/user.cfg
#### Backup jobs - update VM names
sed -i '/^[[:space:]]\(vmid \|exclude \)/s/\([ ,]\)490777\(,\|$\)/\1490999\2/g' /etc/pve/jobs.cfg
#### (untested) Replication - update VM names
sed -i '/^.\+: 490777-[0-9]\+$/s/\(: \)490777\(-[0-9]\+$\)/\1490999\2/p' /etc/pve/replication.cfg
#### HA config - update VM names
sed -i 's/\(^vm: \)490777/\1490999/g' /etc/pve/ha/resources.cfg
#### VM config - update disk names
sed -i '/^scsi[0-9]\+: .*:/s/vm-490777\(-disk-\)/vm-490999\1/g' /etc/pve/qemu-server/490777.conf
#### Rename firewall config file /etc/pve/firewall/490777.fw
mv -f /etc/pve/firewall/490777.fw /etc/pve/firewall/490999.fw
#### Rename VM config file /etc/pve/qemu-server/490777.conf
mv -f /etc/pve/qemu-server/490777.conf /etc/pve/qemu-server/490999.conf
#### Rename dir /var/lib/vz/images/490777
mv -f /var/lib/vz/images/490777 /var/lib/vz/images/490999
#### Rename dir /mnt/mirror/pve/images/490777
mv -f /mnt/mirror/pve/images/490777 /mnt/mirror/pve/images/490999
---------------------------------------------------------------------------------------
Job done without any changes (run listed commands manually or use --exec to execute them).
 
Last edited: