「lvcreate(8)」-

创建一个LV

命令语法格式

lvcreate option_args position_args
[ option_args ]

[ position_args ]

-a|–activate y|n|ay
–addtag Tag

–alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit
-A|–autobackup y|n

-H|–cache
–cachemetadataformat auto|1|2

–cachemode writethrough|writeback|passthrough

–cachepolicy String

–cachepool LV

–cachesettings String
-c|–chunksize Size[k|UNIT]
–commandprofile String

–config String
-C|–contiguous y|n

-d|–debug
–discards passdown|nopassdown|ignore

–driverloaded y|n

–errorwhenfull y|n
-l|–extents Number[PERCENT]

-h|–help

-K|–ignoreactivationskip
–ignoremonitoring

–longhelp
-j|–major Number
–[raid]maxrecoveryrate Size[k|UNIT]

–metadataprofile String

–minor Number

–[raid]minrecoveryrate Size[k|UNIT]

–mirrorlog core|disk
-m|–mirrors Number
–monitor y|n
-n|–name String
–nosync

–noudevsync
-p|–permission rw|r

-M|–persistent y|n
–poolmetadatasize Size[m|UNIT]

–poolmetadataspare y|n

–profile String
-q|–quiet

-r|–readahead auto|none|Number

-R|–regionsize Size[m|UNIT]
–reportformat basic|json
-k|–setactivationskip y|n

-L|–size Size[m|UNIT]

-s|–snapshot

-i|–stripes Number

-I|–stripesize Size[k|UNIT]

-t|–test

-T|–thin
–thinpool LV

–type linear|striped|snapshot|mirror|raid|thin|cache|thin-pool|cache-pool
-v|–verbose
–version
-V|–virtualsize Size[m|UNIT]

-W|–wipesignatures y|n

-y|–yes

-Z|–zero y|n

使用方法

创建一个线性LV

lvcreate -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ –type linear ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个条带化LV(–type striped)

lvcreate -i|–stripes Number -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -I|–stripesize Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个raid1或者镜像LV(infers –type raid1|mirror)

lvcreate -m|–mirrors Number -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -R|–regionsize Size[m|UNIT] ]

[ –mirrorlog core|disk ]

[ –[raid]minrecoveryrate Size[k|UNIT] ]

[ –[raid]maxrecoveryrate Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个raid LV(必须指定明确的raid等级)

lvcreate –type raid -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -m|–mirrors Number ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ -R|–regionsize Size[m|UNIT] ]

[ –[raid]minrecoveryrate Size[k|UNIT] ]

