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

Require --restorefile when using pvcreate --uuid.

Introduce --norestorefile to allow user to override the new requirement.

This can also be overridden with "devices/require_restorefile_with_uuid"
in lvm.conf -- however the default is 1.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
Mike Snitzer 2010-08-12 04:08:59 +00:00
parent dc39d2a66e
commit dff224669d
10 changed files with 39 additions and 10 deletions

View File

@ -1,5 +1,7 @@
Version 2.02.73 - Version 2.02.73 -
================================ ================================
Add --norestorefile option to pvcreate.
Require --restorefile when using pvcreate --uuid.
Recognise and give preference to md device partitions (blkext major). Recognise and give preference to md device partitions (blkext major).
Never scan internal LVM devices. Never scan internal LVM devices.
Split-mirror operations were ignoring user-specified PVs. Split-mirror operations were ignoring user-specified PVs.

View File

@ -130,6 +130,9 @@ devices {
# Set this to 1 to skip such devices. This should only be needed # Set this to 1 to skip such devices. This should only be needed
# in recovery situations. # in recovery situations.
ignore_suspended_devices = 0 ignore_suspended_devices = 0
# Allow use of pvcreate --uuid without requiring --restorefile.
require_restorefile_with_uuid = 1
} }
# This section that allows you to configure the nature of the # This section that allows you to configure the nature of the

View File

@ -30,6 +30,7 @@
#define DEFAULT_MD_COMPONENT_DETECTION 1 #define DEFAULT_MD_COMPONENT_DETECTION 1
#define DEFAULT_MD_CHUNK_ALIGNMENT 1 #define DEFAULT_MD_CHUNK_ALIGNMENT 1
#define DEFAULT_IGNORE_SUSPENDED_DEVICES 1 #define DEFAULT_IGNORE_SUSPENDED_DEVICES 1
#define DEFAULT_REQUIRE_RESTOREFILE_WITH_UUID 1
#define DEFAULT_DATA_ALIGNMENT_OFFSET_DETECTION 1 #define DEFAULT_DATA_ALIGNMENT_OFFSET_DETECTION 1
#define DEFAULT_DATA_ALIGNMENT_DETECTION 1 #define DEFAULT_DATA_ALIGNMENT_DETECTION 1

View File

@ -17,6 +17,7 @@ pvcreate \- initialize a disk or partition for use by LVM
.RB [ \-\-dataalignment alignment ] .RB [ \-\-dataalignment alignment ]
.RB [ \-\-dataalignmentoffset alignment_offset ] .RB [ \-\-dataalignmentoffset alignment_offset ]
.RB [ \-\-restorefile file ] .RB [ \-\-restorefile file ]
.RB [ \-\-norestorefile ]
.RB [ \-\-setphysicalvolumesize size ] .RB [ \-\-setphysicalvolumesize size ]
.RB [ \-u | \-\-uuid uuid ] .RB [ \-u | \-\-uuid uuid ]
.RB [ \-\-version ] .RB [ \-\-version ]
@ -60,7 +61,9 @@ Specify the uuid for the device.
Without this option, \fBpvcreate\fP generates a random uuid. Without this option, \fBpvcreate\fP generates a random uuid.
All of your physical volumes must have unique uuids. All of your physical volumes must have unique uuids.
You need to use this option before restoring a backup of LVM metadata You need to use this option before restoring a backup of LVM metadata
onto a replacement device - see \fBvgcfgrestore\fP(8). onto a replacement device - see \fBvgcfgrestore\fP(8). As such, use of
\fB--restorefile\fP is compulsory unless the \fB--norestorefile\fP is
used.
.TP .TP
.BR \-y ", " \-\-yes .BR \-y ", " \-\-yes
Answer yes to all questions. Answer yes to all questions.
@ -138,6 +141,10 @@ the same place and not get overwritten by new metadata. This provides
a mechanism to upgrade the metadata format or to add/remove metadata a mechanism to upgrade the metadata format or to add/remove metadata
areas. Use with care. See also \fBvgconvert\fP(8). areas. Use with care. See also \fBvgconvert\fP(8).
.TP .TP
.BR \-\-norestorefile
In conjunction with \fB--uuid\fP, this allows a uuid to be specified
without also requiring that a backup of the metadata be provided.
.TP
.BR \-\-labelsector " sector" .BR \-\-labelsector " sector"
By default the PV is labelled with an LVM2 identifier in its second By default the PV is labelled with an LVM2 identifier in its second
sector (sector 1). This lets you use a different sector near the sector (sector 1). This lets you use a different sector near the

View File

@ -30,7 +30,7 @@ pvcreate $dev1
pvcreate --metadatacopies 0 $dev2 pvcreate --metadatacopies 0 $dev2
pvcreate --metadatacopies 0 $dev3 pvcreate --metadatacopies 0 $dev3
pvcreate $dev4 pvcreate $dev4
pvcreate -u $TEST_UUID --metadatacopies 0 $dev5 pvcreate --norestorefile -u $TEST_UUID --metadatacopies 0 $dev5
vgcreate -c n $vg $devs vgcreate -c n $vg $devs
lvcreate -n $lv -l 5 -i5 -I256 $vg lvcreate -n $lv -l 5 -i5 -I256 $vg

View File

