LVM逻辑卷管理

一、LVM简介

二、LVM基本术语

三、LVM相关PV,VG,LV相关命令的使用

四、安装LVM

五、创建和管理LVM

    1、创建PV

    2、创建VG

    3、创建LV

    4 、LV的格式化及挂载

六、快照卷snapshot的使用介绍

==================================================================================


一、LVM简介

 

        LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

==================================================================================


二、LVM基本术语

 

    LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:

 

物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等

物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统。

物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

逻辑块(Logical Extent,LE)

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

======================================================================


三、LVM相关PV,VG,LV相关命令的使用

pv管理工具:

pvs:简要显示pv信息

pvdisplay:显示pv的详细信息

pvcreate /dev/device...: 创建pv

           pvmove :删除pv


vg管理工具:

vgs:简要显示vg信息 

vgdisplay:显示vg的详细信息

vgcreate vgName pv :创建vg

          -s #[kKmMgGtTpPeE]:指定pe大小 

vgextend :vg扩展  

vgreduce :vg缩减,先做pvmove

vgremove :删除vg


lv管理工具:

lvs:简要显示lv信息

lvdisplay:显示lv的详细信息

lvcreate -L #[mMgGtT] -n NAME vgName:创建lv,其中-L指定逻辑卷大小,-n指定逻辑卷名

lvremove /dev/vgName/lvName:删除逻辑卷 

              lvextend    扩展LV

              -L    [+]n    指明要扩展或扩展到的LV容量

          lvreduce   缩减LV

              -L    [-]n    指明要缩减或缩减到的LV容量

    创建LVM快照的方法:

              lvcreate -L 大小 -p r -s -n 快照卷名字 原卷名字

                -p  权限 。 一般是只读  r

                -s :snapshot --意思是创建快照卷   

=============================================================================== 


四、安装LVM并创建磁盘分区

测试环境:CentOS6.5 x64 ;2块磁盘(20G)/dev/sdb,/dev/sdc

[root@localhost ~]# rpm -qa | grep lvm  //检查系统是否安装lvm工具   
[root@localhost ~]# yum list | grep lvm   //查看系统中的lvm软件包
lvm2.x86_64                              2.02.118-3.el6_7.2             updates
[root@localhost ~]# yum install -y lvm2  //安装lvm2
Installed:
  lvm2.x86_64 0:2.02.118-3.el6_7.2                                                                                  
.......
Complete!                            //安装成功

 准备2个磁盘,并给其分配10G的磁盘分区

Linux磁盘管理之LVM详解_第1张图片
为/dev/sdb划分10G磁盘分区

[root@localhost ~]# fdisk /dev/sdb   //给/dev/sdb分区
Command (m for help): n       //新建分区 
Command action
   e   extended
   p   primary partition (1-4)
p                           //主分区
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G  

Command (m for help): t                   //修改分区类型
Selected partition 1                 //选择分区编号
Hex code (type L to list codes): 8e      
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p       //显示分区信息
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x669de8cf
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM

Command (m for help): w      //保存退出
[root@localhost ~]# partx -a /dev/sdb     //同步到内核
BLKPG: Device or resource busy
error adding partition 1

为/dev/sdc划分10G磁盘分区

[root@localhost ~]# fdisk /dev/sdc       
Command (m for help): n              //新建分区
Command action
   e   extended
   p   primary partition (1-4)
p                                   //主分区
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G 
  
Command (m for help): t            //修改分区类型
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p            //显示分区信息
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x585eb85b
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1306    10490413+  8e  Linux LVM

Command (m for help): w                 //保存退出
[root@localhost ~]# partx -a /dev/sdc      //通知内核读取分区信息
BLKPG: Device or resource busy
error adding partition 1

===================================================================================

五、创建和管理LVM

示例:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

   

 1、创建PV

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1          //创建pv
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdc1" successfully created
[root@localhost ~]# pvdisplay                     //显示当前系统的pv信息 
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               W2n9yi-R45E-fO7o-iWlP-3uIo-lk4h-IdwYEj
   
  "/dev/sdc1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               M4qjVw-9Mfx-unh9-z6r9-riXd-voiX-Z7acZe


    2、创建VG

[root@localhost ~]# vgcreate -s 16M testvg /dev/sdb1 /dev/sdc1  //创建vg并指定pe大小
  Volume group "testvg" successfully created
[root@localhost ~]# vgdisplay            //显示vg的详细信息

 Linux磁盘管理之LVM详解_第2张图片


   3、创建LV

[root@localhost ~]# lvcreate -L 5G -n testlv testvg  //创建一个5G的lv
  Logical volume "testlv" created.
[root@localhost ~]# lvdisplay       //显示lv的详细信息

Linux磁盘管理之LVM详解_第3张图片


    4、LV的格式化及挂载

[root@localhost ~]# mke2fs -t ext4 /dev/testvg/testlv //将lv格式化,文件系统为ext4
[root@localhost ~]# mkdir /users
[root@localhost ~]# mount /dev/testvg/testlv /users  //挂载lv到/users目录
[root@localhost ~]# ls /users
lost+found

Linux磁盘管理之LVM详解_第4张图片


六、快照卷snapshot的使用介绍

         快照(snapshot)是LVM所提供的一个非常有用的特性。它的原理是复制原始卷的元数据(metadata)来创建一个逻辑卷,并没有复制物理卷上的任何数据, 因此它的创建过程是实时瞬间完成的。快照是特殊类型的逻辑卷,它含有创建时刻所指定的原始逻辑卷的完整数据,您可以操作快照而无需担心数据的变更令备份失效。

     LVM 快照利用一种称为“写时复制(COW,Copy-On-Write)的技术来跟踪和维持其数据的一致性。它的原理比较简单,就是跟踪原始卷上块的改变, 在这些数据被改变之前将其复制到快照自己的预留空间里。 当对快照进行读取的时候,被修改的数据从快照的预留空间中读取,未修改的数据则重定向到原始卷上去读取,因此在快照的文件系统与设备之间多了一层COW设备。

# lsmod | grep dm   #使用snapshot需要内核模块dm-snapshot
# modprobe dm-snapshot    #如有需要,必须先加载此模块

# lvs;vgs   # 先查看一下目前LV和VG的大小   

Linux磁盘管理之LVM详解_第5张图片

理论上,您所建立的快照卷的大小应该是原始卷的1.1倍大小,但鉴于创建快照的目的多是为临时备份数据,因此实际使用时可视您的备份速度和数据变更的频繁程度来决定快照卷的大小。例如,您预计完成一个完整备份大概需要1个小时,而在这个时间之内数据变更的大小不会超过100M,那么您就可以安全地创建100M大小的快照卷。


开始建立逻辑卷testvg/testlv的快照(注意这里取1.1倍大小空间):

[root@localhost users]# lvcreate -L 5.5G -p r -s -n testlvs testvg/testlv 
  Reducing COW size 5.50 GiB down to maximum usable size 5.11 GiB.
  Logical volume "testlvs" created.

Linux磁盘管理之LVM详解_第6张图片

注意:这时候快照卷看到的文件是快照原卷那一刻的文件,原卷里的文件做任何变化,快照卷中的文件都不会改变!!可以将快照卷的文件备份到其他位置!

卸载快照卷

[root@localhost users]# umount /dev/testvg/testlvs  //卸载快照卷

删除快照卷

[root@localhost users]# lvremove /dev/testvg/testlvs 
 Do you really want to remove active logical volume testlvs? [y/n]: y
 Logical volume "testlvs" successfully removed