Adding disks on the fly
This recipe includes instructions on how to create different types of storage volumes. Storage volumes are dedicated storage sets aside for use by guests.
Getting ready
There is not a lot of preparation to be done in order to add disks to your guest, which is in contrast to adding CPUs and RAM.
You only need to ensure that the storage pool has enough free disk space to accommodate the new disk.
How to do it…
Similar to the recipe for creating guests, you'll need to create a disk first. This can be done as follows:
- Let's create a raw disk in the
localfs-vm
pool that is30
GB big through the following command:~]# virsh vol-create-as --pool localfs-vm --name rhel7_guest-vdb.raw --format raw --capacity 30G
- Look up the path of the newly created volume, as follows:
~]# virsh vol-list --pool localfs-vm |awk '$1 ~ /^rhel7_guest-vdb.raw$/ {print $2}'
This will result in the path of your volume; here's an example:
/vm/rhel7_guest-vdb.raw
- Attach the disk to the guest, as follows:
~]# virsh attach-disk --domain <guestname> --source <the above path> --target vdb --cache none --persistent –live
How it works…
Creating a disk using vol-create-as
may take some time depending on the speed of your host's disks and the size of the guest's disks.
We will look up the path of the newly created volume as it is a required argument for the command that attaches the disk to the guest. In most cases, you won't need to do this as you'll know how your host is configured, but when you script this kind of functionality, you will require this step.
Adding a disk in this way will attach a disk using the virtio
driver, which, as specified earlier, is optimized for use with KVMs.
There's more…
If, for some reason, the original guest doesn't support virtio
drivers or you do not have the virtio
controller, you can create this yourself. Store the XML configuration file as /tmp/controller.xml
with the following contents:
<controller type='scsi' model='virtio' />
You can find this out by checking the host's XML file for the preceding statement.
Then, import the XML configuration file, as follows:
~]# virsh attach-device –domain <guestname> /tmp/controller.xml
This will allow you to create disks using virtio
.