4.4. 逻辑卷管理
这部分介绍了逻辑卷管理各个方面的命令。
4.4.1. 创建逻辑卷
要创建逻辑卷,请使用
lvcreate
命令。您可以按照以下子部分的论述创建线性卷、条状卷和镜像卷。
如果您没有为逻辑卷指定名称,就会使用默认的名称
lvol#
,其中用逻辑卷的内部号码替换 #。
下面的部分为您提供可以在 LVM 中创建的三种逻辑卷的示例。
4.4.1.1. 创建线性卷
当您创建逻辑卷时,该逻辑卷是从使用物理卷可用扩展的卷组中切割下来的,它们构成了卷组。通常逻辑卷会根据下一个可用原则在最大程度上使用基本物理卷中的空间。修改逻辑卷可释放并重新分配物理卷的空间。
下面的命令在卷组
vg1
中创建了大小为 10GB 的逻辑卷。
lvcreate -L 10G vg1
下面的命令在创建了块设备
/dev/testvg/testlv
的卷组 testvg
中创建了大小为 1500MB,名为 testlv
的线性逻辑卷。
lvcreate -L1500 -n testlv testvg
下面的命令在卷组
vg0
中使用可用扩展创建了大小为 50GB,名为 gfslv
的逻辑卷。
lvcreate -L 50G -n gfslv vg0
您可以使用
lvcreate
命令的 -l
参数以扩展为单位指定逻辑卷的大小。您还可以使用这个参数来为逻辑卷指定所用卷组的比例。下面的命令创建了名为 mylv
逻辑卷,它使用了卷组 testvol
总空间的 60%。
lvcreate -l 60%VG -n mylv testvg
您还可以使用
lvcreate
命令的 -l
参数来用卷组中所剩空间的比例指定逻辑卷的大小。下面的命令创建了名为 yourlv
,使用卷组 testvol
中所有未分配空间的逻辑卷。
lvcreate -l 100%FREE -n yourlv testvg
You can use
-l
argument of the lvcreate
command to create a logical volume that uses the entire volume group. Another way to create a logical volume that uses the entire volume group is to use the vgdisplay
command to find the "Total PE" size and to use those results as input to the the lvcreate
command.
下面的命令创建了名为
mylv
,可充满卷组 testvg
的逻辑卷。
#vgdisplay testvg | grep "Total PE"
Total PE 10230 #lvcreate -l 10230 testvg -n mylv
The underlying physical volumes used to create a logical volume can be important if the physical volume needs to be removed, so you may need to consider this possibility when you create the logical volume. For information on removing a physical volume from a volume group, see 第 4.3.6 节 “从卷组中删除物理卷”.
要创建一个从卷组的特定物理卷中分配出来的逻辑卷,请在
lvcreate
命令行的最后指定物理卷或者卷。下面的命令在卷组 testvg
中创建了名为 testlv
的逻辑卷,并在物理卷 /dev/sdg1
中进行分配:
lvcreate -L 1500 -ntestlv testvg /dev/sdg1
您可以指定物理卷中的哪些扩展可用作逻辑卷。下面的例子创建了一个线性逻辑卷,使用卷组
testvg
的物理卷 /dev/sda1
的扩展 0-25,和物理卷 /dev/sdb1
的扩展 50-125。
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25 /dev/sdb1:50-125
下面的例子创建了线性逻辑卷,使用的是物理卷
/dev/sda1
的扩展 0-25,然后继续在扩展 100 处部署逻辑卷。
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
The default policy for how the extents of a logical volume are allocated is
inherit
, which applies the same policy as for the volume group. These policies can be changed using the lvchange
command. For information on allocation policies, see 第 4.3.1 节 “创建卷组”.
4.4.1.2. 创建条状卷
For large sequential reads and writes, creating a striped logical volume can improve the efficiency of the data I/O. For general information about striped volumes, see 第 2.3.2 节 “条状逻辑卷”.
当您创建条状逻辑卷时,请使用
lvcreate
命令的 -i
参数指定条带的数目。这取决于逻辑卷要进行条带化的物理卷数目。条带的数目不能超过卷组中物理卷的数目(除非使用 --alloc anywhere
参数)。
如果构成逻辑卷的基本物理设备的大小不同,条状卷的最大容量由最小的基本设备决定。例如,在有两个分支条状卷中,其容量最大为较小设备的两倍。在有三个分支的条状卷中,其容量是最小设备的三倍。
下面的命令创建了跨两个物理卷,幅度为 64KB 的条状逻辑卷。逻辑卷大小为 50GB,名称为
gfslv
,它是从卷组 vg0
中分割出来的。
lvcreate -L 50G -i2 -I64 -n gfslv vg0
在线性卷中,您可以指定用于条状卷的物理卷扩展。下面的命令创建了大小为 100 扩展的条状卷,跨两个物理卷,名为
stripelv
,属于卷组 testvg
。该条状卷将使用 /dev/sda1
的 0-50 区段以及 /dev/sdb1
50-100 区段的。
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-50 /dev/sdb1:50-100
Using default stripesize 64.00 KB
Logical volume "stripelv" created
4.4.1.3. 创建镜像卷
当您创建一个镜像卷时,您可使用
lvcreate
命令的 -m
参数来指定数据的备份数目。指定 -m1
生成一个镜像,也就是生成两个文件系统副本:一个线性逻辑卷加上一个副本。同样的,指定 -m2
会生成两个镜像,也就是生成三个文件系统副本。
下面的命令使用单一镜像创建一个镜像逻辑卷。大小为 50GB,名为
mirrorlv
,且是从卷组 vg0
中分离出来的:
lvcreate -L 50G -m1 -n gfslv vg0
LVM 镜像将分割复制到区域(默认大小为 512K)的设备。您可以使用
-R
参数以 MB 为单位指定区域大小。LVM 维护一个小的日志,可用来追踪哪些区域是和镜像同步的。默认情况下,该日志是保存在磁盘中的,这样可以使它在机器重启后得以保存。您可以使用 --corelog
参数令该日志在内存中保存,这样就需要额外的日志设备,但它将需要在每次重启时重新同步化来获得完整镜像。
下面的命令在卷组
bigvg
中创建镜像逻辑卷。逻辑卷名称为 ondiskmirvol
,它有单一镜像。卷大小为 12MB,并在内存中保存镜像日志。
# lvcreate -L 12MB -m1 --corelog -n ondiskmirvol bigvg
Logical volume "ondiskmirvol" created
镜像日志是在与生成镜像分支的设备不同的设备中生成的。但有可能使用
vgcreate
命令的 --alloc anywhere
参数在镜像分支之一的同一设备中创建镜像分支。这可能会降低性能,但可让您在只有两个基础设备的情况下创建镜像。
下面的命令使用单一镜像创建一个镜像逻辑卷,其镜像日志位于作为镜像分支之一的设备中。在这个示例中,卷组
vg0
只包括两个设备。这个命令创建的镜像卷大小为 50GB,名为 mirrorlv
,且是从卷组 vg0
中分离出来的。
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
创建了镜像时,就会同步镜像区域。对于大量的镜像组件来说,同步进程可能需要一些时间。当您创建一个不需要恢复的新镜像时,您可以指定
nosync
参数说明不需要从第一个设备进行初始同步化。
您可以指定镜像日志使用哪些设备并进行记录。您还可以指定要使用的设备扩展。要强制登录到特定磁盘,请在存放扩展的磁盘中明确指定一个扩展。LVM 不一定要考虑命令行中的设备顺序。如果列出任意物理卷,那么那里就是唯一进行磁盘分配的地方。列表中包含的任何已经被分配的物理扩展将会被忽略。
下面的命令创建了带单一镜像的镜像逻辑卷,卷大小为 500GB,名为
mirrorlv
,是从卷组 vg0
中分割出来的。镜像的一支位于设备 /dev/sda1
,第二支位于设备 /dev/sdb1
,镜像日志位于 /dev/sdc1
。
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
下面的命令创建了带单一镜像的镜像卷。卷的大小为 500MB,名为
mirrorlv
,是从卷组 vg0
中分割出来的。镜像的第一个分支在设备 /dev/sda1
的第 0 到 499 扩展,镜像的第二个分支位于设备 /dev/sdb1
的第 0 到 499 扩展,且镜像日志从 /dev/sdc1
的扩展 0 开始。这些是 1MB 的扩展。如果任何指定的扩展已经被分配了,那么它们就会被忽略。
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0
注意
在 RHEL 5.3 发行本中,在群集中支持镜像的逻辑卷。
4.4.1.4. 修改镜像卷配置
您可以使用
lvconvert
命令将一个逻辑卷从镜像卷转换成线性卷,或者从线性卷转换成镜像卷。您还可以使用这个命令来重新配置现有逻辑卷的其它镜像参数,比如 corelog
。
当您将一个逻辑卷转换成镜像卷时,通常您需要为现有卷创建镜像分支。就是说您的卷组必须包含用作镜像分支和镜像日志的设备和空间。
If you lose a leg of a mirror, LVM converts the volume to a linear volume so that you still have access to the volume, without the mirror redundancy. After you replace the leg, you can use the
lvconvert
command to restore the mirror. This procedure is provided in 第 6.3 节 “修复 LVM 镜像错误”.
下面的命令可将线性卷
vg00/lvol1
转换成镜像卷。
lvconvert -m1 vg00/lvol1
下面的命令可将镜像卷
vg00/lvol1
转换成线性卷,并删除镜像分支。
lvconvert -m0 vg00/lvol1