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

1043 lines
30 KiB
C
Raw Normal View History

2001-09-25 16:49:28 +04:00
/*
2004-03-30 23:35:44 +04:00
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
* Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
2001-09-25 16:49:28 +04:00
*
2004-03-30 23:35:44 +04:00
* This file is part of LVM2.
2001-09-25 16:49:28 +04:00
*
2004-03-30 23:35:44 +04:00
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License v.2.1.
2001-09-25 16:49:28 +04:00
*
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 23:35:44 +04:00
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2001-09-25 16:49:28 +04:00
*/
2002-11-18 17:04:08 +03:00
/*********** Replace with script?
xx(e2fsadm,
"Resize logical volume and ext2 filesystem",
"e2fsadm "
"[-d|--debug] " "[-h|--help] " "[-n|--nofsck]" "\n"
"\t{[-l|--extents] [+|-]LogicalExtentsNumber |" "\n"
"\t [-L|--size] [+|-]LogicalVolumeSize[bBsSkKmMgGtTpPeE]}" "\n"
2002-11-18 17:04:08 +03:00
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version] " "\n"
"\tLogicalVolumePath" "\n",
extents_ARG, size_ARG, nofsck_ARG, test_ARG)
*********/
xx(dumpconfig,
"Dump active configuration",
PERMITTED_READ_ONLY,
"dumpconfig "
"\t[-f|--file filename] " "\n"
"[ConfigurationVariable...]\n",
file_ARG)
2004-09-14 20:42:46 +04:00
xx(formats,
"List available metadata formats",
PERMITTED_READ_ONLY,
2004-09-14 20:42:46 +04:00
"formats\n")
2001-09-25 16:49:28 +04:00
xx(help,
"Display help for commands",
PERMITTED_READ_ONLY,
"help <command>" "\n")
2001-09-25 16:49:28 +04:00
2001-10-08 22:44:22 +04:00
/*********
2001-09-25 16:49:28 +04:00
xx(lvactivate,
"Activate logical volume on given partition(s)",
"lvactivate "
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-v|--verbose]\n"
"Logical Volume(s)\n")
2001-10-08 22:44:22 +04:00
***********/
2001-09-25 16:49:28 +04:00
xx(lvchange,
"Change the attributes of logical volume(s)",
CACHE_VGMETADATA | PERMITTED_READ_ONLY,
2001-09-25 16:49:28 +04:00
"lvchange\n"
"\t[-A|--autobackup y|n]\n"
2004-11-12 18:59:09 +03:00
"\t[-a|--available [e|l]y|n]\n"
2004-03-08 20:19:15 +03:00
"\t[--addtag Tag]\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy]\n"
"\t[-C|--contiguous y|n]\n"
"\t[-d|--debug]\n"
2004-03-08 20:19:15 +03:00
"\t[--deltag Tag]\n"
2003-07-11 21:10:19 +04:00
"\t[-f|--force]\n"
"\t[-h|--help]\n"
2002-11-18 17:04:08 +03:00
"\t[--ignorelockingfailure]\n"
"\t[--ignoremonitoring]\n"
"\t[--monitor {y|n}]\n"
"\t[--poll {y|n}]\n"
"\t[--noudevsync]\n"
"\t[-M|--persistent y|n] [--major major] [--minor minor]\n"
"\t[-P|--partial] " "\n"
"\t[-p|--permission r|rw]\n"
"\t[-r|--readahead ReadAheadSectors|auto|none]\n"
2004-03-27 00:24:03 +03:00
"\t[--refresh]\n"
2006-10-24 21:19:48 +04:00
"\t[--resync]\n"
"\t[--sysinit]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
2006-10-24 03:03:55 +04:00
"\t[-y|--yes]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tLogicalVolume[Path] [LogicalVolume[Path]...]\n",
alloc_ARG, autobackup_ARG, available_ARG, contiguous_ARG, force_ARG,
ignorelockingfailure_ARG, ignoremonitoring_ARG, major_ARG, minor_ARG,
monitor_ARG, noudevsync_ARG, partial_ARG, permission_ARG, persistent_ARG,
poll_ARG, readahead_ARG, resync_ARG, refresh_ARG, addtag_ARG, deltag_ARG,
sysinit_ARG, test_ARG, yes_ARG)
2001-09-25 16:49:28 +04:00
xx(lvconvert,
"Change logical volume layout",
0,
2006-04-06 00:43:23 +04:00
"lvconvert "
"[-m|--mirrors Mirrors [{--mirrorlog {disk|core|mirrored}|--corelog}]]\n"
"\t[--type SegmentType]\n"
"\t[--repair [--use-policies]]\n"
2006-10-08 03:04:36 +04:00
"\t[-R|--regionsize MirrorLogRegionSize]\n"
"\t[--alloc AllocationPolicy]\n"
2007-12-22 15:13:29 +03:00
"\t[-b|--background]\n"
"\t[-d|--debug]\n"
2009-06-30 22:39:31 +04:00
"\t[-f|--force]\n"
"\t[-h|-?|--help]\n"
2007-12-22 15:13:29 +03:00
"\t[-i|--interval seconds]\n"
2010-04-13 05:54:32 +04:00
"\t[--stripes Stripes [-I|--stripesize StripeSize]]\n"
"\t[--noudevsync]\n"
"\t[-v|--verbose]\n"
2009-06-30 22:39:31 +04:00
"\t[-y|--yes]\n"
"\t[--version]" "\n"
2006-04-06 00:43:23 +04:00
"\tLogicalVolume[Path] [PhysicalVolume[Path]...]\n\n"
2010-01-09 01:00:31 +03:00
"lvconvert "
Add the ability to split an image from the mirror and track changes. ~> lvconvert --splitmirrors 1 --trackchanges vg/lv The '--trackchanges' option allows a user the ability to use an image of a RAID1 array for the purposes of temporary read-only access. The image can be merged back into the array at a later time and only the blocks that have changed in the array since the split will be resync'ed. This operation can be thought of as a partial split. The image is never completely extracted from the array, in that the array reserves the position the device occupied and tracks the differences between the array and the split image via a bitmap. The image itself is rendered read-only and the name (<LV>_rimage_*) cannot be changed. The user can complete the split (permanently splitting the image from the array) by re-issuing the 'lvconvert' command without the '--trackchanges' argument and specifying the '--name' argument. ~> lvconvert --splitmirrors 1 --name my_split vg/lv Merging the tracked image back into the array is done with the '--merge' option (included in a follow-on patch). ~> lvconvert --merge vg/lv_rimage_<n> The internal mechanics of this are relatively simple. The 'raid' device- mapper target allows for the specification of an empty slot in an array via '- -'. This is what will be used if a partial activation of an array is ever required. (It would also be possible to use 'error' targets in place of the '- -'.) If a RAID image is found to be both read-only and visible, then it is considered separate from the array and '- -' is used to hold it's position in the array. So, all that needs to be done to temporarily split an image from the array /and/ cause the kernel target's bitmap to track (aka "mark") changes made is to make the specified image visible and read-only. To merge the device back into the array, the image needs to be returned to the read/write state of the top-level LV and made invisible.
2011-08-18 23:38:26 +04:00
"[--splitmirrors Images --trackchanges]\n"
2010-01-09 01:00:31 +03:00
"[--splitmirrors Images --name SplitLogicalVolumeName]\n"
"\tLogicalVolume[Path] [SplittablePhysicalVolume[Path]...]\n\n"
2006-04-06 00:43:23 +04:00
"lvconvert "
"[-s|--snapshot]\n"
"\t[-c|--chunksize]\n"
"\t[-d|--debug]\n"
"\t[-h|-?|--help]\n"
"\t[--noudevsync]\n"
2006-04-06 00:43:23 +04:00
"\t[-v|--verbose]\n"
"\t[-Z|--zero {y|n}]\n"
"\t[--version]" "\n"
"\tOriginalLogicalVolume[Path] SnapshotLogicalVolume[Path]\n\n"
"lvconvert "
"--merge\n"
"\t[-b|--background]\n"
"\t[-i|--interval seconds]\n"
"\t[-d|--debug]\n"
"\t[-h|-?|--help]\n"
"\t[-v|--verbose]\n"
"\tLogicalVolume[Path]\n",
2007-12-22 15:13:29 +03:00
alloc_ARG, background_ARG, chunksize_ARG, corelog_ARG, interval_ARG,
merge_ARG, mirrorlog_ARG, mirrors_ARG, name_ARG, noudevsync_ARG,
Add the ability to split an image from the mirror and track changes. ~> lvconvert --splitmirrors 1 --trackchanges vg/lv The '--trackchanges' option allows a user the ability to use an image of a RAID1 array for the purposes of temporary read-only access. The image can be merged back into the array at a later time and only the blocks that have changed in the array since the split will be resync'ed. This operation can be thought of as a partial split. The image is never completely extracted from the array, in that the array reserves the position the device occupied and tracks the differences between the array and the split image via a bitmap. The image itself is rendered read-only and the name (<LV>_rimage_*) cannot be changed. The user can complete the split (permanently splitting the image from the array) by re-issuing the 'lvconvert' command without the '--trackchanges' argument and specifying the '--name' argument. ~> lvconvert --splitmirrors 1 --name my_split vg/lv Merging the tracked image back into the array is done with the '--merge' option (included in a follow-on patch). ~> lvconvert --merge vg/lv_rimage_<n> The internal mechanics of this are relatively simple. The 'raid' device- mapper target allows for the specification of an empty slot in an array via '- -'. This is what will be used if a partial activation of an array is ever required. (It would also be possible to use 'error' targets in place of the '- -'.) If a RAID image is found to be both read-only and visible, then it is considered separate from the array and '- -' is used to hold it's position in the array. So, all that needs to be done to temporarily split an image from the array /and/ cause the kernel target's bitmap to track (aka "mark") changes made is to make the specified image visible and read-only. To merge the device back into the array, the image needs to be returned to the read/write state of the top-level LV and made invisible.
2011-08-18 23:38:26 +04:00
regionsize_ARG, repair_ARG, snapshot_ARG, splitmirrors_ARG, trackchanges_ARG,
type_ARG, stripes_long_ARG, stripesize_ARG, test_ARG,
use_policies_ARG, yes_ARG, force_ARG, zero_ARG)
2001-09-25 16:49:28 +04:00
xx(lvcreate,
"Create a logical volume",
0,
"lvcreate " "\n"
"\t[-A|--autobackup {y|n}]\n"
"\t[-a|--available [e|l]y|n]\n"
2004-03-08 20:19:15 +03:00
"\t[--addtag Tag]\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy]\n"
"\t[-C|--contiguous {y|n}]\n"
"\t[-d|--debug]\n"
"\t[-h|-?|--help]\n"
"\t[--ignoremonitoring]\n"
"\t[--monitor {y|n}]\n"
"\t[-i|--stripes Stripes [-I|--stripesize StripeSize]]\n"
"\t{-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |\n"
"\t -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n"
"\t[-M|--persistent {y|n}] [--major major] [--minor minor]\n"
"\t[-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]]\n"
"\t[-n|--name LogicalVolumeName]\n"
"\t[--noudevsync]\n"
"\t[-p|--permission {r|rw}]\n"
"\t[-r|--readahead ReadAheadSectors|auto|none]\n"
2005-06-01 20:51:55 +04:00
"\t[-R|--regionsize MirrorLogRegionSize]\n"
"\t[-t|--test]\n"
"\t[--type VolumeType]\n"
"\t[-v|--verbose]\n"
"\t[-Z|--zero {y|n}]\n"
"\t[--version]\n"
"\tVolumeGroupName [PhysicalVolumePath...]\n\n"
"lvcreate \n"
"\t{ {-s|--snapshot} OriginalLogicalVolume[Path] |\n"
"\t [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize}\n"
"\t {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume] \n"
"\t -V|--virtualsize VirtualSize}\n"
"\t[-c|--chunksize]\n"
"\t[-A|--autobackup {y|n}]\n"
2004-03-08 20:19:15 +03:00
"\t[--addtag Tag]\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy]\n"
"\t[-C|--contiguous {y|n}]\n"
"\t[-d|--debug]\n"
"\t[-h|-?|--help]\n"
"\t[--ignoremonitoring]\n"
"\t[--monitor {y|n}]\n"
"\t[-i|--stripes Stripes [-I|--stripesize StripeSize]]\n"
"\t{-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] |\n"
"\t -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n"
"\t[-M|--persistent {y|n}] [--major major] [--minor minor]\n"
"\t[-n|--name LogicalVolumeName]\n"
"\t[--noudevsync]\n"
"\t[-p|--permission {r|rw}]\n"
"\t[-r|--readahead ReadAheadSectors|auto|none]\n"
"\t[-t|--test]\n"
"\t[--thinpool] PoolLogicalVolume\n"
"\t[-v|--verbose]\n"
"\t[--version]\n"
"\t[PhysicalVolumePath...]\n\n",
addtag_ARG, alloc_ARG, autobackup_ARG, available_ARG, chunksize_ARG,
contiguous_ARG, corelog_ARG, extents_ARG, ignoremonitoring_ARG, major_ARG,
minor_ARG, mirrorlog_ARG, mirrors_ARG, monitor_ARG, name_ARG, nosync_ARG,
noudevsync_ARG, permission_ARG, persistent_ARG, readahead_ARG,
regionsize_ARG, size_ARG, snapshot_ARG, stripes_ARG, stripesize_ARG,
test_ARG, thin_ARG, thinpool_ARG, type_ARG, virtualoriginsize_ARG,
virtualsize_ARG, zero_ARG)
2001-09-25 16:49:28 +04:00
xx(lvdisplay,
"Display information about a logical volume",
PERMITTED_READ_ONLY,
2001-09-25 16:49:28 +04:00
"lvdisplay\n"
"\t[-a|--all]\n"
"\t[-c|--colon]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
"\t[-m|--maps]\n"
"\t[--nosuffix]\n"
"\t[-P|--partial] " "\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[LogicalVolume[Path] [LogicalVolume[Path]...]]\n"
"\n"
"lvdisplay --columns|-C\n"
"\t[--aligned]\n"
"\t[-a|--all]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
"\t[--noheadings]\n"
"\t[--nosuffix]\n"
"\t[-o|--options [+]Field[,Field]]\n"
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
"\t[-P|--partial] " "\n"
"\t[--segments]\n"
"\t[--separator Separator]\n"
"\t[--unbuffered]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[LogicalVolume[Path] [LogicalVolume[Path]...]]\n",
2001-09-25 16:49:28 +04:00
aligned_ARG, all_ARG, colon_ARG, columns_ARG,
ignorelockingfailure_ARG, maps_ARG, noheadings_ARG, nosuffix_ARG,
options_ARG, sort_ARG, partial_ARG, segments_ARG, separator_ARG,
unbuffered_ARG, units_ARG)
2001-09-25 16:49:28 +04:00
xx(lvextend,
"Add space to a logical volume",
0,
2001-09-25 16:49:28 +04:00
"lvextend\n"
"\t[-A|--autobackup y|n]\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy]\n"
"\t[-d|--debug]\n"
2008-06-12 17:24:02 +04:00
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t[-i|--stripes Stripes [-I|--stripesize StripeSize]]\n"
"\t{-l|--extents [+]LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}] |\n"
"\t -L|--size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n"
2005-06-03 23:48:19 +04:00
"\t[-m|--mirrors Mirrors]\n"
Allow 'nosync' extension of mirrors. This patch allows a mirror to be extended without an initial resync of the extended portion. It compliments the existing '--nosync' option to lvcreate. This action can be done implicitly if the mirror was created with the '--nosync' option, or explicitly if the '--nosync' option is used when extending the device. Here are the operational criteria: 1) A mirror created with '--nosync' should extend with 'nosync' implicitly [EXAMPLE]# lvs vg; lvextend -L +5G vg/lv ; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.00g lv_mlog 100.00 Extending 2 mirror images. Extending logical volume lv to 10.00 GiB Logical volume lv successfully resized LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 10.00g lv_mlog 100.00 2) The 'M' attribute ('M' signifies a mirror created with '--nosync', while 'm' signifies a mirror created w/o '--nosync') must be preserved when extending a mirror created with '--nosync'. See #1 for example of 'M' attribute. 3) A mirror created without '--nosync' should extend with 'nosync' only when '--nosync' is explicitly used when extending. [EXAMPLE]# lvs vg; lvextend -L +5G vg/lv; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg mwi-a-m- 20.00m lv_mlog 100.00 Extending 2 mirror images. Extending logical volume lv to 5.02 GiB Logical volume lv successfully resized LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg mwi-a-m- 5.02g lv_mlog 0.39 vs. [EXAMPLE]# lvs vg; lvextend -L +5G vg/lv --nosync; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg mwi-a-m- 20.00m lv_mlog 100.00 Extending 2 mirror images. Extending logical volume lv to 5.02 GiB Logical volume lv successfully resized LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.02g lv_mlog 100.00 4) The 'm' attribute must change to 'M' when extending a mirror created without '--nosync' is extended with the '--nosync' option. (See #3 examples above.) 5) An inactive mirror's sync percent cannot be determined definitively, so it must not be allowed to skip resync. Instead, the extend should ask the user if they want to extend while performing a resync. [EXAMPLE]# lvchange -an vg/lv [EXAMPLE]# lvextend -L +5G vg/lv Extending 2 mirror images. Extending logical volume lv to 10.00 GiB vg/lv is not active. Unable to get sync percent. Do full resync of extended portion of vg/lv? [y/n]: y Logical volume lv successfully resized 6) A mirror that is performing recovery (as opposed to an initial sync) - like after a failure - is not allowed to extend with either an implicit or explicit nosync option. [You can simulate this with a 'corelog' mirror because when it is reactivated, it must be recovered every time.] [EXAMPLE]# lvcreate -m1 -L 5G -n lv vg --nosync --corelog WARNING: New mirror won't be synchronised. Don't read what you didn't write! Logical volume "lv" created [EXAMPLE]# lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.00g 100.00 [EXAMPLE]# lvchange -an vg/lv; lvchange -ay vg/lv; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.00g 0.08 [EXAMPLE]# lvextend -L +5G vg/lv Extending 2 mirror images. Extending logical volume lv to 10.00 GiB vg/lv cannot be extended while it is recovering. 7) If 'no' is selected in #5 or if the condition in #6 is hit, it should not result in the mirror being resized or the 'm/M' attribute being changed. NOTE: A mirror created with '--nosync' behaves differently than one created without it when performing an extension. The former cannot be extended when the mirror is recovering (unless in-active), while the latter can. This is a reasonable thing to do since recovery of a mirror doesn't take long (at least in the case of an on-disk log) and it would cause far more time in degraded mode if the extension w/o '--nosync' was allowed. It might be reasonable to add the ability to force the operation in the future. This should /not/ force a nosync extension, but rather force a sync'ed extension. IOW, the user would be saying, "Yes, yes... I know recovery won't take long and that I'll be adding significantly to the time spent in degraded mode, but I need the extra space right now!".
2011-10-06 19:32:26 +04:00
"\t[--nosync]\n"
"\t[--use-policies]\n"
"\t[-n|--nofsck]\n"
"\t[--noudevsync]\n"
"\t[-r|--resizefs]\n"
"\t[-t|--test]\n"
"\t[--type VolumeType]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tLogicalVolume[Path] [ PhysicalVolumePath... ]\n",
2008-06-12 17:24:02 +04:00
alloc_ARG, autobackup_ARG, extents_ARG, force_ARG, mirrors_ARG,
Allow 'nosync' extension of mirrors. This patch allows a mirror to be extended without an initial resync of the extended portion. It compliments the existing '--nosync' option to lvcreate. This action can be done implicitly if the mirror was created with the '--nosync' option, or explicitly if the '--nosync' option is used when extending the device. Here are the operational criteria: 1) A mirror created with '--nosync' should extend with 'nosync' implicitly [EXAMPLE]# lvs vg; lvextend -L +5G vg/lv ; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.00g lv_mlog 100.00 Extending 2 mirror images. Extending logical volume lv to 10.00 GiB Logical volume lv successfully resized LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 10.00g lv_mlog 100.00 2) The 'M' attribute ('M' signifies a mirror created with '--nosync', while 'm' signifies a mirror created w/o '--nosync') must be preserved when extending a mirror created with '--nosync'. See #1 for example of 'M' attribute. 3) A mirror created without '--nosync' should extend with 'nosync' only when '--nosync' is explicitly used when extending. [EXAMPLE]# lvs vg; lvextend -L +5G vg/lv; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg mwi-a-m- 20.00m lv_mlog 100.00 Extending 2 mirror images. Extending logical volume lv to 5.02 GiB Logical volume lv successfully resized LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg mwi-a-m- 5.02g lv_mlog 0.39 vs. [EXAMPLE]# lvs vg; lvextend -L +5G vg/lv --nosync; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg mwi-a-m- 20.00m lv_mlog 100.00 Extending 2 mirror images. Extending logical volume lv to 5.02 GiB Logical volume lv successfully resized LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.02g lv_mlog 100.00 4) The 'm' attribute must change to 'M' when extending a mirror created without '--nosync' is extended with the '--nosync' option. (See #3 examples above.) 5) An inactive mirror's sync percent cannot be determined definitively, so it must not be allowed to skip resync. Instead, the extend should ask the user if they want to extend while performing a resync. [EXAMPLE]# lvchange -an vg/lv [EXAMPLE]# lvextend -L +5G vg/lv Extending 2 mirror images. Extending logical volume lv to 10.00 GiB vg/lv is not active. Unable to get sync percent. Do full resync of extended portion of vg/lv? [y/n]: y Logical volume lv successfully resized 6) A mirror that is performing recovery (as opposed to an initial sync) - like after a failure - is not allowed to extend with either an implicit or explicit nosync option. [You can simulate this with a 'corelog' mirror because when it is reactivated, it must be recovered every time.] [EXAMPLE]# lvcreate -m1 -L 5G -n lv vg --nosync --corelog WARNING: New mirror won't be synchronised. Don't read what you didn't write! Logical volume "lv" created [EXAMPLE]# lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.00g 100.00 [EXAMPLE]# lvchange -an vg/lv; lvchange -ay vg/lv; lvs vg LV VG Attr LSize Pool Origin Snap% Move Log Copy% Convert lv vg Mwi-a-m- 5.00g 0.08 [EXAMPLE]# lvextend -L +5G vg/lv Extending 2 mirror images. Extending logical volume lv to 10.00 GiB vg/lv cannot be extended while it is recovering. 7) If 'no' is selected in #5 or if the condition in #6 is hit, it should not result in the mirror being resized or the 'm/M' attribute being changed. NOTE: A mirror created with '--nosync' behaves differently than one created without it when performing an extension. The former cannot be extended when the mirror is recovering (unless in-active), while the latter can. This is a reasonable thing to do since recovery of a mirror doesn't take long (at least in the case of an on-disk log) and it would cause far more time in degraded mode if the extension w/o '--nosync' was allowed. It might be reasonable to add the ability to force the operation in the future. This should /not/ force a nosync extension, but rather force a sync'ed extension. IOW, the user would be saying, "Yes, yes... I know recovery won't take long and that I'll be adding significantly to the time spent in degraded mode, but I need the extra space right now!".
2011-10-06 19:32:26 +04:00
nofsck_ARG, nosync_ARG, noudevsync_ARG, resizefs_ARG, size_ARG, stripes_ARG,
stripesize_ARG, test_ARG, type_ARG, use_policies_ARG)
2001-09-25 16:49:28 +04:00
xx(lvmchange,
"With the device mapper, this is obsolete and does nothing.",
0,
"lvmchange\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-R|--reset]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n",
2001-09-25 16:49:28 +04:00
reset_ARG)
2001-09-25 16:49:28 +04:00
xx(lvmdiskscan,
"List devices that may be used as physical volumes",
PERMITTED_READ_ONLY,
2001-09-25 16:49:28 +04:00
"lvmdiskscan\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-l|--lvmpartition]\n"
"\t[--version]" "\n",
2001-09-25 16:49:28 +04:00
lvmpartition_ARG)
xx(lvmsadc,
"Collect activity data",
0,
2001-09-25 16:49:28 +04:00
"lvmsadc\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\t[LogFilePath]\n" )
xx(lvmsar,
"Create activity report",
0,
2001-09-25 16:49:28 +04:00
"lvmsar\n"
"\t[-d|--debug]\n"
"\t[-f|--full]\n"
"\t[-h|--help]\n"
"\t[-s|--stdin]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tLogFilePath\n",
full_ARG, stdin_ARG)
2001-09-25 16:49:28 +04:00
xx(lvreduce,
"Reduce the size of a logical volume",
0,
2001-09-25 16:49:28 +04:00
"lvreduce\n"
"\t[-A|--autobackup y|n]\n"
"\t[-d|--debug]\n"
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t{-l|--extents [-]LogicalExtentsNumber[%{VG|LV|FREE|ORIGIN}] |\n"
"\t -L|--size [-]LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n"
"\t[-n|--nofsck]\n"
"\t[--noudevsync]\n"
"\t[-r|--resizefs]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
2006-10-24 03:03:55 +04:00
"\t[-y|--yes]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tLogicalVolume[Path]\n",
autobackup_ARG, force_ARG, extents_ARG, nofsck_ARG, noudevsync_ARG,
resizefs_ARG, size_ARG, test_ARG, yes_ARG)
2001-09-25 16:49:28 +04:00
xx(lvremove,
"Remove logical volume(s) from the system",
0,
2001-09-25 16:49:28 +04:00
"lvremove\n"
"\t[-A|--autobackup y|n]\n"
"\t[-d|--debug]\n"
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t[--noudevsync]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tLogicalVolume[Path] [LogicalVolume[Path]...]\n",
autobackup_ARG, force_ARG, noudevsync_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(lvrename,
"Rename a logical volume",
0,
"lvrename\n"
"\t[-A|--autobackup {y|n}] " "\n"
"\t[-d|--debug] " "\n"
"\t[-h|-?|--help] " "\n"
"\t[--noudevsync]\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose]" "\n"
"\t[--version] " "\n"
"\t{ OldLogicalVolumePath NewLogicalVolumePath |" "\n"
"\t VolumeGroupName OldLogicalVolumeName NewLogicalVolumeName }\n",
2001-09-25 16:49:28 +04:00
autobackup_ARG, noudevsync_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(lvresize,
"Resize a logical volume",
0,
"lvresize\n"
"\t[-A|--autobackup y|n]\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy]\n"
"\t[-d|--debug]\n"
2008-06-12 17:24:02 +04:00
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t[-i|--stripes Stripes [-I|--stripesize StripeSize]]\n"
"\t{-l|--extents [+|-]LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}] |\n"
"\t -L|--size [+|-]LogicalVolumeSize[bBsSkKmMgGtTpPeE]}\n"
"\t[-n|--nofsck]\n"
"\t[--noudevsync]\n"
"\t[-r|--resizefs]\n"
"\t[-t|--test]\n"
"\t[--type VolumeType]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\tLogicalVolume[Path] [ PhysicalVolumePath... ]\n",
2008-06-12 17:24:02 +04:00
alloc_ARG, autobackup_ARG, extents_ARG, force_ARG, nofsck_ARG,
noudevsync_ARG, resizefs_ARG, size_ARG, stripes_ARG, stripesize_ARG,
test_ARG, type_ARG)
xx(lvs,
"Display information about logical volumes",
PERMITTED_READ_ONLY,
"lvs" "\n"
"\t[-a|--all]\n"
"\t[--aligned]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
2008-06-06 23:28:35 +04:00
"\t[--nameprefixes]\n"
"\t[--noheadings]\n"
"\t[--nosuffix]\n"
"\t[-o|--options [+]Field[,Field]]\n"
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
"\t[-P|--partial] " "\n"
2008-06-25 02:48:53 +04:00
"\t[--rows]\n"
"\t[--segments]\n"
"\t[--separator Separator]\n"
"\t[--trustcache]\n"
"\t[--unbuffered]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
2008-06-25 01:21:04 +04:00
"\t[--unquoted]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[LogicalVolume[Path] [LogicalVolume[Path]...]]\n",
2008-06-06 23:28:35 +04:00
aligned_ARG, all_ARG, ignorelockingfailure_ARG, nameprefixes_ARG,
noheadings_ARG, nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
2008-06-25 02:48:53 +04:00
rows_ARG, segments_ARG, separator_ARG, sort_ARG, trustcache_ARG,
unbuffered_ARG, units_ARG, unquoted_ARG)
2001-09-25 16:49:28 +04:00
xx(lvscan,
"List all logical volumes in all volume groups",
PERMITTED_READ_ONLY,
"lvscan " "\n"
2005-10-17 20:41:38 +04:00
"\t[-a|--all]\n"
"\t[-b|--blockdevice] " "\n"
"\t[-d|--debug] " "\n"
"\t[-h|-?|--help] " "\n"
"\t[--ignorelockingfailure]\n"
"\t[-P|--partial] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version]\n",
2001-09-25 16:49:28 +04:00
all_ARG, blockdevice_ARG, ignorelockingfailure_ARG, partial_ARG)
2001-09-25 16:49:28 +04:00
xx(pvchange,
"Change attributes of physical volume(s)",
0,
2001-09-25 16:49:28 +04:00
"pvchange\n"
"\t[-a|--all]\n"
"\t[-A|--autobackup y|n]\n"
"\t[-d|--debug]\n"
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t[-t|--test]\n"
"\t[-u|--uuid]\n"
"\t[-x|--allocatable y|n]\n"
"\t[--metadataignore y|n]\n"
"\t[-v|--verbose]\n"
2004-03-08 20:19:15 +03:00
"\t[--addtag Tag]\n"
"\t[--deltag Tag]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\t[PhysicalVolumePath...]\n",
2004-03-08 20:19:15 +03:00
all_ARG, allocatable_ARG, allocation_ARG, autobackup_ARG, deltag_ARG,
addtag_ARG, force_ARG, metadataignore_ARG, test_ARG, uuid_ARG)
2001-09-25 16:49:28 +04:00
xx(pvresize,
"Resize physical volume(s)",
0,
"pvresize " "\n"
"\t[-d|--debug]" "\n"
"\t[-h|-?|--help] " "\n"
"\t[--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE]" "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version] " "\n"
"\tPhysicalVolume [PhysicalVolume...]\n",
physicalvolumesize_ARG, test_ARG)
xx(pvck,
"Check the consistency of physical volume(s)",
0,
"pvck "
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--labelsector sector] " "\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\tPhysicalVolume [PhysicalVolume...]\n",
labelsector_ARG)
2001-09-25 16:49:28 +04:00
xx(pvcreate,
"Initialize physical volume(s) for use by LVM",
0,
"pvcreate " "\n"
"\t[--norestorefile]\n"
2002-11-18 17:04:08 +03:00
"\t[--restorefile file]\n"
"\t[-d|--debug]" "\n"
"\t[-f[f]|--force [--force]] " "\n"
"\t[-h|-?|--help] " "\n"
2002-11-18 17:04:08 +03:00
"\t[--labelsector sector] " "\n"
"\t[-M|--metadatatype 1|2]" "\n"
"\t[--pvmetadatacopies #copies]" "\n"
"\t[--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--dataalignment Alignment[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]]" "\n"
"\t[--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE]" "\n"
"\t[-t|--test] " "\n"
"\t[-u|--uuid uuid] " "\n"
"\t[-v|--verbose] " "\n"
2002-11-18 17:04:08 +03:00
"\t[-y|--yes]" "\n"
"\t[-Z|--zero {y|n}]\n"
"\t[--version] " "\n"
"\tPhysicalVolume [PhysicalVolume...]\n",
2001-09-25 16:49:28 +04:00
dataalignment_ARG, dataalignmentoffset_ARG, force_ARG, test_ARG,
labelsector_ARG, metadatatype_ARG, metadatacopies_ARG,
metadatasize_ARG, metadataignore_ARG, norestorefile_ARG,
physicalvolumesize_ARG, pvmetadatacopies_ARG,
restorefile_ARG, uuidstr_ARG, yes_ARG, zero_ARG)
2001-09-25 16:49:28 +04:00
xx(pvdata,
"Display the on-disk metadata for physical volume(s)",
0,
"pvdata " "\n"
"\t[-a|--all] " "\n"
"\t[-d|--debug] " "\n"
"\t[-E|--physicalextent] " "\n"
"\t[-h|-?|--help]" "\n"
"\t[-L|--logicalvolume] " "\n"
"\t[-P[P]|--physicalvolume [--physicalvolume]]" "\n"
"\t[-U|--uuidlist] " "\n"
"\t[-v[v]|--verbose [--verbose]] " "\n"
"\t[-V|--volumegroup]" "\n"
"\t[--version] " "\n"
"\tPhysicalVolume [PhysicalVolume...]\n",
2001-09-25 16:49:28 +04:00
all_ARG, logicalextent_ARG, physicalextent_ARG,
physicalvolume_ARG, uuidlist_ARG, volumegroup_ARG)
xx(pvdisplay,
"Display various attributes of physical volume(s)",
CACHE_VGMETADATA | PERMITTED_READ_ONLY,
2001-09-25 16:49:28 +04:00
"pvdisplay\n"
"\t[-c|--colon]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
"\t[-m|--maps]\n"
"\t[--nosuffix]\n"
"\t[-s|--short]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[PhysicalVolumePath [PhysicalVolumePath...]]\n"
"\n"
"pvdisplay --columns|-C\n"
"\t[--aligned]\n"
2005-03-21 17:47:36 +03:00
"\t[-a|--all]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
"\t[--noheadings]\n"
"\t[--nosuffix]\n"
"\t[-o|--options [+]Field[,Field]]\n"
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
"\t[--separator Separator]\n"
"\t[--unbuffered]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[PhysicalVolumePath [PhysicalVolumePath...]]\n",
2001-09-25 16:49:28 +04:00
2005-03-21 17:47:36 +03:00
aligned_ARG, all_ARG, colon_ARG, columns_ARG, ignorelockingfailure_ARG,
maps_ARG, noheadings_ARG, nosuffix_ARG, options_ARG, separator_ARG,
short_ARG, sort_ARG, unbuffered_ARG, units_ARG)
2001-09-25 16:49:28 +04:00
xx(pvmove,
"Move extents from one physical volume to another",
0,
2003-04-30 19:28:17 +04:00
"pvmove " "\n"
2003-05-06 16:08:58 +04:00
"\t[--abort]\n"
2003-04-30 19:28:17 +04:00
"\t[-A|--autobackup {y|n}]\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy]\n"
2003-05-06 16:08:58 +04:00
"\t[-b|--background]\n"
2003-04-30 19:28:17 +04:00
"\t[-d|--debug]\n "
"\t[-h|-?|--help]\n"
"\t[-i|--interval seconds]\n"
"\t[--noudevsync]\n"
2003-04-30 19:28:17 +04:00
"\t[-t|--test]\n "
"\t[-v|--verbose]\n "
"\t[--version]\n"
2003-09-15 19:01:36 +04:00
"\t[{-n|--name} LogicalVolume]\n"
2003-04-30 19:28:17 +04:00
/* "\t[{-n|--name} LogicalVolume[:LogicalExtent[-LogicalExtent]...]]\n" */
2004-08-18 22:49:29 +04:00
"\tSourcePhysicalVolume[:PhysicalExtent[-PhysicalExtent]...]}\n"
2003-04-30 19:28:17 +04:00
"\t[DestinationPhysicalVolume[:PhysicalExtent[-PhysicalExtent]...]...]\n",
2001-09-25 16:49:28 +04:00
abort_ARG, alloc_ARG, autobackup_ARG, background_ARG,
interval_ARG, name_ARG, noudevsync_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
2002-11-18 17:04:08 +03:00
xx(pvremove,
"Remove LVM label(s) from physical volume(s)",
0,
2002-11-18 17:04:08 +03:00
"pvremove " "\n"
"\t[-d|--debug]" "\n"
"\t[-f[f]|--force [--force]] " "\n"
"\t[-h|-?|--help] " "\n"
2002-11-18 17:04:08 +03:00
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
"\t[-y|--yes]" "\n"
"\t[--version] " "\n"
"\tPhysicalVolume [PhysicalVolume...]\n",
force_ARG, test_ARG, yes_ARG)
xx(pvs,
"Display information about physical volumes",
CACHE_VGMETADATA | PERMITTED_READ_ONLY,
"pvs" "\n"
"\t[-a|--all]\n"
"\t[--aligned]\n"
"\t[-d|--debug]" "\n"
"\t[-h|-?|--help] " "\n"
"\t[--ignorelockingfailure]\n"
2008-06-06 23:28:35 +04:00
"\t[--nameprefixes]\n"
"\t[--noheadings]\n"
"\t[--nosuffix]\n"
"\t[-o|--options [+]Field[,Field]]\n"
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
2006-04-13 21:51:40 +04:00
"\t[-P|--partial] " "\n"
2008-06-25 02:48:53 +04:00
"\t[--rows]\n"
2005-04-20 00:58:25 +04:00
"\t[--segments]\n"
"\t[--separator Separator]\n"
"\t[--trustcache]\n"
"\t[--unbuffered]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
2008-06-25 01:21:04 +04:00
"\t[--unquoted]\n"
"\t[-v|--verbose]\n"
"\t[--version]\n"
"\t[PhysicalVolume [PhysicalVolume...]]\n",
2008-06-06 23:28:35 +04:00
aligned_ARG, all_ARG, ignorelockingfailure_ARG, nameprefixes_ARG,
noheadings_ARG, nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
2008-06-25 02:48:53 +04:00
rows_ARG, segments_ARG, separator_ARG, sort_ARG, trustcache_ARG,
unbuffered_ARG, units_ARG, unquoted_ARG)
2001-09-25 16:49:28 +04:00
xx(pvscan,
"List all physical volumes",
PERMITTED_READ_ONLY,
"pvscan " "\n"
"\t[-d|--debug] " "\n"
"\t{-e|--exported | -n|--novolumegroup} " "\n"
"\t[-h|-?|--help]" "\n"
"\t[--ignorelockingfailure]\n"
"\t[-P|--partial] " "\n"
"\t[-s|--short] " "\n"
"\t[-u|--uuid] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version]\n",
2001-09-25 16:49:28 +04:00
exported_ARG, ignorelockingfailure_ARG, novolumegroup_ARG, partial_ARG,
short_ARG, uuid_ARG)
2001-09-25 16:49:28 +04:00
2004-09-14 20:42:46 +04:00
xx(segtypes,
"List available segment types",
PERMITTED_READ_ONLY,
2004-09-14 20:42:46 +04:00
"segtypes\n")
2001-09-25 16:49:28 +04:00
xx(vgcfgbackup,
"Backup volume group configuration(s)",
PERMITTED_READ_ONLY,
"vgcfgbackup " "\n"
"\t[-d|--debug] " "\n"
"\t[-f|--file filename] " "\n"
"\t[-h|-?|--help] " "\n"
"\t[--ignorelockingfailure]\n"
2002-07-11 18:09:26 +04:00
"\t[-P|--partial] " "\n"
"\t[-v|--verbose]" "\n"
"\t[--version] " "\n"
"\t[VolumeGroupName...]\n",
file_ARG, ignorelockingfailure_ARG, partial_ARG)
2001-09-25 16:49:28 +04:00
xx(vgcfgrestore,
"Restore volume group configuration",
0,
"vgcfgrestore " "\n"
"\t[-d|--debug] " "\n"
"\t[-f|--file filename] " "\n"
"\t[-l[l]|--list [--list]]" "\n"
2002-11-18 17:04:08 +03:00
"\t[-M|--metadatatype 1|2]" "\n"
"\t[-h|--help]" "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose]" "\n"
"\t[--version] " "\n"
"\tVolumeGroupName",
2001-09-25 16:49:28 +04:00
file_ARG, list_ARG, metadatatype_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(vgchange,
"Change volume group attributes",
CACHE_VGMETADATA | PERMITTED_READ_ONLY,
"vgchange" "\n"
"\t[-A|--autobackup {y|n}] " "\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy] " "\n"
"\t[-P|--partial] " "\n"
"\t[-d|--debug] " "\n"
"\t[-h|--help] " "\n"
"\t[--ignorelockingfailure]\n"
"\t[--ignoremonitoring]\n"
"\t[--monitor {y|n}]\n"
"\t[--[vg]metadatacopies #copies] " "\n"
"\t[--poll {y|n}]\n"
"\t[--noudevsync]\n"
"\t[--refresh]\n"
"\t[--sysinit]\n"
"\t[-t|--test]" "\n"
"\t[-u|--uuid] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version]" "\n"
2004-11-12 18:59:09 +03:00
"\t{-a|--available [e|l]{y|n} |" "\n"
"\t -c|--clustered {y|n} |" "\n"
"\t -x|--resizeable {y|n} |" "\n"
2004-03-08 20:19:15 +03:00
"\t -l|--logicalvolume MaxLogicalVolumes |" "\n"
2006-08-16 18:41:42 +04:00
"\t -p|--maxphysicalvolumes MaxPhysicalVolumes |" "\n"
"\t -s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE] |" "\n"
2004-03-08 20:19:15 +03:00
"\t --addtag Tag |\n"
"\t --deltag Tag}\n"
"\t[VolumeGroupName...]\n",
2001-09-25 16:49:28 +04:00
addtag_ARG, alloc_ARG, allocation_ARG, autobackup_ARG, available_ARG,
clustered_ARG, deltag_ARG, ignorelockingfailure_ARG, ignoremonitoring_ARG,
logicalvolume_ARG, maxphysicalvolumes_ARG, monitor_ARG, noudevsync_ARG,
metadatacopies_ARG, vgmetadatacopies_ARG, partial_ARG,
physicalextentsize_ARG, poll_ARG, refresh_ARG, resizeable_ARG,
resizable_ARG, sysinit_ARG, test_ARG, uuid_ARG)
2001-09-25 16:49:28 +04:00
xx(vgck,
"Check the consistency of volume group(s)",
0,
2001-09-25 16:49:28 +04:00
"vgck "
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-v|--verbose]\n"
2003-04-30 19:28:17 +04:00
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\t[VolumeGroupName...]\n" )
2002-11-18 17:04:08 +03:00
xx(vgconvert,
"Change volume group metadata format",
0,
2002-11-18 17:04:08 +03:00
"vgconvert " "\n"
"\t[-d|--debug]" "\n"
"\t[-h|--help] " "\n"
"\t[--labelsector sector] " "\n"
"\t[-M|--metadatatype 1|2]" "\n"
"\t[--pvmetadatacopies #copies]" "\n"
"\t[--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]]" "\n"
2002-11-18 17:04:08 +03:00
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version] " "\n"
"\tVolumeGroupName [VolumeGroupName...]\n",
force_ARG, test_ARG, labelsector_ARG, metadatatype_ARG, metadatacopies_ARG,
pvmetadatacopies_ARG, metadatasize_ARG )
2002-11-18 17:04:08 +03:00
2001-09-25 16:49:28 +04:00
xx(vgcreate,
"Create a volume group",
0,
"vgcreate" "\n"
"\t[-A|--autobackup {y|n}] " "\n"
2004-03-08 20:19:15 +03:00
"\t[--addtag Tag] " "\n"
2004-11-16 21:09:32 +03:00
"\t[--alloc AllocationPolicy] " "\n"
2007-01-23 16:08:34 +03:00
"\t[-c|--clustered {y|n}] " "\n"
"\t[-d|--debug]" "\n"
"\t[-h|--help]" "\n"
"\t[-l|--maxlogicalvolumes MaxLogicalVolumes]" "\n"
2002-11-18 17:04:08 +03:00
"\t[-M|--metadatatype 1|2] " "\n"
"\t[--[vg]metadatacopies #copies] " "\n"
"\t[-p|--maxphysicalvolumes MaxPhysicalVolumes] " "\n"
"\t[-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]] " "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose]" "\n"
"\t[--version] " "\n"
"\t[ PHYSICAL DEVICE OPTIONS ] " "\n"
"\tVolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]\n",
2001-09-25 16:49:28 +04:00
addtag_ARG, alloc_ARG, autobackup_ARG, clustered_ARG, maxlogicalvolumes_ARG,
maxphysicalvolumes_ARG, metadatatype_ARG, physicalextentsize_ARG, test_ARG,
force_ARG, yes_ARG, zero_ARG, labelsector_ARG, metadatasize_ARG,
pvmetadatacopies_ARG, metadatacopies_ARG, vgmetadatacopies_ARG,
dataalignment_ARG, dataalignmentoffset_ARG)
2001-09-25 16:49:28 +04:00
xx(vgdisplay,
"Display volume group information",
PERMITTED_READ_ONLY,
"vgdisplay " "\n"
"\t[-A|--activevolumegroups]" "\n"
"\t[-c|--colon | -s|--short | -v|--verbose]" "\n"
"\t[-d|--debug] " "\n"
"\t[-h|--help] " "\n"
2002-11-18 17:04:08 +03:00
"\t[--ignorelockingfailure]" "\n"
"\t[--nosuffix]\n"
"\t[-P|--partial] " "\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
"\t[--version]" "\n"
"\t[VolumeGroupName [VolumeGroupName...]]\n"
"\n"
"vgdisplay --columns|-C\n"
"\t[--aligned]\n"
"\t[-d|--debug] " "\n"
"\t[-h|--help] " "\n"
"\t[--ignorelockingfailure]" "\n"
"\t[--noheadings]\n"
"\t[--nosuffix]\n"
"\t[-o|--options [+]Field[,Field]]\n"
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
"\t[-P|--partial] " "\n"
"\t[--separator Separator]\n"
"\t[--unbuffered]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
"\t[--verbose]" "\n"
"\t[--version]" "\n"
"\t[VolumeGroupName [VolumeGroupName...]]\n",
2001-09-25 16:49:28 +04:00
activevolumegroups_ARG, aligned_ARG, colon_ARG, columns_ARG,
ignorelockingfailure_ARG, noheadings_ARG, nosuffix_ARG, options_ARG,
partial_ARG, short_ARG, separator_ARG, sort_ARG, unbuffered_ARG, units_ARG)
2001-09-25 16:49:28 +04:00
xx(vgexport,
"Unregister volume group(s) from the system",
0,
"vgexport " "\n"
"\t[-a|--all] " "\n"
"\t[-d|--debug] " "\n"
"\t[-h|--help]" "\n"
"\t[-v|--verbose] " "\n"
"\t[--version] " "\n"
"\tVolumeGroupName [VolumeGroupName...]\n",
2001-09-25 16:49:28 +04:00
all_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(vgextend,
"Add physical volumes to a volume group",
0,
2001-09-25 16:49:28 +04:00
"vgextend\n"
"\t[-A|--autobackup y|n]\n"
"\t[--restoremissing]\n"
"\t[-d|--debug]\n"
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[ PHYSICAL DEVICE OPTIONS ] " "\n"
"\tVolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]\n",
2001-09-25 16:49:28 +04:00
autobackup_ARG, test_ARG,
force_ARG, yes_ARG, zero_ARG, labelsector_ARG, metadatatype_ARG,
metadatasize_ARG, pvmetadatacopies_ARG, metadatacopies_ARG,
metadataignore_ARG, dataalignment_ARG, dataalignmentoffset_ARG,
restoremissing_ARG)
2001-09-25 16:49:28 +04:00
xx(vgimport,
"Register exported volume group with system",
0,
"vgimport " "\n"
"\t[-a|--all]\n"
"\t[-d|--debug] " "\n"
"\t[-f|--force] " "\n"
"\t[-h|--help] " "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose]" "\n"
"\t[--version]" "\n"
"\tVolumeGroupName..." "\n",
2001-09-25 16:49:28 +04:00
all_ARG, force_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(vgmerge,
"Merge volume groups",
0,
2001-09-25 16:49:28 +04:00
"vgmerge\n"
"\t[-A|--autobackup y|n]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-l|--list]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tDestinationVolumeGroupName SourceVolumeGroupName\n",
autobackup_ARG, list_ARG, test_ARG)
xx(vgmknodes,
"Create the special files for volume group devices in /dev",
0,
2001-09-25 16:49:28 +04:00
"vgmknodes\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
"\t[--refresh]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\t[VolumeGroupName...]\n",
ignorelockingfailure_ARG, refresh_ARG)
2001-09-25 16:49:28 +04:00
xx(vgreduce,
"Remove physical volume(s) from a volume group",
0,
2001-09-25 16:49:28 +04:00
"vgreduce\n"
"\t[-a|--all]\n"
"\t[-A|--autobackup y|n]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--mirrorsonly]\n"
"\t[--removemissing]\n"
"\t[-f|--force]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
2001-09-25 16:49:28 +04:00
"\tVolumeGroupName\n"
"\t[PhysicalVolumePath...]\n",
2008-09-19 11:18:03 +04:00
all_ARG, autobackup_ARG, force_ARG, mirrorsonly_ARG, removemissing_ARG,
test_ARG)
2001-09-25 16:49:28 +04:00
xx(vgremove,
"Remove volume group(s)",
0,
2001-09-25 16:49:28 +04:00
"vgremove\n"
"\t[-d|--debug]\n"
"\t[-f|--force]\n"
"\t[-h|--help]\n"
"\t[--noudevsync]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\tVolumeGroupName [VolumeGroupName...]\n",
force_ARG, noudevsync_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(vgrename,
"Rename a volume group",
0,
2001-09-25 16:49:28 +04:00
"vgrename\n"
"\t[-A|--autobackup y|n]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[-t|--test]\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n"
"\tOldVolumeGroupPath NewVolumeGroupPath |\n"
2001-09-25 16:49:28 +04:00
"\tOldVolumeGroupName NewVolumeGroupName\n",
autobackup_ARG, force_ARG, test_ARG)
2001-09-25 16:49:28 +04:00
xx(vgs,
"Display information about volume groups",
PERMITTED_READ_ONLY,
"vgs" "\n"
"\t[--aligned]\n"
"\t[-a|--all]\n"
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
2008-06-06 23:28:35 +04:00
"\t[--nameprefixes]\n"
"\t[--noheadings]\n"
"\t[--nosuffix]\n"
"\t[-o|--options [+]Field[,Field]]\n"
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
"\t[-P|--partial] " "\n"
2008-06-25 02:48:53 +04:00
"\t[--rows]\n"
"\t[--separator Separator]\n"
"\t[--trustcache]\n"
"\t[--unbuffered]\n"
"\t[--units hHbBsSkKmMgGtTpPeE]\n"
2008-06-25 01:21:04 +04:00
"\t[--unquoted]\n"
"\t[-v|--verbose]\n"
"\t[--version]\n"
"\t[VolumeGroupName [VolumeGroupName...]]\n",
2008-06-06 23:28:35 +04:00
aligned_ARG, all_ARG, ignorelockingfailure_ARG, nameprefixes_ARG,
noheadings_ARG, nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
2008-06-25 02:48:53 +04:00
rows_ARG, separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG, units_ARG,
2008-06-25 01:21:04 +04:00
unquoted_ARG)
2001-09-25 16:49:28 +04:00
xx(vgscan,
"Search for all volume groups",
PERMITTED_READ_ONLY,
2001-09-25 16:49:28 +04:00
"vgscan "
"\t[-d|--debug]\n"
"\t[-h|--help]\n"
"\t[--ignorelockingfailure]\n"
2003-11-14 17:03:48 +03:00
"\t[--mknodes]\n"
"\t[-P|--partial] " "\n"
"\t[-v|--verbose]\n"
"\t[--version]" "\n",
2003-11-14 17:03:48 +03:00
ignorelockingfailure_ARG, mknodes_ARG, partial_ARG)
2001-09-25 16:49:28 +04:00
xx(vgsplit,
"Move physical volumes into a new or existing volume group",
0,
"vgsplit " "\n"
"\t[-A|--autobackup {y|n}] " "\n"
"\t[--alloc AllocationPolicy] " "\n"
"\t[-c|--clustered {y|n}] " "\n"
"\t[-d|--debug] " "\n"
"\t[-h|--help] " "\n"
"\t[-l|--maxlogicalvolumes MaxLogicalVolumes]" "\n"
2002-11-18 17:04:08 +03:00
"\t[-M|--metadatatype 1|2] " "\n"
"\t[--[vg]metadatacopies #copies] " "\n"
"\t[-n|--name LogicalVolumeName]\n"
"\t[-p|--maxphysicalvolumes MaxPhysicalVolumes] " "\n"
"\t[-t|--test] " "\n"
"\t[-v|--verbose] " "\n"
"\t[--version]" "\n"
"\tSourceVolumeGroupName DestinationVolumeGroupName" "\n"
"\t[PhysicalVolumePath...]\n",
2001-09-25 16:49:28 +04:00
alloc_ARG, autobackup_ARG, clustered_ARG,
maxlogicalvolumes_ARG, maxphysicalvolumes_ARG,
metadatatype_ARG, vgmetadatacopies_ARG, name_ARG, test_ARG)
xx(version,
"Display software and driver version information",
PERMITTED_READ_ONLY,
"version\n" )