[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] pci bus slot in libvirt

On 2012年06月27日 05:25, Fong Vang wrote:
On Tue, Jun 26, 2012 at 2:00 PM, Fong Vang<sudoyang gmail com>  wrote:
Very informational.  Thank you very much.

On Tue, Jun 26, 2012 at 1:51 PM, Daniel P. Berrange<berrange redhat com>  wrote:
On Tue, Jun 26, 2012 at 01:09:24PM -0700, Fong Vang wrote:
What's the best way to configure multiple disks in libvirt?  How many
slots can you have?  This is from the xml dump:

In some of my configurations, I have this:

     <disk type='block' device='disk'>
       <driver name='qemu' type='raw' cache='none' io='native'/>
       <source dev='/dev/sdb1'/>
       <target dev='vdb' bus='virtio'/>
       <alias name='virtio-disk1'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x03'

With the traditional VirtIO-Block device, the disk controller only
accepts a single drive, so each<disk>  you add consumes 1 PCI slot.
You have a max of 31 PCI slots, of which at most 28 are usable for
(PIIX consumes 1, VGA device consumes 1 and Balloon driver consumes
1). Those 28 must be split across everything else, so assuming no
NICs or other devices, you have create 28 virtio-block disks.

One last question on this.  Are there some slots that are reserved?

slot 0, 1, 2 are reserved. You will fail to start the guest anyway
if configure the devices using those 3 slot number. :-)

In my setup, there could only be multiple disks and NICs.  I'm trying
to figure out the best way to structure the different components with
respect to slot numbering.

while others are created as such:

     <disk type='file' device='disk'>
       <driver name='qemu' type='qcow2'/>
       <source file='/data2/VMs/libvirt/images/win2k8-1.qcow2'/>
       <target dev='hda' bus='ide'/>
       <alias name='ide0-0-0'/>
       <address type='drive' controller='0' bus='0' target='0' unit='0'/>

This is an IDE disk, where the IDE controller consumes the PCI slot,
and can support upto 4 drives (hda, hdb, hdc and hdd). So for 1 PCI
slot, you get 4 drives, which isn't great.

Which way is better?  The top one defines the bus and slot while the
bottom defines the controller, bus, target, and unit.

You won't typically choose between IDE and Virtio-Block based on the
number of disks. You'll simply always want virtio-block for performance
reasons. So there's no real choice of config here.

With the latest libvirt, guest kernel and QEMU, there is a new device
type known as Virtio-SCSI. In this the Virtio-SCSI controller consumes
1 PCI device and can handle many many many disks. This is the best
option for the future for people who need lots of disks.

BTW, how many slots can we define per bus?

With virtio-block, currently 28.

If you are willing todo without hotplug support, you can turn on
multi-function and increase the number of possible virtio-block
devices x7 ie  ~196

In the future we'll also have support for PCI bridges, and multiple
PCI root complexes, which will increase max # of PCI slots even more.

But virtio-SCSI really is the best way in the future.

|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

libvir-list mailing list
libvir-list redhat com

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]