1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

RAID: Add new 'raid10_segtype_default' setting in lvm.conf

If '--mirrors/-m' and '--stripes/-i' are used together when creating
a logical volume, mirrors-over-stripes is currently chosen.  The user
can override this by using the '--type raid10' option on creation.
However, we want a place where we can set the default behavior to
'raid10' explicitly - similar to the "mirror" and "raid1" tunable,
mirror_segtype_default.

A follow-on patch should use this new setting to change the default
from "mirror" to "raid10", as this is the preferred segment type.
This commit is contained in:
Jonathan Brassow 2013-02-20 15:10:04 -06:00
parent dc2ce71313
commit 70f57996b3
3 changed files with 24 additions and 5 deletions

View File

@ -498,6 +498,23 @@ global {
# setting. # setting.
mirror_segtype_default = "mirror" mirror_segtype_default = "mirror"
# 'raid10_segtype_default' determines the segment types used by default
# when the '--stripes/-i' and '--mirrors/-m' arguments are both specified
# during the creation of a logical volume.
# Possible settings include:
#
# "raid10" - This implementation leverages MD's RAID10 personality through
# device-mapper.
#
# "mirror" - LVM will layer the 'mirror' and 'stripe' segment types. It
# will do this by creating a mirror on top of striped sub-LVs;
# effectively creating a RAID 0+1 array. This is suboptimal
# in terms of providing redunancy and performance. Changing to
# this setting is not advised.
# Specify the '--type <raid10|mirror>' option to override this default
# setting.
raid10_segtype_default "mirror"
# The default format for displaying LV names in lvdisplay was changed # The default format for displaying LV names in lvdisplay was changed
# in version 2.02.89 to show the LV name and path separately. # in version 2.02.89 to show the LV name and path separately.
# Previously this was always shown as /dev/vgname/lvname even when that # Previously this was always shown as /dev/vgname/lvname even when that

View File

@ -56,6 +56,7 @@
#define DEFAULT_MIRROR_LOG_FAULT_POLICY "allocate" #define DEFAULT_MIRROR_LOG_FAULT_POLICY "allocate"
#define DEFAULT_MIRROR_IMAGE_FAULT_POLICY "remove" #define DEFAULT_MIRROR_IMAGE_FAULT_POLICY "remove"
#define DEFAULT_MIRROR_MAX_IMAGES 8 /* limited by kernel DM_KCOPYD_MAX_REGIONS */ #define DEFAULT_MIRROR_MAX_IMAGES 8 /* limited by kernel DM_KCOPYD_MAX_REGIONS */
#define DEFAULT_RAID10_SEGTYPE "mirror"
#define DEFAULT_RAID_FAULT_POLICY "warn" #define DEFAULT_RAID_FAULT_POLICY "warn"
#define DEFAULT_DMEVENTD_RAID_LIB "libdevmapper-event-lvm2raid.so" #define DEFAULT_DMEVENTD_RAID_LIB "libdevmapper-event-lvm2raid.so"
#define DEFAULT_DMEVENTD_MIRROR_LIB "libdevmapper-event-lvm2mirror.so" #define DEFAULT_DMEVENTD_MIRROR_LIB "libdevmapper-event-lvm2mirror.so"

View File

@ -673,11 +673,12 @@ static int _lvcreate_params(struct lvcreate_params *lp,
/* Set default segtype */ /* Set default segtype */
if (arg_count(cmd, mirrors_ARG)) if (arg_count(cmd, mirrors_ARG))
/* if (arg_uint_value(cmd, arg_count(cmd, stripes_long_ARG) ?
* FIXME: Add default setting for when -i and -m arguments stripes_long_ARG : stripes_ARG, 1) > 1) {
* are both given. We should default to "raid10". segtype_str = find_config_tree_str(cmd, "global/raid10_segtype_default", DEFAULT_RAID10_SEGTYPE);
*/ } else {
segtype_str = find_config_tree_str(cmd, "global/mirror_segtype_default", DEFAULT_MIRROR_SEGTYPE); segtype_str = find_config_tree_str(cmd, "global/mirror_segtype_default", DEFAULT_MIRROR_SEGTYPE);
}
else if (arg_count(cmd, thin_ARG) || arg_count(cmd, thinpool_ARG)) else if (arg_count(cmd, thin_ARG) || arg_count(cmd, thinpool_ARG))
segtype_str = "thin"; segtype_str = "thin";
else else