Logical Volume Manager

LVM是在物理设备的基础上,建立逻辑存储设备,逻辑存储设备可以随意扩充,或缩减

功能

    1、 根据需求动态扩充,或缩减空间

    2、 实现快照备份

基本结构及概念


·wKiom1XgWKmwvh3bAAICABoEFDE710.jpg


PV         pyicalvolume 物理卷,由物理设备盘区,raid或磁盘组成,

VG         volumegroup 卷组,由整数个PV组成,一个PV包含若干个 PE可添加或缩减PV弹性变化

LV:          logical volume 逻辑卷,建立在vg上,最大不能超过vg的大小

PE:          最小的物理存储单位,只有加载到VG上才确定其大小 类似与物理磁盘中的block

LE         在物理卷上叫PE,在逻辑卷上叫LE,最小的存储单位,

  PV    管理工具

         pvs pv summary 概要显示pv信息

         pvdisplay:详细显示pv使用情况

         pvcreate 创建pv

                   -f 强制创建pv,不管其是否被划分到其他的vg中使用

                   -v verbose 显示创建过程

                   -u uuid  基于uuid创建物理卷

      pvremove 移除pv,将数据擦去,移除之

      pvmove 将数据从该pv上转移到其他的pv上,以使该pv可以进行其他的移除类操作

  pvremove wipes the label on a device so that LVM will no longer recognise it as

       a physical volume.

      pvscan 探测,扫描该系统上的所有的LVM块设备

      pvchage:修改物理卷属性

VG管理工具

         vgs              概要显示vg信息

         vgdisplay        显示vg的详细信息

         vgcreate         创建vg

          -h|--help      获取帮助      

          -s   #[bBsSkKmMgGtTpPeE]  设定PE的大小,一旦被创建很难被改变 

        使用格式如下:

          [-t|--test] [-v|--verbose] [--version][PHYSICAL DEVICE OPTIONS]                              VolumeGroupName    pyicalDevicePath [PhysicalDevicePath...]


           vgextend  改变vg大小,只能是pv的整数大小。格式如下

         -f|--force VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

          强制改变其大小,一般不要这样,可能会毁坏数据

         vgremove    移除VG,当你的VG不再使用了,可以移除之,如果VG中有PV请先移除之,

                     如果有逻辑卷存在,会提示你先移除PV,可以使用-f直接覆盖

         vgreduce    允许你从vg 移除一个或更多未使用的pv

         [-v|--verbose]  VolumeGroupName [PhysicalVolumePath...]


LV逻辑卷,逻辑卷,逻辑卷只能在所在的vg中动态扩充,或缩减。

    lvcreate 逻辑卷的创建,使用现有的逻辑卷组空间创建,

-l|--extents  LogicalExtentsNumber[%{VG|PVS|FREE

-L|--size     LogicalVolumeSize[bBsSkKmMgGtTpPeE

       -n|--name  LogicalVolume{Name|Path} 

       -s|--snapshot   [VolumeGroup{Name|Path}  ExternalOriginLogicalVolumeName]]

       -s  snapshot 制作快照卷 [vg{name|path}]  原lv(要做快照的对象) VG{name|path}

       -n 为LV命名

    lvdisplay  详细显示逻辑卷信息

    lvs        概要显示逻辑卷信息

    lvextend   扩展逻辑卷,利用现有vg空间扩充lv大小

-l|--extents   LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}]

-L|--size  [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]


使用格式:

       lvextend options LogicalVolumePath [PhysicalVolumePath[:PE[-PE]]...]


lvconvert将逻辑卷转化为快照,

lvreduce 删除逻辑卷,删除逻辑卷时,须确保数据已备份或保存

snapshot  保存的只是变化了的数据,未变化的数据还在原来的存储空间的

 

    快照卷 是对磁盘某一个时刻的数据进行保存,它保存的只是变化了的数据

对磁盘保存数据过程的时间很短,只在一瞬间,因此,基本上是完成数据,在保存过程中变化的数据不能保存,其和快照后的数据可以通过增量备份实现其保存

快照卷也可以作为访问数据的一个入口,因此只能存在与和要保存的卷的组中,不能跨组

