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

Re: [Xen-devel] [RFC] Virtual disk configuration, PV vs. emulated, backward compatibility etc



On Tue, Jul 27, 2010 at 04:58:10PM +0100, Ian Campbell wrote:
> Currently the configuration syntax available in a domain configuration
> has several ways of specifying devices, some of which have slightly
> unexpected semantics wrt whether or not an emulated device is created,
> what the major number in xenstore is etc. Some also expose details of
> the guest OS's choice of major number (or rather exposes Linux's choice
> to all guests AFAICT).
> 
> In an attempt to clean this up, or at least make the strange behaviour
> more explicit, I'd like to propose some extensions to the dXpY syntax
> supported by libxl such that the other existing ways of specifying
> devices become syntactic sugar for specific well defined configurations
> in the new syntax, whilst preserving backwards compatibility.
> 
> I hope that the following will also form the basis for a future document
> (gasp!) describing the available syntax, which combinations are valid
> etc (unless someone can point me to an existing document I can update).
> 
> Virtual Disk Configuration
> --------------------------
> 
> A virtual disk is defined in the guest configuration file as d<X>p<Y>
> where <X> is the disk number and <Y> is the partition number. In
> addition a number of options can be specified.
> 
> p0 indicates the entire disk.
> 
> Device number encoding in xenstore
> ----------------------------------
> 
> Given a disk specified as dXpY the device encoding used in xenstore has
> two potential formats, legacy and extended. Both of these are already
> defined and implemented in guest frontend drivers.
> 
> The extended encoding is generally preferred but for backwards
> compatibility the legacy format must still be supported.
> 
> The legacy encoding is (major and minor 8 bits each):
>         (major << 8) | minor
> 
> The extended encoding is (disk == 19 bits, partition == 256 bits):
>         (1 << 28) | (disk << 8) | partition
> 
> Note that the extended encoding for d0p0..d0p255 overlaps in the minor
> number space with the legacy encodings of d0p0..d15p15 and therefore
> these must not be used simultaneously.
> 
> Configuration Options
> ---------------------
> 
> Each disk dXpY can optionally be followed by one or more of the
> following key value pairs (precise syntax TBD, but comma separated is
> common in similar situations).
> 
> Option keys and values with a _ prefix are for internal use only and are
> used only to provide legacy semantics for syntactic sugar and must not
> otherwise be used.
>         
>         pv = true | false
>         
>                 Should a PV backend/frontend pair be created in xenstore
>                 to correspond to this device.
>                 
>                 Default: true for HVM guests, ignored for PV guests
>                 (treated as true)
>         
>         extended = true | false
>         
>                 Request use of extended device encoding in xenstore.
>                 
>                 extended = false is only valid for d0..d15 (as d16+
>                 cannot be represented in the legacy encoding)
>                 
>                 When extended = false and in the absence of a specific
>                 _vdevice configuration option (see below) the encoding
>                 will use major==202 and minor=="(disk << 4) |
>                 partition".
>                 
>                 Default: false for d0p0..d0p255, false if _vdevice
>                 option present (see below), otherwise true.
>         
>         emul = none | ide[01].[01] | _ide[01].[01] | ...
>         
>                 none = No emulated device to be created.
>                 
>                 ide[01].[01] = Emulate IDE device. First [01] =>
>                 primary, secondary. Second [01] => master, slave
>                 
>                 _ide[01].[01] = As per ide[01].[01] however emulation is
>                 enabled iff no other disk is explicitly configured with
>                 emulation.
>                 
>                 In the future sata<X>.<Y> or similar might be added
>                 here.
>                 
>                 Default: none HVM guests, ignored for PV guests (treated
>                 as none)
>                 
>         _vdevice = <N>:<M> | <Q>
>         
>                 Enforce use of legacy device encoding in xenstore with
>                 the given major:minor or explicit value.
>                 
>                 Default: unset, encoding determined by "extended" option
>                 (see above)
> 
> Backward compatible disk configuration
> --------------------------------------
> 
> Given the above configuration options several short hands are defined
> for backwards compatibility with existing configuration files and
> guests.
> 
> These will be implemented by a straight textual substitution before
> parsing the configuration.
> 
>         hda => d0p0,pv=true,emul=ide0.0,_vdevice=3:0
>         hdb => d1p0,pv=true,emul=ide0.1,_vdevice=3:64
>         hdc => d2p0,pv=true,emul=ide1.0,_vdevice=22:0
>         hdd => d3p0,pv=true,emul=ide1.1,_vdevice=22:64
> 
>         xvda => d0p0,pv=true,emul=_ide0.0,_vdevice=202:0
>         xvdb => d1p0,pv=true,emul=_ide0.1,_vdevice=202:16
>         xvdc => d2p0,pv=true,emul=_ide1.0,_vdevice=202:32
>         xvdd => d3p0,pv=true,emul=_ide1.1,_vdevice=202:64
>         xvde => d4p0,pv=true,emul=none,_vdevice=202:80
>         ...
>         xvdo => d15p0,pv=true,emul=none,_vdevice=202:240
>         xvdp => d16p0,pv=true,emul=none
>         ...
>         xvdz => d25,pv=true,emul=none
>         
>         xvda[1..15] =>
>         d0p[1..15],pv=true,emul=_ide0.0,_vdevice=202:[0..15]
>         xvdb[1..15] => etc
> 
> Note that all the above are Linux (guest) specific.
> 
> The sd* syntax is not covered. It's unclear if this is used in the wild
> or what the existing semantics of emul= are for SCSI devices. If someone
> cares to investigate the existing behaviour then it can be added.
>

sd* devices are still often used for Xen PV domUs..
(yeah, people should use xvd*, but many people still have sd*).

-- Pasi
 


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.