个人工具

“UbuntuHelp:KVM/Managing”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(创建新页面为 '{{From|https://help.ubuntu.com/community/KVM/Managing}} {{Languages|UbuntuHelp:KVM/Managing}} #title KVM Guest Management <<Include(KVM/Header)>> == Manage your virtual machines...')
 
第97行: 第97行:
 
virsh # resume mirror
 
virsh # resume mirror
 
Domain mirror resumed
 
Domain mirror resumed
</nowiki></pre>
 
=== 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:
 
<pre><nowiki>
 
sudo apt-get install virt-manager virt-viewer
 
</nowiki></pre>
 
And use it to connect to your server:
 
<pre><nowiki>
 
$ virt-manager -c qemu+ssh://10.10.10.10/system
 
</nowiki></pre>
 
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:
 
<pre><nowiki>
 
$ virt-manager -c qemu:///system
 
 
</nowiki></pre>
 
</nowiki></pre>
 
== Editing the attributes of a Virtual Machine ==
 
== Editing the attributes of a Virtual Machine ==

2009年11月17日 (二) 19:43的版本

  1. 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

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:

  1. export (aka 'dump') the xml of the virtual machine you want to edit
  2. edit the xml
  3. import (aka 'define') the xml
For example, to edit the machine named 'foo' (you can get a list of your machines with 'virsh list --all'), do:
$ 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)>>