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:
parent
dc39d2a66e
commit
dff224669d
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user