linux系统

LVM逻辑卷管理学习笔记02(上)-物理卷和卷组

上篇文章只是简单介绍了一下LVM,知道lvm的基本构成是 整块裸硬盘或某个分区->物理卷(PV)->卷组(VG)->逻辑卷(LV),在上层就是把逻辑卷mount到目录下应用了

接下来就进行实操学习,并介绍下每层上的相应命令。
学习环境:vmware5.0 centos4.4 100M硬盘3块

1.物理卷的创建

如果要使用整块硬盘在作为物理卷的话,这块硬盘必须没有分区表信息,需要清除硬盘分区表的信息可以使用下面的命令

dd if=/dev/zero of=/dev/sdx bs=512 count=1

使用pvcreate命了来创建一个块设备做为物理卷。下面的命令把/dev/sdb /dev/sdc初始化用作物理卷

pvcreate /dev/sdb /dev/sdc

下面的命令是把一个分区初始化成一个pv

pvcreate /dev/sdb1
使用lvmdiskscan命令用了查看系统中哪些块设备可以用于作为物理卷
# lvmdiskscan
/dev/ramdisk [ 16.00 MB]
/dev/ram [ 16.00 MB]
/dev/sda1 [ 101.94 MB]
/dev/ram2 [ 16.00 MB]
/dev/sda2 [ 509.88 MB]
/dev/ram3 [ 16.00 MB]
/dev/root [ 5.40 GB]
/dev/ram4 [ 16.00 MB]
/dev/ram5 [ 16.00 MB]
/dev/ram6 [ 16.00 MB]
/dev/ram7 [ 16.00 MB]
/dev/ram8 [ 16.00 MB]
/dev/ram9 [ 16.00 MB]
/dev/ram10 [ 16.00 MB]
/dev/ram11 [ 16.00 MB]
/dev/ram12 [ 16.00 MB]
/dev/ram13 [ 16.00 MB]
/dev/ram14 [ 16.00 MB]
/dev/ram15 [ 16.00 MB]
/dev/sdb [ 102.40 MB] LVM physical volume
/dev/sdc [ 102.40 MB] LVM physical volume
3 disks
16 partitions
2 LVM physical volume whole disks
0 LVM physical volumes
有三个命令用来显示LVM物理卷的属性:pvs,pvdisplay,pvscan
pvs命了用格式化的方式显示了物理卷的信息,每行显示一个物理卷信息。pvs提供了非常详细格式控制参数,以后单独再来说这个命令。
pvdisplay命了非常详细的显示了每个物理卷的信息(如size,extents,volumegroup等等),下面就是一个pvdisplay显示的内容
# pvdisplay
— Physical volume —
PV Name /dev/sdc
VG Name vg1
PV Size 100.00 MB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 25
Free PE 25
Allocated PE 0
PV UUID PB8TiB-f86q-NZZn-S22h-D35p-o8Zq-qBYeS1
pvscan用来扫描系统中都有哪些pv可用。如下所示
# pvscan
PV /dev/sdc VG vg1 lvm2 [100.00 MB / 100.00 MB free]
PV /dev/sdb VG vg1 lvm2 [100.00 MB / 100.00 MB free]
Total: 2 [200.00 MB] / in use: 2 [200.00 MB] / in no VG: 0 [0 ]
可以在lvm.conf文件中配置相应的过滤规则,让pvscan不扫描定义好规则的pv
当硬盘出现故障或者想删除一个物理卷的时候,可以使用pvchange命令把需要的pv设置成不可分配的状态,命令如下
pvchange -x n /dev/sdc
这样在通过pvdisplay看到这个pv的allocatable的状态就是NO了,如下所示
pvdisplay
— Physical volume —
PV Name /dev/sdc
VG Name vg1
PV Size 100.00 MB / not usable 0
Allocatable NO
PE Size (KByte) 4096
Total PE 25
Free PE 25
Allocated PE 0
PV UUID PB8TiB-f86q-NZZn-S22h-D35p-o8Zq-qBYeS1
使用-x y参数可以恢复pv的可分配状态。
使用pvremove命令来移除一个pv,使用如下
# pvremove /dev/sdc
Labels on physical volume “/dev/sdc” successfully wiped

2,卷组的管理

可以使用vgcreate命令来创建卷组,比如我们现在要创建一个卷组名为vg1,其中包含/dev/sdb /dev/sdc两个pv,如下

# vgcreate vg1 /dev/sdb /dev/sdc
Volume group “vg1” successfully created
当一个卷组创建好之后,它的默认最小扩展空间是4MB,这个扩展空间就是逻辑卷可以增加或减少的最小量。大量的扩展空间并不会对逻辑卷的i/o性能带来影响。
当然,在使用vgcreate创建卷组的时候可以通过-s参数调整一个你认为合适的数值。同样可以使用-p和-l参数来限制物理卷和逻辑卷的数量。
如果已经创建好了一个卷组,现在添加了新的物理卷,可以通过vgextend命令来把这个新的物理卷加入到已经创建好的vg中,如下
#vgextend vg1 /dev/sdd
Volume group “vg1” successfully extended
在物理卷的时候有显示物理卷信息的命令,同样也有现实卷组信息的命令,vgs和vgdisplay。
vgscan这个命令用来显示系统中存在的卷组,其实这个命令主要的作用是用来查找卷组和更行LVM的缓存文件。
vgs和pvs命令一样,通过不同的参数,可以输出定制化的内容
vgdisplay命令通过固定格式显示卷组的详细信息(包括size,extents,物理卷数量等等)。下面是我测试环境的输出
# vgdisplay
— Volume group —
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 204.00 MB
PE Size 512.00 KB
Total PE 408
Alloc PE / Size 0 / 0
Free PE / Size 408 / 204.00 MB
VG UUID utUPzW-P9up-vbSy-vzt4-Frb6-24Dd-5yhZ2X

