Total Pageviews

Monday 16 July 2012

LVM 实践总结

LVM是运行在Linux操作系统上的一种逻辑卷管理器,可以用来管理大量磁盘设备,提供灵活的分区、备份方案。
通过阅读文档和实践,我总结LVM有以下几个特点比较有实际意义:
1,可以实现基本的软件方式的RAID0。
2,可以实现文件系统的snapshot。 2.6版本的Linux内核带有LVM 2版本。
以下测试都基于 Red Hat Enterprise Linux Server release 5.2 (Tikanga) 操作系统。
要理解LVM,首先要理解三个基本术语:
1,physical volume (PV) 顾名思义,可以认为就是物理磁盘。
2,volume group (VG) 是为了方便管理,将一堆PV集合在一起。
3,logical volume (LV) VG上面的逻辑卷,相当于磁盘分区,文件系统就建立在LV上面。
下面这个图简单明了的阐述了三者的关系: 
hda1   hdc1      (PV:s on partitions or whole disks)
 \   /                                                                          
 \ / 
 diskvg        (VG)                                                            
 /  |  \                                                                      
 /   |   \                                                                  
usrlv rootlv varlv (LV:s)    
|      |     |                                                              
ext2  reiserfs  xfs (filesystems) 

LVM提供的管理工具是lvm(8),可以建立很多软连接到lvm命令,实现很多快捷操作。
比较常用的命令有pvcreate/vgcreate/lvcreate等。 具体各个命令的使用方法可以参见man page。
下面是一个创建lv并使用snapshot进行备份的实践过程:
我们使用 物理设备 /dev/cciss/c0d0p8进行试验,首先创建pv:
pvcreate /dev/cciss/c0d0p8
创建vg,名称就叫做mysql:
vgcreate mysql /dev/cciss/c0d0p8
将vg设置为active状态:
vgchange -a y mysql
创建lv,需要预留一些空间给snapshot使用,pv大概88G,lv分配80G,lv的名称叫做mysql_data:
lvcreate -L 80G -n mysql_data mysql
查看一下刚刚创建的lv:
lvdisplay
创建文件系统:
mkfs.ext3 /dev/mysql/mysql_data
挂载文件系统:
mount -onoatime  /dev/mysql/mysql_data  /apps
创建snapshot,预留100M的copy on write的空间,名称叫做mysql_data_20090922
lvcreate -L 100M -s -n mysql_data_20090922 mysql/mysql_data
将snapshot加载:
mkdir /mysql_data_20090922
mount /dev/mysql/mysql_data_20090922 /mysql_data_20090922/
lvm2的snapshot是可读写的,所以可以直接在snapshot上将mysql数据库启动。
从实践角度来看,LVM的功能没有ZFS强大,使用也稍显复杂。 但LVM已经被证明是稳定的,原理应该和ZFS大概一致。 而且默认包含在很多Linux发行版中,所以还是有一定的实际价值的。
更多的LVM相关资料可以参见下面的链接:
1,LVM文档:
http://www.tldp.org/HOWTO/LVM-HOWTO/intro.html
2,必看的LVM操作实践:
http://www.tldp.org/HOWTO/LVM-HOWTO/recipes.html
3,第三方的使用lvm对MySQL数据库进行备份的工具:mylvmbackup:
http://www.lenzg.net/mylvmbackup/
此工具依赖很多perl的包,我没有耐心安装,只看了看其原理,大家有兴趣可以实践一下。 这个网站上也有很多LVM相关介绍的链接.