Revision 5d40c988

b/doc/design-resource-model.rst
688 688
Disk parameters
689 689
~~~~~~~~~~~~~~~
690 690

  
691
The propose model for new disk parameters is a simple free-form one
692
based on dictionaries, indexed per disk level (template or logical disk)
693
and type (which depends on the level). At JSON level, since the object
694
key has to be a string, we can encode the keys via a separator
695
(e.g. slash), or by having two dict levels.
691
The proposed model for the new disk parameters is a simple free-form one
692
based on dictionaries, indexed per disk template and parameter name.
693
Only the disk template parameters are visible to the user, and those are
694
internally translated to logical disk level parameters.
695

  
696
This is a simplification, because each parameter is applied to a whole
697
nested structure and there is no way of fine-tuning each level's
698
parameters, but it is good enough for the current parameter set. This
699
model could need to be expanded, e.g., if support for three-nodes stacked
700
DRBD setups is added to Ganeti.
701

  
702
At JSON level, since the object key has to be a string, the keys can be
703
encoded via a separator (e.g. slash), or by having two dict levels.
696 704

  
697 705
+--------+-------------+-------------------------+---------------------+------+
698 706
|Disk    |Name         |Description              |Current status       |Type  |
699 707
|template|             |                         |                     |      |
700 708
+========+=============+=========================+=====================+======+
701
|dt/plain|stripes      |How many stripes to use  |Configured at        |int   |
709
|plain   |stripes      |How many stripes to use  |Configured at        |int   |
702 710
|        |             |for newly created (plain)|./configure time, not|      |
703 711
|        |             |logical voumes           |overridable at       |      |
704 712
|        |             |                         |runtime              |      |
705 713
+--------+-------------+-------------------------+---------------------+------+
706
|dt/drdb |stripes      |How many stripes to use  |Same as for lvm      |int   |
714
|drbd    |stripes      |How many stripes to use  |Same as for plain    |int   |
707 715
|        |             |for data volumes         |                     |      |
708 716
+--------+-------------+-------------------------+---------------------+------+
709
|dt/drbd |metavg       |Default volume group for |Same as the main     |string|
717
|drbd    |metavg       |Default volume group for |Same as the main     |string|
710 718
|        |             |the metadata LVs         |volume group,        |      |
711 719
|        |             |                         |overridable via      |      |
712 720
|        |             |                         |'metavg' key         |      |
713
|        |             |                         |                     |      |
714 721
+--------+-------------+-------------------------+---------------------+------+
715
|dt/drbd |metastripes  |How many stripes to use  |Same as for lvm      |int   |
722
|drbd    |metastripes  |How many stripes to use  |Same as for lvm      |int   |
716 723
|        |             |for meta volumes         |'stripes', suboptimal|      |
717 724
|        |             |                         |as the meta LVs are  |      |
718 725
|        |             |                         |small                |      |
719 726
+--------+-------------+-------------------------+---------------------+------+
720
|ld/drbd8|disk_barriers|What kind of barriers to |Either all enabled or|string|
727
|drbd    |disk_barriers|What kind of barriers to |Either all enabled or|string|
721 728
|        |             |*disable* for disks;     |all disabled, per    |      |
722 729
|        |             |either "n" or a string   |./configure time     |      |
723 730
|        |             |containing a subset of   |option               |      |
724 731
|        |             |"bfd"                    |                     |      |
725 732
+--------+-------------+-------------------------+---------------------+------+
726
|ld/drbd8|meta_barriers|Whether barriers are     |Handled together with|bool  |
733
|drbd    |meta_barriers|Whether barriers are     |Handled together with|bool  |
727 734
|        |             |enabled or not for the   |disk_barriers        |      |
728 735
|        |             |meta volume              |                     |      |
729
|        |             |                         |                     |      |
730 736
+--------+-------------+-------------------------+---------------------+------+
731
|ld/drbd8|resync_rate  |The (static) resync rate |Hardcoded in         |int   |
737
|drbd    |resync_rate  |The (static) resync rate |Hardcoded in         |int   |
732 738
|        |             |for drbd, when using the |constants.py, not    |      |
733 739
|        |             |static syncer, in MiB/s  |changeable via Ganeti|      |
734
|        |             |                         |                     |      |
735
|        |             |                         |                     |      |
736
|        |             |                         |                     |      |
737 740
+--------+-------------+-------------------------+---------------------+------+
738
|ld/drbd8|disk_custom  |Free-form string that    |Not supported        |string|
741
|drbd    |disk_custom  |Free-form string that    |Not supported        |string|
739 742
|        |             |will be appended to the  |                     |      |
740 743
|        |             |drbdsetup disk command   |                     |      |
741 744
|        |             |line, for custom options |                     |      |
742 745
|        |             |not supported by Ganeti  |                     |      |
743 746
|        |             |itself                   |                     |      |
744 747
+--------+-------------+-------------------------+---------------------+------+
745
|ld/drbd8|net_custom   |Free-form string for     |                     |      |
748
|drbd    |net_custom   |Free-form string for     |Not supported        |string|
746 749
|        |             |custom net setup options |                     |      |
747
|        |             |                         |                     |      |
748
|        |             |                         |                     |      |
749
|        |             |                         |                     |      |
750
|        |             |                         |                     |      |
751 750
+--------+-------------+-------------------------+---------------------+------+
752 751

  
753
Note that the DRBD8 parameters will change once we support DRBD 8.4,
754
which has changed syntax significantly; new syncer modes will be added
755
for that release.
752
Note that the DRBD parameters might change once Ganeti supports DRBD 8.4, in
753
which the :command:`drbdsetup` syntax has changed significantly.
754
Moreover, new parameters for the dynamic synchronization algorithm will
755
be added for DRBD versions >= 8.3.9.
756 756

  
757 757
All the above parameters are at cluster and node group level; as in
758 758
other parts of the code, the intention is that all nodes in a node group
759
should be equal.
759
should be equal. It will later be decided to which node group give
760
precedence in case of instances split over node groups.
761

  
762
.. admonition:: FIXME
763

  
764
   Add details about when each parameter change takes effect (device
765
   creation vs. activation)
760 766

  
761 767
Node parameters
762 768
~~~~~~~~~~~~~~~

Also available in: Unified diff