@ -95,17 +95,20 @@ uuid2=freddy-fred-fred-fred-fred-fred-fredie
bogusuuid=fred bogusuuid=fred
# pvcreate rejects uuid option with less than 32 characters # pvcreate rejects uuid option with less than 32 characters
not pvcreate --uuid $bogusuuid $dev1 not pvcreate --norestorefile --uuid $bogusuuid $dev1
# pvcreate rejects uuid option without restorefile
not pvcreate --uuid $uuid1 $dev1
# pvcreate rejects uuid already in use # pvcreate rejects uuid already in use
pvcreate --uuid $uuid1 $dev1 pvcreate --norestorefile --uuid $uuid1 $dev1
not pvcreate --uuid $uuid1 $dev2 not pvcreate --norestorefile --uuid $uuid1 $dev2
# pvcreate rejects non-existent file given with restorefile # pvcreate rejects non-existent file given with restorefile
not pvcreate --uuid $uuid1 --restorefile $backupfile $dev1 not pvcreate --uuid $uuid1 --restorefile $backupfile $dev1
# pvcreate rejects restorefile with uuid not found in file # pvcreate rejects restorefile with uuid not found in file
pvcreate --uuid $uuid1 $dev1 pvcreate --norestorefile --uuid $uuid1 $dev1
vgcfgbackup -f $backupfile vgcfgbackup -f $backupfile
not pvcreate --uuid $uuid2 --restorefile $backupfile $dev2 not pvcreate --uuid $uuid2 --restorefile $backupfile $dev2

View File

@ -37,6 +37,6 @@ pvcreate -ff -y $dev1
pvcreate -ff -y $dev2 pvcreate -ff -y $dev2
vgcfgbackup -f "$(pwd)/backup.$$" $vg vgcfgbackup -f "$(pwd)/backup.$$" $vg
sed 's/flags = \[\"MISSING\"\]/flags = \[\]/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1" sed 's/flags = \[\"MISSING\"\]/flags = \[\]/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1"
pvcreate -ff -y -u $pv1_uuid $dev1 pvcreate -ff -y --norestorefile -u $pv1_uuid $dev1
pvcreate -ff -y -u $pv2_uuid $dev2 pvcreate -ff -y --norestorefile -u $pv2_uuid $dev2
vgcfgrestore -f "$(pwd)/backup.$$1" $vg vgcfgrestore -f "$(pwd)/backup.$$1" $vg

View File

@ -27,6 +27,7 @@ arg(vgmetadatacopies_ARG, '\0', "vgmetadatacopies", metadatacopies_arg, 0)
arg(metadatacopies_ARG, '\0', "metadatacopies", metadatacopies_arg, 0) arg(metadatacopies_ARG, '\0', "metadatacopies", metadatacopies_arg, 0)
arg(metadatasize_ARG, '\0', "metadatasize", size_mb_arg, 0) arg(metadatasize_ARG, '\0', "metadatasize", size_mb_arg, 0)
arg(metadataignore_ARG, '\0', "metadataignore", yes_no_arg, 0) arg(metadataignore_ARG, '\0', "metadataignore", yes_no_arg, 0)
arg(norestorefile_ARG, '\0', "norestorefile", NULL, 0)
arg(restorefile_ARG, '\0', "restorefile", string_arg, 0) arg(restorefile_ARG, '\0', "restorefile", string_arg, 0)
arg(labelsector_ARG, '\0', "labelsector", int_arg, 0) arg(labelsector_ARG, '\0', "labelsector", int_arg, 0)
arg(driverloaded_ARG, '\0', "driverloaded", yes_no_arg, 0) arg(driverloaded_ARG, '\0', "driverloaded", yes_no_arg, 0)

View File

@ -497,6 +497,7 @@ xx(pvcreate,
"Initialize physical volume(s) for use by LVM", "Initialize physical volume(s) for use by LVM",
0, 0,
"pvcreate " "\n" "pvcreate " "\n"
"\t[--norestorefile]\n"
"\t[--restorefile file]\n" "\t[--restorefile file]\n"
"\t[-d|--debug]" "\n" "\t[-d|--debug]" "\n"
"\t[-f[f]|--force [--force]] " "\n" "\t[-f[f]|--force [--force]] " "\n"
@ -517,8 +518,9 @@ xx(pvcreate,
"\tPhysicalVolume [PhysicalVolume...]\n", "\tPhysicalVolume [PhysicalVolume...]\n",
dataalignment_ARG, dataalignmentoffset_ARG, force_ARG, test_ARG, dataalignment_ARG, dataalignmentoffset_ARG, force_ARG, test_ARG,
labelsector_ARG, metadatatype_ARG, metadatacopies_ARG, pvmetadatacopies_ARG, labelsector_ARG, metadatatype_ARG, metadatacopies_ARG,
metadatasize_ARG, metadataignore_ARG, physicalvolumesize_ARG, metadatasize_ARG, metadataignore_ARG, norestorefile_ARG,
physicalvolumesize_ARG, pvmetadatacopies_ARG,
restorefile_ARG, uuidstr_ARG, yes_ARG, zero_ARG) restorefile_ARG, uuidstr_ARG, yes_ARG, zero_ARG)
xx(pvdata, xx(pvdata,

View File

@ -36,6 +36,16 @@ static int pvcreate_restore_params_validate(struct cmd_context *cmd,
return 0; return 0;
} }
if (!arg_count(cmd, restorefile_ARG) && arg_count(cmd, uuidstr_ARG)) {
if (!arg_count(cmd, norestorefile_ARG) &&
find_config_tree_bool(cmd,
"devices/require_restorefile_with_uuid",
DEFAULT_REQUIRE_RESTOREFILE_WITH_UUID)) {
log_error("--restorefile is required with --uuid");
return 0;
}
}
if (arg_count(cmd, uuidstr_ARG) && argc != 1) { if (arg_count(cmd, uuidstr_ARG) && argc != 1) {
log_error("Can only set uuid on one volume at once"); log_error("Can only set uuid on one volume at once");
return 0; return 0;