UbuntuHelp:KVM/Managing
来自Ubuntu中文
点击翻译: |
English |
请不要直接编辑翻译本页,本页将定期与来源同步。 |
- title KVM Guest Management
<<Include(KVM/Header)>>
Manage your virtual machines
From the shell
You can manage your VMs from the shell using virsh. You can get a list of the available commands if you type "help". Type "help command" to get additional infos for a particular command.
Define your new VM
Before you can manage your new VM with virsh, you must define it:
$ virsh --connect qemu:///system Connecting to uri: qemu:///system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # define /etc/libvirt/qemu/newvm.xml Domain newvm defined from /etc/libvirt/qemu/newvm.xml
Note that to list newvm, you must use 'list --inactive' or 'list --all', since list without any options will only list currently running machines.
List your VMs
Virsh allows you to list the virtual machines available on the current host:
yhamon@paris:/etc/libvirt/qemu$ virsh --connect qemu:///system Connecting to uri: qemu:///system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # help list NAME list - list domains SYNOPSIS list [--inactive | --all] DESCRIPTION Returns list of domains. OPTIONS --inactive list inactive domains --all list inactive & active domains virsh # list Id Name State ---------------------------------- 15 mirror running 16 vm2 running virsh # list --all Id Name State ---------------------------------- 15 mirror running 16 vm2 running - test5 shut off
Define, undefine, start, shutdown, destroy VMs
The VMs you see with list --all are VMs that have been "defined" from an XML file. Every VM is configured via a XML file in /etc/libvirt/qemu. If you want to remove a VM from the list of VMs, you need to undefine it:
virsh # undefine test5 # WARNING: undefine will delete your XML file! Domain test5 has been undefined virsh # list --all Id Name State ---------------------------------- 15 mirror running 16 vm2 running
To be able to undefine a virtual machine, it needs to be shutdown first:
virsh # shutdown mirror Domain mirror is being shutdown
This command asks for a nice shutdown (like running shutdown in command line) - but you can also use "destroy", the more brutal way of shutting down a VM, equivalent of taking the power cable off:
virsh # destroy mirror Domain mirror destroyed
If you have made a change to the XML configuration file, you need to tell KVM to reload it before restarting the VM:
virsh # define /etc/libvirt/qemu/mirror.xml Domain mirror defined from /etc/libvirt/qemu/mirror.xml
Then, to restart the VM:
virsh # start mirror Domain mirror started
Suspend and resume a Virtual Machine
Virsh allows you to easily suspend and resume a virtual machine.
virsh # suspend mirror Domain mirror suspended virsh # resume mirror Domain mirror resumed
Using a graphical interface
There is also an easier way to manage your virtual machines. The tool virt-manager allows you to use a graphical interface to interact with KVM. Install virt-manager on your desktop:
sudo apt-get install virt-manager virt-viewer
And use it to connect to your server:
$ virt-manager -c qemu+ssh://10.10.10.10/system
10.10.10.10 being the IP address of your host running KVM. 模板:Http://waste.mandragor.org/virt-manager-screenshot.png If you are only managing machines on your own host you can use only:
$ virt-manager -c qemu:///system
Editing the attributes of a Virtual Machine
libvirt stores it's configuration as xml in '/etc/libvirt/qemu'. The xml is easy to understand, and is similar to VMware *.vmx files. While it is possible to edit these files in place and restart libvirt-bin for the changes to take affect, the recommended method for modifying the attributes of a virtual machine is via virsh (or virt-manager, if it supports changing the hardware you want to change). The concept is simple:
- export (aka 'dump') the xml of the virtual machine you want to edit
- edit the xml
- import (aka 'define') the xml
$ virsh dumpxml foo > /tmp/foo.xml (edit /tmp/foo.xml as needed) $ virsh define /tmp/foo.xml
Adding CPUs
KVM allows you to create SMP guests. To allocate two CPUs to a VM, dump the xml as above, then edit your xml to have:<domain type='kvm'> ... <vcpu>2</vcpu> ... </domain>
Now define the VM as above.
Adding Memory
To change the memory allocation in a VM, dump the xml as above, then edit your xml to have:<domain type='kvm'> ... <memory>262144</memory> <currentMemory>262144</currentMemory> ... </domain>
Now define the VM as above. Keep in mind that the memory allocation is in kilobytes, so to allocate 512MB of memory, use 512 * 1024, or 524288.
Changing the Network Card Model
kvm and qemu currently default to using the rtl8139 NIC. Supported NICs in Ubuntu 8.04 LTS are i82551, i82557b, i82559er, ne2k_pci, pcnet, rtl8139, e1000, and virtio. To use an alternate NIC, dump the xml as above, then edit your xml to have:<domain type='kvm'> ... <interface type='network'> ... <model type='e1000'/> </interface> ... </domain>
Now define the VM as above.
Get new IDs
To get a new mac address to paste into your xml file, use this command: MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR To get a new uuid for your xml file, use: uuidgen <<Include(KVM/Header)>>