[ –[raid]maxrecoveryrate Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个raid10 LV

lvcreate -m|–mirrors Number -i|–stripes Number
-L|–size Size[m|UNIT] VG

[ -l|–extents Number[PERCENT] ]

[ -I|–stripesize Size[k|UNIT] ]

[ -R|–regionsize Size[m|UNIT] ]

[ –[raid]minrecoveryrate Size[k|UNIT] ]

[ –[raid]maxrecoveryrate Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建原始LV的一个COW快照LV

lvcreate -s|–snapshot -L|–size Size[m|UNIT] LV
[ -l|–extents Number[PERCENT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ –type snapshot ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个瘦池

lvcreate –type thin-pool -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –thinpool LV_new ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个缓存池

lvcreate –type cache-pool -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -H|–cache ]

[ -c|–chunksize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –cachemode writethrough|writeback|passthrough ]

[ –cachepolicy String ]

[ –cachesettings String ]

[ –cachemetadataformat auto|1|2 ]

[ COMMON_OPTIONS ]

[ PV … ]

在瘦池中创建一个瘦LV(–type thin)

lvcreate -V|–virtualsize Size[m|UNIT] –thinpool LV_thinpool VG
[ -T|–thin ]

[ –type thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,它是现有瘦LV的快照(infers –type thin)

lvcreate -s|–snapshot LV_thin
[ –type thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,它是外部原始LV的快照

lvcreate –type thin –thinpool LV_thinpool LV
[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,首先为它创建一个瘦池,其中新的瘦池由–thinpool arg命名

lvcreate –type thin -V|–virtualsize Size[m|UNIT]
-L|–size Size[m|UNIT] –thinpool LV_new

[ -l|–extents Number[PERCENT] ]

[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个缓存LV,首先创建一个新的原始LV,然后将它与–cachepool arg命名的现有缓存池相结合

lvcreate –type cache -L|–size Size[m|UNIT]
–cachepool LV_cachepool VG

[ -l|–extents Number[PERCENT] ]

[ -H|–cache ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –cachemode writethrough|writeback|passthrough ]

[ –cachepolicy String ]

[ –cachesettings String ]

[ –cachemetadataformat auto|1|2 ]

[ COMMON_OPTIONS ]

[ PV … ]

命令的常规选项

[ -a|–activate y|n|ay ]

[ -A|–autobackup y|n ]

[ -C|–contiguous y|n ]

[ -K|–ignoreactivationskip ]

[ -j|–major Number ]

[ -n|–name String ]

[ -p|–permission rw|r ]

[ -M|–persistent y|n ]

[ -r|–readahead auto|none|Number ]

[ -k|–setactivationskip y|n ]

[ -W|–wipesignatures y|n ]

[ -Z|–zero y|n ]

[ –addtag Tag ]

[ –alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ]

[ –ignoremonitoring ]

[ –metadataprofile String ]

[ –minor Number ]

[ –monitor y|n ]

[ –nosync ]

[ –noudevsync ]

[ –reportformat basic|json ]

高级使用方法

备用命令表单、高级命令用法、完整性的所有有效语法列表。

创建一个LV,当在使用时返回错误的:

lvcreate –type error -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ COMMON_OPTIONS ]

创建一个LV,在读取时返回零的:

lvcreate –type zero -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ COMMON_OPTIONS ]

创建一个线性LV:

lvcreate –type linear -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个条带化LV(另参见lvcreate –stripes):

lvcreate –type striped -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个镜像LV(另参见–type raid1):

lvcreate –type mirror -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -m|–mirrors Number ]

[ -R|–regionsize Size[m|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –mirrorlog core|disk ]

[ COMMON_OPTIONS ]

[ PV … ]

创建原始LV的COW快照LV(另参见–snapshot):

lvcreate –type snapshot -L|–size Size[m|UNIT] LV
[ -l|–extents Number[PERCENT] ]

[ -s|–snapshot ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建虚拟原始LV的稀疏COW快照LV(另参见–snapshot):

lvcreate –type snapshot -L|–size Size[m|UNIT]
-V|–virtualsize Size[m|UNIT] VG

[ -l|–extents Number[PERCENT] ]

[ -s|–snapshot ]

[ -c|–chunksize Size[k|UNIT] ]

[ COMMON_OPTIONS ]

[ PV … ]

创建虚拟原始LV的稀疏COW快照LV:

lvcreate -s|–snapshot -L|–size Size[m|UNIT]
-V|–virtualsize Size[m|UNIT] VG

[ -l|–extents Number[PERCENT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ –type snapshot ]

[ COMMON_OPTIONS ]

[ PV … ]

创建精简池(–type thin-pool):

lvcreate -T|–thin -L|–size Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –type thin-pool ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个由–thinpool arg命名的精简池(infers –type thin-pool):

lvcreate -L|–size Size[m|UNIT] –thinpool LV_new VG
[ -l|–extents Number[PERCENT] ]

[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –type thin-pool ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个由–cachepool arg命名的缓存池:(变体,使用–cachepool替换–name):

lvcreate –type cache-pool -L|–size Size[m|UNIT]
–cachepool LV_new VG

[ -l|–extents Number[PERCENT] ]

[ -H|–cache ]

[ -c|–chunksize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –cachemode writethrough|writeback|passthrough ]

[ –cachepolicy String ]

[ –cachesettings String ]

[ –cachemetadataformat auto|1|2 ]

[ COMMON_OPTIONS ]

[ PV … ]

在精简池中创建瘦LV:

lvcreate –type thin -V|–virtualsize Size[m|UNIT]
–thinpool LV_thinpool VG

[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

在第一个arg中命名的精简池中创建一个瘦LV(变体,关于命名池另行参阅–thinpool):

lvcreate –type thin -V|–virtualsize Size[m|UNIT] LV_thinpool
[ -T|–thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

在第一个arg中命名的精简池中创建一个瘦LV(变体,使用–type thin,关于命名池也可以参见–thinpool):

lvcreate -V|–virtualsize Size[m|UNIT] LV_thinpool
[ -T|–thin ]

[ –type thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,它是现有瘦LV的快照:

lvcreate –type thin LV_thin
[ -T|–thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,它是现有瘦LV的快照(–type thin):

lvcreate -T|–thin LV_thin
[ –type thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,它是外部原始LV的快照(–type thin):

lvcreate -s|–snapshot –thinpool LV_thinpool LV
[ –type thin ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

创建一个瘦LV,首先为它创建一个精简池,其中新的精简池由–thinpool arg命名(变体,–type thin):

lvcreate -V|–virtualsize Size[m|UNIT] -L|–size Size[m|UNIT]
–thinpool LV_new

[ -l|–extents Number[PERCENT] ]

[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个瘦LV,首先为它创建一个精简池,其中新的精简池由–thinpool arg命名(变体,–type thin):

lvcreate -V|–virtualsize Size[m|UNIT] -L|–size Size[m|UNIT]
–thinpool LV_new VG

[ -l|–extents Number[PERCENT] ]

[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建精简LV,首先为其创建精简池,其中新精简池在第一个arg中命名,或者当第一个arg是VG名时,生成新精简池名称。

lvcreate –type thin -V|–virtualsize Size[m|UNIT]
-L|–size Size[m|UNIT] VG|LV_new

[ -l|–extents Number[PERCENT] ]

[ -T|–thin ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建瘦LV,首先为其创建精简池,其中新精简池在第一个arg中命名,或者当第一个arg是VG名时,生成新的精简池名称(变体,–type thin):

lvcreate -T|–thin -V|–virtualsize Size[m|UNIT]
-L|–size Size[m|UNIT] VG|LV_new

[ -l|–extents Number[PERCENT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个瘦LV,首先为它创建一个精简池(–type thin)
创建虚拟原始LV的稀疏快照(–type snapshot)
根据配置设置sparse_segtype_default选择–type thin或–type snapshot

lvcreate -L|–size Size[m|UNIT] -V|–virtualsize Size[m|UNIT] VG
[ -l|–extents Number[PERCENT] ]

[ -s|–snapshot ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –type snapshot ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –discards passdown|nopassdown|ignore ]

[ –errorwhenfull y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个缓存LV,首先创建一个新的原始LV,然后将它与–cachepool arg命名的现有缓存池相结合(变体–type cache):

lvcreate -L|–size Size[m|UNIT] –cachepool LV_cachepool VG
[ -l|–extents Number[PERCENT] ]

[ -H|–cache ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –type cache ]

[ –cachemode writethrough|writeback|passthrough ]

[ –cachepolicy String ]

[ –cachesettings String ]

[ –cachemetadataformat auto|1|2 ]

[ COMMON_OPTIONS ]

[ PV … ]

创建一个缓存LV,首先创建一个新的原始LV,然后将它与第一个arg中命名的现有缓存池相结合(变体,也使用–cachepool):

lvcreate –type cache -L|–size Size[m|UNIT] LV_cachepool
[ -l|–extents Number[PERCENT] ]

[ -H|–cache ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ –cachemode writethrough|writeback|passthrough ]

[ –cachepolicy String ]

[ –cachesettings String ]

[ –cachemetadataformat auto|1|2 ]

[ COMMON_OPTIONS ]

[ PV … ]

当LV是缓存池时,创建一个缓存LV,首先创建一个新的原始LV,然后将它与第一个arg中命名的现有缓存池相结合(变体,–type cache,也使用–cachepool)
当LV不是缓存池时,在创建要使用的新缓存池LV后,将指定的LV转换为类型缓存(使用lvconvert)。

lvcreate -H|–cache -L|–size Size[m|UNIT] LV
[ -l|–extents Number[PERCENT] ]

[ -c|–chunksize Size[k|UNIT] ]

[ -i|–stripes Number ]

[ -I|–stripesize Size[k|UNIT] ]

[ –cachemode writethrough|writeback|passthrough ]

[ –cachepolicy String ]

[ –cachesettings String ]

[ –cachemetadataformat auto|1|2 ]

[ –poolmetadatasize Size[m|UNIT] ]

[ –poolmetadataspare y|n ]

[ COMMON_OPTIONS ]

[ PV … ]

命令描述

命令lvcreate在VG中创建一个新的LV。对于标准LV,这需要从VG的可用PE分配LE。如果没有足够的可用空间,可以使用其他PV(vgextend(8))扩展VG,或者可以减少或移除现有的LV(lvremove(8),lvreduce(8))

要控制新LV将使用哪些PV,请在命令行末尾指定一个或多个PV作为位置参数。 lvcreate将仅从指定的PV分配PE。

命令lvcreate还可以创建现有LV的快照,例如用于备份目的。新快照LV中的数据表示从创建快照时起原始LV的内容。

可以通过在创建LV时指定LV类型来创建RAID LV(请参阅lvmraid(7))。不同的RAID级别需要在VG中提供不同数量的唯一PV以进行分配。

精简池(用于精简配置)和缓存池(用于缓存)由具有类型thin-pool和cache-pool的特殊LV表示(请参阅lvmthin(7)和lvmcache(7))。池LV不能用作标准块设备,但LV名称充当池的引用。

精简LV由精简池精简配置,并使用虚拟大小,而非物理大小创建。缓存LV是标准LV与缓存池的组合,用于缓存LV的活动部分以提高性能。

使用说明

在下面的使用部分中,–size Size可以替换为–extents Number。 请参阅选项部分中的说明。

在下面的使用部分中,即使通常使用,也会从所需选项中省略–name。 如果未指定名称,则会生成带有“lvol”前缀和唯一数字后缀的新LV名称。

命令支持的选项及含义

-a|–activate y|n|ay
更改LV的活动状态。可以通过块设备使用活动LV,从而允许访问LV上的数据。 y使LV活跃或可用。 n使LV无效或不可用。使用内核中的device-mapper在系统中添加或删除LV的块设备。还会添加/删除了指向设备节点的符号链接/dev/VGName/LVName。所有软件和脚本都应通过符号链接访问设备,并将其作为设备名称。底层设备节点的位置和名称可以取决于发行版、配置(例如,udev)、发布版本。 ay指定自动激活,在这种情况下,LV仅在与lvm.conf中的activation/auto_activation_volume_list中的项匹配时才被激活。如果未设置列表,则认为所有LV都匹配,如果列表已设置但为空,则没有LV匹配。系统启动期间应使用自动激活,以便选择系统自动激活哪些LV。

有关共享VG的激活选项ey和sy的更多信息,请参阅lvmlockd(8)。有关群集VG的激活选项ey,sy,ly和ln的详细信息,请参阅clvmd(8)。

–addtag Tag
将标签添加到PV,VG,LV。 可以重复此选项以一次添加多个标签。 有关标签的信息,请参阅lvm(8)。

–alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit
当命令需要从VG分配PE时,确定分配策略。 每个VG和LV都有一个分配策略,可以使用vgchange/lvchange进行更改,也可以在命令行上覆盖。

  • normal适用共同规则,例如不在同一PV上放置平行条带。
  • inherit将VG策略应用于LV。
  • contiguous要求将新PE放置在现有PE附近。
  • cling将新PE放在”与LV相同条带中的现有PE相同“的PV上。
  • 如果有足够的PE用于分配,但是正常不使用它们,即使它降低了性能,anywhere都会使用它们,例如,在同一个PV上放置两个条纹。

命令行上的可选位置PV参数也可用于限制命令将用于分配的PV。 有关分配的更多信息,请参阅lvm(8)。

-A|–autobackup y|n
指定更改后是否应自动备份元数据。 强烈建议启用此功能! 有关更多信息,请参见vgcfgbackup(8)。

-H|–cache
指定该命令正在处理高速缓存LV或高速缓存池。 请参阅–type cache和–type cache-pool。 有关LVM缓存的更多信息,请参阅lvmcache(7)。

–cachemetadataformat auto|1|2
指定缓存目标使用的缓存元数据格式。

–cachemode writethrough|writeback|passthrough
指定何时应将对高速缓存LV的写入视为完成。 writeback一旦存储在缓存池中就认为写完成。 只有当写入存储在缓存池和原始LV上时,写入才会认为写入完成。 虽然writethrough的写入速度可能较慢,但如果与缓存池LV关联的设备发生某些事情,则更具弹性。 通过passthrough,所有读取都从原始LV提供(所有读取都错过了缓存),所有写入都被转发到原始LV;另外,写入命中会导致缓存块无效。 有关更多信息,请参阅lvmcache(7)。

–cachepolicy String
指定缓存LV的缓存策略。更多的信息可以参阅lvmcache(7)手册。

–cachepool LV
缓存池LV的名字。

–cachesettings String
以“Key = Value”形式指定高速缓存LV的可调参数值。 重复此选项以指定多个值。 (默认值通常应该足够。)特殊字符串值默认将设置切换回其默认内核值,并将其从存储在LVM元数据中的设置列表中删除。 有关更多信息,请参阅lvmcache(7)。

-c|–chunksize Size[k|UNIT]
在快照、缓存池、精简池中的块大小。 对于快照,该值必须是4KiB和512KiB之间的2的幂,默认值为4。对于缓存池,该值必须介于32KiB和1GiB之间,默认值为64。对于精简池,值必须介于两者之间 64KiB和1GiB,默认值以64开头,如果未指定池元数据大小,则向上扩展以适合128MiB内的池元数据大小。 该值必须是64KiB的倍数。 有关更多信息,请参阅lvmthin(7)和lvmcache(7)。

-C|–contiguous y|n
设置或重置LV的连续分配策略。 默认是基于”下一个可用“原则的连续分配。 如果LV中所有已分配的PE已经是连续的,则只能将非连续的分配策略更改为连续的。

–discards passdown|nopassdown|ignore
指定内核中的设备映射器精简池层应如何处理丢弃。 ignore会导致精简池忽略丢弃。 nopassdown导致精简池自行处理丢弃,以允许在精简池中重用不需要的扩展区。 passdown导致精简池自己处理丢弃(如nopassdown)并将丢弃传递给底层设备。 有关更多信息,请参阅lvmthin(7)。

–errorwhenfull y|n
指定在数据空间耗尽时的精简池行为。 如果y,则当精简池已满并且I/O请求需要空间时,device-mapper将立即返回错误。 如果n,则device-mapper会将这些I/O请求排队一段时间,以允许扩展精简池。 如果超时后没有可用空间,则返回错误。 (另请参阅dm-thin-pool内核模块选项no_space_timeout。)有关更多信息,请参阅lvmthin(7)。

-l|–extents Number[PERCENT]
指定LE中LV的新大小。 –size和–extents选项是指定大小的替代方法。

当RAID级别需要冗余数据时,使用的PE总数将更大。替代语法允许间接确定大小,通过使用相关VG,LV或PV集的大小的百分比。后缀%VG表示VG的总大小;后缀%FREE表示VG中剩余的可用空间;后缀%PVS表示指定PV中的可用空间。对于快照,大小可以表示为原始LV的总大小的百分比,后缀为%ORIGIN(100%ORIGIN为整个原点提供空间)。当以百分比表示时,大小定义了新LV中逻辑盘区数的上限。在命令完成之前,不确定新LV中的精确LE数。

使用加号(+)或减号(-)前缀时,该值不是绝对大小,而是相对的,并从当前大小中加上或减去。

-K|–ignoreactivationskip
在激活期间忽略“activation skip”LV标志,以允许激活设置了该标志的LV。

–ignoremonitoring
除非指定了–monitor,否则不要与dmeventd交互。 如果dmeventd已在监视设备,请不要使用此选项。

-j|–major Number
设置LV块设备的主设备号。

–[raid]maxrecoveryrate Size[k|UNIT]
设置RAID LV的最大恢复速率。 速率值是阵列中每个设备每秒的数据量。 将速率设置为0意味着它将是无界的。 有关更多信息,请参阅lvmraid(7)。

–metadataprofile String
用于命令配置的元数据配置文件。 有关配置文件的更多信息,请参阅lvm.conf(5)。

–minor Number
设置LV块设备的次要编号。

–[raid]minrecoveryrate Size[k|UNIT]
设置RAID LV的最低恢复速率。 速率值是阵列中每个设备每秒的数据量。 将速率设置为0意味着它将是无界的。 有关更多信息,请参阅lvmraid(7)。

–mirrorlog core|disk
指定具有“mirror”类型的LV的镜像日志类型(不适用于“raid1”类型。)disk是持久性日志,需要少量存储空间,通常在与镜像数据不同的设备上。core不是持久的;日志仅保存在内存中。 在这种情况下,每次激活LV时,镜像必须同步(通过将LV数据从第一个设备复制到其他设备),例如, 重启后。 镜像是一个自身镜像的持久日志,但应该避免。 而是使用raid1类型进行日志冗余。

-m|–mirrors Number
指定除原始LV图像之外的镜像数量,例如,–mirrors 1表示有两个数据映像:原始映像和镜像映像。 命令行上的可选PV位置参数可以指定应放置映像的设备。 有两种镜像实现:“raid1”和“mirror”。 这些是相应LV类型的名称,或“segment types”。 使用–type选项指定要使用的选项(raid1是默认值,mirror是遗留下来的)使用lvm.conf global/mirror_segtype_default和global/raid10_segtype_default配置默认类型。 请参阅–nosync选项以避免初始映像同步。 有关更多信息,请参阅lvmraid(7)。

–monitor y|n
用dmeventd开始(y)或停止(n)监视LV。 dmeventd监视LV的内核事件,并在响应特定事件时对LV执行自动维护。 有关更多信息,请参阅dmeventd(8)。

-n|–name String
指定新LV的名称。 未指定时,将生成默认名称“lvol#”,其中#是LVM生成的数字。

–nosync
导致创建mirror,raid1,raid4,raid5,raid10以跳过初始同步。 对于mirror,raid1,raid10,之后写入的任何数据都将被镜像,但不会复制原始内容。 在raid4和raid5的情况下,不会写入奇偶校验块,但之后写入的任何数据都将导致存储奇偶校验块。 这对于跳过空mirror/raid1/raid4/raid5和raid10 LV的潜在长且资源密集的初始同步非常有用。 此选项对raid6无效,因为raid6依赖于在初始同步期间创建的正确奇偶校验(P和Q Syndromes),以便在设备出现故障时重建正确的用户日期。 raid0和raid0_meta不提供任何数据副本或奇偶校验支持,因此不支持初始同步。

–noudevsync
禁用udev同步。 该进程不会等待来自udev的通知。 无论后台有任何可能的udev进程,它都将继续。 仅在udev未运行或具有忽略LVM创建的设备的规则时才使用此选项。

-p|–permission rw|r
将访问权限设置为只读(r)或读写(rw)。

-M|–persistent y|n
如果y,则使指定的次设备编号持久存储。

–poolmetadatasize Size[m|UNIT]
指定新池元数据LV的新大小。

–poolmetadataspare y|n
启用或禁用”在VG中备用池元数据LV“的自动创建和管理。 备用元数据LV是可在修复池时使用的保留空间。

-r|–readahead auto|none|Number
设置LV的预读扇区数。 auto是默认值,允许内核自动选择合适的值。 none等于零。

-R|–regionsize Size[m|UNIT]
每个raid或镜像同步区域的大小。lvm.conf的activation/raid_region_size可用于配置默认值。

–reportformat basic|json
覆盖报告的当前输出格式,该格式由lvm.conf中的report/output_format设置全局定义。basic是包含列和行的原始格式。 如果每个命令有多个报告,则每个报告都以报告名称为前缀进行标识。 json以JSON格式生成报告输出。 有关更多信息,请参阅lvmreport(7)。

-k|–setactivationskip y|n
持久设置(y)或清除(y)LV上的“activation skip”标志。 除非激活命令使用–ignoreactivationskip选项,否则不会激活设置了此标志的LV。 默认情况下,在新的精简快照LV上设置此标志。 该标志不适用于停用。 标志的当前值在lvs lv_attr位中指示。

-L|–size Size[m|UNIT]
指定新LV的大小。 –size和–extents选项是指定大小的替代方法。 当RAID级别需要冗余数据时,使用的PE总数将更大。

-s|–snapshot
创建快照。快照提供原始LV的“冻结映像”。可以使用快照LV,例如,用于备份,而原始LV继续使用。此选项可以创建COW(写入时复制)快照或精简快照(在精简池中)。当源为精简LV并且未指定size选项时,将创建精简快照。精简快照在精简池中共享相同的块,并且不从VG分配新空间。使用“激活跳过”标志创建精简快照,请参阅–setactivationskip。指定精简池时,会创建非薄“外部原始”LV的精简快照。从外部原点LV读取薄快照LV中的未设置块。外部原点LV必须是只读的。有关LVM精简配置的详细信息,请参阅lvmthin(7)。指定大小时会创建COW快照。大小从VG中的空间分配,并且是在原始或快照发生写入时可用于保存COW块的空间量。选择的大小应取决于预期的写入量;通常20%的原始LV就足够了。如果COW空间不足,则可以使用lvextend进行扩展(lvreduce也允许缩小。)少量的COW快照LV大小用于跟踪COW块位置,因此COW数据块无法使用完整大小。使用lvs检查使用了多少空间,并查看–monitor to自动扩展大小以避免空间不足。

-i|–stripes Number
指定条带LV中的条带数。 这是条带LV分布的PV(设备)数量。 在LV中按顺序出现的数据以条带大小为单位分布在多个设备上(请参阅–stripesize)。 这不会更改现有的已分配空间,但仅适用于命令分配的空间。创建RAID 4/5/6 LV时,此数字不包括奇偶校验所需的额外设备。 最大的数量取决于RAID类型(raid0:64,raid10:32,raid4/5:63,raid6:62),未指定时,默认值取决于RAID类型(raid0:2,raid10:2,raid4/5:3,raid6:5。)默认情况下,要在所有PV中划分新的raid LV,请参阅lvm.conf allocation/raid_stripe_all_devices。

-I|–stripesize Size[k|UNIT]
在条带化LV中移动到下一个设备之前写入一个设备的数据量。

-T|–thin
指定该命令正在处理精简LV或精简池。 请参阅–type thin,–type thin-pool,–virtualsize。 有关LVM精简配置的详细信息,请参阅lvmthin(7)。

–thinpool LV
精简池LV的名称。

–type linear|striped|snapshot|mirror|raid|thin|cache|thin-pool|cache-pool
LV类型,也称为“segment type”或“segtype”。 有关使用这些类型的具体方法,请参阅用法说明。 有关冗余和性能的更多信息(raid<N>, mirror, striped, linear),请参阅lvmraid(7)。 对于精简配置(thin, thin-pool),请参阅lvmthin(7)。 对于性能缓存(cache, cache-pool),请参阅lvmcache(7)。 对于写时复制快照(snapshot),请参阅使用定义。 有几个命令省略了显式类型选项,因为类型是从其他选项或快捷方式推断出来的(例如–stripes,–mirrors,–snapshot,–virtualsize,–first,–cache)。 小心使用推断类型,因为它可能导致意外结果。

-V|–virtualsize Size[m|UNIT]
新瘦LV的虚拟大小。 有关LVM精简配置的详细信息,请参阅lvmthin(7)。 使用虚拟大小(-V)和实际大小(-L)一起创建稀疏LV。 lvm.conf的global/sparse_segtype_default确定用于创建稀疏LV的默认段类型。 写入稀疏LV的任何内容都将在读取时返回。 从LV的其他区域读取将返回零块。 使用快照创建稀疏LV时,使用零目标创建隐藏虚拟设备,LV具有后缀_vorigin。 创建大型稀疏LV(GiB)时,快照的效率低于精简配置。

-W|–wipesignatures y|n
控制检测和随后擦除在新LV上的签名。 检测到的每个签名都有提示,以确认其擦除(除非–yes用于覆盖确认。)如果未指定,则在完成置零时擦除签名(请参阅–zero)。 可以使用lvm.conf的allocation/wipe_signatures_when_zeroing_new_lvs配置此行为。 如果使用blkid擦除(lvm.conf allocation/use_blkid_wiping)并且使用blkid擦除支持编译LVM,则使用blkid(8)库来检测签名(使用blkid -k列出可识别的签名)。 否则,本机LVM代码用于检测签名(在这种情况下仅检测到MD RAID,交换和LUKS签名。)如果设置了只读标志,则不会擦除LV。

-Z|–zero y|n
控制新LV中第一个4KiB数据的归零。 默认为y。 快照COW卷始终为零。 如果设置了只读标志,则LV不归零。 警告:尝试安装未清零的LV可能导致系统挂起。

用于lvm的公共选项

-y|–yes
不要以交互方式提示确认,但总是假设答案是肯定的。 使用时要格外小心。 (对于自动no,请参阅-qq。)

-v|–verbose …
设置详细级别。 重复1到4次以增加发送到标准输出和标准错误的消息的详细信息。

-t|–test
在测试模式下运行。 命令不会更新元数据。 这是通过禁用所有元数据写入,但仍然将成功返回到调用函数来实现的。 如果工具依赖于读回它认为已更改但尚未更改的元数据,则可能会在多阶段操作中导致异常错误消息。

-q|–quiet …
抑制输出和日志消息。 覆盖–debug和–verbose。 重复一次也可以通过回答“no”来抑制任何提示。

-h|–help
显示帮助信息。

-d|–debug …
设置调试级别。 重复1到6次以增加发送到日志文件和/或syslog(如果已配置)的消息的详细信息。

–version
显示版本信息并退出。

–profile String
选项–commandprofile或–metadataprofile的别名,具体取决于命令。

–longhelp
显示长帮助文本。

–driverloaded y|n
如果设置为no,则该命令不会尝试使用device-mapper。 用于测试和调试。

–config String
配置命令的设置。 这些覆盖lvm.conf设置。参数String使用与lvm.conf相同的格式,或者可以使用section/field语法。 有关config的更多信息,请参阅lvm.conf(5)。

–commandprofile String
用于命令配置的命令配置文件。 有关配置文件的更多信息,请参阅lvm.conf(5)。

命令行参数

VG
VG名称。 有效名称请参见lvm(8)。 对于lvcreate,当VG名称包括在另一个选项中时,可以省略所需的VG位置参数,例如, –name VG/LV。

LV
逻辑卷名称。 有效名称请参见lvm(8)。 LV位置参数通常包括VG名称和LV名称,例如,VG/LV。 LV后跟_<type>表示需要给定类型的LV。raid代表raid<N>类型)

PV
物理卷名称,在/dev下的设备路径。 对于管理PE的命令,PV位置参数通常接受指示物理范围(PE)的范围(或多个范围)的后缀。 省略第一个PE时,默认为设备的起始位置,省略最后一个PE时,默认为结束。

开始和结束范围(包括在内):PV[:PE-PE]…
开始和长度范围(从0开始计算):PV [:PE+PE]…

String
有关String的内容的信息,请参阅选项说明。

Size[UNIT]
参数Size是接受可选单位UNIT的输入数字。 无论大小写如何,输入单位UNIT始终被视为基数两个值,例如 ‘k’和’K’都指1024。默认输入单位由字母指定,后跟|UNIT。

参数UNIT代表其他可能的输入单位:bBsSkKmMgGtTpPeE。 b|B是字节,s|S是512字节的扇区,k|K是千字节,m|M是兆字节,g|G是千兆字节,t|T是太字节,p|P是petabytes,e|E是exabytes。 (这不应该与输出控制–units混淆,大写字母表示1000的倍数。)

相关环境变量

有关lvm使用的环境变量的信息,请参阅lvm(8)。 例如,LVM_VG_NAME通常可以替换所需的VG参数。

使用示例

创建一个带有3个条带化的条带化LV,条带大小为8KiB,大小为100MiB。 LV名称由lvcreate选择:

lvcreate -i 3 -I 8 -L 100m vg00

使用两个映像创建一个raid1 LV,可用大小为500 MiB。此操作需要两个设备,每个镜像一个。 两个设备上还包含RAID元数据(超级块和位图):

lvcreate –type raid1 -m1 -L 500m -n mylv vg00

创建一个带有两个映像的镜像LV,可用大小为500 MiB。 此操作需要三个设备:两个用于镜像,一个用于磁盘日志:

lvcreate –type mirror -m1 -L 500m -n mylv vg00

创建一个带有2个影响的镜像LV,可用大小为500 MiB。 此操作需要2个设备,因为日志在内存中:

lvcreate –type mirror -m1 –mirrorlog core -L 500m -n mylv vg00

创建LV的写时复制快照:

lvcreate –snapshot –size 100m –name mysnap vg00/mylv

创建一个写入时复制快照,其大小足以覆盖原始LV大小的20%:

lvcreate -s -l 20%ORIGIN -n mysnap vg00/mylv

使用1TiB虚拟空间创建稀疏LV,实际空间不到100MiB:

lvcreate –snapshot –virtualsize 1t –size 100m –name mylv vg00

在特定物理范围上创建可用大小为64MiB的线性LV:

lvcreate -L 64m -n mylv vg00 /dev/sda:0-7 /dev/sdb:0-7

创建一个RAID5 LV,可用大小为5GiB,3个条带,条带大小为64KiB,共使用4个设备(包括一个用于奇偶校验)。

lvcreate –type raid5 -L 5G -i 3 -I 64 -n mylv vg00

使用VG中的所有可用空间创建RAID5 LV,并跨越VG中的所有PV(请注意,如果VG中有超过8个PV,命令将失败,在这种情况下,必须使用-i 7才能获得到当前最多8个设备,包括RaidLVs的奇偶校验):

lvcreate –config allocation/raid_stripe_all_devices=1 –type raid5 -l 100%FREE -n mylv vg00

使用2个条纹创建可用大小为5GiB的RAID10 LV,每个条带位于双映像镜像上。(请注意,-i和-m参数的行为不同:-i指定条带的总数,但-m指定除第一个映像之外的映像数):

lvcreate –type raid10 -L 5G -i 2 -m 1 -n mylv vg00

创建一个1TiB瘦LV,首先为它创建一个新的精简池,其中精简池具有100MiB的空间,使用2个条带,具有64KiB条带大小和256KiB块大小:

lvcreate –type thin –name mylv –thinpool mypool -V 1t -L 100m -i 2 -I 64 -c 256 vg00

创建精简LV的精简快照(不得使用size选项,否则将创建写时复制快照):

lvcreate –snapshot –name mysnap vg00/thinvol

创建名为“origin”的只读非活动LV的精简快照,该快照成为精简快照LV的外部源:

lvcreate –snapshot –name mysnap –thinpool mypool vg00/origin

从快速物理设备创建缓存池。 然后可以使用缓存池来缓存LV:

lvcreate –type cache-pool -L 1G -n my_cpool vg00 /dev/fast1

创建缓存LV,首先在慢速物理设备上创建新的原始LV,然后将新原点LV与现有缓存池组合:

lvcreate –type cache –cachepool my_cpool -L 100G -n mylv vg00 /dev/slow1

相关手册

lvm(8) lvm.conf(5) lvmconfig(8)

pvchange(8) pvck(8) pvcreate(8) pvdisplay(8) pvmove(8) pvremove(8) pvresize(8) pvs(8) pvscan(8)

vgcfgbackup(8) vgcfgrestore(8) vgchange(8) vgck(8) vgcreate(8) vgconvert(8) vgdisplay(8) vgexport(8) vgextend(8) vgimport(8) vgimportclone(8) vgmerge(8) vgmknodes(8) vgreduce(8) vgremove(8) vgrename(8) vgs(8) vgscan(8) vgsplit(8)

lvcreate(8) lvchange(8) lvconvert(8) lvdisplay(8) lvextend(8) lvreduce(8) lvremove(8) lvrename(8) lvresize(8) lvs(8) lvscan(8)

lvm-fullreport(8) lvm-lvpoll(8) lvm2-activation-generator(8) blkdeactivate(8) lvmdump(8)

dmeventd(8) lvmetad(8) lvmpolld(8) lvmlockd(8) lvmlockctl(8) clvmd(8) cmirrord(8) lvmdbusd(8)

lvmsystemid(7) lvmreport(7) lvmraid(7) lvmthin(7) lvmcache(7)

参考文献

  • man 8 lvcreate, Version 2.02.176-4.1

更新日志

  • 11/30/2018 创建文章