分类: LINUX
2010-06-17 11:41:20
LVM是Linux操作系统对磁盘分区进行管理的一种机制。其是建立在磁盘和分区之上的一个逻辑层,以提高磁盘分区管理的灵活性。在LVM中每个磁盘分区就是一个物理卷(physical volume,PV),若干个物理卷可以组成为一个卷组(volume group,VG),形成一个存储池。系统管理员可以在卷组上创建逻辑卷(logical volumes,LV),并在逻辑卷组上创建文件系统。PV、VG和LV的关系如图所示。
二、物理卷管理
1、添加物理卷
使用pvcreate命令可以创建物理卷,可以在整个磁盘上创建物理卷,也可以在一个磁盘分区上创建物理卷。例如如果要在第二块SCSI磁盘上创建物理卷,可以使用命令:pvcreate /dev/sdb
2、查看物理卷
共有两个物理卷:/dev/hdd1和/dev/hdc1,大小为1.36TB,物理块大小为32768KB,总的物理块数为44712,空闲的物理块数为0,已分配的物理块数为44712。
3.删除物理卷
如果物理卷不再需要,可以使用pvremove命令将其删除,如下所示。
# pvremove /dev/hdd1
Labels on physical volume “/dev/hdd1″ successfully wiped
物理卷被删除后,其所在的磁盘分区并不会被删除。需要被删除的物理卷必须是已经不属于任何卷组,否则将会失败,如下所示。
[root@demoserver dev]# pvremove /dev/hdd1
Can’t pvremove physical volume “/dev/hdd1″ of volume group “vg_data” without-ff
三、卷组管理
1.添加卷组
物理卷创建完成后就可以开始创建卷组。卷组是由一个或多个物理卷所组成的存储池。例如要创建一个名为vg_data的卷组,可以使用下面的命令。
# vgcreate vg_data /dev/hda13 /dev/hda14
Volume group “vg_data” successfully created
2.扩展卷组的容量
当卷组中的空间不足的时候,可以使用vgextend命令往卷组中添加新的物理卷,方便地扩展卷组的容量,如下所示。
# vgextend vg_data /dev/hda15
Volume group “vg_data” successfully extended
3.查看卷组
使用vgdisplay命令可以查看卷组的信息。例如要查看上例中创建的卷组vg_data,执行的命令如下所示。
卷组VolGroup00格式为lvm2,访问许可为可读写,卷组大小为5.46TB,物理块大小为32MB,总的物理块数为178845,已分配的物理块数为150834,空闲的物理块数为28011,大小为875.34GB。
4.从卷组中删除物理卷
通过vgreduce命令可以把VG中未被使用的PV从VG中删除,例如要从卷组vg_data中删除物理卷hda15,如下所示。
# vgreduce vg_data /dev/hdd1
Removed “/dev/hdd1″ from volume group “vg_data”
如果要从卷组中删除所有未被使用的物理卷,可以使用如下命令。
# vgreduce –a
5.删除卷组
当卷组不再需要的时候,可以使用vgremove命令删除。如果卷组中已经创建了LV,则系统会提示用户确认是否要进行删除,命令及运行结果如下所示。
# vgremove vg_data
Do you really want to remove volume group “vg_data” containing 2 logical volumes
? [y/n]: y
Do you really want to remove active logical volume “lv_data1″? [y/n]: y
//确定删除逻辑卷lv_data1
Logical volume “lv_data1″ successfully removed
Do you really want to remove active logical volume “lv_data2″? [y/n]: y
//确定删除逻辑卷lv_data2
Logical volume “lv_data2″ successfully removed
Volume group “vg_data” successfully removed
卷组被删除后,卷组中的所有物理卷将不属于任何卷组,可以对这些物理卷进行删除,命令如下所示。
# pvdisplay /dev/hdd1
“/dev/hda14″ is a new physical volume of “1.86 GB”
— NEW Physical volume —
PV Name /dev/hda14
VG Name //VG Name一列为空,表示该PV不属于任何的VG
PV Size 1.86 GB //PV大小
Allocatable NO //是否可分配
PE Size (KByte) 0 //PE大小
Total PE 0 //总PE数
Free PE 0 //空闲的PE
Allocated PE 0 //分配的PE
PV UUID VzjEpx-or1h-v3gN-zOCm-FnjC-eDOz-tp5Yzg
可以看到,物理卷hda14的VG Name一列为空,表示该物理卷不属于任何的卷组,用户可以删除该物理卷,或分配给其他卷组使用。
四、逻辑卷管理
逻辑卷类似于非LVM系统中的磁盘分区,在逻辑卷上可以建立文件系统,文件系统建立完成后就可以挂载到操作系统中进行使用。逻辑卷被划分为被称为LE(Logical Extents)的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
1.添加逻辑卷
当卷组创建后,可以使用lvcreate命令在卷组上创建逻辑卷。例如要在卷组vg_data上创建一个1000MB的逻辑卷lv_data1,其命令如下所示。
# lvcreate -L 1000m -n lv_data1 vg_data
Logical volume “lv_data1″ created
除了KB、MB和GB这些常规单位以外,lvcreate命令还可以使用PE数作为单位。由vgdisplay可以看到卷组vg_data的PE大小为4MB,如果要创建一个大小为1000MB的逻辑卷,则需要250个PE,命令如下所示。
# lvcreate -l 250 -n lv_data2 vg_data
Logical volume “lv_data2″ created
我们现在ppvod做LVM使用的命令是:
#lvcreate –i 4 –I 8192 –L 1600G –n lv_data2 vg_data
-i:采用条带模式的映射方式创建逻辑卷,该参数的值用于指定所创建的逻辑卷将映射在几个PV上。
-I:指定使用条带模式时所采用块的大小,单位为KB,其值必须是:2N(N≥2)。
-L:指定创建逻辑卷的大小,单位的可以用K、M、G、T表示KB、MB、GB及TB。
-n:用来指定所创建的逻辑卷名称,该名称可以根据需要随便定义。
在使用“-i”参数指定PV的个数时,一定要确认所指定的这些PV是没有完全被分配给任何逻辑卷的,否则将创建失败,其次若这些PV的大小不等,那么所创建的逻辑卷只能取最小值。
这样创建的LVM起到了软Raid的作用,可以使IO压力分散到各个硬盘之上,提高IO性能。
卷组和逻辑卷创建后,会在/dev目录下创建一个以VG名称命名的目录,在目录下会创建以LV名称命名的设备文件,如下所示。
#ll /dev/vg_data
total 0
lrwxrwxrwx 1 root root 28 Aug 24 22:22 lv_data1 -> /dev/mapper/vg_ data-lv_data1
lrwxrwxrwx 1 root root 28 Aug 24 22:21 lv_data2 -> /dev/mapper/vg_ data-lv_data2
2.更改逻辑卷的大小
使用lvresize命令可以更改已有逻辑卷的大小。一般情况下不建议减少逻辑卷的空间,因为这样可能会导致逻辑卷上的文件系统中的数据丢失,所以除非用户已经确定被减少空间中的数据不再需要或者已经把重要数据备份出来,否则不要减少逻辑卷的空间以免造成不可挽回的损失。如果要把逻辑卷lv_data1的大小增加为1500MB,可以使用下面的命令。
# lvresize -L 1500m /dev/vg_data/lv_data1
Extending logical volume lv_data1 to 1.46 GB
Logical volume lv_data1 successfully resized
3.查看逻辑卷的信息
使用lvdisplay命令可以查看指定逻辑卷的信息,例如要查看逻辑卷lv_data1的信息,命令和运行结果如下所示。
# lvdisplay /dev/vg_data/lv_data1
— Logical volume —
LV Name /dev/vg_data/lv_data1 //逻辑卷名称
VG Name vg_data //逻辑卷所属的卷组
LV UUID 3CrIH1-rZr6-UkNZ-1Z5n-gHw2-SM5T-by5fKg
LV Write Access read/write
LV Status available
# open 0
LV Size 1.46 GB //逻辑卷的大小
Current LE 375 //逻辑卷的逻辑块数
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:0
可以看到,逻辑卷/dev/vg_data/lv_data1所属的卷组为vg_data,访问许可为可读写,卷组状态为可用,逻辑卷大小为1.46GB,总的逻辑块数为375。
4.删除逻辑卷
使用lvremove命令可以删除指定的逻辑卷,删除前系统会提示用户确认。例如要删除逻辑卷lv_data2,其命令和运行结果如下所示。
# lvremove /dev/vg_data/lv_data2
Do you really want to remove active logical volume “lv_data2″? [y/n]: y
Logical volume “lv_data2″ successfully removed
删除后,逻辑卷上的所有数据均会被清除。