但只能访问快照时刻的数据、

快照后的数据不会保存到快照卷中,

其实现过程中不能格式化数据

    具体实现命令

  lvcreate–s –L #{kmgtpe} –n SNAPSHOT_NAME  OriginalLogicalVolumeName

 

 

 

 

二、逻辑卷与快照卷功能的实现

 

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

   1、 要想创建pv必须要有可创建的物理设备,因此先创建两个5G的硬盘sdb1,sdb2,且将磁盘格式转化成8e lvm格式,以供创建lvm使用省略

   2、  创建物理卷

   

#pvcreate /dev/sdb{1,2}
      Physical volume"/dev/sdb1"successfully created
      Physicalvolume "/dev/sdb2"successfully created

3、创建大小10G PE 16MB 的VG testvg

 

  #vgcreate -s 16m testvg /dev/sdb{1,2}
      Volume group "testvg"successfullycreated

4、创建大小为5G的testlv

   

  #lvcreate-n testlv -L 5G testvg
            Logicalvolume "testlv"created
  # lvs
           LV   VG  Attr  LSize Pool Origin Data%  Meta% Move Log Cpy%Sync Convert
           testlvtestvg    -wi-a-----  5.00g

5、对/dev/testvg/testlv进行格式化

 

   mkfs.ext4/dev/testvg/testlv

 挂载到已创建的/users 目录下如此这样就可以使用testlv空间了了 

 

2:新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复        制/etc/pam.d目录至自己的家目录;

   [archlinux@localhost~]$ cp -r /etc/pam.d//users/archlinux/

 

3:扩展testlv至7G,要求archlinux用户的文件不能丢失;

   

   #lvextend -L 7G /dev/testvg/testlv
   #resize2fs -p/dev/testvg/testlv

   #扩展逻辑边界

 

4:收缩testlv至3G,要求archlinux用户的文件不能丢失;

         缩减时,应先缩减其逻辑边界,在缩减其物理边界,而且不能在线缩减,需先卸载,还要强制进行磁盘检测,而且要确保缩减后的空间能承载现有数据,否则会出错!

   1) 卸载,略

   2) 缩减其逻辑边界

     

 #e2fsck -f/dev/testvg/testlv
 #resize2fs -p /dev/testvg/testlv 3G

   3) 缩减其物理边界

   

 #lvreduce-L 3G/dev/testvg/testlv

   4)重新挂载并使用

 

 5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;

创建快照卷

   # lvcreate -L 3G -s /dev/testvg/testlv -n shotlv
   # lvcreate-L 3G -s/dev/testvg/testlv -n shlv

挂载到/media目录下

  

 

     # mount /dev/testvg/shlv /media    
     # ls /media    archlinux  lost+found

 

修改原数据

 # cd/users/
 # mkdir tom
 # ls /users
  archlinux  lost+found  tom


快照卷数据并未改变

 

# ls /media
  archlinux  lost+found


删除原数据

 # rm -rf /users/*


将快照卷原样复制到原目录下,将原目录下的数据恢复到快照时刻的样子,实现了数据的基础备份

# cp -af /media/* /users/
# ls /users
 archlinux  lost+found


 

 

6、创建一个由两个物理卷组成的大小为5G的卷组设备,要求其PE大小为16M;而后在此卷组中创建一个大小为2G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录;

# pvcreate /dev/sda{5,6}
  Physical volume "/dev/sda5"successfully created
  Physical volume "/dev/sda6"successfully created
# vgcreate -s 16M myvg /dev/sda{5,6}
  Volume group "myvg" successfullycreated
# vgs
  VG    #PV #LV #SN Attr   VSize  VFree
  myvg    2   0   0 wz--n- 10.00g 10.00g
# lvcreate -L 2G -n LV1 /dev/myvg
  Logical volume "LV1" created
# mkfs.ext4 /dev/myvg/LV1
# vim /etc/fstab
/dev/myvg/LV1          /users                  ext4    defaults        0 0
~                                                                                               
"/etc/fstab" 18L, 963C        
# mount -a


    通过以上实例,大概可体现LVM 的基本使用格式及功用