Linux Virtualization Operations

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Commands

virsh
virt-install guestmount guestunmount virt-builder virt-cat virt-filesystems virt-inspector
libguestfs virt-copy-in virt-copy-out virt-customize virt-df virt-diff virt-edit virt-format
virt-log virt-ls virt-make-fs virt-p2v virt-rescue virt-resize virt-sparsify virt-sysprep
virt-tar-out virt-tar-in virt-top virt-v2v virt-viewer virt-what virt-who virt-xml-validate
qemu-img

Virtualization Host Storage Operations

Storage Pool Operations

Storage Volume Operations

Virtualization Host Network Operations

Create a Guest Virtual Machine

Virtualization host storage and host-level networking must be configured as a prerequisite to creating guest virtual machines. Once storage pools and storage volumes are made available, and the networking is configured, guest virtual machines can be created with

virt-install

If the XML definition of a virtual machine is available, it can be created with:

virsh define

Start/Stop Guest VMs

   virsh start
   virsh shutdown

Connect to the Guest VM

   virsh console

Adding Storage to Guests

Adding Storage to Guests

Cloning a Guest VM

  • Shut down the guest with virsh shutdown.
  • Export the XML configuration with virsh dumpxml.
  • Copy the XML definition under a new name, conventionally the name of the guest being built.
  • Edit the XML as needed. Things you may want to change:
    • The name of the guest.
    • Remove the <uuid> line, a new UUID will be generated.
    • MAC address !
    • The amount of memory, specified as <memory>. Remove the <currentMemory> line.
    • The number of vCPUs allocated to the guest.
    • Remove the "cdrom" disk(s), if it is not going to be used.
    • Edit the <disk> definitions and adjust the names for the new storage volumes that will be provisioned for the new virtual machine. The virtual machine will definitely need a virtual machine image, stored in (usually) qcow2 format, end possible other block storage devices in raw format. Conventionally, the virtual machine image is stored in the main storage pool and it is named based on the name of the VM:
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/main-storage-pool/new-vm-name.qcow2'/>
  <target dev='vda' bus='virtio'/>
  ...
</disk>
<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/main-storage-pool/'new-vm-name-docker.raw'/>
  <target dev='vdb' bus='virtio'/>
  ...
</disk>
  • Clone the virtual machine image with the new name.
  • Create any other storage volume that may be needed.
  • Define the guest with virsh define.