X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/5b18ff3bd72b182e6330fc8e1c6386cee484a6d4..ba55d062da8dfb89a37afc2f13f2e689d0094829:/doc/design-2.1.rst diff --git a/doc/design-2.1.rst b/doc/design-2.1.rst index 70c9557..25f75fe 100644 --- a/doc/design-2.1.rst +++ b/doc/design-2.1.rst @@ -110,6 +110,83 @@ compatibility with 2.0. The code to export the list of VNC password files from the hypervisors to RedistributeConfig will be shared between the KVM and xen-hvm hypervisors. +Disk/Net parameters +~~~~~~~~~~~~~~~~~~~ + +Current State and shortcomings +++++++++++++++++++++++++++++++ + +Currently disks and network interfaces have a few tweakable options and all the +rest is left to a default we chose. We're finding that we need more and more to +tweak some of these parameters, for example to disable barriers for DRBD +devices, or allow striping for the LVM volumes. + +Moreover for many of these parameters it will be nice to have cluster-wide +defaults, and then be able to change them per disk/interface. + +Proposed changes +++++++++++++++++ + +We will add new cluster level diskparams and netparams, which will contain all +the tweakable parameters. All values which have a sensible cluster-wide default +will go into this new structure while parameters which have unique values will not. + +Example of network parameters: + - mode: bridge/route + - link: for mode "bridge" the bridge to connect to, for mode route it can + contain the routing table, or the destination interface + +Example of disk parameters: + - stripe: lvm stripes + - stripe_size: lvm stripe size + - meta_flushes: drbd, enable/disable metadata "barriers" + - data_flushes: drbd, enable/disable data "barriers" + +Some parameters are bound to be disk-type specific (drbd, vs lvm, vs files) or +hypervisor specific (nic models for example), but for now they will all live in +the same structure. Each component is supposed to validate only the parameters +it knows about, and ganeti itself will make sure that no "globally unknown" +parameters are added, and that no parameters have overridden meanings for +different components. + +The parameters will be kept, as for the BEPARAMS into a "default" category, +which will allow us to expand on by creating instance "classes" in the future. +Instance classes is not a feature we plan implementing in 2.1, though. + +Non bridged instances support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Current State and shortcomings +++++++++++++++++++++++++++++++ + +Currently each instance NIC must be connected to a bridge, and if the bridge is +not specified the default cluster one is used. This makes it impossible to use +the vif-route xen network scripts, or other alternative mechanisms that don't +need a bridge to work. + +Proposed changes +++++++++++++++++ + +The new "mode" network parameter will distinguish between bridged interfaces +and routed ones. + +When mode is "bridge" the "link" parameter will contain the bridge the instance +should be connected to, effectively making things as today. The value has been +migrated from a nic field to a parameter to allow for an easier manipulation of +the cluster default. + +When mode is "route" the ip field of the interface will become mandatory, to +allow for a route to be set. In the future we may want also to accept multiple +IPs or IP/mask values for this purpose. We will evaluate possible meanings of +the link parameter to signify a routing table to be used, which would allow for +insulation between instance groups (as today happens for different bridges). + +For now we won't add a parameter to specify which network script gets called +for which instance, so in a mixed cluster the network script must be able to +handle both cases. The default kvm vif script will be changed to do so. (Xen +doesn't have a ganeti provided script, so nothing will be done for that +hypervisor) + External interface changes --------------------------