Libvirt Storage Volume Renaming

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

There is no virsh command to rename a volume, but it can be achieved via the following sequence of steps:

1. Shutdown all the virtual machines that use the volume:

virsh shutdown test-vm

2. Clone the volume, under a different name.

virsh vol-clone --pool main-storage-pool test-volume.raw test-volume-2.raw

For more details, see virsh vol-clone.

3. Edit the definition of the virtual machines using the volume, and change the name of the logical volume in the definition.

Replace:

...
<disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/main-storage-pool/test-volume.raw'/>
    <target dev='vdb' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
...

with

...
<disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/main-storage-pool/test-volume-2.raw'/>
    <target dev='vdb' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
...

4. Restart the virtual machine, it should not detect any difference.

5. Optional: Delete the original storage volume from the pool with virsh vol-delete. Note that virsh vol-delete will also delete the content of the underlying storage, not just removes the storage volume definition from the pool.

virsh vol-delete test-volume.img main-storage-pool