vgscan命令在系统中扫描所有被支持的磁盘设备找到LVM的物理卷和卷组。这个过程会创建LVM缓存在/etc/lvm/.cache文件,这个文件主要用来维护当前的LVM设备的清单。

LVM会在以下情况自动运行vgscan命令,系统启动的时候,LVM进行操作的时候(比如执行了vgcreate命令或者当LVM检测到出现了一个不一致的情况时)。当系统的硬件配置被更改的时候,就必须人为手动的执行vgscan命令了,不然就会导致系统不认新的设备,以至于启动的时候不能被加载。

如果要把一个不用的物理卷从一个卷组中移除掉,可以使用vgreduce命令。vgreduce命令会在移除一个或多个物理卷时收缩卷组的容量。在把一个物理卷从一个卷组中移除之前,可以通过pvdisplay这个命令查看这个物理卷有没有被逻辑卷使用,如果物理卷仍被使用就需要使用pvmove命令把数据迁移到其他的物理卷上,然后在使用vgreduce命令将物理卷移除。下面的命令将物理卷/dev/hda1从卷组my_volume_group中移除

# vgreduce my_volume_group
使用vgremove命令可以删除一个不包含逻辑卷的卷组
# vgremove vg1
Volume group “vg1” successfully removed
使用vgsplit命令可以从卷组中分离出一部分物理卷创建一个新的卷组。
有了分离命令,自然就会有合并的命令。那就是vgmerge命令,可以使用这个命令把一个未活动的源卷和一个活动的活着未活动的目标卷合并,合并是有前提条件的,1、两个卷的PE size相同,2、两个卷组中物理和逻辑卷摘要要和目标卷组的限制匹配。
下面看实际的例子
分离卷组-把/dev/sdc从逻辑卷vg1中分离出并创建vgnew组
# vgsplit vg1 vgnew /dev/sdc
Volume group “vgnew” successfully split from “vg1”

把vgnew组合并到vg1组中
# vgmerge vg1 vgnew
Volume group “vgnew” successfully merged into “vg1”

卷组的metadata数据的备份和打包总是会在卷组或逻辑卷配置文件变更的时候自动的创建,当然除非你在lvm.conf文件中禁用了这项功能。默认情况下metadata数据的备份会被存储在/etc/lvm/backup文件中,而metadata打包文件会存储在/etc/lvm/archives文件中。可以认为的执行vgcfgbackup命令来备份metadata到/etc/lvm/backup文件中。
使用vgrename命令可以对于一个存在的卷组改名,比如下面的明白把vg02卷组改名成my_volume_group
#vgrename vg02 my_volume_group
能够移动整个LVM卷组到另外一个系统中,在做这个操作的时候建议使用vgexport和vgimport命令。vgexport命令使一个未激活的卷组对系统不可访问,从而允许你分离卷组中的物理卷。vgimport命令可以使系统再次访问这个卷组。把一个卷组从一个系统迁移到另一个系统可以执行以下几个步骤:
a.确认卷组中的活动卷上的文件没有被用户访问,然后unmount这个逻辑卷。
b.使用vgchange命令加-a n参数讲卷组标记为未激活,这样就阻止了在这个卷组中的任何活动。
c.使用vgexport导出卷组,这样系统就不会对这个卷组访问了,从而可以把这个卷组移走。当导出了卷组之后,再用pvscan命令查询时,物理卷都显示成为在一个导出卷组中,如下
# pvscan
PV /dev/sdb is in exported VG my_volume_group [100.00 MB / 100.00 MB free]
PV /dev/sdc is in exported VG my_volume_group [100.00 MB / 100.00 MB free]
Total: 2 [200.00 MB] / in use: 2 [200.00 MB] / in no VG: 0 [0 ]
这时就可以关机拔硬盘然后插到别的系统上了。
d.把硬盘加到新的系统中后就可以执行vgimport命令来导入卷组了,这样就能使卷组可以被系统访问到了
e.然后使用vgchange命令加上-a y参数激活卷组
f.然后mount到文件系统上就可以使用了。

要创建卷组文件夹和逻辑卷特殊文件可以使用vgmknodes命令。这个命令用来在/dev文件夹中检查被逻辑卷需要的LVM2的特殊文件。这个命令还可以创建任何丢失的特殊文件,并移除不再使用的。

以上内容翻译自redhat LVM Administrator’s Guide文档中chapter4,如有不对之处还望指出,谢谢。

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.