lvm代码分析(四)

本文详细介绍了LVM中的一些核心命令,如lvchange用于修改逻辑卷属性,lvcreate用于创建逻辑卷,以及lvreduce用于缩小逻辑卷大小。这些命令包括了各种选项和参数,可用于灵活管理和调整存储资源。
lvm返回后,在lvm2_main里执行:
  1.     cmd->argv = argv;
  2.     lvm_register_commands();
lvm_register_commands()又是一个似曾相识的构架:
  1. void lvm_register_commands(void)
  2. {
  3. #define xx(a, b, c, d...) _register_command(# a, a, b, c, ## d, /
  4.                         driverloaded_ARG, /
  5.                         debug_ARG, help_ARG, help2_ARG, /
  6.                         version_ARG, verbose_ARG, /
  7.                         quiet_ARG, config_ARG, -1);
  8. #include "commands.h"
  9. #undef xx
  10. }
在commands.h中,xx了好多种命令:
  1. xx(dumpconfig,
  2.    "Dump active configuration",
  3.    0,
  4.    "dumpconfig "
  5.    "/t[-f|--file filename] " "/n"
  6.    "[ConfigurationVariable...]/n",
  7.    file_ARG)
  8. xx(formats,
  9.    "List available metadata formats",
  10.    0,
  11.    "formats/n")
  12. xx(help,
  13.    "Display help for commands",
  14.    0,
  15.    "help <command>" "/n")
  16. /*********
  17. xx(lvactivate,
  18.    "Activate logical volume on given partition(s)",
  19.    "lvactivate "
  20.    "/t[-d|--debug]/n"
  21.    "/t[-h|--help]/n"
  22.    "/t[-v|--verbose]/n"
  23.    "Logical Volume(s)/n")
  24. ***********/
  25. xx(lvchange,
  26.    "Change the attributes of logical volume(s)",
  27.    CACHE_VGMETADATA,
  28.    "lvchange/n"
  29.    "/t[-A|--autobackup y|n]/n"
  30.    "/t[-a|--available [e|l]y|n]/n"
  31.    "/t[--addtag Tag]/n"
  32.    "/t[--alloc AllocationPolicy]/n"
  33.    "/t[-C|--contiguous y|n]/n"
  34.    "/t[-d|--debug]/n"
  35.    "/t[--deltag Tag]/n"
  36.    "/t[-f|--force]/n"
  37.    "/t[-h|--help]/n"
  38.    "/t[--ignorelockingfailure]/n"
  39.    "/t[--ignoremonitoring]/n"
  40.    "/t[--monitor {y|n}]/n"
  41.    "/t[-M|--persistent y|n] [--major major] [--minor minor]/n"
  42.    "/t[-P|--partial] " "/n"
  43.    "/t[-p|--permission r|rw]/n"
  44.    "/t[-r|--readahead ReadAheadSectors|auto|none]/n"
  45.    "/t[--refresh]/n"
  46.    "/t[--resync]/n"
  47.    "/t[-t|--test]/n"
  48.    "/t[-v|--verbose]/n"
  49.    "/t[-y|--yes]/n"
  50.    "/t[--version]" "/n"
  51.    "/tLogicalVolume[Path] [LogicalVolume[Path]...]/n",
  52.    alloc_ARG, autobackup_ARG, available_ARG, contiguous_ARG, force_ARG,
  53.    ignorelockingfailure_ARG, ignoremonitoring_ARG, major_ARG, minor_ARG,
  54.    monitor_ARG, partial_ARG, permission_ARG, persistent_ARG, readahead_ARG,
  55.    resync_ARG, refresh_ARG, addtag_ARG, deltag_ARG, test_ARG, yes_ARG)
  56. xx(lvconvert,
  57.    "Change logical volume layout",
  58.    0,
  59.    "lvconvert "
  60.    "[-m|--mirrors Mirrors [{--mirrorlog {disk|core}|--corelog}]]/n"
  61.    "/t[-R|--regionsize MirrorLogRegionSize]/n"
  62.    "/t[--alloc AllocationPolicy]/n"
  63.    "/t[-b|--background]/n"
  64.    "/t[-d|--debug]/n"
  65.    "/t[-h|-?|--help]/n"
  66.    "/t[-i|--interval seconds]/n"
  67.    "/t[-v|--verbose]/n"
  68.    "/t[--version]" "/n"
  69.    "/tLogicalVolume[Path] [PhysicalVolume[Path]...]/n/n"
  70.    "lvconvert "
  71.    "[-s|--snapshot]/n"
  72.    "/t[-c|--chunksize]/n"
  73.    "/t[-d|--debug]/n"
  74.    "/t[-h|-?|--help]/n"
  75.    "/t[-v|--verbose]/n"
  76.    "/t[-Z|--zero {y|n}]/n"
  77.    "/t[--version]" "/n"
  78.    "/tOriginalLogicalVolume[Path] SnapshotLogicalVolume[Path]/n",
  79.    alloc_ARG, background_ARG, chunksize_ARG, corelog_ARG, interval_ARG,
  80.    mirrorlog_ARG, mirrors_ARG, regionsize_ARG, snapshot_ARG, test_ARG, zero_ARG)
  81. xx(lvcreate,
  82.    "Create a logical volume",
  83.    0,
  84.    "lvcreate " "/n"
  85.    "/t[-A|--autobackup {y|n}]/n"
  86.    "/t[--addtag Tag]/n"
  87.    "/t[--alloc AllocationPolicy]/n"
  88.    "/t[-C|--contiguous {y|n}]/n"
  89.    "/t[-d|--debug]/n"
  90.    "/t[-h|-?|--help]/n"
  91.    "/t[-i|--stripes Stripes [-I|--stripesize StripeSize]]/n"
  92.    "/t{-l|--extents LogicalExtentsNumber |/n"
  93.    "/t -L|--size LogicalVolumeSize[kKmMgGtTpPeE]}/n"
  94.    "/t[-M|--persistent {y|n}] [--major major] [--minor minor]/n"
  95.    "/t[-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core}|--corelog}]]/n"
  96.    "/t[-n|--name LogicalVolumeName]/n"
  97.    "/t[-p|--permission {r|rw}]/n"
  98.    "/t[-r|--readahead ReadAheadSectors|auto|none]/n"
  99.    "/t[-R|--regionsize MirrorLogRegionSize]/n"
  100.    "/t[-t|--test]/n"
  101.    "/t[--type VolumeType]/n"
  102.    "/t[-v|--verbose]/n"
  103.    "/t[-Z|--zero {y|n}]/n"
  104.    "/t[--version]/n"
  105.    "/tVolumeGroupName [PhysicalVolumePath...]/n/n"
  106.    "lvcreate -s|--snapshot/n"
  107.    "/t[-c|--chunksize]/n"
  108.    "/t[-A|--autobackup {y|n}]/n"
  109.    "/t[--addtag Tag]/n"
  110.    "/t[--alloc AllocationPolicy]/n"
  111.    "/t[-C|--contiguous {y|n}]/n"
  112.    "/t[-d|--debug]/n"
  113.    "/t[-h|-?|--help]/n"
  114.    "/t[-i|--stripes Stripes [-I|--stripesize StripeSize]]/n"
  115.    "/t{-l|--extents LogicalExtentsNumber[%{VG|LV|PVS|FREE}] |/n"
  116.    "/t -L|--size LogicalVolumeSize[kKmMgGtTpPeE]}/n"
  117.    "/t[-M|--persistent {y|n}] [--major major] [--minor minor]/n"
  118.    "/t[-n|--name LogicalVolumeName]/n"
  119.    "/t[-p|--permission {r|rw}]/n"
  120.    "/t[-r|--readahead ReadAheadSectors|auto|none]/n"
  121.    "/t[-t|--test]/n"
  122.    "/t[-v|--verbose]/n"
  123.    "/t[--version]/n"
  124.    "/tOriginalLogicalVolume[Path] [PhysicalVolumePath...]/n/n",
  125.    addtag_ARG, alloc_ARG, autobackup_ARG, chunksize_ARG, contiguous_ARG,
  126.    corelog_ARG, extents_ARG, major_ARG, minor_ARG, mirrorlog_ARG, mirrors_ARG,
  127.    name_ARG, nosync_ARG, permission_ARG, persistent_ARG, readahead_ARG,
  128.    regionsize_ARG, size_ARG, snapshot_ARG, stripes_ARG, stripesize_ARG,
  129.    test_ARG, type_ARG, zero_ARG)
  130. xx(lvdisplay,
  131.    "Display information about a logical volume",
  132.    0,
  133.    "lvdisplay/n"
  134.    "/t[-a|--all]/n"
  135.    "/t[-c|--colon]/n"
  136.    "/t[-d|--debug]/n"
  137.    "/t[-h|--help]/n"
  138.    "/t[--ignorelockingfailure]/n"
  139.    "/t[-m|--maps]/n"
  140.    "/t[--nosuffix]/n"
  141.    "/t[-P|--partial] " "/n"
  142.    "/t[--units hsbkmgtHKMGT]/n"
  143.    "/t[-v|--verbose]/n"
  144.    "/t[--version]" "/n"
  145.    "/t[LogicalVolume[Path] [LogicalVolume[Path]...]]/n"
  146.    "/n"
  147.    "lvdisplay --columns|-C/n"
  148.    "/t[--aligned]/n"
  149.    "/t[-a|--all]/n"
  150.    "/t[-d|--debug]/n"
  151.    "/t[-h|--help]/n"
  152.    "/t[--ignorelockingfailure]/n"
  153.    "/t[--noheadings]/n"
  154.    "/t[--nosuffix]/n"
  155.    "/t[-o|--options [+]Field[,Field]]/n"
  156.    "/t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]/n"
  157.    "/t[-P|--partial] " "/n"
  158.    "/t[--segments]/n"
  159.    "/t[--separator Separator]/n"
  160.    "/t[--unbuffered]/n"
  161.    "/t[--units hsbkmgtHKMGT]/n"
  162.    "/t[-v|--verbose]/n"
  163.    "/t[--version]" "/n"
  164.    "/t[LogicalVolume[Path] [LogicalVolume[Path]...]]/n",
  165.     aligned_ARG, all_ARG, colon_ARG, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值